| 818 | } |
| 819 | |
| 820 | static void ShowCommands (std::stringstream& s, uint32_t token) |
| 821 | { |
| 822 | std::string webroot; i2p::config::GetOption("http.webroot", webroot); |
| 823 | |
| 824 | s << "<b>" << tr("Router commands") << "</b><br>\r\n<br>\r\n<div class=\"commands\">\r\n"; |
| 825 | s << " <a href=\"" << webroot << "?cmd=" << HTTP_COMMAND_RUN_PEER_TEST << "&token=" << token << "\">" << tr("Run peer test") << "</a><br>\r\n"; |
| 826 | s << " <a href=\"" << webroot << "?cmd=" << HTTP_COMMAND_RELOAD_TUNNELS_CONFIG << "&token=" << token << "\">" << tr("Reload tunnels configuration") << "</a><br>\r\n"; |
| 827 | |
| 828 | if (i2p::context.AcceptsTunnels ()) |
| 829 | s << " <a href=\"" << webroot << "?cmd=" << HTTP_COMMAND_DISABLE_TRANSIT << "&token=" << token << "\">" << tr("Decline transit tunnels") << "</a><br>\r\n"; |
| 830 | else |
| 831 | s << " <a href=\"" << webroot << "?cmd=" << HTTP_COMMAND_ENABLE_TRANSIT << "&token=" << token << "\">" << tr("Accept transit tunnels") << "</a><br>\r\n"; |
| 832 | |
| 833 | #if ((!defined(WIN32) && !defined(QT_GUI_LIB) && !defined(ANDROID)) || defined(ANDROID_BINARY)) |
| 834 | if (Daemon.gracefulShutdownInterval) |
| 835 | s << " <a href=\"" << webroot << "?cmd=" << HTTP_COMMAND_SHUTDOWN_CANCEL << "&token=" << token << "\">" << tr("Cancel graceful shutdown") << "</a><br>\r\n"; |
| 836 | else |
| 837 | s << " <a href=\"" << webroot << "?cmd=" << HTTP_COMMAND_SHUTDOWN_START << "&token=" << token << "\">" << tr("Start graceful shutdown") << "</a><br>\r\n"; |
| 838 | #elif defined(WIN32_APP) |
| 839 | if (i2p::util::DaemonWin32::Instance().isGraceful) |
| 840 | s << " <a href=\"" << webroot << "?cmd=" << HTTP_COMMAND_SHUTDOWN_CANCEL << "&token=" << token << "\">" << tr("Cancel graceful shutdown") << "</a><br>\r\n"; |
| 841 | else |
| 842 | s << " <a href=\"" << webroot << "?cmd=" << HTTP_COMMAND_SHUTDOWN_START << "&token=" << token << "\">" << tr("Start graceful shutdown") << "</a><br>\r\n"; |
| 843 | #endif |
| 844 | |
| 845 | s << " <a href=\"" << webroot << "?cmd=" << HTTP_COMMAND_SHUTDOWN_NOW << "&token=" << token << "\">" << tr("Force shutdown") << "</a><br><br>\r\n"; |
| 846 | s << " <a href=\"" << webroot << "?cmd=" << HTTP_COMMAND_RELOAD_CSS << "&token=" << token << "\">" << tr("Reload external CSS styles") << "</a>\r\n"; |
| 847 | s << "</div>"; |
| 848 | |
| 849 | s << "<br>\r\n<small>" << tr("<b>Note:</b> any action done here are not persistent and not changes your config files.") << "</small>\r\n<br>\r\n"; |
| 850 | |
| 851 | auto loglevel = i2p::log::Logger().GetLogLevel(); |
| 852 | s << "<b>" << tr("Logging level") << "</b><br>\r\n"; |
| 853 | s << " <a class=\"button" << (loglevel == eLogNone ? " selected" : "") << "\" href=\"" << webroot << "?cmd=" << HTTP_COMMAND_LOGLEVEL << "&level=none&token=" << token << "\"> none </a> \r\n"; |
| 854 | s << " <a class=\"button" << (loglevel == eLogCritical ? " selected" : "") << "\" href=\"" << webroot << "?cmd=" << HTTP_COMMAND_LOGLEVEL << "&level=critical&token=" << token << "\"> critical </a> \r\n"; |
| 855 | s << " <a class=\"button" << (loglevel == eLogError ? " selected" : "") << "\" href=\"" << webroot << "?cmd=" << HTTP_COMMAND_LOGLEVEL << "&level=error&token=" << token << "\"> error </a> \r\n"; |
| 856 | s << " <a class=\"button" << (loglevel == eLogWarning ? " selected" : "") << "\" href=\"" << webroot << "?cmd=" << HTTP_COMMAND_LOGLEVEL << "&level=warn&token=" << token << "\"> warn </a> \r\n"; |
| 857 | s << " <a class=\"button" << (loglevel == eLogInfo ? " selected" : "") << "\" href=\"" << webroot << "?cmd=" << HTTP_COMMAND_LOGLEVEL << "&level=info&token=" << token << "\"> info </a> \r\n"; |
| 858 | s << " <a class=\"button" << (loglevel == eLogDebug ? " selected" : "") << "\" href=\"" << webroot << "?cmd=" << HTTP_COMMAND_LOGLEVEL << "&level=debug&token=" << token << "\"> debug </a><br>\r\n<br>\r\n"; |
| 859 | |
| 860 | uint32_t maxTunnels = i2p::tunnel::tunnels.GetMaxNumTransitTunnels (); |
| 861 | s << "<b>" << tr("Transit tunnels limit") << "</b><br>\r\n"; |
| 862 | s << "<form method=\"get\" action=\"" << webroot << "\">\r\n"; |
| 863 | s << " <input type=\"hidden\" name=\"cmd\" value=\"" << HTTP_COMMAND_LIMITTRANSIT << "\">\r\n"; |
| 864 | s << " <input type=\"hidden\" name=\"token\" value=\"" << token << "\">\r\n"; |
| 865 | s << " <input type=\"number\" min=\"2\" max=\"" << TRANSIT_TUNNELS_LIMIT <<"\" name=\"limit\" value=\"" << maxTunnels << "\">\r\n"; |
| 866 | s << " <button type=\"submit\">" << tr("Change") << "</button>\r\n"; |
| 867 | s << "</form>\r\n<br>\r\n"; |
| 868 | |
| 869 | // get current used language |
| 870 | std::string currLang = i2p::client::context.GetLanguage ()->GetLanguage(); |
| 871 | |
| 872 | s << "<b>" |
| 873 | << tr("Change language") |
| 874 | << "</b><br>\r\n" |
| 875 | << "<form method=\"get\" action=\"" << webroot << "\">\r\n" |
| 876 | << " <input type=\"hidden\" name=\"cmd\" value=\"" << HTTP_COMMAND_SETLANGUAGE << "\">\r\n" |
| 877 | << " <input type=\"hidden\" name=\"token\" value=\"" << token << "\">\r\n" |
no test coverage detected