BadVPN – Blame information for rev 1
?pathlinks?
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 | } |