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.2" have entirely different histories.
32
.github/ISSUE_TEMPLATE/bug_report.md
vendored
32
.github/ISSUE_TEMPLATE/bug_report.md
vendored
@ -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.
|
|
||||||
14
.github/ISSUE_TEMPLATE/feature_request.md
vendored
14
.github/ISSUE_TEMPLATE/feature_request.md
vendored
@ -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?
|
|
||||||
|
|
||||||
38
.github/workflows/packaging.yml
vendored
38
.github/workflows/packaging.yml
vendored
@ -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
|
|
||||||
11
.gitignore
vendored
11
.gitignore
vendored
@ -1,13 +1,2 @@
|
|||||||
|
|
||||||
# Packages
|
|
||||||
*.deb
|
*.deb
|
||||||
*.opk
|
*.opk
|
||||||
*.rpm
|
|
||||||
|
|
||||||
# Rubbish
|
|
||||||
*.swp
|
|
||||||
|
|
||||||
build/debian/debian
|
|
||||||
build/rpm/zjunet-*
|
|
||||||
build/rpm/zjunet.spec
|
|
||||||
build/openwrt/debian
|
|
||||||
|
|||||||
@ -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
|
|
||||||
|
|
||||||
126
README.md
126
README.md
@ -1,149 +1,97 @@
|
|||||||
# 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
|
||||||
|
|
||||||
### Debian / Ubuntu (deb)
|
https://github.com/QSCTech/zjunet/releases
|
||||||
|
下载 deb,双击安装就是。
|
||||||
|
|
||||||
1. Configure ZJU mirrors from manual. [Ubuntu](https://mirror.zju.edu.cn/docs/ubuntu/)/[Debian](https://mirror.zju.edu.cn/docs/debian/)
|
### Openwrt
|
||||||
2. Run these command.
|
|
||||||
|
|
||||||
``` bash
|
https://github.com/QSCTech/zjunet/releases
|
||||||
curl https://mirrors.zju.edu.cn/openzjunet/zjumirrors.pgp | sudo tee /etc/apt/trusted.gpg.d/zjumirrors.asc
|
下载 opk,然后 `opkg install` 就是。
|
||||||
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.
|
### From source
|
||||||
4. If you are setting up a server, we suggest you run `zjunet wlan disable` to disable WLAN capability.
|
|
||||||
|
|
||||||
### Fedora / CentOS (rpm)
|
master分支是开发分支,请直接从 release 那里获取源码。
|
||||||
|
|
||||||
1. Configure ZJU mirrors from manual. [Fedora](https://mirror.zju.edu.cn/docs/fedora/)/[CentOS](https://mirror.zju.edu.cn/docs/centos/)
|
|
||||||
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.
|
|
||||||
|
|
||||||
```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)
|
||||||
|
|
||||||
|
|||||||
139
README.zh.md
139
README.zh.md
@ -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) 。
|
|
||||||
@ -1,5 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
set -e
|
|
||||||
|
|
||||||
/usr/lib/zjunet/zjunet.sh "$@"
|
|
||||||
@ -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
|
|
||||||
@ -1,52 +1,12 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
VERSION=$(cat ../VERSION)
|
VERSION=0.2.2-0
|
||||||
|
|
||||||
fail() {
|
cd debian
|
||||||
echo -e "\033[31mERROR: Failed to build $1\033[0m" 1>&2
|
./build.sh $VERSION > /dev/null
|
||||||
}
|
|
||||||
|
|
||||||
if [[ $# -gt 0 ]]; then
|
cd ../openwrt
|
||||||
for arg in $*; do
|
./build.sh $VERSION > /dev/null
|
||||||
case $arg in
|
|
||||||
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 ..
|
||||||
pushd rpm > /dev/null
|
find . -regextype posix-egrep -regex ".*\.(opk|deb)$"
|
||||||
./build.sh $VERSION || fail 'RPM package'
|
|
||||||
popd > /dev/null
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ ! -z $USE_DEB ]]; then
|
|
||||||
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)$"
|
|
||||||
echo -ne "\033[0m"
|
|
||||||
|
|||||||
@ -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)))
|
|
||||||
@ -1,32 +1,17 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
set -e
|
|
||||||
|
|
||||||
rm -rf *.deb
|
rm -rf *.deb
|
||||||
|
|
||||||
VERSION=$1
|
VERSION=$1
|
||||||
|
|
||||||
# share
|
|
||||||
mkdir -p ./debian/usr/share/zjunet
|
|
||||||
cp ../../miscellaneous/* ./debian/usr/share/zjunet
|
|
||||||
cp ../../VERSION ./debian/usr/share/zjunet
|
|
||||||
|
|
||||||
# lib
|
# lib
|
||||||
mkdir -p ./debian/usr/lib/zjunet
|
mkdir -p ./debian/usr/lib/zjunet
|
||||||
cp ../../lib/*.sh ./debian/usr/lib/zjunet
|
cp ../../lib/* ./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
|
|
||||||
mkdir -p debian/DEBIAN
|
|
||||||
cat > debian/DEBIAN/postinst <<EOF
|
|
||||||
#!/bin/sh
|
|
||||||
|
|
||||||
/usr/share/zjunet/zjunet-postinst
|
|
||||||
|
|
||||||
EOF
|
|
||||||
chmod 755 debian/DEBIAN/postinst
|
|
||||||
|
|
||||||
# contorl file
|
# contorl file
|
||||||
mkdir -p debian/DEBIAN
|
mkdir -p debian/DEBIAN
|
||||||
@ -36,18 +21,17 @@ 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
|
dpkg-deb --build debian
|
||||||
mv debian.deb zjunet_${VERSION}_all.deb
|
mv debian.deb zjunet_${VERSION}_all.deb
|
||||||
|
|
||||||
# remove debian/
|
# remove debian/
|
||||||
rm -rf ./debian
|
rm -rf ./debian
|
||||||
rm -rf control
|
rm -f control
|
||||||
|
|
||||||
|
|||||||
@ -1,22 +1,17 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
set -e
|
|
||||||
|
|
||||||
rm -rf *.opk
|
rm -rf *.opk
|
||||||
|
|
||||||
VERSION=$1
|
VERSION=$1
|
||||||
|
|
||||||
# share
|
|
||||||
mkdir -p ./debian/usr/share/zjunet
|
|
||||||
cp ../../miscellaneous/* ./debian/usr/share/zjunet
|
|
||||||
cp ../../VERSION ./debian/usr/share/zjunet
|
|
||||||
|
|
||||||
# lib
|
# lib
|
||||||
mkdir -p ./debian/usr/lib/zjunet
|
mkdir -p ./debian/usr/lib/zjunet
|
||||||
cp ../../lib/*.sh ./debian/usr/lib/zjunet
|
cp ../../lib/* ./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,15 +21,15 @@ 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
|
||||||
|
|
||||||
# dpkg-deb
|
# dpkg-deb
|
||||||
find ./debian -type d | xargs chmod 755
|
find ./debian -type d | xargs chmod 755
|
||||||
fakeroot dpkg-deb -Zgzip --build debian # for opkg
|
dpkg-deb -Zgzip --build debian # for opkg
|
||||||
mv debian.deb zjunet_${VERSION}_all.opk
|
mv debian.deb zjunet_${VERSION}_all.opk
|
||||||
|
|
||||||
# remove debian/
|
# remove debian/
|
||||||
|
|||||||
@ -1,45 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
set -e
|
|
||||||
|
|
||||||
rm -rf *.rpm
|
|
||||||
|
|
||||||
VERSION=$1
|
|
||||||
REALVERSION=`echo "$VERSION" | cut -d'-' -f1`
|
|
||||||
RELEASE=`echo "$VERSION" | cut -d'-' -f2`
|
|
||||||
|
|
||||||
mkdir -p rpm/
|
|
||||||
|
|
||||||
# share
|
|
||||||
cp ../../miscellaneous/* rpm/
|
|
||||||
cp ../../VERSION rpm/
|
|
||||||
|
|
||||||
# lib
|
|
||||||
mkdir -p rpm/lib/
|
|
||||||
cp ../../lib/* rpm/lib/
|
|
||||||
|
|
||||||
# bin
|
|
||||||
echo '/usr/lib/zjunet/zjunet.sh "$@"' > rpm/zjunet
|
|
||||||
install -m 755 -d ./debian/usr/bin
|
|
||||||
|
|
||||||
# rpm
|
|
||||||
ARCH="noarch"
|
|
||||||
SEMINAME="zjunet-$REALVERSION"
|
|
||||||
FULLNAME="zjunet-$VERSION"
|
|
||||||
rm -rf ${SEMINAME}.tar.gz
|
|
||||||
find rpm -type d | xargs chmod 755
|
|
||||||
rm -rf $SEMINAME
|
|
||||||
mv rpm $SEMINAME
|
|
||||||
tar zcf ${SEMINAME}.tar.gz $SEMINAME
|
|
||||||
mkdir -p $HOME/rpmbuild/SOURCES
|
|
||||||
cp ${SEMINAME}.tar.gz $HOME/rpmbuild/SOURCES
|
|
||||||
cp build_spec.sh $SEMINAME/
|
|
||||||
cd $SEMINAME
|
|
||||||
./build_spec.sh $VERSION
|
|
||||||
cd ..
|
|
||||||
cp "$SEMINAME/zjunet.spec" ./
|
|
||||||
mkdir -p "$HOME/rpmbuild/SPECS"
|
|
||||||
cp zjunet.spec "$HOME/rpmbuild/SPECS"
|
|
||||||
fakeroot rpmbuild -ba zjunet.spec --target $ARCH
|
|
||||||
rm -rf zjunet.spec ${SEMINAME}.tar.gz $SEMINAME
|
|
||||||
cp $HOME/rpmbuild/RPMS/$ARCH/${FULLNAME}.$ARCH.rpm ./
|
|
||||||
|
|
||||||
@ -1,63 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
VERSION=$1
|
|
||||||
REALVERSION=`echo "$VERSION" | cut -d'-' -f1`
|
|
||||||
RELEASE=`echo "$VERSION" | cut -d'-' -f2`
|
|
||||||
|
|
||||||
echo "Summary: Command Line Scripts for ZJU " > zjunet.spec
|
|
||||||
echo "Name: zjunet" >> zjunet.spec
|
|
||||||
echo "Version: $REALVERSION" >> zjunet.spec
|
|
||||||
echo "Release: $RELEASE" >> zjunet.spec
|
|
||||||
echo "License: GPL" >> zjunet.spec
|
|
||||||
echo "Group: Applications/Internet" >> zjunet.spec
|
|
||||||
echo "URL: https://github.com/QSCTech/zjunet/" >> zjunet.spec
|
|
||||||
echo "Vendor: Qiu Shi Chao Website of Zhejiang University" >> zjunet.spec
|
|
||||||
echo "Packager: Azuk 443 <me@azuk.top>" >> zjunet.spec
|
|
||||||
echo "Requires: xl2tpd >= 1.3.7, bind-utils" >> zjunet.spec
|
|
||||||
echo "BuildRoot: %{_builddir}/%{name}-root" >> zjunet.spec
|
|
||||||
echo "Source: %{name}-%{version}.tar.gz" >> zjunet.spec
|
|
||||||
echo "BuildArch: noarch" >> zjunet.spec
|
|
||||||
echo "" >> zjunet.spec
|
|
||||||
echo "%description" >> zjunet.spec
|
|
||||||
echo "Command Line Scripts for ZJU " >> zjunet.spec
|
|
||||||
echo "This script provides a VPN / WLAN / NEXTHOP for ZJUer. " >> zjunet.spec
|
|
||||||
echo "" >> zjunet.spec
|
|
||||||
echo "%prep" >> zjunet.spec
|
|
||||||
echo "%setup -q" >> zjunet.spec
|
|
||||||
echo "" >> zjunet.spec
|
|
||||||
echo "%build" >> zjunet.spec
|
|
||||||
echo 'echo $RPM_BUILD' >> zjunet.spec
|
|
||||||
echo "" >> zjunet.spec
|
|
||||||
echo "%install" >> zjunet.spec
|
|
||||||
echo 'rm -rf $RPM_BUILD_ROOT' >> zjunet.spec
|
|
||||||
echo 'mkdir -p $RPM_BUILD_ROOT/usr/bin' >> zjunet.spec
|
|
||||||
echo 'mkdir -p $RPM_BUILD_ROOT/usr/lib/zjunet' >> zjunet.spec
|
|
||||||
echo 'mkdir -p $RPM_BUILD_ROOT/usr/share/zjunet' >> zjunet.spec
|
|
||||||
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
|
|
||||||
cd lib
|
|
||||||
for f in *.sh; do
|
|
||||||
echo "install -m 755 lib/$f \$RPM_BUILD_ROOT/usr/lib/zjunet/$f" >> ../zjunet.spec
|
|
||||||
done
|
|
||||||
cd ..
|
|
||||||
echo 'install -m 644 VERSION $RPM_BUILD_ROOT/usr/share/zjunet/VERSION' >> zjunet.spec
|
|
||||||
echo "" >> zjunet.spec
|
|
||||||
echo "%files" >> zjunet.spec
|
|
||||||
echo "%defattr(-,root,root)" >> zjunet.spec
|
|
||||||
echo "/usr/bin/zjunet" >> zjunet.spec
|
|
||||||
echo "/usr/share/zjunet/zjunet-postinst" >> zjunet.spec
|
|
||||||
echo "/usr/share/zjunet/VERSION" >> zjunet.spec
|
|
||||||
cd lib
|
|
||||||
for f in *.sh; do
|
|
||||||
echo "/usr/lib/zjunet/$f" >> ../zjunet.spec
|
|
||||||
done
|
|
||||||
cd ..
|
|
||||||
echo "" >> zjunet.spec
|
|
||||||
echo "%clean" >> zjunet.spec
|
|
||||||
echo 'rm -rf $RPM_BUILD_ROOT' >> zjunet.spec
|
|
||||||
echo "" >> zjunet.spec
|
|
||||||
echo "%post" >> zjunet.spec
|
|
||||||
echo "/usr/share/zjunet/zjunet-postinst || true" >> zjunet.spec
|
|
||||||
echo "" >> zjunet.spec
|
|
||||||
|
|
||||||
../../changelog.py rpm >> zjunet.spec
|
|
||||||
27
install.sh
27
install.sh
@ -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
|
|
||||||
|
|||||||
@ -1 +0,0 @@
|
|||||||
../VERSION
|
|
||||||
@ -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
|
||||||
|
|||||||
24
lib/route.sh
24
lib/route.sh
@ -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.44
|
||||||
|
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
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
#!/bin/bash
|
#!/bin/sh
|
||||||
|
|
||||||
# user.sh -- User Manager
|
# user.sh -- User Manager
|
||||||
#
|
#
|
||||||
@ -18,6 +18,8 @@
|
|||||||
# along with this program. If not, see
|
# along with this program. If not, see
|
||||||
# <http://www.gnu.org/licenses/>.
|
# <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
# init
|
||||||
|
|
||||||
L2TPD_CFG_FILE=/etc/xl2tpd/xl2tpd.conf
|
L2TPD_CFG_FILE=/etc/xl2tpd/xl2tpd.conf
|
||||||
|
|
||||||
BASEDIR=$(dirname $0)
|
BASEDIR=$(dirname $0)
|
||||||
|
|||||||
12
lib/vpn.sh
12
lib/vpn.sh
@ -34,12 +34,16 @@ flush() {
|
|||||||
disconnect() {
|
disconnect() {
|
||||||
users=$("${BASEDIR}/user.sh" getall)
|
users=$("${BASEDIR}/user.sh" getall)
|
||||||
for username in $users; do
|
for username in $users; do
|
||||||
|
echo "[INFO] Logout: ${username}"
|
||||||
"${BASEDIR}/sudo.sh" "${BASEDIR}/xl2tpd.sh" disconnect $username
|
"${BASEDIR}/sudo.sh" "${BASEDIR}/xl2tpd.sh" disconnect $username
|
||||||
done
|
done
|
||||||
"${BASEDIR}/sudo.sh" "${BASEDIR}/route.sh"
|
"${BASEDIR}/sudo.sh" "${BASEDIR}/route.sh"
|
||||||
}
|
}
|
||||||
|
|
||||||
connect() {
|
connect() {
|
||||||
|
disconnect
|
||||||
|
sleep 3
|
||||||
|
|
||||||
users=$("${BASEDIR}/user.sh" getall)
|
users=$("${BASEDIR}/user.sh" getall)
|
||||||
|
|
||||||
"${BASEDIR}/sudo.sh" "${BASEDIR}/xl2tpd.sh" restart
|
"${BASEDIR}/sudo.sh" "${BASEDIR}/xl2tpd.sh" restart
|
||||||
@ -65,18 +69,16 @@ connect() {
|
|||||||
|
|
||||||
case "$1" in
|
case "$1" in
|
||||||
|
|
||||||
d|-d|disconnect)
|
-d)
|
||||||
disconnect
|
disconnect
|
||||||
;;
|
;;
|
||||||
|
|
||||||
""|c|-c|connect)
|
disconnect)
|
||||||
disconnect
|
disconnect
|
||||||
sleep 3
|
|
||||||
connect
|
|
||||||
;;
|
;;
|
||||||
|
|
||||||
*)
|
*)
|
||||||
echo Invalid subcommand \"$1\" for \`zjunet vpn\`. Run \`zjunet usage\` for help.
|
connect
|
||||||
;;
|
;;
|
||||||
|
|
||||||
esac
|
esac
|
||||||
|
|||||||
72
lib/wlan.sh
72
lib/wlan.sh
@ -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/cgi-bin/srun_portal" -H "Content-Type: application/x-www-form-urlencoded" -d "action=logout" -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"
|
||||||
|
|
||||||
|
|||||||
@ -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
|
||||||
@ -34,25 +36,28 @@ LOG_FILE=/var/log/zjunet/${USERNAME}
|
|||||||
|
|
||||||
XL2TPD_CONTROL_FILE=/var/run/xl2tpd/l2tp-control
|
XL2TPD_CONTROL_FILE=/var/run/xl2tpd/l2tp-control
|
||||||
|
|
||||||
type systemctl >/dev/null 2>&1
|
|
||||||
HAVE_SYSTEMD=$?
|
|
||||||
|
|
||||||
xl2tpd_stop() {
|
xl2tpd_stop() {
|
||||||
echo "[INFO] Stopping xl2tpd"
|
# for Openwrt / Debian / Ubuntu
|
||||||
if [ $HAVE_SYSTEMD -eq 0 ]; then
|
type systemctl >/dev/null 2>&1 || {
|
||||||
systemctl stop xl2tpd
|
|
||||||
else
|
|
||||||
/etc/init.d/xl2tpd stop
|
/etc/init.d/xl2tpd stop
|
||||||
fi
|
}
|
||||||
|
|
||||||
|
# for Arch Linux
|
||||||
|
type systemctl >/dev/null 2>&1 && {
|
||||||
|
systemctl stop xl2tpd
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
xl2tpd_start() {
|
xl2tpd_start() {
|
||||||
echo "[INFO] Starting xl2tpd"
|
# for Openwrt / Debian / Ubuntu
|
||||||
if [ $HAVE_SYSTEMD -eq 0 ]; then
|
type systemctl >/dev/null 2>&1 || {
|
||||||
systemctl start xl2tpd
|
|
||||||
else
|
|
||||||
/etc/init.d/xl2tpd start
|
/etc/init.d/xl2tpd start
|
||||||
fi
|
}
|
||||||
|
|
||||||
|
# for Arch Linux
|
||||||
|
type systemctl >/dev/null 2>&1 && {
|
||||||
|
systemctl start xl2tpd
|
||||||
|
}
|
||||||
|
|
||||||
# wait until ready
|
# wait until ready
|
||||||
for i in $(seq 0 10); do
|
for i in $(seq 0 10); do
|
||||||
@ -68,7 +73,6 @@ xl2tpd_start() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
xl2tpd_trystart() {
|
xl2tpd_trystart() {
|
||||||
echo "[INFO] Try to start xl2tpd if not"
|
|
||||||
if [ -e ${XL2TPD_CONTROL_FILE} ] || (type systemctl >/dev/null && systemctl status xl2tpd >/dev/null); then
|
if [ -e ${XL2TPD_CONTROL_FILE} ] || (type systemctl >/dev/null && systemctl status xl2tpd >/dev/null); then
|
||||||
echo "[INFO] xl2tpd ready."
|
echo "[INFO] xl2tpd ready."
|
||||||
else
|
else
|
||||||
@ -90,7 +94,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
|
||||||
|
|
||||||
@ -113,17 +116,11 @@ EOF
|
|||||||
}
|
}
|
||||||
|
|
||||||
xl2tpd_connect() {
|
xl2tpd_connect() {
|
||||||
echo "[INFO] try connecting $1"
|
xl2tpd-control connect $1
|
||||||
pkill xl2tpd-control > /dev/null
|
|
||||||
xl2tpd-control connect-lac $1 &
|
|
||||||
echo "[INFO] xl2tpd-control done"
|
|
||||||
}
|
}
|
||||||
|
|
||||||
xl2tpd_disconnect() {
|
xl2tpd_disconnect() {
|
||||||
echo "[INFO] try disconnecting $1"
|
xl2tpd-control disconnect $1
|
||||||
pkill xl2tpd-control > /dev/null
|
|
||||||
xl2tpd-control disconnect-lac $1 &
|
|
||||||
echo "[INFO] xl2tpd-control done"
|
|
||||||
}
|
}
|
||||||
|
|
||||||
xl2tpd_waituser() {
|
xl2tpd_waituser() {
|
||||||
@ -134,27 +131,22 @@ xl2tpd_waituser() {
|
|||||||
then
|
then
|
||||||
echo "[INFO] Connection terminated."
|
echo "[INFO] Connection terminated."
|
||||||
echo -n > $PPP_LOG_FILE
|
echo -n > $PPP_LOG_FILE
|
||||||
echo "[INFO] Retrying now. "
|
echo "[INFO] Retrying now. (try to kick off, may take some time)"
|
||||||
sleep 1
|
sleep 1
|
||||||
xl2tpd_disconnect ${LAC_NAME}
|
xl2tpd_disconnect ${LAC_NAME}
|
||||||
sleep 5
|
sleep 5
|
||||||
xl2tpd_connect ${LAC_NAME}
|
xl2tpd_connect ${LAC_NAME}
|
||||||
echo "[INFO] again"
|
|
||||||
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
|
||||||
|
|
||||||
|
|||||||
@ -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,54 @@
|
|||||||
# <http://www.gnu.org/licenses/>.
|
# <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
BASEDIR=$(dirname $0)
|
BASEDIR=$(dirname $0)
|
||||||
MISCELLDIR="$BASEDIR/../../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_full=`cat "${MISCELLDIR}/VERSION"`
|
echo "zjunet version: zjunet-0.2.1"
|
||||||
version=$(echo $version_full | sed 's/-.*//')
|
|
||||||
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 Zjuer
|
||||||
|
|
||||||
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 yourself
|
||||||
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 via curl
|
||||||
version, -v Display program version
|
disconnect(-d) Logout ZJUWLAN via curl
|
||||||
|
route Set up ip route
|
||||||
Example:
|
dns Test and set up DNS Server
|
||||||
zjunet user add Add a new user
|
--version Show Version
|
||||||
zjunet vpn -c Connect VPN
|
|
||||||
zjunet vpn -d Disconnect VPN
|
|
||||||
EOF
|
EOF
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|||||||
@ -1,16 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
cat <<BANNER
|
|
||||||
----------------------------------------------------------------------
|
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
GNU General Public License Version 3 for more details.
|
|
||||||
|
|
||||||
You can ask questions, file a bug or make PRs here:
|
|
||||||
* https://github.com/QSCTech/zjunet
|
|
||||||
|
|
||||||
----------------------------------------------------------------------
|
|
||||||
BANNER
|
|
||||||
|
|
||||||
@ -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
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user