diff --git a/README.md b/README.md
index 2bce6e4..3e9b67a 100644
--- a/README.md
+++ b/README.md
@@ -26,12 +26,12 @@ Command Line Scripts for ZJU (VPN / WLAN / DNS)
### Debian / Ubuntu
-https://github.com/QSCTech/zjunet/releases
+https://github.com/QSCTech/zjunet/releases
下载 deb,双击安装就是。
### Openwrt
-https://github.com/QSCTech/zjunet/releases
+https://github.com/QSCTech/zjunet/releases
下载 opk,然后 `opkg install` 就是。
### From source
diff --git a/lib/user.sh b/lib/user.sh
index 48e44c3..84f750b 100755
--- a/lib/user.sh
+++ b/lib/user.sh
@@ -19,21 +19,18 @@
# .
# init
-users_enabled="$HOME/.zjunet/users-enabled"
-users_disabled="$HOME/.zjunet/users-disabled"
-mkdir -p $users_enabled
-mkdir -p $users_disabled
+
+L2TPD_CFG_FILE=/etc/xl2tpd/xl2tpd.conf
BASEDIR=$(dirname $0)
getall() {
- ls -1A $users_enabled | xargs | tr "\n" " "
+ cat $L2TPD_CFG_FILE | grep lac | sed 's/\[lac zju-l2tp-//' | sed 's/\]//'
}
edituser() {
username=$1
password=$2
- echo $password > "$users_enabled/${username}"
echo "[INFO] Disconnect VPN"
"${BASEDIR}/vpn.sh" disconnect
echo "[INFO] Write to xl2tpd.conf"
@@ -45,18 +42,6 @@ edituser() {
# dispatch
case "$1" in
- enable)
- users=$(ls -1A $users_disabled | xargs | tr "\n" " ")
- read -p "Enable User [ ${users}]: " username
- mv "${users_disabled}/${username}" "${users_enabled}/${username}"
- ;;
-
- disable)
- users=$(getall)
- read -p "Disable User [ ${users}]: " username
- mv "${users_enabled}/${username}" "${users_disabled}/${username}"
- ;;
-
add)
read -p "username: " username
read -p "password: " password
@@ -70,14 +55,8 @@ case "$1" in
edituser $username $password
;;
- delete)
- users=$(getall)
- read -p "Delete User [ ${users}]: " username
- rm -i "$users_enabled/${username}"
- ;;
-
list)
- ls -1A $users_enabled
+ getall
;;
# Get a user
@@ -107,8 +86,9 @@ case "$1" in
# @private
getpwd)
username=$2
- cat "${users_enabled}/${username}"
+ "${BASEDIR}/sudo.sh" cat /etc/ppp/peers/zju-l2tp-${username} | grep password | sed 's/password //'
;;
+
*)
${BASEDIR}/zjunet.sh usage
;;
diff --git a/lib/vpn.sh b/lib/vpn.sh
index c39efa9..593ed41 100755
--- a/lib/vpn.sh
+++ b/lib/vpn.sh
@@ -42,12 +42,16 @@ disconnect() {
connect() {
disconnect
+ sleep 3
+
users=$("${BASEDIR}/user.sh" getall)
+ "${BASEDIR}/sudo.sh" "${BASEDIR}/xl2tpd.sh" restart
+
for username in $users; do
password=$("${BASEDIR}/user.sh" getpwd $username)
echo "[INFO] Login using ${username}"
- "${BASEDIR}/sudo.sh" "${BASEDIR}/xl2tpd.sh" connect $username $password
+ "${BASEDIR}/sudo.sh" "${BASEDIR}/xl2tpd.sh" waituser $username
flush
done
diff --git a/lib/xl2tpd.sh b/lib/xl2tpd.sh
index 2c022e4..c3410a4 100755
--- a/lib/xl2tpd.sh
+++ b/lib/xl2tpd.sh
@@ -27,7 +27,7 @@ L2TPD_CFG_FILE=/etc/xl2tpd/xl2tpd.conf
USERNAME=$2
PASSWORD=$3
LAC_NAME=zju-l2tp-${USERNAME}
-PPP_LOG_FILE=/tmp/zju-l2tp-log
+PPP_LOG_FILE=/tmp/zju-l2tp-log-${USERNAME}
PPP_OPT_FILE=/etc/ppp/peers/${LAC_NAME}
mkdir -p /var/log/zjunet/
@@ -86,7 +86,6 @@ xl2tpd_restart() {
}
xl2tpd_create_lac() {
- #touch $PPP_LOG_FILE
cat > $PPP_OPT_FILE < $PPP_LOG_FILE
-
- prev_count=$(ip addr show | grep 'inet.*ppp' | grep ' 10.5.' | wc -l)
-
+xl2tpd_waituser() {
for i in $(seq 0 10000); do
tail $PPP_LOG_FILE >> $LOG_FILE
@@ -146,10 +138,13 @@ connect() {
fi
echo -n > $PPP_LOG_FILE
- count=$(ip addr show | grep 'inet.*ppp' | grep ' 10.5.' | wc -l)
- if [ ${count} -gt ${prev_count} ]; then
- echo "Bring up ppp, done."
- return
+ pid="/var/run/ppp-${LAC_NAME}.pid"
+ if [ -e $pid ]; then
+ ppp=$(cat $pid | grep ppp)
+ if ip addr show | grep "inet.*${ppp}" > /dev/null; then
+ ip addr show | grep "inet.*${ppp}" | sed 's/^ */[VPN] /'
+ return
+ fi
fi
done
@@ -180,8 +175,8 @@ case $1 in
xl2tpd_create_lac
;;
- connect)
- connect
+ waituser)
+ xl2tpd_waituser
;;
disconnect)
diff --git a/lib/zjunet.sh b/lib/zjunet.sh
index 930a3d0..22a64dd 100755
--- a/lib/zjunet.sh
+++ b/lib/zjunet.sh
@@ -52,11 +52,9 @@ Usage: zjunet [ACTION]
Actions:
user
add Add a user
- edit Edit a (enabled) user
- delete Delete a (enabled) user
list List all enabled users
- enable Enable a user
- disable Disable a user
+ edit Edit a (enabled) user
+ Note: to delete/disable a user, edit /etc/xl2tpd/xl2tpd.conf yourself
all
connect(-c) Connect VPN & ZJUWLAN, and combine them using nexthop
disconnect(-d) Disconnect VPN & ZJUWLAN