BadVPN – Blame information for rev 1

Subversion Repositories:
Rev:
Rev Author Line No. Line
1 office 1 include_guard "dhcp_server"
2  
3 template dhcp_server {
4 alias("_arg0") addr;
5 alias("_arg1") prefix;
6 alias("_arg2") range_start;
7 alias("_arg3") range_end;
8 alias("_arg4") routers;
9 alias("_arg5") dns_servers;
10  
11 # Choose lease file.
12 concat("/var/lib/dhcp/dhcpd-", addr, ".leases") leases_file;
13  
14 # Create leases file if it doesn't exist.
15 file_stat(leases_file) stat;
16 If (stat.succeeded) { print(); } Else {
17 file_write(leases_file, "");
18 };
19  
20 # Create a temporary directory.
21 concat("/run/ncd-dhcp-server-", addr) run_dir;
22 run({"/bin/rm", "-rf", run_dir}, {});
23 run({"/bin/mkdir", run_dir}, {"/bin/rm", "-rf", run_dir});
24  
25 # Compute path for dhcp.conf.
26 concat(run_dir, "/dhcp.conf") dhcp_conf_path;
27  
28 # This is a template for dhcp.conf.
29 var("
30 default-lease-time 43200;
31 max-lease-time 43200;
32 log-facility local7;
33 ddns-update-style none;
34 local-address <LOCAL_ADDRESS>;
35  
36 subnet <NETWORK> netmask <NETMASK> {
37 authoritative;
38 range <RANGE_START> <RANGE_END>;
39 option routers <ROUTERS>;
40 option domain-name-servers <DNS_SERVERS>;
41 }
42 " ) config_template;
43  
44 # Compute some of the variables.
45 ipv4_net_from_addr_and_prefix(addr, prefix) network;
46 ipv4_prefix_to_mask(prefix) netmask;
47 implode(", ", routers) routers_str;
48 implode(", ", dns_servers) dns_servers_str;
49  
50 # Perform substitutions.
51 var({"<LOCAL_ADDRESS>", "<NETWORK>", "<NETMASK>", "<RANGE_START>", "<RANGE_END>", "<ROUTERS>", "<DNS_SERVERS>"}) regex;
52 var({addr, network, netmask, range_start, range_end, routers_str, dns_servers_str}) replace;
53 regex_replace(config_template, regex, replace) config_data;
54  
55 # Write dhcp.conf.
56 file_write(dhcp_conf_path, config_data);
57  
58 # Start dhcpd.
59 daemon({"/usr/sbin/dhcpd", "-f", "-cf", dhcp_conf_path, "-user", "dhcp", "-group", "dhcp", "--no-pid", "-lf", leases_file});
60 }