/* * private void OnStop() * { * try * { * SendStopMessage(); * OnStatusChanged(Status.Stopped); * } * catch(Exception e) * { * OnStatusChanged(Status.Stopped, e.Message); * } * } */ private void OnStatusChanged(bool?ready, VPN.Status?status = null, string error = "") { lock (m_dataSync) { if (ready != null) { m_ready = ready.Value; } else { ready = m_ready; } if (status != null) { m_status = status.Value; } else { status = m_status; } m_lastError = error; } if (StatusChanged != null) { StatusChanged(ready.Value, status.Value, error); } }
private void UpdateNotification(VPN.Status status) { string text, server = ""; if (status != VPN.Status.CONNECTED && status != VPN.Status.PAUSED && status != VPN.Status.LOCKED) { return; } Dictionary <string, string> pData = settingsManager.SystemLastProfileInfo; if (pData.Count > 0 && pData.ContainsKey("server")) { server = pData["server"]; } text = String.Format(vpnService.Resources.GetString(Resource.String.notification_text), server); if (!NetworkStatusReceiver.GetNetworkDescription().Equals("")) { text += " " + String.Format(vpnService.Resources.GetString(Resource.String.notification_network), NetworkStatusReceiver.GetNetworkDescription()); } if (status == VPN.Status.PAUSED) { text += " (" + vpnService.Resources.GetString(Resource.String.vpn_status_paused) + ")"; } if (status == VPN.Status.LOCKED) { text += " (" + vpnService.Resources.GetString(Resource.String.vpn_status_locked) + ")"; } vpnService.UpdateNotification(text); }
private Message CreateStatusMessage(VPN.Status status, string lastError) { Message message = Message.Obtain(null, VPNService.MSG_STATUS, (int)status, 0); message.Data.PutString(MSG_STATUS_BUNDLE_LAST_ERROR, lastError); return(message); }
private void UpdateConnectionStatus(bool ready, VPN.Status status, string error) { if (ready) { txtConnectionStatus.Text = Resources.GetString(VPN.DescriptionResource(status)); } else { txtConnectionStatus.Text = Resources.GetString(Resource.String.conn_status_initialize); } btnConnectProfile.Enabled = ready && (status == VPN.Status.NotConnected); btnDisconnectProfile.Enabled = (status == VPN.Status.Connecting) || (status == VPN.Status.Connected); if (currentConnectionStatus != status) { currentConnectionStatus = status; switch (status) { case VPN.Status.Connected: { supportTools.InfoDialog(string.Format(Resources.GetString(Resource.String.connection_success), profileInfo["server"])); settingsManager.SystemLastProfileIsConnected = true; } break; case VPN.Status.NotConnected: { supportTools.InfoDialog(string.Format(Resources.GetString(Resource.String.connection_disconnected), profileInfo["server"])); settingsManager.SystemLastProfileIsConnected = false; } break; default: { settingsManager.SystemLastProfileIsConnected = false; } break; } } ShowErrorMessage(error); }
private void DoChangeStatus(VPN.Status status) { string lastError = ""; lock (m_dataSync) { if (m_status == status) { return; } m_status = status; lastError = m_lastError; } DispatchMessage(CreateStatusMessage(status, lastError)); }
public void DoChangeStatus(VPN.Status status) { string lastError = ""; lock (dataSync) { if (vpnStatus == status) { return; } vpnStatus = status; if (vpnLastError.Equals("")) { lastError = vpnLastError; } } if (clientMessenger != null) { SendMessage(clientMessenger, CreateStatusMessage(status, lastError)); } }
private void UpdateConnectionStatus(bool ready, VPN.Status status, string error) { if (ready) { txtVpnStatus.Text = Resources.GetString(VPN.DescriptionResource(status)); } else { txtVpnStatus.Text = Resources.GetString(Resource.String.conn_status_initialize); } btnConnectProfile.Enabled = ready && (status == VPN.Status.NOT_CONNECTED) && NetworkStatusReceiver.IsNetworkConnected(); btnDisconnectProfile.Enabled = (status == VPN.Status.CONNECTING) || (status == VPN.Status.CONNECTED) || (status == VPN.Status.PAUSED) || (status == VPN.Status.LOCKED); if (currentConnectionStatus != status) { currentConnectionStatus = status; switch (status) { case VPN.Status.CONNECTED: { if (profileInfo.ContainsKey("server") == true) { supportTools.InfoDialog(string.Format(Resources.GetString(Resource.String.connection_success), profileInfo["server"], NetworkStatusReceiver.GetNetworkDescription())); } settingsManager.SystemLastProfileIsConnected = true; } break; case VPN.Status.NOT_CONNECTED: { if (profileInfo.ContainsKey("server") == true) { supportTools.InfoDialog(string.Format(Resources.GetString(Resource.String.connection_disconnected), profileInfo["server"])); } settingsManager.SystemLastProfileIsConnected = false; } break; case VPN.Status.PAUSED: { supportTools.InfoDialog(Resources.GetString(Resource.String.connection_paused)); settingsManager.SystemLastProfileIsConnected = true; } break; default: { settingsManager.SystemLastProfileIsConnected = false; } break; } } ShowErrorMessage(error); }
private void OnServiceStatusChanged(bool ready, VPN.Status status, string error) { UpdateConnectionStatus(ready, status, error); }
public VPN.Status NetworkStatusChanged(VPNAction action) { if (vpnClientStatus == VPN.Status.LOCKED) { return(vpnClientStatus); } lock (clientSync) { if (openVPNClient == null) { return(vpnClientStatus); } switch (action) { case VPNAction.RESUME: { if (vpnClientStatus == VPN.Status.PAUSED) { EddieLogger.Info("Network is now connected, trying to resume VPN"); NativeMethods.EddieLibraryResult result = openVPNClient.Resume(); if (result.code == NativeMethods.ResultCode.SUCCESS) { EddieLogger.Info("Successfully resumed VPN"); vpnClientStatus = VPN.Status.CONNECTED; } else { EddieLogger.Error(string.Format("Failed to resume VPN. {0}", result.description)); vpnClientStatus = VPN.Status.UNKNOWN; } } } break; case VPNAction.PAUSE: case VPNAction.NETWORK_TYPE_CHANGED: { EddieLogger.Info("Network status has changed, trying to pause VPN"); NativeMethods.EddieLibraryResult result = openVPNClient.Pause("Network status changed"); if (result.code == NativeMethods.ResultCode.SUCCESS) { EddieLogger.Info("Successfully paused VPN"); vpnClientStatus = VPN.Status.PAUSED; } else { EddieLogger.Error(string.Format("Failed to pause VPN. {0}", result.description)); vpnClientStatus = VPN.Status.NOT_CONNECTED; } } break; case VPNAction.LOCK: { EddieLogger.Info("VPN error detected. Locking VPN"); NativeMethods.EddieLibraryResult result = openVPNClient.Pause("Lock VPN"); if (result.code == NativeMethods.ResultCode.SUCCESS) { EddieLogger.Info("Successfully locked VPN"); vpnClientStatus = VPN.Status.LOCKED; } else { EddieLogger.Error(string.Format("Failed to lock VPN. {0}", result.description)); vpnClientStatus = VPN.Status.NOT_CONNECTED; } } break; } } UpdateNotification(vpnClientStatus); return(vpnClientStatus); }
public VPN.Status HandleScreenChanged(bool active) { if (vpnClientStatus == VPN.Status.LOCKED) { return(vpnClientStatus); } lock (clientSync) { if (openVPNClient == null) { return(vpnClientStatus); } if (active) { if (vpnClientStatus == VPN.Status.PAUSED) { EddieLogger.Info("Screen is now on, trying to resume VPN"); NativeMethods.EddieLibraryResult result = openVPNClient.Resume(); if (result.code == NativeMethods.ResultCode.SUCCESS) { EddieLogger.Info("Successfully resumed VPN"); vpnClientStatus = VPN.Status.CONNECTED; } else { EddieLogger.Error(string.Format("Failed to resume VPN. {0}", result.description)); vpnClientStatus = VPN.Status.UNKNOWN; } } } else { if (settingsManager.SystemPauseVpnWhenScreenIsOff) { EddieLogger.Info("Screen is now off, trying to pause VPN"); NativeMethods.EddieLibraryResult result = openVPNClient.Pause("Screen is off"); if (result.code == NativeMethods.ResultCode.SUCCESS) { EddieLogger.Info("Successfully paused VPN"); vpnClientStatus = VPN.Status.PAUSED; } else { EddieLogger.Error(string.Format("Failed to pause VPN. {0}", result.description)); vpnClientStatus = VPN.Status.NOT_CONNECTED; } } } } UpdateNotification(vpnClientStatus); return(vpnClientStatus); }