blob: f5fc388ce99f1eb0df648eb69e753fffd598b758 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
|
/- sur=zodiac
/+ server, metamask, sr=sortug
/= login-page /web/login
/= index-page /web/index
/= sigil-html /web/sigil/sigil
|_ [=bowl:gall eyre-id=@ta req=inbound-request:eyre state=versioned-state:sur]
+* metalib ~(. metamask [sessions.state bowl])
++ 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
++ validate-coki
=/ coki (get-header:http 'cookie' header-list.request.req)
?~ coki ~
(validate-coki:metalib u.coki)
++ login-ajax
=/ referer (get-header:http 'referer' header-list.request.req)
~& referer=referer
?~ referer .n
=/ parsed=(unit purl:eyre) (rush u.referer link:parsing:sr)
?~ parsed .n
=/ =path q.q.u.parsed
~& login-ajax=path
?= [%zodiac %login ~] path
++ route
=/ rl (parse-request-line:server url.request.req)
=/ sitepath=path /[(head site.rl)]
=/ pat=(pole knot) site.rl
?: ?=([%zodiac %login ~] pat) serve-login-page
?: login-ajax (serve-unauthed pat)
=/ muser validate-coki
?~ muser redirect-to-login
=. src.bowl u.muser
?+ pat ebail
[%zodiac %logout *] (logout:metalib eyre-id (need (get-header:http 'cookie' header-list.request.req)))
[%zodiac ~] serve-root
:: [site=@t *] (send-response (handle-get-request header-list.request.req rl))
==
++ serve-unauthed |= pat=(pole knot)
?+ pat ebail
[%zodiac %metamask rest=*] (serve-metamask-challenge:metalib eyre-id)
[%zodiac %auth rest=*] (process-metamask-auth:metalib eyre-id body.request.req)
[%zodiac %sigil point=@ ~] (serve-sigil point.pat)
==
++ redirect-to-login
(send-response (redirect:gen:server '/zodiac/login'))
++ serve-root
(send-response (manx-payload (index-page bowl)))
::
++ serve-login-page (send-response (manx-payload (login-page bowl)))
++ serve-sigil |= param=@t
=/ sip (slaw:parsing:sr %ud param)
?~ sip ebail
=/ sigil-div (sigil-html u.sip)
(send-response (manx-payload sigil-div))
++ eyre-binding-card
|= =path
~& > adding-binding=[path dap.bowl]
[%pass /eyre/connect %arvo %e %connect [~ path] dap.bowl]
--
|