#include "names.h"
#include "netutl.h"
#include "rsagen.h"
+#include "script.h"
#include "sptps.h"
#include "tincctl.h"
#include "utils.h"
free(filename);
return 1;
}
- free(filename);
f = fdopen(ifd, "w");
if(!f)
abort();
if(netname)
fprintf(f, "NetName = %s\n", netname);
fprintf(f, "ConnectTo = %s\n", myname);
- // TODO: copy Broadcast and Mode
+
+ // Copy Broadcast and Mode
+ FILE *tc = fopen(tinc_conf, "r");
+ if(tc) {
+ char buf[1024];
+ while(fgets(buf, sizeof buf, tc)) {
+ if((!strncasecmp(buf, "Mode", 4) && strchr(" \t=", buf[4]))
+ || (!strncasecmp(buf, "Broadcast", 9) && strchr(" \t=", buf[9])))
+ fputs(buf, f);
+ }
+ fclose(tc);
+ }
+
fprintf(f, "#---------------------------------------------------------------#\n");
fprintf(f, "Name = %s\n", myname);
- xasprintf(&filename, "%s" SLASH "hosts" SLASH "%s", confbase, myname);
- fcopy(f, filename);
+ char *filename2;
+ xasprintf(&filename2, "%s" SLASH "hosts" SLASH "%s", confbase, myname);
+ fcopy(f, filename2);
fclose(f);
+ free(filename2);
// Create an URL from the local address, key hash and cookie
- printf("%s/%s%s\n", address, hash, cookie);
+ 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);