From df32a84f7e98dcbffeaa817a0d27567955dc420b Mon Sep 17 00:00:00 2001 From: TolaMironcenko Date: Mon, 1 Jul 2024 19:23:39 +0700 Subject: [PATCH] added get_telnet_port --- CMakeLists.txt | 3 +- src/openrouter.cpp | 1 + .../telnet/{telnet.cpp => enabled.cpp} | 4 +- src/settings/telnet/port.cpp | 45 +++++++++++++++++++ src/settings/telnet/telnet.hpp | 2 + src/web/index.html | 4 ++ src/web/js/routes.js | 2 + src/web/js/settings/settings.js | 2 + src/web/js/settings/telnet.js | 15 ++++++- 9 files changed, 74 insertions(+), 4 deletions(-) rename src/settings/telnet/{telnet.cpp => enabled.cpp} (96%) create mode 100644 src/settings/telnet/port.cpp diff --git a/CMakeLists.txt b/CMakeLists.txt index 1e53148..d9a02b5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -9,7 +9,8 @@ add_executable( src/openrouter.cpp src/security/cors.cpp - src/settings/telnet/telnet.cpp + src/settings/telnet/enabled.cpp + src/settings/telnet/port.cpp src/settings/dns/enabled.cpp src/settings/dns/servers.cpp diff --git a/src/openrouter.cpp b/src/openrouter.cpp index a393f9d..7e1cc1f 100644 --- a/src/openrouter.cpp +++ b/src/openrouter.cpp @@ -14,6 +14,7 @@ int main() { srv.Post("/api/settings/telnet/get", get_telnet); srv.Post("/api/settings/telnet/set", set_telnet); + srv.Post("/api/settings/telnet/port/get", get_telnet_port); srv.Post("/api/settings/dns/get", get_dns); srv.Post("/api/settings/dns/set", set_dns); diff --git a/src/settings/telnet/telnet.cpp b/src/settings/telnet/enabled.cpp similarity index 96% rename from src/settings/telnet/telnet.cpp rename to src/settings/telnet/enabled.cpp index 8442499..0fd0818 100644 --- a/src/settings/telnet/telnet.cpp +++ b/src/settings/telnet/enabled.cpp @@ -36,7 +36,7 @@ void get_telnet(const httplib::Request &request, httplib::Response &response) { response.set_content(resjson.dump().c_str(), JSON_TYPE); return; } - std::ifstream telnetfile("/etc/openrouter/telnet"); + std::ifstream telnetfile("/etc/openrouter/telnet/enabled"); int telnet_enabled; telnetfile >> telnet_enabled; telnetfile.close(); @@ -77,7 +77,7 @@ void set_telnet(const httplib::Request &request, httplib::Response &response) { response.set_content(resjson.dump().c_str(), JSON_TYPE); return; } - std::ofstream telnetfileout("/etc/openrouter/telnet"); + std::ofstream telnetfileout("/etc/openrouter/telnet/enabled"); std::string new_telnet_enabled = json_body["enabled"]; if (new_telnet_enabled == "0") { system("/etc/init.d/telnet stop"); diff --git a/src/settings/telnet/port.cpp b/src/settings/telnet/port.cpp new file mode 100644 index 0000000..0f8afa7 --- /dev/null +++ b/src/settings/telnet/port.cpp @@ -0,0 +1,45 @@ +#include "telnet.hpp" +#include +#include "../../types.hpp" +#include "../../routes.hpp" +#include +#include +#include +#include +#include + +void get_telnet_port(const httplib::Request &request, httplib::Response &response) { + std::cout << GREEN << request.path << RESET << " " << request.method << std::endl; + response.set_header("Access-Control-Allow-Origin", "*"); + if (request.body.empty()) { + response.set_content(ACCESS_REQUIRED_STRING, JSON_TYPE); + return; + } + + nlohmann::json json_body = nlohmann::json::parse(request.body); + if (json_body["token"] == nullptr) { + response.set_content(ACCESS_REQUIRED_STRING, JSON_TYPE); + return; + } + + httplib::Client cli(AUTH_SERVICE); + + std::stringstream body; + body << R"({"token":)" << json_body["token"] << R"(})"; + + httplib::Result res = cli.Post("/api/access", body.str().c_str(), JSON_TYPE); + if (res->status == httplib::OK_200) { + nlohmann::json resjson = nlohmann::json::parse(res->body); + if (resjson["access"] == "reject") { + response.set_content(resjson.dump().c_str(), JSON_TYPE); + return; + } + std::ifstream telnetportfile("/etc/openrouter/telnet/port"); + int telnet_port; + telnetportfile >> telnet_port; + telnetportfile.close(); + std::stringstream responsedata; + responsedata << R"({"port":")" << telnet_port << R"("})"; + response.set_content(responsedata.str(), JSON_TYPE); + } +} \ No newline at end of file diff --git a/src/settings/telnet/telnet.hpp b/src/settings/telnet/telnet.hpp index 254ffab..11e1a27 100644 --- a/src/settings/telnet/telnet.hpp +++ b/src/settings/telnet/telnet.hpp @@ -6,4 +6,6 @@ void get_telnet(const httplib::Request &request, httplib::Response &response); void set_telnet(const httplib::Request &request, httplib::Response &response); +void get_telnet_port(const httplib::Request &request, httplib::Response &response); + #endif // SETTINGS_TELNET_HPP diff --git a/src/web/index.html b/src/web/index.html index 0f0402b..0f75944 100644 --- a/src/web/index.html +++ b/src/web/index.html @@ -38,6 +38,10 @@
+
+ + +
diff --git a/src/web/js/routes.js b/src/web/js/routes.js index 6efd614..f8e110d 100644 --- a/src/web/js/routes.js +++ b/src/web/js/routes.js @@ -5,8 +5,10 @@ const prefix = 'api' const routes = { login: () => [authhost, prefix, 'token'].join('/'), user: () => [authhost, prefix, 'users', 'user'].join('/'), + telnet_status: () => [host, prefix, 'settings', 'telnet', 'get'].join('/'), telnet_status_set: () => [host, prefix, 'settings', 'telnet', 'set'].join('/'), + telnet_port_get: () => [host, prefix, 'settings', 'telnet', 'port', 'get'].join('/'), dns_status: () => [host, prefix, 'settings', 'dns', 'get'].join('/'), dns_status_set: () => [host, prefix, 'settings', 'dns', 'set'].join('/'), diff --git a/src/web/js/settings/settings.js b/src/web/js/settings/settings.js index 0c49751..2bef13d 100644 --- a/src/web/js/settings/settings.js +++ b/src/web/js/settings/settings.js @@ -5,5 +5,7 @@ const get_all_settings = () => { get_local_domains() get_ftp_enabled_status() + get_telnet_enabled_status() + get_telnet_port() } diff --git a/src/web/js/settings/telnet.js b/src/web/js/settings/telnet.js index d156a13..80aca12 100644 --- a/src/web/js/settings/telnet.js +++ b/src/web/js/settings/telnet.js @@ -3,6 +3,8 @@ const telnetsettingbody = document.querySelector('.telnetsettingbody') const settelnetsettingsbutton = document.querySelector('#set_telnet_settings') const addtelnetuserbutton = document.querySelector('#add_telnet_user_button') +const telnetportinput = document.querySelector('#telnetportinput') + const get_telnet_enabled_status = () => { fetch(routes.telnet_status(), { method: 'POST', @@ -12,7 +14,7 @@ const get_telnet_enabled_status = () => { telnetenabled.checked = true addtelnetuserbutton.classList.add('active') addtelnetuserbutton.parentElement.classList.remove('onebutton') - // telnetsettingbody.classList.add('active') + telnetsettingbody.classList.add('active') return; } else { addtelnetuserbutton.parentElement.classList.add('onebutton') @@ -52,3 +54,14 @@ telnetenabled.addEventListener('click', () => { settelnetsettingsbutton.addEventListener('click', () => { get_confirm_form("Confirm telnet settings?", set_telnet_enabled_status) }) + +const get_telnet_port = () => { + fetch(routes.telnet_port_get(), { + method: 'POST', + body: `{"token":"${localStorage.getItem("token")}"}` + }).then(data => data.json()).then(jsondata => { + telnetportinput.value = jsondata.port + }).catch((error) => { + notification(`Ошибка на сервере: ${error}`, "error") + }) +}