1drv.us

beginning

项目开端可能是搞oneIndex, 这种可控的个人云盘还能做web使用, 实在是太难得的福利.

自己很喜欢win7的精致, 还会常常痛心后续版本 家庭组 功能的移除. 所以对家庭组分享的步骤有些熟练. 也会偶然看到OneDrive的分享功能, 其实讲道理这个链接国内既生成不了, 也打不开. 真是让人血压升高.

还是不知道什么时候看到了 1drv.ws , 说实话这个项目已经有 aploium 大佬在做了, 而且大佬还开源了(github.com/aploium/OneDrive-Direct-Link ), 而且我还不会搞. 所以我也只是fork了一下 修改成 heroku能运行的. 当时看到的时候, 我就立马去看了下 .ws 的域名价格, 续费 20多刀, 我就心里嘀咕. 这域名不便宜, 大佬乐意续吗? 大佬可能是为了与 .ms 的对应, 注册了 .ws. 而我没那个追求, 多快好省才是第一要义. 于是注册了 1drv.us.

人生如戏

本来还想着, 如果大佬的服务不能用了, 好歹我的还能用. 没想到我给域名做的健康监测服务: freshping ! 把我的免费heroku 运行时给ping光了... 这TM就尴尬了, 巨TM尴尬. 自己玩了两天炉石战棋之后, 脑子好像开窍了, 写起代码也如有神助了. 于是就想自己用 go 重写一遍. 搜了搜github 还真有人用go 写了. 自己就观摩一下, 边看边学.

一边是别人的代码( github.com/mrasong/onedrive ), 一边是 go doc网站. 对着别人的代码一通乱改, 看输出. 然后就奇怪. 明明第一次跳转地址都获取到了, 怎么最后跳转就不对呢? 然后自己又现学HTTP 头. 然后Location 什么的. 然后没弄成. 嘿嘿嘿, 人太菜了. Python里的 不跟随跳转 设置起来很容易, 添个 allow_redirects=False 完事. go里面费劲诶, 修改 Client 参数, 生成用Client请求, 然后自己还用 Rested 看看实际的网络跳转流程. 以为是二次跳转? 不! 是三次, 不过第二次跳转 就已经得到了 最终地址, 结果写在HTTP头 Location 和 网页内容里. 不过请求方法不能是HEAD , 需要是GET .

搞懂了这个, 修改别人的代码就简单了, 打开IDE, 打开Terminal, 重置文件, 把 Head 换成 Get, 完成! 运行一下, 完美! 提交到自己的 fork分支, 推送合并请求. 然后等回复, 被拒绝了...

哈哈, 呵呵... 别人说我是要获得下载地址 不是获得文件 .

??? 行吧, 改完别人的, 做自己的. 靠别人的是公主, 靠你叽哇是日本人, 靠北拉是台湾人, 靠恁娘是河南人! 靠自己才是打工人! 然后根据之前写的 doh页面代理 加了额外的handler, 因为不喜欢第三方库, 更何况这么一个小小的工具. 就琢磨了一下正则的使用. 前面研究别人的代码还学了一下 go 的 json 库, 这个没用上. 为了简洁嘛.

戏如人生

我不会写页面, 一直都不会. 这玩意也太复杂了. 复杂的要死. 然后看到了 tailwind css. 然后搜索了 github, 确实是热门库. 这个好啊, 跟之前 Element UI的设定类似, 但是通用 div, 然后自己就看官方例子, 写进去发现格式不对. 然后就页面复制整个元素. 这下对了. 虽然很多官方文档的自定义颜色我没有, 就换成别的. 当时还心里吐槽, 这 tailwind css 太倾向 vue了, 这文档完全就是 vue写的嘛. 文档访问也不慢, 但我还是搜了搜这文档有没有开源. 嗯? 开源了? 还是基于React 的NEXT 写的... 那 那段复制到vue 里直接运行, react里需要无限改 成对标注结束格式的代码是怎么回事? 嗯? mdx.js 直出的... 我...

我纠结要不要按照官方参照, 用 NEXT开发, 体验之后, 还是放弃了...

然后用NUXT 弄了出来, 格式稀烂, 但好歹能用...

部署

然后就是部署了, 因为是需要用到后端, 而且是后端监测路由, 所以很多 Jamstack 静态托管的平台就不行了. 刚好这个月 heroku的运行时还用完了. 就寻找新的托管平台.


基于Function的:

Azure Function Service: Free Plan 能自定义域名了. 但符合Azure监听规则的Go挺难改, 难用, 难堪大用.

AWS Lambda: 自己的规范, 而且是ctx输出, 可能会有路由问题. 讲道理Netlify出的教程都比aws的教程好, 页面也太丑了, 它不更新吗 ?

Netlify: AWS Lambda规范, 监听/api

Vercel: 语言标准规范, 监听/api , 了解的有点晚了, 我部署都成了...


基于Docker 的:

Azure Web Service: Free Plan 不能自定义域名.

Google App Engine: 虽然go是官方支持, 但是google 有什么 热重载的设定. 设定自己的Dockerfile 部署后, 再推送代码更新竟然一直失败... 而不能关闭实例... 我TM最后只能关闭google项目

okteto: Devoloper Plan 不支持自定义域名, 有自己的规范, 支持k8s规范 Helm规范, 用起来就是 很难用...

DIVIO: free-for.dev 新发现的平台, 无限信用卡即可使用, 虽然资源量很少.

Fly.io: 之前就注册过了, 好像是试用, 现在需要绑卡. 厉害的点在于可以付费设置全球节点. 虽然香港节点实际还是东京的地址...

Heroku: 不设定运行时自定义 Container的话, 是 Ubuntu的自定义修改镜像, 且 noroot 用户运行, 自己的Dockerfile 还是切成 noroot用户运行.


我很烦这种自己定规范, 又搞得不成样子的平台, 大大提升了使用难度, 没有他们的运行环境和ENV参数, 连Debug 都费劲.

我仍未知道如何把https 连接成功的传入内部镜像...

最后在DIVIO和Fly.io 各部署一份. 用Cloudflare CDN统一入口, 并用Cloudflare的App功能添加 Analyze代码块.

more+

学习了vue3 并比对两个vue框架差异后, 用vite重构了页面代码

重建了Docker镜像, 运行 builder 生成的二进制, 极大的缩减镜像体积, 并提升了对 alpine 的喜爱.

details

运行方式: Web端使用

接受参数同 aploium 代码的设定


1drv.us/u/s!Aiw77soXua44hb4CEu6eSveUl0xUoA

1drv.us/u/s!Aiw77soXua44hb4CEu6eSveUl0xUoA?txt


End

项目主页: 1drv.us

欢迎对项目提出意见和建议. Github: initdc