Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/fa1seut0pia/logip6
一个开放web服务的shell脚本,用于获取服务器IPv6地址
https://github.com/fa1seut0pia/logip6
Last synced: 24 days ago
JSON representation
一个开放web服务的shell脚本,用于获取服务器IPv6地址
- Host: GitHub
- URL: https://github.com/fa1seut0pia/logip6
- Owner: fa1seut0pia
- Created: 2024-08-12T17:33:37.000Z (5 months ago)
- Default Branch: master
- Last Pushed: 2024-08-15T00:55:21.000Z (5 months ago)
- Last Synced: 2024-08-15T06:56:52.905Z (5 months ago)
- Language: Shell
- Size: 54.7 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# 一个开放web服务的shell脚本,用于获取服务器IPv6地址
![logip6](./assets/logip6.png)
## 0x00 使用方式
```shell
curl http://域名/{6位TOTP值}
```
## 0x02 依赖安装
### 1. Alpine
```shell
# docker 运行可跳过此步骤
# 可选 sed -i 's/dl-cdn.alpinelinux.org/mirrors.tuna.tsinghua.edu.cn/g' /etc/apk/repositories
apk add oath-toolkit-oathtool coreutils lighttpd# qrencode 需要自己编译
apk add --no-cache --virtual .build-deps \
build-base \
autoconf \
automake \
libtool \
git \
libpng-dev \
&& \
git clone --depth 1 https://github.com/fukuchi/libqrencode.git && \
cd libqrencode && \
./autogen.sh && \
./configure --prefix=/usr && \
make && \
make install && \
cd .. && \
rm -rf libqrencode && \
apk del .build-deps
```### 2. 其他
```shell
apt install oathtool lighttpd qrencode
# or
dnf install oathtool lighttpd qrencode
```## 0x03 运行方式
### 1. docker (推荐)
环境变量
`OATH_OTP`: OTP base32 字符串, 默认随机生成, 需要通过 `docker logs -f logip6` 的方式查看生成的结果
`OATH_IP`: 监听的 IP, 默认 `127.0.0.1`
`OATH_PORT`: 监听的 PORT, 默认 `8080` , 端口冲突就修改
`OATH_INTERFACE`: 要获取 IP 的网卡名称, 默认 `eth0`可以挂载 `OATH_WEB_SECRET` 文件, 比如 `-v ./OATH_WEB_SECRET:~/.config/OATH_WEB_SECRET`
```shell
# 以后台运行的方式启动
docker run -d --name logip6 --network host --restart always -e OATH_INTERFACE=ens192 fa1seut0pias/logip6```
or
```shell
docker run -d --name logip6 --network host --restart always -e OATH_INTERFACE=ens192 ghcr.io/fa1seut0pia/logip6
```
查看日志```shell
docker logs -f logip6
```构建
```shell
docker build -t logip6:latest .
```
### 2. 普通方式
```shell
# 变量方式运行
OATH_OTP="your_base32_secret" OATH_IP="192.168.1.10" OATH_PORT="8080" OATH_INTERFACE="eth0" ./lighttpd_oash_get_ip6.sh# 参数方式运行
./lighttpd_oash_get_ip6.sh --secret="your_base32_secret" --ip=0.0.0.0 --port=8080 --interface=ens192# 不指定 secret 会从文件 ~/.config/OATH_WEB_SECRET 获取, 获取不到会随机生成, 再写进 ~/.config/OATH_WEB_SECRET
sh /lighttpd_oash_get_ip6.sh --port=8080 --ip=127.0.0.1 --interface=ens192```
## 0x04 实现设计
使用shell在Alpine Linux(便于docker化)开发一个web服务,
此服务只提供一个查询接口
接口地址预期是 http://域名/{6位TOTP值}
接口内部的实现是先校验TOTP值, 校验通过就返回服务器的现在的IPv6地址(因为IPv6会变,这也是写这个脚本的原因)
脚本名字 lighttpd_oash_get_ip6.sh
脚本依赖 coreutils 的 base32 lighttpd 和 oath-toolkit-oathtool
脚本需要有两个函数:
1. 生成 base32的随机字符串
2. 启动 lighttpd web服务脚本支持4个参数, otp, ip, port, 以及网卡名字 interface, 4个参数有默认值也都支持从环境变量获取
如果 otp 没传, 生成默认 otp, 也就是 base32 的随机字符串
如果获取到了 otp, 则以传入的 otp 启动服务