Random choice among bootstrap peers
[re6stnet.git] / ovpn-server
1 #!/usr/bin/python -S
2 import os, sys
3
4 # example of os.environ
5 {'X509_0_C': 'FR',
6  'X509_0_CN': 'ulm',
7  'X509_0_O': 'Guillaume Bury',
8  'X509_0_OU': 'VPN',
9  'X509_1_C': 'FR',
10  'X509_1_CN': 'Guillaume Bury CA',
11  'X509_1_O': 'Guillaume Bury',
12  'X509_1_OU': 'VPN',
13  'common_name': 'ulm',
14  'daemon': '0',
15  'daemon_log_redirect': '0',
16  'daemon_pid': '11637',
17  'daemon_start_time': '1341568405',
18  'dev': 'vifibnet',
19  'link_mtu': '1573',
20  'local_port_1': '1194',
21  'proto_1': 'udp',
22  'remote_port_1': '1194',
23  'script_context': 'init',
24  'script_type': 'client-connect',
25  'time_ascii': 'Fri Jul  6 11:53:31 2012',
26  'time_unix': '1341568411',
27  'tls_digest_0': '2d:eb:f3:05:5d:bf:17:62:dd:ef:d4:bb:30:c0:5b:b7:ef:e3:e8:a6',
28  'tls_digest_1': '43:1c:a1:22:ca:c0:a0:f5:b0:c6:65:6f:33:29:b2:bb:1d:04:43:9a',
29  'tls_id_0': '/C=FR/O=Guillaume_Bury/OU=VPN/CN=ulm',
30  'tls_id_1': '/C=FR/O=Guillaume_Bury/OU=VPN/CN=Guillaume_Bury_CA',
31  'tls_serial_0': '02',
32  'tls_serial_1': 'CC3019BC1CFA5141',
33  'trusted_ip': '192.0.2.25',
34  'trusted_port': '59345',
35  'tun_mtu': '1500',
36  'untrusted_ip': '192.0.2.25',
37  'untrusted_port': '59345',
38  'verb': '3'}
39
40 script_type = os.environ['script_type']
41 if script_type == 'up':
42     from subprocess import call
43     dev = os.environ['dev']
44     sys.exit(call(('ip', 'link', 'set', dev, 'up'))
45           or call(('ip', 'addr', 'add', sys.argv[1], 'dev', dev)))
46
47 if script_type == 'client-connect':
48     # Send client its external ip address
49     with open(sys.argv[2], 'w') as f:
50         f.write('push "setenv-safe external_ip %s"\n'
51                 % os.environ['trusted_ip'])
52
53 # Write into pipe connect/disconnect events
54 os.write(int(sys.argv[1]), '%(script_type)s %(common_name)s\n' % os.environ)