联通沃派校园网
前言
这两天抽了点时间用 Go
写了个沃派拨号工具,为什么要写这个工具?
为了解决联通沃派的以下痛点:
- 用工具拨号联网,不让电脑分享WiFi
- 我自己花钱开的账号,结果不让我分享,还得要手机单开一个客户端,我不能理解!再者说,有谁的电脑会一周甚至一个月不断电分享WiFi?不就是想着平时用用,省的手机还得去单独连,网卡的要死!!!
- 用网线上网时,如果不小心碰掉了网线,就会被迫下线,必须要重新拨号
- 想想看,你打着游戏不小心碰掉了,必须要切出游戏重新拨号,这得多浪费时间。。。。
实现的功能
- 简单的命令行程序,只需要传入账号密码参数即可实现拨号上网
- 绕过无法分享wifi,使用程序登陆后,可以直接分享热点给手机用,windows分享5G频段的教程网上有,这里就不赘述了
- 网线上网时,即使拔掉网线,亲测一两分钟内插上去会自动连接,不用重新拨号,不过wifi好像不行,应该不会有人连着wifi打游戏吧??
- 不易掉线,相比沃派拨号客户端来说,更稳定
遇到的坑
编译到路由器 mips
中运行,折腾了好久,这Windows编译的死活不行,最后只能掏出wsl
编译,这里遇到的问题知乎上有解
这里因为 MT7621 没有 fpu 也就是浮点处理器,所以指定使用软浮点,这样 go 会通过其他指令来模拟浮点运算,编译出来的程序里面不会包含浮点计算指令,否则调用不存在的 fpu 会出现 Illegal instruction
GOOS=linux GOARCH=mipsle GOMIPS=softfloat CGO_ENABLED=0 go build
早期版本的 go 需要借助第三方库才可以实现 mips 平台的交叉编译,但 1.11 版本的 go 已经内置了 mips 平台的支持,所以不需要第三方库
对 MT7621 无 FPU 的另外一个处理办法是在编译 openwrt 时打开内核的浮点模拟器,这样不需要指定 GOMIPS=softfloat 编译出来的程序也可以运行。不过我觉得既然都是模拟,在内核模拟跟在这里模拟也差不多,所以对无 FPU 的处理器,直接指定 GOMIPS=softfloat 即可
解决GO语言编译程序在openwrt(mipsle架构)上运行提示Illegal instruction问题
[golang binary not running on mips](https://stackoverflow.com/questions/55154143/golang-binary-not-running-on-mips)
效果图
Windows 端
另外编译了一个路由器版本,但即使开了 ssh
支持,也有很多不完善的地方,默认的ssh用户目录是只读的,本程序需要写配置文件,这就无法实现了,待刷 OP
之后测试一波,写在 /tmp
目录可能会重启丢失
但我的 cr6608
这个默认是带了 crontab
的,其实也可以做,只需要重启执行上线命令即可,定时发ping,即可一直保持登录
执行上线命令后
到时候刷了 OP
在测试,目前Windows是木有问题的!
写在最后
抵制不良软件,上网自由