Mercurial > hg
diff mcabber/src/main.c @ 298:35cda94e570d
Add /connect and /disconnect commands
author | Mikael Berthe <mikael@lilotux.net> |
---|---|
date | Sun, 10 Jul 2005 15:38:45 +0100 |
parents | f562b9af2de7 |
children | 12f919be3da5 |
line wrap: on
line diff
--- a/mcabber/src/main.c Sat Jul 09 23:20:36 2005 +0100 +++ b/mcabber/src/main.c Sun Jul 10 15:38:45 2005 +0100 @@ -34,9 +34,8 @@ // ut_WriteLog("Error in waitpid: errno=%d\n", errno); signal(SIGCHLD, sig_handler); } else if (signum == SIGTERM) { - // bud_TerminateBuddies(); + jb_disconnect(); scr_TerminateCurses(); - jb_disconnect(); printf("Killed by SIGTERM\nBye!\n"); exit(EXIT_SUCCESS); } else { @@ -66,17 +65,52 @@ return (ssize_t)nread; } -char *compose_jid(const char *username, const char *servername, - const char *resource) +void mcabber_connect(void) { - char *jid = g_new(char, - strlen(username)+strlen(servername)+strlen(resource)+3); - strcpy(jid, username); - strcat(jid, "@"); - strcat(jid, servername); - strcat(jid, "/"); - strcat(jid, resource); - return jid; + const char *username, *password, *resource, *servername; + char *jid; + int ssl; + unsigned int port; + + servername = settings_opt_get("server"); + username = settings_opt_get("username"); + password = settings_opt_get("password"); + resource = settings_opt_get("resource"); + + if (!servername) { + scr_LogPrint("Server name has not been specified!\n"); + return; + } + if (!username) { + scr_LogPrint("User name has not been specified!\n"); + return; + } + if (!password) { + scr_LogPrint("Password has not been specified!\n"); + return; + } + if (!resource) + resource = "mcabber"; + + ssl = (settings_opt_get_int("ssl") > 0); + port = (unsigned int) settings_opt_get_int("port"); + + jb_set_priority(settings_opt_get_int("priority")); + + /* Connect to server */ + ut_WriteLog("Connecting to server: %s:%d\n", servername, port); + scr_LogPrint("Connecting to server: %s:%d", servername, port); + + jid = compose_jid(username, servername, resource); + jc = jb_connect(jid, port, ssl, password); + g_free(jid); + + if (!jc) { + ut_WriteLog("\tConnection error!!!\n"); + scr_LogPrint("Error connecting to (%s)\n", servername); + } + + jb_reset_keepalive(); } void credits(void) @@ -88,20 +122,17 @@ int main(int argc, char **argv) { char *configFile = NULL; - const char *username, *password, *resource, *servername; - char *jid; const char *optstring; int optval, optval2; - int ssl; int key; - unsigned int port; unsigned int ping; int ret = 0; unsigned int refresh = 0; credits(); - /* SET THIS >0 TO ENABLE LOG */ + /* Set this >0 to enable log */ + /* Note: debug can be enabled via the config file */ ut_InitDebug(0, NULL); ut_WriteLog("Setting signals handlers...\n"); @@ -136,28 +167,20 @@ optstring = settings_opt_get("debug"); if (optstring) ut_InitDebug(1, optstring); - servername = settings_opt_get("server"); - username = settings_opt_get("username"); - password = settings_opt_get("password"); - resource = settings_opt_get("resource"); + // If no password is stored, we ask for it before entering + // ncurses mode + if (!settings_opt_get("password")) { + char *password, *p; + size_t passsize = 64; + printf("Please enter password: "); + my_getpass((char**)&password, &passsize); + printf("\n"); + for (p = (char*)password; *p; p++) + ; + for ( ; p > (char*)password ; p--) + if (*p == '\n' || *p == '\r') *p = 0; - if (!servername) { - printf("Server name has not been specified in the config file!\n"); - return -1; - } - if (!username) { - printf("User name has not been specified in the config file!\n"); - return -1; - } - if (!password) { - char *p; - size_t passsize = 64; - printf("Please enter password: "); - my_getpass((char**)&password, &passsize); - printf("\n"); - for (p = (char*)password; *p; p++); - for ( ; p > (char*)password ; p--) - if (*p == '\n' || *p == '\r') *p = 0; + settings_set(SETTINGS_TYPE_OPTION, "password", password); } /* Initialize N-Curses */ @@ -170,32 +193,12 @@ optval = (settings_opt_get_int("logging") > 0); optval2 = (settings_opt_get_int("load_logs") > 0); if (optval || optval2) - hlog_enable(optval, settings_opt_get("logging_dir"), - optval2); + hlog_enable(optval, settings_opt_get("logging_dir"), optval2); optstring = settings_opt_get("events_command"); if (optstring) hk_ext_cmd_init(optstring); - ssl = (settings_opt_get_int("ssl") > 0); - port = (unsigned int) settings_opt_get_int("port"); - - jb_set_priority(settings_opt_get_int("priority")); - - /* Connect to server */ - ut_WriteLog("Connecting to server: %s:%d\n", servername, port); - scr_LogPrint("Connecting to server: %s:%d", servername, port); - - jid = compose_jid(username, servername, resource); - jc = jb_connect(jid, port, ssl, password); - g_free(jid); - if (!jc) { - ut_WriteLog("\terror!!!\n"); - fprintf(stderr, "Error connecting to (%s)\n", servername); - scr_TerminateCurses(); - return -2; - } - ping = 40; if (settings_opt_get("pinginterval")) ping = (unsigned int) settings_opt_get_int("pinginterval"); @@ -205,13 +208,15 @@ if (settings_opt_get_int("hide_offline_buddies") > 0) buddylist_set_hide_offline_buddies(TRUE); + // Connection + mcabber_connect(); + /* Initialize commands system */ cmd_init(); ut_WriteLog("Entering into main loop...\n\n"); ut_WriteLog("Ready to send/receive messages...\n"); - jb_reset_keepalive(); while (ret != 255) { key = scr_Getch(); @@ -233,7 +238,6 @@ } jb_disconnect(); - //bud_TerminateBuddies(); scr_TerminateCurses(); printf("\n\nHave a nice day!\nBye!\n");