Clear telnet patch voor rdl achter sommige N-porten die reverse telnet gebruiken
This commit is contained in:
43
lmwsip.py
43
lmwsip.py
@@ -28,7 +28,7 @@ Support for:
|
||||
|
||||
def __init__(self, user=None, password=None,
|
||||
host="sip-lmw.rws.nl", port=443, meetnet="LMW", ssl = True,
|
||||
check_ssl = True, timeout = 10, log = None):
|
||||
check_ssl = True, timeout = 10, log = None, cleartelnet = False):
|
||||
"""LmwSip(user, password, [host], [port], [meetnet], [ssl], [check_ssl], [timeout], [log])
|
||||
|
||||
user(optinal): Lmw user name
|
||||
@@ -40,6 +40,7 @@ ssl(optional): Default true
|
||||
check_ssl(optional): true
|
||||
timeout(optional): 10
|
||||
log(optional): None
|
||||
cleartelnet: False
|
||||
|
||||
Opens the connection and logs in
|
||||
"""
|
||||
@@ -52,6 +53,7 @@ Opens the connection and logs in
|
||||
self.check_ssl = check_ssl
|
||||
self.timeout = timeout
|
||||
self._socket = None
|
||||
self.cleartelnet = cleartelnet
|
||||
if (log != None):
|
||||
self.log = log
|
||||
self.log.debug("LmwSip.init")
|
||||
@@ -156,28 +158,32 @@ send a sip command to the server
|
||||
|
||||
recieve a answer from the sip server
|
||||
"""
|
||||
buf=""
|
||||
stringbuf=""
|
||||
while self._socket != None and re.search("\r$", buf) == None:
|
||||
try:
|
||||
self.log.debug("LmwSip.recv: Waiting for data");
|
||||
b = self._socket.recv(4096).decode('utf-8')
|
||||
if (b == ""):
|
||||
self.log.error("SipLmw.recv: socket closed")
|
||||
self.closesocket()
|
||||
raise LmwSipConnectError("LmwSip.recv: Socket close")
|
||||
else:
|
||||
buf += b
|
||||
bytebuf = self._socket.recv(4096)
|
||||
if self.cleartelnet:
|
||||
while bytebuf[0] == '\xff':
|
||||
self.log.info("SipLmw.recv: telnet data: %s", bytebuf)
|
||||
bytebuf = self._socket.recv(4096)
|
||||
except Exception as e:
|
||||
self.log.error("SipLmw.recv: socket timeout: %s", e)
|
||||
self.closesocket()
|
||||
raise LmwSipConnectError("LmwSip.recv: Socket timeout")
|
||||
try:
|
||||
stringbuf += bytebuf.decode('utf-8')
|
||||
except Exception as e:
|
||||
self.log.error("SipLmw.recv: decode error: %s", e)
|
||||
self.closesocket()
|
||||
raise LmwSipDecodeError("LmwSip.recv: decode error", bytebuf)
|
||||
if self._socket == None:
|
||||
self.log.warn("LmwSip.recv: No connection")
|
||||
elif buf[0] != '!':
|
||||
self.log.warn("LmwSip.recv: Sip error: %s" % buf.strip('\r'))
|
||||
elif stringbuf[0] != '!':
|
||||
self.log.warn("LmwSip.recv: Sip error: %s" % stringbuf.strip('\r'))
|
||||
else:
|
||||
self.log.debug("LmwSip.recv: result: %s" % buf.strip('\r'))
|
||||
return(buf)
|
||||
self.log.debug("LmwSip.recv: result: %s" % stringbuf.strip('\r'))
|
||||
return(stringbuf)
|
||||
|
||||
def login(self):
|
||||
"""login()
|
||||
@@ -420,6 +426,17 @@ class LmwSipConnectError(Exception):
|
||||
def __str__(self):
|
||||
return(self.message)
|
||||
|
||||
class LmwSipDecodeError(Exception):
|
||||
"""Connection exceptions for LmwSip"""
|
||||
|
||||
def __init__(self, message, buf):
|
||||
self.message = message
|
||||
self.buf = buf
|
||||
|
||||
def __str__(self):
|
||||
return(self.message + ":" + buf)
|
||||
|
||||
|
||||
class LmwLoginFailure(Exception):
|
||||
"""Exception from LmwSip on login failure"""
|
||||
|
||||
|
5
siprun
5
siprun
@@ -10,6 +10,8 @@ def main():
|
||||
parser = argparse.ArgumentParser(description="Run a sip file.")
|
||||
parser.add_argument("-u", "--unencrypted", action="store_true",
|
||||
help="Run a sip connection without ssl")
|
||||
parser.add_argument("-c", "--cleartelnet", action="store_true",
|
||||
help="Clear telnet protocol in tcp session")
|
||||
parser.add_argument("-H", "--host", action='store',
|
||||
default="sip-lmw.rws.nl",
|
||||
help="Host to connect to")
|
||||
@@ -27,7 +29,8 @@ def main():
|
||||
|
||||
try:
|
||||
lmwsip = LmwSip(host=args.host, port=args.port,
|
||||
ssl=not args.unencrypted)
|
||||
ssl=not args.unencrypted,
|
||||
cleartelnet=args.cleartelnet)
|
||||
except Exception as e:
|
||||
print("Connect to lmw failed: %s" % e)
|
||||
exit(1)
|
||||
|
Reference in New Issue
Block a user