X-Git-Url: http://git.silcnet.org/gitweb/?a=blobdiff_plain;f=apps%2Firssi%2Fsrc%2Fsilc%2Fcore%2Fsilc-servers.c;h=bfd5f600e5e67012156f3990fa1c21d6edb0f41a;hb=HEAD;hp=d661187088046b4efe3566e2d0695dec40d69bb5;hpb=63ca577177f9f5db8e553372a9793b0c85f10715;p=silc.git diff --git a/apps/irssi/src/silc/core/silc-servers.c b/apps/irssi/src/silc/core/silc-servers.c index d6611870..bfd5f600 100644 --- a/apps/irssi/src/silc/core/silc-servers.c +++ b/apps/irssi/src/silc/core/silc-servers.c @@ -33,6 +33,7 @@ #include "settings.h" #include "servers-setup.h" +#include "channels-setup.h" #include "client_ops.h" #include "silc-servers.h" @@ -88,48 +89,38 @@ static void silc_send_msg_clients(SilcClient client, PRIVMSG_REC *rec = context; SILC_SERVER_REC *server = rec->server; SilcClientEntry target; - char nickname[128 + 1]; - SilcDList lclients = NULL; if (!clients) { printtext(NULL, NULL, MSGLEVEL_CLIENTERROR, "%s: There is no such client", rec->nick); - } else { - if (silc_dlist_count(clients) > 1) { - silc_parse_userfqdn(rec->nick, nickname, sizeof(nickname), NULL, 0); - - /* Find the correct one. The rec->nick might be a formatted nick - so this will find the correct one. */ - clients = lclients = - silc_client_get_clients_local(silc_client, server->conn, - nickname, rec->nick); - if (!clients) { - printtext(NULL, NULL, MSGLEVEL_CLIENTERROR, - "%s: There is no such client", rec->nick); - goto out; - } - } - - target = silc_dlist_get(clients); + goto out; + } - /* Still check for exact math for nickname, this compares the - real (formatted) nickname and the nick (maybe formatted) that - user gave. This is to assure that `nick' does not match - `nick@host'. */ - if (!silc_utf8_strcasecmp(rec->nick, target->nickname)) { + /* Find the correct one. The rec->nick might be a formatted nick + so this will find the correct one. */ + target = silc_dlist_get(clients); + clients = silc_client_get_clients_local(silc_client, server->conn, + rec->nick, FALSE); + if (!clients) { + if (strchr(rec->nick, '@') && target->server) printtext(NULL, NULL, MSGLEVEL_CLIENTERROR, - "%s: There is no such client", rec->nick); - goto out; - } - - /* Send the private message */ - silc_client_send_private_message(client, conn, target, - rec->flags, sha1hash, - rec->msg, rec->len); + "%s: There is no such client (did you mean %s@%s?)", rec->nick, + target->nickname, target->server); + else + printtext(NULL, NULL, MSGLEVEL_CLIENTERROR, + "%s: There is no such client (did you mean %s?)", rec->nick, + target->nickname); + goto out; } + /* Send the private message */ + silc_dlist_start(clients); + target = silc_dlist_get(clients); + silc_client_send_private_message(client, conn, target, rec->flags, sha1hash, + rec->msg, rec->len); + out: - silc_client_list_free(silc_client, server->conn, lclients); + silc_client_list_free(silc_client, server->conn, clients); g_free(rec->nick); g_free(rec->msg); g_free(rec); @@ -139,21 +130,16 @@ int silc_send_msg(SILC_SERVER_REC *server, char *nick, char *msg, int msg_len, SilcMessageFlags flags) { PRIVMSG_REC *rec; - char nickname[128 + 1]; SilcDList clients; SilcClientEntry target; int ret; - if (!silc_parse_userfqdn(nick, nickname, sizeof(nickname), NULL, 0)) { - printformat_module("fe-common/silc", server, NULL, - MSGLEVEL_CRAP, SILCTXT_BAD_NICK, nick); - return FALSE; - } - /* Find client entry */ - clients = silc_client_get_clients_local(silc_client, server->conn, - nickname, nick); + clients = silc_client_get_clients_local(silc_client, server->conn, nick, + FALSE); if (!clients) { + char *nickname = NULL; + rec = g_new0(PRIVMSG_REC, 1); rec->nick = g_strdup(nick); rec->msg = g_strdup(msg); @@ -161,10 +147,14 @@ int silc_send_msg(SILC_SERVER_REC *server, char *nick, char *msg, rec->flags = flags; rec->len = msg_len; + silc_client_nickname_parse(silc_client, server->conn, nick, &nickname); + if (!nickname) + nickname = strdup(nick); + /* Could not find client with that nick, resolve it from server. */ - silc_client_get_clients_whois(silc_client, server->conn, - nickname, NULL, NULL, - silc_send_msg_clients, rec); + silc_client_get_clients_whois(silc_client, server->conn, nickname, + NULL, NULL, silc_send_msg_clients, rec); + silc_free(nickname); return TRUE; } @@ -223,7 +213,7 @@ void silc_send_mime(SILC_SERVER_REC *server, int channel, const char *to, silc_free(unescaped_data); } -static int isnickflag_func(char flag) +static int isnickflag_func(SERVER_REC *server, char flag) { return flag == '@' || flag == '+'; } @@ -233,7 +223,7 @@ static int ischannel_func(SERVER_REC *server, const char *data) return FALSE; } -const char *get_nick_flags(void) +const char *get_nick_flags(SERVER_REC *server) { return "@\0\0"; } @@ -290,8 +280,12 @@ static void silc_connect_cb(SilcClient client, void *context) { SILC_SERVER_REC *server = context; + FtpSession ftp; char *file; + SILC_LOG_DEBUG(("Connection callback %p, status %d, error %d, message %s", + conn, status, error, message ? message : "N/A")); + server->op = NULL; switch (status) { @@ -305,10 +299,13 @@ static void silc_connect_cb(SilcClient client, /* Enable queueing until we have our requested nick */ if (((opt_nickname && - strcmp(opt_nickname, conn->local_entry->nickname)) || + !silc_utf8_strcasecmp(opt_nickname, + conn->local_entry->nickname)) || (settings_get_str("nick") && - strcmp(settings_get_str("nick"), conn->local_entry->nickname))) && - !strcmp(conn->local_entry->nickname, conn->local_entry->username)) + !silc_utf8_strcasecmp(settings_get_str("nick"), + conn->local_entry->nickname))) && + silc_utf8_strcasecmp(conn->local_entry->nickname, + conn->local_entry->username)) silc_queue_enable(conn); /* Put default attributes */ @@ -357,6 +354,12 @@ static void silc_connect_cb(SilcClient client, silc_get_status_message(error), error, message ? message : ""); + /* Close FTP sessions */ + silc_dlist_start(server->ftp_sessions); + while ((ftp = silc_dlist_get(server->ftp_sessions))) + silc_client_file_close(client, conn, ftp->session_id); + silc_dlist_uninit(server->ftp_sessions); + if (server->conn) server->conn->context = NULL; server->conn = NULL; @@ -374,6 +377,7 @@ static void silc_connect_cb(SilcClient client, silc_free(file); server->connection_lost = TRUE; + server->conn = NULL; if (server->conn) server->conn->context = NULL; if (!server->disconnected) @@ -392,6 +396,7 @@ static void sig_connected_stream_created(SilcSocketStreamStatus status, SilcClientConnectionParams params; char *file; + server->tcp_op = NULL; if (!stream) { server->connection_lost = TRUE; server_disconnect(SERVER(server)); @@ -413,12 +418,13 @@ static void sig_connected_stream_created(SilcSocketStreamStatus status, /* Try to read detached session data and use it if found. */ file = silc_get_session_filename(server); - params.detach_data = silc_file_readfile(file, ¶ms.detach_data_len); + params.detach_data = silc_file_readfile(file, ¶ms.detach_data_len, NULL); if (params.detach_data) params.detach_data[params.detach_data_len] = 0; if (params.detach_data) printformat_module("fe-common/silc", server, NULL, MSGLEVEL_CRAP, SILCTXT_REATTACH, server->tag); + silc_free(file); /* Start key exchange */ server->op = silc_client_key_exchange(silc_client, ¶ms, @@ -449,8 +455,10 @@ static void sig_connected(SILC_SERVER_REC *server) /* Wrap the socket to TCP stream */ fd = g_io_channel_unix_get_fd(net_sendbuffer_handle(server->handle)); - silc_socket_tcp_stream_create(fd, TRUE, FALSE, silc_client->schedule, - sig_connected_stream_created, server); + server->tcp_op = + silc_socket_tcp_stream_create(fd, TRUE, FALSE, + silc_client->schedule, + sig_connected_stream_created, server); } static void sig_disconnected(SILC_SERVER_REC *server) @@ -458,8 +466,6 @@ static void sig_disconnected(SILC_SERVER_REC *server) if (!IS_SILC_SERVER(server)) return; - silc_dlist_uninit(server->ftp_sessions); - if (server->conn) { /* Close connection */ silc_client_close_connection(silc_client, server->conn); @@ -467,12 +473,18 @@ static void sig_disconnected(SILC_SERVER_REC *server) /* Abort on going connecting (key exchange) */ silc_async_abort(server->op, NULL, NULL); server->op = NULL; + } else if (server->tcp_op) { + /* Abort on going TCP stream creation */ + silc_async_abort(server->tcp_op, NULL, NULL); + server->tcp_op = NULL; } /* SILC closes the handle */ - g_io_channel_unref(net_sendbuffer_handle(server->handle)); - net_sendbuffer_destroy(server->handle, FALSE); - server->handle = NULL; + if (server->handle) { + g_io_channel_unref(net_sendbuffer_handle(server->handle)); + net_sendbuffer_destroy(server->handle, FALSE); + server->handle = NULL; + } } SERVER_REC *silc_server_init_connect(SERVER_CONNECT_REC *conn) @@ -522,8 +534,14 @@ char *silc_server_get_channels(SILC_SERVER_REC *server) chans = g_string_new(NULL); for (tmp = server->channels; tmp != NULL; tmp = tmp->next) { CHANNEL_REC *channel = tmp->data; + CHANNEL_SETUP_REC *schannel; - g_string_sprintfa(chans, "%s,", channel->name); + if ((schannel = channel_setup_find(channel->name, server->connrec->chatnet)) && + schannel->password) + g_string_sprintfa(chans, "%s %s,", channel->name, + schannel->password); + else + g_string_sprintfa(chans, "%s,", channel->name); } if (chans->len > 0) @@ -555,7 +573,6 @@ char *silc_server_get_channels(SILC_SERVER_REC *server) /* SYNTAX: WHOIS [[@]] [-details] [-pubkey ] [] */ /* SYNTAX: WHOWAS [@] [] */ /* SYNTAX: CLOSE [] */ -/* SYNTAX: SHUTDOWN */ /* SYNTAX: MOTD [] */ /* SYNTAX: LIST [] */ /* SYNTAX: ME */ @@ -566,7 +583,6 @@ char *silc_server_get_channels(SILC_SERVER_REC *server) /* SYNTAX: NOTICE [-sign] [-channel] */ /* SYNTAX: PART [] */ /* SYNTAX: PING */ -/* SYNTAX: SCONNECT [] */ /* SYNTAX: USERS */ /* SYNTAX: FILE SEND [ []] [-no-listener]*/ /* SYNTAX: FILE ACCEPT [] */ @@ -615,21 +631,6 @@ static void command_self(const char *data, SILC_SERVER_REC *server, signal_stop(); } -/* SCONNECT command. Calls actually SILC's CONNECT command since Irssi - has CONNECT command for other purposes. */ - -static void command_sconnect(const char *data, SILC_SERVER_REC *server) -{ - CMD_SILC_SERVER(server); - if (!IS_SILC_SERVER(server) || !server->connected) { - printtext(NULL, NULL, MSGLEVEL_CLIENTERROR, "Not connected to server"); - return; - } - - silc_command_exec(server, "CONNECT", data); - signal_stop(); -} - /* SMSG command, to send digitally signed messages */ static void command_smsg(const char *data, SILC_SERVER_REC *server, @@ -710,7 +711,6 @@ out: cmd_params_free(free_arg); } -#if 0 /* FILE command */ SILC_TASK_CALLBACK(silc_client_file_close_later) @@ -756,7 +756,8 @@ static void silc_client_file_monitor(SilcClient client, if (ftp == SILC_LIST_END) return; - if (status == SILC_CLIENT_FILE_MONITOR_ERROR) { + if (status == SILC_CLIENT_FILE_MONITOR_ERROR || + status == SILC_CLIENT_FILE_MONITOR_DISCONNECT) { if (error == SILC_CLIENT_FILE_NO_SUCH_FILE) printformat_module("fe-common/silc", NULL, NULL, MSGLEVEL_CRAP, SILCTXT_FILE_ERROR_NO_SUCH_FILE, @@ -769,9 +770,9 @@ static void silc_client_file_monitor(SilcClient client, else printformat_module("fe-common/silc", NULL, NULL, MSGLEVEL_CRAP, SILCTXT_FILE_ERROR, client_entry->nickname); - silc_schedule_task_add(silc_client->schedule, 0, - silc_client_file_close_later, ftp, - 1, 0, SILC_TASK_TIMEOUT, SILC_TASK_PRI_NORMAL); + silc_schedule_task_add_timeout(silc_client->schedule, + silc_client_file_close_later, ftp, + 1, 0); silc_dlist_del(server->ftp_sessions, ftp); if (ftp == server->current_session) { server->current_session = NULL; @@ -809,9 +810,9 @@ static void silc_client_file_monitor(SilcClient client, printformat_module("fe-common/silc", NULL, NULL, MSGLEVEL_CRAP, SILCTXT_FILE_TRANSMITTED, filepath, fsize, client_entry->nickname, ftp->kps); - silc_schedule_task_add(silc_client->schedule, 0, - silc_client_file_close_later, ftp, - 1, 0, SILC_TASK_TIMEOUT, SILC_TASK_PRI_NORMAL); + silc_schedule_task_add_timeout(silc_client->schedule, + silc_client_file_close_later, ftp, + 1, 0); silc_dlist_del(server->ftp_sessions, ftp); if (ftp == server->current_session) { server->current_session = NULL; @@ -834,9 +835,9 @@ static void silc_client_file_monitor(SilcClient client, printformat_module("fe-common/silc", NULL, NULL, MSGLEVEL_CRAP, SILCTXT_FILE_RECEIVED, filepath, fsize, client_entry->nickname, ftp->kps); - silc_schedule_task_add(silc_client->schedule, 0, - silc_client_file_close_later, ftp, - 1, 0, SILC_TASK_TIMEOUT, SILC_TASK_PRI_NORMAL); + silc_schedule_task_add_timeout(silc_client->schedule, + silc_client_file_close_later, ftp, + 1, 0); silc_dlist_del(server->ftp_sessions, ftp); if (ftp == server->current_session) { server->current_session = NULL; @@ -857,15 +858,15 @@ typedef struct { static void silc_client_command_file_get_clients(SilcClient client, SilcClientConnection conn, - SilcClientEntry *clients, - SilcUInt32 clients_count, + SilcStatus status, + SilcDList clients, void *context) { FileGetClients internal = (FileGetClients)context; if (!clients) { - printtext(NULL, NULL, MSGLEVEL_CLIENTERROR, "Unknown nick: %s", - internal->nick); + printtext(NULL, NULL, MSGLEVEL_CLIENTERROR, + "There was no such nickname: %s", internal->nick); silc_free(internal->data); silc_free(internal->nick); silc_free(internal); @@ -884,9 +885,9 @@ static void command_file(const char *data, SILC_SERVER_REC *server, WI_ITEM_REC *item) { SilcClientConnection conn; - SilcClientEntry *entrys, client_entry; + SilcClientEntry client_entry; + SilcDList entries; SilcClientFileError ret; - SilcUInt32 entry_count; char *nickname = NULL, *tmp; unsigned char **argv; SilcUInt32 argc; @@ -897,6 +898,7 @@ static void command_file(const char *data, SILC_SERVER_REC *server, SilcUInt32 local_port = 0; SilcUInt32 session_id; bool do_not_bind = FALSE; + SilcClientConnectionParams params; CMD_SILC_SERVER(server); if (!server || !IS_SILC_SERVER(server) || !server->connected) @@ -930,27 +932,24 @@ static void command_file(const char *data, SILC_SERVER_REC *server, cmd_return_error(CMDERR_NOT_ENOUGH_PARAMS); /* Parse the typed nickname. */ - if (!silc_parse_userfqdn(argv[3], &nickname, NULL)) { - printformat_module("fe-common/silc", server, NULL, - MSGLEVEL_CRAP, SILCTXT_BAD_NICK, argv[3]); - goto out; - } + silc_client_nickname_parse(silc_client, conn, argv[3], &nickname); + if (!nickname) + nickname = strdup(argv[3]); /* Find client entry */ - entrys = silc_client_get_clients_local(silc_client, conn, nickname, - argv[3], &entry_count); - if (!entrys) { + entries = silc_client_get_clients_local(silc_client, conn, argv[3], FALSE); + if (!entries) { FileGetClients inter = silc_calloc(1, sizeof(*inter)); inter->server = server; inter->data = strdup(data); inter->nick = strdup(nickname); inter->item = item; - silc_client_get_clients(silc_client, conn, nickname, argv[3], + silc_client_get_clients(silc_client, conn, nickname, NULL, silc_client_command_file_get_clients, inter); goto out; } - client_entry = entrys[0]; - silc_free(entrys); + silc_dlist_start(entries); + client_entry = silc_dlist_get(entries); if (argc >= 5) { if (!strcasecmp(argv[4], "-no-listener")) @@ -969,10 +968,31 @@ static void command_file(const char *data, SILC_SERVER_REC *server, do_not_bind = TRUE; } - ret = - silc_client_file_send(silc_client, conn, silc_client_file_monitor, - server, local_ip, local_port, do_not_bind, - client_entry, argv[2], &session_id); + memset(¶ms, 0, sizeof(params)); + if (!do_not_bind) { + if (local_ip) + params.local_ip = strdup(local_ip); + params.local_port = local_port; + if (!params.local_ip && settings_get_bool("use_auto_addr")) { + params.local_ip = (char *)settings_get_str("auto_public_ip"); + if ((params.local_ip) && (*params.local_ip == '\0')) { + params.local_ip = silc_net_localip(); + } else { + params.bind_ip = (char *)settings_get_str("auto_bind_ip"); + if ((params.bind_ip) && (*params.bind_ip == '\0')) + params.bind_ip = NULL; + params.local_port = settings_get_int("auto_bind_port"); + } + } + if (!params.local_ip) + params.local_ip = silc_net_localip(); + } + params.timeout_secs = settings_get_int("key_exchange_timeout_secs"); + + ret = silc_client_file_send(silc_client, conn, client_entry, ¶ms, + irssi_pubkey, irssi_privkey, + silc_client_file_monitor, server, argv[2], + &session_id); if (ret == SILC_CLIENT_FILE_OK) { ftp = silc_calloc(1, sizeof(*ftp)); ftp->session_id = session_id; @@ -998,32 +1018,33 @@ static void command_file(const char *data, SILC_SERVER_REC *server, client_entry->nickname, argv[2]); } + silc_client_list_free(silc_client, server->conn, entries); break; case 2: /* Parse the typed nickname. */ if (argc >= 3) { - if (!silc_parse_userfqdn(argv[2], &nickname, NULL)) { - printformat_module("fe-common/silc", server, NULL, - MSGLEVEL_CRAP, SILCTXT_BAD_NICK, argv[2]); - goto out; - } + /* Parse the typed nickname. */ + silc_client_nickname_parse(silc_client, conn, argv[2], &nickname); + if (!nickname) + nickname = strdup(argv[2]); /* Find client entry */ - entrys = silc_client_get_clients_local(silc_client, conn, nickname, - argv[2], &entry_count); - if (!entrys) { + entries = silc_client_get_clients_local(silc_client, conn, argv[2], + FALSE); + if (!entries) { FileGetClients inter = silc_calloc(1, sizeof(*inter)); inter->server = server; inter->data = strdup(data); inter->nick = strdup(nickname); inter->item = item; - silc_client_get_clients(silc_client, conn, nickname, argv[2], + silc_client_get_clients(silc_client, conn, nickname, NULL, silc_client_command_file_get_clients, inter); goto out; } - client_entry = entrys[0]; - silc_free(entrys); + silc_dlist_start(entries); + client_entry = silc_dlist_get(entries); + silc_client_list_free(silc_client, server->conn, entries); } else { if (!server->current_session) { printformat_module("fe-common/silc", server, NULL, @@ -1031,7 +1052,24 @@ static void command_file(const char *data, SILC_SERVER_REC *server, goto out; } - ret = silc_client_file_receive(silc_client, conn, + memset(¶ms, 0, sizeof(params)); + if (settings_get_bool("use_auto_addr")) { + params.local_ip = (char *)settings_get_str("auto_public_ip"); + if ((params.local_ip) && (*params.local_ip == '\0')) { + params.local_ip = silc_net_localip(); + } else { + params.bind_ip = (char *)settings_get_str("auto_bind_ip"); + if ((params.bind_ip) && (*params.bind_ip == '\0')) + params.bind_ip = NULL; + params.local_port = settings_get_int("auto_bind_port"); + } + } + if (!params.local_ip) + params.local_ip = silc_net_localip(); + params.timeout_secs = settings_get_int("key_exchange_timeout_secs"); + + ret = silc_client_file_receive(silc_client, conn, ¶ms, + irssi_pubkey, irssi_privkey, silc_client_file_monitor, server, NULL, server->current_session->session_id, NULL, NULL); @@ -1063,7 +1101,24 @@ static void command_file(const char *data, SILC_SERVER_REC *server, silc_dlist_start(server->ftp_sessions); while ((ftp = silc_dlist_get(server->ftp_sessions)) != SILC_LIST_END) { if (ftp->client_entry == client_entry && !ftp->filepath) { - ret = silc_client_file_receive(silc_client, conn, + memset(¶ms, 0, sizeof(params)); + if (settings_get_bool("use_auto_addr")) { + params.local_ip = (char *)settings_get_str("auto_public_ip"); + if ((params.local_ip) && (*params.local_ip == '\0')) { + params.local_ip = silc_net_localip(); + } else { + params.bind_ip = (char *)settings_get_str("auto_bind_ip"); + if ((params.bind_ip) && (*params.bind_ip == '\0')) + params.bind_ip = NULL; + params.local_port = settings_get_int("auto_bind_port"); + } + } + if (!params.local_ip) + params.local_ip = silc_net_localip(); + params.timeout_secs = settings_get_int("key_exchange_timeout_secs"); + + ret = silc_client_file_receive(silc_client, conn, ¶ms, + irssi_pubkey, irssi_privkey, silc_client_file_monitor, server, NULL, ftp->session_id, NULL, NULL); if (ret != SILC_CLIENT_FILE_OK) { @@ -1101,27 +1156,27 @@ static void command_file(const char *data, SILC_SERVER_REC *server, case 3: /* Parse the typed nickname. */ if (argc >= 3) { - if (!silc_parse_userfqdn(argv[2], &nickname, NULL)) { - printformat_module("fe-common/silc", server, NULL, - MSGLEVEL_CRAP, SILCTXT_BAD_NICK, argv[2]); - goto out; - } + /* Parse the typed nickname. */ + silc_client_nickname_parse(silc_client, conn, argv[2], &nickname); + if (!nickname) + nickname = strdup(argv[2]); /* Find client entry */ - entrys = silc_client_get_clients_local(silc_client, conn, nickname, - argv[2], &entry_count); - if (!entrys) { + entries = silc_client_get_clients_local(silc_client, conn, argv[2], + FALSE); + if (!entries) { FileGetClients inter = silc_calloc(1, sizeof(*inter)); inter->server = server; inter->data = strdup(data); inter->nick = strdup(nickname); inter->item = item; - silc_client_get_clients(silc_client, conn, nickname, argv[2], + silc_client_get_clients(silc_client, conn, nickname, NULL, silc_client_command_file_get_clients, inter); goto out; } - client_entry = entrys[0]; - silc_free(entrys); + silc_dlist_start(entries); + client_entry = silc_dlist_get(entries); + silc_client_list_free(silc_client, server->conn, entries); } else { if (!server->current_session) { printformat_module("fe-common/silc", server, NULL, @@ -1206,8 +1261,8 @@ static void command_file(const char *data, SILC_SERVER_REC *server, out: silc_free(nickname); + return; } -#endif /* 0 */ void silc_server_init(void) { @@ -1235,10 +1290,8 @@ void silc_server_init(void) command_bind_silc("ping", MODULE_NAME, (SIGNAL_FUNC) command_self); command_bind_silc("motd", MODULE_NAME, (SIGNAL_FUNC) command_self); command_bind_silc("close", MODULE_NAME, (SIGNAL_FUNC) command_self); - command_bind_silc("shutdown", MODULE_NAME, (SIGNAL_FUNC) command_self); command_bind_silc("getkey", MODULE_NAME, (SIGNAL_FUNC) command_self); - command_bind_silc("sconnect", MODULE_NAME, (SIGNAL_FUNC) command_sconnect); -// command_bind_silc("file", MODULE_NAME, (SIGNAL_FUNC) command_file); + command_bind_silc("file", MODULE_NAME, (SIGNAL_FUNC) command_file); command_bind_silc("detach", MODULE_NAME, (SIGNAL_FUNC) command_self); command_bind_silc("watch", MODULE_NAME, (SIGNAL_FUNC) command_self); command_bind_silc("stats", MODULE_NAME, (SIGNAL_FUNC) command_self); @@ -1274,10 +1327,8 @@ void silc_server_deinit(void) command_unbind("motd", (SIGNAL_FUNC) command_self); command_unbind("ban", (SIGNAL_FUNC) command_self); command_unbind("close", (SIGNAL_FUNC) command_self); - command_unbind("shutdown", (SIGNAL_FUNC) command_self); command_unbind("getkey", (SIGNAL_FUNC) command_self); - command_unbind("sconnect", (SIGNAL_FUNC) command_sconnect); -// command_unbind("file", (SIGNAL_FUNC) command_file); + command_unbind("file", (SIGNAL_FUNC) command_file); command_unbind("detach", (SIGNAL_FUNC) command_self); command_unbind("watch", (SIGNAL_FUNC) command_self); command_unbind("stats", (SIGNAL_FUNC) command_self); @@ -1285,7 +1336,6 @@ void silc_server_deinit(void) command_unbind("smsg", (SIGNAL_FUNC) command_smsg); } -#if 0 void silc_server_free_ftp(SILC_SERVER_REC *server, SilcClientEntry client_entry) { @@ -1300,7 +1350,6 @@ void silc_server_free_ftp(SILC_SERVER_REC *server, } } } -#endif /* 0 */ bool silc_term_utf8(void) {