1
0
mirror of https://github.com/QSCTech/zjunet.git synced 2026-01-22 19:54:48 +08:00

Compare commits

..

No commits in common. "master" and "v0.2.5-2" have entirely different histories.

29 changed files with 307 additions and 666 deletions

View File

@ -1,32 +0,0 @@
---
name: Bug report
about: Create a bug report to help us locate problems
title: ''
labels: bug
assignees: ''
---
## Environment
Please complete the following information:
- **OS:** [OS name and version, e.g. Ubuntu 20.10, CentOS 8]
- **zjunet:** [output of `zjunet -v`, e.g. 0.3.3-3]
- **xl2tpd:** [output of `xl2tpd -v`, e.g. 1.3.16]
- **network type:** [wired or wireless or ...]
- other softwares or the network condition that may related to this bug
## Bug description
A clear and concise description of what the bug is and how to reproduce it.
## Output
Full output of command line tools.
If applicable, add screenshots to help explain the problem.
```
[user@host ~]# zjunet XXXX
...
```
## Notes
Add other information that may related to this bug.

View File

@ -1,14 +0,0 @@
---
name: Feature request
about: Suggest a new idea for this project
title: ''
labels: feature
assignees: ''
---
## Description
A brief explanation of the feature.
## Motivation
Why such feature is worthy? What use cases does it support?

View File

@ -1,38 +0,0 @@
# This workflow build packages for release
name: Packaging
# Controls when the action will run. Triggers the workflow when releases created or modified
on:
create:
workflow_dispatch:
jobs:
build:
runs-on: ubuntu-latest
steps:
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
- uses: actions/checkout@v2
- uses: actions/setup-python@v2
with:
python-version: '^3.7' # request python 3.7+ for datetime.datetime.fromisoformat
- name: Build Packages
env:
GITHUB_TOKEN: ${{ secrets.ACCESS_TOKEN }}
run: |
python -m pip install --upgrade pip
python -m pip install urllib3
cd build
./build.sh
- name: Archive Packages
uses: actions/upload-artifact@v2
with:
name: Release Packages
path: |
build/debian/zjunet_*.deb
build/rpm/zjunet-*.rpm
build/openwrt/zjunet_*.opk

4
.gitignore vendored
View File

@ -7,7 +7,3 @@
# Rubbish # Rubbish
*.swp *.swp
build/debian/debian
build/rpm/zjunet-*
build/rpm/zjunet.spec
build/openwrt/debian

View File

@ -1,23 +0,0 @@
image: ubuntu:jammy
stages:
- build
compile:
stage: build
only:
- tags
script:
- sed -i 's|http.*.ubuntu.com|http://mirrors.zju.edu.cn|' /etc/apt/sources.list
- apt-get update && apt-get -y --no-install-recommends install ca-certificates build-essential fakeroot git dpkg-dev rpm python3 python-is-python3 python3-urllib3
- mkdir artifacts
- pushd build
- ./build.sh
- popd
- cp build/debian/*.deb artifacts/
- cp build/openwrt/*.opk artifacts/
- cp build/rpm/*.rpm artifacts/
artifacts:
paths:
- /artifacts

141
README.md
View File

@ -1,149 +1,118 @@
# zjunet # zjunet
[查看中文README](README.zh.md)
Command Line Scripts for ZJU (VPN / WLAN / DNS) Command Line Scripts for ZJU (VPN / WLAN / DNS)
## Features ## Features
- ZJU VPN (l2tp) - ZJU VPN (l2tp)
- ZJUWLAN - ZJU WLAN
- Router support - 路由器支持written in Bourne Shell
- Overlap network dialing (with load balance) - 多拨支持(多账户负载均衡)
- Overlap bandwidth of ZJUWLAN and ZJU VPN (1 WLAN + N VPN, Using ZJUWLAN) - ZJUWLAN 与 ZJUVPN 带宽叠加1 WLAN + N VPN在 ZJUWLAN 下)
- Automatic DNS setting (in case DNS do not work) - DNS 自动测试设置(适用于 DNS 坏掉的情况)
## Requirements ## Requirements
- xl2tpd - xl2tpd
- `dig` (Different package on different platform) - curl
## Installation ## Install
If you meet any problem during or after the installation, check Troubleshooting section below in this documentation.
### Debian / Ubuntu (deb) ### Debian / Ubuntu (deb)
1. Configure ZJU mirrors from manual. [Ubuntu](https://mirror.zju.edu.cn/docs/ubuntu/)/[Debian](https://mirror.zju.edu.cn/docs/debian/) Use only one of the methods below:
2. Run these command.
``` bash #### 1. From QSC website's linux repository
curl https://mirrors.zju.edu.cn/openzjunet/zjumirrors.pgp | sudo tee /etc/apt/trusted.gpg.d/zjumirrors.asc
curl https://mirrors.zju.edu.cn/openzjunet/zjunet.list | sudo tee /etc/apt/sources.list.d/zjunet.list
sudo apt-get update
sudo apt-get install zjunet
```
3. The installation has completed. wget -qO - https://dl.zjuqsc.com/linux/qsc.public.key | sudo apt-key add -
4. If you are setting up a server, we suggest you run `zjunet wlan disable` to disable WLAN capability. sudo wget https://dl.zjuqsc.com/linux/debian/qsc.list -O /etc/apt/sources.list.d/qsc.list
sudo apt-get update
sudo apt-get install zjunet
#### 2. Download deb
https://github.com/QSCTech/zjunet/releases
下载 deb双击安装就是。
### Fedora / CentOS (rpm) ### Fedora / CentOS (rpm)
在 Releases 中下载安装方法如上。注意 CentOS 7 中需要 epel 源提供 xl2tpd
1. Configure ZJU mirrors from manual. [Fedora](https://mirror.zju.edu.cn/docs/fedora/)/[CentOS](https://mirror.zju.edu.cn/docs/centos/) #### Install from QSC website's linux repository
2. Configure [EPEL of ZJU mirrors](https://mirrors.zju.edu.cn/epel/) (Taking CentOS installation as an example)
1. Run `yum install epel-release` to install EPEL.
2. Edit `/etc/yum.repos.d/epel.repo` , uncomment lines begin with `#baseurl=` (Remove leading `#` sign) and comment lines begin with `mirrorlist=` (Prepend `#` sign)
3. Edit `/etc/yum.repos.d/epel.repo` , replace `https://download.fedoraproject.org/pub` with `https://mirrors.zju.edu.cn` .
3. Run these command. sudo wget https://dl.zjuqsc.com/linux/qsc.public.key -O /etc/pki/rpm-gpg/RPM-GPG-KEY-QSC-COMP66
sudo rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-QSC-COMP66
sudo wget https://dl.zjuqsc.com/linux/yum/qsc.repo -O /etc/yum.repos.d/qsc.repo
sudo yum install zjunet
### Openwrt
https://github.com/QSCTech/zjunet/releases
下载 opk然后 `opkg install` 就是。
### From source
master分支是开发分支请直接从 release 那里获取源码。
```bash ```bash
curl https://mirrors.zju.edu.cn/openzjunet/zjumirrors.pgp | sudo tee /etc/pki/rpm-gpg/RPM-GPG-KEY-ZJUMIRRORS
curl https://mirrors.zju.edu.cn/openzjunet/zjunet.repo | sudo tee /etc/yum.repos.d/zjunet.repo
sudo rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-ZJUMIRRORS
sudo yum install zjunet
```
4. The installation has completed.
5. If you are setting up a server, we suggest you run `zjunet wlan disable` to disable WLAN capability.
### OpenWrt (opk)
Download .opk package from [Release Page](https://github.com/QSCTech/zjunet/releases) (onto your router),
Run `opkg install ./zjunet_<version>_all.opk`.
### Arch Linux (AUR)
Simply run `yay zjunet` to build the package from AUR and install it.
Keep in mind that a fresh install without internet connection is almost impossible.
Please complete installation before connecting to the intranet.
### Other Linux (Build from source code)
```bash
xl2tpd -v; dig -v # Check installation of dependencies. There should be 3 version numbers.
# Under proper directory
git clone https://github.com/QSCTech/zjunet.git
cd zjunet cd zjunet
sudo ./install.sh sudo ./install.sh
# If update is necessary, run `git pull` and `sudo ./install.sh`
# If you are setting up a server, we suggest you run `zjunet wlan disable` to disable WLAN capability.
``` ```
**ATTENTION** Requirement check will **NOT** be done running `./install.sh`. ## Known Issues
Please run `xl2tpd -v` and `dig -v` to verify the installation.
## Troubleshooting ### 丢包
### Packet lose 在有的机子上会丢包(因为用的是 nexthop )。
等有空了也许会换成 iptables 来解决这个问题。
This is a known issue. ### ppp0 may disappear on openwrt
When overlapping VPN and ZJUWLAN, network packet may be lost.
(because of nexthop in routing table).
Contributions to this issue are welcomed. (Maybe using `iptables`) make /etc/ppp/options's lcp-echo-failure larger.
### ppp0 may disappears on OpenWrt see also https://github.com/QSCTech/zjunet/issues/39
Set lcp-echo-failure larger in /etc/ppp/options. ## Openwrt
See also #39 Install xl2tpd:
### Other problems? https://downloads.openwrt.org/snapshots/trunk/ar71xx/packages/packages/
Please send mail to tech@zjuqsc.com if you have any other problem. ## Dev
## Contribute to this project QSCer 可以直接向这个 repo push 而不用发 pull request。
有什么疑虑可以提 issue 问一下,
或者直接来办公室找我(zenozeng)。
QSCers may Push directly without sending Pull Requests。 master分支就是开发分支。
但是请保证bump version的时候要稳定。
Please write an Issue if you have worries. Contact maintainer directly if necessary. ### Build
**PRs from non-QSCers are also welcomed.**
### Packaging Instruction
*(Not finished yet)*
#### Debian #### Debian
```bash ```bash
sudo apt-get install build-essential autoconf automake autotools-dev dh-make \ sudo apt-get install build-essential autoconf automake autotools-dev dh-make debhelper devscripts fakeroot xutils lintian pbuilder
debhelper devscripts fakeroot xutils lintian pbuilder rpm
cd build
./build.sh
``` ```
##### See Also ##### see also
- http://www.webupd8.org/2010/01/how-to-create-deb-package-ubuntu-debian.html - http://www.webupd8.org/2010/01/how-to-create-deb-package-ubuntu-debian.html
- http://tldp.org/HOWTO/html_single/Debian-Binary-Package-Building-HOWTO/ - http://tldp.org/HOWTO/html_single/Debian-Binary-Package-Building-HOWTO/
#### OpenWrt #### Openwrt
##### See Also ##### see also
- http://lists.openmoko.org/pipermail/devel/2008-July/000496.html - http://lists.openmoko.org/pipermail/devel/2008-July/000496.html
### Links ## Links
- [Array in unix Bourne Shell](http://unix.stackexchange.com/questions/137566/array-in-unix-bourne-shell) - [Array in unix Bourne Shell](http://unix.stackexchange.com/questions/137566/array-in-unix-bourne-shell)

View File

@ -1,139 +0,0 @@
# zjunet
适用于 ZJU 的 VPN, WLAN 和 DNS 命令行工具。
## 功能
- 支持 ZJU VPN 连接。
- 支持 ZJUWLAN 连接。
- 路由器支持。
- 多拨支持(多账户负载均衡)。
- ZJUWLAN 与 ZJUVPN 带宽叠加1 WLAN + N VPN在 ZJUWLAN 下)
- DNS 自动测试设置(适用于 DNS 坏掉的情况)
## 依赖
- xl2tpd
- `dig` (在不同平台的包不同)
## 安装
根据发行版的不同,安装方式略有区别。为了更好的为您提供服务,建议您从求是潮网站的仓库下载。
(求是潮网站在校内也可以访问,安装时不需要先从仓库手动下载。)
考虑到需要安装 zjunet 的机器通常没有办法访问外网,建议配合 [浙大源](https://mirrors.zju.edu.cn/) 安装。
下面将按照不同的发行版分别列出安装步骤。如果你在安装前后遇到任何问题,请向下浏览本文件的“疑难解答”部分。
### Debian / Ubuntu (deb)
1. 使用浙大源配置内网软件包镜像。 [Ubuntu](https://mirror.zju.edu.cn/docs/ubuntu/)/[Debian](https://mirror.zju.edu.cn/docs/debian/).
2. 依次输入并执行下列命令:
``` bash
curl https://mirrors.zju.edu.cn/openzjunet/zjumirrors.pgp | sudo tee /etc/apt/trusted.gpg.d/zjumirrors.asc
curl https://mirrors.zju.edu.cn/openzjunet/zjunet.list | sudo tee /etc/apt/sources.list.d/zjunet.list
sudo apt-get update
sudo apt-get install zjunet
```
3. 安装结束!您可以输入 `zjunet version` 查看安装的版本,输入 `zjunet usage` 查看用法。
4. 如果你是服务器用户,建议运行 `zjunet wlan disable` 来彻底禁用 WLAN 功能。
### Fedora / CentOS (rpm)
1. 使用浙大源配置内网软件包镜像。 [Fedora](https://mirror.zju.edu.cn/docs/fedora/)/[CentOS](https://mirror.zju.edu.cn/docs/centos/)
2. 执行这些步骤以使用 [浙大源 EPEL](https://mirrors.zju.edu.cn/epel/) (以 CentOS 为例):
1. 运行 `yum install epel-release` 以安装 EPEL 。
2. 编辑 `/etc/yum.repos.d/epel.repo` ,将所有以 `#baseurl=` 开头的行取消注释(删除行首 `#` 符号)并注释以 `mirrorlist=` 开头的行(在行首添加 `#` 符号)
3. 继续编辑 `/etc/yum.repos.d/epel.repo` ,将所有 `https://download.fedoraproject.org/pub` 替换为 `https://mirrors.zju.edu.cn`
3. 依次输入并执行下列命令:
```bash
curl https://mirrors.zju.edu.cn/openzjunet/zjumirrors.pgp | sudo tee /etc/pki/rpm-gpg/RPM-GPG-KEY-ZJUMIRRORS
curl https://mirrors.zju.edu.cn/openzjunet/zjunet.repo | sudo tee /etc/yum.repos.d/zjunet.repo
sudo rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-ZJUMIRRORS
sudo yum install zjunet
```
4. 安装结束!您可以输入 `zjunet version` 查看安装的版本,输入 `zjunet usage` 查看用法。
5. 如果你是服务器用户,建议运行 `zjunet wlan disable` 来彻底禁用 WLAN 功能。
### OpenWrt (opk)
从 [Releases 页](https://github.com/QSCTech/zjunet/releases) 下载 opk 包到路由器上,
运行 `opkg install ./zjunet_版本_all.opk`
### Arch Linux (AUR)
直接运行 `yay zjunet` 即可下载并安装。
请记住,在没有互联网连接的环境中是几乎不可能安装好的。
请在连接到校内网前,在有互联网连接的环境中先完成安装。
### 其他 Linux (源代码安装)
```bash
xl2tpd -v; dig -v # 检查依赖命令的安装情况。这句命令将输出三个版本号。
# 在合适的目录下
git clone https://github.com/QSCTech/zjunet.git
cd zjunet
sudo ./install.sh
# 如果想要更新请在 zjunet 目录下运行 git pull 并再次 sudo ./install.sh
# 如果你是服务器用户,建议运行 `zjunet wlan disable` 来彻底禁用 WLAN 功能。
```
**注意** 运行 `./install.sh`**不会** 确认必要依赖是否已经安装。
您应当先运行 `xl2tpd -v``dig -v` 确认安装。
## 疑难解答
### 出现了 `xl2tpd-control: command not found` 的提示但直接运行 `xl2tpd-control` 有效
出现这种情况通常是由于 `sudo``secure path` 被启用。
请编辑 `/etc/sudoers` 并在 `Defaults secure_path=xxxxxxx` 行添加 `xl2tpd-control` 所在路径(运行 `which xl2tpd-control` 查看)。编辑后的这行类似这样:
```
Defaults secure_path="/sbin:/usr/sbin:/bin:/usr/bin:/usr/local/sbin:/usr/local/bin"
```
你可以运行 `sudo env | grep PATH` 来验证配置。显示的内容应当包括刚才添加的路径。
### 丢包
这是一个已知问题。在同时连接 VPN 和 ZJUWLAN 时,
在有的机子上会丢包(因为设定的路由使用了 nexthop )。
暂时没有人来解决这个问题,欢迎有志者贡献(可以考虑用 `iptables`
### OpenWrt 上的 ppp0 消失了
将 /etc/ppp/options 中的 lcp-echo-failure 调大。
可见于 #39
### 我还有其它问题
如果你还有其它问题,请与我们联系。
您可以发送邮件至 tech@zjuqsc.com 。
## 如何贡献
求是潮成员可以直接向这个仓库 Push 而不用发起 Pull requests。
有任何疑虑都可以提 Issue ,也可以与现任 Maintainer 联系。
**本项目也接受非求是潮成员发起的 PR 。**
### 开发指南
开发信息请查看 [英文 README](README.md#packaging-instruction) 。

View File

@ -1 +1 @@
0.3.3-6 0.2.5-2

View File

@ -1,5 +0,0 @@
#!/bin/sh
set -e
/usr/lib/zjunet/zjunet.sh "$@"

View File

@ -1,42 +0,0 @@
#!/bin/bash
PKGNAME=zjunet
PKGVER=$(cat $(dirname $0)/../VERSION)
PKGVER_NOREL=${PKGVER%%-*}
PKGREL=${PKGVER:$((${#PKGVER_NOREL}+1))}
if [[ -z $PKGREL ]]; then
PKGREL=1
fi
set -xe
wget https://github.com/QSCTech/$PKGNAME/archive/v$PKGVER.tar.gz -O $PKGNAME-$PKGVER.tar.gz
FILE_MD5=$(md5sum $PKGNAME-$PKGVER.tar.gz | cut -f1 -d' ')
FILE_SHA1=$(sha1sum $PKGNAME-$PKGVER.tar.gz | cut -f1 -d' ')
FILE_SHA256=$(sha256sum $PKGNAME-$PKGVER.tar.gz | cut -f1 -d' ')
cat > PKGBUILD <<EOF
# Maintainer: Azuk 443 <me@azuk.top>
pkgname=$PKGNAME
pkgver=$PKGVER_NOREL
pkgrel=$PKGREL
pkgdesc="Command Line Scripts for ZJU"
url="https://github.com/QSCTech/$PKGNAME"
arch=('any')
license=('GPL')
depends=('xl2tpd>=1.3.7' 'dnsutils')
source=("$PKGNAME-$PKGVER.tar.gz::https://github.com/QSCTech/$PKGNAME/archive/v$PKGVER.tar.gz")
md5sums=('$FILE_MD5')
sha1sums=('$FILE_SHA1')
sha256sums=('$FILE_SHA256')
package() {
cd "\$srcdir/$PKGNAME-$PKGVER"
DESTDIR=\$pkgdir PREFIX=/usr ./install.sh
}
EOF
makepkg $*
makepkg --printsrcinfo > .SRCINFO

View File

@ -2,51 +2,16 @@
VERSION=$(cat ../VERSION) VERSION=$(cat ../VERSION)
fail() { cd rpm
echo -e "\033[31mERROR: Failed to build $1\033[0m" 1>&2 ./build.sh $VERSION
} cd ..
if [[ $# -gt 0 ]]; then cd debian
for arg in $*; do ./build.sh $VERSION
case $arg in cd ..
rpm)
USE_RPM=1
;;
debian)
USE_DEB=1
;;
openwrt)
USE_OPK=1
;;
*)
echo "Invalid package $arg"
exit 1
esac
done
else
USE_RPM=1
USE_DEB=1
USE_OPK=1
fi
if [[ ! -z $USE_RPM ]]; then cd openwrt
pushd rpm > /dev/null ./build.sh $VERSION
./build.sh $VERSION || fail 'RPM package'
popd > /dev/null
fi
if [[ ! -z $USE_DEB ]]; then cd ..
pushd debian > /dev/null
./build.sh $VERSION || fail 'Debian package'
popd > /dev/null
fi
if [[ ! -z $USE_OPK ]]; then
pushd openwrt > /dev/null
./build.sh $VERSION || fail 'OpenWrt package'
popd > /dev/null
fi
echo -ne "\033[0;32m"
find . -regextype posix-egrep -regex ".*\.(opk|deb|rpm)$" find . -regextype posix-egrep -regex ".*\.(opk|deb|rpm)$"
echo -ne "\033[0m"

View File

@ -1,127 +0,0 @@
#!/usr/bin/env python
from __future__ import print_function
import os
import sys
import json
import base64
import datetime
if sys.version_info.major < 3:
reload(sys)
sys.setdefaultencoding('utf8')
try:
import urllib3
http = urllib3.PoolManager()
def makereq(url, headers):
return http.request('GET', url, headers=headers)
except ImportError:
import urllib2 as request
class MyResponse:
def __init__(self, status, data):
self.status = status
self.data = data
def makereq(url, headers):
f = request.urlopen(request.Request(url, headers=headers))
return MyResponse(f.getcode(), f.read().decode('utf-8'))
if 'fromisoformat' in dir(datetime.datetime):
def get_time(s):
return datetime.datetime.fromisoformat(s.replace('Z', '+00:00'))
else:
try:
from dateutil.parser import parser
def get_time(s):
return parser().parse(s)
except ImportError:
def get_time(s):
return datetime.datetime.strptime(s, "%Y-%m-%dT%H:%M:%SZ")
GITHUB_AUTH = None
tok = os.getenv('GITHUB_TOKEN')
usn = os.getenv('GITHUB_USERNAME')
psw = os.getenv('GITHUB_PASSWORD')
if tok is not None:
GITHUB_AUTH = 'token {}'.format(tok)
elif usn is not None and psw is not None:
GITHUB_AUTH = 'Basic {}'.format(base64.b64encode('{}:{}'.format(usn, psw).encode('utf-8')).decode('utf-8'))
def get(url):
headers = {
'Accept': 'application/vnd.github.v3+json',
'User-Agent': 'zjunet-build-agent/0.1',
}
if GITHUB_AUTH is not None:
headers['Authorization'] = GITHUB_AUTH
r = makereq(url, headers=headers)
assert r.status // 100 == 2, 'HTTP Status {} != 2xx while requesting {}'.format(r.status, url)
if r.status != 200:
print('WARNING: HTTP {} while requesting {}'.format(r.status, url))
return r.data
def api_get(url):
return json.loads(get('https://api.github.com/' + url))
author_cache = {}
def get_author(name):
if name in author_cache:
return author_cache[name]
print('Reading data for {}'.format(name), end=' : ', file=sys.stderr)
data = api_get('users/{}'.format(name))
data = {
'name': data['name'],
'email': data['email'],
}
author_cache[name] = data
print('{} <{}>'.format(data['name'], data['email']), file=sys.stderr)
return data
def get_changelog(owner, name):
print('Reading releases of {1} in {0}'.format(owner, name), file=sys.stderr)
releases = api_get('repos/{}/{}/releases'.format(owner, name))
releases = filter(lambda v: not v['draft'] and not v['prerelease'], releases)
data = []
for rel in releases:
name = rel['name'] or rel['tag_name']
item = {
'time': get_time(rel['published_at']),
'name': name,
'version': name[name.rfind('v') + 1:].split(','),
'author': get_author(rel['author']['login']),
'changes': None,
}
tbody = rel['body'].strip()
if tbody != '':
if tbody[0] != '-' and '\n' not in tbody:
item['changes'] = '- ' + tbody
else:
item['changes'] = tbody
data.append(item)
return ChangeLog(data)
class ChangeLog:
def __init__(self, data):
self.raw = data
def rpm(self):
rel = '%changelog\n'
for item in self.raw:
rel += '* {} {} <{}> - {}\n'.format(item['time'].strftime('%a %b %d %Y'), item['author']['name'], item['author']['email'], '.'.join(item['version']))
if item['changes'] is not None:
rel += item['changes'] + '\n'
return rel
available_formats = list(filter(lambda v: v[0] != '_', dir(ChangeLog)))
if len(sys.argv) != 2:
print('Usage: {} <format>\nAvailable formats: {}'.format(sys.argv[0], ','.join(available_formats)))
else:
changelog = get_changelog('QSCTech', 'zjunet')
if hasattr(changelog, sys.argv[1]):
print(getattr(changelog, sys.argv[1])())
else:
print('Invalid format {}\nAvailable formats: {}'.format(','.join(available_formats)))

View File

@ -1,5 +1,4 @@
#!/bin/sh #!/bin/sh
set -e
rm -rf *.deb rm -rf *.deb
@ -15,8 +14,9 @@ mkdir -p ./debian/usr/lib/zjunet
cp ../../lib/*.sh ./debian/usr/lib/zjunet cp ../../lib/*.sh ./debian/usr/lib/zjunet
# bin # bin
install -m 755 -d ./debian/usr/bin mkdir -p ./debian/usr/bin
install -m 755 ../../bin/zjunet ./debian/usr/bin/zjunet echo '/usr/lib/zjunet/zjunet.sh "$@"' >> ./debian/usr/bin/zjunet
chmod +x ./debian/usr/bin/zjunet
# postinst # postinst
mkdir -p debian/DEBIAN mkdir -p debian/DEBIAN
@ -36,15 +36,15 @@ Version: $VERSION
Section: net Section: net
Priority: optional Priority: optional
Architecture: all Architecture: all
Depends: xl2tpd (>= 1.3.7), dnsutils Depends: xl2tpd (>= 1.3.1), curl
Maintainer: Azuk 443 <me@azuk.top> Maintainer: Zeno Zeng <zenoofzeng@gmail.com>
Description: Command Line Scripts for ZJU Campus Network Description: Command Line Scripts for ZJU
This script provides a VPN / WLAN / NEXTHOP for ZJUer. This script provides a VPN / WLAN / NEXTHOP for ZJUer.
EOF EOF
# dpkg-deb # dpkg-deb
find ./debian -type d | xargs chmod 755 find ./debian -type d | xargs chmod 755
fakeroot dpkg-deb -Zxz --build debian fakeroot dpkg-deb --build debian
mv debian.deb zjunet_${VERSION}_all.deb mv debian.deb zjunet_${VERSION}_all.deb
# remove debian/ # remove debian/

View File

@ -1,5 +1,4 @@
#!/bin/sh #!/bin/sh
set -e
rm -rf *.opk rm -rf *.opk
@ -15,8 +14,9 @@ mkdir -p ./debian/usr/lib/zjunet
cp ../../lib/*.sh ./debian/usr/lib/zjunet cp ../../lib/*.sh ./debian/usr/lib/zjunet
# bin # bin
install -m 755 -d ./debian/usr/bin mkdir -p ./debian/usr/bin
install -m 755 ../../bin/zjunet ./debian/usr/bin/zjunet echo '/usr/lib/zjunet/zjunet.sh "$@"' >> ./debian/usr/bin/zjunet
chmod +x ./debian/usr/bin/zjunet
# contorl file # contorl file
mkdir -p debian/DEBIAN mkdir -p debian/DEBIAN
@ -26,9 +26,9 @@ Version: $VERSION
Section: net Section: net
Priority: optional Priority: optional
Architecture: all Architecture: all
Depends: xl2tpd (>= 1.3.7), bind-dig Depends: xl2tpd (>= 1.3.1), curl
Maintainer: Azuk 443 <me@azuk.top> Maintainer: Zeno Zeng <zenoofzeng@gmail.com>
Description: Command Line Scripts for ZJU Campus Network Description: Command Line Scripts for ZJU
This script provides a VPN / WLAN / NEXTHOP for ZJUer. This script provides a VPN / WLAN / NEXTHOP for ZJUer.
EOF EOF

View File

@ -1,5 +1,4 @@
#!/bin/sh #!/bin/sh
set -e
rm -rf *.rpm rm -rf *.rpm
@ -19,7 +18,7 @@ cp ../../lib/* rpm/lib/
# bin # bin
echo '/usr/lib/zjunet/zjunet.sh "$@"' > rpm/zjunet echo '/usr/lib/zjunet/zjunet.sh "$@"' > rpm/zjunet
install -m 755 -d ./debian/usr/bin chmod +x rpm/zjunet
# rpm # rpm
ARCH="noarch" ARCH="noarch"
@ -29,7 +28,7 @@ rm -rf ${SEMINAME}.tar.gz
find rpm -type d | xargs chmod 755 find rpm -type d | xargs chmod 755
rm -rf $SEMINAME rm -rf $SEMINAME
mv rpm $SEMINAME mv rpm $SEMINAME
tar zcf ${SEMINAME}.tar.gz $SEMINAME tar zcvf ${SEMINAME}.tar.gz $SEMINAME
mkdir -p $HOME/rpmbuild/SOURCES mkdir -p $HOME/rpmbuild/SOURCES
cp ${SEMINAME}.tar.gz $HOME/rpmbuild/SOURCES cp ${SEMINAME}.tar.gz $HOME/rpmbuild/SOURCES
cp build_spec.sh $SEMINAME/ cp build_spec.sh $SEMINAME/

View File

@ -1,4 +1,4 @@
#!/bin/bash #!/bin/sh
VERSION=$1 VERSION=$1
REALVERSION=`echo "$VERSION" | cut -d'-' -f1` REALVERSION=`echo "$VERSION" | cut -d'-' -f1`
@ -12,8 +12,8 @@ echo "License: GPL" >> zjunet.spec
echo "Group: Applications/Internet" >> zjunet.spec echo "Group: Applications/Internet" >> zjunet.spec
echo "URL: https://github.com/QSCTech/zjunet/" >> zjunet.spec echo "URL: https://github.com/QSCTech/zjunet/" >> zjunet.spec
echo "Vendor: Qiu Shi Chao Website of Zhejiang University" >> zjunet.spec echo "Vendor: Qiu Shi Chao Website of Zhejiang University" >> zjunet.spec
echo "Packager: Azuk 443 <me@azuk.top>" >> zjunet.spec echo "Packager: Senorsen <sen@senorsen.com>" >> zjunet.spec
echo "Requires: xl2tpd >= 1.3.7, bind-utils" >> zjunet.spec echo "Requires: xl2tpd >= 1.3.1, curl" >> zjunet.spec
echo "BuildRoot: %{_builddir}/%{name}-root" >> zjunet.spec echo "BuildRoot: %{_builddir}/%{name}-root" >> zjunet.spec
echo "Source: %{name}-%{version}.tar.gz" >> zjunet.spec echo "Source: %{name}-%{version}.tar.gz" >> zjunet.spec
echo "BuildArch: noarch" >> zjunet.spec echo "BuildArch: noarch" >> zjunet.spec
@ -37,19 +37,23 @@ echo 'install -m 755 zjunet $RPM_BUILD_ROOT/usr/bin/zjunet' >> zjunet.spec
echo 'install -m 755 zjunet-postinst $RPM_BUILD_ROOT/usr/share/zjunet/zjunet-postinst' >> zjunet.spec echo 'install -m 755 zjunet-postinst $RPM_BUILD_ROOT/usr/share/zjunet/zjunet-postinst' >> zjunet.spec
cd lib cd lib
for f in *.sh; do for f in *.sh; do
echo "install -m 755 lib/$f \$RPM_BUILD_ROOT/usr/lib/zjunet/$f" >> ../zjunet.spec echo "install -m 755 lib/$f \$RPM_BUILD_ROOT/usr/lib/zjunet/$f" >> ../zjunet.spec
done done
cd .. cd ..
echo 'install -m 644 VERSION $RPM_BUILD_ROOT/usr/share/zjunet/VERSION' >> zjunet.spec echo 'install -m 644 VERSION $RPM_BUILD_ROOT/usr/share/zjunet/VERSION' >> zjunet.spec
echo 'install -m 644 qsc.public.key $RPM_BUILD_ROOT/usr/share/zjunet/qsc.public.key' >> zjunet.spec
echo 'install -m 644 qsc.repo $RPM_BUILD_ROOT/usr/share/zjunet/qsc.repo' >> zjunet.spec
echo "" >> zjunet.spec echo "" >> zjunet.spec
echo "%files" >> zjunet.spec echo "%files" >> zjunet.spec
echo "%defattr(-,root,root)" >> zjunet.spec echo "%defattr(-,root,root)" >> zjunet.spec
echo "/usr/bin/zjunet" >> zjunet.spec echo "/usr/bin/zjunet" >> zjunet.spec
echo "/usr/share/zjunet/qsc.public.key" >> zjunet.spec
echo "/usr/share/zjunet/qsc.repo" >> zjunet.spec
echo "/usr/share/zjunet/zjunet-postinst" >> zjunet.spec echo "/usr/share/zjunet/zjunet-postinst" >> zjunet.spec
echo "/usr/share/zjunet/VERSION" >> zjunet.spec echo "/usr/share/zjunet/VERSION" >> zjunet.spec
cd lib cd lib
for f in *.sh; do for f in *.sh; do
echo "/usr/lib/zjunet/$f" >> ../zjunet.spec echo "/usr/lib/zjunet/$f" >> ../zjunet.spec
done done
cd .. cd ..
echo "" >> zjunet.spec echo "" >> zjunet.spec
@ -59,5 +63,23 @@ echo "" >> zjunet.spec
echo "%post" >> zjunet.spec echo "%post" >> zjunet.spec
echo "/usr/share/zjunet/zjunet-postinst || true" >> zjunet.spec echo "/usr/share/zjunet/zjunet-postinst || true" >> zjunet.spec
echo "" >> zjunet.spec echo "" >> zjunet.spec
echo "%changelog" >> zjunet.spec
echo "* Sun Feb 08 2015 Senorsen <sen@senorsen.com> - 0.2.4" >> zjunet.spec
echo "- Genrate debian and opkg packages using fakeroot (in case of wrong uid)" >> zjunet.spec
echo "- Replace test IP with a more stable one" >> zjunet.spec
echo "* Sun Nov 23 2014 Zeno Zeng <zenoofzeng@gmail.com> - 0.2.3" >> zjunet.spec
echo "- build.sh & zjunet.sh now share lib/version" >> zjunet.spec
echo "- fork when calling xl2tpd-control" >> zjunet.spec
echo "* Sat Nov 22 2014 Senorsen <sen@senorsen.com> - 0.2.2" >> zjunet.spec
echo "- P-t-P server address issues" >> zjunet.spec
echo "- comment typo fixed" >> zjunet.spec
echo "* Wed Nov 12 2014 Zeno Zeng <zenoofzeng@gmail.com> - 0.2.1" >> zjunet.spec
echo "- xqyww123 fixed the compatibility with systemd" >> zjunet.spec
echo "- chaosink fixed the string escape problem in user.sh" >> zjunet.spec
echo "* Wed Oct 15 2014 Zeno Zeng <zenoofzeng@gmail.com> - 0.2.0" >> zjunet.spec
echo "- Use xl2tpd.conf, abandon \$HOME/.zjunet/" >> zjunet.spec
echo "- Setup route after connect / disconnect wlan" >> zjunet.spec
echo "* Mon Oct 13 2014 Zeno Zeng <zenoofzeng@gmail.com> - 0.1.2" >> zjunet.spec
echo "* Thu Oct 02 2014 Zeno Zeng <zenoofzeng@gmail.com> - 0.1.0" >> zjunet.spec
echo "- Initial version of the package" >> zjunet.spec
../../changelog.py rpm >> zjunet.spec

View File

@ -1,25 +1,12 @@
#!/bin/sh #!/bin/sh
set -e
BASEDIR=$(dirname $0)/lib BASEDIR=$(dirname $0)/lib
if [ -z "$PREFIX" ]; then mkdir -p /usr/local/lib/zjunet
PREFIX=/usr/local cp -rf $BASEDIR/* /usr/local/lib/zjunet
fi mkdir -p /usr/local/bin
echo "#!/bin/sh" > /usr/local/bin/zjunet
mkdir -p $DESTDIR$PREFIX/lib/zjunet echo '/usr/local/lib/zjunet/zjunet.sh "$@"' >> /usr/local/bin/zjunet
cp -rf $BASEDIR/* $DESTDIR$PREFIX/lib/zjunet chmod +x /usr/local/bin/zjunet
mkdir -p $DESTDIR$PREFIX/bin
mkdir -p $DESTDIR$PREFIX/share/zjunet
ln -fs ../../share/zjunet/VERSION $DESTDIR$PREFIX/lib/zjunet/VERSION
cp -f VERSION $DESTDIR$PREFIX/share/zjunet
cat > $DESTDIR$PREFIX/bin/zjunet << EOF
#!/bin/sh
$PREFIX/lib/zjunet/zjunet.sh "\$@"
EOF
chmod +x $DESTDIR$PREFIX/bin/zjunet
echo "[INFO] Done." echo "[INFO] Done."
echo echo
if [[ -z $DESTDIR ]]; then zjunet usage
zjunet usage
fi

View File

@ -28,10 +28,9 @@ zju_test_and_set_up_dns () {
} }
# 浙大的DNS不是很稳定这里列了备用方案 # 浙大的DNS不是很稳定这里列了备用方案
# 官方 > 10.12.10.12 > Senorsen (QSC Server) DNS > 114 DNS # 官方 > 10.12.10.12 > Senorsen (QSC Server) DNS > ALI YUN
zju_test_and_set_up_dns \ zju_test_and_set_up_dns \
$1 \
10.10.0.21 10.10.0.22 10.10.0.23 \ 10.10.0.21 10.10.0.22 10.10.0.23 \
10.12.10.12 \ 10.12.10.12 \
10.202.68.73 \ 10.202.68.43 \
114.114.114.114 114.114.114.114

View File

@ -34,8 +34,7 @@ echo "[INFO] Setting up ip route."
gateway=$(ip route get 10.10.0.21 | grep via | awk '{print $3}') gateway=$(ip route get 10.10.0.21 | grep via | awk '{print $3}')
# Recently VPN server 10.5.1.7 has the P-t-P: 172.172.172.2, after some updates. # Recently VPN server 10.5.1.7 has the P-t-P: 172.172.172.2, after some updates.
# Mar 2019 Update: A new VPN server 10.0.2.27 has been set up. devs_count=$(ip addr show | grep 'inet.*ppp' | grep ' 10.5.\|172.172.172.' | awk '{print $7}' | wc -l)
devs_count=$(ip addr show | grep 'inet.*ppp' | grep ' 10.5.\|172.172.172.\|10.0.2.' | awk '{print $7}' | wc -l)
if [ "${devs_count}" -eq "0" ]; then if [ "${devs_count}" -eq "0" ]; then
dev=$(ip route get 10.10.0.21 | head -n1 | awk '{print $5}') dev=$(ip route get 10.10.0.21 | head -n1 | awk '{print $5}')
@ -49,7 +48,6 @@ if [ "${devs_count}" -eq "0" ]; then
ip_route_del 210.32.160.0/21 ip_route_del 210.32.160.0/21
ip_route_del 210.32.168.0/22 ip_route_del 210.32.168.0/22
ip_route_del 210.32.172.0/23 ip_route_del 210.32.172.0/23
ip_route_del 210.32.174.0/24
ip_route_del 210.32.176.0/20 ip_route_del 210.32.176.0/20
ip_route_del 222.205.0.0/17 ip_route_del 222.205.0.0/17
ip_route_del 10.5.1.0/24 ip_route_del 10.5.1.0/24
@ -69,6 +67,8 @@ case "$gateway" in
10.189.*) 10.189.*)
ip route replace 10.50.200.245 via $gateway ip route replace 10.50.200.245 via $gateway
;; ;;
10.171.*)
;;
*) *)
# 内网静态路由 # 内网静态路由
# See also: #18 (thanks Hexcles Ma) # See also: #18 (thanks Hexcles Ma)
@ -88,7 +88,6 @@ case "$gateway" in
ip route replace 210.32.160.0/21 via $gateway ip route replace 210.32.160.0/21 via $gateway
ip route replace 210.32.168.0/22 via $gateway ip route replace 210.32.168.0/22 via $gateway
ip route replace 210.32.172.0/23 via $gateway ip route replace 210.32.172.0/23 via $gateway
ip route replace 210.32.174.0/24 via $gateway
ip route replace 210.32.176.0/20 via $gateway ip route replace 210.32.176.0/20 via $gateway
ip route replace 222.205.0.0/17 via $gateway ip route replace 222.205.0.0/17 via $gateway
;; ;;
@ -96,13 +95,26 @@ esac
# NEXTHOP # NEXTHOP
# Recently VPN server 10.5.1.7 has the P-t-P: 172.172.172.2, after some updates. # Recently VPN server 10.5.1.7 has the P-t-P: 172.172.172.2, after some updates.
# Mar 2019 Update: A new VPN server 10.0.2.27 has been set up. devs=$(ip addr show | grep 'inet.*ppp' | grep ' 10.5.\|172.172.172.' | awk '{print $7}')
devs=$(ip addr show | grep 'inet.*ppp' | grep ' 10.5.\|172.172.172.\|10.0.2.' | awk '{print $7}')
cmd="ip route replace default" cmd="ip route replace default"
for dev in $devs; do for dev in $devs; do
cmd="${cmd} nexthop dev ${dev}" cmd="${cmd} nexthop dev ${dev}"
done done
case "$gateway" in
10.189.*)
# WLAN
zjuwlan_test_ip=10.202.68.46
ip route replace $zjuwlan_test_ip via ${gateway}
zjuwlan_status=`curl -s $zjuwlan_test_ip | grep net.zju.edu.cn | wc -l`
if [ $zjuwlan_status -eq 0 ]
then
cmd="${cmd} nexthop via ${gateway}"
fi
ip route del $zjuwlan_test_ip || true
;;
esac
$cmd $cmd
ip route ip route

View File

@ -1,4 +1,4 @@
#!/bin/bash #!/bin/sh
# user.sh -- User Manager # user.sh -- User Manager
# #

View File

@ -65,18 +65,18 @@ connect() {
case "$1" in case "$1" in
d|-d|disconnect) -d)
disconnect disconnect
;; ;;
""|c|-c|connect) disconnect)
disconnect
;;
*)
disconnect disconnect
sleep 3 sleep 3
connect connect
;; ;;
*)
echo Invalid subcommand \"$1\" for \`zjunet vpn\`. Run \`zjunet usage\` for help.
;;
esac esac

View File

@ -2,10 +2,10 @@
# wlan.sh -- login/logout for ZJUWLAN # wlan.sh -- login/logout for ZJUWLAN
# #
# Requirements: curl
#
# Copyright (C) 2014 Zhang Hai <Dreaming.in.Code.ZH@Gmail.com> # Copyright (C) 2014 Zhang Hai <Dreaming.in.Code.ZH@Gmail.com>
# Copyright (C) 2014 Zeno Zeng <zenoofzeng@gmail.com> # Copyright (C) 2014 Zeno Zeng <zenoofzeng@gmail.com>
# Copyright (C) 2017 Wu Fan <wfwf1997@gmail.com>
# Copyright (C) 2023 Azuk 443 <azukmm@gmail.com>
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by # it under the terms of the GNU General Public License as published by
@ -21,5 +21,69 @@
# along with this program. If not, see # along with this program. If not, see
# <http://www.gnu.org/licenses/>. # <http://www.gnu.org/licenses/>.
echo "zjunet WLAN function is deprecated." BASEDIR=$(dirname $0)
exit 1
USER="${BASEDIR}/user.sh"
USERNAME=$($USER get)
PASSWORD=$($USER getpwd $USERNAME)
logout() {
USERNAME=$1
PASSWORD=$2
echo "Logout: ${USERNAME}"
RESPONSE=$(curl "https://net.zju.edu.cn/rad_online.php" -H "Content-Type: application/x-www-form-urlencoded" -d "action=auto_dm&username=${USERNAME}&password=${PASSWORD}" -s)
case "${RESPONSE}" in
*ok*)
echo "Logout: success."
;;
*成功*)
echo "Logout: success."
;;
*)
echo "Logout: ${RESPONSE}"
exit 1;
;;
esac
}
login() {
USERNAME=$1
PASSWORD=$2
logout $USERNAME $PASSWORD
echo "Login: ${USERNAME}"
RESPONSE=$(curl "https://net.zju.edu.cn/cgi-bin/srun_portal" -H "Content-Type: application/x-www-form-urlencoded" -d "action=login&username=${USERNAME}&password=${PASSWORD}&ac_id=3&type=1&is_ldap=1&local_auth=1" -s)
case "${RESPONSE}" in
*help.html*)
echo "Login: success."
;;
*login_ok*)
echo "Login: success."
;;
*)
echo "Login: ${RESPONSE}" >&2
exit 1
;;
esac
}
case "$1" in
disconnect)
logout $USERNAME $PASSWORD
;;
-d)
logout $USERNAME $PASSWORD
;;
*)
login $USERNAME $PASSWORD
;;
esac
"${BASEDIR}/sudo.sh" "${BASEDIR}/route.sh"

View File

@ -19,6 +19,8 @@
# You should have received a copy of the GNU General Public License # You should have received a copy of the GNU General Public License
# along with this program. If not, see # along with this program. If not, see
# <http://www.gnu.org/licenses/>. # <http://www.gnu.org/licenses/>.
#
# RUN AS ROOT! >..< ~~ / by xero ~~~ ararararar ~~~~
LNS="10.5.1.9" LNS="10.5.1.9"
L2TPD_CFG_FILE=/etc/xl2tpd/xl2tpd.conf L2TPD_CFG_FILE=/etc/xl2tpd/xl2tpd.conf
@ -90,7 +92,6 @@ linkname $LAC_NAME
logfile $PPP_LOG_FILE logfile $PPP_LOG_FILE
name $USERNAME name $USERNAME
password $PASSWORD password $PASSWORD
mtu 1428
EOF EOF
chmod 600 $PPP_OPT_FILE chmod 600 $PPP_OPT_FILE
@ -115,14 +116,14 @@ EOF
xl2tpd_connect() { xl2tpd_connect() {
echo "[INFO] try connecting $1" echo "[INFO] try connecting $1"
pkill xl2tpd-control > /dev/null pkill xl2tpd-control > /dev/null
xl2tpd-control connect-lac $1 & xl2tpd-control connect $1 &
echo "[INFO] xl2tpd-control done" echo "[INFO] xl2tpd-control done"
} }
xl2tpd_disconnect() { xl2tpd_disconnect() {
echo "[INFO] try disconnecting $1" echo "[INFO] try disconnecting $1"
pkill xl2tpd-control > /dev/null pkill xl2tpd-control > /dev/null
xl2tpd-control disconnect-lac $1 & xl2tpd-control disconnect $1 &
echo "[INFO] xl2tpd-control done" echo "[INFO] xl2tpd-control done"
} }
@ -143,18 +144,14 @@ xl2tpd_waituser() {
fi fi
echo -n > $PPP_LOG_FILE echo -n > $PPP_LOG_FILE
for pid in "/var/run/ppp-${LAC_NAME}.pid" \ pid="/var/run/ppp-${LAC_NAME}.pid"
"/var/run/pppdppp-${LAC_NAME}.pid" \
"/var/run/pppd/ppp-${LAC_NAME}.pid"; do
if [ -e $pid ]; then if [ -e $pid ]; then
ppp=$(cat $pid | grep ppp) ppp=$(cat $pid | grep ppp)
if ip addr show | grep "inet.*${ppp}" > /dev/null; then if ip addr show | grep "inet.*${ppp}" > /dev/null; then
ip addr show | grep "inet.*${ppp}" | sed 's/^ */[VPN] /' ip addr show | grep "inet.*${ppp}" | sed 's/^ */[VPN] /'
return return
fi fi
break
fi fi
done
done done

View File

@ -3,7 +3,6 @@
# zjunet.sh -- router for zjunet # zjunet.sh -- router for zjunet
# #
# Copyright (C) 2014 Zeno Zeng <zenoofzeng@gmail.com> # Copyright (C) 2014 Zeno Zeng <zenoofzeng@gmail.com>
# Copyright (C) 2023 Azuk 443 <azukmm@gmail.com>
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by # it under the terms of the GNU General Public License as published by
@ -20,59 +19,57 @@
# <http://www.gnu.org/licenses/>. # <http://www.gnu.org/licenses/>.
BASEDIR=$(dirname $0) BASEDIR=$(dirname $0)
MISCELLDIR="$BASEDIR/../../share/zjunet" MISCELLDIR="/usr/share/zjunet"
case "$1" in case "$1" in
r|route) route)
"${BASEDIR}/sudo.sh" "${BASEDIR}/route.sh" "${BASEDIR}/sudo.sh" "${BASEDIR}/route.sh"
;; ;;
u|user) user)
"${BASEDIR}/user.sh" $2 "${BASEDIR}/user.sh" $2
;; ;;
a|all) all)
"${BASEDIR}/wlan.sh" $2 "${BASEDIR}/wlan.sh" $2
"${BASEDIR}/vpn.sh" $2 "${BASEDIR}/vpn.sh" $2
;; ;;
w|wlan) wlan)
"${BASEDIR}/wlan.sh" $2 "${BASEDIR}/wlan.sh" $2
;; ;;
v|vpn) vpn)
"${BASEDIR}/vpn.sh" $2 "${BASEDIR}/vpn.sh" $2
;; ;;
d|dns) dns)
"${BASEDIR}/dns.sh" $2 "${BASEDIR}/dns.sh"
;; ;;
-v|version|--version) version|--version)
version_full=`cat "${MISCELLDIR}/VERSION"` version_full=`cat "${MISCELLDIR}/VERSION"`
version=$(echo $version_full | sed 's/-.*//') version=$(echo $version_full | sed 's/-.*//')
echo "zjunet version: $version (${version_full})" echo "zjunet version: $version (${version_full})"
;; ;;
*) *)
cat <<EOF cat <<EOF
zjunet: CLI tool (VPN/WLAN/DNS) for network connection in ZJU zjunet: cli tool (VPN/WLAN/DNS) for network connection in ZJU
Usage: zjunet [ACTION] Usage: zjunet [ACTION]
Actions: Actions:
user, u user
add Add a user add Add a user
list List all enabled users list List all enabled users
edit Edit a (enabled) user edit Edit a (enabled) user
* Note: to delete/disable a user, edit /etc/xl2tpd/xl2tpd.conf * Note: to delete/disable a user, edit /etc/xl2tpd/xl2tpd.conf
all, a all
connect, -c Connect VPN & ZJUWLAN, and combine them using nexthop connect(-c) Connect VPN & ZJUWLAN, and combine them using nexthop
disconnect, -d Disconnect VPN & ZJUWLAN disconnect(-d) Disconnect VPN & ZJUWLAN
vpn, v vpn
connect, -c Connect VPN and set up ip route connect(-c) Connect VPN and set up ip route
disconnect, -d Disconnect VPN and reset ip route disconnect(-d) Disconnect VPN and reset ip route
route, r Set up static route wlan
dns [ip], d [ip] Test and set up DNS Server (default: 10.10.0.21) connect(-c) Login ZJUWLAN using curl
version, -v Display program version disconnect(-d) Logout ZJUWLAN using curl
route Set up static route
Example: dns [server] Test and set up DNS Server (default: 10.10.0.21)
zjunet user add Add a new user version Display program version
zjunet vpn -c Connect VPN
zjunet vpn -d Disconnect VPN
EOF EOF
;; ;;
esac esac

3
miscellaneous/qsc.list Normal file
View File

@ -0,0 +1,3 @@
deb http://dl.zjuqsc.com/linux/debian stable main

View File

@ -0,0 +1,30 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.4.12 (GNU/Linux)
mQENBFTWIjMBCADxVTzmEp6T7pT5MiOwcyNQ/AxWf2xsA2ZDugrNrS3GoWRVyowv
phmgbq7J394cuL/Yw3f03Mw5mmDDEmC6j+FBf63hlLNj/UOeJdCibOSWJd89gbDY
ETUDtWAU+6xlG8gcoi/Jedy+yXwjcD8P8r3xU9pGt6sbJbSUJBzX9ghtEPdygUnn
rFG7jHXcbgnCr/mXcCMD59Y0grQvSW6N9B2vyGSrvYU4wlsBAtfJ93PJsd1bG5Oh
NS0XOCr4HHZO8hXlSdY2wyce3E2Pk+i/tbRJXoaezsRnHnFO0vAIvyouuIZnu5fr
iLIAWlRrErN09UKX4tlcmgWF1NRel3catpT/ABEBAAG0J1FpdSBTaGkgQ2hhbyAo
Q09NUDY2KSA8dGVjaEB6anVxc2MuY29tPokBOAQTAQIAIgUCVNYiMwIbAwYLCQgH
AwIGFQgCCQoLBBYCAwECHgECF4AACgkQ0qefnxdfAgJfKQgAmtjOp88qBHuguQrb
oefHGqs9C/GyJR8uzmlyf2Csln8C1rWJvSuS6J+CDY0jppeHjVJJsNki1RFfIb6p
8kFADGHwNMO3xdsMOxUyO9982pt1D0IdnQtn3lg7aWXwWTkdbXeDhOi2eh7BWINd
TkYFP6lSanVi2yQEePhAdUv/sNQ2afKmjY+07CRNyCKgBXPPuh2VdWYjKk17Lx2G
Jq/Jnw140hE9ESosrqefSnJRlZxjy4h4sE5sl8VPhkYxw91Ol9P9IyfIUx1uPzGc
eZAj/nnGNaBjjDzMlsOKVkLptEX4XYmiKVhVby1NkWbO/Makj746lC9TCjVAUgrA
Pw4mJLkBDQRU1iIzAQgApukqhnyFmOMvWTSin7NUf3nwNukkKwmABj9b54x+4XcO
c6A/9P4GygpqEGyMN6uduxM7PoUA2sPJG2kh2+uZeEoavAGyqfPp2uCFy1SEqopA
NyhWJz6bNkTUuHF2V1Wwfm/YIVIvaNKFz1be0t0YZkESuE1KvvEcoUa7BmhHiy7B
MiWrom6lFSSprI9t46zeNm9aSWNYAgEtAqgDLkmdmrKUymsIQWTJiSbJV6A3B2FP
+euiOozZmLq8bZDI1UgW1aieq0XTpz5ka/uklBKZKe98XmZUTeYmq/Y2xAm9CgJz
OXEHgbOJ8bc1r5VnVg2xT2hVA6adw8SI/14tYpntZQARAQABiQEfBBgBAgAJBQJU
1iIzAhsMAAoJENKnn58XXwICrWoH/RMEWSnAIYOp8oF4O5N3DT489iTkjZLezdAN
ASZwU/AmkFf7HwWiwJ9l9aBVJkbjtmKDNTlBB/dfSyWTZZPER28+d5tAEQp5kr1b
n5fm8+A+KHtIN2XclNMS84OpxWJ0RK2bwdc9PAe6iJwKXFTwLIVxUHYdUwLHRluH
mpSnQGGoBpEh2711IhBofy/0JXikAi0KqeKia0EHZH4ZrWq5nIygCnVeVfa+SaHw
ltjO2awKG1nJB+xjPTRa+lu84qmczrOQ6rKkILUXdHTBaS10rHQbHCa9x8GSIFVs
HExKX5SwV9uwcmHN6WVW8zISWZT9qVcvLOcf1cYRWxAHzxKCy0Y=
=dTq1
-----END PGP PUBLIC KEY BLOCK-----

9
miscellaneous/qsc.repo Normal file
View File

@ -0,0 +1,9 @@
[qsc]
name=Several things for Qiu Shi Chao Website
baseurl=http://dl.zjuqsc.com/linux/yum
failovermethod=priority
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-QSC-COMP66
metadata_expire=30m

View File

@ -1,5 +1,20 @@
#!/bin/sh #!/bin/sh
command -v apt-key 2>&1 >/dev/null && [ -d /etc/apt ] && {
cp /usr/share/zjunet/qsc.list /etc/apt/sources.list.d/qsc.list
chmod 644 /etc/apt/sources.list.d/qsc.list
apt-key add /usr/share/zjunet/qsc.public.key 2>&1 >/dev/null || true
echo "Added apt list."
}
command -v rpm 2>&1 >/dev/null && [ -d /etc/pki/rpm-gpg ] && [ -d /etc/yum.repos.d ] && {
cp /usr/share/zjunet/qsc.public.key /etc/pki/rpm-gpg/RPM-GPG-KEY-QSC-COMP66
chmod 644 /etc/pki/rpm-gpg/RPM-GPG-KEY-QSC-COMP66
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-QSC-COMP66 2>&1 >/dev/null || true
cp /usr/share/zjunet/qsc.repo /etc/yum.repos.d/qsc.repo || true
echo "Added yum repo."
}
cat <<BANNER cat <<BANNER
---------------------------------------------------------------------- ----------------------------------------------------------------------

View File

@ -1,7 +1,4 @@
#!/bin/sh #!/bin/sh
PREFIX=/usr/local rm -rIv /usr/local/lib/zjunet
rm -iv /usr/local/bin/zjunet
rm -rIv $PREFIX/lib/zjunet
rm -iv $PREFIX/bin/zjunet
rm -riv $PREFIX/share/zjunet