remove a few try

remove a few try
This commit is contained in:
Brian Martin 2019-06-20 21:05:36 -04:00
parent 9be1ba8321
commit 2663c46d52
3 changed files with 108 additions and 139 deletions

View file

@ -24,23 +24,16 @@ def os_db_path(): # createdir=True):
def db_get(): def db_get():
try: # Will create the database if it doesn't exist
# Will create the database if it doesn't exist db = TinyDB(db_file())
db = TinyDB(db_file())
# Will create the tables if they don't exist # Will create the tables if they don't exist
db.table("users", cache_size=0) db.table("users", cache_size=0)
db.table("clients", cache_size=0) db.table("clients", cache_size=0)
db.table("bots", cache_size=0) db.table("bots", cache_size=0)
db.table("tokens", cache_size=0) db.table("tokens", cache_size=0)
return db return db
except json.decoder.JSONDecodeError as jerr:
bumperlog.error("JsonErr: {} - Doc: {}".format(jerr.msg, jerr.doc))
except Exception as ex:
bumperlog.error(ex)
def user_add(userid): def user_add(userid):

View file

@ -354,41 +354,33 @@ class BumperMQTTServer_Plugin:
return authenticated return authenticated
async def on_broker_client_connected(self, client_id): async def on_broker_client_connected(self, client_id):
try:
didsplit = str(client_id).split("@") didsplit = str(client_id).split("@")
bot = bumper.bot_get(didsplit[0]) bot = bumper.bot_get(didsplit[0])
if bot: if bot:
bumper.bot_set_mqtt(bot["did"], True) bumper.bot_set_mqtt(bot["did"], True)
return return
# clientuserid = didsplit[0] # clientuserid = didsplit[0]
clientresource = didsplit[1].split("/")[1] clientresource = didsplit[1].split("/")[1]
client = bumper.client_get(clientresource) client = bumper.client_get(clientresource)
if client: if client:
bumper.client_set_mqtt(client["resource"], True) bumper.client_set_mqtt(client["resource"], True)
return return
except Exception as e:
mqttserverlog.exception("{}".format(e))
async def on_broker_client_disconnected(self, client_id): async def on_broker_client_disconnected(self, client_id):
try:
didsplit = str(client_id).split("@")
bot = bumper.bot_get(didsplit[0]) didsplit = str(client_id).split("@")
if bot:
bumper.bot_set_mqtt(bot["did"], False)
return
# clientuserid = didsplit[0] bot = bumper.bot_get(didsplit[0])
clientresource = didsplit[1].split("/")[1] if bot:
client = bumper.client_get(clientresource) bumper.bot_set_mqtt(bot["did"], False)
if client: return
bumper.client_set_mqtt(client["resource"], False)
return
except Exception as e:
mqttserverlog.exception("{}".format(e))
# clientuserid = didsplit[0]
clientresource = didsplit[1].split("/")[1]
client = bumper.client_get(clientresource)
if client:
bumper.client_set_mqtt(client["resource"], False)
return

View file

@ -51,17 +51,14 @@ class XMPPServer:
asyncio.create_task(bumper.shutdown()) asyncio.create_task(bumper.shutdown())
def disconnect(self): def disconnect(self):
try:
xmppserverlog.debug("waiting for all clients to disconnect")
for client in self.clients:
client._disconnect()
self.exit_flag = True xmppserverlog.debug("waiting for all clients to disconnect")
xmppserverlog.debug("shutting down") for client in self.clients:
self.server_coro.cancel() client._disconnect()
except Exception as e: self.exit_flag = True
xmppserverlog.error("{}".format(e)) xmppserverlog.debug("shutting down")
self.server_coro.cancel()
class XMPPServer_Protocol(asyncio.Protocol): class XMPPServer_Protocol(asyncio.Protocol):
@ -615,80 +612,70 @@ class XMPPAsyncClient:
xmppserverlog.exception("{}".format(e)) xmppserverlog.exception("{}".format(e))
def _handle_session(self, xml): def _handle_session(self, xml):
try: res = '<iq type="result" id="{}" />'.format(xml.get("id"))
res = '<iq type="result" id="{}" />'.format(xml.get("id")) self._set_state("READY")
self._set_state("READY") self.send(res)
self.send(res) asyncio.Task(self.schedule_ping(30))
asyncio.Task(self.schedule_ping(30))
except Exception as e:
xmppserverlog.exception("{}".format(e))
def _handle_presence(self, xml): def _handle_presence(self, xml):
try:
if len(xml) and xml[0].tag == "status": if len(xml) and xml[0].tag == "status":
xmppserverlog.debug(
"bot presence {} ".format(
ET.tostring(xml, encoding="utf-8").decode("utf-8")
)
)
# Most likely a bot, possibly hello world in text
# Send dummy return
self.send('<presence to="{}"> dummy </presence>'.format(self.bumper_jid))
# If it is a BOT, send extras
if self.type == self.BOT:
# get device info
self.send(
'<iq type="set" id="14" to="{}" from="{}"><query xmlns="com:ctl"><ctl td="GetDeviceInfo"/></query></iq>'.format(
self.bumper_jid, XMPPServer.server_id
)
)
else:
xmppserverlog.debug(
"client presence - {} ".format(
ET.tostring(xml, encoding="utf-8").decode("utf-8")
)
)
if xml.get("type") == "available":
xmppserverlog.debug( xmppserverlog.debug(
"bot presence {} ".format( "client presence available - {} ".format(
ET.tostring(xml, encoding="utf-8").decode("utf-8") ET.tostring(xml, encoding="utf-8").decode("utf-8")
) )
) )
# Most likely a bot, possibly hello world in text
# Send dummy return # Send dummy return
self.send( self.send(
'<presence to="{}"> dummy </presence>'.format(self.bumper_jid) '<presence to="{}"> dummy </presence>'.format(self.bumper_jid)
) )
elif xml.get("type") == "unavailable":
# If it is a BOT, send extras
if self.type == self.BOT:
# get device info
self.send(
'<iq type="set" id="14" to="{}" from="{}"><query xmlns="com:ctl"><ctl td="GetDeviceInfo"/></query></iq>'.format(
self.bumper_jid, XMPPServer.server_id
)
)
else:
xmppserverlog.debug( xmppserverlog.debug(
"client presence - {} ".format( "client presence unavailable (DISCONNECT) - {} ".format(
ET.tostring(xml, encoding="utf-8").decode("utf-8") ET.tostring(xml, encoding="utf-8").decode("utf-8")
) )
) )
if xml.get("type") == "available": self._set_state("DISCONNECT")
xmppserverlog.debug( else:
"client presence available - {} ".format( # Sometimes the android app sends these
ET.tostring(xml, encoding="utf-8").decode("utf-8") xmppserverlog.debug(
) "client presence (UNKNOWN) - {} ".format(
ET.tostring(xml, encoding="utf-8")
) )
)
# Send dummy return # Send dummy return
self.send( self.send(
'<presence to="{}"> dummy </presence>'.format(self.bumper_jid) '<presence to="{}"> dummy </presence>'.format(self.bumper_jid)
) )
elif xml.get("type") == "unavailable":
xmppserverlog.debug(
"client presence unavailable (DISCONNECT) - {} ".format(
ET.tostring(xml, encoding="utf-8").decode("utf-8")
)
)
self._set_state("DISCONNECT")
else:
# Sometimes the android app sends these
xmppserverlog.debug(
"client presence (UNKNOWN) - {} ".format(
ET.tostring(xml, encoding="utf-8")
)
)
# Send dummy return
self.send(
'<presence to="{}"> dummy </presence>'.format(self.bumper_jid)
)
except Exception as e:
xmppserverlog.exception("{}".format(e))
def _parse_data(self, data): def _parse_data(self, data):
@ -804,34 +791,31 @@ class XMPPAsyncClient:
xmppserverlog.exception("{}".format(e)) xmppserverlog.exception("{}".format(e))
def _handle_iq(self, xml, data): def _handle_iq(self, xml, data):
try:
if len(xml):
child = self._tag_strip_uri(xml[0].tag)
else:
child = None
if xml.tag == "iq": if len(xml):
if child == "bind": child = self._tag_strip_uri(xml[0].tag)
self._handle_bind(xml) else:
elif child == "session": child = None
self._handle_session(xml)
elif child == "ping":
self._handle_ping(xml, data)
elif child == "query":
if self.type == self.BOT:
self._handle_result(xml, data)
else:
self._handle_ctl(xml, data)
elif xml.get("type") == "result":
if self.type == self.BOT:
self._handle_result(xml, data)
else:
self._handle_result(xml, data)
elif xml.get("type") == "set":
if self.type == self.BOT:
self._handle_result(xml, data)
else:
self._handle_result(xml, data)
except Exception as e: if xml.tag == "iq":
xmppserverlog.exception("{}".format(e)) if child == "bind":
self._handle_bind(xml)
elif child == "session":
self._handle_session(xml)
elif child == "ping":
self._handle_ping(xml, data)
elif child == "query":
if self.type == self.BOT:
self._handle_result(xml, data)
else:
self._handle_ctl(xml, data)
elif xml.get("type") == "result":
if self.type == self.BOT:
self._handle_result(xml, data)
else:
self._handle_result(xml, data)
elif xml.get("type") == "set":
if self.type == self.BOT:
self._handle_result(xml, data)
else:
self._handle_result(xml, data)