summaryrefslogtreecommitdiff
path: root/addons/document/ftpserver
diff options
context:
space:
mode:
Diffstat (limited to 'addons/document/ftpserver')
-rw-r--r--addons/document/ftpserver/__init__.py42
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:
+