Adding some smtp/pop3 options. Adding SSL sockets
This commit is contained in:
parent
f482a4bc4c
commit
7694a54a15
|
@ -734,11 +734,15 @@ if __name__ == "__main__":
|
||||||
singleCleanerThread.daemon = True # close the main program even if there are threads left
|
singleCleanerThread.daemon = True # close the main program even if there are threads left
|
||||||
singleCleanerThread.start()
|
singleCleanerThread.start()
|
||||||
|
|
||||||
# Start the SMTP server
|
# Start the SMTP and POP3 server if necessary
|
||||||
|
smtpServer = None
|
||||||
|
pop3Server = None
|
||||||
|
try:
|
||||||
|
if shared.config.get('bitmessagesettings', 'smtppop3enable') == 'true':
|
||||||
smtpServer = bitmessageSMTPServer()
|
smtpServer = bitmessageSMTPServer()
|
||||||
|
|
||||||
# And the POP3 server...
|
|
||||||
pop3Server = bitmessagePOP3Server(debug=True)
|
pop3Server = bitmessagePOP3Server(debug=True)
|
||||||
|
except:
|
||||||
|
pass
|
||||||
|
|
||||||
# And finally launch asyncore
|
# And finally launch asyncore
|
||||||
asyncoreThread = asyncoreThread()
|
asyncoreThread = asyncoreThread()
|
||||||
|
|
|
@ -2,6 +2,7 @@ from collections import deque
|
||||||
import asyncore
|
import asyncore
|
||||||
import shared
|
import shared
|
||||||
import socket
|
import socket
|
||||||
|
import ssl
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
from addresses import *
|
from addresses import *
|
||||||
|
@ -227,6 +228,12 @@ class bitmessagePOP3Server(asyncore.dispatcher):
|
||||||
self.debug = debug
|
self.debug = debug
|
||||||
|
|
||||||
pop3port = shared.config.getint('bitmessagesettings', 'pop3port')
|
pop3port = shared.config.getint('bitmessagesettings', 'pop3port')
|
||||||
|
|
||||||
|
self.ssl = shared.config.getboolean('bitmessagesettings', 'pop3ssl')
|
||||||
|
if self.ssl:
|
||||||
|
self.keyfile = shared.config.get('bitmessagesettings', 'keyfile')
|
||||||
|
self.certfile = shared.config.get('bitmessagesettings', 'certfile')
|
||||||
|
|
||||||
self.create_socket(socket.AF_INET, socket.SOCK_STREAM)
|
self.create_socket(socket.AF_INET, socket.SOCK_STREAM)
|
||||||
self.bind(('127.0.0.1', pop3port))
|
self.bind(('127.0.0.1', pop3port))
|
||||||
self.listen(10)
|
self.listen(10)
|
||||||
|
@ -237,6 +244,8 @@ class bitmessagePOP3Server(asyncore.dispatcher):
|
||||||
|
|
||||||
def handle_accept(self):
|
def handle_accept(self):
|
||||||
sock, peer_address = self.accept()
|
sock, peer_address = self.accept()
|
||||||
|
if self.ssl:
|
||||||
|
sock = ssl.wrap_socket(sock, server_side=True, certfile=self.certfile, keyfile=self.keyfile, ssl_version=ssl.PROTOCOL_SSLv23)
|
||||||
_ = bitmessagePOP3Connection(sock, peer_address, debug=self.debug)
|
_ = bitmessagePOP3Connection(sock, peer_address, debug=self.debug)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
from pyelliptic.openssl import OpenSSL
|
from pyelliptic.openssl import OpenSSL
|
||||||
import shared
|
import shared
|
||||||
import smtpd
|
import smtpd
|
||||||
|
import ssl
|
||||||
import time
|
import time
|
||||||
|
|
||||||
from addresses import *
|
from addresses import *
|
||||||
|
@ -10,12 +11,26 @@ class bitmessageSMTPServer(smtpd.SMTPServer):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
# TODO - move to separate file/class
|
# TODO - move to separate file/class
|
||||||
smtpport = shared.config.getint('bitmessagesettings', 'smtpport')
|
smtpport = shared.config.getint('bitmessagesettings', 'smtpport')
|
||||||
smtpd.SMTPServer.__init__(self, ('127.0.0.1', smtpport), None)
|
|
||||||
|
|
||||||
|
self.ssl = shared.config.getboolean('bitmessagesettings', 'smtpssl')
|
||||||
|
if self.ssl:
|
||||||
|
self.keyfile = shared.config.get('bitmessagesettings', 'keyfile')
|
||||||
|
self.certfile = shared.config.get('bitmessagesettings', 'certfile')
|
||||||
|
|
||||||
|
smtpd.SMTPServer.__init__(self, ('127.0.0.1', smtpport), None)
|
||||||
shared.printLock.acquire()
|
shared.printLock.acquire()
|
||||||
print "SMTP server started"
|
print "SMTP server started"
|
||||||
shared.printLock.release()
|
shared.printLock.release()
|
||||||
|
|
||||||
|
def handle_accept(self):
|
||||||
|
# Override SMTPServer's handle_accept so that we can start an SSL connection.
|
||||||
|
if not self.ssl:
|
||||||
|
return smtpd.SMTPServer.handle_accept(self)
|
||||||
|
|
||||||
|
sock, peer_address = self.accept()
|
||||||
|
sock = ssl.wrap_socket(sock, server_side=True, certfile=self.certfile, keyfile=self.keyfile, ssl_version=ssl.PROTOCOL_SSLv23)
|
||||||
|
channel = smtpd.SMTPChannel(self, sock, peer_address)
|
||||||
|
|
||||||
def process_message(self, peer, mailfrom, rcpttos, data):
|
def process_message(self, peer, mailfrom, rcpttos, data):
|
||||||
#print("Peer", peer)
|
#print("Peer", peer)
|
||||||
#print("Mail From", mailfrom)
|
#print("Mail From", mailfrom)
|
||||||
|
|
|
@ -28,8 +28,11 @@ def loadConfig():
|
||||||
shared.config.add_section('bitmessagesettings')
|
shared.config.add_section('bitmessagesettings')
|
||||||
shared.config.set('bitmessagesettings', 'settingsversion', '6')
|
shared.config.set('bitmessagesettings', 'settingsversion', '6')
|
||||||
shared.config.set('bitmessagesettings', 'port', '8444')
|
shared.config.set('bitmessagesettings', 'port', '8444')
|
||||||
|
shared.config.set('bitmessagesettings', 'smtppop3enable', 'false')
|
||||||
shared.config.set('bitmessagesettings', 'smtpport', '10025')
|
shared.config.set('bitmessagesettings', 'smtpport', '10025')
|
||||||
|
shared.config.set('bitmessagesettings', 'smtpssl', 'false')
|
||||||
shared.config.set('bitmessagesettings', 'pop3port', '10110')
|
shared.config.set('bitmessagesettings', 'pop3port', '10110')
|
||||||
|
shared.config.set('bitmessagesettings', 'pop3ssl', 'false')
|
||||||
shared.config.set(
|
shared.config.set(
|
||||||
'bitmessagesettings', 'timeformat', '%%a, %%d %%b %%Y %%I:%%M %%p')
|
'bitmessagesettings', 'timeformat', '%%a, %%d %%b %%Y %%I:%%M %%p')
|
||||||
shared.config.set('bitmessagesettings', 'blackwhitelist', 'black')
|
shared.config.set('bitmessagesettings', 'blackwhitelist', 'black')
|
||||||
|
|
Reference in New Issue
Block a user