// TODO: look at this // private DccChat chat; public override void Init() { nntp = new NntpConnection(); interval = new Timer(30000); interval.Elapsed += IntervalElapsed; filterGroups = NntpSettings.Default.FilteredGroups.Split(',').ToList(); filterWords = NntpSettings.Default.FilteredWords.Split(',').ToList(); base.Init(); }
public async void StartAccepting() { // Establish the local endpoint for the socket. var localEndPoint = new IPEndPoint(IPAddress.Any, ((IPEndPoint)this.LocalEndpoint).Port); // Create a TCP/IP socket. var listener = new NntpListener(this.server, localEndPoint); // Bind the socket to the local endpoint and listen for incoming connections. try { listener.Start(100); while (true) { // Start an asynchronous socket to listen for connections. var handler = await listener.AcceptTcpClientAsync(); // Create the state object. NntpConnection nntpConnection; if (this.PortType == PortClass.ClearText || this.PortType == PortClass.ExplicitTLS) { var stream = handler.GetStream(); nntpConnection = new NntpConnection(this.server, handler, stream); } else { var stream = handler.GetStream(); var sslStream = new SslStream(stream); try { await sslStream.AuthenticateAsServerAsync(this.server.ServerAuthenticationCertificate); } catch (IOException ioe) { _Logger.Error("I/O Exception attempting to perform TLS handshake", ioe); return; } nntpConnection = new NntpConnection(this.server, handler, sslStream, true); } this.server.AddConnection(nntpConnection); nntpConnection.Process(); } } catch (Exception ex) { _Logger.Error("Exception when trying to accept connection from listener", ex); } }
internal void RemoveConnection([NotNull] NntpConnection nntpConnection) { this.connections.Remove(nntpConnection); if (nntpConnection.Identity == null) { Logger.VerboseFormat("Disconnection from {0}:{1}", nntpConnection.RemoteAddress, nntpConnection.RemotePort, nntpConnection.LocalAddress, nntpConnection.LocalPort); } else { Logger.VerboseFormat("Disconnection from {0}:{1} ({2})", nntpConnection.RemoteAddress, nntpConnection.RemotePort, nntpConnection.LocalAddress, nntpConnection.LocalPort, nntpConnection.Identity.Username); } }
public static void Main() { var connection = new NntpConnection(); var resp = connection.Connect("USENET HOST", 563, true); var resp1 = connection.AuthInfoUser("USERNAME"); var resp2 = connection.AuthInfoPass("PASSWORD"); var resp3 = connection.Group("NEWSGROUP"); var overResponse = connection.Over(Range.From(1).To(10)); }
internal void AddConnection([NotNull] NntpConnection nntpConnection) { this.connections.Add(nntpConnection); Logger.VerboseFormat("Connection from {0}:{1} to {2}:{3}", nntpConnection.RemoteAddress, nntpConnection.RemotePort, nntpConnection.LocalAddress, nntpConnection.LocalPort); }