Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/bclswl0827/ip-reporter
用于在 IP 随机分配的校园网环境中,定时向固定 IP 的服务器上报自身 IP 地址
https://github.com/bclswl0827/ip-reporter
Last synced: 29 days ago
JSON representation
用于在 IP 随机分配的校园网环境中,定时向固定 IP 的服务器上报自身 IP 地址
- Host: GitHub
- URL: https://github.com/bclswl0827/ip-reporter
- Owner: bclswl0827
- License: mit
- Created: 2023-11-19T15:29:20.000Z (12 months ago)
- Default Branch: master
- Last Pushed: 2024-01-04T06:25:27.000Z (10 months ago)
- Last Synced: 2024-04-18T02:35:41.513Z (7 months ago)
- Language: Go
- Homepage:
- Size: 16.6 KB
- Stars: 1
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# ip-reporter
在 IP 随机变化的 WiFi 校园网中,定时向固定 IP 的服务器上报自身 IP 位址
相比于使用 DDNS,此方案不需注册域名,不需配置 DNS,客户端设备也不需接入网际互联网
# 服务端
服务端使用 Go + Gin 编写,可以部署在多种平台上,包括树莓派、路由器、云服务器等
## 部署
确保服务器上已经安装了 Go 环境,对于 Linux 系统,以下命令可以在 Bash 中运行;对于 Windows 系统,可以在 Git Bash 中运行
**若服务器与编译环境不在同一平台或使用不同架构,可以使用交叉编译,Go 语言如何交叉编译请自行 Google 搜索**
### 取得源码
```bash
$ git clone https://github.com/bclswl0827/ip-reporter --depth=1
$ cd ip-reporter/server
```### 编译
```bash
$ go build -ldflags "-s -w" -o ./ip-reporter-server
```### 运行
编辑 `config.json` 文件,下表列出了各个字段的含义
| 字段 | 类型 | 描述 |
| :------- | :------- | :--------------------------- |
| `listen` | `string` | 服务器端监听地址和端口 |
| `life` | `int` | 客户端上报 IP 有效期,单位秒 |
| `cors` | `bool` | 是否允许跨域请求服务器端 API |配置完整示例如下
```json
{
"life": 60,
"cors": false,
"listen": "0.0.0.0:8000"
}
```配置文件编辑完成后,运行服务端,假设配置文件路径位于 `/path/to/config.json`
```bash
$ ./ip-reporter-server -config /path/to/config.json
```服务器端运行后,可以访问 `http://ip:port` 查看当前已经上报的 IP 地址
## 注意事项
- 请确保服务器上的防火墙已经放行了服务端监听的端口
- 服务器端 IP 地址不要变化,否则客户端将无法上报 IP 地址# 客户端
## 部署
确保客户端上已经安装了 Go 环境,对于 Linux 系统,以下命令可以在 Bash 中运行;对于 Windows 系统,可以在 Git Bash 中运行
**若客户端与编译环境不在同一平台或使用不同架构,可以使用交叉编译,Go 语言如何交叉编译请自行 Google 搜索**
### 取得源码
```bash
$ git clone https://github.com/bclswl0827/ip-reporter --depth=1
$ cd ip-reporter/client
```### 编译
```bash
$ go build -ldflags "-s -w" -o ./ip-reporter-client
```### 运行
编辑 `config.json` 文件,下表列出了各个字段的含义
| 字段 | 类型 | 描述 |
| :----------- | :------- | :------------------------------------------------------------- |
| `timeout` | `int` | 上报超时时间,单位秒,超过此时间未上报成功则重试 |
| `interval` | `int` | 上报间隔时间,单位秒,须小于服务器配置的 IP 有效期 |
| `report_uri` | `string` | 服务端地址,格式为 `http://ip:port/collect` |
| `device_tag` | `string` | 设备标识,用于区分不同的设备,例如 `raspberrypi@lab0308` |
| `ip_prefix` | `string` | IP 地址前缀,例如校园网 IP 以 `10.10` 开头,需根据实际情况配置 |配置完整示例如下
```json
{
"timeout": 5,
"interval": 5,
"ip_prefix": "10.160",
"device_tag": "test-device",
"report_uri": "http://1.2.3.4:8000/collect"
}
```配置文件编辑完成后,运行客户端,假设配置文件路径位于 `/path/to/config.json`
```bash
$ ./ip-reporter-client -config /path/to/config.json
```