public static void ConnectThread() { try { ms_rasdialer = new RasDialer(); ms_rasdialer.EntryName = ms_entryname; //判断是否带用户名连接 if (ms_nc == null) { ms_rasdialer.Dial(); } else { ms_rasdialer.Dial(ms_nc); } } catch (Exception rde) { log.Error("ADSLManger: ConnectionThread", rde); } finally { lock (connectionlocker) { Monitor.Pulse(connectionlocker); } } }
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(); } }
/// <summary> /// 初始化PPPoE拨号器 /// </summary> /// <param name="connectName">连接名称</param> public static void Init(string connectName) { try { RasDialer dialer = new RasDialer(); RasPhoneBook phoneBook = new RasPhoneBook(); string path = RasPhoneBook.GetPhoneBookPath(RasPhoneBookType.User); phoneBook.Open(path); if (phoneBook.Entries.Contains(connectName)) { phoneBook.Entries[connectName].PhoneNumber = " "; phoneBook.Entries[connectName].Update(); } else { string adds = string.Empty; System.Collections.ObjectModel.ReadOnlyCollection <RasDevice> readOnlyCollection = RasDevice.GetDevices(); RasDevice device = RasDevice.GetDevices().First(o => o.DeviceType == RasDeviceType.PPPoE); RasEntry entry = RasEntry.CreateBroadbandEntry(connectName, device); entry.PhoneNumber = " "; phoneBook.Entries.Add(entry); } } catch (Exception e) { Utils.Log4Net.WriteLog(e.Message, e); } }
/// <summary> /// ADSL链接 /// </summary> /// <param name="strConnName">连接名称</param> public bool Connect() { try { // CreateOrUpdatePPPOE(strConnName); RasDialer dialer = new RasDialer(); dialer.EntryName = ConstParameter.EntryName; dialer.PhoneNumber = " "; dialer.AllowUseStoredCredentials = true; dialer.PhoneBookPath = RasPhoneBook.GetPhoneBookPath(RasPhoneBookType.AllUsers); dialer.Credentials = new NetworkCredential( CommonParameter.ConfigParam.adsl_info.username, CommonParameter.ConfigParam.adsl_info.password); dialer.Timeout = 1000; RasHandle myras = dialer.Dial(); if (!myras.IsInvalid) { CommonFunction.WriteLogInFile("RasDialer Success! ", LogType.RunLog); return(true); } } catch (Exception ex) { CommonFunction.WriteLogInFile("RasDialer error! error is :" + ex.ToString(), LogType.RunLog); } return(false); }
public static void Disconnect() { try { if (ms_rasdialer != null) { ms_rasdialer.Dispose(); } ms_rasdialer = new RasDialer(); ReadOnlyCollection <RasConnection> connections = ms_rasdialer.GetActiveConnections(); if (connections != null && connections.Count > 0) { foreach (RasConnection connection in connections) { if (ms_entryname == connection.EntryName) { connection.HangUp(); } } } ms_rasdialer.Dispose(); } catch (RasException re) { log.Error("ADSLManger: Disconnect", re); } }
/// <summary> /// Connect /// </summary> /// <param name="connection"></param> private void Connect(string connection) { try { CreatePPPOE(connection); var dialer = new RasDialer { EntryName = connection, PhoneNumber = " ", AllowUseStoredCredentials = true, PhoneBookPath = RasPhoneBook.GetPhoneBookPath(RasPhoneBookType.AllUsers), Credentials = new NetworkCredential("057111414695", "336875"), Timeout = 1000 }; var myras = dialer.Dial(); while (myras.IsInvalid) { Thread.Sleep(5000); myras = dialer.Dial(); } if (!myras.IsInvalid) { Console.WriteLine($"RasDialer Success! {DateTime.Now}"); } } catch (Exception ex) { throw new Exception($"RasDialer error! {DateTime.Now} connection error is :: {ex.ToString()}"); //Console.WriteLine($"RasDialer error! {DateTime.Now} connection error is :: {ex.ToString()}"); } }
public void CreateConnect(string ConnectName) { RasDialer dialer = new RasDialer(); RasPhoneBook book = new RasPhoneBook(); try { book.Open(RasPhoneBook.GetPhoneBookPath(RasPhoneBookType.User)); if (book.Entries.Contains(ConnectName)) { book.Entries[ConnectName].PhoneNumber = " "; book.Entries[ConnectName].Update(); } else { System.Collections.ObjectModel.ReadOnlyCollection <RasDevice> readOnlyCollection = RasDevice.GetDevices(); RasDevice device = RasDevice.GetDevices().Where(o => o.DeviceType == RasDeviceType.PPPoE).First(); RasEntry entry = RasEntry.CreateBroadbandEntry(ConnectName, device); entry.PhoneNumber = " "; book.Entries.Add(entry); } } catch (Exception) { lb_status.Content = "创建PPPoE连接失败"; } }
Boolean DialUp() { try { using (var phoneBook = new RasPhoneBook()) { var name = VpnConfig.GetConfig().ConnectionName; var user = VpnConfig.GetConfig().Username; var pass = VpnConfig.GetConfig().Password; var pbPath = VpnConfig.GetConfig().PhoneBookPath; phoneBook.Open(pbPath); var entry = phoneBook.Entries.FirstOrDefault(e => e.Name.Equals(name)); if (entry != null) { using (var dialer = new RasDialer()) { dialer.EntryName = name; dialer.Credentials = new NetworkCredential(user, pass); dialer.PhoneBookPath = pbPath; dialer.Dial(); } } else { throw new ArgumentException( message: "entry wasn't found: " + name, paramName: "entry" ); } } return(true); } catch { // log the exception return(false); } }
private void DialButton_Click(object sender, RoutedEventArgs e) { this.StatusTextBox.Clear(); this.dialer = new RasDialer(); this.dialer.DialCompleted += new EventHandler <DialCompletedEventArgs>(dialer_DialCompleted); this.dialer.StateChanged += new EventHandler <StateChangedEventArgs>(dialer_StateChanged); this.dialer.EntryName = (string)this.ConnectionComboBox.SelectedValue; this.dialer.PhoneBookPath = RasPhoneBook.GetPhoneBookPath(RasPhoneBookType.AllUsers); // This allows the multi-threaded dialer to update information on the user interface without causing any threading problems. this.dialer.SynchronizingObject = new DispatcherSynchronizingObject(App.Current.Dispatcher); try { // Set the credentials the dialer should use. this.dialer.Credentials = new System.Net.NetworkCredential("Test", "User"); this.handle = this.dialer.DialAsync(); // Disable the button used to initiate dialing while the operation is in progress. this.DialButton.IsEnabled = false; this.DisconnectButton.IsEnabled = true; } catch (Exception ex) { this.StatusTextBox.AppendText(ex.ToString()); this.StatusTextBox.ScrollToEnd(); } }
/// <summary> /// 测试拨号连接 /// </summary> public void Connect(string RasName) { try { if (OnHandle != null) { OnHandle(string.Format("正在拨号 {0}...", RasName)); } RasDialer dialer = new RasDialer(); dialer.EntryName = RasName; dialer.PhoneNumber = " "; dialer.AllowUseStoredCredentials = true; dialer.PhoneBookPath = RasPhoneBook.GetPhoneBookPath(RasPhoneBookType.AllUsers); dialer.Timeout = 1000; dialer.Dial(); Thread.Sleep(100); if (OnHandle != null) { OnHandle(string.Format("拨号完成")); } } catch (Exception ex) { LogHelper.WriteLog(LogLevel.LOG_LEVEL_CRIT, ex, typeof(ADSLDialerUtil)); throw; } }
/// <summary> /// 创建或更新一个VPN连接(指定VPN名称,及IP) /// </summary> public void CreateOrUpdateVPN(string updateVPNname, string updateVPNip) { Log.debug(TAG, "CreateOrUpdateVPN"); RasDialer dialer = new RasDialer(); RasPhoneBook allUsersPhoneBook = new RasPhoneBook(); allUsersPhoneBook.Open(); RasEntry entry = null; if (allUsersPhoneBook.Entries.Contains(updateVPNname)) { entry = allUsersPhoneBook.Entries[updateVPNname]; entry.EncryptionType = RasEncryptionType.Optional; entry.PhoneNumber = updateVPNip; IPAddress _ip; IPAddress.TryParse(updateVPNip, out _ip); entry.IPAddress = _ip; entry.Options.UsePreSharedKey = true; entry.UpdateCredentials(RasPreSharedKey.Client, "123456"); entry.Update(); } else { entry = RasEntry.CreateVpnEntry(updateVPNname, updateVPNip, RasVpnStrategy.L2tpOnly, RasDevice.GetDeviceByName("(L2TP)", RasDeviceType.Vpn)); entry.EncryptionType = RasEncryptionType.Optional; entry.Options.UsePreSharedKey = true; allUsersPhoneBook.Entries.Add(entry); entry.UpdateCredentials(RasPreSharedKey.Client, "123456"); } }
public async Task ThrowsAnExceptionWhenTheEventArgsIsNull() { var executed = false; var result = new Mock <RasConnection>(); var api = new Mock <IRasDial>(); api.Setup(o => o.DialAsync(It.IsAny <RasDialContext>())).Returns <RasDialContext>(c => { Assert.IsNotNull(c.OnStateChangedCallback); Assert.Throws <ArgumentNullException>(() => c.OnStateChangedCallback(null)); executed = true; return(Task.FromResult(result.Object)); }); var target = new RasDialer(api.Object) { EntryName = EntryName, PhoneBookPath = PhoneBookPath }; await target.ConnectAsync(); Assert.True(executed); }
/// <summary> /// 宽带连接,成功返回true,失败返回 false /// </summary> /// <param name="PPPOEname">宽带连接名称</param> /// <param name="username">宽带账号</param> /// <param name="password">宽带密码</param> /// <returns></returns> public bool Connect(string PPPOEname, string username, string password) { log.writeLog("正在进行本地拨号", log.msgType.info); try { CreateOrUpdatePPPOE(PPPOEname); log.writeLog("创建PPPOE接口完成", log.msgType.info); using (RasDialer dialer = new RasDialer()) { dialer.EntryName = PPPOEname; dialer.AllowUseStoredCredentials = true; dialer.Timeout = 1000; dialer.PhoneBookPath = RasPhoneBook.GetPhoneBookPath(RasPhoneBookType.AllUsers); dialer.Credentials = new NetworkCredential(username, password); dialer.Dial(); log.writeLog($"本地拨号成功,账号:{username}\n密码:{password}", log.msgType.error); return(true); } } catch (RasException re) { log.writeLog("本地拨号捕获到未知异常,拨号失败!", log.msgType.error); return(false); } }
/// <summary> /// 宽带连接,成功返回true,失败返回 false /// </summary> /// <param name="PPPOEname">宽带连接名称</param> /// <param name="username">宽带账号</param> /// <param name="password">宽带密码</param> /// <returns></returns> public static bool Connect(string PPPOEname, string username, string password, ref string msg, int delay = 10000) { try { CreateOrUpdatePPPOE(PPPOEname); using (RasDialer dialer = new RasDialer()) { dialer.EntryName = PPPOEname; dialer.AllowUseStoredCredentials = true; dialer.Timeout = 1000; dialer.PhoneBookPath = RasPhoneBook.GetPhoneBookPath(RasPhoneBookType.AllUsers); dialer.Credentials = new NetworkCredential(username, password); dialer.Dial(); return(true); } } catch (RasException re) { msg = re.ErrorCode + " " + re.Message; return(false); } finally { Thread.Sleep(delay); } }
public Program() { dialer = new RasDialer(); watcher = new RasConnectionWatcher(); watcher.Disconnected += OnConnectionDisconnected; }
/// <summary> /// 创建或更新一个PPPOE连接(指定PPPOE名称) /// </summary> static void CreateOrUpdatePPPOE(string updatePPPOEname) { RasDialer dialer = new RasDialer(); RasPhoneBook allUsersPhoneBook = new RasPhoneBook(); string path = RasPhoneBook.GetPhoneBookPath(RasPhoneBookType.AllUsers); allUsersPhoneBook.Open(path); // 如果已经该名称的PPPOE已经存在,则更新这个PPPOE服务器地址 if (allUsersPhoneBook.Entries.Contains(updatePPPOEname)) { allUsersPhoneBook.Entries[updatePPPOEname].PhoneNumber = " "; // 不管当前PPPOE是否连接,服务器地址的更新总能成功,如果正在连接,则需要PPPOE重启后才能起作用 allUsersPhoneBook.Entries[updatePPPOEname].Update(); } // 创建一个新PPPOE else { string adds = string.Empty; ReadOnlyCollection <RasDevice> readOnlyCollection = RasDevice.GetDevices(); RasDevice device = RasDevice.GetDevices().Where(o => o.DeviceType == RasDeviceType.PPPoE).First(); RasEntry entry = RasEntry.CreateBroadbandEntry(updatePPPOEname, device); //建立宽带连接Entry entry.PhoneNumber = " "; allUsersPhoneBook.Entries.Add(entry); } }
// Token: 0x06000096 RID: 150 RVA: 0x000060EC File Offset: 0x000042EC public RasHandle ConnectVPNbyPriority(RasDialer myDialer, RasPhoneBook myPB, string server, string sVPNPrefix, string sLogin, string sPass, string sPath) { int windowsVersion = this.GetWindowsVersion(); RasHandle result = null; if (windowsVersion == this.VER_XP || windowsVersion == this.VER_VISTA) { myPB = this.SetPhoneBookPPTP(server, myPB, sVPNPrefix); } else if (windowsVersion == this.VER_W7 || windowsVersion == this.VER_W8) { myPB = this.SetPhoneBookPPTP(server, myPB, sVPNPrefix); } myDialer.EntryName = sVPNPrefix; myDialer.PhoneBookPath = sPath; myDialer.AllowUseStoredCredentials = true; try { myDialer.Credentials = new NetworkCredential(sLogin, sPass); result = myDialer.DialAsync(); } catch (Exception ex) { } return(result); }
public void ConnectSynchronouslyWithoutACancellationToken() { var connection = new Mock <RasConnection>(); var api = new Mock <IRasDial>(); api.Setup(o => o.DialAsync(It.IsAny <RasDialContext>())).Returns <RasDialContext>(c => { Assert.AreEqual(CancellationToken.None, c.CancellationToken); return(Task.FromResult(connection.Object)); }).Verifiable(); var target = new RasDialer(api.Object) { EntryName = EntryName, PhoneBookPath = PhoneBookPath, Credentials = new NetworkCredential("TEST", "USER") }; var result = target.Connect(); Assert.IsNotNull(result); api.Verify(); }
public async Task RaisesTheEventFromTheOnStateChangedCallback() { var e = new StateChangedEventArgs(RasConnectionState.OpenPort); var result = new Mock <RasConnection>(); var api = new Mock <IRasDial>(); api.Setup(o => o.DialAsync(It.IsAny <RasDialContext>())).Returns <RasDialContext>(c => { Assert.IsNotNull(c.OnStateChangedCallback); c.OnStateChangedCallback(e); return(Task.FromResult(result.Object)); }); var raised = false; var target = new RasDialer(api.Object) { EntryName = EntryName, PhoneBookPath = PhoneBookPath }; target.StateChanged += (sender, args) => { Assert.AreEqual(e, args); raised = true; }; await target.ConnectAsync(); Assert.True(raised); }
/// <summary> /// 创建或更新一个PPPOE连接(指定PPPOE名称) /// </summary> public void CreateOrUpdatePPPOE(string updatePPPOEname) { RasDialer dialer = new RasDialer(); RasPhoneBook allUsersPhoneBook = new RasPhoneBook(); string path = RasPhoneBook.GetPhoneBookPath(RasPhoneBookType.AllUsers); allUsersPhoneBook.Open(path); // 如果已经该名称的PPPOE已经存在,则更新这个PPPOE服务器地址 if (allUsersPhoneBook.Entries.Contains(updatePPPOEname)) { allUsersPhoneBook.Entries[updatePPPOEname].PhoneNumber = " "; // 不管当前PPPOE是否连接,服务器地址的更新总能成功,如果正在连接,则需要PPPOE重启后才能起作用 allUsersPhoneBook.Entries[updatePPPOEname].Update(); } // 创建一个新PPPOE else { string adds = string.Empty; ReadOnlyCollection <RasDevice> readOnlyCollection = RasDevice.GetDevices(); // foreach (var col in readOnlyCollection) // { // adds += col.Name + ":" + col.DeviceType.ToString() + "|||"; // } // _log.Info("Devices are : " + adds); // Find the device that will be used to dial the connection. RasDevice device = RasDevice.GetDevices().Where(o => o.DeviceType == RasDeviceType.PPPoE).First(); RasEntry entry = RasEntry.CreateBroadbandEntry(updatePPPOEname, device); //建立宽带连接Entry entry.PhoneNumber = " "; allUsersPhoneBook.Entries.Add(entry); } }
public async Task BuildsTheContextCorrectly() { var cancellationToken = CancellationToken.None; var credentials = new NetworkCredential("USERNAME", "PASSWORD", "DOMAIN"); var result = new Mock <RasConnection>(); var api = new Mock <IRasDial>(); api.Setup(o => o.DialAsync(It.IsAny <RasDialContext>())).Returns <RasDialContext>(c => { Assert.AreEqual(cancellationToken, c.CancellationToken); Assert.AreEqual(credentials, c.Credentials); Assert.AreEqual(EntryName, c.EntryName); Assert.AreEqual(PhoneBookPath, c.PhoneBookPath); return(Task.FromResult(result.Object)); }); var target = new RasDialer(api.Object) { Credentials = credentials, EntryName = EntryName, PhoneBookPath = PhoneBookPath }; var connection = await target.ConnectAsync(cancellationToken); Assert.AreSame(result.Object, connection); }
/// <summary> /// 测试拨号连接 /// </summary> private string getNewPPPoe(string name = null) { try { if (name == null) { name = txtBox_pppoeName.Text.Trim(); name = string.IsNullOrEmpty(name) ? dic_pppoeName.First().Key : name; } RasDialer dialer = new RasDialer(); dialer.EntryName = name; dialer.PhoneNumber = " "; dialer.AllowUseStoredCredentials = true; dialer.PhoneBookPath = RasPhoneBook.GetPhoneBookPath(RasPhoneBookType.AllUsers); dialer.Timeout = 1000; dialer.Dial(); Thread.Sleep(100); return(LoadConnections()); } catch (Exception ex) { MessageBox.Show(ex.ToString()); } return(""); } /// <summary>
private bool disposedValue = false; // To detect redundant calls protected virtual void Dispose(bool disposing) { if (!disposedValue) { if (disposing) { // TODO: dispose managed state (managed objects). if (this._rasConnectionWatcher != null) { this._rasConnectionWatcher.Dispose(); this._rasConnectionWatcher = null; } if (this._rasPhoneBook != null) { this._rasPhoneBook.Dispose(); this._rasPhoneBook = null; } if (this._rasDialer != null) { this._rasDialer.Dispose(); this._rasDialer = null; } } // TODO: free unmanaged resources (unmanaged objects) and override a finalizer below. // TODO: set large fields to null. disposedValue = true; } }
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 = "拨号出现异常"; } }
/// <summary> /// 创建或更新一个VPN连接(指定VPN名称,及IP) /// </summary> public void CreateOrUpdateVPN(string updateVPNname, string updateVPNip) { RasDialer dialer = new RasDialer(); RasPhoneBook allUsersPhoneBook = new RasPhoneBook(); allUsersPhoneBook.Open(); // 如果已经该名称的VPN已经存在,则更新这个VPN服务器地址 if (allUsersPhoneBook.Entries.Contains(updateVPNname)) { allUsersPhoneBook.Entries[updateVPNname].PhoneNumber = updateVPNip; // 不管当前VPN是否连接,服务器地址的更新总能成功,如果正在连接,则需要VPN重启后才能起作用 allUsersPhoneBook.Entries[updateVPNname].Update(); } // 创建一个新VPN else { //RasEntry entry = RasEntry.CreateVpnEntry(updateVPNname, updateVPNip, RasVpnStrategy.PptpFirst, RasDevice.GetDeviceByName("(PPTP)", RasDeviceType.Vpn)); //allUsersPhoneBook.Entries.Add(entry); RasEntry entryL2TP = RasEntry.CreateVpnEntry(updateVPNname, updateVPNip, RasVpnStrategy.L2tpOnly, RasDevice.GetDeviceByName("(L2TP)", RasDeviceType.Vpn)); allUsersPhoneBook.Entries.Add(entryL2TP); dialer.EntryName = updateVPNname; dialer.PhoneBookPath = RasPhoneBook.GetPhoneBookPath(RasPhoneBookType.AllUsers); } }
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 = "拨号出现异常"; } }
/// <summary> /// Utility class for managing windows connections e.g. VPN or dial up connections. /// </summary> /// <param name="tag">Any object to be used as a state bag.</param> public RasConnectionManagerWindows(object tag) { _tag = tag; _rasDialer = new RasDialer(); _rasDialer.StateChanged += _rasDialer_StateChanged; _rasDialer.DialCompleted += _rasDialer_DialCompleted; _rasPhoneBook = new RasPhoneBook(); }
public void Open() { if (String.IsNullOrEmpty(connectionName)) { return; } lock (sync) { //если две нитки используют один RasHelper и одна уже получила ссылку if (connectionRef != Disposable.Empty) { return; } //если соединение есть и его открыли мы тогда берем ссылку if (connection != null && !connection.IsDisposed) { connectionRef = connection.GetDisposable(); return; } //если соединение открыли не мы, тогда выходим if (RasConnection.GetActiveConnections().Any(c => c.EntryName == connectionName)) { return; } string phonebookPath = null; foreach (var path in GetPhoneBooks()) { using (var book = new RasPhoneBook()) { book.Open(path); if (book.Entries.Any(e => e.Name.Match(connectionName))) { phonebookPath = book.Path; } } } if (phonebookPath == null) { log.Warn($"Не удалось найти соединение {connectionName}, удаленное соединение устанавливаться не будет"); return; } using (var dialer = new RasDialer()) { dialer.PhoneBookPath = phonebookPath; dialer.EntryName = connectionName; var handle = dialer.Dial(); var rasConnection = RasConnection.GetActiveConnections().FirstOrDefault(c => c.Handle == handle); connection = new RefCountDisposable(Disposable.Create(() => rasConnection?.HangUp())); connectionRef = connection.GetDisposable(); connection.Dispose(); } } }
public void DisposesTheApiAsExpected() { var api = new Mock <IRasDial>(); var target = new RasDialer(api.Object); target.Dispose(); api.Verify(o => o.Dispose(), Times.Once); }
public void IndicatesTheObjectIsNotBusyAsExpected() { var api = new Mock <IRasDial>(); api.Setup(o => o.IsBusy).Returns(false); var target = new RasDialer(api.Object); Assert.False(target.IsBusy); }
public static void ClassInitialize(TestContext context) { entryName = Guid.NewGuid().ToString(); phonebookPath = Path.GetTempFileName(); RasPhoneBook pbk = new RasPhoneBook(); pbk.Open(phonebookPath); entryId = TestUtilities.CreateValidVpnEntry(pbk, entryName); using (RasDialer dialer = new RasDialer()) { dialer.EntryName = entryName; dialer.PhoneBookPath = phonebookPath; dialer.Credentials = TestUtilities.GetValidCredentials(); handle = dialer.Dial(); } target = RasConnection.GetActiveConnectionById(entryId); }