diff --git a/libtransport/Config.cpp b/libtransport/Config.cpp index b7228e55329de1c7b1b1f9d871973da84f8a7601..7097437985abd5718b8a647784d4726d5d8aaecf 100644 --- a/libtransport/Config.cpp +++ b/libtransport/Config.cpp @@ -104,6 +104,7 @@ bool Config::load(std::istream &ifs, boost::program_options::options_description ("service.vip_only", value()->default_value(false), "") ("service.vip_message", value()->default_value(""), "") ("service.reconnect_all_users", value()->default_value(false), "") + ("service.frontend", value()->default_value("xmpp"), "") ("service.web_directory", value()->default_value(""), "Full path to directory used to save files to which the links are sent to users.") ("service.web_url", value()->default_value(""), "URL on which files in web_directory are accessible.") ("vhosts.vhost", value >()->multitoken(), "") @@ -113,7 +114,8 @@ bool Config::load(std::istream &ifs, boost::program_options::options_description ("registration.enable_public_registration", value()->default_value(true), "True if users should be able to register.") ("registration.language", value()->default_value("en"), "Default language for registration form") ("registration.instructions", value()->default_value("Enter your legacy network username and password."), "Instructions showed to user in registration form") - ("registration.username_label", value()->default_value("Legacy network username:"), "Label for username field") + ("registration.username_label", value()->default_value("3rd-party network username"), "Label for username field") + ("registration.password_label", value()->default_value("3rd-party network password"), "Label for password field") ("registration.username_mask", value()->default_value(""), "Username mask") ("registration.allowed_usernames", value()->default_value(""), "Allowed usernames") ("registration.auto_register", value()->default_value(false), "Register new user automatically when the presence arrives.") diff --git a/spectrum/src/frontends/slack/SlackFrontend.cpp b/spectrum/src/frontends/slack/SlackFrontend.cpp index c921966840c2d8b036424f5757aa30380541c9dc..f1666fecc6ae899ef2142cfe7d31adbc5358a0d9 100644 --- a/spectrum/src/frontends/slack/SlackFrontend.cpp +++ b/spectrum/src/frontends/slack/SlackFrontend.cpp @@ -123,7 +123,12 @@ std::string SlackFrontend::getOAuth2URL(const std::vector &args) { } std::string SlackFrontend::getRegistrationFields() { - return "Main Slack channel\n3rd-party network username\n3rd-party network password"; + std::string fields = "Main Slack channel"; + if (CONFIG_BOOL(m_config, "registration.needRegistration")) { + fields += "\n" + CONFIG_STRING(m_config, "registration.username_label") + "\n"; + fields += CONFIG_STRING(m_config, "registration.password_label"); + } + return fields; } bool SlackFrontend::handleAdminMessage(Swift::Message::ref message) { diff --git a/spectrum_manager/src/APIServer.cpp b/spectrum_manager/src/APIServer.cpp index 9a296e665c9962a73fca0a7590ae1b74ee6e2602..fc1d99e9621a8a011e2d2b5aca10cf6fe6c3cd65 100644 --- a/spectrum_manager/src/APIServer.cpp +++ b/spectrum_manager/src/APIServer.cpp @@ -256,6 +256,18 @@ void APIServer::serve_instances_register(Server *server, Server::session *sessio std::string uin = get_http_var(hm, "uin"); std::string password = get_http_var(hm, "password"); + // For some networks like IRC, there is no registration. + // We detect such networks according to registration_fields and use + // "unknown" uin for them. + if (uin.empty()) { + std::string response = server->send_command(instance, "registration_fields"); + std::vector fields; + boost::split(fields, response, boost::is_any_of("\n")); + if (fields.size() == 1) { + uin = "unknown"; + } + } + if (jid.empty() || uin.empty()) { send_ack(conn, true, "Insufficient data."); } @@ -363,8 +375,7 @@ void APIServer::serve_instances_register_form(Server *server, Server::session *s std::vector fields; boost::split(fields, response, boost::is_any_of("\n")); - if (fields.size() < 3) { - fields.clear(); + if (fields.empty()) { fields.push_back("Jabber ID"); fields.push_back("3rd-party network username"); fields.push_back("3rd-party network password"); @@ -374,8 +385,8 @@ void APIServer::serve_instances_register_form(Server *server, Server::session *s json.SetObject(); json.AddMember("error", 0, json.GetAllocator()); json.AddMember("username_label", fields[0].c_str(), json.GetAllocator()); - json.AddMember("legacy_username_label", fields[1].c_str(), json.GetAllocator()); - json.AddMember("password_label", fields[2].c_str(), json.GetAllocator()); + json.AddMember("legacy_username_label", fields.size() >= 2 ? fields[1].c_str() : "", json.GetAllocator()); + json.AddMember("password_label", fields.size() >= 3 ? fields[2].c_str() : "", json.GetAllocator()); send_json(conn, json); } diff --git a/spectrum_manager/src/html/instances/register.shtml b/spectrum_manager/src/html/instances/register.shtml index e9995227f583103409c1ecf465fdeb279ad7b851..69584262cfdf09884ee2e6972db6ccb82ab750ba 100644 --- a/spectrum_manager/src/html/instances/register.shtml +++ b/spectrum_manager/src/html/instances/register.shtml @@ -9,11 +9,11 @@ -