Esempio n. 1
0
        static public bool IsConnected(BaseProxyServer ps)
        {
            RasConnection conn = null;

            if (ps == null)
            {
                if (dialer != null)
                {
                    conn = RasConnection.GetActiveConnectionByName(dialer.EntryName, dialer.PhoneBookPath);
                }
            }
            else
            {
                conn = RasConnection.GetActiveConnectionByName(ps.GetConnectionName(), RasPhoneBook.GetPhoneBookPath(RasPhoneBookType.User));
            }

            if (conn != null)
            {
                RasConnectionStatus st = conn.GetConnectionStatus();
                if (st.ConnectionState == RasConnectionState.Connected)
                {
                    return(true);
                }
                else
                {
                    return(false);
                }
            }
            else
            {
                return(false);
            }
        }
        public void ReturnsTheLocalEndPointAsExpected()
        {
            var connectionState    = RasConnectionState.Connected;
            var phoneNumber        = "12345";
            var localEndpoint      = IPAddress.Loopback;
            var remoteEndpoint     = IPAddress.Any;
            var connectionSubState = RasConnectionSubState.None;

            var target = new RasConnectionStatus(connectionState, null, device.Object, phoneNumber, localEndpoint, remoteEndpoint, connectionSubState);

            Assert.AreEqual(localEndpoint, target.LocalEndPoint);
        }
        public void DoesNotThrowAnErrorWithNullRemoteEndPoint()
        {
            var       connectionState    = RasConnectionState.Connected;
            var       phoneNumber        = "12345";
            var       localEndpoint      = IPAddress.Loopback;
            IPAddress remoteEndpoint     = null;
            var       connectionSubState = RasConnectionSubState.None;

            var target = new RasConnectionStatus(connectionState, null, device.Object, phoneNumber, localEndpoint, remoteEndpoint, connectionSubState);

            Assert.Null(target.RemoteEndPoint);
        }
        public void ReturnsErrorCodeWithValueAsExpected()
        {
            var connectionState    = RasConnectionState.Connected;
            var phoneNumber        = "12345";
            var localEndpoint      = IPAddress.Loopback;
            var remoteEndpoint     = IPAddress.Any;
            var connectionSubState = RasConnectionSubState.None;

            var target = new RasConnectionStatus(connectionState, 1, device.Object, phoneNumber, localEndpoint, remoteEndpoint, connectionSubState);

            Assert.AreEqual(1, target.ErrorCode);
        }
        public void ReturnsThePhoneNumberAsExpected()
        {
            var connectionState    = RasConnectionState.Connected;
            var device             = new Mock <RasDevice>();
            var phoneNumber        = "12345";
            var localEndpoint      = IPAddress.Loopback;
            var remoteEndpoint     = IPAddress.Any;
            var connectionSubState = RasConnectionSubState.None;

            var target = new RasConnectionStatus(connectionState, device.Object, phoneNumber, localEndpoint, remoteEndpoint, connectionSubState);

            Assert.AreEqual(phoneNumber, target.PhoneNumber);
        }
Esempio n. 6
0
        public void GetConnectionStatusTest()
        {
            var expected = new RasConnectionStatus()
            {
                ConnectionState = RasConnectionState.Connected
            };

            var mock = new Mock <IRasHelper>();

            RasHelper.Instance = mock.Object;

            mock.Setup(o => o.GetConnectionStatus(It.IsAny <RasHandle>())).Returns(expected);

            var target = new RasConnection();
            var actual = target.GetConnectionStatus();

            Assert.AreSame(expected, actual);
        }
Esempio n. 7
0
        public void GetConnectionStatusTest()
        {
            RasConnectionStatus expected = new RasConnectionStatus()
            {
                ConnectionState = RasConnectionState.Connected
            };

            Mock <IRasHelper> mock = new Mock <IRasHelper>();

            RasHelper.Default = mock.Object;

            mock.Setup(o => o.GetConnectionStatus(It.IsAny <RasHandle>())).Returns(expected);

            RasConnection       target = new RasConnection();
            RasConnectionStatus actual = target.GetConnectionStatus();

            Assert.AreSame(expected, actual);
        }
Esempio n. 8
0
 public void checkConnectionStatus()
 {
     try
     {
         if (connectionVar != null)
         {
             this.connectionstatus = this.connectionVar.GetConnectionStatus();
             OnConnectionStatusChangedEvent(this.connectionstatus.ConnectionState);
         }
         else
         {
             OnConnectionStatusChangedEvent(RasConnectionState.Disconnected);
             OnClientDialCompleted(this, new DialCompletedEventArgs(null, null, false, false, false, null));
             this.flagConnected = false;
         }
     }
     catch (Exception exception1)
     {
         OnClientExceptionEvent(exception1);
     }
 }
Esempio n. 9
0
        /// <summary>
        /// Retrieves the connection status for the handle specified.
        /// </summary>
        /// <param name="handle">The remote access connection handle to retrieve.</param>
        /// <returns>A <see cref="DotRas.RasConnectionStatus"/> object containing connection status information.</returns>
        /// <exception cref="DotRas.InvalidHandleException"><paramref name="handle"/> is not a valid handle.</exception>
        public RasConnectionStatus GetConnectionStatus(RasHandle handle)
        {
            RasConnectionStatus retval = null;

            IntPtr lpRasConnStatus = IntPtr.Zero;
            try
            {
                int size = Marshal.SizeOf(typeof(NativeMethods.RASCONNSTATUS));

                NativeMethods.RASCONNSTATUS status = new NativeMethods.RASCONNSTATUS();
                status.size = size;

                lpRasConnStatus = Marshal.AllocHGlobal(size);
                Marshal.StructureToPtr(status, lpRasConnStatus, true);

                int ret = SafeNativeMethods.Instance.GetConnectStatus(handle, lpRasConnStatus);
                if (ret == NativeMethods.ERROR_INVALID_HANDLE)
                {
                    ThrowHelper.ThrowInvalidHandleException(handle, "handle", Resources.Argument_InvalidHandle);
                }
                else if (ret == NativeMethods.SUCCESS)
                {
                    status = Utilities.PtrToStructure<NativeMethods.RASCONNSTATUS>(lpRasConnStatus);

                    string errorMessage = null;
                    if (status.errorCode != NativeMethods.SUCCESS)
                    {
                        errorMessage = RasHelper.Instance.GetRasErrorString(status.errorCode);
                    }

                    retval = new RasConnectionStatus();
                    retval.ConnectionState = status.connectionState;
                    retval.ErrorCode = status.errorCode;
                    retval.ErrorMessage = errorMessage;
                    retval.PhoneNumber = status.phoneNumber;

                    if (!string.IsNullOrEmpty(status.deviceName) && !string.IsNullOrEmpty(status.deviceType))
                    {
                        retval.Device = RasDevice.Create(status.deviceName, status.deviceType);
                    }

#if (WIN7 || WIN8)
                    IPAddressConverter converter = new IPAddressConverter();

                    retval.LocalEndPoint = (IPAddress)converter.ConvertFrom(status.localEndPoint);
                    retval.RemoteEndPoint = (IPAddress)converter.ConvertFrom(status.remoteEndPoint);
                    retval.ConnectionSubState = status.connectionSubState;
#endif
                }
                else
                {
                    ThrowHelper.ThrowRasException(ret);
                }
            }
            catch (EntryPointNotFoundException)
            {
                ThrowHelper.ThrowNotSupportedException(Resources.Exception_NotSupportedOnPlatform);
            }
            finally
            {
                if (lpRasConnStatus != IntPtr.Zero)
                {
                    Marshal.FreeHGlobal(lpRasConnStatus);
                }
            }

            return retval;
        }
Esempio n. 10
0
        public void GetConnectionStatusTest()
        {
            RasConnectionStatus actual = target.GetConnectionStatus();

            Assert.IsNotNull(actual);
        }
Esempio n. 11
0
        public void Initialize()
        {
            OnClientMessageEvent("VPN初始化开始...");
            string initProcessMessage = "";

            this.AllUsersPhoneBook = new RasPhoneBook();
            this.Dialer            = new RasDialer();
            if (!checkdnspoisoning("vpn.51sync.com"))
            {
                //kryptotelurlbackup = "http://200.63.44.24";
                //kryptotelurl = "http://216.185.105.35";
                initProcessMessage += "认证网络失败";
            }
            else
            {
                initProcessMessage += "认证网络正常";
            }
            updateIpaddress();
            if (!checkdnspoisoning("vpn.51sync.com"))
            {
                //vpnoneclickurl = "http://216.185.105.35/vpnoneclick";
                initProcessMessage += ";VPN网络不正常";
            }
            else
            {
                initProcessMessage += ";VPN网络正常";
            }

            /**
             * this.macAdd = macAddress = this.GetMACAddress();
             * this.GetUserNamePassword(macAddress);
             * while (this.subscriptiontype != "ELITE" || DateTime.Parse(this.expiringDate).Date < DateTime.Now.Date)
             * {
             *  macAddress = GenNewMac(macAddress);
             *  OnClientMessageEvent("认证信息修正+" + generateNewMACCount);
             *  generateNewMACCount++;
             *  this.GetUserNamePassword(macAddress);
             * }
             * if (this.macAdd != macAddress)
             * {
             *  OnClientMessageEvent("绑定到本机当前MAC的试用许可已过期。");
             *  OnClientMessageEvent("将本机MAC地址修改为"+macAddress.Replace(":","").ToUpper()+"以绕过版本许可限制。");
             * }
             */
            this.Initialized = true;
            OnClientMessageEvent(initProcessMessage);
            RasConnection conn = GetActiveConnection();

            if (conn != null)
            {
                OnClientMessageEvent("当前活动VPN连接:" + conn.EntryName + "");
                this.connectionVar        = conn;
                this.connectionstatus     = connectionVar.GetConnectionStatus();
                this.connectionHandle     = connectionVar.Handle;
                this.flagConnected        = true;
                this.lastServerUsed       = conn.EntryName;
                this.Dialer.EntryName     = conn.EntryName;
                this.Dialer.PhoneBookPath = RasPhoneBook.GetPhoneBookPath(RasPhoneBookType.User);
                this.Dialer.Credentials   = new NetworkCredential(this.userName, this.passWord);
            }
            OnInitializeCompletedEvent();
            OnClientMessageEvent("VPN初始化完成," + ((this.publicIpAddress.Trim().Length == 0) ? ("外网IP检测失败,请访问http://ip138.com查看") : "当前连接IP:" + this.publicIpAddress + ",请点击连接"));
        }