X-Git-Url: http://git.silcnet.org/gitweb/?a=blobdiff_plain;f=apps%2Firssi%2Fsrc%2Fsilc%2Fcore%2Fsilc-core.c;h=80dc21431eac327eb5355a883b5bc8b1729a11ad;hb=a818c5b5411bbc4436d1c5f011236985c96bb787;hp=2b5d9580603ed0785073d4b42e86d3ca64977d87;hpb=607d47fbea56cf5c85361e476abf81638a5f5f64;p=silc.git diff --git a/apps/irssi/src/silc/core/silc-core.c b/apps/irssi/src/silc/core/silc-core.c index 2b5d9580..80dc2143 100644 --- a/apps/irssi/src/silc/core/silc-core.c +++ b/apps/irssi/src/silc/core/silc-core.c @@ -29,8 +29,7 @@ #include "silc-channels.h" #include "silc-queries.h" #include "silc-nicklist.h" -#include "version_internal.h" -#include "version.h" +#include "silcversion.h" #include "signals.h" #include "levels.h" @@ -42,14 +41,7 @@ /* Command line option variables */ static bool opt_create_keypair = FALSE; -static bool opt_list_ciphers = FALSE; -static bool opt_list_hash = FALSE; -static bool opt_list_hmac = FALSE; -static bool opt_list_pkcs = FALSE; -static bool opt_version = FALSE; -static char *opt_debug = FALSE; static char *opt_pkcs = NULL; -static char *opt_keyfile = NULL; static int opt_bits = 0; static int idletag; @@ -61,7 +53,7 @@ extern bool silc_debug_hexdump; #ifdef SILC_SIM /* SIM (SILC Module) table */ SilcSimContext **sims = NULL; -uint32 sims_count = 0; +SilcUInt32 sims_count = 0; #endif static int my_silc_scheduler(void) @@ -239,68 +231,49 @@ static void silc_register_hmac(SilcClient client, const char *hmac) /* Finalize init. Init finish signal calls this. */ -void silc_core_init_finish(SERVER_REC *server) +void silc_opt_callback(poptContext con, + enum poptCallbackReason reason, + const struct poptOption *opt, + const char *arg, void *data) { - CHAT_PROTOCOL_REC *rec; - SilcClientParams params; - const char *def_cipher, *def_hash, *def_hmac; - - if (opt_create_keypair == TRUE) { - /* 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); - exit(0); - } - - if (opt_keyfile) { + if (strcmp(opt->longName, "show-key") == 0) { /* Dump the key */ silc_cipher_register_default(); silc_pkcs_register_default(); silc_hash_register_default(); silc_hmac_register_default(); - silc_client_show_key(opt_keyfile); + silc_client_show_key(opt->arg); exit(0); } - if (opt_list_ciphers) { + if (strcmp(opt->longName, "list-ciphers") == 0) { silc_cipher_register_default(); silc_client_list_ciphers(); exit(0); } - if (opt_list_hash) { + if (strcmp(opt->longName, "list-hash-funcs") == 0) { silc_hash_register_default(); silc_client_list_hash_funcs(); exit(0); } - if (opt_list_hmac) { + if (strcmp(opt->longName, "list-hmacs") == 0) { silc_hmac_register_default(); silc_client_list_hmacs(); exit(0); } - if (opt_list_pkcs) { + if (strcmp(opt->longName, "list-pkcs") == 0) { silc_pkcs_register_default(); silc_client_list_pkcs(); exit(0); } - if (opt_version) { - printf("SILC Secure Internet Live Conferencing, version %s " - "(base: SILC Toolkit %s)\n", silc_dist_version, silc_version); - printf("(c) 1997 - 2001 Pekka Riikonen \n"); - exit(0); - } - - if (opt_debug) { + if (strcmp(opt->longName, "debug") == 0) { silc_debug = TRUE; silc_debug_hexdump = TRUE; - silc_log_set_debug_string(opt_debug); + silc_log_set_debug_string(arg); 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); @@ -309,8 +282,63 @@ void silc_core_init_finish(SERVER_REC *server) fprintf(stdout, "Run-time debugging is not enabled. To enable it recompile\n" "the client with --enable-debug configuration option.\n"); + sleep(1); #endif } +} + +static void sig_init_read_settings(void) +{ + if (opt_create_keypair) { + /* 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); + exit(0); + } +} + +/* Init SILC. Called from src/fe-text/silc.c */ + +void silc_core_init(void) +{ + static struct poptOption silc_options[] = { + { 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 supported ciphers", NULL }, + { "list-hash-funcs", 'H', POPT_ARG_NONE, NULL, 0, + "List supported hash functions", NULL }, + { "list-hmacs", 'M', POPT_ARG_NONE, NULL, 0, + "List supported HMACs", NULL }, + { "list-pkcs", 'P', 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 new public key pair", NULL }, + { "pkcs", 0, POPT_ARG_STRING, &opt_pkcs, 0, + "Set the PKCS of the public key pair", "PKCS" }, + { "bits", 0, POPT_ARG_INT, &opt_bits, 0, + "Set the length of the public key pair", "VALUE" }, + { NULL, '\0', 0, NULL } + }; + + CHAT_PROTOCOL_REC *rec; + 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); /* Settings */ settings_add_bool("server", "skip_motd", FALSE); @@ -396,39 +424,8 @@ void silc_core_init_finish(SERVER_REC *server) silc_queries_init(); idletag = g_timeout_add(5, (GSourceFunc) my_silc_scheduler, NULL); -} -/* Init SILC. Called from src/fe-text/silc.c */ - -void silc_core_init(void) -{ - static struct poptOption options[] = { - { "create-key-pair", 'C', POPT_ARG_NONE, &opt_create_keypair, 0, - "Create new public key pair", NULL }, - { "pkcs", 0, POPT_ARG_STRING, &opt_pkcs, 0, - "Set the PKCS of the public key pair", "PKCS" }, - { "bits", 0, POPT_ARG_INT, &opt_bits, 0, - "Set the length of the public key pair", "VALUE" }, - { "show-key", 'S', POPT_ARG_STRING, &opt_keyfile, 0, - "Show the contents of the public key", "FILE" }, - { "list-ciphers", 'c', POPT_ARG_NONE, &opt_list_ciphers, 0, - "List supported ciphers", NULL }, - { "list-hash-funcs", 'H', POPT_ARG_NONE, &opt_list_hash, 0, - "List supported hash functions", NULL }, - { "list-hmacs", 'M', POPT_ARG_NONE, &opt_list_hmac, 0, - "List supported HMACs", NULL }, - { "list-pkcs", 'P', POPT_ARG_NONE, &opt_list_pkcs, 0, - "List supported PKCSs", NULL }, - { "debug", 'd', POPT_ARG_STRING, &opt_debug, 0, - "Enable debugging", "STRING" }, - { "version", 'V', POPT_ARG_NONE, &opt_version, 0, - "Show version", NULL }, - { NULL, '\0', 0, NULL } - }; - - signal_add("irssi init finished", (SIGNAL_FUNC) silc_core_init_finish); - - args_register(options); + module_register("silc", "core"); } /* Deinit SILC. Called from src/fe-text/silc.c */