gateway: Improve check_ftp function

pull/92/head
remittor 6 months ago
parent c1537c418f
commit 1646c8a380

@ -726,7 +726,7 @@ class Gateway():
self.passw = passw
ftp_en = self.check_tcp_connect(self.ip_addr, 21, contimeout = 1)
if ftp_en:
if self.check_ftp() == 0:
if self.check_ftp(check_upload = True) == 0:
self.use_ftp = True
return 23
@ -831,7 +831,7 @@ class Gateway():
die("Can't login to TELNET (IP: {})".format(self.ip_addr))
return None
def check_ftp(self, timeout = None):
def check_ftp(self, check_upload = False, timeout = None):
ret = -1
if not timeout:
timeout = self.timeout
@ -839,12 +839,22 @@ class Gateway():
try:
ftp = ftplib.FTP(self.ip_addr, user=self.login, passwd=self.passw, timeout=timeout)
ftp.voidcmd("NOOP")
if check_upload:
import io
fp = io.BytesIO(b"HELLO_123")
remote_fn = '/tmp/_test_payload.bin'
ftp.storbinary(f'STOR {remote_fn}', fp)
ftp.delete(remote_fn)
ret = 0
except ftplib.error_perm as e:
ret = -3
if '500 Unknown command' in str(e):
ret = -11
except ftplib.error_proto as e:
ret = -2
if 'unrecognized option: w' in str(e):
ret = -10
except Exception:
except Exception as e:
ret = -1
finally:
if ftp:
@ -1099,7 +1109,7 @@ stop() {
self.run_cmd(r'/etc/init.d/inetd enable')
self.run_cmd(r'/etc/init.d/inetd restart')
ftp_en = self.check_ftp(timeout = 5)
if ftp_en == -10:
if ftp_en <= -10:
print(f'WARNING: FTP server is running, but upload mode is blocked!')
elif ftp_en != 0:
print(f"WARNING: FTP server not responding (IP: {self.ip_addr})")
@ -1136,7 +1146,11 @@ def create_gateway(timeout = 4, die_if_sshOk = True, die_if_ftpOk = True, web_lo
if ret == 23:
if gw.use_ftp and die_if_ftpOk:
die("Telnet and FTP servers already running!")
print("Telnet server already running, but FTP server not respond")
ftp_err = gw.check_ftp(check_upload = True)
if ftp_err <= -10:
print("Telnet server already running, but upload mode on FTP server is blocked")
else:
print("Telnet server already running, but FTP server not respond")
elif ret > 0:
if die_if_sshOk:
die(0, "SSH server already installed and running")

Loading…
Cancel
Save