Beispiel #1
0
        private void WaitForVpnThreadToFinish()
        {
            if (vpnThread == null)
            {
                return;
            }

            try
            {
                vpnThread.Join(THREAD_MAX_JOIN_TIME);
            }
            catch (Java.Lang.InterruptedException)
            {
                EddieLogger.Error("VPNService.WaitVpnThreadToFinish(): VPN thread has been interrupted");
            }
            finally
            {
                if (vpnThread.IsAlive)
                {
                    EddieLogger.Error("VPNService.WaitVpnThreadToFinish(): VPN thread did not end");
                }
                else
                {
                    EddieLogger.Info("VPN thread execution has completed");
                }
            }
        }
        private void LoadApplications(string appList)
        {
            List <string> selectedPackages = new List <string>();

            string[] valArray = appList.Split(SettingsManager.DEFAULT_SPLIT_SEPARATOR);

            foreach (string item in valArray)
            {
                selectedPackages.Add(item);
            }

            applicationList.Clear();

            IList <ApplicationInfo> applications = base.PackageManager.GetInstalledApplications(global::Android.Content.PM.PackageInfoFlags.MetaData);

            foreach (ApplicationInfo app in applications)
            {
                ApplicationItem item = new ApplicationItem(this, app);

                item.Selected = selectedPackages.Contains(app.PackageName);

                try
                {
                    item.Icon = app.LoadIcon(PackageManager);
                }
                catch (System.Exception e)
                {
                    EddieLogger.Error(e);
                }

                applicationList.Add(item);
            }

            applicationList.Sort((a, b) => a.Title.CompareTo(b.Title));
        }
Beispiel #3
0
        private void DoRun()
        {
            OpenVPNClient client = null;

            lock (clientSync)
            {
                if (openVPNClient == null)
                {
                    string errMsg = "OpenVPNTunnel::DoRun(): OpenVPN client is not initialized";

                    EddieLogger.Error(errMsg);

                    throw new Exception(errMsg);
                }

                client = openVPNClient;

                // Do NOT call m_client.Start under m_clientSync'lock
            }

            // Dispatcher must be instantiated before starting to allow handling stop requests from outside while the client isn't started yet

            // RunDispatcher();

            NativeMethods.EddieLibraryResult result = client.Start();

            if (result.code != NativeMethods.ResultCode.SUCCESS)
            {
                string errMsg = string.Format("OpenVPNTunnel::DoRun(): Failed to start OpenVPN client. {0}", result.description);

                EddieLogger.Error(errMsg);

                throw new Exception(errMsg);
            }
        }
        public override void OnCreate()
        {
            base.OnCreate();

            if (!m_initialized)
            {
                EddieLogger.Init(this);

                EddieLogger.Info("Initializing eddie library");
                EddieLogger.Info("{0} - {1}", NativeMethods.EddieLibrary.LibraryQualifiedName(), NativeMethods.EddieLibrary.LibraryReleaseDate());
                EddieLogger.Info("Eddie Library API level {0}", NativeMethods.EddieLibrary.LibraryApiLevel());

                NativeMethods.EddieLibraryResult result = NativeMethods.EddieLibrary.Init();

                if (result.code == NativeMethods.ResultCode.SUCCESS)
                {
                    m_initialized = true;

                    EddieLogger.Info("Eddie Library: OpenVPN initialization succeeded");
                }
                else
                {
                    EddieLogger.Error("Eddie Library: OpenVPN initialization failed. {0}", result.description);
                }
            }
        }
Beispiel #5
0
        public NativeMethods.ovpn3_transport_stats GetTransportStats()
        {
            lock (clientSync)
            {
                if (openVPNClient == null)
                {
                    string errMsg = "OpenVPNTunnel::GetTransportStats(): OpenVPN client is not initialized";

                    EddieLogger.Error(errMsg);

                    throw new Exception(errMsg);
                }

                NativeMethods.ovpn3_transport_stats stats = new NativeMethods.ovpn3_transport_stats();

                NativeMethods.EddieLibraryResult result = openVPNClient.GetTransportStats(ref stats);

                if (result.code != NativeMethods.ResultCode.SUCCESS)
                {
                    string errMsg = string.Format("OpenVPNTunnel::GetTransportStats(): Failed to get OpenVPN transport stats. {0}", result.description);

                    EddieLogger.Error(errMsg);

                    throw new Exception(errMsg);
                }

                return(stats);
            }
        }
Beispiel #6
0
        public void HandleThreadException(Exception e)
        {
            EddieLogger.Error(e);

            LastError = e.Message;

            DoStop();
        }
Beispiel #7
0
        public override void OnRevoke()
        {
            EddieLogger.Error("VPNService.OnRevoke");

            // Another VPN may have started here or Android is shutting down the VPN: by now there is no way to "block" the operation and the service must be stopped gracefully

            UpdateService(false);

            base.OnRevoke();
        }
Beispiel #8
0
        private void OnTunBuilderTeardown(/*bool*/ int disconnect)
        {
            EddieLogger.Debug("OnTunBuilderTeardown(disconnect={0})", disconnect);

            try
            {
                OnTunBuilderTeardownImpl(disconnect);
            }
            catch (Exception e)
            {
                EddieLogger.Error("OnTunBuilderTeardown", e);
            }
        }
Beispiel #9
0
        private void OnTunBuilderEstablishLite()
        {
            EddieLogger.Debug("OnTunBuilderEstablishLite");

            try
            {
                OnTunBuilderEstablishLiteImpl();
            }
            catch (Exception e)
            {
                EddieLogger.Error("OnTunBuilderEstablishLite", e);
            }
        }
Beispiel #10
0
        private void OnConnectAttach()
        {
            EddieLogger.Debug("OnConnectAttach");

            try
            {
                OnConnectAttachImpl();
            }
            catch (Exception e)
            {
                EddieLogger.Error("OnConnectAttach", e);
            }
        }
Beispiel #11
0
        private void OnConnectRun()
        {
            EddieLogger.Debug("OnConnectRun");

            try
            {
                OnConnectRunImpl();
            }
            catch (Exception e)
            {
                EddieLogger.Error("OnConnectRun", e);
            }
        }
Beispiel #12
0
        private void OnConnectSessionStop()
        {
            EddieLogger.Debug("OnConnectSessionStop");

            try
            {
                OnConnectSessionStopImpl();
            }
            catch (Exception e)
            {
                EddieLogger.Error("OnConnectSessionStop", e);
            }
        }
Beispiel #13
0
        public void Stop()
        {
            try
            {
                SendStopMessage();
            }
            catch (Exception e)
            {
                EddieLogger.Error(e);

                OnStatusChanged(null, null, e.Message);
            }
        }
Beispiel #14
0
        private void DoSetOption(string option, string value)
        {
            NativeMethods.EddieLibraryResult result = openVPNClient.SetOption(option, value);

            if (result.code != NativeMethods.ResultCode.SUCCESS)
            {
                string errMsg = String.Format("OpenVPNTunnel::DoSetOption(): Failed to set option '{0}' with value '{1}'. {2}", option, value, result.description);

                EddieLogger.Error(errMsg);

                throw new Exception(errMsg);
            }
        }
        private void TryRestoreLastProfile(Context context)
        {
            EddieLogger.Debug("EddieBroadcastReceiver.TryRestoreLastProfile");

            if (VPNService.Prepare(context.ApplicationContext) != null)
            {
                EddieLogger.Debug("VPNService.Prepare requires confirmation");

                return;
            }

            if (!settingsManager.SystemRestoreLastProfile)
            {
                EddieLogger.Debug("EddieBroadcastReceiver: SystemRestoreLastProfile disabled");

                return;
            }

            if (!settingsManager.SystemLastProfileIsConnected)
            {
                EddieLogger.Debug("EddieBroadcastReceiver: SystemLastProfileIsConnected false");

                return;
            }

            string lastProfile = settingsManager.SystemLastProfile;

            if (SupportTools.Empty(lastProfile))
            {
                EddieLogger.Debug("EddieBroadcastReceiver: lastProfile is empty");
                return;
            }

            EddieLogger.Debug("EddieBroadcastReceiver: restoring last profile");

            try
            {
                Bundle args = new Bundle();
                args.PutString(VPNService.PARAM_PROFILE, lastProfile);

                Intent intent = new Intent(context, typeof(VPNService));
                intent.PutExtra(VPNService.PARAM_START, true);
                intent.PutExtra(VPNService.EXTRA_RUN_ARGS, args);

                context.StartService(intent);
            }
            catch (Exception e)
            {
                EddieLogger.Error("TryRestoreLastProfile", e);
            }
        }
Beispiel #16
0
        private int OnTunBuilderSetLayer(int layer)
        {
            EddieLogger.Debug("OnTunBuilderSetLayer(layer={0})", layer);

            try
            {
                return(OnTunBuilderSetLayerImpl(layer));
            }
            catch (Exception e)
            {
                EddieLogger.Error("OnTunBuilderSetLayer", e);
            }

            return(NativeMethods.ERROR);
        }
Beispiel #17
0
        private int OnTunBuilderSetRemoteAddress(string address, /*bool*/ int ipv6)
        {
            EddieLogger.Debug("OnTunBuilderSetRemoteAddress(address={0}, ipv6={1})", address, ipv6);

            try
            {
                return(OnTunBuilderSetRemoteAddressImpl(address, ipv6));
            }
            catch (Exception e)
            {
                EddieLogger.Error("OnTunBuilderSetRemoteAddress", e);
            }

            return(NativeMethods.ERROR);
        }
Beispiel #18
0
        private int OnTunBuilderAddSearchDomain(string domain)
        {
            EddieLogger.Debug("OnTunBuilderAddSearchDomain(domain={0})", domain);

            try
            {
                return(OnTunBuilderAddSearchDomainImpl(domain));
            }
            catch (Exception e)
            {
                EddieLogger.Error("OnTunBuilderAddSearchDomain", e);
            }

            return(NativeMethods.ERROR);
        }
Beispiel #19
0
        private int OnTunBuilderExcludeRoute(string address, int prefix_length, int metric, /*bool*/ int ipv6)
        {
            EddieLogger.Debug("OnTunBuilderExcludeRoute(address={0}, prefix_length={1}, metric={2}, ipv6={3})", address, prefix_length, metric, ipv6);

            try
            {
                return(OnTunBuilderExcludeRouteImpl(address, prefix_length, metric, ipv6));
            }
            catch (Exception e)
            {
                EddieLogger.Error("OnTunBuilderExcludeRoute", e);
            }

            return(NativeMethods.ERROR);
        }
Beispiel #20
0
        private int OnTunBuilderAddProxyBypass(string bypass_host)
        {
            EddieLogger.Debug("OnTunBuilderAddProxyBypass(bypass_host={0})", bypass_host);

            try
            {
                return(OnTunBuilderAddProxyBypassImpl(bypass_host));
            }
            catch (Exception e)
            {
                EddieLogger.Error("OnTunBuilderAddProxyBypass", e);
            }

            return(NativeMethods.ERROR);
        }
Beispiel #21
0
        private int OnTunBuilderSetSessionName(string name)
        {
            EddieLogger.Debug("OnTunBuilderSetSessionName(name={0})", name);

            try
            {
                return(OnTunBuilderSetSessionNameImpl(name));
            }
            catch (Exception e)
            {
                EddieLogger.Error("OnTunBuilderSetSessionName", e);
            }

            return(NativeMethods.ERROR);
        }
Beispiel #22
0
        private int OnTunBuilderSetProxyAutoConfigUrl(string url)
        {
            EddieLogger.Debug("OnTunBuilderSetProxyAutoConfigUrl(url={0})", url);

            try
            {
                return(OnTunBuilderSetProxyAutoConfigUrlImpl(url));
            }
            catch (Exception e)
            {
                EddieLogger.Error("OnTunBuilderSetProxyAutoConfigUrl", e);
            }

            return(NativeMethods.ERROR);
        }
Beispiel #23
0
        private int OnTunBuilderPersist()
        {
            EddieLogger.Debug("OnTunBuilderPersist");

            try
            {
                return(OnTunBuilderPersistImpl());
            }
            catch (Exception e)
            {
                EddieLogger.Error("OnTunBuilderPersist", e);
            }

            return(NativeMethods.ERROR);
        }
Beispiel #24
0
        private int OnTunBuildeRerouteGW(/*bool*/ int ipv4, /*bool*/ int ipv6, int flags)
        {
            EddieLogger.Debug("OnTunBuildeRerouteGW(ipv4={0}, ipv6={1}, flags={2})", ipv4, ipv6, flags);

            try
            {
                return(OnTunBuildeRerouteGWImpl(ipv4, ipv6, flags));
            }
            catch (Exception e)
            {
                EddieLogger.Error("OnTunBuildeRerouteGW", e);
            }

            return(NativeMethods.ERROR);
        }
Beispiel #25
0
        private int OnTunBuilderSetProxyHttps(string host, int port)
        {
            EddieLogger.Debug("OnTunBuilderSetProxyHttps(host={0}, port={1})", host, port);

            try
            {
                return(OnTunBuilderSetProxyHttpsImpl(host, port));
            }
            catch (Exception e)
            {
                EddieLogger.Error("OnTunBuilderSetProxyHttps", e);
            }

            return(NativeMethods.ERROR);
        }
Beispiel #26
0
        private int OnTunBuilderAddAddress(string address, int prefix_length, string gateway, /*bool*/ int ipv6, /*bool*/ int net30)
        {
            EddieLogger.Debug("OnTunBuilderAddAddress(address={0}, prefix_length={1}, gateway={2}, ipv6={3}, net30={4})", address, prefix_length, gateway, ipv6, net30);

            try
            {
                return(OnTunBuilderAddAddressImpl(address, prefix_length, gateway, ipv6, net30));
            }
            catch (Exception e)
            {
                EddieLogger.Error("OnTunBuilderAddAddress", e);
            }

            return(NativeMethods.ERROR);
        }
Beispiel #27
0
        private int OnTunBuilderEstablish()
        {
            EddieLogger.Debug("OnTunBuilderEstablish");

            try
            {
                return(OnTunBuilderEstablishImpl());
            }
            catch (Exception e)
            {
                EddieLogger.Error("OnTunBuilderEstablish", e);
            }

            return(NativeMethods.ERROR);
        }
Beispiel #28
0
        private int OnTunBuilderSetRouteMetricDefault(int metric)
        {
            EddieLogger.Debug("OnTunBuilderSetRouteMetricDefault(metric={0})", metric);

            try
            {
                return(OnTunBuilderSetRouteMetricDefaultImpl(metric));
            }
            catch (Exception e)
            {
                EddieLogger.Error("OnTunBuilderSetRouteMetricDefault", e);
            }

            return(NativeMethods.ERROR);
        }
Beispiel #29
0
        private int OnTunBuilderAddWinsServer(string address)
        {
            EddieLogger.Debug("OnTunBuilderAddWinsServer(address={0})", address);

            try
            {
                return(OnTunBuilderAddWinsServerImpl(address));
            }
            catch (Exception e)
            {
                EddieLogger.Error("OnTunBuilderAddWinsServer", e);
            }

            return(NativeMethods.ERROR);
        }
Beispiel #30
0
        private int OnTunBuilderSetAdapterDomainSuffix(string name)
        {
            EddieLogger.Debug("OnTunBuilderSetAdapterDomainSuffix(name={0})", name);

            try
            {
                return(OnTunBuilderSetAdapterDomainSuffixImpl(name));
            }
            catch (Exception e)
            {
                EddieLogger.Error("OnTunBuilderSetAdapterDomainSuffix", e);
            }

            return(NativeMethods.ERROR);
        }