X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=src%2Ffs%2Fgnunet-pseudonym.c;h=ce0d24506e2a67bd26a98fe12447c919a8706723;hb=ee1e3f6aa111940f28c4f75f5a4b0a3a0d2c4527;hp=e7b2bb8ddb1a6932aebf5c5eb97f2894f827440a;hpb=0663125e0f41ee120736944ef153074f6251b957;p=oweals%2Fgnunet.git diff --git a/src/fs/gnunet-pseudonym.c b/src/fs/gnunet-pseudonym.c index e7b2bb8dd..ce0d24506 100644 --- a/src/fs/gnunet-pseudonym.c +++ b/src/fs/gnunet-pseudonym.c @@ -4,7 +4,7 @@ GNUnet is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published - by the Free Software Foundation; either version 2, or (at your + by the Free Software Foundation; either version 3, or (at your option) any later version. GNUnet is distributed in the hope that it will be useful, but @@ -25,21 +25,6 @@ #include "platform.h" #include "gnunet_fs_service.h" -/** - * -a optiton. - */ -static unsigned int anonymity; - -/** - * -A option. - */ -static int start_automate; - -/** - * -e option - */ -static int stop_automate; - /** * -C option */ @@ -66,14 +51,14 @@ static int print_local_only; static struct GNUNET_CONTAINER_MetaData *adv_metadata; /** - * -p option. + * Our block options (-p, -r, -a). */ -static unsigned int priority = 365; +static struct GNUNET_FS_BlockOptions bo = { {0LL}, 1, 365, 1 }; /** * -q option given. */ -static int no_remote_printing; +static int no_remote_printing; /** * -r option. @@ -102,53 +87,37 @@ static const struct GNUNET_CONFIGURATION_Handle *cfg; static int ret; -static void* -progress_cb (void *cls, - const struct GNUNET_FS_ProgressInfo *info) +static void * +progress_cb (void *cls, const struct GNUNET_FS_ProgressInfo *info) { return NULL; } static void -ns_printer (void *cls, - const char *name, - const GNUNET_HashCode *id) +ns_printer (void *cls, const char *name, const GNUNET_HashCode * id) { struct GNUNET_CRYPTO_HashAsciiEncoded enc; GNUNET_CRYPTO_hash_to_enc (id, &enc); - fprintf (stdout, - "%s (%s)\n", - name, - (const char*) &enc); + fprintf (stdout, "%s (%s)\n", name, (const char *) &enc); } static int -pseudo_printer (void *cls, - const GNUNET_HashCode * - pseudonym, - const struct - GNUNET_CONTAINER_MetaData * md, - int rating) +pseudo_printer (void *cls, const GNUNET_HashCode * pseudonym, + const struct GNUNET_CONTAINER_MetaData *md, int rating) { char *id; - id = GNUNET_PSEUDONYM_id_to_name (cfg, - pseudonym); + id = GNUNET_PSEUDONYM_id_to_name (cfg, pseudonym); if (id == NULL) - { - GNUNET_break (0); - return GNUNET_OK; - } - fprintf (stdout, - "%s (%d):\n", - id, - rating); - GNUNET_CONTAINER_meta_data_iterate (md, - &EXTRACTOR_meta_data_print, - stdout); + { + GNUNET_break (0); + return GNUNET_OK; + } + fprintf (stdout, "%s (%d):\n", id, rating); + GNUNET_CONTAINER_meta_data_iterate (md, &EXTRACTOR_meta_data_print, stdout); fprintf (stdout, "\n"); GNUNET_free (id); return GNUNET_OK; @@ -156,81 +125,58 @@ pseudo_printer (void *cls, static void -post_advertising (void *cls, - const struct GNUNET_FS_Uri *uri, - const char *emsg) +post_advertising (void *cls, const struct GNUNET_FS_Uri *uri, const char *emsg) { GNUNET_HashCode nsid; char *set; int delta; if (emsg != NULL) - { - fprintf (stderr, "%s", emsg); - ret = 1; - } + { + fprintf (stderr, "%s", emsg); + ret = 1; + } if (ns != NULL) + { + if (GNUNET_OK != GNUNET_FS_namespace_delete (ns, GNUNET_NO)) + ret = 1; + } + if (NULL != rating_change) + { + set = rating_change; + while ((*set != '\0') && (*set != ':')) + set++; + if (*set != ':') { - if (GNUNET_OK != - GNUNET_FS_namespace_delete (ns, - GNUNET_NO)) - ret = 1; - } - if (0 != stop_automate) - { - GNUNET_break (0); // FIXME: not implemented - } - if (0 != start_automate) - { - GNUNET_break (0); // FIXME: not implemented + GNUNET_log (GNUNET_ERROR_TYPE_ERROR, _("Invalid argument `%s'\n"), + rating_change); } - if (NULL != rating_change) + else { - set = rating_change; - while ((*set != '\0') && (*set != ':')) - set++; - if (*set != ':') - { - GNUNET_log (GNUNET_ERROR_TYPE_ERROR, - _("Invalid argument `%s'\n"), - rating_change); - } + *set = '\0'; + delta = strtol (&set[1], NULL, /* no error handling yet */ + 10); + if (GNUNET_OK == GNUNET_PSEUDONYM_name_to_id (cfg, rating_change, &nsid)) + { + (void) GNUNET_PSEUDONYM_rank (cfg, &nsid, delta); + } else - { - *set = '\0'; - delta = strtol (&set[1], NULL, /* no error handling yet */ - 10); - if (GNUNET_OK == - GNUNET_PSEUDONYM_name_to_id (cfg, - rating_change, - &nsid)) - { - (void) GNUNET_PSEUDONYM_rank (cfg, - &nsid, - delta); - } - else - { - GNUNET_log (GNUNET_ERROR_TYPE_ERROR, - _("Namespace `%s' unknown.\n"), - rating_change); - } - } - GNUNET_free (rating_change); - rating_change = NULL; + { + GNUNET_log (GNUNET_ERROR_TYPE_ERROR, _("Namespace `%s' unknown.\n"), + rating_change); + } } + GNUNET_free (rating_change); + rating_change = NULL; + } if (0 != print_local_only) - { - GNUNET_FS_namespace_list (h, - &ns_printer, - NULL); - } + { + GNUNET_FS_namespace_list (h, &ns_printer, NULL); + } else if (0 == no_remote_printing) - { - GNUNET_PSEUDONYM_list_all (cfg, - &pseudo_printer, - NULL); - } + { + GNUNET_PSEUDONYM_list_all (cfg, &pseudo_printer, NULL); + } GNUNET_FS_stop (h); } @@ -239,136 +185,77 @@ post_advertising (void *cls, * Main function that will be run by the scheduler. * * @param cls closure - * @param sched the scheduler to use * @param args remaining command-line arguments * @param cfgfile name of the configuration file used (for saving, can be NULL!) * @param c configuration */ static void -run (void *cls, - struct GNUNET_SCHEDULER_Handle *sched, - char *const *args, - const char *cfgfile, +run (void *cls, char *const *args, const char *cfgfile, const struct GNUNET_CONFIGURATION_Handle *c) { - struct GNUNET_FS_Uri *ns_uri; - struct GNUNET_TIME_Absolute expiration; char *emsg; cfg = c; - h = GNUNET_FS_start (sched, - cfg, - "gnunet-pseudonym", - &progress_cb, - NULL, - GNUNET_FS_FLAGS_NONE); + h = GNUNET_FS_start (cfg, "gnunet-pseudonym", &progress_cb, NULL, + GNUNET_FS_FLAGS_NONE, GNUNET_FS_OPTIONS_END); if (NULL != delete_ns) + { + ns = GNUNET_FS_namespace_create (h, delete_ns); + if (ns == NULL) { - ns = GNUNET_FS_namespace_create (h, delete_ns); - if (ns == NULL) - { - ret = 1; - } - else - { - if (GNUNET_OK != - GNUNET_FS_namespace_delete (ns, - GNUNET_YES)) - ret = 1; - ns = NULL; - } + ret = 1; } + else + { + if (GNUNET_OK != GNUNET_FS_namespace_delete (ns, GNUNET_YES)) + ret = 1; + ns = NULL; + } + } if (NULL != create_ns) + { + ns = GNUNET_FS_namespace_create (h, create_ns); + if (ns == NULL) + { + ret = 1; + } + else { - ns = GNUNET_FS_namespace_create (h, create_ns); - if (ns == NULL) - { - ret = 1; - } + if (NULL != root_identifier) + { + if (ksk_uri == NULL) + { + emsg = NULL; + ksk_uri = GNUNET_FS_uri_parse ("gnunet://fs/ksk/namespace", &emsg); + GNUNET_assert (NULL == emsg); + } + GNUNET_FS_namespace_advertise (h, ksk_uri, ns, adv_metadata, &bo, + root_identifier, &post_advertising, + NULL); + return; + } else - { - if (NULL != root_identifier) - { - emsg = NULL; - ns_uri = GNUNET_FS_uri_sks_create (ns, root_identifier, &emsg); - GNUNET_assert (emsg == NULL); - expiration = GNUNET_TIME_relative_to_absolute (GNUNET_TIME_UNIT_YEARS); - if (ksk_uri == NULL) - { - emsg = NULL; - ksk_uri = GNUNET_FS_uri_parse ("gnunet://fs/ksk/namespace", &emsg); - GNUNET_assert (NULL == emsg); - } - GNUNET_FS_publish_ksk (h, - ksk_uri, - adv_metadata, - ns_uri, - expiration, - anonymity, - priority, - GNUNET_FS_PUBLISH_OPTION_NONE, - &post_advertising, - NULL); - GNUNET_FS_uri_destroy (ns_uri); - return; - } - } + { + if (ksk_uri != NULL) + fprintf (stderr, _("Option `%s' ignored\n"), "-k"); + } } + } + else + { + if (root_identifier != NULL) + fprintf (stderr, _("Option `%s' ignored\n"), "-r"); + if (ksk_uri != NULL) + fprintf (stderr, _("Option `%s' ignored\n"), "-k"); + } + post_advertising (NULL, NULL, NULL); } -/** - * gnunet-pseudonym command line options - */ -static struct GNUNET_GETOPT_CommandLineOption options[] = { - {'a', "anonymity", "LEVEL", - gettext_noop ("set the desired LEVEL of sender-anonymity"), - 1, &GNUNET_GETOPT_set_uint, &anonymity}, - {'A', "automate", NULL, - gettext_noop ("start a collection"), - 0, &GNUNET_GETOPT_set_one, &start_automate}, - {'C', "create", "NAME", - gettext_noop - ("create or advertise namespace NAME"), - 1, &GNUNET_GETOPT_set_string, &create_ns}, - {'D', "delete", "NAME", - gettext_noop - ("delete namespace NAME "), - 1, &GNUNET_GETOPT_set_string, &delete_ns}, - {'e', "end", NULL, - gettext_noop ("end current collection"), - 0, &GNUNET_GETOPT_set_one, &stop_automate}, - {'k', "keyword", "VALUE", - gettext_noop - ("add an additional keyword for the advertisment" - " (this option can be specified multiple times)"), - 1, &GNUNET_FS_getopt_set_keywords, &ksk_uri}, - {'m', "meta", "TYPE:VALUE", - gettext_noop ("set the meta-data for the given TYPE to the given VALUE"), - 1, &GNUNET_FS_getopt_set_metadata, &adv_metadata}, - {'o', "only-local", NULL, - gettext_noop ("print names of local namespaces"), - 0, &GNUNET_GETOPT_set_one, &print_local_only}, - {'p', "priority", "PRIORITY", - gettext_noop ("use the given PRIORITY for the advertisments"), - 1, &GNUNET_GETOPT_set_uint, &priority}, - {'q', "quiet", NULL, - gettext_noop ("do not print names of remote namespaces"), - 0, &GNUNET_GETOPT_set_one, &no_remote_printing}, - {'r', "root", "ID", - gettext_noop - ("specify ID of the root of the namespace"), - 1, &GNUNET_GETOPT_set_string, &root_identifier}, - {'s', "set-rating", "ID:VALUE", - gettext_noop - ("change rating of namespace ID by VALUE"), - 1, &GNUNET_GETOPT_set_string, &rating_change}, - GNUNET_GETOPT_OPTION_END -}; - /** - * The main function to inspect GNUnet directories. + * The main function to manipulate GNUnet pseudonyms (and publish + * to namespaces). * * @param argc number of arguments from the command line * @param argv command line arguments @@ -377,12 +264,48 @@ static struct GNUNET_GETOPT_CommandLineOption options[] = { int main (int argc, char *const *argv) { + static const struct GNUNET_GETOPT_CommandLineOption options[] = { + {'a', "anonymity", "LEVEL", + gettext_noop ("set the desired LEVEL of sender-anonymity"), + 1, &GNUNET_GETOPT_set_uint, &bo.anonymity_level}, + {'C', "create", "NAME", + gettext_noop ("create or advertise namespace NAME"), + 1, &GNUNET_GETOPT_set_string, &create_ns}, + {'D', "delete", "NAME", + gettext_noop ("delete namespace NAME "), + 1, &GNUNET_GETOPT_set_string, &delete_ns}, + {'k', "keyword", "VALUE", + gettext_noop ("add an additional keyword for the advertisment" + " (this option can be specified multiple times)"), + 1, &GNUNET_FS_getopt_set_keywords, &ksk_uri}, + {'m', "meta", "TYPE:VALUE", + gettext_noop ("set the meta-data for the given TYPE to the given VALUE"), + 1, &GNUNET_FS_getopt_set_metadata, &adv_metadata}, + {'o', "only-local", NULL, + gettext_noop ("print names of local namespaces"), + 0, &GNUNET_GETOPT_set_one, &print_local_only}, + {'p', "priority", "PRIORITY", + gettext_noop ("use the given PRIORITY for the advertisments"), + 1, &GNUNET_GETOPT_set_uint, &bo.content_priority}, + {'q', "quiet", NULL, + gettext_noop ("do not print names of remote namespaces"), + 0, &GNUNET_GETOPT_set_one, &no_remote_printing}, + {'r', "replication", "LEVEL", + gettext_noop ("set the desired replication LEVEL"), + 1, &GNUNET_GETOPT_set_uint, &bo.replication_level}, + {'R', "root", "ID", + gettext_noop ("specify ID of the root of the namespace"), + 1, &GNUNET_GETOPT_set_string, &root_identifier}, + {'s', "set-rating", "ID:VALUE", + gettext_noop ("change rating of namespace ID by VALUE"), + 1, &GNUNET_GETOPT_set_string, &rating_change}, + GNUNET_GETOPT_OPTION_END + }; + bo.expiration_time = + GNUNET_FS_year_to_time (GNUNET_FS_get_current_year () + 2); return (GNUNET_OK == - GNUNET_PROGRAM_run (argc, - argv, - "gnunet-pseudonym", - gettext_noop - ("Manage GNUnet pseudonyms."), + GNUNET_PROGRAM_run (argc, argv, "gnunet-pseudonym [OPTIONS]", + gettext_noop ("Manage GNUnet pseudonyms."), options, &run, NULL)) ? ret : 1; }