-
-
Notifications
You must be signed in to change notification settings - Fork 15
Open
Labels
featureNew feature or requestNew feature or requestnmrsChanges to nmrsChanges to nmrsvpnChanges to VPN surfaceChanges to VPN surface
Description
part of #288.
changes
new file: core/ovpn_parser.rs
parse .ovpn config files into a structured OvpnFile type. the format is one openvpn CLI option per line with inline cert blocks delimited by xml-style tags (<ca>...</ca>).
key directives to handle:
remote <host> [port] [proto](can appear multiple times)port,proto tcp|udp,dev tun|tapauth-user-pass(implies password auth)ca,cert,key— file paths or inline blockstls-auth,tls-crypt,tls-crypt-v2cipher,data-ciphers,authredirect-gateway,routecompress,comp-lzo
output types:
pub struct OvpnFile {
pub remotes: Vec<OvpnRemote>,
pub protocol: Option<OvpnProtocol>,
pub port: Option<u16>,
pub auth_type: OpenVpnAuthType, // inferred
pub ca: Option<CertSource>,
pub cert: Option<CertSource>,
pub key: Option<CertSource>,
pub tls_auth: Option<TlsAuthConfig>,
pub tls_crypt: Option<CertSource>,
pub cipher: Option<String>,
pub data_ciphers: Option<String>,
pub auth_digest: Option<String>,
pub compress: Option<String>,
pub mtu: Option<u32>,
pub routes: Vec<OvpnRoute>,
pub redirect_gateway: bool,
pub extra_options: HashMap<String, String>,
}
pub enum CertSource {
Path(String),
Inline(String),
}tests
embed sample .ovpn content as &str constants. test cases:
- password auth ovpn
- tls-only with inline certs
- password+tls with file-path certs
- multiple
remotedirectives redirect-gateway- comments, blank lines, unknown directives (graceful)
- malformed input (proper errors)
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
featureNew feature or requestNew feature or requestnmrsChanges to nmrsChanges to nmrsvpnChanges to VPN surfaceChanges to VPN surface