使用移动宽带IPV6在公网暴露端口和服务
Loading…
小米路由器4A千兆版获取ssh权限
最近在干什么 最近被人问到怎么将自己电脑上的服务暴露到公网上,加上此前对内网穿透相关技术的了解。决定基于光猫的 IPV6 尝试一下。 经过尝试并结合网上的文章我发现小米路由器本身存在 IPV6 防火墙,所以这里主要介绍如何通过 ssh 登录路由器并关闭防火墙. 网上的文章有很多,但有些重点内容不注意就无法成功,所以这里做一个总结 有关使用移动宽带 IPV6 在公网暴露端口和服务看这里:传送门 获取 SSH 权限 其中的重点包括: 执行程序的电脑要通过网线连接到路由器不能使用 wifi 程序要在 Mac 或 Linux 环境下运行 要在 Windows 下运行需要借助 Docker 环境 程序运行第一次可能不成功,多试两次 我的路由器固件版本是 2.30.500 亲测这个版本成s功了 路由器重启后,已经开放的 ssh 端口会关闭,需要重新执行脚本 下载 OpenwrtInvasion 脚本,该脚本用于通过漏洞对官方固件开启 ssh Github地址:https://github.com/acecilia/OpenWRTInvasion 执行命令的两种方式 Windows: # 借助 Docker # 构建一个包含程序所需运行环境的镜像 docker build -t openwrtinvasion https://github.com/acecilia/OpenWRTInvasion.git # 使用这个镜像运行 docker run --network host -it openwrtinvasion Mac or Linux: # 需要 Python 环境 # 安装依赖 pip3 install -r requirements....
SQLite获取毫秒时间戳
先说结论 SQLite 获取毫秒级时间戳可以通过拼接的方式: -- 通过 SQLite 内置函数拼凑毫秒时间戳 SELECT (strftime('%s', 'now') * 1000 + substr(strftime('%f', 'now'),4,3)) AS milliseconds; -->结果:1709783374677 唠叨一下我在干什么 最近在开发中使用到了 SQLite 来讲数据保存到本地,并有条件的将数据同步到云端。所以我设计了表结果如下: 服务端表 CREATE TABLE `book` ( `id` int NOT NULL AUTO_INCREMENT, `local_id` bigint NOT NULL COMMENT '用户本地数据表id', `uid` int NOT NULL COMMENT '所属用户', other columns... PRIMARY KEY (`id`), UNIQUE KEY `user_local_data_idx` (`local_id`,`uid`) USING BTREE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; 客户端 SQLite 表 CREATE TABLE book ( id TIMESTAMP PRIMARY KEY, other columns....
小程序wx.navigateTo中的闭包
序 最近的开发任务中处理了这样一个情况: 打开小程序是从onLoad判断是否携带参数 判断用户是否登录 如果没有登录需要跳转登录并跳转回来 回来后继续使用(1)中携带的参数处理问题 听起来没有什么难点,我们只需要设置app.globleData就可以很轻松的完成需求。但是我思考问题的点在于登录环节:如果每次有类似的需求都要去改动登录页的代码,那会让登录页面的if条件越来越多,代码可读性也会持续下降。 于是我开始查找对登录页面修改最少的解决方案: 使用wx.router来完成需求,但是我不是专业写前端的,而是被拉来救急的,让我去看文档写代码是在太慢了。而且如果整个小程序都改用wx.router,这其中的修改成本也太高了。 使用app.globleData前面说了,也不太可取 最终我发现了wx.navigateTo中的success可以处理我的问题。 所以在这里将我的思路写下来做记录,也提供给有同样需求的人参考。 还是要用到app.globleData 是的,我的方式中还是要对app.globleData进行设置,但是约定了统一的格式,无论在哪个页面。 var pages = getCurrentPages() var curPage = pages[pages.length-1] app.globleData.navigateInfo = { url:"/"+curPage.route, success: function (e) { var page = getCurrentPages().pop() if (page == undefined || page == null) return; page.selectComponent("#coupon").runCoupon(); } } 在登录页面只需要判断app.globleData.navigateInfo这一个参数,并在完成登录操作后直接将navigateInfo对象交给wx.navigateTo方法执行就跳回了原来的页面。 这里面神奇的点在于可以直接执行组件中的某个方法
免费泛域名SSL证书
使用acme.sh配置泛域名证书 安装acme.sh 安装 curl https://get.acme.sh | sh -s email=youEmail@email.com 生成泛域名证书: 执行命令 acme.sh --issue --dns -d *.youDomin.com \ --yes-I-know-dns-manual-mode-enough-go-ahead-please 这时候会输出生成如下内容 Using CA: https://acme.zerossl.com/v2/DV90 Single domain='*.youDomin.com' Getting domain auth token for each domain Getting webroot for domain='*.youDomin.com' Add the following TXT record: Domain: '_acme-challenge.youDomin.com' TXT value: 'fdlkajflajfkdlJFKLDSAJFLKJDSLKJF' Please be aware that you prepend _acme-challenge. before your domain so the resulting subdomain will be: _acme-challenge.youDomin.com Please add the TXT records to the domains, and re-run with --renew....