aboutsummaryrefslogtreecommitdiff
path: root/src/identity
diff options
context:
space:
mode:
authorSchanzenbach, Martin <mschanzenbach@posteo.de>2017-03-29 14:26:33 +0200
committerSchanzenbach, Martin <mschanzenbach@posteo.de>2017-03-29 14:26:33 +0200
commitab281595eeb270120f89ec954a572f4fcf78fc53 (patch)
tree335a2caf503596adc400c5ebb9fb742f097bc5a3 /src/identity
parent59d393a1124cfd1aaffdf994bf6f8a9baaac8361 (diff)
parent2b87f173e360aaf4a3bac3fbc6e5b4dc44cf58cd (diff)
downloadgnunet-ab281595eeb270120f89ec954a572f4fcf78fc53.tar.gz
gnunet-ab281595eeb270120f89ec954a572f4fcf78fc53.zip
- merge with master
Diffstat (limited to 'src/identity')
-rw-r--r--src/identity/Makefile.am2
-rw-r--r--src/identity/gnunet-identity.c116
-rw-r--r--src/identity/identity_api.c14
3 files changed, 91 insertions, 41 deletions
diff --git a/src/identity/Makefile.am b/src/identity/Makefile.am
index c6f6625f4..94e8c5e94 100644
--- a/src/identity/Makefile.am
+++ b/src/identity/Makefile.am
@@ -92,7 +92,7 @@ check_PROGRAMS = \
92endif 92endif
93 93
94if ENABLE_TEST_RUN 94if ENABLE_TEST_RUN
95AM_TESTS_ENVIRONMENT=export GNUNET_PREFIX=$${GNUNET_PREFIX:-@libdir@};export PATH=$${GNUNET_PREFIX:-@prefix@}/bin:$$PATH; 95AM_TESTS_ENVIRONMENT=export GNUNET_PREFIX=$${GNUNET_PREFIX:-@libdir@};export PATH=$${GNUNET_PREFIX:-@prefix@}/bin:$$PATH;unset XDG_DATA_HOME;unset XDG_CONFIG_HOME;
96TESTS = $(check_PROGRAMS) 96TESTS = $(check_PROGRAMS)
97endif 97endif
98 98
diff --git a/src/identity/gnunet-identity.c b/src/identity/gnunet-identity.c
index f632aa0a8..9b66a1bc7 100644
--- a/src/identity/gnunet-identity.c
+++ b/src/identity/gnunet-identity.c
@@ -29,6 +29,12 @@
29#include "gnunet_util_lib.h" 29#include "gnunet_util_lib.h"
30#include "gnunet_identity_service.h" 30#include "gnunet_identity_service.h"
31 31
32
33/**
34 * Return value from main on timeout.
35 */
36#define TIMEOUT_STATUS_CODE 40
37
32/** 38/**
33 * Handle to IDENTITY service. 39 * Handle to IDENTITY service.
34 */ 40 */
@@ -79,6 +85,11 @@ static struct GNUNET_IDENTITY_Operation *create_op;
79 */ 85 */
80static struct GNUNET_IDENTITY_Operation *delete_op; 86static struct GNUNET_IDENTITY_Operation *delete_op;
81 87
88/**
89 * Value to return from #main().
90 */
91static int global_ret;
92
82 93
83/** 94/**
84 * Task run on shutdown. 95 * Task run on shutdown.
@@ -120,7 +131,11 @@ test_finished ()
120 (NULL == set_ego) && 131 (NULL == set_ego) &&
121 (! list) && 132 (! list) &&
122 (! monitor) ) 133 (! monitor) )
134 {
135 if (TIMEOUT_STATUS_CODE == global_ret)
136 global_ret = 0;
123 GNUNET_SCHEDULER_shutdown (); 137 GNUNET_SCHEDULER_shutdown ();
138 }
124} 139}
125 140
126 141
@@ -159,9 +174,12 @@ create_finished (void *cls,
159 174
160 *op = NULL; 175 *op = NULL;
161 if (NULL != emsg) 176 if (NULL != emsg)
177 {
162 fprintf (stderr, 178 fprintf (stderr,
163 _("Failed to create ego: %s\n"), 179 _("Failed to create ego: %s\n"),
164 emsg); 180 emsg);
181 global_ret = 1;
182 }
165 test_finished (); 183 test_finished ();
166} 184}
167 185
@@ -178,9 +196,12 @@ set_done (void *cls,
178{ 196{
179 set_op = NULL; 197 set_op = NULL;
180 if (NULL != emsg) 198 if (NULL != emsg)
199 {
181 fprintf (stderr, 200 fprintf (stderr,
182 _("Failed to set default ego: %s\n"), 201 _("Failed to set default ego: %s\n"),
183 emsg); 202 emsg);
203 global_ret = 1;
204 }
184 test_finished (); 205 test_finished ();
185} 206}
186 207
@@ -257,17 +278,23 @@ print_ego (void *cls,
257 } 278 }
258 if ( (NULL == ego) && (! monitor) ) 279 if ( (NULL == ego) && (! monitor) )
259 { 280 {
260 GNUNET_SCHEDULER_shutdown (); 281 list = 0;
282 test_finished ();
261 return; 283 return;
262 } 284 }
263 if (! (list | monitor)) 285 if (! (list | monitor))
264 return; 286 return;
265 if (NULL == ego) 287 if (NULL == ego)
266 return; 288 return;
267 GNUNET_IDENTITY_ego_get_public_key (ego, &pk); 289 GNUNET_IDENTITY_ego_get_public_key (ego,
290 &pk);
268 s = GNUNET_CRYPTO_ecdsa_public_key_to_string (&pk); 291 s = GNUNET_CRYPTO_ecdsa_public_key_to_string (&pk);
269 if ( (monitor) || (NULL != identifier) ) 292 if ( (monitor) ||
270 fprintf (stdout, "%s - %s\n", identifier, s); 293 (NULL != identifier) )
294 fprintf (stdout,
295 "%s - %s\n",
296 identifier,
297 s);
271 GNUNET_free (s); 298 GNUNET_free (s);
272} 299}
273 300
@@ -281,7 +308,9 @@ print_ego (void *cls,
281 * @param cfg configuration 308 * @param cfg configuration
282 */ 309 */
283static void 310static void
284run (void *cls, char *const *args, const char *cfgfile, 311run (void *cls,
312 char *const *args,
313 const char *cfgfile,
285 const struct GNUNET_CONFIGURATION_Handle *cfg) 314 const struct GNUNET_CONFIGURATION_Handle *cfg)
286{ 315{
287 if ( (NULL == set_subsystem) ^ 316 if ( (NULL == set_subsystem) ^
@@ -291,7 +320,9 @@ run (void *cls, char *const *args, const char *cfgfile,
291 "Options -e and -s must always be specified together\n"); 320 "Options -e and -s must always be specified together\n");
292 return; 321 return;
293 } 322 }
294 sh = GNUNET_IDENTITY_connect (cfg, &print_ego, NULL); 323 sh = GNUNET_IDENTITY_connect (cfg,
324 &print_ego,
325 NULL);
295 if (NULL != delete_ego) 326 if (NULL != delete_ego)
296 delete_op = GNUNET_IDENTITY_delete (sh, 327 delete_op = GNUNET_IDENTITY_delete (sh,
297 delete_ego, 328 delete_ego,
@@ -302,7 +333,8 @@ run (void *cls, char *const *args, const char *cfgfile,
302 create_ego, 333 create_ego,
303 &create_finished, 334 &create_finished,
304 &create_op); 335 &create_op);
305 GNUNET_SCHEDULER_add_shutdown (&shutdown_task, NULL); 336 GNUNET_SCHEDULER_add_shutdown (&shutdown_task,
337 NULL);
306 test_finished (); 338 test_finished ();
307} 339}
308 340
@@ -317,42 +349,60 @@ run (void *cls, char *const *args, const char *cfgfile,
317int 349int
318main (int argc, char *const *argv) 350main (int argc, char *const *argv)
319{ 351{
320 int res; 352 struct GNUNET_GETOPT_CommandLineOption options[] = {
353 GNUNET_GETOPT_option_string ('C',
354 "create",
355 "NAME",
356 gettext_noop ("create ego NAME"),
357 &create_ego),
358
359 GNUNET_GETOPT_option_string ('D',
360 "delete",
361 "NAME",
362 gettext_noop ("delete ego NAME "),
363 &delete_ego),
364
365 GNUNET_GETOPT_option_flag ('d',
366 "display",
367 gettext_noop ("display all egos"),
368 &list),
369
370 GNUNET_GETOPT_option_string ('e',
371 "ego",
372 "NAME",
373 gettext_noop ("set default identity to EGO for a subsystem SUBSYSTEM (use together with -s)"),
374 &set_ego),
375
376 GNUNET_GETOPT_option_flag ('m',
377 "monitor",
378 gettext_noop ("run in monitor mode egos"),
379 &monitor),
380
381 GNUNET_GETOPT_option_string ('s',
382 "set",
383 "SUBSYSTEM",
384 gettext_noop ("set default identity to EGO for a subsystem SUBSYSTEM (use together with -e)"),
385 &set_subsystem),
321 386
322 static const struct GNUNET_GETOPT_CommandLineOption options[] = {
323 {'C', "create", "NAME",
324 gettext_noop ("create ego NAME"),
325 1, &GNUNET_GETOPT_set_string, &create_ego},
326 {'D', "delete", "NAME",
327 gettext_noop ("delete ego NAME "),
328 1, &GNUNET_GETOPT_set_string, &delete_ego},
329 {'d', "display", NULL,
330 gettext_noop ("display all egos"),
331 0, &GNUNET_GETOPT_set_one, &list},
332 {'e', "ego", "NAME",
333 gettext_noop ("set default identity to EGO for a subsystem SUBSYSTEM (use together with -s)"),
334 1, &GNUNET_GETOPT_set_string, &set_ego},
335 {'m', "monitor", NULL,
336 gettext_noop ("run in monitor mode egos"),
337 0, &GNUNET_GETOPT_set_one, &monitor},
338 {'s', "set", "SUBSYSTEM",
339 gettext_noop ("set default identity to EGO for a subsystem SUBSYSTEM (use together with -e)"),
340 1, &GNUNET_GETOPT_set_string, &set_subsystem},
341 GNUNET_GETOPT_OPTION_END 387 GNUNET_GETOPT_OPTION_END
342 }; 388 };
389 int res;
343 390
344 if (GNUNET_OK != GNUNET_STRINGS_get_utf8_args (argc, argv, &argc, &argv)) 391 if (GNUNET_OK !=
345 return 2; 392 GNUNET_STRINGS_get_utf8_args (argc, argv,
346 393 &argc, &argv))
347 res = GNUNET_PROGRAM_run (argc, argv, "gnunet-identity", 394 return 4;
395 global_ret = TIMEOUT_STATUS_CODE; /* timeout */
396 res = GNUNET_PROGRAM_run (argc, argv,
397 "gnunet-identity",
348 gettext_noop ("Maintain egos"), 398 gettext_noop ("Maintain egos"),
349 options, &run, 399 options, &run,
350 NULL); 400 NULL);
351 GNUNET_free ((void *) argv); 401 GNUNET_free ((void *) argv);
352 402
353 if (GNUNET_OK != res) 403 if (GNUNET_OK != res)
354 return 1; 404 return 3;
355 return 0; 405 return global_ret;
356} 406}
357 407
358/* end of gnunet-identity.c */ 408/* end of gnunet-identity.c */
diff --git a/src/identity/identity_api.c b/src/identity/identity_api.c
index 905b3fd8b..1601ae2fd 100644
--- a/src/identity/identity_api.c
+++ b/src/identity/identity_api.c
@@ -671,7 +671,7 @@ GNUNET_IDENTITY_get (struct GNUNET_IDENTITY_Handle *h,
671 if (NULL == h->mq) 671 if (NULL == h->mq)
672 return NULL; 672 return NULL;
673 slen = strlen (service_name) + 1; 673 slen = strlen (service_name) + 1;
674 if (slen >= GNUNET_SERVER_MAX_MESSAGE_SIZE - sizeof (struct GetDefaultMessage)) 674 if (slen >= GNUNET_MAX_MESSAGE_SIZE - sizeof (struct GetDefaultMessage))
675 { 675 {
676 GNUNET_break (0); 676 GNUNET_break (0);
677 return NULL; 677 return NULL;
@@ -722,7 +722,7 @@ GNUNET_IDENTITY_set (struct GNUNET_IDENTITY_Handle *h,
722 if (NULL == h->mq) 722 if (NULL == h->mq)
723 return NULL; 723 return NULL;
724 slen = strlen (service_name) + 1; 724 slen = strlen (service_name) + 1;
725 if (slen >= GNUNET_SERVER_MAX_MESSAGE_SIZE - sizeof (struct SetDefaultMessage)) 725 if (slen >= GNUNET_MAX_MESSAGE_SIZE - sizeof (struct SetDefaultMessage))
726 { 726 {
727 GNUNET_break (0); 727 GNUNET_break (0);
728 return NULL; 728 return NULL;
@@ -773,7 +773,7 @@ GNUNET_IDENTITY_create (struct GNUNET_IDENTITY_Handle *h,
773 if (NULL == h->mq) 773 if (NULL == h->mq)
774 return NULL; 774 return NULL;
775 slen = strlen (name) + 1; 775 slen = strlen (name) + 1;
776 if (slen >= GNUNET_SERVER_MAX_MESSAGE_SIZE - sizeof (struct CreateRequestMessage)) 776 if (slen >= GNUNET_MAX_MESSAGE_SIZE - sizeof (struct CreateRequestMessage))
777 { 777 {
778 GNUNET_break (0); 778 GNUNET_break (0);
779 return NULL; 779 return NULL;
@@ -830,9 +830,9 @@ GNUNET_IDENTITY_rename (struct GNUNET_IDENTITY_Handle *h,
830 return NULL; 830 return NULL;
831 slen_old = strlen (old_name) + 1; 831 slen_old = strlen (old_name) + 1;
832 slen_new = strlen (new_name) + 1; 832 slen_new = strlen (new_name) + 1;
833 if ( (slen_old >= GNUNET_SERVER_MAX_MESSAGE_SIZE) || 833 if ( (slen_old >= GNUNET_MAX_MESSAGE_SIZE) ||
834 (slen_new >= GNUNET_SERVER_MAX_MESSAGE_SIZE) || 834 (slen_new >= GNUNET_MAX_MESSAGE_SIZE) ||
835 (slen_old + slen_new >= GNUNET_SERVER_MAX_MESSAGE_SIZE - sizeof (struct RenameMessage)) ) 835 (slen_old + slen_new >= GNUNET_MAX_MESSAGE_SIZE - sizeof (struct RenameMessage)) )
836 { 836 {
837 GNUNET_break (0); 837 GNUNET_break (0);
838 return NULL; 838 return NULL;
@@ -885,7 +885,7 @@ GNUNET_IDENTITY_delete (struct GNUNET_IDENTITY_Handle *h,
885 if (NULL == h->mq) 885 if (NULL == h->mq)
886 return NULL; 886 return NULL;
887 slen = strlen (name) + 1; 887 slen = strlen (name) + 1;
888 if (slen >= GNUNET_SERVER_MAX_MESSAGE_SIZE - sizeof (struct DeleteMessage)) 888 if (slen >= GNUNET_MAX_MESSAGE_SIZE - sizeof (struct DeleteMessage))
889 { 889 {
890 GNUNET_break (0); 890 GNUNET_break (0);
891 return NULL; 891 return NULL;