public static void ApplySettings(TLProxyConfigBase proxyConfigBase, bool isEnabled, TLProxyBase proxy) { var proxyConfig = proxyConfigBase ?? TLProxyConfigBase.Empty; var proxyConfig76 = proxyConfig as TLProxyConfig76; if (proxyConfig76 == null) { return; } proxyConfig.IsEnabled = new TLBool(isEnabled); var added = false; for (var i = 0; i < proxyConfig76.Items.Count; i++) { var proxyItem = proxyConfig76.Items[i]; if (TLProxyBase.ProxyEquals(proxyItem, proxy)) { proxyConfig76.SelectedIndex = new TLInt(i); added = true; break; } } if (!added) { proxyConfig76.Items.Insert(0, proxy); proxyConfig76.SelectedIndex = new TLInt(0); } SetReconnect(true, proxyConfig76, proxy); }
private void UpdateProxySubtitle(TLProxyConfigBase proxyConfig) { var proxy = proxyConfig != null && proxyConfig.IsEnabled.Value && !proxyConfig.IsEmpty ? proxyConfig.GetProxy() : null; ProxySubtitle = proxy == null ? AppResources.Disabled : (proxy is TLSocks5Proxy ? AppResources.Socks5 : AppResources.MTProto); }
public HttpTransport(string address, MTProtoTransportType mtProtoType, TLProxyConfigBase proxyConfig) { var host = string.IsNullOrEmpty(address) ? Constants.FirstServerIpAddress : address; _host = string.Format("http://{0}:80/api", host); MTProtoType = mtProtoType; ProxyConfig = proxyConfig; MessageIdDict = new Dictionary <long, long>(); }
public TLProxyConfigBase GetProxyConfig() { if (_proxyConfig != null) { return(_proxyConfig); } _proxyConfig = TLUtils.OpenObjectFromMTProtoFile <TLProxyConfigBase>(_proxyConfigSyncRoot, Constants.ProxyConfigFileName) ?? TLProxyConfigBase.Empty; _proxyConfig = _proxyConfig.ToLastProxyConfig(); return(_proxyConfig); }
protected TcpTransportBase(string host, int port, string staticHost, int staticPort, MTProtoTransportType mtProtoType, TLProxyConfigBase proxyConfig) { MessageIdDict = new Dictionary <long, long>(); Host = host; Port = port; StaticHost = staticHost; StaticPort = staticPort; MTProtoType = mtProtoType; ProxyConfig = proxyConfig; var random = new Random(); Id = random.Next(0, 255); _timer = new Timer(OnTimerTick, _timer, Timeout.Infinite, Timeout.Infinite); }
public void SetProxyConfig(TLProxyConfigBase proxyConfig) { _proxyConfig = proxyConfig; TLUtils.SaveObjectToMTProtoFile(_proxyConfigSyncRoot, Constants.ProxyConfigFileName, _proxyConfig); }
public ProxyChangedEventArgs(TLProxyConfigBase proxyConfig) { ProxyConfig = proxyConfig; }
public TcpTransport(string host, int port, string staticHost, int staticPort, MTProtoTransportType mtProtoType, TLProxyConfigBase proxyConfig) : base(host, port, staticHost, staticPort, mtProtoType, proxyConfig) { // ipv6 support _address = proxyConfig != null && !proxyConfig.IsEmpty ? IPAddress.Parse(staticHost) : IPAddress.Parse(host); _socket = new Socket(_address.AddressFamily, SocketType.Stream, ProtocolType.Tcp); _buffer = new byte[BufferSize]; _listener.SetBuffer(_buffer, 0, _buffer.Length); _listener.Completed += OnReceived; }
private static void SetReconnect(bool reconnect, TLProxyConfigBase proxyConfig, TLProxyBase proxy) { Telegram.Api.Helpers.Execute.ShowDebugMessage(string.Format("SetRecconect recconect={0} proxyConfig={1}", reconnect, proxyConfig)); if (proxyConfig == null) { return; } Set(proxyConfig); var transportService = IoC.Get <ITransportService>(); var mtProtoService = IoC.Get <IMTProtoService>(); var cacheService = IoC.Get <ICacheService>(); var eventAggregator = IoC.Get <ITelegramEventAggregator>(); if (reconnect) { var promoDialogs = cacheService.GetDialogs().OfType <TLDialog71>().Where(x => x.IsPromo).ToList(); foreach (var dialog in promoDialogs) { cacheService.UpdateDialogPromo(dialog, false); } cacheService.SyncProxyData(null, result => { }); transportService.Close(); mtProtoService.PingAsync(TLLong.Random(), result => Telegram.Api.Helpers.Execute.BeginOnUIThread(() => { if (proxy != null) { var now = TLUtils.DateToUniversalTimeTLInt(mtProtoService.ClientTicksDelta, DateTime.Now); proxy.CheckTime = now; proxy.Status = ProxyStatus.Available; proxy.Ping = mtProtoService.GetActiveTransport().Ping > 0 ? new TLInt((int)mtProtoService.GetActiveTransport().Ping) : null; Set(proxyConfig); } var isAuthorized = SettingsHelper.GetValue <bool>(Constants.IsAuthorizedKey); if (isAuthorized) { mtProtoService.GetProxyDataAsync( result2 => { var proxyDataPromo = result2 as TLProxyDataPromo; if (proxyDataPromo != null) { mtProtoService.GetPromoDialogAsync(mtProtoService.PeerToInputPeer(proxyDataPromo.Peer), result3 => { if (result3.Dialogs.Count > 0) { eventAggregator.Publish(new ProxyDataChangedEventArgs(proxyDataPromo)); } }); } else { } Telegram.Api.Helpers.Execute.ShowDebugMessage(result2.ToString()); }); } })); } eventAggregator.Publish(new ProxyChangedEventArgs(proxyConfig)); }
private static void Set(TLProxyConfigBase proxyConfig) { var transportService = IoC.Get <ITransportService>(); transportService.SetProxyConfig(proxyConfig); }
public NativeTcpTransport(string host, int port, string staticHost, int staticPort, MTProtoTransportType mtProtoType, short protocolDCId, byte[] protocolSecret, TLProxyConfigBase proxyConfig) : base(host, port, staticHost, staticPort, mtProtoType, proxyConfig) { // System.Diagnostics.Debug.WriteLine( // " [NativeTcpTransport] .ctor begin host={0} port={1} static_host={2} static_port={3} type={4} protocol_dcid={5} protocol_secret={6} proxy={7}", // host, port, staticHost, staticPort, mtProtoType, protocolDCId, protocolSecret, proxyConfig); ActualHost = host; ActualPort = port; var ipv4 = true; ProxySettings proxySettings = null; if (proxyConfig != null && proxyConfig.IsEnabled.Value && !proxyConfig.IsEmpty) { var socks5Proxy = proxyConfig.GetProxy() as TLSocks5Proxy; if (socks5Proxy != null) { try { ipv4 = new HostName(socks5Proxy.Server.ToString()).Type == HostNameType.Ipv4; } catch (Exception ex) { } proxySettings = new ProxySettings { Type = ProxyType.Socks5, Host = socks5Proxy.Server.ToString(), Port = socks5Proxy.Port.Value, Username = socks5Proxy.Username.ToString(), Password = socks5Proxy.Password.ToString(), IPv4 = ipv4 }; ActualHost = staticHost; ActualPort = staticPort; protocolSecret = null; protocolDCId = protocolDCId; } var mtProtoProxy = proxyConfig.GetProxy() as TLMTProtoProxy; if (mtProtoProxy != null) { try { ipv4 = new HostName(mtProtoProxy.Server.ToString()).Type == HostNameType.Ipv4; } catch (Exception ex) { } proxySettings = new ProxySettings { Type = ProxyType.MTProto, Host = mtProtoProxy.Server.ToString(), Port = mtProtoProxy.Port.Value, Secret = TLUtils.ParseSecret(mtProtoProxy.Secret), IPv4 = ipv4 }; ActualHost = staticHost; ActualPort = staticPort; } } try { ipv4 = new HostName(ActualHost).Type == HostNameType.Ipv4; } catch (Exception ex) { } var connectionSettings = new ConnectionSettings { Host = ActualHost, Port = ActualPort, IPv4 = ipv4, ProtocolDCId = protocolDCId, ProtocolSecret = protocolSecret }; _proxySettings = proxySettings; // var proxyString = proxySettings == null // ? "null" // : string.Format("[host={0} port={1} ipv4={2} type={3} secret={4} username={5} password={6}]", // proxySettings.Host, // proxySettings.Port, // proxySettings.IPv4, // proxySettings.Type, // proxySettings.Secret, // proxySettings.Username, // proxySettings.Password); // System.Diagnostics.Debug.WriteLine( // " [NativeTcpTransport] .ctor end host={0} port={1} ipv4={2} protocol_dcid={3} protocol_secret={4} proxy={5}", // connectionSettings.Host, connectionSettings.Port, connectionSettings.IPv4, connectionSettings.ProtocolDCId, connectionSettings.ProtocolSecret, proxyString); _wrapper = new ConnectionSocketWrapper(connectionSettings, proxySettings); _wrapper.Closed += Wrapper_OnClosed; _wrapper.PacketReceived += Wrapper_OnPacketReceived; }
public TcpTransportWinRT(string host, int port, string staticHost, int staticPort, MTProtoTransportType mtProtoType, TLProxyConfigBase proxyConfig) : base(host, port, staticHost, staticPort, mtProtoType, proxyConfig) { _timeout = 25.0; _socket = new StreamSocket(); var control = _socket.Control; control.QualityOfService = SocketQualityOfService.LowLatency; _dataReader = new DataReader(_socket.InputStream) { InputStreamOptions = InputStreamOptions.Partial }; _dataWriter = new DataWriter(_socket.OutputStream); }