public ProtocolChatView(ChatModel chat) : base(chat) { Trace.Call(chat); ProxySettings = new ProxySettings(); Add(OutputScrolledWindow); ReconnectItem = new Gtk.ImageMenuItem(_("Reconnect")); ReconnectItem.Image = new Gtk.Image(Gtk.Stock.Refresh, Gtk.IconSize.Menu); ReconnectItem.Activated += new EventHandler(OnTabMenuReconnectActivated); ShowAll(); }
private void ApplyConfig(UserConfig config, XmppServerModel server) { if (server.Username.Contains("@")) { var jid_user = server.Username.Split('@')[0]; var jid_host = server.Username.Split('@')[1]; JabberClient.NetworkHost = server.Hostname; JabberClient.User = jid_user; JabberClient.Server = jid_host; } else { JabberClient.Server = server.Hostname; JabberClient.User = server.Username; } JabberClient.Port = server.Port; JabberClient.Password = server.Password; Me = CreatePerson( String.Format("{0}@{1}", JabberClient.User, JabberClient.Server ), JabberClient.User ); Me.IdentityNameColored.ForegroundColor = new TextColor(0, 0, 255); Me.IdentityNameColored.BackgroundColor = TextColor.None; Me.IdentityNameColored.Bold = true; // XMPP specific settings JabberClient.Resource = server.Resource; JabberClient.OnInvalidCertificate -= ValidateCertificate; JabberClient.AutoStartTLS = server.UseEncryption; if (!server.ValidateServerCertificate) { JabberClient.OnInvalidCertificate += ValidateCertificate; } var proxySettings = new ProxySettings(); proxySettings.ApplyConfig(Session.UserConfig); var protocol = server.UseEncryption ? "xmpps" : "xmpp"; var serverUri = String.Format("{0}://{1}:{2}", protocol, server.Hostname, server.Port); var proxy = proxySettings.GetWebProxy(serverUri); if (proxy == null) { JabberClient.Proxy = XmppProxyType.None; } else { var proxyScheme = proxy.Address.Scheme; var xmppProxyType = XmppProxyType.None; try { // HACK: map proxy scheme to SmartIrc4net's ProxyType xmppProxyType = (XmppProxyType) Enum.Parse( typeof(XmppProxyType), proxyScheme, true ); } catch (ArgumentException ex) { #if LOG4NET _Logger.Error("ApplyConfig(): Couldn't parse proxy type: " + proxyScheme, ex); #endif } JabberClient.Proxy = xmppProxyType; JabberClient.ProxyHost = proxy.Address.Host; JabberClient.ProxyPort = proxy.Address.Port; JabberClient.ProxyUsername = proxySettings.ProxyUsername; JabberClient.ProxyPassword = proxySettings.ProxyPassword; } }
void ApplyConfig(UserConfig config, XmppServerModel server) { if (String.IsNullOrEmpty(server.Nickname)) { Nicknames = (string[]) config["Connection/Nicknames"]; } else { Nicknames = new string[] { server.Nickname }; } if (server.Username.Contains("@")) { var jid_user = server.Username.Split('@')[0]; var jid_host = server.Username.Split('@')[1]; JabberClient.ConnectServer = server.Hostname; JabberClient.AutoResolveConnectServer = false; JabberClient.Username = jid_user; JabberClient.Server = jid_host; } else { JabberClient.Server = server.Hostname; JabberClient.Username = server.Username; } JabberClient.Port = server.Port; JabberClient.Password = server.Password; var proxySettings = new ProxySettings(); proxySettings.ApplyConfig(config); var protocol = Server.UseEncryption ? "xmpps" : "xmpp"; var serverUri = String.Format("{0}://{1}:{2}", protocol, Server.Hostname, Server.Port); var proxy = proxySettings.GetWebProxy(serverUri); var socket = JabberClient.ClientSocket as ClientSocket; if (proxy == null) { socket.Proxy = null; } else { var builder = CreateMessageBuilder(); builder.AppendEventPrefix(); builder.AppendText(_("Using proxy: {0}:{1}"), proxy.Address.Host, proxy.Address.Port); Session.AddMessageToChat(Chat, builder.ToMessage()); var proxyScheme = proxy.Address.Scheme; var proxyType = Starksoft.Net.Proxy.ProxyType.None; try { proxyType = (Starksoft.Net.Proxy.ProxyType) Enum.Parse( typeof(Starksoft.Net.Proxy.ProxyType), proxy.Address.Scheme, true ); } catch (ArgumentException ex) { #if LOG4NET _Logger.Error("ApplyConfig(): Couldn't parse proxy type: " + proxyScheme, ex); #endif } var proxyFactory = new ProxyClientFactory(); if (String.IsNullOrEmpty(proxySettings.ProxyUsername) && String.IsNullOrEmpty(proxySettings.ProxyPassword)) { socket.Proxy = proxyFactory.CreateProxyClient( proxyType, proxy.Address.Host, proxy.Address.Port ); } else { socket.Proxy = proxyFactory.CreateProxyClient( proxyType, proxy.Address.Host, proxy.Address.Port, proxySettings.ProxyUsername, proxySettings.ProxyPassword ); } } Me = new PersonModel( JabberClient.MyJID.Bare, Nicknames[0], NetworkID, Protocol, this ); Me.IdentityNameColored.ForegroundColor = new TextColor(0, 0, 255); Me.IdentityNameColored.BackgroundColor = TextColor.None; Me.IdentityNameColored.Bold = true; // XMPP specific settings JabberClient.Resource = server.Resource; if (server.UseEncryption) { // HACK: Google Talk doesn't support StartTLS :( if (server.Hostname == "talk.google.com" && server.Port == 5223) { JabberClient.ForceStartTls = false; JabberClient.UseSSL = true; } else { JabberClient.ForceStartTls = true; } } else { JabberClient.ForceStartTls = false; JabberClient.UseStartTLS = true; } if (!server.ValidateServerCertificate) { JabberClient.ClientSocket.OnValidateCertificate += ValidateCertificate; } }
private void ApplyConfig(UserConfig config, ServerModel server) { _Host = server.Hostname; _Port = server.Port; if (String.IsNullOrEmpty(server.Network)) { _Network = server.Hostname; } else { _Network = server.Network; } if (String.IsNullOrEmpty(server.Username)) { _Username = (string) config["Connection/Username"]; } else { _Username = server.Username; } _Password = server.Password; // internal fallbacks if (String.IsNullOrEmpty(_Username)) { _Username = "******"; } // IRC specific settings if (server is IrcServerModel) { var ircServer = (IrcServerModel) server; if (ircServer.Nicknames != null && ircServer.Nicknames.Count > 0) { _Nicknames = ircServer.Nicknames.ToArray(); } } // global fallbacks if (_Nicknames == null) { _Nicknames = (string[]) config["Connection/Nicknames"]; } string encodingName = (string) config["Connection/Encoding"]; if (String.IsNullOrEmpty(encodingName)) { _IrcClient.Encoding = Encoding.Default; } else { try { _IrcClient.Encoding = Encoding.GetEncoding(encodingName); } catch (Exception ex) { #if LOG4NET _Logger.Warn("ApplyConfig(): Error getting encoding for: " + encodingName + " falling back to system encoding.", ex); #endif _IrcClient.Encoding = Encoding.Default; } } var proxySettings = new ProxySettings(); proxySettings.ApplyConfig(config); var protocol = server.UseEncryption ? "ircs" : "irc"; var serverUri = String.Format("{0}://{1}:{2}", protocol, server.Hostname, server.Port); var proxy = proxySettings.GetWebProxy(serverUri); if (proxy == null) { _IrcClient.ProxyType = IrcProxyType.None; } else { var proxyScheme = proxy.Address.Scheme; var ircProxyType = IrcProxyType.None; try { // HACK: map proxy scheme to SmartIrc4net's ProxyType ircProxyType = (IrcProxyType) Enum.Parse( typeof(IrcProxyType), proxyScheme, true ); } catch (ArgumentException ex) { #if LOG4NET _Logger.Error("ApplyConfig(): Couldn't parse proxy type: " + proxyScheme, ex); #endif } _IrcClient.ProxyType = ircProxyType; _IrcClient.ProxyHost = proxy.Address.Host; _IrcClient.ProxyPort = proxy.Address.Port; if (!String.IsNullOrEmpty(proxySettings.ProxyUsername)) { _IrcClient.ProxyUsername = proxySettings.ProxyUsername; } if (!String.IsNullOrEmpty(proxySettings.ProxyPassword)) { _IrcClient.ProxyPassword = proxySettings.ProxyPassword; } } if (server != null) { _IrcClient.UseSsl = server.UseEncryption; _IrcClient.ValidateServerCertificate = server.ValidateServerCertificate; } }
public ProtocolChatView(ChatModel chat) : base(chat) { Trace.Call(chat); ProxySettings = new ProxySettings(); Add(OutputScrolledWindow); ShowAll(); }