add remove bot and client
This commit is contained in:
parent
80c412afd1
commit
63e0620f0c
5 changed files with 76 additions and 25 deletions
|
|
@ -58,7 +58,9 @@ class ConfServer:
|
||||||
self.app.add_routes(
|
self.app.add_routes(
|
||||||
[
|
[
|
||||||
|
|
||||||
web.get("", self.handle_base),
|
web.get("", self.handle_base),
|
||||||
|
web.get("/bot/remove/{did}", self.handle_RemoveBot, name='remove-bot'),
|
||||||
|
web.get("/client/remove/{resource}", self.handle_RemoveClient, name='remove-client'),
|
||||||
web.get("/restart_{service}", self.handle_RestartService, name='restart-service'),
|
web.get("/restart_{service}", self.handle_RestartService, name='restart-service'),
|
||||||
web.get(
|
web.get(
|
||||||
"/{apiversion}/private/{country}/{language}/{devid}/{apptype}/{appversion}/{devtype}/{aid}/user/login",
|
"/{apiversion}/private/{country}/{language}/{devid}/{apptype}/{appversion}/{devtype}/{aid}/user/login",
|
||||||
|
|
@ -381,6 +383,32 @@ class ConfServer:
|
||||||
confserverlog.exception("{}".format(e))
|
confserverlog.exception("{}".format(e))
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
async def handle_RemoveBot(self, request):
|
||||||
|
try:
|
||||||
|
did = request.match_info.get("did", "")
|
||||||
|
bumper.bot_remove(did)
|
||||||
|
if bumper.bot_get(did):
|
||||||
|
return web.json_response({"status": "failed to remove bot"})
|
||||||
|
else:
|
||||||
|
return web.json_response({"status": "successfully removed bot"})
|
||||||
|
|
||||||
|
except Exception as e:
|
||||||
|
confserverlog.exception("{}".format(e))
|
||||||
|
pass
|
||||||
|
|
||||||
|
async def handle_RemoveClient(self, request):
|
||||||
|
try:
|
||||||
|
resource = request.match_info.get("resource", "")
|
||||||
|
bumper.client_remove(resource)
|
||||||
|
if bumper.client_get(resource):
|
||||||
|
return web.json_response({"status": "failed to remove client"})
|
||||||
|
else:
|
||||||
|
return web.json_response({"status": "successfully removed client"})
|
||||||
|
|
||||||
|
except Exception as e:
|
||||||
|
confserverlog.exception("{}".format(e))
|
||||||
|
pass
|
||||||
|
|
||||||
async def handle_login(self, request):
|
async def handle_login(self, request):
|
||||||
try:
|
try:
|
||||||
user_devid = request.match_info.get("devid", "")
|
user_devid = request.match_info.get("devid", "")
|
||||||
|
|
|
||||||
|
|
@ -286,7 +286,8 @@ def bot_add(sn, did, devclass, resource, company):
|
||||||
def bot_remove(did):
|
def bot_remove(did):
|
||||||
bots = db_get().table("bots")
|
bots = db_get().table("bots")
|
||||||
bot = bot_get(did)
|
bot = bot_get(did)
|
||||||
bots.remove(doc_ids=[bot.doc_id])
|
if bot:
|
||||||
|
bots.remove(doc_ids=[bot.doc_id])
|
||||||
|
|
||||||
|
|
||||||
def bot_get(did):
|
def bot_get(did):
|
||||||
|
|
@ -344,6 +345,11 @@ def client_add(userid, realm, resource):
|
||||||
bumperlog.info("Adding new client with resource {}".format(newclient.resource))
|
bumperlog.info("Adding new client with resource {}".format(newclient.resource))
|
||||||
client_full_upsert(newclient.asdict())
|
client_full_upsert(newclient.asdict())
|
||||||
|
|
||||||
|
def client_remove(resource):
|
||||||
|
clients = db_get().table("clients")
|
||||||
|
client = client_get(resource)
|
||||||
|
if client:
|
||||||
|
clients.remove(doc_ids=[client.doc_id])
|
||||||
|
|
||||||
def client_get(resource):
|
def client_get(resource):
|
||||||
clients = db_get().table("clients")
|
clients = db_get().table("clients")
|
||||||
|
|
|
||||||
|
|
@ -5,41 +5,43 @@
|
||||||
<title>Bumper</title>
|
<title>Bumper</title>
|
||||||
<meta http-equiv="refresh" content="5" />
|
<meta http-equiv="refresh" content="5" />
|
||||||
<script>
|
<script>
|
||||||
function restartHelperbot() {
|
function restartService(service) {
|
||||||
console.log("restart helperbot");
|
console.log("restart service", service);
|
||||||
fetch('restart_Helperbot')
|
fetch('restart_' + service)
|
||||||
.then((response) => {
|
.then((response) => {
|
||||||
return response.json();
|
return response.json();
|
||||||
})
|
})
|
||||||
.then((myJson) => {
|
.then((myJson) => {
|
||||||
alert("Restarting Helperbot: " + myJson["status"])
|
alert("Restarting " + service + ": " + myJson["status"])
|
||||||
console.log("restart helperbot - " + myJson["status"]);
|
console.log("restart",service,"-",myJson["status"]);
|
||||||
});
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function restartMQTTServer() {
|
function removeBot(did) {
|
||||||
console.log("restart mqtt server");
|
console.log("remove bot",did);
|
||||||
fetch('restart_MQTTServer')
|
fetch('bot/remove/' + did)
|
||||||
.then((response) => {
|
.then((response) => {
|
||||||
return response.json();
|
return response.json();
|
||||||
})
|
})
|
||||||
.then((myJson) => {
|
.then((myJson) => {
|
||||||
alert("Restarting MQTT Server: " + myJson["status"])
|
alert("Removing Bot (DID) - " + did + " - " + myJson["status"])
|
||||||
console.log("restart mqtt server - " + myJson["status"]);
|
console.log("remove bot",did, myJson["status"]);
|
||||||
});
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function restartXMPPServer() {
|
|
||||||
console.log("restart xmpp server");
|
function removeClient(resource) {
|
||||||
fetch('restart_XMPPServer')
|
|
||||||
|
console.log("remove client",resource);
|
||||||
|
fetch('client/remove/' + resource)
|
||||||
.then((response) => {
|
.then((response) => {
|
||||||
return response.json();
|
return response.json();
|
||||||
})
|
})
|
||||||
.then((myJson) => {
|
.then((myJson) => {
|
||||||
alert("Restarting XMPP Server: " + myJson["status"])
|
alert("Removing Client - resource - " + resource + " - " + myJson["status"])
|
||||||
console.log("restart xmpp server - " + myJson["status"]);
|
console.log("remove client",resource, myJson["status"]);
|
||||||
});
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
@ -66,7 +68,7 @@
|
||||||
<div class="card border border-dark">
|
<div class="card border border-dark">
|
||||||
<div class="card card-header">
|
<div class="card card-header">
|
||||||
<h3 class="card-title">MQTT Server</h3>
|
<h3 class="card-title">MQTT Server</h3>
|
||||||
<div>Action: <button type="button" class="btn btn-outline-danger btn-sm" onclick="restartMQTTServer();">Restart Service</button></div>
|
<div>Action: <button type="button" class="btn btn-outline-danger btn-sm" onclick="restartService('MQTTServer');">Restart Service</button></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
Status: {% if mqtt_server[0].state == "started" %} <span class="badge badge-success">{{ mqtt_server[0].state }}</span> {% else %} <span class="badge badge-danger">{{ mqtt_server[0].state }}</span> {% endif %}
|
Status: {% if mqtt_server[0].state == "started" %} <span class="badge badge-success">{{ mqtt_server[0].state }}</span> {% else %} <span class="badge badge-danger">{{ mqtt_server[0].state }}</span> {% endif %}
|
||||||
|
|
@ -93,7 +95,7 @@
|
||||||
<div class="card border border-dark">
|
<div class="card border border-dark">
|
||||||
<div class="card card-header">
|
<div class="card card-header">
|
||||||
<h3 class="card-title">XMPP Server</h3>
|
<h3 class="card-title">XMPP Server</h3>
|
||||||
<div>Action: <button type="button" class="btn btn-outline-danger btn-sm" onclick="restartXMPPServer();">Restart Service</button></div>
|
<div>Action: <button type="button" class="btn btn-outline-danger btn-sm" onclick="restartService('XMPPServer');">Restart Service</button></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
Status: {% if xmpp_server.server._serving == True %} <span class="badge badge-success">running</span> {% else %} <span class="badge badge-danger">not running</span> {% endif %}
|
Status: {% if xmpp_server.server._serving == True %} <span class="badge badge-success">running</span> {% else %} <span class="badge badge-danger">not running</span> {% endif %}
|
||||||
|
|
@ -120,7 +122,7 @@
|
||||||
<div class="card border border-dark">
|
<div class="card border border-dark">
|
||||||
<div class="card card-header">
|
<div class="card card-header">
|
||||||
<h3 class="card-title">Helperbot</h3>
|
<h3 class="card-title">Helperbot</h3>
|
||||||
<div>Action: <button type="button" class="btn btn-outline-danger btn-sm" onclick="restartHelperbot();">Restart Service</button></div>
|
<div>Action: <button type="button" class="btn btn-outline-danger btn-sm" onclick="restartService('Helperbot');">Restart Service</button></div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
@ -143,7 +145,7 @@
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
<table class="table table-striped table-bordered table-responsive-lg">
|
<table class="table table-striped table-bordered table-responsive-lg">
|
||||||
<thead class="thead-dark">
|
<thead class="thead-dark">
|
||||||
<TH>SN</TH><TH>Nickname</TH><TH>Class</TH><TH>DID</TH><TH>Resource</TH><TH>Company</TH><TH>MQTT Connected</TH><TH>XMPP Connected</TH>
|
<TH>SN</TH><TH>Nickname</TH><TH>Class</TH><TH>DID</TH><TH>Resource</TH><TH>Company</TH><TH>MQTT Connected</TH><TH>XMPP Connected</TH><TH>Action</TH>
|
||||||
</thead>
|
</thead>
|
||||||
{% for bot in bots %}
|
{% for bot in bots %}
|
||||||
<TR>
|
<TR>
|
||||||
|
|
@ -155,7 +157,8 @@
|
||||||
<TD>{{ bot.company}} </TD>
|
<TD>{{ bot.company}} </TD>
|
||||||
|
|
||||||
<TD {% if bot.mqtt_connection == True %} class="table-success" {% endif %}> {{ bot.mqtt_connection }} </TD>
|
<TD {% if bot.mqtt_connection == True %} class="table-success" {% endif %}> {{ bot.mqtt_connection }} </TD>
|
||||||
<TD {% if bot.xmpp_connection == True %} class="table-success" {% endif %}> {{ bot.xmpp_connection }}</TD>
|
<TD {% if bot.xmpp_connection == True %} class="table-success" {% endif %}> {{ bot.xmpp_connection }}</TD>
|
||||||
|
<TD> <button type="button" class="btn btn-outline-danger btn-sm" onclick="removeBot('{{ bot.did }}');">Remove</button> </TD>
|
||||||
</TR>
|
</TR>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</table>
|
</table>
|
||||||
|
|
@ -172,7 +175,7 @@
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
<table class="table table-striped table-bordered table-responsive-lg">
|
<table class="table table-striped table-bordered table-responsive-lg">
|
||||||
<thead class="thead-dark">
|
<thead class="thead-dark">
|
||||||
<TH>User ID</TH><TH>Realm</TH><TH>Resource</TH><TH>MQTT Connected</TH><TH>XMPP Connected</TH>
|
<TH>User ID</TH><TH>Realm</TH><TH>Resource</TH><TH>MQTT Connected</TH><TH>XMPP Connected</TH><TH>Action</TH>
|
||||||
</thead>
|
</thead>
|
||||||
{% for client in clients %}
|
{% for client in clients %}
|
||||||
<TR>
|
<TR>
|
||||||
|
|
@ -181,6 +184,7 @@
|
||||||
<TD>{{ client.resource }}</TD>
|
<TD>{{ client.resource }}</TD>
|
||||||
<TD {% if client.mqtt_connection == True %} class="table-success" {% endif %}> {{ client.mqtt_connection }} </TD>
|
<TD {% if client.mqtt_connection == True %} class="table-success" {% endif %}> {{ client.mqtt_connection }} </TD>
|
||||||
<TD {% if client.xmpp_connection == True %} class="table-success" {% endif %}> {{ client.xmpp_connection }}</TD>
|
<TD {% if client.xmpp_connection == True %} class="table-success" {% endif %}> {{ client.xmpp_connection }}</TD>
|
||||||
|
<TD> <button type="button" class="btn btn-outline-danger btn-sm" onclick="removeClient('{{ client.resource }}');">Remove</button> </TD>
|
||||||
</TR>
|
</TR>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</table>
|
</table>
|
||||||
|
|
|
||||||
|
|
@ -125,6 +125,16 @@ async def test_restartService(aiohttp_client):
|
||||||
|
|
||||||
xmpp_server.disconnect()
|
xmpp_server.disconnect()
|
||||||
|
|
||||||
|
async def test_RemoveBot(aiohttp_client):
|
||||||
|
client = await aiohttp_client(create_app)
|
||||||
|
resp = await client.get("/bot/remove/test_did")
|
||||||
|
assert resp.status == 200
|
||||||
|
|
||||||
|
async def test_RemoveClient(aiohttp_client):
|
||||||
|
client = await aiohttp_client(create_app)
|
||||||
|
resp = await client.get("/client/remove/test_resource")
|
||||||
|
assert resp.status == 200
|
||||||
|
|
||||||
|
|
||||||
async def test_login(aiohttp_client):
|
async def test_login(aiohttp_client):
|
||||||
remove_existing_db()
|
remove_existing_db()
|
||||||
|
|
|
||||||
|
|
@ -141,5 +141,8 @@ def test_client_db():
|
||||||
bumper.client_get("resource_123")["xmpp_connection"] == False
|
bumper.client_get("resource_123")["xmpp_connection"] == False
|
||||||
) # Test that xmpp was set False for client
|
) # Test that xmpp was set False for client
|
||||||
assert (
|
assert (
|
||||||
len(bumper.get_disconnected_xmpp_clients()) == 1
|
len(bumper.get_disconnected_xmpp_clients()) > 0
|
||||||
) # Test len of connected xmpp clients is 1
|
) # Test len of connected xmpp clients is 1
|
||||||
|
|
||||||
|
bumper.client_remove("resource_123")
|
||||||
|
assert bumper.client_get("resource_123") == None
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue