diff options
Diffstat (limited to 'addons/document/ftpserver/__init__.py')
| -rw-r--r-- | addons/document/ftpserver/__init__.py | 42 |
1 files changed, 6 insertions, 36 deletions
diff --git a/addons/document/ftpserver/__init__.py b/addons/document/ftpserver/__init__.py index 759a4e923f6..47615a442a6 100644 --- a/addons/document/ftpserver/__init__.py +++ b/addons/document/ftpserver/__init__.py @@ -26,6 +26,7 @@ import abstracted_fs import netsvc from tools import config +from tools.misc import detect_ip_addr HOST = '' PORT = int(config.get('ftp_server_port', 8021)) PASSIVE_PORTS = None @@ -38,41 +39,6 @@ class ftp_server(threading.Thread): logger = netsvc.Logger() logger.notifyChannel('FTP', level, message) - def detect_ip_addr(self): - def _detect_ip_addr(): - from array import array - import socket - from struct import pack, unpack - - try: - import fcntl - except ImportError: - fcntl = None - - if not fcntl: # not UNIX: - hostname = socket.gethostname() - ip_addr = socket.gethostbyname(hostname) - else: # UNIX: - # get all interfaces: - nbytes = 128 * 32 - s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) - names = array('B', '\0' * nbytes) - outbytes = unpack('iL', fcntl.ioctl( s.fileno(), 0x8912, pack('iL', nbytes, names.buffer_info()[0])))[0] - namestr = names.tostring() - ifaces = [namestr[i:i+32].split('\0', 1)[0] for i in range(0, outbytes, 32)] - - for ifname in [iface for iface in ifaces if iface != 'lo']: - ip_addr = socket.inet_ntoa(fcntl.ioctl(s.fileno(), 0x8915, pack('256s', ifname[:15]))[20:24]) - break - return ip_addr - - try: - ip_addr = _detect_ip_addr() - except: - ip_addr = '' - return ip_addr - - def run(self): autho = authorizer.authorizer() ftpserver.FTPHandler.authorizer = autho @@ -86,11 +52,15 @@ class ftp_server(threading.Thread): ftpserver.logline = lambda msg: None ftpserver.logerror = lambda msg: self.log(netsvc.LOG_ERROR, msg) - HOST = self.detect_ip_addr() + HOST = config.get('ftp_server_address', detect_ip_addr()) + PORT = int(config.get('ftp_server_port', '8021')) + address = (HOST, PORT) ftpd = ftpserver.FTPServer(address, ftpserver.FTPHandler) ftpd.serve_forever() + ds = ftp_server() ds.start() # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: + |
