From d9366a26d6ef1a82eeccd7d7523db25d91e4efc1 Mon Sep 17 00:00:00 2001 From: swirl Date: Thu, 1 Jul 2021 19:30:30 -0400 Subject: initial register command test --- src/command/cmd_defs.c | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) (limited to 'src/command/cmd_defs.c') diff --git a/src/command/cmd_defs.c b/src/command/cmd_defs.c index 423de94e..8a08e236 100644 --- a/src/command/cmd_defs.c +++ b/src/command/cmd_defs.c @@ -2642,6 +2642,32 @@ static struct cmd_t command_defs[] = { CMD_NOEXAMPLES }, + { "/register", + parse_args, 2, 6, NULL, + CMD_NOSUBFUNCS + CMD_MAINFUNC(cmd_register) + CMD_TAGS( + CMD_TAG_CONNECTION) + CMD_SYN( + "/register [port ] [tls force|allow|trust|legacy|disable]") + CMD_DESC( + "Register an account on a server.") + CMD_ARGS( + { "", "Server to register account on." }, + { "", "Username to register with." }, + { "port ", "The port to use if different to the default (5222, or 5223 for SSL)." }, + { "tls force", "Force TLS connection, and fail if one cannot be established. This is the default behavior." }, + { "tls allow", "Use TLS for the connection if it is available." }, + { "tls trust", "Force TLS connection and trust server's certificate." }, + { "tls legacy", "Use legacy TLS for the connection. This forces TLS just after the TCP connection is established. Use when a server doesn't support STARTTLS." }, + { "tls disable", "Disable TLS for the connection." }) + CMD_EXAMPLES( + "/register valhalla.edda odin", + "/register vanaheimr.edda freyr port 5678", + "/register 127.0.0.1 me tls disable", + "/register my.xmppserv.er someuser port 5443 tls force") + }, + // NEXT-COMMAND (search helper) }; @@ -3012,3 +3038,4 @@ command_mangen(void) g_free(header); g_list_free(cmds); } + -- cgit 1.4.1-2-gfad0 From 5ea1ccbb468bd6c1195cb85fe29ac664e74436e7 Mon Sep 17 00:00:00 2001 From: swirl Date: Thu, 1 Jul 2021 21:29:09 -0400 Subject: /register: parameter updates add auth param, switch host and username params, rename host param to server --- src/command/cmd_defs.c | 18 ++++++++++-------- src/command/cmd_funcs.c | 20 ++++++++++++++------ 2 files changed, 24 insertions(+), 14 deletions(-) (limited to 'src/command/cmd_defs.c') diff --git a/src/command/cmd_defs.c b/src/command/cmd_defs.c index 8a08e236..80d98827 100644 --- a/src/command/cmd_defs.c +++ b/src/command/cmd_defs.c @@ -2649,23 +2649,25 @@ static struct cmd_t command_defs[] = { CMD_TAGS( CMD_TAG_CONNECTION) CMD_SYN( - "/register [port ] [tls force|allow|trust|legacy|disable]") + "/register [port ] [tls force|allow|trust|legacy|disable] [auth default|legacy]") CMD_DESC( "Register an account on a server.") CMD_ARGS( - { "", "Server to register account on." }, { "", "Username to register with." }, + { "", "Server to register account on." }, { "port ", "The port to use if different to the default (5222, or 5223 for SSL)." }, { "tls force", "Force TLS connection, and fail if one cannot be established. This is the default behavior." }, { "tls allow", "Use TLS for the connection if it is available." }, - { "tls trust", "Force TLS connection and trust server's certificate." }, + { "tls trust", "Force TLS connection and trust the server's certificate." }, { "tls legacy", "Use legacy TLS for the connection. This forces TLS just after the TCP connection is established. Use when a server doesn't support STARTTLS." }, - { "tls disable", "Disable TLS for the connection." }) + { "tls disable", "Disable TLS for the connection." }, + { "auth default", "Default authentication process." }, + { "auth legacy", "Allow legacy authentication." }) CMD_EXAMPLES( - "/register valhalla.edda odin", - "/register vanaheimr.edda freyr port 5678", - "/register 127.0.0.1 me tls disable", - "/register my.xmppserv.er someuser port 5443 tls force") + "/register odin valhalla.edda ", + "/register freyr vanaheimr.edda port 5678", + "/register me 127.0.0.1 tls disable", + "/register someuser my.xmppserv.er port 5443 tls force") }, // NEXT-COMMAND (search helper) diff --git a/src/command/cmd_funcs.c b/src/command/cmd_funcs.c index a00c6a46..68eec91b 100644 --- a/src/command/cmd_funcs.c +++ b/src/command/cmd_funcs.c @@ -9545,7 +9545,7 @@ cmd_silence(ProfWin* window, const char* const command, gchar** args) gboolean cmd_register(ProfWin* window, const char* const command, gchar** args) { - gchar* opt_keys[] = { "port", "tls", NULL }; + gchar* opt_keys[] = { "port", "tls", "auth", NULL }; gboolean parsed; GHashTable* options = parse_options(&args[2], opt_keys, &parsed); @@ -9579,17 +9579,25 @@ cmd_register(ProfWin* window, const char* const command, gchar** args) } } - char* host = args[0]; + char* auth_policy = g_hash_table_lookup(options, "auth"); + if (auth_policy && (g_strcmp0(auth_policy, "default") != 0) && (g_strcmp0(auth_policy, "legacy") != 0)) { + cons_bad_cmd_usage(command); + cons_show(""); + options_destroy(options); + return TRUE; + } + + char* server = args[1]; - jabber_conn_status_t conn_status = connection_connect_raw(host, port, tls_policy, "default"); + jabber_conn_status_t conn_status = connection_connect_raw(server, port, tls_policy, auth_policy); if (conn_status == JABBER_DISCONNECTED) { - cons_show_error("Connection attempt to server %s port %d failed.", host, port); - log_info("Connection attempt to server %s port %d failed.", host, port); + cons_show_error("Connection attempt to server %s port %d failed.", server, port); + log_info("Connection attempt to server %s port %d failed.", server, port); return TRUE; } - char* username = args[1]; + char* username = args[0]; char* passwd = ui_ask_password(false); char* confirm_passwd = ui_ask_password(true); -- cgit 1.4.1-2-gfad0 From 87d2c95c870d697822c7d25f4c734e259a893d85 Mon Sep 17 00:00:00 2001 From: swirl Date: Tue, 17 Aug 2021 14:09:32 -0400 Subject: registration: remove auth param and excess functions --- src/command/cmd_defs.c | 6 +-- src/command/cmd_funcs.c | 10 +--- src/event/client_events.c | 7 --- src/event/client_events.h | 1 - src/xmpp/connection.c | 115 +--------------------------------------------- src/xmpp/connection.h | 5 +- src/xmpp/iq.c | 32 ------------- src/xmpp/session.c | 37 --------------- src/xmpp/xmpp.h | 2 - 9 files changed, 5 insertions(+), 210 deletions(-) (limited to 'src/command/cmd_defs.c') diff --git a/src/command/cmd_defs.c b/src/command/cmd_defs.c index 80d98827..09523bd7 100644 --- a/src/command/cmd_defs.c +++ b/src/command/cmd_defs.c @@ -2649,7 +2649,7 @@ static struct cmd_t command_defs[] = { CMD_TAGS( CMD_TAG_CONNECTION) CMD_SYN( - "/register [port ] [tls force|allow|trust|legacy|disable] [auth default|legacy]") + "/register [port ] [tls force|allow|trust|legacy|disable]") CMD_DESC( "Register an account on a server.") CMD_ARGS( @@ -2660,9 +2660,7 @@ static struct cmd_t command_defs[] = { { "tls allow", "Use TLS for the connection if it is available." }, { "tls trust", "Force TLS connection and trust the server's certificate." }, { "tls legacy", "Use legacy TLS for the connection. This forces TLS just after the TCP connection is established. Use when a server doesn't support STARTTLS." }, - { "tls disable", "Disable TLS for the connection." }, - { "auth default", "Default authentication process." }, - { "auth legacy", "Allow legacy authentication." }) + { "tls disable", "Disable TLS for the connection." }) CMD_EXAMPLES( "/register odin valhalla.edda ", "/register freyr vanaheimr.edda port 5678", diff --git a/src/command/cmd_funcs.c b/src/command/cmd_funcs.c index b7c6afad..8b4dc3fa 100644 --- a/src/command/cmd_funcs.c +++ b/src/command/cmd_funcs.c @@ -9579,14 +9579,6 @@ cmd_register(ProfWin* window, const char* const command, gchar** args) } } - char* auth_policy = g_hash_table_lookup(options, "auth"); - if (auth_policy && (g_strcmp0(auth_policy, "default") != 0) && (g_strcmp0(auth_policy, "legacy") != 0)) { - cons_bad_cmd_usage(command); - cons_show(""); - options_destroy(options); - return TRUE; - } - char* username = args[0]; char* server = args[1]; @@ -9595,7 +9587,7 @@ cmd_register(ProfWin* window, const char* const command, gchar** args) if (g_strcmp0(passwd, confirm_passwd) == 0) { log_info("Attempting to register account %s on server %s.", username, server); - connection_register(server, port, tls_policy, auth_policy, username, passwd); + connection_register(server, port, tls_policy, username, passwd); } else { cons_show("The two passwords do not match."); } diff --git a/src/event/client_events.c b/src/event/client_events.c index 14b5b8c4..a25ce106 100644 --- a/src/event/client_events.c +++ b/src/event/client_events.c @@ -81,13 +81,6 @@ cl_ev_connect_account(ProfAccount* account) return session_connect_with_account(account); } -jabber_conn_status_t -cl_ev_connect_raw(const char* const altdomain, const int port, const char* const tls_policy, const char* const auth_policy) -{ - cons_show("Raw connecting to %s", altdomain); - return session_connect_raw(altdomain, port, tls_policy, auth_policy); -} - void cl_ev_disconnect(void) { diff --git a/src/event/client_events.h b/src/event/client_events.h index 8fbc7a05..de180d21 100644 --- a/src/event/client_events.h +++ b/src/event/client_events.h @@ -40,7 +40,6 @@ jabber_conn_status_t cl_ev_connect_jid(const char* const jid, const char* const passwd, const char* const altdomain, const int port, const char* const tls_policy, const char* const auth_policy); jabber_conn_status_t cl_ev_connect_account(ProfAccount* account); -jabber_conn_status_t cl_ev_connect_raw(const char* const altdomain, const int port, const char* const tls_policy, const char* const auth_policy); void cl_ev_disconnect(void); diff --git a/src/xmpp/connection.c b/src/xmpp/connection.c index 2d2df7c2..038fbb51 100644 --- a/src/xmpp/connection.c +++ b/src/xmpp/connection.c @@ -251,111 +251,6 @@ connection_connect(const char* const jid, const char* const passwd, const char* return conn.conn_status; } -jabber_conn_status_t -connection_connect_raw(const char* const altdomain, int port, - const char* const tls_policy, const char* const auth_policy) -{ - long flags; - - Jid* jidp = jid_create(altdomain); - if (jidp == NULL) { - log_error("Malformed JID not able to connect: %s", altdomain); - conn.conn_status = JABBER_DISCONNECTED; - return conn.conn_status; - } - - _compute_identifier(jidp->barejid); - jid_destroy(jidp); - - if (conn.xmpp_log) { - free(conn.xmpp_log); - } - conn.xmpp_log = _xmpp_get_file_logger(); - - if (conn.xmpp_conn) { - xmpp_conn_release(conn.xmpp_conn); - } - if (conn.xmpp_ctx) { - xmpp_ctx_free(conn.xmpp_ctx); - } - conn.xmpp_ctx = xmpp_ctx_new(NULL, conn.xmpp_log); - if (conn.xmpp_ctx == NULL) { - log_warning("Failed to get libstrophe ctx during connect"); - return JABBER_DISCONNECTED; - } - conn.xmpp_conn = xmpp_conn_new(conn.xmpp_ctx); - if (conn.xmpp_conn == NULL) { - log_warning("Failed to get libstrophe conn during connect"); - return JABBER_DISCONNECTED; - } - xmpp_conn_set_jid(conn.xmpp_conn, altdomain); - - flags = xmpp_conn_get_flags(conn.xmpp_conn); - - if (!tls_policy || (g_strcmp0(tls_policy, "force") == 0)) { - flags |= XMPP_CONN_FLAG_MANDATORY_TLS; - } else if (g_strcmp0(tls_policy, "trust") == 0) { - flags |= XMPP_CONN_FLAG_MANDATORY_TLS; - flags |= XMPP_CONN_FLAG_TRUST_TLS; - } else if (g_strcmp0(tls_policy, "disable") == 0) { - flags |= XMPP_CONN_FLAG_DISABLE_TLS; - } else if (g_strcmp0(tls_policy, "legacy") == 0) { - flags |= XMPP_CONN_FLAG_LEGACY_SSL; - } - - if (auth_policy && (g_strcmp0(auth_policy, "legacy") == 0)) { - flags |= XMPP_CONN_FLAG_LEGACY_AUTH; - } - - xmpp_conn_set_flags(conn.xmpp_conn, flags); - - /* Print debug logs that can help when users share the logs */ - if (flags != 0) { - log_debug("Connecting with flags (0x%lx):", flags); -#define LOG_FLAG_IF_SET(name) \ - if (flags & name) { \ - log_debug(" " #name); \ - } - LOG_FLAG_IF_SET(XMPP_CONN_FLAG_MANDATORY_TLS); - LOG_FLAG_IF_SET(XMPP_CONN_FLAG_TRUST_TLS); - LOG_FLAG_IF_SET(XMPP_CONN_FLAG_DISABLE_TLS); - LOG_FLAG_IF_SET(XMPP_CONN_FLAG_LEGACY_SSL); - LOG_FLAG_IF_SET(XMPP_CONN_FLAG_LEGACY_AUTH); -#undef LOG_FLAG_IF_SET - } - -#ifdef HAVE_LIBMESODE - char* cert_path = prefs_get_tls_certpath(); - if (cert_path) { - xmpp_conn_tlscert_path(conn.xmpp_conn, cert_path); - free(cert_path); - } - - int connect_status = xmpp_connect_raw( - conn.xmpp_conn, - altdomain, - port, - _connection_certfail_cb, - _connection_handler, - conn.xmpp_ctx); -#else - int connect_status = xmpp_connect_raw( - conn.xmpp_conn, - altdomain, - port, - _connection_handler, - conn.xmpp_ctx); -#endif - - if (connect_status == 0) { - conn.conn_status = JABBER_RAW_CONNECTING; - } else { - conn.conn_status = JABBER_DISCONNECTED; - } - - return conn.conn_status; -} - static int iq_reg2_cb(xmpp_conn_t *xmpp_conn, xmpp_stanza_t *stanza, void *userdata) { const char *type; @@ -578,8 +473,7 @@ _register_handler(xmpp_conn_t *xmpp_conn, } jabber_conn_status_t -connection_register(const char* const altdomain, int port, - const char* const tls_policy, const char* const auth_policy, +connection_register(const char* const altdomain, int port, const char* const tls_policy, const char* const username, const char* const password) { long flags; @@ -630,10 +524,6 @@ connection_register(const char* const altdomain, int port, flags |= XMPP_CONN_FLAG_LEGACY_SSL; } - if (auth_policy && (g_strcmp0(auth_policy, "legacy") == 0)) { - flags |= XMPP_CONN_FLAG_LEGACY_AUTH; - } - xmpp_conn_set_flags(conn.xmpp_conn, flags); /* Print debug logs that can help when users share the logs */ @@ -647,7 +537,6 @@ connection_register(const char* const altdomain, int port, LOG_FLAG_IF_SET(XMPP_CONN_FLAG_TRUST_TLS); LOG_FLAG_IF_SET(XMPP_CONN_FLAG_DISABLE_TLS); LOG_FLAG_IF_SET(XMPP_CONN_FLAG_LEGACY_SSL); - LOG_FLAG_IF_SET(XMPP_CONN_FLAG_LEGACY_AUTH); #undef LOG_FLAG_IF_SET } @@ -670,7 +559,6 @@ connection_register(const char* const altdomain, int port, int connect_status = xmpp_connect_raw( conn.xmpp_conn, - //strdup(altdomain), altdomain, port, _connection_certfail_cb, @@ -679,7 +567,6 @@ connection_register(const char* const altdomain, int port, #else int connect_status = xmpp_connect_raw( conn.xmpp_conn, - //strdup(altdomain), altdomain, port, _register_handler, diff --git a/src/xmpp/connection.h b/src/xmpp/connection.h index 0c8669c6..0f0c2c10 100644 --- a/src/xmpp/connection.h +++ b/src/xmpp/connection.h @@ -46,10 +46,7 @@ void connection_check_events(void); jabber_conn_status_t connection_connect(const char* const fulljid, const char* const passwd, const char* const altdomain, int port, const char* const tls_policy, const char* const auth_policy); -jabber_conn_status_t connection_connect_raw(const char* const altdomain, int port, - const char* const tls_policy, const char* const auth_policy); -jabber_conn_status_t connection_register(const char* const altdomain, int port, - const char* const tls_policy, const char* const auth_policy, +jabber_conn_status_t connection_register(const char* const altdomain, int port, const char* const tls_policy, const char* const username, const char* const password); void connection_disconnect(void); void connection_set_disconnected(void); diff --git a/src/xmpp/iq.c b/src/xmpp/iq.c index 2490fd9c..2118b6ba 100644 --- a/src/xmpp/iq.c +++ b/src/xmpp/iq.c @@ -150,7 +150,6 @@ static int _command_list_result_handler(xmpp_stanza_t* const stanza, void* const static int _command_exec_response_handler(xmpp_stanza_t* const stanza, void* const userdata); static int _mam_rsm_id_handler(xmpp_stanza_t* const stanza, void* const userdata); static int _register_change_password_result_id_handler(xmpp_stanza_t* const stanza, void* const userdata); -static int _register_new_account_result_id_handler(xmpp_stanza_t* const stanza, void* const userdata); static void _iq_free_room_data(ProfRoomInfoData* roominfo); static void _iq_free_affiliation_set(ProfPrivilegeSet* affiliation_set); @@ -2655,37 +2654,6 @@ _mam_rsm_id_handler(xmpp_stanza_t* const stanza, void* const userdata) return 0; } -void -iq_register_new_account(const char* const user, const char* const password) -{ - xmpp_ctx_t* const ctx = connection_get_ctx(); - xmpp_stanza_t* iq = stanza_register_new_account(ctx, user, password); - - const char* id = xmpp_stanza_get_id(iq); - iq_id_handler_add(id, _register_new_account_result_id_handler, NULL, NULL); // FIXME: function doesn't seem to ever run? - - log_debug("HI hi sending registration stanza"); - iq_send_stanza(iq); - log_debug("registration stanza has been sent"); - xmpp_stanza_release(iq); -} - -static int -_register_new_account_result_id_handler(xmpp_stanza_t* const stanza, void* const userdata) -{ - const char* type = xmpp_stanza_get_type(stanza); - if (g_strcmp0(type, "error") == 0) { - char* error_message = stanza_get_error_message(stanza); - cons_show_error("Server error: %s", error_message); - log_debug("Registration error: %s", error_message); - free(error_message); - } else { - cons_show("Registration successful."); - log_debug("Registration successful."); - } - return 0; -} - void iq_register_change_password(const char* const user, const char* const password) { diff --git a/src/xmpp/session.c b/src/xmpp/session.c index ccd36865..de255116 100644 --- a/src/xmpp/session.c +++ b/src/xmpp/session.c @@ -204,43 +204,6 @@ session_connect_with_details(const char* const jid, const char* const passwd, co saved_details.auth_policy); } -jabber_conn_status_t -session_connect_raw(const char* const altdomain, const int port, const char* const tls_policy, - const char* const auth_policy) -{ - assert(altdomain != NULL); - - _session_free_saved_account(); - _session_free_saved_details(); - - // save details for reconnect - saved_details.altdomain = strdup(altdomain); - if (port != 0) { - saved_details.port = port; - } else { - saved_details.port = 0; - } - if (tls_policy) { - saved_details.tls_policy = strdup(tls_policy); - } else { - saved_details.tls_policy = NULL; - } - if (auth_policy) { - saved_details.auth_policy = strdup(auth_policy); - } else { - saved_details.auth_policy = NULL; - } - - // raw connect - log_info("Raw connecting to server: %s", altdomain); - - return connection_connect_raw( - saved_details.altdomain, - saved_details.port, - saved_details.tls_policy, - saved_details.auth_policy); -} - void session_autoping_fail(void) { diff --git a/src/xmpp/xmpp.h b/src/xmpp/xmpp.h index 0bdf6934..b961afe9 100644 --- a/src/xmpp/xmpp.h +++ b/src/xmpp/xmpp.h @@ -186,7 +186,6 @@ jabber_conn_status_t session_connect_with_details(const char* const jid, const c const char* const altdomain, const int port, const char* const tls_policy, const char* const auth_policy); jabber_conn_status_t session_connect_with_account(const ProfAccount* const account); -jabber_conn_status_t session_connect_raw(const char* const altdomain, const int port, const char* const tls_policy, const char* const auth_policy); void session_disconnect(void); void session_shutdown(void); void session_process_events(void); @@ -270,7 +269,6 @@ void iq_command_list(const char* const target); void iq_command_exec(const char* const target, const char* const command); void iq_mam_request(ProfChatWin* win); void iq_register_change_password(const char* const user, const char* const password); -void iq_register_new_account(const char* const user, const char* const password); void iq_muc_register_nick(const char* const roomjid); EntityCapabilities* caps_lookup(const char* const jid); -- cgit 1.4.1-2-gfad0 74 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674