Metadata-Version: 2.4
Name: csust-login
Version: 0.1.1
Summary: 一个用于自动登录长沙理工大学校园网的 Python 脚本与守护进程工具。
Keywords: csust,login,network,daemon,automation
Author: zHElEARN
Author-email: i@zhelearn.com
Requires-Python: >=3.10
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: End Users/Desktop
Classifier: Intended Audience :: System Administrators
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Operating System :: OS Independent
Requires-Dist: dnspython (>=2.8.0,<3.0.0)
Requires-Dist: python-dotenv (>=1.2.2,<2.0.0)
Requires-Dist: requests (>=2.32.5,<3.0.0)
Project-URL: Bug Tracker, https://github.com/zHElEARN/csust-login/issues
Project-URL: Homepage, https://github.com/zHElEARN/csust-login
Project-URL: Repository, https://github.com/zHElEARN/csust-login
Description-Content-Type: text/markdown

# csust-login

这是一个用于自动登录长沙理工大学校园网的 Python 脚本与守护进程工具。该工具能够自动检测网络连接状态，并在掉线时自动进行登录。

项目使用了自定义 DNS 解析及备用 IP 回退机制，并且支持在网络异常时执行自定义重置网络命令，支持在服务器或软路由上作为长期稳定运行的后台服务。

## 环境要求

Python 版本：>= 3.10

依赖管理工具：建议使用 Poetry

## 安装步骤

推荐使用 pip 直接从 Python 包索引 (PyPI) 安装此工具。请确保你的 Python 环境版本为 3.10 或更高。在终端中运行以下命令即可一键安装：

```bash
pip install csust-login
```

## 配置文件

项目依赖环境变量进行身份验证与运行行为的控制。请在项目根目录创建一个 `.env` 文件，并写入相关配置。

必填项：

- `CSUST_USERNAME`: 你的校园网账号
- `CSUST_PASSWORD`: 你的校园网密码

可选项（以下列出的均为默认值，可根据具体网络环境自行覆盖）：

- `DAEMON_EXEC_INTERVAL=20`: 网络正常时，守护进程检测网络状态的时间间隔（秒）。
- `DAEMON_RETRY_INTERVAL=3`: 网络异常或登录失败时的重试等待时间（秒）。
- `CHECK_NETWORK_TIMEOUT=5`: 检测网络连通性时的请求超时时间（秒）。
- `LOGIN_TIMEOUT=10`: 提交登录请求的超时时间（秒）。
- `NETWORK_RESET_CMD=""`: 当程序无法获取网关参数时，尝试执行的终端命令。留空则不执行。
- `NETWORK_RESET_TIMEOUT=20`: 网络重置命令允许执行的最长时间（秒）。
- `NETWORK_RESET_WAIT=5`: 执行网络重置命令后，等待网络接口恢复的时间（秒）。
- `ENABLE_LOGGING=True`: 是否将运行日志写入文件。
- `LOG_DIR="logs"`: 日志文件的输出目录。
- `LOG_LEVEL="INFO"`: 日志记录级别（如 DEBUG, INFO, WARNING, ERROR）。

## 使用说明

通过 Poetry 安装并激活虚拟环境后，项目会在环境中注册两个命令行指令供直接调用。

**单次登录**

执行以下命令可以进行一次快速检测。如果当前已联网，程序会直接退出；如果未联网，程序会尝试获取重定向参数并进行一次登录尝试。

```bash
csust-login
```

**启动常驻守护进程**

执行以下命令启动自动守护模式。程序将持续在后台运行，按照 `.env` 中配置的间隔时间定期巡检。一旦发现断网，会自动发起登录请求。

```bash
csust-login-daemon
```

