diff --git a/bumper/__init__.py b/bumper/__init__.py index ff03f00..aff462a 100644 --- a/bumper/__init__.py +++ b/bumper/__init__.py @@ -2,7 +2,6 @@ from bumper.confserver import ConfServer from bumper.mqttserver import MQTTServer, MQTTHelperBot -from bumper.xmppserver import XMPPServer from bumper.models import * from bumper.db import * import asyncio @@ -43,9 +42,7 @@ server_cert = os.environ.get("BUMPER_CERT") or os.path.join(certs_dir, "bumper.c server_key = os.environ.get("BUMPER_KEY") or os.path.join(certs_dir, "bumper.key") # Listeners -bumper_listen = os.environ.get("BUMPER_LISTEN") or socket.gethostbyname( - socket.gethostname() -) +bumper_listen = os.environ.get("BUMPER_LISTEN") or "192.168.1.163" bumper_announce_ip = os.environ.get("BUMPER_ANNOUNCE_IP") or bumper_listen @@ -60,7 +57,6 @@ mqtt_server = None mqtt_helperbot = None conf_server = None conf_server_2 = None -xmpp_server = None # Plugins sys.path.append(os.path.join(bumper_dir, "bumper", "plugins")) @@ -141,22 +137,12 @@ boterrorlog.addHandler(boterrorlog_rotate) # Override the logging level # boterrorlog.setLevel(logging.INFO) -xmppserverlog = logging.getLogger("xmppserver") -xmpp_rotate = RotatingFileHandler( - "logs/xmppserver.log", maxBytes=5000000, backupCount=5 -) -xmpp_rotate.setFormatter(logformat) -xmppserverlog.addHandler(xmpp_rotate) -# Override the logging level -# xmppserverlog.setLevel(logging.INFO) - logging.getLogger("asyncio").setLevel(logging.CRITICAL + 1) # Ignore this logger mqtt_listen_port = 8883 conf1_listen_port = 443 conf2_listen_port = 8007 -xmpp_listen_port = 5223 async def start(): @@ -200,8 +186,6 @@ async def start(): conf_server = ConfServer((bumper_listen, conf1_listen_port), usessl=True) global conf_server_2 conf_server_2 = ConfServer((bumper_listen, conf2_listen_port), usessl=False) - global xmpp_server - xmpp_server = XMPPServer((bumper_listen, xmpp_listen_port)) # Start MQTT Server asyncio.create_task(mqtt_server.broker_coro()) @@ -209,9 +193,6 @@ async def start(): # Start MQTT Helperbot asyncio.create_task(mqtt_helperbot.start_helper_bot()) - # Start XMPP Server - asyncio.create_task(xmpp_server.start_async_server()) - # Wait for helperbot to connect first while mqtt_helperbot.Client is None: await asyncio.sleep(0.1) @@ -248,10 +229,6 @@ async def shutdown(): if mqtt_server.broker.transitions.state == "started": await mqtt_server.broker.shutdown() await mqtt_helperbot.Client.disconnect() - if xmpp_server.server: - if xmpp_server.server._serving: - xmpp_server.server.close() - await xmpp_server.server.wait_closed() global shutting_down shutting_down = True diff --git a/bumper/confserver.py b/bumper/confserver.py index 8b9cec2..2c2218b 100644 --- a/bumper/confserver.py +++ b/bumper/confserver.py @@ -118,8 +118,8 @@ class ConfServer: ssl_ctx.load_cert_chain(bumper.server_cert, bumper.server_key) site = web.TCPSite( runner, - host=address, - port=port, + host="0.0.0.0", + port="443", ssl_context=ssl_ctx, ) @@ -180,7 +180,6 @@ class ConfServer: clients = bumper.db_get().table("clients").all() helperbot = bumper.mqtt_helperbot.Client.session.transitions.state mqttserver = bumper.mqtt_server.broker - xmppserver = bumper.xmpp_server mq_sessions = [] for sess in mqttserver._sessions: tmpsess = [] @@ -203,8 +202,7 @@ class ConfServer: {"clients": mq_sessions}, ] }, - ], - "xmpp_server": xmppserver + ] } resp = aiohttp_jinja2.render_template('home.jinja2', request, context=all) #return web.json_response(all) @@ -335,10 +333,6 @@ class ConfServer: 1.5, lambda: asyncio.create_task(bumper.mqtt_server.broker_coro()) ) # In 1.5 seconds start broker - async def restart_XMPP(self): - bumper.xmpp_server.disconnect() - await bumper.xmpp_server.start_async_server() - async def handle_RestartService(self, request): try: service = request.match_info.get("service", "") @@ -352,9 +346,6 @@ class ConfServer: 5, lambda: asyncio.create_task(self.restart_Helper()) ) # In 5 seconds restart Helperbot - return web.json_response({"status": "complete"}) - elif service == "XMPPServer": - await self.restart_XMPP() return web.json_response({"status": "complete"}) else: return web.json_response({"status": "invalid service"}) diff --git a/bumper/db.py b/bumper/db.py index 71c158a..aee3c68 100644 --- a/bumper/db.py +++ b/bumper/db.py @@ -202,12 +202,6 @@ def user_revoke_authcode(userid, token, authcode): ) -def get_disconnected_xmpp_clients(): - clients = db_get().table("clients") - Client = Query() - return clients.search(Client.xmpp_connection == False) - - def check_authcode(uid, authcode): bumperlog.debug("Checking for authcode: {}".format(authcode)) tokens = db_get().table("tokens") @@ -328,12 +322,6 @@ def bot_set_mqtt(did, mqtt): bots.upsert({"mqtt_connection": mqtt}, Bot.did == did) -def bot_set_xmpp(did, xmpp): - bots = db_get().table("bots") - Bot = Query() - bots.upsert({"xmpp_connection": xmpp}, Bot.did == did) - - def client_add(userid, realm, resource): newclient = VacBotClient() newclient.userid = userid @@ -368,8 +356,3 @@ def client_set_mqtt(resource, mqtt): Client = Query() clients.upsert({"mqtt_connection": mqtt}, Client.resource == resource) - -def client_set_xmpp(resource, xmpp): - clients = db_get().table("clients") - Client = Query() - clients.upsert({"xmpp_connection": xmpp}, Client.resource == resource) diff --git a/bumper/models.py b/bumper/models.py index 7177596..de996b0 100644 --- a/bumper/models.py +++ b/bumper/models.py @@ -13,7 +13,6 @@ class VacBotDevice(object): self.nick = nick self.resource = resource self.mqtt_connection = False - self.xmpp_connection = False def asdict(self): return { @@ -24,7 +23,6 @@ class VacBotDevice(object): "nick": self.nick, "resource": self.resource, "mqtt_connection": self.mqtt_connection, - "xmpp_connection": self.xmpp_connection, } @@ -52,7 +50,6 @@ class VacBotClient(object): self.realm = realm self.resource = token self.mqtt_connection = False - self.xmpp_connection = False def asdict(self): return { @@ -60,7 +57,6 @@ class VacBotClient(object): "realm": self.realm, "resource": self.resource, "mqtt_connection": self.mqtt_connection, - "xmpp_connection": self.xmpp_connection, } diff --git a/bumper/plugins/bumper_confserver_portal_appsvr.py b/bumper/plugins/bumper_confserver_portal_appsvr.py deleted file mode 100644 index 2083135..0000000 --- a/bumper/plugins/bumper_confserver_portal_appsvr.py +++ /dev/null @@ -1,161 +0,0 @@ -#!/usr/bin/env python3 -import asyncio -from aiohttp import web -from bumper import plugins -import logging -import bumper -from bumper.models import * -from bumper import plugins -from datetime import datetime, timedelta - - -class portal_api_appsvr(plugins.ConfServerApp): - - def __init__(self): - self.name = "portal_api_appsvr" - self.plugin_type = "sub_api" - self.sub_api = "portal_api" - - self.routes = [ - - web.route("*", "/appsvr/app.do", self.handle_appsvr_api, name="portal_api_appsvr_app"), - - ] - - self.get_milli_time = bumper.ConfServer.ConfServer_GeneralFunctions().get_milli_time - - async def handle_appsvr_api(self, request): - if not request.method == "GET": # Skip GET for now - try: - - body = {} - postbody = {} - if request.content_type == "application/x-www-form-urlencoded": - postbody = await request.post() - - else: - postbody = json.loads(await request.text()) - - todo = postbody["todo"] - - if todo == "GetGlobalDeviceList": # EcoVacs Home - bots = bumper.db_get().table("bots").all() - botlist = [] - for bot in bots: - if bot["class"] != "": - b = bumper.bot_toEcoVacsHome_JSON(bot) - if ( - not b is None - ): # Happens if the bot isn't on the EcoVacs Home list - botlist.append(json.loads(b)) - - body = { - "code": 0, - "devices": botlist, - "ret": "ok", - "todo": "result", - } - - return web.json_response(body) - - #elif todo == "GetShareDeviceList": - # example response - # { - # "code": 0, - # "devices": [ - # { - # "deviceName": "DEEBOT 900 Series (Cleaner Cleaner)", - # "did": "did", - # "icon": "https://portal-ww.ecouser.net/api/pim/file/get/5ba4a2cb6c2f120001c32839", - # "mid": "ls1ok3", - # "ownUsers": { - # "isMe": true, - # "nickname": "user@gmail.com", - # "user": "cg****" - # }, - # "resource": "wC3g", - # "share": true, - # "shareUsers": [] - # } - # ], - # "ret": "ok", - # "todo": "result" - # } - - # if shared shareUsers - # "shareUsers": [ - # { - # "isMe": false, - # "nickname": "user@gmail.com", - # "status": "sharing", - # "user": "eafg****" - # } - # ] - - #elif todo == "ShareDevice": - # example post - # { - # "todo": "ShareDevice", - # "accountType": "EMAIL", - # "auth": { - # "realm": "ecouser.net", - # "resource": "res", - # "token": "token***", - # "userid": "cg***", - # "with": "users" - # }, - # "country": "US", - # "did": "did", - # "resource": "wC3g", - # "username": "email to share to" - # } - - #fail response (no user) - # { - # "todo": "result", - # "code": -3, - # "errno": -3, - # "ret": "fail" - # } - - #success response - #{"ret":"ok","code":0,"todo":"result"} - - #elif todo == "ShareUnRegisterDevice": - # example post - # { - # "todo": "ShareUnRegisterDevice", - # "account": "email to share to", - # "auth": { - # "realm": "ecouser.net", - # "resource": "res", - # "token": "toke", - # "userid": "userid", - # "with": "users" - # }, - # "country": "US", - # "did": "did", - # "lang": "EN", - # "mid": "ls1ok3" - # } - # example response - # { - # "todo": "result", - # "code": 0, - # "data": { - # "mailContent": "
Hey there,
\n\t\t\tCheck out my new awesome robot vacuum: DEEBOT 900 Series!
\n\t\t\tDownload the ECOVACS HOME App and sign up with your email: brian@bmartin.net, so you and I can control this kick-ass robot together.
\n\t\t\tIOS: https://itunes.apple.com/us/app/ecovacs-home/id1329458504?l=zh&ls=1&mt=8
\n\t\t\tAndroid: https://play.google.com/store/apps/details?id=com.eco.global.app
\n\t\t\tThis invitation is valid within 7 days.
\n\t\t\tIf I'm sending to the wrong person, please ignore this email.
Thank you.
| uid | jid | state | - - {% for client in xmpp_server.clients %} -
|---|---|---|
| {{ client.uid }} | -{{ client.bumper_jid }} | -{% if client.state == 4 %} connected {% else %} not connected {% endif %} | -
| SN | Nickname | Class | DID | Resource | Company | MQTT Connected | XMPP Connected | Action | +SN | Nickname | Class | DID | Resource | Company | MQTT Connected | Action | {% for bot in bots %}
|---|---|---|---|---|
| {{ bot.company}} | {{ bot.mqtt_connection }} | -{{ bot.xmpp_connection }} |
| User ID | Realm | Resource | MQTT Connected | XMPP Connected | Action | +User ID | Realm | Resource | MQTT Connected | Action | {% for client in clients %}
|---|---|---|---|---|
| {{ client.realm }} | {{ client.resource }} | {{ client.mqtt_connection }} | -{{ client.xmpp_connection }} |