Giter Site home page Giter Site logo

berrysoft / tunet-rust Goto Github PK

View Code? Open in Web Editor NEW
103.0 3.0 7.0 3.35 MB

清华大学校园网 Rust 库与客户端

License: MIT License

Rust 73.74% Shell 0.52% Makefile 0.12% Kotlin 1.02% Ruby 0.74% Swift 1.35% Objective-C 0.04% Dart 22.47%
tsinghua-university campus-network rust-lang rust macos linux windows android dart flutter

tunet-rust's Introduction

tunet-rust

清华大学校园网 Rust 库与客户端。

Azure DevOps builds

GUI(桌面端)

基于 Slint 开发。使用如下命令启动:

$ tunet-gui
平台
Windows Windows Windows
Linux Linux (暂无图片)
macOS macOS macOS

GUI(移动端)

基于 Flutter 开发。会尽量保证 iOS 版本能用,但是没钱发布。

平台
Android Android Android

CUI(命令行图形界面)

使用如下命令启动:

# 使用默认(自动判断)方式登录/注销
$ tunet-cui
# 使用 auth4 方式登录/注销
$ tunet-cui -s auth4

Console

命令行

登录/注销

# 使用默认(自动判断)方式登录
$ tunet login
# 使用默认(自动判断)方式注销
$ tunet logout
# 使用 auth4 方式登录
$ tunet login -s auth4
# 使用 auth4 方式注销
$ tunet logout -s auth4

在线状态

# 使用默认(自动判断)方式
$ tunet status
# 使用 auth4 方式
$ tunet status -s auth4

查询/强制下线在线 IP

# 查询
$ tunet online
# IP 上线
$ tunet connect -a IP地址
# IP 下线
$ tunet drop -a IP地址

流量明细

# 使用默认排序(注销时间,升序)查询明细
$ tunet detail
# 使用登录时间(升序)查询明细
$ tunet detail -o login
# 使用流量降序查询明细
$ tunet detail -o flux -d
# 使用流量降序查询明细,并按注销日期组合
$ tunet detail -o flux -dg

Nushell 集成

statusonlinedetail 子命令支持 --nuon 参数,可以配合 Nushell 得到结构化的数据:

# 在线状态表格
> tunet status --nuon | from nuon
# 查询在线 IP 表格
> tunet online --nuon | from nuon
# 明细表格
> tunet detail --nuon | from nuon
# 使用流量降序查询明细,并按注销日期组合
> tunet detail -g --nuon | from nuon | sort-by flux -r

Windows 服务/macOS launchd

# 注册服务
$ tunet-service register
# 注册服务,并定时5分钟连接一次
$ tunet-service register -i "5min"
# 注销服务
$ tunet-service unregister

注意 tunet-service.exe 自身是服务程序,如需删除应先注销服务。

Systemd

由于不同 Linux 发行版的服务机制不同,没有提供 registerunregister 命令。 Debian 打包提供了 [email protected] 文件。对于用户 foo,可以运行

# 启用服务
$ sudo systemctl enable tunet@foo
# 启动服务
$ sudo systemctl start tunet@foo

可以通过编辑该文件来调整重复登录的间隔。

密码

用户名和密码在第一次登录时根据提示输入。请不要在不信任的电脑上保存密码。可以在桌面端图形界面点击“删除并退出”,或在命令行使用如下命令删除:

$ tunet deletecred

注意:由于 Linux 的限制,目前没有找到合适的持续化密码保存方法,因此会直接明文存储。

网络状态

针对不同平台使用平台特定的方式尝试获得当前的网络连接方式,如果是无线网连接还会获取 SSID。 如果无法获取,则尝试连接特定的网址来判断。

平台 网络状态 WIFI SSID MAC 地址
Windows Windows::Networking::Connectivity GetAdaptersAddresses
Linux (无) Netlink getifaddrs
Android ConnectivityManager WifiManager
macOS X System Configuration Core WLAN
iOS NEHotspotNetwork

编译说明

使用 cargo 直接编译:

$ cargo build --release --workspace --exclude native

即可在 target/release 下找到编译好的程序。

若要为 Android 编译 APK:

$ cd tunet-flutter
$ make apk

即可在 tunet-flutter/build/app/outputs/flutter-apk/app-<架构>-release.apk 找到打包。

安装说明

从 Releases 即可找到最新版分发。

Arch Linux

有第三方打包的 AUR 和 archlinuxcn 源可以安装。

tunet-rust's People

Contributors

berrysoft avatar dependabot-preview[bot] avatar dependabot[bot] avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

tunet-rust's Issues

密码文件 `cred.json` 权限过于宽松

版本:0.9.0

密码明文储存到 cred.json 文件,但创建该文件时似乎没有特别处理文件权限,使用默认权限 -rw-rw-r--

建议在创建文件时将权限设置为 -rw-------,阻止同 group 用户和其他用户读取该文件。算是给明文储存密码稍稍添加些安全保护。

如何在rockylinux9系统上使用

提供的linux安装包只有ubuntu的,但是我的系统是rockylinux9(redhat系,是centos的继任者)。尝试了用alien把tunet.jammy.x86_64.deb转化为rpm包,但是rpm安装时会提示缺少libm.so.6(GLIBC_2.35),而系统自带的glibc是2.34。尝试手动编译了glibc-2.35并添加了LD_LIBRARY_PATH环境变量,但安装时就会报错Segmentation fault (core dumped)。tunet.focal.x86_64.deb转化的包同样会缺少依赖。所以在考虑从源码编译,请问该如何编译?或者有没有其它方法可以解决?谢谢!

无法保存密码,每次都需要重新输入密码

运行环境:Ubuntu20.04
版本:0.8.1

使用工具:tunet 命令行版本

问题描述:第一次使用 tunet login 后提示输入用户名和密码,输入后成功登陆。再次使用 tunet login 时不需要输入用户名,但提示输入密码。但按照 README 文档 tunet 应该是能够储存密码到本地的。

补充:使用 systemctl enable tunet@my_account_name 后使用 systemctl status tunet@my_account_name 查看状态,显示

JSON 解析错误:EOF while parsing a value at line 1 column 0

似乎程序没能成功储存密码。

第一次登陆成功,后面再登陆提示密码错误?

system os: debian 10 x64
kernel: linux 4.9
repeatable: yes
问题:第一次登录时,提示输入密码,一切正常,输入后登陆成功;然后下线后,后面再次登陆,就提示密码不对,但是密码就是第一次登陆时保存的啊。请作者帮忙看一下,谢谢。

创建安装包

用 Slint 重写了 GUI,现在是 100% 的 Rust 项目,不能再借助 CMake 打包了。

  • Windows MSI 安装包:cargo-wix
  • Debian 安装包:cargo-deb;如果提供安装包就不要 ring 了,可以直接 openssl。
  • macOS app 包:不想用 xcode,可以手写一个。

重启后丢失记录的密码

运行环境:Ubuntu20.04
版本:0.8.1

使用工具:tunet 命令行版本

问题复现:
登录 Ubuntu20 系统,在控制台中使用 tunet login 正常登录,然后启用服务 sudo systemctl enable tunett@jcav,经过测试服务能够正常读取保存的密码自动登录校园网。
但重启系统后,测试发现无法自动登录校园网,使用 systemctl status tunet@jcav 查看日志输出如下:

Screenshot from 2023-07-02 01-44-01

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.