我的第一个 iOS App , OAuth 登录的 Cloudflare 管理客户端

6 月 15 日
 chenzhe
App 叫 Orange Cloud ,是 iPhone / iPad 上的一个 Cloudflare 第三方管理客户端。我自己有几个域名、一堆 Workers 和 R2 挂在 Cloudflare 上,平时想在手机上看一眼流量、改条 DNS 、翻翻 Workers 日志,要么得开电脑,要么去开官方的移动网页,都不太顺手。第三方 App 也试过几个,最劝退我的是登录方式:先去 Dashboard 手动建一个 API Token ,一项项勾权限,再把一长串粘进 App 。权限给多了不放心,给少了又不够用,想换还得从头来。

所以这个 App 我最先动手重做的,就是登录。

Cloudflare 官方其实是支持 OAuth 2.0 + PKCE 的,只是很少有第三方用。我把整个登录都搭在它上面:点一下登录,弹出官方授权页,想授哪些权限自己一项项勾,DNS 读写、Workers 、分析都能单独选;授权完 Token 只写进设备本地的钥匙串,不上传,也不过我的服务器。我这边的 Web 端只是个 OAuth 回调中转,连授权码都不留。不想用了,去 Cloudflare Dashboard 一键撤销。对我来说这是装上之后最安心的一点。

剩下的就是尽量把常用功能塞进去:域名和 DNS 的增删改查、代理开关;流量分析,请求、带宽、缓存命中、拦了多少威胁都在里面,用 Swift Charts 画;存储这块 R2 对象浏览、D1 的 SQL 控制台、KV 键值都能管;再加上 WAF 规则的查看启停和 Tunnel 状态。

我自己最常开的是 Workers 实时日志,基本就是把 wrangler tail 搬到了手机上。WebSocket 直连,日志一行行往下滚,还接进了灵动岛和锁屏实时活动。

有几个得提前说清楚的地方。它只支持 iOS 26 及以上,我知道这会挡掉不少人,但作为第一个 App ,我私心想把 iOS 26 的新东西用个痛快,Liquid Glass 、实时活动、App Intents 、控制中心控件全用上了,索性拿它当作把整套现代 SwiftUI 学一遍的项目,就没做向下兼容。另外它是第三方客户端,跟 Cloudflare 官方没有任何关系;我也不是专业 iOS 开发,边学边做,糙的地方肯定有。


它是开源的,AGPL-3.0 + Commons Clause 。如果你愿意自己编译,源码里留了个编译开关,打开之后所有 Pro 功能直接解锁,一分钱不用花;付费这档是留给懒得自己编译的人的。

App Store 正式版还在审核,TestFlight 现在能先玩:
https://testflight.apple.com/join/ZGhbsphj
官网: https://orange-cloud.chatiro.app
仓库: https://github.com/chen2he/orange-cloud

如果你也在用 Cloudflare ,欢迎装来试试;哪里别扭、哪里有 bug 、哪里你觉得还能更好,直接拍我,我都看。
3314 次点击
所在节点    分享创造
20 条回复
zhcnxyz
6 月 15 日
有颜值审美在线,功能齐全👍
Chentao1006
6 月 15 日
非常不错!值得推荐
ghellotim
6 月 15 日
支持 OP 。有同样需求,等正式上线。
reidme
6 月 15 日
支持,官方没有 app ,网页登录经常无限循环进不去。

Pro 定价多少?
chenzhe
6 月 15 日
@reidme
目前准备的定价
订阅月付 ¥18 $2.99
订阅年付 ¥128 $19.99
买断 ¥298 $49.99

收费的想法是我的开发者证书也是花钱买的,希望是能回本,而且 CF 的 API 变动其实还挺频繁的,我也希望能通过有一定收入来激励我自己更勤快的更新。
不过其实也开源了的,自己有证书的开发者是可以自行编译安装的。
chenzhe
6 月 15 日
@zhcnxyz
@Chentao1006
@ghellotim
@reidme

当前是 Beta 版本,有什么问题欢迎随时反馈,哪里用的不顺手也可以提。
ohhal
6 月 15 日
这个确实不错,就是这个名字是不是太长了,一般搜索搜不到吧
chenzhe
6 月 15 日
@ohhal 不懂取名字,而且 Orange Cloud 这个名字已经有 app 在使用了,实际上架的名字是 Orange-Cloud 。有一个中横线的。
tianjiyao
6 月 15 日
看着不错。支持 OP
Pters
6 月 15 日
开源不错,没能力的支持,有能力的自己编译
q000q000
6 月 15 日
UI 挺好看👍
millken
6 月 21 日
为什么不 vibe coding flutter 跨平台呢?
chenzhe
6 月 21 日
@millken 因为我总觉得跨平台的不如原生的好……
ghellotim
6 月 23 日
@chenzhe OP 定价有点高啊:-)。OP 另一个帖的码没赶上。
chenzhe
6 月 23 日
ghellotim
6 月 23 日
@chenzhe 感谢感谢!
btpuadom
6 月 24 日
tf 还有位置吗 两个帖子都没赶上 UI 设计是真有审美 哈哈
chenzhe
6 月 24 日
@btpuadom TF 满了,走早鸟支持一下吧🤣
83f420984
6 月 27 日
使用 oauth2 授权后,隔天就失效了,ios26.4 的系统,尝试过两次授权后都是隔天就自己失效了,这是 bug 吗?
chenzhe
6 月 27 日
@83f420984 是,还在修

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1220405

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX