예제 #1
0
def deploy_dc():
    for host in unique_server:
        with connect(host, "dc-eval", False) as r:
            r.execute("git clone https://github.com/dedis/Dissent.git")
            r.execute("cd Dissent; qmake application.pro; make -j")
            r.execute("cd Dissent/conf/local; ln -s ../../dissent .")
    
    with connect(unique_server[0], "dc-eval", False) as r:
        r.execute("cd Dissent; qmake keygen.pro; make -j")
예제 #2
0
def generate_key():
    with connect(unique_server[0], "dc-eval", False) as r:
    #    print server_n * len(unique_server) + client_n * len(unique_client) * connection 
    #    r.execute("cd Dissent/conf/local && rm -rf keys && ./keygen --nkeys %d" % (server_n * len(unique_server) + client_n * len(unique_server) * connection ) )
    #    r.execute("cd Dissent/conf/local && rm -rf public private; cp -r keys/* .")

        for host in unique_server[1:]:
            with connect(host, "dc-eval", False) as rt:
        	rt.execute("cd Dissent/conf/local && rm -rf keys")
    	for host in unique_server[1:]:
            r.execute("cd Dissent/conf/local; scp -r keys %s@%s:/home/jianyu/%s-dc-eval/Dissent/conf/local/" % (config.user, host, host))
        for host in unique_server[1:]:
            with connect(host, "dc-eval", False) as rt:
        	rt.execute("cd Dissent/conf/local && rm -rf public private ; mv keys/* .")
예제 #3
0
def sample(client_k):
    temp = []
    for host in unique_client:
        for j in client_n:
            temp.append((host, client_port[j]))
     ping_client = set(random.sample(temp, k=client_k)


def run_all():
    # server
    for i in range(len(unique_server)):
        #time.sleep(1)
        with connect(unique_server[i], "dc-eval", False) as r:
            for j in range(server_n): 
                r.execute("cd Dissent/conf/local ; rm *log; ./dissent server%d.conf &> /dev/null &" % (i*server_n + j))
    
    time.sleep(2)
    # client
    session_id = 0;
    for i in range(len(unique_client)):
        with connect(unique_client[i], "dc-eval", False) as r:
            for j in range(client_n):
                if (unique_client[i], client_port[j]) in ping_client:
                    r.execute("cd Dissent/conf/local ; rm *log ; ./dissent client%d.conf %d" % (i*client_n + j, (i*client_n + j), session_id))
                else:
                    r.execute("cd Dissent/conf/local ; rm *log ; ./dissent client%d.conf" % (i*client_n + j, (i*client_n + j)))

    #time.sleep(delay)
    setup_environment()

def signal_handler(sig, frame):
    unique_execute("killall dissent", will_wait=False)
    cleanup_environment()
    sys.exit(0)


signal.signal(signal.SIGINT, signal_handler)

dc_dep()
deploy_dc()

#unique_execute("killall dissent", will_wait=False)
#unique_execute("sed -i 's/10000/20000/g' Dissent/src/Connections/ConnectionManager.cpp && cd Dissent && qmake application.pro && make -j", will_wait=False)
#remake()

#generate_key()
#init()
run_all()
print "done"
time.sleep(1000000)
예제 #4
0
def deployClient():
    for idx, client in enumerate(clients):
        with connect(client['host'], client['name'], False) as r:
            r.execute("git clone [email protected]:jianyu-m/loopix.git")
            N = hexlify(os.urandom(8))
            all_providers = getProvidersNames()
            prvName = random.choice(all_providers)
            r.execute(
                "cd loopix/loopix/; python setup_client.py %d %s Client%s %s" %
                (client['port'], client['host'], N, prvName))
            r.get('loopix/loopix/publicClient.bin', 'publicClient-%s.bin' % N)
예제 #5
0
def deployProvider():
    for idx, provider in enumerate(providers):
        with connect(provider['host'], provider['name'], False) as r:
            r.execute("git clone [email protected]:jianyu-m/loopix.git")
            r.put("config.json", "loopix/loopix/")
            N = hexlify(os.urandom(8))
            r.execute(
                "cd loopix/loopix/; python setup_provider.py %d %s Provider%s"
                % (provider['port'], provider['host'], N))
            r.get('loopix/loopix/publicProvider.bin',
                  'publicProvider-%s.bin' % N)
예제 #6
0
def deployMixnode():
    for idx, mix in enumerate(mixes):
        with connect(mix['host'], mix['name'], False) as r:
            r.execute("git clone [email protected]:jianyu-m/loopix.git")
            r.put("config.json", "loopix/loopix/")
            N = hexlify(os.urandom(8))
            r.execute(
                "cd loopix/loopix/; python setup_mixnode.py %d %s Mix%s %s" %
                (mix['port'], mix['host'], N, 0))
            r.get('loopix/loopix/publicMixnode.bin',
                  'publicMixnode-%s.bin' % N)
예제 #7
0
def runClient():
    for client in clients:
        with connect(client['host'], client['name'] + "/loopix/loopix/",
                     False) as r:
            r.execute("twistd -y run_client.py")
예제 #8
0
def runProvider():
    for provider in providers:
        with connect(provider['host'], provider['name'] + "/loopix/loopix/",
                     False) as r:
            r.execute("twistd -y run_provider.py")
예제 #9
0
def runMixnode():
    for mix in mixes:
        with connect(mix['host'], mix['name'] + "/loopix/loopix/", False) as r:
            r.execute("twistd -y run_mixnode.py")
예제 #10
0
def loaddir():
    for instance in instances:
        with connect(instance['host'], instance['name'], False) as r:
            r.put("example.db", "loopix/loopix/")
예제 #11
0
def init():
    for host in unique_server:
        with connect(host, "dc-eval", False) as rt:
            rt.execute("cd Dissent/conf/local; rm *conf *log")
    # generate server.conf
    #os.system("ls ../Dissent/conf/local/private/* | awk -F / '{print $6}' | sort > all_ids")
    all_ids = []
    with open("all_ids") as f:
        for line in f.readlines():
            all_ids.append(line[:-1])
    print len(all_ids)
    info = "[general]\n"
    info += "local_nodes=1\n"
    info += "remote_endpoints="
    for i in range(len(unique_server)):
        for j in range(server_n):
            if i == len(unique_server) - 1 and j == server_n - 1:
                info += "\"tcp://%s:%s\"\n\n" % (unique_server[i], server_port[j])
            else:
                info += "\"tcp://%s:%s\"," % (unique_server[i], server_port[j])
    info += "server_ids="
    for i in range(len(unique_server)):
        for j in range(server_n):
            if i == len(unique_server) - 1 and j == server_n - 1:
                info += "\"%s\"\n\n" % (s_ids[i * server_n + j])
                #info += "\"%s\"\n\n" % (all_ids[i * server_n + j])
            else:
                #info += "\"%s\"," % (all_ids[i * server_n + j])
                info += "\"%s\"," % (s_ids[i * server_n + j])
    info += "round_type=\"null/csdcnet\"\n"
    #info += "round_type=\"null/csdcnet\"\n"
    info += "auth=true\n"
    info += "path_to_private_keys=private\n"
    info += "path_to_public_keys=public\n\n"
    info += "console=false\n"\
            "exit_tunnel=true\n"\
            "multithreading=true\n\n"

    for i in range(len(unique_server)):
        for idx in range(server_n):
            server_conf = "server%d.conf" % (i * server_n + idx)
	    sid = i*server_n + idx
            print "server %d" % (sid)
            with open(server_conf, 'w') as f:
                f.write(info)
                f.write("local_endpoints=\"tcp://%s:%s\"\n" % (unique_server[i], server_port[idx]))
                f.write("local_id=\"%s\"\n" % (s_ids[sid]))
                #f.write("local_id=\"%s\"\n" % (all_ids[sid]))
                f.write("log=\"server%d.log\"\n" % (sid))
	    with connect(unique_server[i], "dc-eval", False) as r:
            	r.put(server_conf, "Dissent/conf/local/" + server_conf)
    # generate client.conf
    info = "[general]\n"
    info += "local_nodes=%d\n" % (connection)
    info += "remote_endpoints="
    for i in range(len(unique_server)):
        for j in range(server_n):
            if i == len(unique_server) - 1 and j == server_n - 1:
                info += "\"tcp://%s:%s\"\n\n" % (unique_server[i], server_port[j])
            else:
                info += "\"tcp://%s:%s\"," % (unique_server[i], server_port[j])
    info += "server_ids="
    for i in range(len(unique_server)):
        for j in range(server_n):
            if i == len(unique_server) - 1 and j == server_n - 1:
                info += "\"%s\"\n\n" % (s_ids[i * server_n + j])
                #info += "\"%s\"\n\n" % (all_ids[i * server_n + j])
            else:
                #info += "\"%s\"," % (all_ids[i * server_n + j])
                info += "\"%s\"," % (s_ids[i * server_n + j])
    info += "round_type=\"null/csdcnet\"\n"
    info += "path_to_private_keys=private\n"
    info += "path_to_public_keys=public\n\n"
    info += "exit_tunnel=false\n"\
            "multithreading=true\n\n"
    #info += "web_server_url=http://127.0.0.1:8080\nentry_tunnel_url = \"tcp://127.0.0.1:8081\"\n"
    cnt = 0
    all_ids = [x for x in (set(all_ids) - set(s_ids))]
    for i in range(len(unique_client)):
        for j in range(client_n):
            cid = (i * client_n + j) * connection
            client_conf = "client%d.conf" % (i * client_n + j)
            with open(client_conf, 'w') as f:
                f.write(info)
    		f.write("auth=true\n")
		if i == len(unique_client):
		#if i == len(unique_client) - 1:
		    f.write("console=true\n")
                else:
		    f.write("console=false\n")
    		f.write("web_server_url=http://127.0.0.1:%d\nentry_tunnel_url = \"tcp://127.0.0.1:%d\"\n" % (8080 + j, 7080 + j))
                f.write("local_endpoints=\"tcp://127.0.0.1:%s\"\n" % (client_port[j]))
                while all_ids[cnt] in s_ids:
                    print cnt
		    cnt += 1
                f.write("local_id=\"%s\"" % (all_ids[cnt]))
                cnt += 1
                #f.write("local_id=\"%s\"" % (all_ids[server_n * len(unique_server) + cid]))
		print "client %d" % (server_n * len(unique_server) + cid)
                for k in range(1, connection):
                    while all_ids[cnt] in s_ids:
                        print cnt
		        cnt += 1
                    f.write(", \"%s\"" % (all_ids[cnt]))
                    cnt += 1
		    print "client %d" % (server_n * len(unique_server) + cid + k)
                f.write("\n")
                f.write("log=\"clients%d.log\"\n" % (cid / connection))
            with connect(unique_client[i], "dc-eval", False) as r:
                r.put(client_conf, "Dissent/conf/local/" + client_conf)
예제 #12
0
def remake():
    for host in unique_server:
        with connect(host, "dc-eval", False) as rt:
            rt.execute("sed -i 's/20000/10000/g' Dissent/src/Connections/ConnectionManager.cpp && cd Dissent && qmake application.pro && make -j")
예제 #13
0
def run_all():
    # server
    for i in range(len(unique_server)):
        #time.sleep(1)
        with connect(unique_server[i], "dc-eval", False) as r: