From 6fd21e3bca80117d88f381515ac3150770164c42 Mon Sep 17 00:00:00 2001 From: Joel Klinghed Date: Fri, 11 Aug 2017 22:09:21 +0200 Subject: Minor improvements to the UI, mainly text improvements Added shortcut for Setup... and changed Connect... and Disconnect... to match (so F5, F6 and F7 resp.). Let dialog descriptions end with "." but remove from field descriptions. Change the statusbar to better match that we probably are going to run as a proxy the most of the time. --- src/monitor-gui.cc | 73 +++++++++++++++++++++++++++++++++++------------------- 1 file changed, 47 insertions(+), 26 deletions(-) (limited to 'src') diff --git a/src/monitor-gui.cc b/src/monitor-gui.cc index c28227b..b02f028 100644 --- a/src/monitor-gui.cc +++ b/src/monitor-gui.cc @@ -156,7 +156,7 @@ public: case 2: return "To"; case 3: - return "Data"; + return "Size"; case 4: return "Duration"; } @@ -254,7 +254,8 @@ private: static void format_size(std::string* out, size_t size, bool done) { char tmp[50]; - auto len = snprintf(tmp, sizeof(tmp), "%llu bytes", static_cast(size)); + auto len = snprintf(tmp, sizeof(tmp), "%llu bytes", + static_cast(size)); out->assign(tmp, len); if (!done) out->append(" ...", 4); } @@ -278,7 +279,8 @@ private: n += 1000000000ull; } char tmp[50]; - auto len = snprintf(tmp, sizeof(tmp), "%ld.%09lu", static_cast(s), static_cast(n)); + auto len = snprintf(tmp, sizeof(tmp), "%ld.%09lu", + static_cast(s), static_cast(n)); out->assign(tmp, len); } @@ -840,19 +842,16 @@ public: edit->add_item(ACTION_CLEAR, "Clear"); auto proxy = menu_->add_menu("Proxy"); - proxy->add_item(ACTION_SETUP, "Setup..."); - proxy->add_item(ACTION_CONNECT, "Connect...", - GuiMenu::Shortcut(GuiMenu::CTRL, 'C')); - proxy->add_item(ACTION_DISCONNECT, "Disconnect", - GuiMenu::Shortcut(GuiMenu::CTRL, 'D')); + proxy->add_item(ACTION_SETUP, "Setup...", GuiMenu::Shortcut(0, 5)); + proxy->add_item(ACTION_CONNECT, "Connect...", GuiMenu::Shortcut(0, 6)); + proxy->add_item(ACTION_DISCONNECT, "Disconnect", GuiMenu::Shortcut(0, 7)); #if HAVE_SSL auto tools = menu_->add_menu("Tools"); tools->add_item(ACTION_GENERATE_CA, "Generate CA..."); #endif // HAVE_SSL auto help = menu_->add_menu("Help"); - help->add_item(ACTION_ABOUT, "About...", - GuiMenu::Shortcut(0, 1)); + help->add_item(ACTION_ABOUT, "About...", GuiMenu::Shortcut(0, 1)); help->add_item(ACTION_PROXY_LOG, "Proxy log..."); main_->set_menu(menu_.get()); main_->set_statusbar(statusbar_.get()); @@ -860,7 +859,7 @@ public: main_->set_listmodel(packages_.get()); - statusbar_->set_status("Not connected"); + statusbar_->set_status("Not monitoring traffic"); menu_->enable_item(ACTION_DISCONNECT, false); lost_selection(main_.get()); @@ -890,29 +889,39 @@ public: setup_proxy(); proxy_logger_->clear(); auto dlg = std::unique_ptr( - new SetupFormDelegate(proxy_, proxy_config_.get(), proxy_logger_.get(), + new SetupFormDelegate(proxy_, proxy_config_.get(), + proxy_logger_.get(), monitor_.get(), main_->config(), looper_.get(), resolver_.get())); auto lst = std::unique_ptr( new SetupFormListener()); connect_.reset( GuiFormApply::create("Setup...", - "Setup a proxy to start monitoring traffic.", + "Setup a proxy to start monitoring traffic." + " Will catch all traffic sent to the proxy" + " address and port setup below." +#if HAVE_SSL + "\nIf you wish to intercept SSL traffic you need" + " to make the client program or device trust" + " the CA used. To generate a CA go to the Tools" + " menu." +#endif + , "Setup", dlg.get())); connect_->add_string("bind", "Address", main_->config()->get("bind", ""), "Address to listen for proxy connections on." - " Leave empty to listen on all interfaces."); + " Leave empty to listen on all interfaces"); connect_->add_string("port", "Port", main_->config()->get("port", "8080"), - "Port to listen for proxy connections on."); + "Port to listen for proxy connections on"); #if HAVE_SSL bool mitm = main_->config()->get("mitm", false); connect_->add_bool("mitm", "Intercept SSL traffic", mitm, "If enabled SSL connections will be intercepted" - " by the proxy to log unencrypted traffic."); + " by the proxy to log unencrypted traffic"); connect_->add_file("ssl-ca", "Certificate Authority", main_->config()->get("ssl-ca", main_->config()->get("genca-output", "")), @@ -949,7 +958,8 @@ public: new ConnectFormListener()); connect_.reset( GuiFormApply::create("Connect...", - "Enter address for monitor to connect to", + "Enter address and monitor port for a running" + " proxy daemon to connect to.", "Connect", dlg.get())); connect_->add_string("address", "Address", @@ -1052,9 +1062,9 @@ public: del.get())); dlg->add_string("issuer", "Issuer name", main_->config()->get("issuer", ""), - "Issuer name to use instead of the default."); + "Issuer name to use instead of the default"); dlg->add_file("output", "File", "", - "File to save certificate and key pair to.", + "File to save certificate and key pair to", GuiFile::FILE_SAVE, pem_filter_); dlg->add_listener(lst.get()); dlg->show(main_.get()); @@ -1175,22 +1185,33 @@ public: bool allow_connect, allow_disconnect; switch (state) { case Monitor::DISCONNECTED: - statusbar_->set_status("Not connected"); + statusbar_->set_status("Not monitoring traffic"); allow_connect = true; allow_disconnect = false; break; case Monitor::CONNECTED: - statusbar_->set_status("Connected"); + statusbar_->set_status("Connected to proxy, waiting to attach..."); allow_connect = false; allow_disconnect = true; break; case Monitor::CONNECTING: - statusbar_->set_status("Connecting..."); + statusbar_->set_status("Connecting to proxy..."); allow_connect = false; allow_disconnect = false; break; case Monitor::ATTACHED: - statusbar_->set_status("Connected and attached"); + if (proxy_) { + std::string tmp = "Listening on "; + auto bind = proxy_config_->get("proxy_bind", nullptr); + if (bind && *bind) { + tmp += bind; + tmp += ":"; + } + tmp += proxy_config_->get("proxy_port", "?"); + statusbar_->set_status(tmp); + } else { + statusbar_->set_status("Connected and attached to proxy"); + } allow_connect = false; allow_disconnect = true; break; @@ -1300,7 +1321,7 @@ private: if (!modified_) return false; std::unique_ptr form( GuiForm::create("Confirm?", - "If you continue you will lose unsaved packages")); + "If you continue you will lose any unsaved packages")); return !form->show(main_.get()); } @@ -1653,7 +1674,7 @@ private: if (is_pcap(file)) return load_pcap(file, packages); std::ifstream in(file); if (!in.good()) { - show_error("Unable to open " + file + " for reading"); + show_error("Unable to open " + file + " for reading."); return false; } auto delegate = std::unique_ptr( @@ -1676,7 +1697,7 @@ private: if (is_pcap(file)) return save_pcap(packages, file); std::ofstream out(file); if (!out.good()) { - show_error("Unable to open " + file + " for writing"); + show_error("Unable to open " + file + " for writing."); return false; } auto writer = std::unique_ptr(PackagesWriter::create(&out)); -- cgit v1.2.3-70-g09d2