udptunnel: new package
[feed/packages.git] / net / pptpd / files / pptpd.init
1 #!/bin/sh /etc/rc.common
2 # Copyright (C) 2015 OpenWrt.org
3
4 START=60
5 USE_PROCD=1
6
7 BIN=/usr/sbin/pptpd
8 CONFIG=/var/etc/pptpd.conf
9 CHAP_SECRETS=/var/etc/chap-secrets
10 OPTIONS_PPTP=/var/etc/options.pptpd
11
12 validate_login_section() {
13 uci_validate_section pptpd login "${1}" \
14 'username:string' \
15 'password:string'
16 }
17
18 validate_pptpd_section() {
19 uci_validate_section pptpd service "${1}" \
20 'enabled:uinteger' \
21 'localip:string' \
22 'remoteip:string' \
23 'mppe:list(string):required no40 no56 stateless' \
24 'logwtmp:uinteger'
25 }
26
27 setup_login() {
28 validate_login_section "${1}" || {
29 echo "validation failed"
30 return 1
31 }
32
33 [ -n "${username}" ] || return 0
34 [ -n "${password}" ] || return 0
35
36 echo "${username} pptp-server ${password} *" >> $CHAP_SECRETS
37 }
38
39 setup_config() {
40 local enabled localip remoteip mppe
41
42 validate_pptpd_section "${1}" || {
43 echo "validation failed"
44 return 1
45 }
46
47 [ "$enabled" -eq 0 ] && return 1
48
49 mkdir -p /var/etc
50 cp /etc/pptpd.conf $CONFIG
51 cp /etc/ppp/options.pptpd $OPTIONS_PPTP
52
53 [ -n "$localip" ] && echo "localip $localip" >> $CONFIG
54 [ -n "$remoteip" ] && echo "remoteip $remoteip" >> $CONFIG
55 [ "$logwtmp" -eq 1 ] && echo "logwtmp" >> $CONFIG
56
57 echo "mppe $(echo $mppe | sed -e 's/\s/,/g')" >> $OPTIONS_PPTP
58
59 return 0
60 }
61
62 start_service() {
63 config_load pptpd
64 setup_config pptpd || return
65 config_foreach setup_login login
66
67 ln -sfn $CHAP_SECRETS /etc/ppp/chap-secrets
68
69 procd_open_instance
70 procd_set_param command $BIN -c $CONFIG --fg -o $OPTIONS_PPTP
71 procd_close_instance
72 }