BioforestChain / dweb_browser

BioforestChain Infrastructure
https://docs.dweb-browser.org
MIT License
13 stars 4 forks source link

【提案】 🎉 `dweb+protocol://tunnel.http.std.dweb` #61

Open Gaubee opened 11 months ago

Gaubee commented 11 months ago

负责提供 HTTP 网络隧道网络模块,可以将自己的网络暴露到公网中

  1. /registry?subDomain=*&publicKey=*&ttl=* 提供一个公钥,并用此注册一个域名,并且需要提供一个域名存活时间
    1. subDomain 只能是一个单词[a-zA-Z0-9],不可出现./-这类特殊字符,如果出现了预期之外的单词,那么服务器有权拒绝注册,或者会自动给出一个尽可能保留合法内容的词汇,比如说:abc@efg可能会变成abc0efg19
    2. ttl 意味着域名存活时间,意味假设服务器与注册者断开连接后,服务器会为注册者保留多少的。如果在付费服务器上,这项服务可能会根据存活时间来进行收费
    3. 如果有需要,带上受到支持的加密算法名称 &algorithm=*,取决于服务端支持的算法范围
    4. 如果有需要,带上受到授权签名 &auth=*,这是对某一段信息进行加密,加密者为 subDomain 的上级所有者,所以首先要服务端实现多级管理的功能
      1. 如果需要路由的负载均衡,那么 auth 中需要携带的信息是:{ toPublicKey:String, matchs:URLPattern }
      2. 如果需要域名的多级分发,那么 auth 中需要携带的信息是:{ toPublicKey:String, subDomain: String },其中 subDomain 可以是 a.b/*.b/**.b
    5. 200 返回注册成功后公有域名
    6. 401 认证错误,可能是域名所有权被占用
  2. ✨ 在 tunnel.dweb-browser.com.dweb 应用中,它还会读取本地 http 服务器的统一端口,并将这个端口转发到服务端
    1. [get]file://http.sys.dweb/gateway-port 读取当前 http 服务所监听到网关端口
    2. ✨ 应用需要提供一个“一键启动”的管理界面,第一次启动这个 jmm 应用后,需要用户同意才会启动这个隧道服务,这时应用需要用户输入它的用户名,或者唤醒 id-card.std.dweb 来获取