blob: ae39c0fd577ef432fee4e9a2355363bd73b14213 [file] [log] [blame]
b.liue9582032025-04-17 19:18:16 +08001#!/bin/sh /etc/rc.common
2# Copyright (C) 2015 OpenWrt.org
3
4START=60
5USE_PROCD=1
6
7BIN=/usr/sbin/pptpd
8CONFIG=/var/etc/pptpd.conf
9CHAP_SECRETS=/var/etc/chap-secrets
10OPTIONS_PPTP=/var/etc/options.pptpd
11
12validate_login_section() {
13 uci_load_validate pptpd login "$1" "$2" \
14 'username:string' \
15 'password:string' \
16 'remoteip:string'
17}
18
19validate_pptpd_section() {
20 uci_load_validate pptpd service "$1" "$2" \
21 'enabled:bool:1' \
22 'localip:string' \
23 'remoteip:string' \
24 'mppe:list(string):required no40 no56 stateless' \
25 'logwtmp:bool:0'
26}
27
28setup_login() {
29 [ "$2" = 0 ] || {
30 echo "validation failed"
31 return 1
32 }
33
34 [ -n "$username" ] || return 0
35 [ -n "$password" ] || return 0
36 [ -n "$remoteip" ] || remoteip=*
37
38 echo "$username pptp-server $password $remoteip" >> $CHAP_SECRETS
39}
40
41setup_config() {
42 [ "$2" = 0 ] || {
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
62start_service() {
63 config_load pptpd
64 validate_pptpd_section pptpd setup_config || return
65 config_foreach validate_login_section login setup_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}
73
74service_triggers () {
75 procd_add_reload_trigger "pptpd"
76
77 procd_open_validate
78 validate_pptpd_section
79 validate_login_section
80 procd_close_validate
81}