X-Git-Url: http://git.meshlink.io/?a=blobdiff_plain;f=src%2Fprotocol_auth.c;h=4caaf20396bc08883abcb99a1ed706d140e6a818;hb=f2ca99f9cec8d3a4a153163351fcd25545e50d83;hp=04674e8dc9e8ff5758844e665c3ceb5fe7033741;hpb=995444c4f96bafecf7fb5d59510b3034459cf85c;p=meshlink diff --git a/src/protocol_auth.c b/src/protocol_auth.c index 04674e8d..4caaf203 100644 --- a/src/protocol_auth.c +++ b/src/protocol_auth.c @@ -1,7 +1,7 @@ /* protocol_auth.c -- handle the meta-protocol, authentication Copyright (C) 1999-2005 Ivo Timmermans, - 2000-2013 Guus Sliepen + 2000-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 @@ -22,25 +22,20 @@ #include "conf.h" #include "connection.h" -#include "control.h" -#include "control_common.h" #include "cipher.h" #include "crypto.h" -#include "device.h" #include "digest.h" #include "ecdsa.h" #include "edge.h" #include "graph.h" #include "logger.h" #include "meta.h" -#include "names.h" #include "net.h" #include "netutl.h" #include "node.h" #include "prf.h" #include "protocol.h" #include "rsa.h" -#include "script.h" #include "sptps.h" #include "utils.h" #include "xalloc.h" @@ -177,22 +172,7 @@ static bool finalize_invitation(connection_t *c, const char *data, uint16_t len) logger(DEBUG_CONNECTIONS, LOG_INFO, "Key succesfully received from %s (%s)", c->name, c->hostname); - // Call invitation-accepted script - char *envp[7] = {NULL}; - char *address, *port; - - xasprintf(&envp[0], "NETNAME=%s", netname ? : ""); - xasprintf(&envp[1], "DEVICE=%s", device ? : ""); - xasprintf(&envp[2], "INTERFACE=%s", iface ? : ""); - xasprintf(&envp[3], "NODE=%s", c->name); - sockaddr2str(&c->address, &address, &port); - xasprintf(&envp[4], "REMOTEADDRESS=%s", address); - xasprintf(&envp[5], "NAME=%s", myself->name); - - execute_script("invitation-accepted", envp); - - for(int i = 0; envp[i] && i < 7; i++) - free(envp[i]); + //TODO: callback to application to inform of an accepted invitation sptps_send_record(&c->sptps, 2, data, 0); return true; @@ -292,18 +272,7 @@ bool id_h(connection_t *c, const char *request) { return false; } - /* Check if this is a control connection */ - - if(name[0] == '^' && !strcmp(name + 1, controlcookie)) { - c->status.control = true; - c->allow_request = CONTROL; - c->last_ping_time = now.tv_sec + 3600; - - free(c->name); - c->name = xstrdup(""); - - return send_request(c, "%d %d %d", ACK, TINC_CTL_VERSION_CURRENT, getpid()); - } + /* Check if this is an invitation */ if(name[0] == '?') { if(!invitation_key) { @@ -681,6 +650,7 @@ bool send_ack(connection_t *c) { static void send_everything(connection_t *c) { /* Send all known subnets and edges */ + // TODO: remove this if(disablebuggypeers) { static struct { vpn_packet_t pkt; @@ -692,17 +662,7 @@ static void send_everything(connection_t *c) { send_tcppacket(c, &zeropkt.pkt); } - if(tunnelserver) { - for splay_each(subnet_t, s, myself->subnet_tree) - send_add_subnet(c, s); - - return; - } - for splay_each(node_t, n, node_tree) { - for splay_each(subnet_t, s, n->subnet_tree) - send_add_subnet(c, s); - for splay_each(edge_t, e, n->edge_tree) send_add_edge(c, e); } @@ -767,7 +727,7 @@ bool ack_h(connection_t *c, const char *request) { } terminate_connection(n->connection, false); - /* Run graph algorithm to purge key and make sure up/down scripts are rerun with new IP addresses and stuff */ + /* Run graph algorithm to keep things in sync */ graph(); } }