#include "silc-channels.h"
#include "silc-queries.h"
#include "silc-nicklist.h"
-#include "silcversion.h"
#include "signals.h"
#include "levels.h"
#include "fe-common/silc/module-formats.h"
/* Command line option variables */
-static bool opt_create_keypair = FALSE;
static char *opt_pkcs = NULL;
static int opt_bits = 0;
"DEBUG: %s:%d: %s", function, line, message);
return TRUE;
}
+#endif
-static void sig_debug_setup_changed(void)
+static void sig_setup_changed(void)
{
+#ifdef SILC_DEBUG
bool debug = settings_get_bool("debug");
if (debug) {
const char *debug_string = settings_get_str("debug_string");
}
if (i_debug)
silc_debug = FALSE;
-}
#endif
+}
/* Log callbacks */
silc_pkcs_register_default();
silc_hash_register_default();
silc_hmac_register_default();
- silc_client_show_key((char *)arg);
+ silc_show_public_key((char *)arg);
exit(0);
}
sleep(1);
#endif
}
-}
-static void sig_init_read_settings(void)
-{
- if (opt_create_keypair) {
+ if (strcmp(opt->longName, "create-key-pair") == 0) {
/* Create new key pair and exit */
silc_cipher_register_default();
silc_pkcs_register_default();
silc_hash_register_default();
silc_hmac_register_default();
- silc_client_create_key_pair(opt_pkcs, opt_bits,
- NULL, NULL, NULL, NULL, NULL);
+ silc_create_key_pair(opt_pkcs, opt_bits, NULL, NULL, NULL,
+ NULL, NULL, NULL, NULL, TRUE);
exit(0);
}
}
+static void sig_init_finished(void)
+{
+ /* Check ~/.silc directory and public and private keys */
+ if (!silc_client_check_silc_dir()) {
+ idletag = -1;
+ exit(1);
+ }
+
+ /* Load public and private key */
+ if (!silc_client_load_keys(silc_client)) {
+ idletag = -1;
+ exit(1);
+ }
+
+ /* Initialize the SILC client */
+ if (!silc_client_init(silc_client)) {
+ idletag = -1;
+ exit(1);
+ }
+}
+
/* Init SILC. Called from src/fe-text/silc.c */
void silc_core_init(void)
{ NULL, '\0', POPT_ARG_CALLBACK, (void *)&silc_opt_callback, '\0', NULL },
{ "show-key", 'S', POPT_ARG_STRING, NULL, 0,
"Show the contents of the public key", "FILE" },
- { "list-ciphers", 'c', POPT_ARG_NONE, NULL, 0,
+ { "list-ciphers", 0, POPT_ARG_NONE, NULL, 0,
"List supported ciphers", NULL },
- { "list-hash-funcs", 'H', POPT_ARG_NONE, NULL, 0,
+ { "list-hash-funcs", 0, POPT_ARG_NONE, NULL, 0,
"List supported hash functions", NULL },
- { "list-hmacs", 'M', POPT_ARG_NONE, NULL, 0,
+ { "list-hmacs", 0, POPT_ARG_NONE, NULL, 0,
"List supported HMACs", NULL },
- { "list-pkcs", 'P', POPT_ARG_NONE, NULL, 0,
+ { "list-pkcs", 0, POPT_ARG_NONE, NULL, 0,
"List supported PKCSs", NULL },
{ "debug", 'd', POPT_ARG_STRING, NULL, 0,
"Enable debugging", "STRING" },
- { NULL, '\0', 0, NULL }
- };
-
- static struct poptOption options[] = {
- { NULL, '\0', POPT_ARG_INCLUDE_TABLE, silc_options, 0, NULL, NULL },
- { "create-key-pair", 'C', POPT_ARG_NONE, &opt_create_keypair, 0,
+ { "create-key-pair", 'C', POPT_ARG_NONE, NULL, 0,
"Create new public key pair", NULL },
{ "pkcs", 0, POPT_ARG_STRING, &opt_pkcs, 0,
- "Set the PKCS of the public key pair", "PKCS" },
+ "Set the PKCS of the public key pair (-C)", "PKCS" },
{ "bits", 0, POPT_ARG_INT, &opt_bits, 0,
- "Set the length of the public key pair", "VALUE" },
+ "Set the length of the public key pair (-C)", "VALUE" },
{ NULL, '\0', 0, NULL }
};
SilcClientParams params;
const char *def_cipher, *def_hash, *def_hmac;
- args_register(options);
- signal_add("irssi init read settings", (SIGNAL_FUNC) sig_init_read_settings);
+ args_register(silc_options);
/* Settings */
settings_add_bool("server", "skip_motd", FALSE);
settings_add_int("server", "key_exchange_timeout_secs", 120);
settings_add_int("server", "key_exchange_rekey_secs", 3600);
settings_add_int("server", "connauth_request_secs", 2);
+ settings_add_int("server", "heartbeat", 300);
+
+ /* Requested Attributes settings */
+ settings_add_bool("silc", "attr_allow", TRUE);
+ settings_add_str("silc", "attr_vcard", "");
+ settings_add_str("silc", "attr_services", "");
+ settings_add_str("silc", "attr_status_mood", "NORMAL");
+ settings_add_str("silc", "attr_status_text", "");
+ settings_add_str("silc", "attr_status_message", NULL);
+ settings_add_str("silc", "attr_preferred_language", "");
+ settings_add_str("silc", "attr_preferred_contact", "CHAT");
+ settings_add_bool("silc", "attr_timezone", TRUE);
+ settings_add_str("silc", "attr_geolocation", "");
+ settings_add_str("silc", "attr_device_info", NULL);
+ settings_add_str("silc", "attr_public_keys", "");
#ifdef SILC_DEBUG
settings_add_bool("debug", "debug", FALSE);
settings_add_str("debug", "debug_string", "");
- signal_add("setup changed", (SIGNAL_FUNC) sig_debug_setup_changed);
#endif
+ signal_add("setup changed", (SIGNAL_FUNC) sig_setup_changed);
+ signal_add("irssi init finished", (SIGNAL_FUNC) sig_init_finished);
+
silc_init_userinfo();
/* Initialize client parameters */
silc_client->hostname = silc_net_localhost();
silc_client->realname = g_strdup(settings_get_str("real_name"));
- /* Check ~/.silc directory and public and private keys */
- if (silc_client_check_silc_dir() == FALSE) {
- idletag = -1;
- return;
- }
-
- /* Load public and private key */
- if (silc_client_load_keys(silc_client) == FALSE) {
- idletag = -1;
- return;
- }
-
- /* Initialize the SILC client */
- if (!silc_client_init(silc_client)) {
- idletag = -1;
- return;
- }
-
silc_log_set_callback(SILC_LOG_INFO, silc_log_misc, NULL);
silc_log_set_callback(SILC_LOG_WARNING, silc_log_misc, NULL);
silc_log_set_callback(SILC_LOG_ERROR, silc_log_misc, NULL);
rec->create_channel_setup = create_channel_setup;
rec->create_server_connect = create_server_connect;
rec->destroy_server_connect = destroy_server_connect;
- rec->server_connect = (SERVER_REC *(*) (SERVER_CONNECT_REC *))
- silc_server_connect;
- rec->channel_create = (CHANNEL_REC *(*) (SERVER_REC *, const char *, int))
+ rec->server_init_connect = silc_server_init_connect;
+ rec->server_connect = silc_server_connect;
+ rec->channel_create = (CHANNEL_REC *(*) (SERVER_REC *, const char *,
+ const char *, int))
silc_channel_create;
rec->query_create = (QUERY_REC *(*) (const char *, const char *, int))
silc_query_create;
if (idletag != -1) {
signal_emit("chat protocol deinit", 1,
chat_protocol_find("SILC"));
- signal_remove("irssi init read settings",
- (SIGNAL_FUNC) sig_init_read_settings);
-#ifdef SILC_DEBUG
- signal_remove("setup changed", (SIGNAL_FUNC) sig_debug_setup_changed);
-#endif
-
+ signal_remove("setup changed", (SIGNAL_FUNC) sig_setup_changed);
+ signal_remove("irssi init finished", (SIGNAL_FUNC) sig_init_finished);
+
silc_server_deinit();
silc_channels_deinit();
silc_queries_deinit();