From 6dccba9bb5100329209ad01732f9d63f4c4fb43b Mon Sep 17 00:00:00 2001 From: polwex Date: Sun, 22 Jun 2025 06:14:42 +0700 Subject: metamask login getting there --- web/router.hoon | 101 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 101 insertions(+) create mode 100644 web/router.hoon (limited to 'web/router.hoon') diff --git a/web/router.hoon b/web/router.hoon new file mode 100644 index 0000000..fdb6c43 --- /dev/null +++ b/web/router.hoon @@ -0,0 +1,101 @@ +/- sur=zodiac +/+ server, metamask, sr=sortug +/= login-page /web/index + +|_ [=bowl:gall eyre-id=@ta req=inbound-request:eyre state=versioned-state:sur] + +++ session-timeout ~d300 +++ session-cookie-string + |= [session=@uv extend=?] + ^- @t + %- crip + =; max-age=tape + :: "urbauth-{(scow %p src.bowl)}={(scow %uv session)}; Path=/; Max-Age={max-age}" + "ucm-{(scow %p src.bowl)}={(scow %uv session)}; Path=/; Max-Age={max-age}" + %+ scow:parsing:sr %ud + ?. extend 0 + (div (msec:milly session-timeout) 1.000) + +++ get-file-at + |= [base=path file=path ext=@ta] + ^- (unit octs) + =/ =path + :* (scot %p our.bowl) + q.byk.bowl + (scot %da now.bowl) + (snoc (weld base file) ext) + == + ?. .^(? %cu path) ~ + %- some + %- as-octs:mimes:html + .^(@ %cx path) + +++ handle-get-request + |= [headers=header-list:http request-line:server] + ^- simple-payload:http + ?~ ext $(ext `%html, site [%index ~]) + ?: ?=([%zodiac *] site) $(site +.site) + :: serve dynamic session.js + :: + ?: =([/session `%js] [site ext]) + %- js-response:gen:server + %- as-octt:mimes:html + """ + window.ship = '{(scow %p src.bowl)}'; + """ + =/ file=(unit octs) + (get-file-at /web site u.ext) + ?~ file ~& "file not found" not-found:gen:server + ?+ u.ext not-found:gen:server + %html (html-response:gen:server u.file) + %js (js-response:gen:server u.file) + %css (css-response:gen:server u.file) + %png (png-response:gen:server u.file) + %woff (woff-response:gen:server u.file) + %woff2 (woff2-response:gen:server u.file) + == + + +++ ebail + ^- (list card:agent:gall) + (send-response pbail) +++ egive + |= pl=simple-payload:http + ^- (list card:agent:gall) + (send-response pl) +++ pbail + %- html-response:gen:server + %- manx-to-octs:server + manx-bail +++ manx-bail ^- manx ;div:"404" +++ manx-payload + |= =manx + ^- simple-payload:http + %- html-response:gen:server + %- manx-to-octs:server manx + +++ send-response + |= =simple-payload:http + =/ cookie ['set-cookie' (session-cookie-string 0vublog .y)] + =. headers.response-header.simple-payload + [cookie headers.response-header.simple-payload] + %+ give-simple-payload:app:server eyre-id simple-payload + + +++ route + =/ metalib ~(. metamask [sessions.state bowl]) + =/ rl (parse-request-line:server url.request.req) + =/ sitepath=path /[(head site.rl)] + =/ pat=(pole knot) site.rl + ?+ pat ebail + [%zodiac %metamask rest=*] (serve-metamask-challenge:metalib eyre-id) + [%zodiac %auth rest=*] (process-metamask-auth:metalib eyre-id body.request.req) + [%zodiac ~] (send-response (manx-payload (login-page bowl))) + :: [site=@t *] (send-response (handle-get-request header-list.request.req rl)) + == + +++ eyre-binding-card +|= =path + ~& > adding-binding=[path dap.bowl] + [%pass /eyre/connect %arvo %e %connect [~ path] dap.bowl] +-- -- cgit v1.2.3