Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/xiaoxinpro/WolGoWeb
基于Golang的远程唤醒WebAPI
https://github.com/xiaoxinpro/WolGoWeb
Last synced: 14 days ago
JSON representation
基于Golang的远程唤醒WebAPI
- Host: GitHub
- URL: https://github.com/xiaoxinpro/WolGoWeb
- Owner: xiaoxinpro
- License: gpl-3.0
- Created: 2020-07-06T11:13:07.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2024-09-07T13:00:05.000Z (2 months ago)
- Last Synced: 2024-09-08T13:39:10.963Z (2 months ago)
- Language: Go
- Size: 21.8 MB
- Stars: 188
- Watchers: 1
- Forks: 27
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# WolGoWeb
WolGoWeb是一款远程唤醒WebAPI工具,主要用于搭建在局域网服务器或NAS中,实现WebAPI唤醒局域网内主机。
> 在使用该工具前,首先要确认需要唤醒的主机支持WOL功能并且已经开启。
## 开发状态
[![build docker image](https://github.com/xiaoxinpro/WolGoWeb/actions/workflows/docker-image.yml/badge.svg?branch=master)](https://hub.docker.com/r/chishin/wol-go-web)
WolGoWeb 经历了五年的测试已经在诸多测试、生产环境得以稳定运行。
* [master](https://github.com/xiaoxinpro/WolGoWeb/tree/master) 分支用于发布开发版本(稳定性需要进一步测试)
* [release](https://github.com/xiaoxinpro/WolGoWeb/releases) 版本为经测试稳定发布的版本(建议下载最新的 release 版本部署)在生产环境中建议使用Docker或release版本来部署WolGoWeb。
## 部署说明
### 1、服务器直接部署
无论是Windows还是Linux系统都可以直接下载对应的 release 编译版本直接运行即可,无需安装任何依赖。
```
WolGoWeb_linux_amd64 -port 9090
```其中参数 `-port` 表示服务端口号,默认是 `9090` 也可以不填。
> 需要注意的是指定端口必须可以访问,可能需要额外配置防火墙。
#### 运行参数说明:
| 参数名称 | 描述 | 备注 |
|-----------|-------------|------------------------------------------------------------------------------------------------------------------|
| -c | 设置配置源 | `default`命令行、`env`环境变量,默认:default |
| -port | 开放服务端口 | 默认:9090 |
| -web | 是否启用Web页面 | 默认:`true` |
| -username | 设置Web页面登陆账号 | 仅在启用Web页面时,且`-username`与`-password`都不为空时有效 |
| -password | 设置Web页面登陆密码 | 仅在启用Web页面时,且`-username`与`-password`都不为空时有效 |
| -key | API权限验证KEY | 默认:`false`不进行权限验证,详见[API权限验证说明](https://github.com/xiaoxinpro/WolGoWeb#4api%E6%9D%83%E9%99%90%E9%AA%8C%E8%AF%81) |### 2、服务器Docker-compose部署(推荐)
使用 Docker-compose 可以十分便捷的部署 WolGoWeb 工具,首先要确保服务器中已经安装了 Docker 和 Docker-compose。
创建一个 `docker-compose.yml` 文件:
```yaml
version: '3'
services:
wol-go-web:
image: chishin/wol-go-web:latest
container_name: WolGoWeb
restart: unless-stopped
network_mode: host
environment:
- PORT=9090
- KEY=false
```启动容器:
```bash
docker-compose pull
docker-compose up -d
```到此部署已经完成,如果需要升级到最新版本,可直接执行以下命令:
```bash
docker-compose down
docker-compose pull
docker-compose up -d
```### 3、服务器Docker部署
使用 Docker 部署 WolGoWeb 工具:
```
docker run -d --net=host chishin/wol-go-web
```如果需要指定端口可以使用下面的命令:
```
docker run -d --net=host --env PORT=端口号 chishin/wol-go-web
```#### 环境说明:
| 参数名称 | 描述 | 备注 |
|----------|-------------|-------------------------------------------------------------------------------------------------------------------|
| PORT | 开放服务端口 | 默认:9090 |
| WEB | 是否启用Web页面 | 默认:`true` |
| USERNAME | 设置Web页面登陆账号 | 仅在启用Web页面时,且`USERNAME`与`PASSWORD`都不为空时有效 |
| PASSWORD | 设置Web页面登陆密码 | 仅在启用Web页面时,且`USERNAME`与`PASSWORD`都不为空时有效 |
| KEY | API权限验证KEY | 默认:`false`不进行权限验证,详见 [API权限验证说明](https://github.com/xiaoxinpro/WolGoWeb#4api%E6%9D%83%E9%99%90%E9%AA%8C%E8%AF%81) |### 4、群晖Docker部署
群晖系统可以在Docker应用的 **注册表** 中搜索 `wol-go-web`,即可下载和部署项目。
更多图文教程可以参考 https://github.com/xiaoxinpro/WolGoWeb/blob/master/docker/README.md
## 使用方法
### 1、验证部署成功
完成部署工作即可开始使用,首先使用浏览器访问 `http://服务器IP或域名:9090`,如果修改了端口号请访问对应的端口。
![访问服务地址](https://image.xiaoxin.pro/2024/09/07/11b4b52fd6192.png)
看到以上界面表示服务部署成功。
### 2、发送唤醒请求
可以直接使用浏览器访问 `http://服务器IP或域名:9090/wol?mac=需要唤醒主机的MAC地址` 当出现以下界面表示唤醒命令发送成功。
![发送唤醒请求](https://image.xiaoxin.pro/2024/09/07/52f43a17574b3.png)
### 3、唤醒请求参数
| 参数名称 | 描述 | 备注 |
|---------|--------------|--------------------|
| mac | 唤醒主机的MAC地址 | 必填 |
| ip | 唤醒主机的IP地址 | 默认:255.255.255.255 |
| port | 唤醒命令发送的端口 | 默认:9 |
| network | 唤醒命令发送网络接口名称 | 默认:空 |### 4、API权限验证
API权限验证用于防止他人触发唤醒指令的发送,是一种唤醒指令安全措施,默认处于关闭状态。
#### 开启API权限验证
在启动项目时传入 `-key` 参数或者Docker增加环境变量 `KEY`,此参数的长度必须大于等于6个字符,否则API权限验证将处于关闭状态。
#### 权限验证请求参数
开启API权限验证后,在发送WOL唤醒请求时必须和唤醒请求一起发送一下参数。
| 参数名称 | 描述 | 备注 |
|-------|-----------------|-------------------------|
| time | 发送请求时的时间戳 | 单位:秒 |
| token | 经过加密后得到的权限Token | token=MD5(key+mac+time) |例如:设定的`key=123456`,发送请求时的 `time=1594452205`, `mac=00-00-00-00-00-00`,计算token的公式为`MD5("12345600-00-00-00-00-001594452205")`,结果为`token=eb3515003672b3e0324196ecd78438a2`
#### 特别注意
* 对于参数time必须不能小于接收时刻30秒以上,同时也不能大于接收时刻的时间戳。
* 对于多次发送相同mac的唤醒请求time值不允许相同。
* 对于token参数长度必须为32,并且英文字符必须是小写的。
* 对于key长度必须大于6个字符,否则不会进行权限验证。## 应用实例
### 1、使用iOS快捷指令唤醒(Siri唤醒)
可以自己创建一个快捷指令访问唤醒的URL即可,也可以直接在iOS浏览器中打开下面的链接修改成你的服务器地址和需要唤醒的MAC地址。
[https://www.icloud.com/shortcuts/0931d2a9d4e84984b8d85e977aff8ef9](https://www.icloud.com/shortcuts/0931d2a9d4e84984b8d85e977aff8ef9)
![快捷指令](https://image.xiaoxin.pro/github/WolGoWeb/%E5%BF%AB%E6%8D%B7%E6%8C%87%E4%BB%A4.PNG)
创建完成快捷指令后可以在快捷指令主页用点击 **唤醒电脑** ,或者语音唤醒Siri说出 **唤醒电脑** 即可完成电脑唤醒。
### 2、群晖定时唤醒主机
首先要确保在群晖中已经部署了WolGoWeb,可以访问群晖的IP地址:9090查看是否部署完成。
接下来在群晖里找到`控制面板`中的`任务计划`,新增一个计划任务`用户定义脚本`;
在`常规`界面中随意填写一个任务名称,在`计划`界面中设定好时间;
在`任务设置`界面输入以下唤醒命令,其中`00-00-00-00-00-00`为你要唤醒的主机MAC地址。
```bash
curl http://127.0.0.1:9090/wol?mac=00-00-00-00-00-00
```如果你的WolGoWeb不是部署在群晖中,需要将上面命令中的`127.0.0.1:9090`替换成你部署的IP和端口。
![1653360092485.png](https://image.xiaoxin.pro/2022/05/24/57e70aa26da8a.png)
最后点击`确定`按钮保存任务。
> 在任务列表里找到刚刚创建的任务,右击`运行`可以立即唤醒主机。
### 3、浏览器收藏夹快捷唤醒
可以在电脑或手机等任意浏览器中创建一个收藏夹或书签,名称随意填写,地址填入:
```
http://192.168.10.10:9090/wol?mac=00-00-00-00-00-00
```其中`192.168.10.10:9090`是你部署的WolGoWeb,`00-00-00-00-00-00`为你要唤醒的主机MAC地址。
需要唤醒时,直接在收藏夹或书签中点击即可执行唤醒动作。