diff options
| author | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2018-08-27 13:24:49 -0300 |
|---|---|---|
| committer | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2018-08-29 10:35:37 -0300 |
| commit | 0b6a3e38032248d7d33c3ec84b643ba609d7f96f (patch) | |
| tree | 92619604cdd321ffcc5730b278f524e3eb5ce6f1 | |
| parent | 4de28f0913f11f1b4c29e4e0d4cc85a664c1c97b (diff) | |
| download | mullvadvpn-0b6a3e38032248d7d33c3ec84b643ba609d7f96f.tar.xz mullvadvpn-0b6a3e38032248d7d33c3ec84b643ba609d7f96f.zip | |
Move tunnel state machine to Talpid
| -rw-r--r-- | Cargo.lock | 1 | ||||
| -rw-r--r-- | mullvad-daemon/src/main.rs | 7 | ||||
| -rw-r--r-- | talpid-core/Cargo.toml | 2 | ||||
| -rw-r--r-- | talpid-core/src/lib.rs | 5 | ||||
| -rw-r--r-- | talpid-core/src/tunnel_state_machine/connected_state.rs (renamed from mullvad-daemon/src/tunnel_state_machine/connected_state.rs) | 4 | ||||
| -rw-r--r-- | talpid-core/src/tunnel_state_machine/connecting_state.rs (renamed from mullvad-daemon/src/tunnel_state_machine/connecting_state.rs) | 8 | ||||
| -rw-r--r-- | talpid-core/src/tunnel_state_machine/disconnected_state.rs (renamed from mullvad-daemon/src/tunnel_state_machine/disconnected_state.rs) | 3 | ||||
| -rw-r--r-- | talpid-core/src/tunnel_state_machine/disconnecting_state.rs (renamed from mullvad-daemon/src/tunnel_state_machine/disconnecting_state.rs) | 3 | ||||
| -rw-r--r-- | talpid-core/src/tunnel_state_machine/macros.rs (renamed from mullvad-daemon/src/tunnel_state_machine/macros.rs) | 0 | ||||
| -rw-r--r-- | talpid-core/src/tunnel_state_machine/mod.rs (renamed from mullvad-daemon/src/tunnel_state_machine/mod.rs) | 9 |
10 files changed, 24 insertions, 18 deletions
diff --git a/Cargo.lock b/Cargo.lock index bb3e67aa73..78db2ce95c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1502,6 +1502,7 @@ dependencies = [ "duct 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", "error-chain 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", "failure 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.23 (registry+https://github.com/rust-lang/crates.io-index)", "ipnetwork 0.13.0 (registry+https://github.com/rust-lang/crates.io-index)", "jsonrpc-core 8.0.1 (git+https://github.com/paritytech/jsonrpc?tag=v8.0.1)", "jsonrpc-macros 8.0.0 (git+https://github.com/paritytech/jsonrpc?tag=v8.0.1)", diff --git a/mullvad-daemon/src/main.rs b/mullvad-daemon/src/main.rs index 08f8c34146..848207fbb1 100644 --- a/mullvad-daemon/src/main.rs +++ b/mullvad-daemon/src/main.rs @@ -55,7 +55,6 @@ mod rpc_uniqueness_check; mod settings; mod shutdown; mod system_service; -mod tunnel_state_machine; mod version; use error_chain::ChainedError; @@ -65,7 +64,6 @@ use jsonrpc_core::futures::sync::oneshot::Sender as OneshotSender; use management_interface::{BoxFuture, ManagementCommand, ManagementInterfaceServer}; use mullvad_rpc::{AccountsProxy, AppVersionProxy, HttpHandle}; -use tunnel_state_machine::{TunnelCommand, TunnelParameters, TunnelStateTransition}; use mullvad_types::account::{AccountData, AccountToken}; use mullvad_types::location::GeoIpLocation; @@ -81,6 +79,9 @@ use std::time::Duration; use std::{mem, thread}; use talpid_core::mpsc::IntoSender; +use talpid_core::tunnel_state_machine::{ + self, TunnelCommand, TunnelParameters, TunnelStateTransition, +}; use talpid_types::net::TunnelOptions; @@ -696,7 +697,7 @@ impl Daemon { options: self.settings.get_tunnel_options().clone(), log_dir: self.log_dir.clone(), resource_dir: self.resource_dir.clone(), - account_token, + username: account_token, allow_lan: self.settings.get_allow_lan(), }) } diff --git a/talpid-core/Cargo.toml b/talpid-core/Cargo.toml index 0f38b657d9..52297f214d 100644 --- a/talpid-core/Cargo.toml +++ b/talpid-core/Cargo.toml @@ -9,6 +9,7 @@ license = "GPL-3.0" atty = "0.2" duct = "0.11" error-chain = "0.12" +futures = "0.1" jsonrpc-core = { git = "https://github.com/paritytech/jsonrpc", tag = "v8.0.1" } jsonrpc-macros = { git = "https://github.com/paritytech/jsonrpc", tag = "v8.0.1" } libc = "0.2.20" @@ -16,6 +17,7 @@ log = "0.4" openvpn-plugin = { version = "0.3", features = ["serde"] } os_pipe = "0.7" shell-escape = "0.1" +tokio-core = "0.1" uuid = { version = "0.6", features = ["v4"] } talpid-ipc = { path = "../talpid-ipc" } diff --git a/talpid-core/src/lib.rs b/talpid-core/src/lib.rs index b96764848f..55df5e135f 100644 --- a/talpid-core/src/lib.rs +++ b/talpid-core/src/lib.rs @@ -19,6 +19,7 @@ extern crate log; extern crate error_chain; #[cfg(target_os = "linux")] extern crate failure; +extern crate futures; #[cfg(unix)] extern crate ipnetwork; extern crate jsonrpc_core; @@ -29,6 +30,7 @@ extern crate jsonrpc_macros; extern crate lazy_static; extern crate libc; extern crate shell_escape; +extern crate tokio_core; extern crate uuid; #[cfg(target_os = "linux")] extern crate which; @@ -56,4 +58,7 @@ pub mod mpsc; /// Abstractions over operating system network security settings. pub mod security; +/// State machine to handle tunnel configuration. +pub mod tunnel_state_machine; + mod mktemp; diff --git a/mullvad-daemon/src/tunnel_state_machine/connected_state.rs b/talpid-core/src/tunnel_state_machine/connected_state.rs index 88b12e3ec8..1b119eb387 100644 --- a/mullvad-daemon/src/tunnel_state_machine/connected_state.rs +++ b/talpid-core/src/tunnel_state_machine/connected_state.rs @@ -1,8 +1,6 @@ use futures::sync::{mpsc, oneshot}; use futures::{Async, Future, Stream}; -use talpid_core::security::{NetworkSecurity, SecurityPolicy}; -use talpid_core::tunnel::{CloseHandle, TunnelEvent, TunnelMetadata}; use talpid_types::net::TunnelEndpoint; use super::{ @@ -10,6 +8,8 @@ use super::{ SharedTunnelStateValues, StateEntryResult, TunnelCommand, TunnelParameters, TunnelState, TunnelStateWrapper, }; +use security::{NetworkSecurity, SecurityPolicy}; +use tunnel::{CloseHandle, TunnelEvent, TunnelMetadata}; pub struct ConnectedStateBootstrap { pub metadata: TunnelMetadata, diff --git a/mullvad-daemon/src/tunnel_state_machine/connecting_state.rs b/talpid-core/src/tunnel_state_machine/connecting_state.rs index 9175fe3239..2588da0e77 100644 --- a/mullvad-daemon/src/tunnel_state_machine/connecting_state.rs +++ b/talpid-core/src/tunnel_state_machine/connecting_state.rs @@ -8,9 +8,6 @@ use futures::sink::Wait; use futures::sync::{mpsc, oneshot}; use futures::{Async, Future, Sink, Stream}; -use talpid_core::logging; -use talpid_core::security::{NetworkSecurity, SecurityPolicy}; -use talpid_core::tunnel::{CloseHandle, TunnelEvent, TunnelMetadata, TunnelMonitor}; use talpid_types::net::{TunnelEndpoint, TunnelEndpointData}; use super::{ @@ -18,6 +15,9 @@ use super::{ DisconnectingState, EventConsequence, Result, ResultExt, SharedTunnelStateValues, StateEntryResult, TunnelCommand, TunnelParameters, TunnelState, TunnelStateWrapper, }; +use logging; +use security::{NetworkSecurity, SecurityPolicy}; +use tunnel::{CloseHandle, TunnelEvent, TunnelMetadata, TunnelMonitor}; const MIN_TUNNEL_ALIVE_TIME: Duration = Duration::from_millis(1000); @@ -110,7 +110,7 @@ impl ConnectingState { parameters.endpoint, ¶meters.options, TUNNEL_INTERFACE_ALIAS.to_owned().map(OsString::from), - ¶meters.account_token, + ¶meters.username, log_file.as_ref().map(PathBuf::as_path), ¶meters.resource_dir, on_tunnel_event, diff --git a/mullvad-daemon/src/tunnel_state_machine/disconnected_state.rs b/talpid-core/src/tunnel_state_machine/disconnected_state.rs index a64f2ca543..694e280ec6 100644 --- a/mullvad-daemon/src/tunnel_state_machine/disconnected_state.rs +++ b/talpid-core/src/tunnel_state_machine/disconnected_state.rs @@ -2,12 +2,11 @@ use error_chain::ChainedError; use futures::sync::mpsc; use futures::Stream; -use talpid_core::security::NetworkSecurity; - use super::{ ConnectingState, Error, EventConsequence, SharedTunnelStateValues, StateEntryResult, TunnelCommand, TunnelState, TunnelStateWrapper, }; +use security::NetworkSecurity; /// No tunnel is running. pub struct DisconnectedState; diff --git a/mullvad-daemon/src/tunnel_state_machine/disconnecting_state.rs b/talpid-core/src/tunnel_state_machine/disconnecting_state.rs index 9785264da1..5b80ad0598 100644 --- a/mullvad-daemon/src/tunnel_state_machine/disconnecting_state.rs +++ b/talpid-core/src/tunnel_state_machine/disconnecting_state.rs @@ -2,12 +2,11 @@ use error_chain::ChainedError; use futures::sync::{mpsc, oneshot}; use futures::{Async, Future, Stream}; -use talpid_core::tunnel::CloseHandle; - use super::{ ConnectingState, DisconnectedState, EventConsequence, ResultExt, SharedTunnelStateValues, StateEntryResult, TunnelCommand, TunnelParameters, TunnelState, TunnelStateWrapper, }; +use tunnel::CloseHandle; /// This state is active from when we manually trigger a tunnel kill until the tunnel wait /// operation (TunnelExit) returned. diff --git a/mullvad-daemon/src/tunnel_state_machine/macros.rs b/talpid-core/src/tunnel_state_machine/macros.rs index 2241c8cb06..2241c8cb06 100644 --- a/mullvad-daemon/src/tunnel_state_machine/macros.rs +++ b/talpid-core/src/tunnel_state_machine/macros.rs diff --git a/mullvad-daemon/src/tunnel_state_machine/mod.rs b/talpid-core/src/tunnel_state_machine/mod.rs index 860ffe54ed..c3d592c952 100644 --- a/mullvad-daemon/src/tunnel_state_machine/mod.rs +++ b/talpid-core/src/tunnel_state_machine/mod.rs @@ -16,15 +16,14 @@ use futures::sync::mpsc; use futures::{Async, Future, Poll, Stream}; use tokio_core::reactor::Core; -use mullvad_types::account::AccountToken; -use talpid_core::mpsc::IntoSender; -use talpid_core::security::{NetworkSecurity, NetworkSecurityImpl}; use talpid_types::net::{TunnelEndpoint, TunnelOptions}; use self::connected_state::{ConnectedState, ConnectedStateBootstrap}; use self::connecting_state::ConnectingState; use self::disconnected_state::DisconnectedState; use self::disconnecting_state::{AfterDisconnect, DisconnectingState}; +use super::mpsc::IntoSender; +use super::security::{NetworkSecurity, NetworkSecurityImpl}; error_chain! { errors { @@ -121,8 +120,8 @@ pub struct TunnelParameters { pub log_dir: Option<PathBuf>, /// Resource directory path. pub resource_dir: PathBuf, - /// Account token to use for setting up the tunnel. - pub account_token: AccountToken, + /// Username to use for setting up the tunnel. + pub username: String, /// Should LAN access be allowed outside the tunnel. pub allow_lan: bool, } |
