/R-U-Free

R-U-Free 是一个可以自由部署的状态检测网站,可用于让你的伙伴快速知道你离线/在线/空闲/忙碌(当然也支持自定义)

Primary LanguagePythonGNU General Public License v3.0GPL-3.0

Are You Free? (R-U-Free)

Are You Free 是一个基于Python的状态显示软件,可以让你的好损友快速知道你的状态(离线/在线、空闲/忙碌……也可以自定义)

使用方式

Warning

此项目还在开发,请稍后再来!

本软件提供两个版本:客户端RUF-Client和服务端RUF-Server,其中RUF-Client分为三个版本Desktop(桌面GUI)、CLI(命令行界面)和ESP32(嵌入式固件)。

若要安装此程序,你可从右侧Release一栏获取你需要的版本,或点此跳转最新版本→GitHub Release

客户端安装与配置

在上文中下载好压缩包后,我们可以开始安装并配置软件。

接下来本文将指导你完成配置。

下载好压缩包后,请将文件解压至一个目录里。本文中记为/path/to/unzipped/data

若您下载的是RUF-Client.CLI... 首先,进入/path/to/unzipped/data,对于Linux用户,请正确配置好cli.py的权限为-rwxr-xr-x(755)
然后,使用./cli.py init初始化客户端(若您是第一次使用,也可直接运行./cli.py),它将在当前目录里创建data文件夹,并显示如下内容指导您进行初始化:
[~] RUF-Client.CLI V1.0
[~] 初始化客户端中……
[~] 接下来,我们将用一个简单的向导指引您完成配置。
[~] 您也可以选择使用./cli.py init --config cli_config.json使用特定配置文件进行无人值守安装。
[?] 请设置服务器HTTP(S) API地址 > https://example.com/api
[#] API可用!
[?] 请在此配置你的令牌Token > RUF-1145141919810ABC
[#] Token有效!
[#] 下载个人配置完毕,现在为您显示可操作的命令……
[~] RUF-Client.CLI 命令帮助
[~] (省略)

初始化完毕后,可以通过使用./cli.py set 状态值/ID向服务器推送状态。
更多指令可以通过./cli.py help获取。
若您下载的是RUF-Client.Desktop... Desktop版只实现了Windows端,您可以直接双击运行desktop.pyw启动程序。
若您下载的是RUF-Client.ESP32... 这一版本程序适用于带有Wifi功能的ESP32,请使用Arduino IDE或支持arduino-cli的IDE打开main.ino,然后在Library Manager中导入ESP8266WiFiESP8266HTTPClientOneButton,接着依据Configure.sh中的提示对WiFi_SSIDsWiFi_PasswordsButton_GPIOsButton_Actions四个数组、RUF_Token字符串以及LED_GPIO整数值完成配置,方可下载并运行。
运行后,ESP32将开始按照设定的顺序在扫描到的WiFi中尝试连接,此时设定的LED灯慢闪,连接后将常亮,此时可通过设定的单击、双击和长按操作来向服务器推送状态。

#服务端安装与配置

同理,对于服务端,我们也将其解压至一个目录里,本文中同样记为/path/to/unzipped/data,并配置好适当的权限(推荐:-rwxr-xr-x(755)

首先,请找到config.json,根据下方格式进行修改:(注:若要将此文件作为模板,请删去注释,因为JSON不支持注释功能)

{
    "version": 1, // 这是版本号,不要修改,用于在有格式变动时自动完成升级
    "host": "::", // 服务器运行的接口,::表示在所有IPv6和IPv4接口运行服务器
    "port": 80, // 服务器运行于TCP端口80/HTTP,可修改,范围1-65535
    "prefix": "/", // 路径前缀,适用于nginx反代(内心OS:真的有必要么)
    "next_uid": 2, // 下一个用户的UID
    "user_data": [
        { // 这是一个管理员块
            "uid": 0,
            "uid_str": "admin",
            "salt": "+cuGBWGur+oAfYRp", // 随机16位字符串,内容0-9,A-Z,a-z,+,/,=
            "password": "91f46441a65134e01cefda4c035e9b21d17193154e836c86c476d4bdf2e68167", // 密码的加盐哈希值
            "token": "f3128b575ccd4e9c312cfcb7edd3adc296be67a55c861dcbfe87ed03b5fa94bb", // Token的加盐哈希值
            "israw": false, // 通常用于人工配置,为true时服务器将自动转换password和token 注意:token为以"RUF-"加上一个八字节十六进制值
            "last_changed": -1590354886, // 最近一次状态更新时间Unix时间戳
            "status": 0, // 0离线 1空闲 2忙碌 其他参照下方自定义
            "deletion": false, // 是否要在下一次清理时删除此用户
            "admin": true, // 是否为管理员
            "custom": [
                { // 这是一个自定义状态块
                    "sorted_index": 0, // 自定义项排序索引
                    "sid_str": "extra_busy", // 状态
                    "display": "超TM忙", // 状态显示名
                    "color": "#FF0000" // 状态主颜色
                }
            ]
        },
        { // 这是一个用户块
            "uid": 1,
            "uid_str": "exampleuser",
            "salt": "u/G/oJGgymQp69U7", // 随机0-9,A-Z,a-z,+,/,=
            "password": "7f3447ba48562f103e8189622d9a82428f69e01a919551c246c2a8472e858380", // 密码的加盐哈希值
            "token": "3a343937ae19135b66d84ccfd868bc9ab9d47c25d6f8bbb21b072e59c438a5dd", // Token的加盐哈希值
            "israw": false, // 通常用于人工配置,为true时服务器将自动转换password和token 注意:token为以"RUF-"加上一个八字节十六进制值
            "last_changed": -1590354886, // 最近一次状态更新时间Unix时间戳
            "status": 0, // 0离线 1空闲 2忙碌 其他参照下方自定义
            "deletion": false, // 是否要在下一次清理时删除此用户
            "admin": false, // 是否为管理员
            "custom": [
                { // 这是一个自定义状态块
                    "sorted_index": 0, // 自定义项排序索引
                    "sid_str": "extra_busy", // 状态
                    "display": "超TM忙", // 状态显示名
                    "color": "#FF0000" // 状态主颜色
                }
            ]
        }
    ],
}

然后启动服务器./server.py,服务器将自动加载配置并启动。若没有配置,服务器会使用默认配置进行启动,默认管理员账号密码均为admin,请注意修改。面板可通过http://<ip>:<port>/dashboard(若定义了不同的prefix,如以/abc为例,面板地址为http://<ip>:<port>/abc/dashboard),API则对应为http://<ip>:<port>/apiprefix情况同面板)。

Warning

关闭服务器时请使用^C快捷键(即Ctrl+C)、2号信号(即SIGINT)或面板端关闭