From 67f274fe41e2e73a3bfaa6822685d4e236e4352c Mon Sep 17 00:00:00 2001 From: Jan Kaluza Date: Thu, 7 Jan 2016 07:53:18 +0100 Subject: [PATCH] spectrum2_manager server: Allow registering and unregistering Spectrum 2 transport users --- spectrum_manager/src/server.cpp | 40 ++++++++++++++++++++++++++------- 1 file changed, 32 insertions(+), 8 deletions(-) diff --git a/spectrum_manager/src/server.cpp b/spectrum_manager/src/server.cpp index bb3d3d38..991af6a5 100644 --- a/spectrum_manager/src/server.cpp +++ b/spectrum_manager/src/server.cpp @@ -225,7 +225,6 @@ std::string Server::send_command(const std::string &jid, const std::string &cmd) Swift::BoostNetworkFactories networkFactories(&eventLoop); ask_local_server(m_config, networkFactories, jid, cmd); - eventLoop.runUntilEvents(); struct timeval td_start,td_end; float elapsed = 0; gettimeofday(&td_start, NULL); @@ -417,7 +416,29 @@ void Server::serve_instance(struct mg_connection *conn, struct http_message *hm, } void Server::serve_instances_unregister(struct mg_connection *conn, struct http_message *hm) { - + std::string instance = get_http_var(hm, "instance"); + if (instance.empty()) { + serve_instances(conn, hm); + return; + } + + Server:session *session = get_session(hm); + UserInfo info; + m_storage->getUser(session->user, info); + + std::string value = ""; + int type = (int) TYPE_STRING; + m_storage->getUserSetting(info.id, instance, type, value); + + if (!value.empty()) { + std::string response = send_command(instance, "unregister " + value); + if (!response.empty()) { + value = ""; + m_storage->updateUserSetting(info.id, instance, value); + } + } + + redirect_to(conn, hm, "/instances"); } void Server::serve_instances_register(struct mg_connection *conn, struct http_message *hm) { @@ -434,7 +455,7 @@ void Server::serve_instances_register(struct mg_connection *conn, struct http_me UserInfo info; m_storage->getUser(session->user, info); - if (uin.empty() || password.empty()) { + if (jid.empty() || uin.empty() || password.empty()) { std::string html = "

Register Spectrum 2 instance

"; html += "
\

Register Spectrum 2 instance \ @@ -442,11 +463,11 @@ void Server::serve_instances_register(struct mg_connection *conn, struct http_me

\ \ \ \ + \

"; print_html(conn, hm, html); } else { - std::string response = send_command(jid, "register " + jid + " " + uin + " " + password); + std::string response = send_command(instance, "register " + jid + " " + uin + " " + password); if (!response.empty()) { std::string value = jid; int type = (int) TYPE_STRING; - m_storage->updateUserSetting(info.id, jid, value); + m_storage->updateUserSetting(info.id, instance, value); } redirect_to(conn, hm, "/instances"); } @@ -535,20 +557,22 @@ void Server::serve_instances(struct mg_connection *conn, struct http_message *hm response = "Cannot get the server status"; } - html += "" + response + ""; if (response.find("Running") == 0) { std::string value = ""; int type = (int) TYPE_STRING; m_storage->getUserSetting(info.id, instance, type, value); if (!value.empty()) { + html += "Running. Registered as " + value + ""; html += "Unregister"; } else { + html += "Running. No account registered yet."; html += "Register"; } } else { + html += "" + response + ""; html += "No available action"; }