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