X-Git-Url: http://git.meshlink.io/?a=blobdiff_plain;f=src%2Finvitation.c;h=f75bf40928f91af97b3241c12862756eba9fab73;hb=158cbe99f972a1613b7d4d95abfe5fe48e019e67;hp=a94460e86ea23fa15ddbfdd10349028b21ced84d;hpb=00398a60ec317740bcec83c5a524c5a95ce7f1c2;p=meshlink diff --git a/src/invitation.c b/src/invitation.c index a94460e8..f75bf409 100644 --- a/src/invitation.c +++ b/src/invitation.c @@ -1,6 +1,6 @@ /* invitation.c -- Create and accept invitations - Copyright (C) 2013 Guus Sliepen + Copyright (C) 2014 Guus Sliepen This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -24,10 +24,8 @@ #include "ecdsa.h" #include "ecdsagen.h" #include "invitation.h" -#include "names.h" #include "netutl.h" #include "rsagen.h" -#include "script.h" #include "sptps.h" #include "tincctl.h" #include "utils.h" @@ -142,12 +140,19 @@ char *get_my_hostname() { } } + if(!tty) { + if(!hostname) { + fprintf(stderr, "Could not determine the external address or hostname. Please set Address manually.\n"); + return NULL; + } + goto save; + } + again: - printf("Please enter your host's external address or hostname"); + fprintf(stderr, "Please enter your host's external address or hostname"); if(hostname) - printf(" [%s]", hostname); - printf(": "); - fflush(stdout); + fprintf(stderr, " [%s]", hostname); + fprintf(stderr, ": "); if(!fgets(line, sizeof line, stdin)) { fprintf(stderr, "Error while reading stdin: %s\n", strerror(errno)); @@ -427,22 +432,6 @@ int cmd_invite(int argc, char *argv[]) { char *url; xasprintf(&url, "%s/%s%s", address, hash, cookie); - // Call the inviation-created script - char *envp[6] = {}; - xasprintf(&envp[0], "NAME=%s", myname); - xasprintf(&envp[1], "NETNAME=%s", netname); - xasprintf(&envp[2], "NODE=%s", argv[1]); - xasprintf(&envp[3], "INVITATION_FILE=%s", filename); - xasprintf(&envp[4], "INVITATION_URL=%s", url); - execute_script("invitation-created", envp); - for(int i = 0; i < 6 && envp[i]; i++) - free(envp[i]); - - puts(url); - free(url); - free(filename); - free(address); - return 0; } @@ -556,13 +545,6 @@ static bool finalize_join(void) { char temp_netname[32]; make_names: - if(!confbasegiven) { - free(confbase); - confbase = NULL; - } - - make_names(); - free(tinc_conf); free(hosts_dir); @@ -571,7 +553,7 @@ make_names: if(!access(tinc_conf, F_OK)) { fprintf(stderr, "Configuration file %s already exists!\n", tinc_conf); - if(!tty || confbasegiven) + if(confbasegiven) return false; // Generate a random netname, ask for a better one later. @@ -747,7 +729,7 @@ make_names: check_port(name); ask_netname: - if(ask_netname) { + if(ask_netname && tty) { fprintf(stderr, "Enter a new netname: "); if(!fgets(line, sizeof line, stdin)) { fprintf(stderr, "Error while reading stdin: %s\n", strerror(errno)); @@ -768,9 +750,10 @@ ask_netname: free(newbase); netname = line; - make_names(); } + fprintf(stderr, "Configuration stored in: %s\n", confbase); + return true; } @@ -827,11 +810,6 @@ int cmd_join(int argc, char *argv[]) { } // Make sure confbase exists and is accessible. - if(!confbase_given && mkdir(confdir, 0755) && errno != EEXIST) { - fprintf(stderr, "Could not create directory %s: %s\n", confdir, strerror(errno)); - return 1; - } - if(mkdir(confbase, 0777) && errno != EEXIST) { fprintf(stderr, "Could not create directory %s: %s\n", confbase, strerror(errno)); return 1; @@ -854,10 +832,8 @@ int cmd_join(int argc, char *argv[]) { if(argc > 1) { invitation = argv[1]; } else { - if(tty) { - printf("Enter invitation URL: "); - fflush(stdout); - } + if(tty) + fprintf(stderr, "Enter invitation URL: "); errno = EPIPE; if(!fgets(line, sizeof line, stdin)) { fprintf(stderr, "Error while reading stdin: %s\n", strerror(errno));