aboutsummaryrefslogtreecommitdiff
path: root/src/social/gnunet-social.c
diff options
context:
space:
mode:
authorGabor X Toth <*@tg-x.net>2016-05-11 22:11:06 +0000
committerGabor X Toth <*@tg-x.net>2016-05-11 22:11:06 +0000
commitd22568f1f9147e3d8ea96f2c4592985702b2eab9 (patch)
treef6e829e31d18d49fe2a73b91449ee35b8450a68b /src/social/gnunet-social.c
parentdf87fe209a93062875caa4ea78a601bed0777db0 (diff)
downloadgnunet-d22568f1f9147e3d8ea96f2c4592985702b2eab9.tar.gz
gnunet-d22568f1f9147e3d8ea96f2c4592985702b2eab9.zip
social cli: --host-assign option
Diffstat (limited to 'src/social/gnunet-social.c')
-rw-r--r--src/social/gnunet-social.c68
1 files changed, 50 insertions, 18 deletions
diff --git a/src/social/gnunet-social.c b/src/social/gnunet-social.c
index 97c6d7bda..fcf75d595 100644
--- a/src/social/gnunet-social.c
+++ b/src/social/gnunet-social.c
@@ -52,6 +52,9 @@ static int op_host_leave;
52/** --host-announce */ 52/** --host-announce */
53static int op_host_announce; 53static int op_host_announce;
54 54
55/** --host-assign */
56static int op_host_assign;
57
55/** --guest-enter */ 58/** --guest-enter */
56static int op_guest_enter; 59static int op_guest_enter;
57 60
@@ -106,9 +109,9 @@ static int opt_deny;
106/** --method */ 109/** --method */
107static char *opt_method; 110static char *opt_method;
108 111
109/** --body */ 112/** --data */
110// FIXME: should come from STDIN 113// FIXME: should come from STDIN
111static char *opt_body; 114static char *opt_data;
112 115
113/** --name */ 116/** --name */
114static char *opt_name; 117static char *opt_name;
@@ -283,7 +286,7 @@ guest_leave ()
283} 286}
284 287
285 288
286/* ANNOUNCE / TALK */ 289/* ANNOUNCE / ASSIGN / TALK */
287 290
288 291
289struct TransmitClosure 292struct TransmitClosure
@@ -310,7 +313,7 @@ notify_data (void *cls, uint16_t *data_size, void *data)
310 313
311 if (0 == tmit->size) 314 if (0 == tmit->size)
312 { 315 {
313 if (op_host_announce || op_guest_talk) 316 if (op_host_announce || op_host_assign || op_guest_talk)
314 { 317 {
315 exit_success (); 318 exit_success ();
316 } 319 }
@@ -339,6 +342,19 @@ host_announce (const char *method, const char *data, size_t data_size)
339 GNUNET_SOCIAL_ANNOUNCE_NONE); 342 GNUNET_SOCIAL_ANNOUNCE_NONE);
340} 343}
341 344
345static void
346host_assign (const char *name, const char *data, size_t data_size)
347{
348 struct GNUNET_PSYC_Environment *env = GNUNET_PSYC_env_create ();
349 GNUNET_PSYC_env_add (env, GNUNET_PSYC_OP_ASSIGN,
350 name, data, data_size);
351
352 tmit = (struct TransmitClosure) {};
353 GNUNET_SOCIAL_host_announce (hst, "_assign", env,
354 notify_data, &tmit,
355 GNUNET_SOCIAL_ANNOUNCE_NONE);
356}
357
342 358
343static void 359static void
344guest_talk (const char *method, 360guest_talk (const char *method,
@@ -727,6 +743,11 @@ host_enter ()
727static void 743static void
728place_reconnected () 744place_reconnected ()
729{ 745{
746 static int first_run = GNUNET_YES;
747 if (GNUNET_NO == first_run)
748 return;
749 first_run = GNUNET_NO;
750
730 if (op_replay) { 751 if (op_replay) {
731 history_replay (opt_start, opt_until, opt_method); 752 history_replay (opt_start, opt_until, opt_method);
732 } 753 }
@@ -754,7 +775,10 @@ host_reconnected (void *cls, int result,
754 host_leave (); 775 host_leave ();
755 } 776 }
756 else if (op_host_announce) { 777 else if (op_host_announce) {
757 host_announce (opt_method, opt_body, strlen (opt_body)); 778 host_announce (opt_method, opt_data, strlen (opt_data));
779 }
780 else if (op_host_assign) {
781 host_assign (opt_name, opt_data, strlen (opt_data) + 1);
758 } 782 }
759 else { 783 else {
760 place_reconnected (); 784 place_reconnected ();
@@ -774,7 +798,7 @@ guest_reconnected (void *cls, int result,
774 guest_leave (); 798 guest_leave ();
775 } 799 }
776 else if (op_guest_talk) { 800 else if (op_guest_talk) {
777 guest_talk (opt_method, opt_body, strlen (opt_body)); 801 guest_talk (opt_method, opt_data, strlen (opt_data));
778 } 802 }
779 else { 803 else {
780 place_reconnected (); 804 place_reconnected ();
@@ -841,7 +865,7 @@ app_recv_host (void *cls,
841 "Host: %s\n", host_pub_str); 865 "Host: %s\n", host_pub_str);
842 GNUNET_free (host_pub_str); 866 GNUNET_free (host_pub_str);
843 867
844 if ((op_host_reconnect || op_host_leave || op_host_announce 868 if ((op_host_reconnect || op_host_leave || op_host_announce || op_host_assign
845 || op_replay || op_replay_latest 869 || op_replay || op_replay_latest
846 || op_look_at || op_look_for) 870 || op_look_at || op_look_for)
847 && 0 == memcmp (&place_pub_key, host_pub_key, sizeof (*host_pub_key))) 871 && 0 == memcmp (&place_pub_key, host_pub_key, sizeof (*host_pub_key)))
@@ -942,14 +966,16 @@ run (void *cls, char *const *args, const char *cfgfile,
942 966
943 if (!opt_method) 967 if (!opt_method)
944 opt_method = "message"; 968 opt_method = "message";
945 if (!opt_body) 969 if (!opt_data)
946 opt_body = ""; 970 opt_data = "";
947 if (!opt_name) 971 if (!opt_name)
948 opt_name = ""; 972 opt_name = "";
949 973
950 if (! (op_status 974 if (! (op_status
951 || op_host_enter || op_host_reconnect || op_host_leave || op_host_announce 975 || op_host_enter || op_host_reconnect || op_host_leave
952 || op_guest_enter || op_guest_reconnect || op_guest_leave || op_guest_talk 976 || op_host_announce || op_host_assign
977 || op_guest_enter || op_guest_reconnect
978 || op_guest_leave || op_guest_talk
953 || op_replay || op_replay_latest 979 || op_replay || op_replay_latest
954 || op_look_at || op_look_for)) 980 || op_look_at || op_look_for))
955 { 981 {
@@ -961,7 +987,7 @@ run (void *cls, char *const *args, const char *cfgfile,
961 timeout_task = GNUNET_SCHEDULER_add_delayed (TIMEOUT, timeout, NULL); 987 timeout_task = GNUNET_SCHEDULER_add_delayed (TIMEOUT, timeout, NULL);
962 } 988 }
963 989
964 if ((op_host_reconnect || op_host_leave || op_host_announce 990 if ((op_host_reconnect || op_host_leave || op_host_announce || op_host_assign
965 || op_guest_reconnect || (op_guest_enter && !opt_gns) 991 || op_guest_reconnect || (op_guest_enter && !opt_gns)
966 || op_guest_leave || op_guest_talk 992 || op_guest_leave || op_guest_talk
967 || op_replay || op_replay_latest 993 || op_replay || op_replay_latest
@@ -1013,6 +1039,10 @@ main (int argc, char *const *argv)
1013 1039
1014 /* operations */ 1040 /* operations */
1015 1041
1042 { 'A', "host-assign", NULL,
1043 gettext_noop ("assign --name in state to --data"),
1044 GNUNET_NO, &GNUNET_GETOPT_set_one, &op_host_assign },
1045
1016 { 'B', "guest-leave", NULL, 1046 { 'B', "guest-leave", NULL,
1017 gettext_noop ("say good-bye and leave somebody else's place"), 1047 gettext_noop ("say good-bye and leave somebody else's place"),
1018 GNUNET_NO, &GNUNET_GETOPT_set_one, &op_guest_leave }, 1048 GNUNET_NO, &GNUNET_GETOPT_set_one, &op_guest_leave },
@@ -1072,9 +1102,9 @@ main (int argc, char *const *argv)
1072 gettext_noop ("application ID to use when connecting"), 1102 gettext_noop ("application ID to use when connecting"),
1073 GNUNET_YES, &GNUNET_GETOPT_set_string, &opt_app }, 1103 GNUNET_YES, &GNUNET_GETOPT_set_string, &opt_app },
1074 1104
1075 { 'b', "body", "MESSAGE_BODY", 1105 { 'd', "data", "DATA",
1076 gettext_noop ("message body to transmit"), 1106 gettext_noop ("message body or state value"),
1077 GNUNET_YES, &GNUNET_GETOPT_set_string, &opt_body }, 1107 GNUNET_YES, &GNUNET_GETOPT_set_string, &opt_data },
1078 1108
1079 { 'e', "ego", "NAME|PUBKEY", 1109 { 'e', "ego", "NAME|PUBKEY",
1080 gettext_noop ("name or public key of ego"), 1110 gettext_noop ("name or public key of ego"),
@@ -1093,7 +1123,7 @@ main (int argc, char *const *argv)
1093 GNUNET_YES, &GNUNET_GETOPT_set_string, &opt_peer }, 1123 GNUNET_YES, &GNUNET_GETOPT_set_string, &opt_peer },
1094 1124
1095 { 'k', "name", "VAR_NAME", 1125 { 'k', "name", "VAR_NAME",
1096 gettext_noop ("state variable name (key) to query"), 1126 gettext_noop ("name (key) to query from state"),
1097 GNUNET_YES, &GNUNET_GETOPT_set_string, &opt_name }, 1127 GNUNET_YES, &GNUNET_GETOPT_set_string, &opt_name },
1098 1128
1099 { 'm', "method", "METHOD_NAME", 1129 { 'm', "method", "METHOD_NAME",
@@ -1138,17 +1168,19 @@ main (int argc, char *const *argv)
1138 "gnunet-social --host-enter --ego <NAME or PUBKEY> [--follow] [--welcome | --deny]\n" 1168 "gnunet-social --host-enter --ego <NAME or PUBKEY> [--follow] [--welcome | --deny]\n"
1139 "gnunet-social --host-reconnect --place <PUBKEY> [--follow] [--welcome | --deny]\n" 1169 "gnunet-social --host-reconnect --place <PUBKEY> [--follow] [--welcome | --deny]\n"
1140 "gnunet-social --host-leave --place <PUBKEY>\n" 1170 "gnunet-social --host-leave --place <PUBKEY>\n"
1141 "gnunet-social --host-announce --place <PUBKEY> --method <METHOD_NAME> --body <MESSAGE_BODY>\n" 1171 "gnunet-social --host-announce --place <PUBKEY> --method <METHOD_NAME> --data <MESSAGE_BODY>\n"
1142 "\n" 1172 "\n"
1143 "gnunet-social --guest-enter --place <PUBKEY> --peer <PEERID> --ego <NAME or PUBKEY> [--follow]\n" 1173 "gnunet-social --guest-enter --place <PUBKEY> --peer <PEERID> --ego <NAME or PUBKEY> [--follow]\n"
1144 "gnunet-social --guest-enter --gns <GNS_NAME> --ego <NAME or PUBKEY> [--follow]\n" 1174 "gnunet-social --guest-enter --gns <GNS_NAME> --ego <NAME or PUBKEY> [--follow]\n"
1145 "gnunet-social --guest-reconnect --place <PUBKEY> [--follow]\n" 1175 "gnunet-social --guest-reconnect --place <PUBKEY> [--follow]\n"
1146 "gnunet-social --guest-leave --place <PUBKEY>\n" 1176 "gnunet-social --guest-leave --place <PUBKEY>\n"
1147 "gnunet-social --guest-talk --place <PUBKEY> --method <METHOD_NAME> --body <MESSAGE_BODY>\n" 1177 "gnunet-social --guest-talk --place <PUBKEY> --method <METHOD_NAME> --data <MESSAGE_BODY>\n"
1148 "\n" 1178 "\n"
1149 "gnunet-social --history-replay --place <PUBKEY> --start <MSGID> --until <MSGID> [--method <METHOD_PREFIX>]\n" 1179 "gnunet-social --history-replay --place <PUBKEY> --start <MSGID> --until <MSGID> [--method <METHOD_PREFIX>]\n"
1150 "gnunet-social --history-replay-latest --place <PUBKEY> --limit <MSG_LIMIT> [--method <METHOD_PREFIX>]\n" 1180 "gnunet-social --history-replay-latest --place <PUBKEY> --limit <MSG_LIMIT> [--method <METHOD_PREFIX>]\n"
1151 "\n" 1181 "\n"
1182 "gnunet-social --set --place <PUBKEY> --name <NAME> --data <VALUE>\n"
1183 "\n"
1152 "gnunet-social --look-at --place <PUBKEY> --name <FULL_NAME>\n" 1184 "gnunet-social --look-at --place <PUBKEY> --name <FULL_NAME>\n"
1153 "gnunet-social --look-for --place <PUBKEY> --name <NAME_PREFIX>\n"; 1185 "gnunet-social --look-for --place <PUBKEY> --name <NAME_PREFIX>\n";
1154 1186