5
0
mirror of https://github.com/cwinfo/yggdrasil-map synced 2024-11-25 02:01:35 +00:00

Use a config file

This commit is contained in:
Vanhala Antti 2014-03-30 01:51:57 +02:00
parent 2203cc1138
commit c478436e87
4 changed files with 54 additions and 19 deletions

3
.gitignore vendored
View File

@ -1,2 +1,5 @@
.cache .cache
*.pyc
graph.json graph.json
mapper-confs/*
mapperconf_sh.py

View File

@ -1,9 +1,8 @@
#!/usr/bin/env python #!/usr/bin/env python
cjdns_path = '/home/antti/prog/cjdns/' from mapperconf_sh import *
import sys import sys
sys.path.append(cjdns_path + 'contrib/python/cjdnsadmin/') sys.path.append(cjdns_path + '/contrib/python/cjdnsadmin/')
import adminTools as admin import adminTools as admin
from collections import deque from collections import deque
import pygraphviz as pgv import pygraphviz as pgv
@ -47,20 +46,15 @@ def has_edge(a, b):
return True return True
return False return False
for port in range(rpc_firstport, rpc_firstport + num_of_nodes):
for port in range(11244, 11245 + 35):
# for port in range(11247, 11248):
# G = pgv.AGraph(strict=True, directed=False, size='10!')
print port, print port,
these_nodes = dict() these_nodes = dict()
these_edges = [] these_edges = []
cjdns = admin.connect('127.0.0.1', port, 'lmykvh031jl0h90wg9sp6vx1k76pkmu') cjdns = admin.connect(rpc_connect, port, rpc_pw)
root = admin.whoami(cjdns) root = admin.whoami(cjdns)
rootIP = root['IP'] rootIP = root['IP']
print rootIP print rootIP
# if not rootIP in G.nodes():
# G.add_node(rootIP, label=rootIP[-4:])
add_node(Node(rootIP)) add_node(Node(rootIP))
nodes = deque() nodes = deque()
@ -75,7 +69,6 @@ for port in range(11244, 11245 + 35):
link = resp['result'] link = resp['result']
if 'linkCount' in link: if 'linkCount' in link:
numLinks = int(resp['result']['linkCount']) numLinks = int(resp['result']['linkCount'])
# G.get_node(parentIP).attr['version'] = resp['result']['protocolVersion']
all_nodes[parentIP].version = resp['result']['protocolVersion'] all_nodes[parentIP].version = resp['result']['protocolVersion']
for i in range(0, numLinks): for i in range(0, numLinks):
@ -92,20 +85,13 @@ for port in range(11244, 11245 + 35):
continue continue
# If its a new node then we want to follow it # If its a new node then we want to follow it
# if not childIP in G.nodes():
if not childIP in these_nodes: if not childIP in these_nodes:
add_node(Node(childIP)) add_node(Node(childIP))
# G.add_node(childIP, label=childIP[-4:])
# G.get_node(childIP).attr['version'] = 0
nodes.append(childIP) nodes.append(childIP)
# If there is not a link between the nodes we should put one there # If there is not a link between the nodes we should put one there
# if not G.has_edge(childIP, parentIP):
if not has_edge(childIP, parentIP): if not has_edge(childIP, parentIP):
# all_edges.append(Edge(all_nodes[childIP], all_nodes[parentIP]))
add_edge(Edge(these_nodes[childIP], these_nodes[parentIP])) add_edge(Edge(these_nodes[childIP], these_nodes[parentIP]))
# G.add_edge(parentIP, childIP, len=1.0)
# cjdns.disconnect() # cjdns.disconnect()
print (len(these_nodes), len(these_edges)) print (len(these_nodes), len(these_edges))
@ -117,7 +103,7 @@ print "Total", (len(all_nodes), len(all_edges))
G = pgv.AGraph(strict=True, directed=False, size='10!') G = pgv.AGraph(strict=True, directed=False, size='10!')
for n in all_nodes.values(): for n in all_nodes.values():
G.add_node(n.ip, label=n.label) G.add_node(n.ip, label=n.label, version=n.version)
for e in all_edges: for e in all_edges:
G.add_edge(e.a.ip, e.b.ip, len=1.0) G.add_edge(e.a.ip, e.b.ip, len=1.0)

20
mapperconf_sh.example.py Normal file
View File

@ -0,0 +1,20 @@
#
# This file should be runnable by bash and python!
#
cjdns_path="/home/user/cjdns"
num_of_nodes=30
# Where mapper nodes connect to
peer_ip="127.0.0.1"
peer_port="33333"
peer_pw="mapper-peers-hunter2qwertyuiopoiuytrewq"
peer_pk="osufn28fjjduan29dajsdnasiqlqn8ahasoasa.k"
# Admin RPC of mapper nodes
rpc_bind="127.0.0.1"
rpc_connect="127.0.0.1"
rpc_pw="Kjs8HuaKu2afdw"
rpc_firstport=11244

26
start-mappers.sh Executable file
View File

@ -0,0 +1,26 @@
#!/bin/bash
source mapperconf_sh.py
mkdir -p mapper-confs
for i in $(seq 1 $num_of_nodes)
do
echo "Starting mapper node $i/$num_of_nodes"
file=mapper-confs/node$i.conf
rpcport=$(($rpc_firstport + $i - 1))
$cjdns_path/cjdroute --genconf > $file
# Set peer credentials
sed -i 's/\/\/ Add connection credentials here to join the network/"'"${peer_ip}"':'"${peer_port}"'":{"password":"'"${peer_pw}"'","publicKey":"'"${peer_pk}"'"}/g' $file
# Set admin rpc credentials
sed -i 's/127.0.0.1:11234/'"${rpc_bind}"':'"${rpcport}"'/g' $file
sed -i 's/"password": ".*"/"password": "'"${rpc_pw}"'"/g' $file
# Disable tun interface
sed -i 's/"type": "TUNInterface"/\/\/"type": "TUNInterface"/g' $file
$cjdns_path/cjdroute < $file
done