#include <stdlib.h>
#include <string.h>
#include <strings.h>
-#include "../src/meshlink.h"
+#include "../src/meshlink-tiny.h"
static void log_message(meshlink_handle_t *mesh, meshlink_log_level_t level, const char *text) {
(void)mesh;
}
}
-static meshlink_node_t **nodes;
-static size_t nnodes;
-
static void parse_command(meshlink_handle_t *mesh, char *buf) {
char *arg = strchr(buf, ' ');
*arg++ = 0;
}
- if(!strcasecmp(buf, "invite")) {
- char *invitation;
-
- if(!arg) {
- fprintf(stderr, "/invite requires an argument!\n");
- return;
- }
-
- invitation = meshlink_invite(mesh, NULL, arg);
-
- if(!invitation) {
- fprintf(stderr, "Could not invite '%s': %s\n", arg, meshlink_strerror(meshlink_errno));
- return;
- }
-
- printf("Invitation for %s: %s\n", arg, invitation);
- free(invitation);
- } else if(!strcasecmp(buf, "join")) {
+ if(!strcasecmp(buf, "join")) {
if(!arg) {
fprintf(stderr, "/join requires an argument!\n");
return;
fprintf(stderr, "Could not restart MeshLink: %s\n", meshlink_strerror(meshlink_errno));
exit(1);
}
- } else if(!strcasecmp(buf, "kick")) {
- if(!arg) {
- fprintf(stderr, "/kick requires an argument!\n");
- return;
- }
-
- meshlink_node_t *node = meshlink_get_node(mesh, arg);
-
- if(!node) {
- fprintf(stderr, "Error looking up '%s': %s\n", arg, meshlink_strerror(meshlink_errno));
- return;
- }
-
- if(!meshlink_blacklist(mesh, node)) {
- fprintf(stderr, "Error blacklising '%s': %s", arg, meshlink_strerror(meshlink_errno));
- return;
- }
-
- printf("Node '%s' blacklisted.\n", arg);
- } else if(!strcasecmp(buf, "whitelist")) {
- if(!arg) {
- fprintf(stderr, "/whitelist requires an argument!\n");
- return;
- }
-
- meshlink_node_t *node = meshlink_get_node(mesh, arg);
-
- if(!node) {
- fprintf(stderr, "Error looking up '%s': %s\n", arg, meshlink_strerror(meshlink_errno));
- return;
- }
-
- if(!meshlink_whitelist(mesh, node)) {
- fprintf(stderr, "Error whitelising '%s': %s", arg, meshlink_strerror(meshlink_errno));
- return;
- }
-
- printf("Node '%s' whitelisted.\n", arg);
- } else if(!strcasecmp(buf, "who")) {
- if(!arg) {
- nodes = meshlink_get_all_nodes(mesh, nodes, &nnodes);
-
- if(!nnodes) {
- fprintf(stderr, "Could not get list of nodes: %s\n", meshlink_strerror(meshlink_errno));
- } else {
- printf("%zu known nodes:", nnodes);
-
- for(size_t i = 0; i < nnodes; i++) {
- printf(" %s", nodes[i]->name);
- }
-
- printf("\n");
- }
- } else {
- meshlink_node_t *node = meshlink_get_node(mesh, arg);
-
- if(!node) {
- fprintf(stderr, "Error looking up '%s': %s\n", arg, meshlink_strerror(meshlink_errno));
- } else {
- printf("Node %s found\n", arg);
- }
- }
} else if(!strcasecmp(buf, "quit")) {
printf("Bye!\n");
fclose(stdin);
printf(
"<name>: <message> Send a message to the given node.\n"
" Subsequent messages don't need the <name>: prefix.\n"
- "/invite <name> Create an invitation for a new node.\n"
"/join <invitation> Join an existing mesh using an invitation.\n"
"/kick <name> Blacklist the given node.\n"
"/who [<name>] List all nodes or show information about the given node.\n"