Ejemplo n.º 1
0
        /// <summary>
        /// 获得入口参数
        /// </summary>
        /// <param name="strEntryName">条目名称</param>
        /// <param name="strPhoneNumber">电话号码</param>
        /// <param name="strUserName">用户名</param>
        /// <param name="strPassword">密码</param>
        /// <param name="bRememberPassword">记住密码</param>
        /// <param name="strError">错误</param>
        /// <returns>结果</returns>
        public bool GetEntryParams(string strEntryName, out string strPhoneNumber, out string strUserName, out string strPassword, out bool bRememberPassword, out string strError)
        {
            bool          lpfPassword = false;
            RASDIALPARAMS structure   = new RASDIALPARAMS();

            structure.dwSize      = Marshal.SizeOf(structure);
            structure.szEntryName = strEntryName;
            int nErrorValue = RasGetEntryDialParams(null, ref structure, ref lpfPassword);

            if (nErrorValue != 0)
            {
                strError          = this.GetErrorString(nErrorValue);
                strPhoneNumber    = null;
                strUserName       = null;
                strPassword       = null;
                bRememberPassword = false;
                strError          = null;
                return(false);
            }
            strPhoneNumber = structure.szPhoneNumber;
            strUserName    = structure.szUserName;
            if (lpfPassword)
            {
                strPassword = structure.szPassword;
            }
            else
            {
                strPassword = null;
            }
            bRememberPassword = lpfPassword;
            strError          = null;
            return(true);
        }
Ejemplo n.º 2
0
 public static extern uint RasDial(
     [In] RASDIALEXTENSIONS lpRasDialExtensions,
     [In] string lpszPhonebook,
     [In] RASDIALPARAMS lpRasDialParams,
     uint dwNotifierType,
     Delegate lpvNotifier,
     ref IntPtr lphRasConn);
Ejemplo n.º 3
0
        /// <summary>
        /// 拨号
        /// </summary>
        /// <param name="strEntryName">条目名称</param>
        /// <param name="strError">错误</param>
        /// <returns>结果</returns>
        public bool DialUp(string strEntryName, out string strError)
        {
            bool          lpfPassword = false;
            RASDIALPARAMS structure   = new RASDIALPARAMS();

            structure.dwSize      = Marshal.SizeOf(structure);
            structure.szEntryName = strEntryName;
            RasDialEvent lpvNotifier = new RasDialEvent(this.RasDialFunc);
            int          nErrorValue = RasGetEntryDialParams(null, ref structure, ref lpfPassword);

            if (nErrorValue != 0)
            {
                strError = this.GetErrorString(nErrorValue);
                return(false);
            }
            this.ConnectNotify("正在连接" + structure.szEntryName + "...", 1);
            this.EntryName = strEntryName;
            this.hrasconn  = 0;
            nErrorValue    = RasDial(0, null, ref structure, 0, lpvNotifier, ref this.hrasconn);
            if (nErrorValue != 0)
            {
                strError = this.GetErrorString(nErrorValue);
                this.ConnectNotify(strError, 3);
                return(false);
            }
            this.ConnectNotify("正在打开端口...", 1);
            strError = null;
            return(true);
        }
Ejemplo n.º 4
0
        public static uint UpLink(string phoneBookEntry)
        {
            if (phoneBookEntry == String.Empty)
            {
                throw new ArgumentNullException("phoneBookEntry");
            }
            RASCONN[] rasConnArr = GetAllConnections();
            RASCONN   rConn      = new RASCONN();

            rConn =
                Array.Find <RASCONN>(rasConnArr,
                                     delegate(RASCONN rasConn)
            {
                return(rasConn.szEntryName == phoneBookEntry ? true : false);
            });
            if (rConn.hrasconn != IntPtr.Zero)
            {
                RasHangUp(rConn.hrasconn);
                Thread.Sleep(3000);
            }

            IntPtr        hConnection   = IntPtr.Zero;
            RASDIALPARAMS rasDialParams = new RASDIALPARAMS();

            rasDialParams.dwSize       = Marshal.SizeOf(rasDialParams);
            rasDialParams.szEntryName += phoneBookEntry;
            rasDialParams.szUserName  += "\0";
            rasDialParams.szPassword  += "\0";
            UInt32 result = RasDial(0, null, ref rasDialParams, 0, null, ref hConnection);

            return(result);
        }
Ejemplo n.º 5
0
        public void RasGetEntryDialParamsAsExpected()
        {
            var           lpszPhoneBook = @"C:\Users\My.pbk";
            RASDIALPARAMS lpDialParams  = new RASDIALPARAMS();
            bool          lpfPassword;

            api.Setup(o => o.RasGetEntryDialParams(lpszPhoneBook, ref It.Ref <RASDIALPARAMS> .IsAny, out It.Ref <bool> .IsAny)).Returns(new RasGetEntryDialParamsCallback(
                                                                                                                                            (string o1, ref RASDIALPARAMS o2, out bool o3) =>
            {
                o3 = true;
                return(SUCCESS);
            }));

            eventLoggingPolicy.Setup(o => o.LogEvent(It.IsAny <EventLevel>(), It.IsAny <PInvokeInt32CallCompletedTraceEvent>())).Callback(new LogEventCallback(
                                                                                                                                              (level, o1) =>
            {
                Assert.AreEqual(EventLevel.Verbose, level);

                var eventData = (PInvokeInt32CallCompletedTraceEvent)o1;
                Assert.True(eventData.Args.ContainsKey(nameof(lpszPhoneBook)));
                Assert.True(eventData.OutArgs.ContainsKey(nameof(lpDialParams)));
                Assert.True(eventData.OutArgs.ContainsKey(nameof(lpfPassword)));
                Assert.True(eventData.Duration > TimeSpan.Zero);
                Assert.AreEqual(SUCCESS, eventData.Result);
            })).Verifiable();


            var target = new RasApi32LoggingAdvice(api.Object, eventLoggingPolicy.Object);
            var result = target.RasGetEntryDialParams(lpszPhoneBook, ref lpDialParams, out lpfPassword);

            eventLoggingPolicy.Verify();
            Assert.AreEqual(SUCCESS, result);
            Assert.True(lpfPassword);
        }
Ejemplo n.º 6
0
 public static extern int RasDial(
     [In] ref RASDIALEXTENSIONS lpRasDialExtensions,
     string lpszPhoneBook,
     [In] ref RASDIALPARAMS lpRasDialParams,
     NotifierType dwNotifierType,
     Delegate lpvNotifier,
     out IntPtr lphRasConn);
Ejemplo n.º 7
0
        private void ConfigureOptions(RasDialerOptions options, ref RASDIALPARAMS rasDialParams)
        {
            if (options == null)
            {
                return;
            }

            rasDialParams.dwIfIndex = options.InterfaceIndex;
        }
Ejemplo n.º 8
0
        private void ConfigureCredentials(NetworkCredential credentials, ref RASDIALPARAMS rasDialParams)
        {
            if (credentials == null)
            {
                return;
            }

            rasDialParams.szUserName = credentials.UserName;
            rasDialParams.szPassword = credentials.Password;
            rasDialParams.szDomain   = credentials.Domain;
        }
Ejemplo n.º 9
0
        /// <summary>
        /// 设置输入参数个数
        /// </summary>
        /// <param name="strEntryName">条目名称</param>
        /// <param name="strPhoneNumber">电话号码</param>
        /// <param name="strUserName">用户名</param>
        /// <param name="strPassword">密码</param>
        /// <param name="bRememberPassword">记住密码</param>
        /// <param name="strError">错误</param>
        /// <returns>结果</returns>
        public bool SetEntryParams(string strEntryName, string strPhoneNumber, string strUserName, string strPassword, bool bRememberPassword, out string strError)
        {
            RASDIALPARAMS structure = new RASDIALPARAMS();

            structure.dwSize        = Marshal.SizeOf(structure);
            structure.szEntryName   = strEntryName;
            structure.szPhoneNumber = strPhoneNumber;
            structure.szUserName    = strUserName;
            structure.szPassword    = strPassword;
            int nErrorValue = RasSetEntryDialParams(null, ref structure, !bRememberPassword);

            if (nErrorValue != 0)
            {
                strError = this.GetErrorString(nErrorValue);
                return(false);
            }
            strError = null;
            return(true);
        }
Ejemplo n.º 10
0
        public void RasDialAsExpected()
        {
            var lpRasDialExtensions = new RASDIALEXTENSIONS();
            var lpszPhoneBook       = @"C:\Users\My.pbk";

            var          lpRasDialParams = new RASDIALPARAMS();
            var          dwNotifierType  = NotifierType.RasDialFunc2;
            RasDialFunc2 lpvNotifier     = null;
            var          lphRasConn      = IntPtr.Zero;

            api.Setup(o => o.RasDial(ref It.Ref <RASDIALEXTENSIONS> .IsAny, lpszPhoneBook, ref It.Ref <RASDIALPARAMS> .IsAny, dwNotifierType, lpvNotifier, out It.Ref <IntPtr> .IsAny)).Returns(new RasDialCallback(
                                                                                                                                                                                                    (ref RASDIALEXTENSIONS o1, string o2, ref RASDIALPARAMS o3, NotifierType o4, RasDialFunc2 o5, out IntPtr o6) =>
            {
                o6 = new IntPtr(1);
                return(SUCCESS);
            }));

            eventLoggingPolicy.Setup(o => o.LogEvent(It.IsAny <EventLevel>(), It.IsAny <PInvokeInt32CallCompletedTraceEvent>())).Callback(new LogEventCallback(
                                                                                                                                              (level, o1) =>
            {
                Assert.AreEqual(EventLevel.Verbose, level);

                var eventData = (PInvokeInt32CallCompletedTraceEvent)o1;
                Assert.True(eventData.Args.ContainsKey(nameof(lpRasDialExtensions)));
                Assert.True(eventData.Args.ContainsKey(nameof(lpszPhoneBook)));
                Assert.True(eventData.Args.ContainsKey(nameof(lpRasDialParams)));
                Assert.True(eventData.Args.ContainsKey(nameof(dwNotifierType)));
                Assert.True(eventData.Args.ContainsKey(nameof(lpvNotifier)));
                Assert.True(eventData.OutArgs.ContainsKey(nameof(lphRasConn)));

                Assert.True(eventData.Duration > TimeSpan.Zero);
                Assert.AreEqual(SUCCESS, eventData.Result);
            })).Verifiable();

            var target = new RasApi32LoggingAdvice(api.Object, eventLoggingPolicy.Object);
            var result = target.RasDial(ref lpRasDialExtensions, lpszPhoneBook, ref lpRasDialParams, dwNotifierType, null, out lphRasConn);

            eventLoggingPolicy.Verify();
            Assert.AreEqual(SUCCESS, result);
            Assert.AreEqual(new IntPtr(1), lphRasConn);
        }
Ejemplo n.º 11
0
        public static bool connectToVPN(string vpnName)
        {
            // Initialize unmanged memory to hold the struct.
            IntPtr pnt = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(RASDIALPARAMS)));

            var lpRasDialParams = new RASDIALPARAMS();

            lpRasDialParams.szEntryName = vpnName;
            lpRasDialParams.dwSize      = Marshal.SizeOf(typeof(RASDIALPARAMS));

            // Copy the struct to unmanaged memory.
            Marshal.StructureToPtr(lpRasDialParams, pnt, true);

            bool lprPassword = false;

            var nRet = RasGetEntryDialParamsW(null, pnt, out lprPassword);

            if (nRet != 0)
            {
                // Clear unmanaged memory
                Marshal.FreeHGlobal(pnt);
                //throw new Exception("Error text");
                return(false);
            }

            // Copy unmanaged memory to the struct.
            //lpRasDialParams = (RASDIALPARAMS)Marshal.PtrToStructure(pnt, typeof(RASDIALPARAMS));

            // Clear unmanaged memory
            //Marshal.FreeHGlobal(pnt);

            //RASCONN ras = new RASCONN();
            //ras.dwSize = Marshal.SizeOf(typeof(RASCONN));
            IntPtr hrassconn = IntPtr.Zero; //Marshal.AllocHGlobal(Marshal.SizeOf(typeof(RASCONN)));
            //RasHandle rhandle = null;

            var ret = RasDial(IntPtr.Zero, null, pnt, 0, null, ref hrassconn);

            return(true);
        }
Ejemplo n.º 12
0
        public int RasGetEntryDialParams(string lpszPhoneBook, ref RASDIALPARAMS lpDialParams, out bool lpfPassword)
        {
            var stopwatch = Stopwatch.StartNew();
            var result    = AttachedObject.RasGetEntryDialParams(lpszPhoneBook, ref lpDialParams, out lpfPassword);

            stopwatch.Stop();

            var callEvent = new PInvokeInt32CallCompletedTraceEvent
            {
                DllName    = RasApi32Dll,
                Duration   = stopwatch.Elapsed,
                MethodName = nameof(RasGetEntryDialParams),
                Result     = result,
            };

            callEvent.Args.Add(nameof(lpszPhoneBook), lpszPhoneBook);
            callEvent.OutArgs.Add(nameof(lpDialParams), lpDialParams);
            callEvent.OutArgs.Add(nameof(lpfPassword), lpfPassword);

            LogVerbose(callEvent);
            return(result);
        }
Ejemplo n.º 13
0
        public bool DialUp(string strEntryName, string szUserName, string szPassWord, out string strError)
        {
            bool lpfPassword = false;

            strError = null;
            RASDIALPARAMS structure = new RASDIALPARAMS();

            structure.dwSize      = Marshal.SizeOf(structure);
            structure.szEntryName = strEntryName;
            int nErrorValue = RasGetEntryDialParams(null, ref structure, ref lpfPassword);

            structure.szUserName = szUserName;
            structure.szPassword = szPassWord;
            if (nErrorValue != 0)
            {
                strError = "宽带重拨发生错误!";
                return(false);
            }
            int lphrsaConn = 0;

            nErrorValue = RasDial(0, null, ref structure, 0, IntPtr.Zero, ref lphrsaConn);
            if (nErrorValue != 0)
            {
                strError = "宽带重拨返回" + nErrorValue.ToString() + "错误!";
                //this.ConnectNotify(strError, 3);
                return(false);
            }

            strError = "宽带重拨成功!";
            strError = GetIP(lphrsaConn);
            if (strError == "")
            {
                strError = "查询IP发生未知错误!";
                return(false);
            }
            return(true);
        }
 public RasManager()
 {
     Connection = 0;
     RasDialParams = new RASDIALPARAMS();
     RasDialParams.dwSize = Marshal.SizeOf(RasDialParams);
 }
Ejemplo n.º 15
0
        public int RasDial(ref RASDIALEXTENSIONS lpRasDialExtensions, string lpszPhoneBook, ref RASDIALPARAMS lpRasDialParams, NotifierType dwNotifierType, RasDialFunc2 lpvNotifier, out IntPtr lphRasConn)
        {
            var stopwatch = Stopwatch.StartNew();
            var result    = AttachedObject.RasDial(ref lpRasDialExtensions, lpszPhoneBook, ref lpRasDialParams, dwNotifierType, lpvNotifier, out lphRasConn);

            stopwatch.Stop();

            var callEvent = new PInvokeInt32CallCompletedTraceEvent
            {
                DllName    = RasApi32Dll,
                Duration   = stopwatch.Elapsed,
                MethodName = nameof(RasDial),
                Result     = result,
            };

            callEvent.Args.Add(nameof(lpRasDialExtensions), lpRasDialExtensions);
            callEvent.Args.Add(nameof(lpszPhoneBook), lpszPhoneBook);
            callEvent.Args.Add(nameof(lpRasDialParams), lpRasDialParams);
            callEvent.Args.Add(nameof(dwNotifierType), dwNotifierType);
            callEvent.Args.Add(nameof(lpvNotifier), lpvNotifier);
            callEvent.OutArgs.Add(nameof(lphRasConn), lphRasConn);

            LogVerbose(callEvent);
            return(result);
        }
Ejemplo n.º 16
0
 private static extern int RasDial(int lpRasDialExtensions, string lpszPhonebook, ref RASDIALPARAMS lpRasDialParams, int dwNotifierType, IntPtr lpvNotifier, ref int lphRasConn);
Ejemplo n.º 17
0
 public CRasDial()
 {
     rasSession           = 0;
     RasDialParams        = new RASDIALPARAMS();
     RasDialParams.dwSize = Marshal.SizeOf(RasDialParams);
 }
Ejemplo n.º 18
0
 private static extern int RasGetEntryDialParams(string lpszPhonebook, ref RASDIALPARAMS lprasdialparams, ref bool lpfPassword);
Ejemplo n.º 19
0
 /// <summary>
 /// 构造
 /// </summary>
 public RasManager()
 {
     Connection           = 0;
     RasDialParams        = new RASDIALPARAMS();
     RasDialParams.dwSize = Marshal.SizeOf(RasDialParams);
 }
Ejemplo n.º 20
0
 public static extern int RasDial(int lpRasDialExtensions, string lpszPhonebook, ref RASDIALPARAMS lprasdialparams, int dwNotifierType, Callback lpvNotifier, ref int lphRasConn);
Ejemplo n.º 21
0
 private static extern int RasGetEntryDialParams(string lpszPhonebook, ref RASDIALPARAMS lprasdialparams, ref bool lpfPassword);
Ejemplo n.º 22
0
 /// <summary>
 /// 拨号
 /// </summary>
 /// <param name="strEntryName">条目名称</param>
 /// <param name="strError">错误</param>
 /// <returns>结果</returns>
 public bool DialUp(string strEntryName, out string strError)
 {
     bool lpfPassword = false;
     RASDIALPARAMS structure = new RASDIALPARAMS();
     structure.dwSize = Marshal.SizeOf(structure);
     structure.szEntryName = strEntryName;
     RasDialEvent lpvNotifier = new RasDialEvent(this.RasDialFunc);
     int nErrorValue = RasGetEntryDialParams(null, ref structure, ref lpfPassword);
     if (nErrorValue != 0)
     {
         strError = this.GetErrorString(nErrorValue);
         return false;
     }
     this.ConnectNotify("正在连接" + structure.szEntryName + "...", 1);
     this.EntryName = strEntryName;
     this.hrasconn = 0;
     nErrorValue = RasDial(0, null, ref structure, 0, lpvNotifier, ref this.hrasconn);
     if (nErrorValue != 0)
     {
         strError = this.GetErrorString(nErrorValue);
         this.ConnectNotify(strError, 3);
         return false;
     }
     this.ConnectNotify("正在打开端口...", 1);
     strError = null;
     return true;
 }
 public static extern int RasDial(int lpRasDialExtensions, string lpszPhonebook, ref   RASDIALPARAMS lprasdialparams, int dwNotifierType, Callback lpvNotifier, ref   int lphRasConn);
Ejemplo n.º 24
0
 private static extern int RasDial(int lpRasDialExtensions, string lpszPhonebook, ref RASDIALPARAMS lpRasDialParams, int dwNotifierType, RasDialEvent lpvNotifier, ref int lphRasConn);
Ejemplo n.º 25
0
 /// <summary>
 /// 设置输入参数个数
 /// </summary>
 /// <param name="strEntryName">条目名称</param>
 /// <param name="strPhoneNumber">电话号码</param>
 /// <param name="strUserName">用户名</param>
 /// <param name="strPassword">密码</param>
 /// <param name="bRememberPassword">记住密码</param>
 /// <param name="strError">错误</param>
 /// <returns>结果</returns>
 public bool SetEntryParams(string strEntryName, string strPhoneNumber, string strUserName, string strPassword, bool bRememberPassword, out string strError)
 {
     RASDIALPARAMS structure = new RASDIALPARAMS();
     structure.dwSize = Marshal.SizeOf(structure);
     structure.szEntryName = strEntryName;
     structure.szPhoneNumber = strPhoneNumber;
     structure.szUserName = strUserName;
     structure.szPassword = strPassword;
     int nErrorValue = RasSetEntryDialParams(null, ref structure, !bRememberPassword);
     if (nErrorValue != 0)
     {
         strError = this.GetErrorString(nErrorValue);
         return false;
     }
     strError = null;
     return true;
 }
Ejemplo n.º 26
0
 private static extern int RasSetEntryDialParams(string lpszPhonebook, ref RASDIALPARAMS lprasdialparams, bool fRemovePassword);
Ejemplo n.º 27
0
 public int RasGetEntryDialParams(string lpszPhoneBook, ref RASDIALPARAMS lpDialParams, out bool lpfPassword)
 {
     return(SafeNativeMethods.RasGetEntryDialParams(lpszPhoneBook, ref lpDialParams, out lpfPassword));
 }
Ejemplo n.º 28
0
 public int RasDial(ref RASDIALEXTENSIONS lpRasDialExtensions, string lpszPhoneBook, ref RASDIALPARAMS lpRasDialParams, NotifierType dwNotifierType, RasDialFunc2 lpvNotifier, out IntPtr lphRasConn)
 {
     return(UnsafeNativeMethods.RasDial(ref lpRasDialExtensions, lpszPhoneBook, ref lpRasDialParams, dwNotifierType, lpvNotifier, out lphRasConn));
 }
Ejemplo n.º 29
0
 private static extern int RasSetEntryDialParams(string lpszPhonebook, ref RASDIALPARAMS lprasdialparams, bool fRemovePassword);
Ejemplo n.º 30
0
 public static extern int RasGetEntryDialParams(
     string lpszPhoneBook,
     [In, Out] ref RASDIALPARAMS lpDialParams,
     [Out] out bool lpfPassword);
Ejemplo n.º 31
0
 static extern uint RasGetEntryDialParams(
     string lpszPhonebook,
     [In, Out] ref RASDIALPARAMS lprasdialparams,
     out bool lpfPassword);