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