diff --git a/bin/solid.pill b/bin/solid.pill index eeaff67cb..b2ef22b3e 100644 --- a/bin/solid.pill +++ b/bin/solid.pill @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f90ed0c7ec18af3b3dad4e192dce2a43af97d5ed7070f57b1a535ef2d417aa33 -size 7954772 +oid sha256:0fc692ddfe9a7d869e8742e8cffa6f180c676e855d9e8ac185a372358125409f +size 8473572 diff --git a/nix/ops/solid/builder.sh b/nix/ops/solid/builder.sh index cb3a8122f..5d8cbc66f 100755 --- a/nix/ops/solid/builder.sh +++ b/nix/ops/solid/builder.sh @@ -15,6 +15,18 @@ cleanup () { trap cleanup EXIT +# update pill strategy to ensure correct staging +# +herb ./pier -p hood -d "+hood/mount /=home=" + +cp $ARVO/lib/pill.hoon ./pier/home/lib/ +chmod -R u+rw ./pier/home/lib/ + +herb ./pier -p hood -d "+hood/commit %home" +herb ./pier -p hood -d "+hood/unmount %home" + +# stage new desk for pill contents +# herb ./pier -p hood -d '+hood/merge %stage our %home' herb ./pier -p hood -d "+hood/mount /=stage=" @@ -23,6 +35,7 @@ cp -r $ARVO ./pier/stage chmod -R u+rw ./pier/stage herb ./pier -p hood -d "+hood/commit %stage" +herb ./pier -p hood -d "+hood/unmount %stage" herb ./pier -P solid.pill -d '+solid /=stage=/sys, =dub &' diff --git a/pkg/arvo/app/acme.hoon b/pkg/arvo/app/acme.hoon index 149d93419..185b36c14 100644 --- a/pkg/arvo/app/acme.hoon +++ b/pkg/arvo/app/acme.hoon @@ -147,10 +147,10 @@ :: +card: output effect payload :: +$ card - $% [%connect wire =binding:http-server app=term] + $% [%connect wire =binding:eyre app=term] [%http-response =http-event:http] [%poke wire dock poke] - [%request wire request:http outbound-config:http-client] + [%request wire request:http outbound-config:iris] [%rule wire %cert (unit [wain wain])] [%wait wire @da] == @@ -394,7 +394,7 @@ ++ request |= [wir=wire req=hiss] ^- card - [%request wir (hiss-to-request:html req) *outbound-config:http-client] + [%request wir (hiss-to-request:html req) *outbound-config:iris] :: +signed-request: JWS JSON POST :: ++ signed-request @@ -1131,7 +1131,7 @@ == -- ++ http-response - |= [=wire response=client-response:http-client] + |= [=wire response=client-response:iris] ^- (quip move _this) :: ignore progress reports :: @@ -1144,7 +1144,7 @@ ?: ?=(%cancel -.response) (retry:event t.wire) :: - =/ rep=httr (to-httr:http-client +.response) + =/ rep=httr (to-httr:iris +.response) :: add nonce to pool, if present :: =/ nonhed (skim q.rep |=((pair @t @t) ?=(%replay-nonce p))) @@ -1193,7 +1193,7 @@ :: Used to serve the domain validation challenge :: ++ poke-handle-http-request - |= =inbound-request:http-server + |= =inbound-request:eyre ^- (quip move _this) ~& [%handle-http +<] =/ url=(unit (pair pork:eyre quay:eyre)) @@ -1207,7 +1207,7 @@ ~| [%unknown-url url.request.inbound-request] !! :: :: XX these crashes should be restored - :: but %rver doesn't get an error notification from %gall + :: but %eyre doesn't get an error notification from %gall :: :: ?. ?=(^ reg.act) ~|(%no-account !!) :: ?. ?=(^ rod) ~|(%no-active-order !!) @@ -1315,7 +1315,7 @@ :: +bound: response to %connect binding request :: ++ bound - |= [=wire accepted=? =binding:http-server] + |= [=wire accepted=? =binding:eyre] ?: accepted [~ this] :: XX better error message diff --git a/pkg/arvo/app/chat.hoon b/pkg/arvo/app/chat.hoon index b9ef8eaf9..4d6c6506f 100644 --- a/pkg/arvo/app/chat.hoon +++ b/pkg/arvo/app/chat.hoon @@ -477,7 +477,7 @@ :: +bound: lient tells us we successfully bound our server to the ~chat url :: ++ bound - |= [wir=wire success=? binding=binding:http-server] + |= [wir=wire success=? binding=binding:eyre] ^- (quip move _this) [~ this] :: @@ -485,7 +485,7 @@ :: ++ poke-handle-http-request %- (require-authorization:app ost.bol move this) - |= =inbound-request:http-server + |= =inbound-request:eyre ^- (quip move _this) :: =+ request-line=(parse-request-line url.request.inbound-request) diff --git a/pkg/arvo/app/clock.hoon b/pkg/arvo/app/clock.hoon index 97e726d24..19dd58483 100644 --- a/pkg/arvo/app/clock.hoon +++ b/pkg/arvo/app/clock.hoon @@ -21,7 +21,7 @@ +$ card $% [%poke wire dock poke] [%http-response =http-event:http] - [%connect wire binding:http-server term] + [%connect wire binding:eyre term] [%diff %json json] == :: @@ -32,7 +32,7 @@ ++ this . :: ++ bound - |= [wir=wire success=? binding=binding:http-server] + |= [wir=wire success=? binding=binding:eyre] ^- (quip move _this) [~ this] :: @@ -60,7 +60,7 @@ :: ++ poke-handle-http-request %- (require-authorization:app ost.bol move this) - |= =inbound-request:http-server + |= =inbound-request:eyre ^- (quip move _this) =/ request-line (parse-request-line url.request.inbound-request) =/ back-path (flop site.request-line) diff --git a/pkg/arvo/app/dns-bind.hoon b/pkg/arvo/app/dns-bind.hoon index 96136ba4d..3388c0c07 100644 --- a/pkg/arvo/app/dns-bind.hoon +++ b/pkg/arvo/app/dns-bind.hoon @@ -15,7 +15,7 @@ +$ in-poke-data $% [%dns-authority =authority] [%dns-bind =ship =target] - [%handle-http-request =inbound-request:http-server] + [%handle-http-request =inbound-request:eyre] == +$ out-poke-data $% [%dns-bind =ship =target] @@ -62,7 +62,7 @@ ^- @t :: XX can't scry in +mule :: - :: =/ =hart:eyre .^(hart:eyre %r /(scot %p our)/host/real) + :: =/ =hart:eyre .^(hart:eyre %e /(scot %p our)/host/real) (crip (en-purl:html [hart [~ path] ~])) :: :: XX can't scry in +mule @@ -821,7 +821,7 @@ :: ;< ~ bind:m (send-request:stdio (retrieve-access-token:(oauth2-core bowl scry.pro.aut.nam) code)) - ;< rep=(unit client-response:http-client) bind:m + ;< rep=(unit client-response:iris) bind:m take-maybe-response:stdio :: XX retry :: diff --git a/pkg/arvo/app/dojo.hoon b/pkg/arvo/app/dojo.hoon index b63451d23..0a6b07941 100644 --- a/pkg/arvo/app/dojo.hoon +++ b/pkg/arvo/app/dojo.hoon @@ -106,7 +106,7 @@ ++ card :: general card $% {$diff $sole-effect sole-effect} :: {$send wire {ship term} clap} :: - [%request wire request:http outbound-config:http-client] :: %l + [%request wire request:http outbound-config:iris] :: %l [%build wire ? schematic:ford] [%kill wire ~] {$deal wire sock term club} :: @@ -363,7 +363,7 @@ |= [way=wire =request:http] ^+ +>+> ?> ?=(~ pux) - (he-card(poy `+>+<(pux `way)) %request way request *outbound-config:http-client) + (he-card(poy `+>+<(pux `way)) %request way request *outbound-config:iris) :: ++ dy-stop :: stop work ^+ +> @@ -951,7 +951,7 @@ :: +he-http-response: result from http-client :: ++ he-http-response - |= [way=wire response=client-response:http-client] + |= [way=wire response=client-response:iris] ^+ +> ?> ?=(^ poy) =< he-pine @@ -960,7 +960,7 @@ +> :: ~! response - %. [%httr !>((to-httr:http-client response-header.response full-file.response))] + %. [%httr !>((to-httr:iris response-header.response full-file.response))] =+ dye=~(. dy u.poy(pux ~)) ?+ way !! {$hand ~} dy-hand:dye diff --git a/pkg/arvo/app/fora.hoon b/pkg/arvo/app/fora.hoon index 626fd4ed2..0089aa5c5 100644 --- a/pkg/arvo/app/fora.hoon +++ b/pkg/arvo/app/fora.hoon @@ -37,7 +37,7 @@ ^- move [ost.bol %poke / [our.bol %hall] %hall-action a] :: -++ ra-base-hart .^(hart:eyre %r /(scot %p our.bol)/host/(scot %da now.bol)) +++ ra-base-hart .^(hart:eyre %e /(scot %p our.bol)/host/(scot %da now.bol)) :: ++ poke-fora-post |= {pax/path sup/spur hed/@t txt/@t} diff --git a/pkg/arvo/app/launch.hoon b/pkg/arvo/app/launch.hoon index 442bc5e30..026dcf2d9 100644 --- a/pkg/arvo/app/launch.hoon +++ b/pkg/arvo/app/launch.hoon @@ -27,7 +27,7 @@ :: +$ card $% [%http-response =http-event:http] - [%connect wire binding:http-server term] + [%connect wire binding:eyre term] [%peer wire dock path] [%diff %json json] == @@ -53,7 +53,7 @@ [~ this(sta u.old)] :: ++ bound - |= [wir=wire success=? binding=binding:http-server] + |= [wir=wire success=? binding=binding:eyre] ^- (quip move _this) [~ this] :: @@ -110,7 +110,7 @@ :: ++ poke-handle-http-request %- (require-authorization:app ost.bol move this) - |= =inbound-request:http-server + |= =inbound-request:eyre ^- (quip move _this) :: =+ request-line=(parse-request-line url.request.inbound-request) diff --git a/pkg/arvo/app/lens.hoon b/pkg/arvo/app/lens.hoon index 10d22d8c0..ef3347683 100644 --- a/pkg/arvo/app/lens.hoon +++ b/pkg/arvo/app/lens.hoon @@ -10,7 +10,7 @@ :: +card: output effect payload :: +$ card - $% [%connect wire binding:http-server term] + $% [%connect wire binding:eyre term] [%http-response =http-event:http] [%peel wire dock mark path] [%poke wire dock poke] @@ -41,13 +41,13 @@ :: alerts us that we were bound. we need this because the vane calls back. :: ++ bound - |= [wir=wire success=? binding=binding:http-server] + |= [wir=wire success=? binding=binding:eyre] ^- (quip move _this) [~ this] :: ++ poke-handle-http-request %- (require-authorization:app ost.bow move this) - |= =inbound-request:http-server + |= =inbound-request:eyre ^- (quip move _this) ?^ job.state :_ this @@ -101,7 +101,7 @@ :: +poke-handle-http-cancel: received when a connection was killed :: ++ poke-handle-http-cancel - |= =inbound-request:http-server + |= =inbound-request:eyre ^- (quip move _this) :: the only long lived connections we keep state about are the stream ones. :: diff --git a/pkg/arvo/app/modulo.hoon b/pkg/arvo/app/modulo.hoon index a163e48c1..a05a16756 100644 --- a/pkg/arvo/app/modulo.hoon +++ b/pkg/arvo/app/modulo.hoon @@ -6,8 +6,8 @@ :: +card: output effect payload :: +$ card - $% [%connect wire binding:http-server term] - [%disconnect wire binding:http-server] + $% [%connect wire binding:eyre term] + [%disconnect wire binding:eyre] [%http-response =http-event:http] == :: @@ -28,7 +28,7 @@ :: alerts us that we were bound. we need this because the vane calls back. :: ++ bound - |= [wir=wire success=? binding=binding:http-server] + |= [wir=wire success=? binding=binding:eyre] ^- (quip move _this) [~ this] :: @@ -44,7 +44,7 @@ :: ++ poke-handle-http-request %- (require-authorization:app ost.bow move this) - |= =inbound-request:http-server + |= =inbound-request:eyre ^- (quip move _this) [[ost.bow %http-response (js-response:app session-js)]~ this] :: diff --git a/pkg/arvo/app/server.hoon b/pkg/arvo/app/server.hoon index 644e536d7..8ea7f90c6 100644 --- a/pkg/arvo/app/server.hoon +++ b/pkg/arvo/app/server.hoon @@ -92,8 +92,8 @@ :: ++ require-authorization |* [=bone move=mold this=*] - |= handler=$-(inbound-request:http-server (quip move _this)) - |= =inbound-request:http-server + |= handler=$-(inbound-request:eyre (quip move _this)) + |= =inbound-request:eyre ^- (quip move _this) :: ?: authenticated.inbound-request @@ -128,7 +128,7 @@ :: alerts us that we were bound. we need this because the vane calls back. :: ++ bound - |= [wir=wire success=? binding=binding:http-server] + |= [wir=wire success=? binding=binding:eyre] ~& [%bound success] [~ this] :: @@ -160,7 +160,7 @@ :: ++ poke-handle-http-request %- (require-authorization ost.bow move this) - |= =inbound-request:http-server + |= =inbound-request:eyre ^- (quip move _this) :: =+ request-line=(parse-request-line url.request.inbound-request) @@ -190,7 +190,7 @@ :: +poke-handle-http-cancel: received when a connection was killed :: ++ poke-handle-http-cancel - |= =inbound-request:http-server + |= =inbound-request:eyre ^- (quip move _this) :: the only long lived connections we keep state about are the stream ones. :: diff --git a/pkg/arvo/app/timer.hoon b/pkg/arvo/app/timer.hoon index 9c792a4f6..633c6ad44 100644 --- a/pkg/arvo/app/timer.hoon +++ b/pkg/arvo/app/timer.hoon @@ -24,7 +24,7 @@ +$ card $% [%poke wire dock poke] [%http-response =http-event:http] - [%connect wire binding:http-server term] + [%connect wire binding:eyre term] [%diff %json json] [%wait wire @da] [%rest wire @da] @@ -37,7 +37,7 @@ ++ this . :: ++ bound - |= [wir=wire success=? binding=binding:http-server] + |= [wir=wire success=? binding=binding:eyre] ^- (quip move _this) [~ this] :: @@ -87,7 +87,7 @@ :: ++ poke-handle-http-request %- (require-authorization:app ost.bol move this) - |= =inbound-request:http-server + |= =inbound-request:eyre ^- (quip move _this) =/ request-line (parse-request-line url.request.inbound-request) =/ back-path (flop site.request-line) diff --git a/pkg/arvo/app/weather.hoon b/pkg/arvo/app/weather.hoon index 39a8ce8a9..5eb05d28f 100644 --- a/pkg/arvo/app/weather.hoon +++ b/pkg/arvo/app/weather.hoon @@ -21,8 +21,8 @@ $% [%poke wire dock poke] [%http-response =http-event:http] [%diff %json json] - [%connect wire binding:http-server term] - [%request wire request:http outbound-config:http-client] + [%connect wire binding:eyre term] + [%request wire request:http outbound-config:iris] [%wait wire @da] == +$ poke @@ -38,7 +38,7 @@ ++ this . :: ++ bound - |= [wir=wire success=? binding=binding:http-server] + |= [wir=wire success=? binding=binding:eyre] ^- (quip move _this) [~ this] :: @@ -69,7 +69,7 @@ [~ this] =/ str/@t +.jon =/ req/request:http (request-darksky str) - =/ out *outbound-config:http-client + =/ out *outbound-config:iris ?~ timer :- %+ weld `(list move)`[ost.bol %wait /timer (add now.bol ~d1)]~ @@ -101,12 +101,12 @@ [bone %diff %json jon] :: ++ http-response - |= [=wire response=client-response:http-client] + |= [=wire response=client-response:iris] ^- (quip move _this) :: ignore all but %finished ?. ?=(%finished -.response) [~ this] - =/ data/(unit mime-data:http-client) full-file.response + =/ data/(unit mime-data:iris) full-file.response ?~ data :: data is null [~ this] @@ -126,7 +126,7 @@ :: ++ poke-handle-http-request %- (require-authorization:app ost.bol move this) - |= =inbound-request:http-server + |= =inbound-request:eyre ^- (quip move _this) =+ request-line=(parse-request-line url.request.inbound-request) =+ back-path=(flop site.request-line) @@ -152,7 +152,7 @@ ^- (quip move _this) =/ req/request:http (request-darksky location) =/ lismov/(list move) - `(list move)`[ost.bol %request /[(scot %da now.bol)] req *outbound-config:http-client]~ + `(list move)`[ost.bol %request /[(scot %da now.bol)] req *outbound-config:iris]~ ?~ timer :- (weld lismov `(list move)`[ost.bol %wait /timer (add now.bol ~h3)]~) this(timer `(add now.bol ~h3)) diff --git a/pkg/arvo/app/write.hoon b/pkg/arvo/app/write.hoon index a561e5dcf..566ab6f4e 100644 --- a/pkg/arvo/app/write.hoon +++ b/pkg/arvo/app/write.hoon @@ -47,9 +47,9 @@ [%diff diff] [%build wire ? schematic:ford] [%kill wire ~] - [%connect wire binding:http-server term] + [%connect wire binding:eyre term] [%http-response http-event:http] - [%disconnect binding:http-server] + [%disconnect binding:eyre] == :: +$ poke @@ -1237,7 +1237,7 @@ == :: ++ bound - |= [wir=wire success=? binding=binding:http-server] + |= [wir=wire success=? binding=binding:eyre] ^- (quip move _this) [~ this] :: @@ -1245,7 +1245,7 @@ :: ++ poke-handle-http-request %- (require-authorization:app ost.bol move this) - |= =inbound-request:http-server + |= =inbound-request:eyre ^- (quip move _this) :: =/ request-line (parse-request-line url.request.inbound-request) @@ -1431,7 +1431,7 @@ :: +poke-handle-http-cancel: received when a connection was killed :: ++ poke-handle-http-cancel - |= =inbound-request:http-server + |= =inbound-request:eyre ^- (quip move _this) [~ this] :: diff --git a/pkg/arvo/gen/dns-bind/authority.hoon b/pkg/arvo/gen/dns-bind/authority.hoon index 8a8eb9481..9b6be4427 100644 --- a/pkg/arvo/gen/dns-bind/authority.hoon +++ b/pkg/arvo/gen/dns-bind/authority.hoon @@ -13,7 +13,7 @@ =* our p.bec :: XX must be evaluated outside tapp core due to +mule :: -=/ =hart:eyre .^(hart:eyre %r /(scot %p our)/host/real) +=/ =hart:eyre .^(hart:eyre %e /(scot %p our)/host/real) :: XX terrible =/ domain /com/googleapis =/ code diff --git a/pkg/arvo/lib/chat.hoon b/pkg/arvo/lib/chat.hoon index 9797101b0..18e54dec9 100644 --- a/pkg/arvo/lib/chat.hoon +++ b/pkg/arvo/lib/chat.hoon @@ -6,7 +6,7 @@ :: +$ card $% [%http-response =http-event:http] - [%connect wire binding:http-server term] + [%connect wire binding:eyre term] [%peer wire dock path] [%quit ~] [%poke wire dock poke] diff --git a/pkg/arvo/lib/hood/helm.hoon b/pkg/arvo/lib/hood/helm.hoon index 3dd4dbe36..f3a8595c4 100644 --- a/pkg/arvo/lib/hood/helm.hoon +++ b/pkg/arvo/lib/hood/helm.hoon @@ -42,7 +42,7 @@ {$flog wire flog:dill} :: [%mint wire p=ship q=safe:rights:jael] {$nuke wire ship} :: - [%serve wire binding:http-server generator:http-server] + [%serve wire binding:eyre generator:eyre] {$poke wire dock pear} :: {$rest wire @da} :: {$wait wire @da} :: @@ -218,11 +218,11 @@ (emit %flog ~ %text "woot: {<[way cop]>}") :: ++ poke-serve - |= [=binding:http-server =generator:http-server] =< abet + |= [=binding:eyre =generator:eyre] =< abet (emit %serve /helm/serv binding generator) :: ++ take-bound - |= [wir=wire success=? binding=binding:http-server] =< abet + |= [wir=wire success=? binding=binding:eyre] =< abet (emit %flog ~ %text "bound: {}") :: ++ poke-tlon-init-stream diff --git a/pkg/arvo/lib/hood/kiln.hoon b/pkg/arvo/lib/hood/kiln.hoon index ccba2b672..4d0471a31 100644 --- a/pkg/arvo/lib/hood/kiln.hoon +++ b/pkg/arvo/lib/hood/kiln.hoon @@ -196,7 +196,7 @@ ++ emit |=(a/card +>(..autoload (^emit a))) ++ tracked-vanes ^- (list @tas) - ~[%ames %behn %clay %dill %ford %gall %jael %lient %rver] + ~[%ames %behn %clay %dill %eyre %ford %gall %iris %jael] :: ++ our-home /(scot %p our)/home/(scot %da now) ++ sys-hash |=(pax/path .^(@uvI %cz :(welp our-home /sys pax))) diff --git a/pkg/arvo/lib/pill.hoon b/pkg/arvo/lib/pill.hoon index 1a0f6ef4d..f7018bd66 100644 --- a/pkg/arvo/lib/pill.hoon +++ b/pkg/arvo/lib/pill.hoon @@ -14,19 +14,6 @@ :~ :: sys/zuse: standard library :: [%$ /zuse] - :: TODO: I really want these to be named http-client and http-server, - :: but this interacts badly with every piece of the system which - :: assumes that vane names are one letter, and that one letter is the - :: first letter of the file. This assumption is threaded through way - :: too many places in the entire system to modify it while doing - :: something else. - :: - :: sys/vane/lient: http client - :: - [%l /vane/lient] - :: sys/vane/rver: http server - :: - [%r /vane/rver] :: sys/vane/ames: network :: [%a /vane/ames] @@ -39,15 +26,18 @@ :: sys/vane/dill: console :: [%d /vane/dill] - :: sys/vane/eyre: web + :: sys/vane/eyre: http server :: - :: [%e /vane/eyre] + [%e /vane/eyre] :: sys/vane/ford: build :: [%f /vane/ford] :: sys/vane/gall: applications :: [%g /vane/gall] + :: sys/vane/iris: http client + :: + [%i /vane/iris] :: sys/vane/jael: security :: [%j /vane/jael] diff --git a/pkg/arvo/lib/server.hoon b/pkg/arvo/lib/server.hoon index 144aab32e..50758f581 100644 --- a/pkg/arvo/lib/server.hoon +++ b/pkg/arvo/lib/server.hoon @@ -1,4 +1,4 @@ -=, http-server +=, eyre |% :: :: +parse-request-line: take a cord and parse out a url @@ -25,8 +25,8 @@ :: ++ require-authorization |* [=bone move=mold this=*] - |= handler=$-(inbound-request:http-server (quip move _this)) - |= =inbound-request:http-server + |= handler=$-(inbound-request:eyre (quip move _this)) + |= =inbound-request:eyre ^- (quip move _this) :: ?: authenticated.inbound-request @@ -79,7 +79,7 @@ [%start [404 ~] ~ %.y] :: ++ login-redirect - |= =inbound-request:http-server + |= =inbound-request:eyre ^- http-event:http =/ redirect=cord %- crip diff --git a/pkg/arvo/lib/stdio.hoon b/pkg/arvo/lib/stdio.hoon index f01e3f65f..4164263be 100644 --- a/pkg/arvo/lib/stdio.hoon +++ b/pkg/arvo/lib/stdio.hoon @@ -69,7 +69,7 @@ =/ m (async ,~) ^- form:m =/ =card - [%request / request *outbound-config:http-client] + [%request / request *outbound-config:iris] ;< ~ bind:m (send-raw-card card) (set-raw-contract & %request ~) :: @@ -82,7 +82,7 @@ :: Wait until we get an HTTP response or cancelation :: ++ take-response-raw - =/ m (async (unit client-response:http-client)) + =/ m (async (unit client-response:iris)) ^- form:m |= =async-input :^ ~ ~ ~ @@ -108,9 +108,9 @@ :: Wait until we get an HTTP response or cancelation and unset contract :: ++ take-maybe-response - =/ m (async (unit client-response:http-client)) + =/ m (async (unit client-response:iris)) ^- form:m - ;< rep=(unit client-response:http-client) bind:m + ;< rep=(unit client-response:iris) bind:m take-response-raw ;< ~ bind:m (set-raw-contract | %request ~) (pure:m rep) @@ -118,9 +118,9 @@ :: Wait until we get an HTTP response and unset contract :: ++ take-response - =/ m (async (unit client-response:http-client)) + =/ m (async (unit client-response:iris)) ^- form:m - ;< rep=(unit client-response:http-client) bind:m + ;< rep=(unit client-response:iris) bind:m take-maybe-response ?^ rep (pure:m rep) @@ -132,7 +132,7 @@ ++ take-maybe-sigh =/ m (async (unit httr:eyre)) ^- form:m - ;< rep=(unit client-response:http-client) bind:m + ;< rep=(unit client-response:iris) bind:m take-maybe-response ?~ rep (pure:m ~) @@ -140,7 +140,7 @@ :: ?. ?=(%finished -.u.rep) (pure:m ~) - (pure:m (some (to-httr:http-client +.u.rep))) + (pure:m (some (to-httr:iris +.u.rep))) :: :: Wait until we get an HTTP response and unset contract :: @@ -198,7 +198,7 @@ :: Incoming HTTP requests :: ++ bind-route-raw - |= [=binding:http-server =term] + |= [=binding:eyre =term] =/ m (async ,~) ^- form:m (send-raw-card [%connect / binding term]) @@ -216,7 +216,7 @@ [%done success.sign] :: ++ bind-route - |= [=binding:http-server =term] + |= [=binding:eyre =term] =/ m (async ?) ^- form:m ;< ~ bind:m (bind-route-raw binding term) diff --git a/pkg/arvo/lib/tapp.hoon b/pkg/arvo/lib/tapp.hoon index 4548e2016..73cbdfa0d 100644 --- a/pkg/arvo/lib/tapp.hoon +++ b/pkg/arvo/lib/tapp.hoon @@ -380,7 +380,7 @@ :: Pass response to async :: ++ http-response - |= [=wire response=client-response:http-client] + |= [=wire response=client-response:iris] ^- (quip move _this-tapp) (take-async bowl `[wire %http-response response]) :: @@ -406,7 +406,7 @@ :: Receive route binding notification :: ++ bound - |= [=wire success=? =binding:http-server] + |= [=wire success=? =binding:eyre] ^- (quip move _this-tapp) (take-async bowl `[wire %bound success binding]) :: diff --git a/pkg/arvo/ren/rss-xml.hoon b/pkg/arvo/ren/rss-xml.hoon index 074ee25e9..e2c692ee2 100644 --- a/pkg/arvo/ren/rss-xml.hoon +++ b/pkg/arvo/ren/rss-xml.hoon @@ -14,7 +14,7 @@ :: Link from relative path =, eyre =, html -=+ hok=.^(hart %r /(scot %p our)/host/real) +=+ hok=.^(hart %e /(scot %p our)/host/real) =+ ref=|=(a/path (en-purl hok `(weld tub a) ~)) :: urb:front attrs confuse RSS validators, readers =+ no-meta=|=(a/marl ^+(a ?~(a ~ ?.(?=($meta n.g.i.a) a $(a t.a))))) diff --git a/pkg/arvo/sur/tapp.hoon b/pkg/arvo/sur/tapp.hoon index 7837f9305..532e5fe4d 100644 --- a/pkg/arvo/sur/tapp.hoon +++ b/pkg/arvo/sur/tapp.hoon @@ -10,9 +10,9 @@ [%peer wire dock path] [%pull wire dock ~] [%diff out-peer-data] - [%request wire request:http outbound-config:http-client] + [%request wire request:http outbound-config:iris] [%cancel-request wire ~] - [%connect wire binding:http-server term] + [%connect wire binding:eyre term] [%http-response =http-event:http] [%rule wire %turf %put turf] == @@ -24,8 +24,8 @@ [%coup =dock error=(unit tang)] [%quit =dock =path] [%reap =dock =path error=(unit tang)] - [%bound success=? =binding:http-server] - [%http-response response=client-response:http-client] + [%bound success=? =binding:eyre] + [%http-response response=client-response:iris] == :: :: Outstanding contracts diff --git a/pkg/arvo/sys/arvo.hoon b/pkg/arvo/sys/arvo.hoon index 16c3ea7fe..7f8e241d9 100644 --- a/pkg/arvo/sys/arvo.hoon +++ b/pkg/arvo/sys/arvo.hoon @@ -466,8 +466,8 @@ {@ $newt *} %a {@ $sync *} %c {@ $term *} %d - {@ $http-client *} %l - {@ $http-server *} %r + {@ $http-client *} %i + {@ $http-server *} %e {@ $behn *} %b == :: diff --git a/pkg/arvo/sys/vane/dill.hoon b/pkg/arvo/sys/vane/dill.hoon index 0bda7ff15..80472e7cd 100644 --- a/pkg/arvo/sys/vane/dill.hoon +++ b/pkg/arvo/sys/vane/dill.hoon @@ -16,11 +16,11 @@ $: a/(unit mass) :: b/(unit mass) :: c/(unit mass) :: + e/(unit mass) :: f/(unit mass) :: g/(unit mass) :: + i/(unit mass) :: j/(unit mass) :: - l/(unit mass) :: - r/(unit mass) :: == :: == :: ++ axon :: dill per duct @@ -63,6 +63,9 @@ == :: task:able:dill :: == :: + $: %e :: + $>(%wegh task:able:eyre) :: + == :: $: %f :: $>(%wegh task:able:ford) :: == :: @@ -73,18 +76,15 @@ == :: task:able:gall :: == :: + $: %i :: + $>(%wegh task:able:iris) :: + == :: $: %j :: $> $? %dawn :: %fake :: %wegh :: == :: task:able:jael :: - == :: - $: %l :: - $>(%wegh task:able:http-client) :: - == :: - $: %r :: - $>(%wegh task:able:http-server) :: == == :: ++ sign :: in result $<- $~ [%j %init *@p] :: @@ -111,6 +111,9 @@ $: %d :: $>(%blit gift:able:dill) :: == :: + $: %e :: + $>(%mass gift:able:eyre) :: + == :: $: %f :: $>(%mass gift:able:ford) :: == :: @@ -121,17 +124,14 @@ == :: gift:able:gall :: == :: + $: %i :: + $>(%mass gift:able:iris) :: + == :: $: %j :: $> $? %init :: %mass :: == :: gift:able:jael :: - == :: - $: %l :: - $>(%mass gift:able:http-client) :: - == :: - $: %r :: - $>(%mass gift:able:http-server) :: == == :: :::::::: :: dill tiles -- @@ -279,11 +279,11 @@ :* [hen %pass /heft/ames %a %wegh ~] [hen %pass /heft/behn %b %wegh ~] [hen %pass /heft/clay %c %wegh ~] + [hen %pass /heft/eyre %e %wegh ~] [hen %pass /heft/ford %f %wegh ~] [hen %pass /heft/gall %g %wegh ~] + [hen %pass /heft/iris %i %wegh ~] [hen %pass /heft/jael %j %wegh ~] - [hen %pass /heft/lient %l %wegh ~] - [hen %pass /heft/rver %r %wegh ~] moz == == @@ -385,7 +385,7 @@ |= sih/sign ^+ +> ?- sih - {?($a $b $c $f $g $j $l $r) $mass *} + {?($a $b $c $e $f $g $i $j) $mass *} (wegh -.sih p.sih) :: {$a $nice *} @@ -440,31 +440,31 @@ :: +wegh: receive a memory report from a vane and maybe emit full report :: ++ wegh - |= {lal/?($a $b $c $f $g $j $l $r) mas/mass} + |= [lal=?(%a %b %c %e %f %g %i %j) mas=mass] ^+ +> :: update our listing of vane responses with this new one :: =. hef.all ?- lal - $a ~?(?=(^ a.hef.all) %double-mass-a hef.all(a `mas)) - $b ~?(?=(^ b.hef.all) %double-mass-b hef.all(b `mas)) - $c ~?(?=(^ c.hef.all) %double-mass-c hef.all(c `mas)) - $f ~?(?=(^ f.hef.all) %double-mass-f hef.all(f `mas)) - $g ~?(?=(^ g.hef.all) %double-mass-g hef.all(g `mas)) - $j ~?(?=(^ j.hef.all) %double-mass-j hef.all(j `mas)) - $l ~?(?=(^ l.hef.all) %double-mass-l hef.all(l `mas)) - $r ~?(?=(^ r.hef.all) %double-mass-r hef.all(r `mas)) + %a ~?(?=(^ a.hef.all) %double-mass-a hef.all(a `mas)) + %b ~?(?=(^ b.hef.all) %double-mass-b hef.all(b `mas)) + %c ~?(?=(^ c.hef.all) %double-mass-c hef.all(c `mas)) + %e ~?(?=(^ e.hef.all) %double-mass-e hef.all(e `mas)) + %f ~?(?=(^ f.hef.all) %double-mass-f hef.all(f `mas)) + %g ~?(?=(^ g.hef.all) %double-mass-g hef.all(g `mas)) + %i ~?(?=(^ i.hef.all) %double-mass-i hef.all(i `mas)) + %j ~?(?=(^ j.hef.all) %double-mass-j hef.all(j `mas)) == :: if not all vanes have responded yet, no-op :: ?. ?& ?=(^ a.hef.all) ?=(^ b.hef.all) ?=(^ c.hef.all) + ?=(^ e.hef.all) ?=(^ f.hef.all) ?=(^ g.hef.all) + ?=(^ i.hef.all) ?=(^ j.hef.all) - ?=(^ l.hef.all) - ?=(^ r.hef.all) == +>.$ :: clear vane reports from our state before weighing ourself @@ -472,7 +472,7 @@ :: Otherwise, the state of vanes printed after this one get absorbed :: into Dill's %dot catchall report. :: - =/ ven=(list mass) ~[u.a u.b u.c u.g u.f u.j u.l u.r]:hef.all + =/ ven=(list mass) ~[u.a u.b u.c u.e u.f u.g u.i u.j]:hef.all => .(hef.all [~ ~ ~ ~ ~ ~ ~ ~]) :: wegh ourself now that our state doesn't include other masses :: diff --git a/pkg/arvo/sys/vane/rver.hoon b/pkg/arvo/sys/vane/eyre.hoon similarity index 99% rename from pkg/arvo/sys/vane/rver.hoon rename to pkg/arvo/sys/vane/eyre.hoon index fbc5f9c6a..c92ed4d44 100644 --- a/pkg/arvo/sys/vane/rver.hoon +++ b/pkg/arvo/sys/vane/eyre.hoon @@ -2,7 +2,7 @@ :: lighter than eyre :: |= pit=vase -=, http-server +=, eyre :: internal data structures :: => =~ @@ -1460,7 +1460,7 @@ ^- (list move) :_ moves :+ p.state.u.channel %give - ^- gift:able:http-server + ^- gift:able :* %response %continue :: ^= data @@ -1922,7 +1922,7 @@ %give %mass ^- mass - :+ %rver %| + :+ %eyre %| :~ bindings+&+bindings.server-state.ax auth+&+authentication-state.server-state.ax connections+&+connections.server-state.ax diff --git a/pkg/arvo/sys/vane/gall.hoon b/pkg/arvo/sys/vane/gall.hoon index 57456d4ca..cf31fc39d 100644 --- a/pkg/arvo/sys/vane/gall.hoon +++ b/pkg/arvo/sys/vane/gall.hoon @@ -616,7 +616,7 @@ :: $hiss `note-arvo`[%e %hiss +.q.q.cov] $send `note-arvo`[%g %deal [our p.q.q.cov] q.q.q.cov] $meta `note-arvo`[`@tas`p.q.q.cov %meta `vase`q.q.q.cov] -:: $response `note-arvo`[%l %response raw-http-response.q.q.cov] +:: $response `note-arvo`[%i %response raw-http-response.q.q.cov] == :: :: I'm sort of stumped on how to get a %give out of the above; it's @@ -1342,12 +1342,12 @@ %wind `%j %wipe `%f :: - %request `%l - %cancel-request `%l - %serve `%r - %connect `%r - %disconnect `%r - %rule `%r + %request `%i + %cancel-request `%i + %serve `%e + %connect `%e + %disconnect `%e + %rule `%e == -- -- diff --git a/pkg/arvo/sys/vane/lient.hoon b/pkg/arvo/sys/vane/iris.hoon similarity index 99% rename from pkg/arvo/sys/vane/lient.hoon rename to pkg/arvo/sys/vane/iris.hoon index 2e96cc4c8..aa6f4ddf6 100644 --- a/pkg/arvo/sys/vane/lient.hoon +++ b/pkg/arvo/sys/vane/iris.hoon @@ -2,7 +2,7 @@ :: http-client :: |= pit=vase -=, http-client +=, iris :: :: :: internal data structures @@ -146,7 +146,7 @@ ^- [(list move) ^state] :: ?~ cancel-id=(~(get by connection-by-duct.state) duct) - ~& %invalid-lient-cancel + ~& %iris-invalid-cancel [~ state] :: :- [outbound-duct.state %give %cancel-request u.cancel-id]~ @@ -365,7 +365,7 @@ %give %mass ^- mass - :+ %lient %| + :+ %iris %| :~ nex+&+next-id.state.ax outbound+&+outbound-duct.state.ax by-id+&+connection-by-id.state.ax diff --git a/pkg/arvo/sys/vane/jael.hoon b/pkg/arvo/sys/vane/jael.hoon index 6c610532d..b7cbd79c7 100644 --- a/pkg/arvo/sys/vane/jael.hoon +++ b/pkg/arvo/sys/vane/jael.hoon @@ -110,12 +110,12 @@ $: %a :: to %ames $>(%want task:able:ames) :: send message == :: + $: %i :: to %iris + $>(%request task:able:iris) :: http request + == :: $: %j :: to self $>(%look task) :: set ethereum source == :: - $: %l :: to %lient - $>(%request task:able:http-client) :: http request - == :: $: @tas :: $% $>(%init vane-task) :: report install $>(%sunk vane-task) :: report death @@ -126,7 +126,7 @@ $% [%b $>(%wake gift:able:behn)] :: wakeup [%j $>(%vent gift)] :: ethereum changes [%a $>(%woot gift:able:ames)] :: message result - [%l $>(%http-response gift:able:http-client)] :: http response + [%i $>(%http-response gift:able:iris)] :: http response == :: -- :: :: :::: @@ -758,7 +758,7 @@ ^- (list move) :~ [hen %pass /(scot %p our)/init %b %wait +(now)] [hen %give %init our] - [hen %slip %r %init our] + [hen %slip %e %init our] [hen %slip %d %init our] [hen %slip %g %init our] [hen %slip %c %init our] @@ -807,7 +807,7 @@ %+ weld moz ^- (list move) :~ [hen %give %init our] - [hen %slip %r %init our] + [hen %slip %e %init our] [hen %slip %d %init our] [hen %slip %g %init our] [hen %slip %c %init our] @@ -1001,7 +1001,7 @@ ::TODO fail:et +>.$ :: - [%l %http-response *] + [%i %http-response *] ?. ?=(%finished -.client-response.hin) +>.$ ~! hin @@ -1756,10 +1756,10 @@ |= [wir=wire jon=json] ^- move %+ wrap-note wir - :^ %l %request + :^ %i %request ?> ?=(%| -.source) (light-json-request node.p.source jon) - *outbound-config:http-client + *outbound-config:iris :: :: +| source-operations :: @@ -1983,11 +1983,11 @@ (complete-with-rpc-response cuz rep) :: ++ finished - |= [cuz=wire =response-header:http full-file=(unit mime-data:http-client)] + |= [cuz=wire =response-header:http full-file=(unit mime-data:iris)] ^+ +> ?: ?=(%& -.source) +> :: - =+ rep=(httr-to-rpc-response (to-httr:http-client response-header full-file)) + =+ rep=(httr-to-rpc-response (to-httr:iris response-header full-file)) (complete-with-rpc-response cuz rep) :: ++ complete-with-rpc-response diff --git a/pkg/arvo/sys/vane/kale.hoon b/pkg/arvo/sys/vane/kale.hoon index d5f365514..17712eb4c 100644 --- a/pkg/arvo/sys/vane/kale.hoon +++ b/pkg/arvo/sys/vane/kale.hoon @@ -270,7 +270,7 @@ :: ^- (list move) :~ [hen %give %init our] - [hen %slip %r %init our] + [hen %slip %e %init our] [hen %slip %d %init our] [hen %slip %g %init our] [hen %slip %c %init our] @@ -321,7 +321,7 @@ %+ weld moz ^- (list move) :~ [hen %give %init our] - [hen %slip %r %init our] + [hen %slip %e %init our] [hen %slip %d %init our] [hen %slip %g %init our] [hen %slip %c %init our] diff --git a/pkg/arvo/sys/zuse.hoon b/pkg/arvo/sys/zuse.hoon index 4e563f2ad..760fef8cb 100644 --- a/pkg/arvo/sys/zuse.hoon +++ b/pkg/arvo/sys/zuse.hoon @@ -864,16 +864,167 @@ == :: -- ::dill :: :::: -:::: ++eyre :: (1e) oldweb +:::: ++eyre :: (1e) http-server :: :::: ++ eyre ^? |% - ++ bale :: driver state - |* a/_* :: %jael keys type - $: {our/ship now/@da eny/@uvJ byk/beak} :: base info - {usr/user dom/(list @t)} :: req user, domain - key/a :: secrets from %jael - == :: + ++ able + |% + ++ gift + $% :: set-config: configures the external http server + :: + :: TODO: We need to actually return a (map (unit @t) http-config) + :: so we can apply configurations on a per-site basis + :: + [%set-config =http-config] + :: response: response to an event from earth + :: + [%response =http-event:http] + :: response to a %connect or %serve + :: + :: :accepted is whether :binding was valid. Duplicate bindings are + :: not allowed. + :: + [%bound accepted=? =binding] + :: memory usage report + :: + [%mass p=mass] + == + :: + ++ task + $~ [%vega ~] + $% :: event failure notification + :: + $>(%crud vane-task) + :: initializes ourselves with an identity + :: + $>(%init vane-task) + :: new unix process + :: + $>(%born vane-task) + :: report upgrade + :: + $>(%vega vane-task) + :: notifies us of the ports of our live http servers + :: + [%live insecure=@ud secure=(unit @ud)] + :: update http configuration + :: + [%rule =http-rule] + :: starts handling an inbound http request + :: + [%request secure=? =address =request:http] + :: starts handling an backdoor http request + :: + [%request-local secure=? =address =request:http] + :: cancels a previous request + :: + [%cancel-request ~] + :: connects a binding to an app + :: + [%connect =binding app=term] + :: connects a binding to a generator + :: + [%serve =binding =generator] + :: disconnects a binding + :: + :: This must be called with the same duct that made the binding in + :: the first place. + :: + [%disconnect =binding] + :: memory usage request + :: + $>(%wegh vane-task) + == + :: + -- + :: +binding: A rule to match a path. + :: + :: A +binding is a system unique mapping for a path to match. A +binding + :: must be system unique because we don't want two handlers for a path; + :: what happens if there are two different actions for [~ /]? + :: + +$ binding + $: :: site: the site to match. + :: + :: A ~ will match the Urbit's identity site (your.urbit.org). Any + :: other value will match a domain literal. + :: + site=(unit @t) + :: path: matches this prefix path + :: + :: /~myapp will match /~myapp or /~myapp/longer/path + :: + path=(list @t) + == + :: +generator: a generator on the local ship that handles requests + :: + :: This refers to a generator on the local ship, run with a set of + :: arguments. Since http requests are time sensitive, we require that the + :: generator be on the current ship. + :: + +$ generator + $: :: desk: desk on current ship that contains the generator + :: + =desk + :: path: path on :desk to the generator's hoon file + :: + path=(list @t) + :: args: arguments passed to the gate + :: + args=* + == + :: +http-config: full http-server configuration + :: + +$ http-config + $: :: secure: PEM-encoded RSA private key and cert or cert chain + :: + secure=(unit [key=wain cert=wain]) + :: proxy: reverse TCP proxy HTTP(s) + :: + proxy=_| + :: log: keep HTTP(s) access logs + :: + log=? + :: redirect: send 301 redirects to upgrade HTTP to HTTPS + :: + :: Note: requires certificate. + :: + redirect=? + == + :: +http-rule: update configuration + :: + +$ http-rule + $% :: %cert: set or clear certificate and keypair + :: + [%cert cert=(unit [key=wain cert=wain])] + :: %turf: add or remove established dns binding + :: + [%turf action=?(%put %del) =turf] + == + :: +address: client IP address + :: + +$ address + $% [%ipv4 @if] + [%ipv6 @is] + :: [%ames @p] + == + :: +inbound-request: +http-request and metadata + :: + +$ inbound-request + $: :: authenticated: has a valid session cookie + :: + authenticated=? + :: secure: whether this request was encrypted (https) + :: + secure=? + :: address: the source address of this request + :: + =address + :: request: the http-request itself + :: + =request:http + == :: ++ cred :: credential $: hut/hart :: client host @@ -995,12 +1146,6 @@ (gte i.b 224) == ++ rout {p/(list host) q/path r/oryx s/path} :: http route (new) - ++ sec-move :: driver effect - $% {$send p/hiss} :: http out - {$show p/purl} :: direct user to url - {$give p/httr} :: respond immediately - {$redo ~} :: restart request qeu - == :: ++ user knot :: username -- ::eyre :: :::: @@ -1793,6 +1938,119 @@ ++ suss (trel dude @tas @da) :: config report ++ well (pair desk term) :: -- ::gall +:: %iris http-client interface +:: +++ iris ^? + |% + ++ able + |% + :: +gift: effects the client can emit + :: + ++ gift + $% :: %request: outbound http-request to earth + :: + :: TODO: id is sort of wrong for this interface; the duct should + :: be enough to identify which request we're talking about? + :: + [%request id=@ud request=request:http] + :: %cancel-request: tell earth to cancel a previous %request + :: + [%cancel-request id=@ud] + :: %response: response to the caller + :: + [%http-response =client-response] + :: memory usage report + :: + [%mass p=mass] + == + :: + ++ task + $~ [%vega ~] + $% :: event failure notification + :: + $>(%crud vane-task) + :: system started up; reset open connections + :: + $>(%born vane-task) + :: report upgrade + :: + $>(%vega vane-task) + :: fetches a remote resource + :: + [%request =request:http =outbound-config] + :: cancels a previous fetch + :: + [%cancel-request ~] + :: receives http data from outside + :: + [%receive id=@ud =http-event:http] + :: memory usage request + :: + $>(%wegh vane-task) + == + -- + :: +client-response: one or more client responses given to the caller + :: + +$ client-response + $% :: periodically sent as an update on the duct that sent %fetch + :: + $: %progress + :: http-response-header: full transaction header + :: + :: In case of a redirect chain, this is the target of the + :: final redirect. + :: + =response-header:http + :: bytes-read: bytes fetched so far + :: + bytes-read=@ud + :: expected-size: the total size if response had a content-length + :: + expected-size=(unit @ud) + :: incremental: data received since the last %http-progress + :: + incremental=(unit octs) + == + :: final response of a download, parsed as mime-data if successful + :: + [%finished =response-header:http full-file=(unit mime-data)] + :: canceled by the runtime system + :: + [%cancel ~] + == + :: mime-data: externally received but unvalidated mimed data + :: + +$ mime-data + [type=@t data=octs] + :: +outbound-config: configuration for outbound http requests + :: + +$ outbound-config + $: :: number of times to follow a 300 redirect before erroring + :: + :: Common values for this will be 3 (the limit most browsers use), 5 + :: (the limit recommended by the http standard), or 0 (let the + :: requester deal with 300 redirects). + :: + redirects=_5 + :: number of times to retry before failing + :: + :: When we retry, we'll automatically try to use the 'Range' header + :: to resume the download where we left off if we have the + :: 'Accept-Range: bytes' in the original response. + :: + retries=_3 + == + :: +to-httr: adapts to old eyre interface + :: + ++ to-httr + |= [header=response-header:http full-file=(unit mime-data)] + ^- httr:eyre + :: + =/ data=(unit octs) + ?~(full-file ~ `data.u.full-file) + :: + [status-code.header headers.header data] + -- :: :::: :::: ++jael :: (1h) security :: :::: @@ -2161,287 +2419,6 @@ ++ oath @ :: signature -- :: pki -- :: kale -:: -++ http-client ^? - |% - ++ able - |% - :: +gift: effects the client can emit - :: - ++ gift - $% :: %request: outbound http-request to earth - :: - :: TODO: id is sort of wrong for this interface; the duct should - :: be enough to identify which request we're talking about? - :: - [%request id=@ud request=request:http] - :: %cancel-request: tell earth to cancel a previous %request - :: - [%cancel-request id=@ud] - :: %response: response to the caller - :: - [%http-response =client-response] - :: memory usage report - :: - [%mass p=mass] - == - :: - ++ task - $~ [%vega ~] - $% :: event failure notification - :: - $>(%crud vane-task) - :: system started up; reset open connections - :: - $>(%born vane-task) - :: report upgrade - :: - $>(%vega vane-task) - :: fetches a remote resource - :: - [%request =request:http =outbound-config] - :: cancels a previous fetch - :: - [%cancel-request ~] - :: receives http data from outside - :: - [%receive id=@ud =http-event:http] - :: memory usage request - :: - $>(%wegh vane-task) - == - -- - :: +client-response: one or more client responses given to the caller - :: - +$ client-response - $% :: periodically sent as an update on the duct that sent %fetch - :: - $: %progress - :: http-response-header: full transaction header - :: - :: In case of a redirect chain, this is the target of the - :: final redirect. - :: - =response-header:http - :: bytes-read: bytes fetched so far - :: - bytes-read=@ud - :: expected-size: the total size if response had a content-length - :: - expected-size=(unit @ud) - :: incremental: data received since the last %http-progress - :: - incremental=(unit octs) - == - :: final response of a download, parsed as mime-data if successful - :: - [%finished =response-header:http full-file=(unit mime-data)] - :: canceled by the runtime system - :: - [%cancel ~] - == - :: mime-data: externally received but unvalidated mimed data - :: - +$ mime-data - [type=@t data=octs] - :: +outbound-config: configuration for outbound http requests - :: - +$ outbound-config - $: :: number of times to follow a 300 redirect before erroring - :: - :: Common values for this will be 3 (the limit most browsers use), 5 - :: (the limit recommended by the http standard), or 0 (let the - :: requester deal with 300 redirects). - :: - redirects=_5 - :: number of times to retry before failing - :: - :: When we retry, we'll automatically try to use the 'Range' header - :: to resume the download where we left off if we have the - :: 'Accept-Range: bytes' in the original response. - :: - retries=_3 - == - :: +to-httr: adapts to old eyre interface - :: - ++ to-httr - |= [header=response-header:http full-file=(unit mime-data)] - ^- httr:eyre - :: - =/ data=(unit octs) - ?~(full-file ~ `data.u.full-file) - :: - [status-code.header headers.header data] - -- -:: -:::: - :: -++ http-server ^? - |% - ++ able - |% - ++ gift - $% :: set-config: configures the external http server - :: - :: TODO: We need to actually return a (map (unit @t) http-config) - :: so we can apply configurations on a per-site basis - :: - [%set-config =http-config] - :: response: response to an event from earth - :: - [%response =http-event:http] - :: response to a %connect or %serve - :: - :: :accepted is whether :binding was valid. Duplicate bindings are - :: not allowed. - :: - [%bound accepted=? =binding] - :: memory usage report - :: - [%mass p=mass] - == - :: - ++ task - $~ [%vega ~] - $% :: event failure notification - :: - $>(%crud vane-task) - :: initializes ourselves with an identity - :: - $>(%init vane-task) - :: new unix process - :: - :: XX use +vane-task - :: - [%born p=(list host)] - :: report upgrade - :: - $>(%vega vane-task) - :: notifies us of the ports of our live http servers - :: - [%live insecure=@ud secure=(unit @ud)] - :: update http configuration - :: - [%rule =http-rule] - :: starts handling an inbound http request - :: - [%request secure=? =address =request:http] - :: starts handling an backdoor http request - :: - [%request-local secure=? =address =request:http] - :: cancels a previous request - :: - [%cancel-request ~] - :: connects a binding to an app - :: - [%connect =binding app=term] - :: connects a binding to a generator - :: - [%serve =binding =generator] - :: disconnects a binding - :: - :: This must be called with the same duct that made the binding in - :: the first place. - :: - [%disconnect =binding] - :: memory usage request - :: - $>(%wegh vane-task) - == - :: - -- - :: +binding: A rule to match a path. - :: - :: A +binding is a system unique mapping for a path to match. A +binding - :: must be system unique because we don't want two handlers for a path; - :: what happens if there are two different actions for [~ /]? - :: - +$ binding - $: :: site: the site to match. - :: - :: A ~ will match the Urbit's identity site (your.urbit.org). Any - :: other value will match a domain literal. - :: - site=(unit @t) - :: path: matches this prefix path - :: - :: /~myapp will match /~myapp or /~myapp/longer/path - :: - path=(list @t) - == - :: +generator: a generator on the local ship that handles requests - :: - :: This refers to a generator on the local ship, run with a set of - :: arguments. Since http requests are time sensitive, we require that the - :: generator be on the current ship. - :: - +$ generator - $: :: desk: desk on current ship that contains the generator - :: - =desk - :: path: path on :desk to the generator's hoon file - :: - path=(list @t) - :: args: arguments passed to the gate - :: - args=* - == - :: +host: http host - :: - +$ host - (each (list @t) @if) - :: +http-config: full http-server configuration - :: - +$ http-config - $: :: secure: PEM-encoded RSA private key and cert or cert chain - :: - secure=(unit [key=wain cert=wain]) - :: proxy: reverse TCP proxy HTTP(s) - :: - proxy=_| - :: log: keep HTTP(s) access logs - :: - log=? - :: redirect: send 301 redirects to upgrade HTTP to HTTPS - :: - :: Note: requires certificate. - :: - redirect=? - == - :: +http-rule: update configuration - :: - +$ http-rule - $% :: %cert: set or clear certificate and keypair - :: - [%cert cert=(unit [key=wain cert=wain])] - :: %turf: add or remove established dns binding - :: - [%turf action=?(%put %del) =turf] - == - :: +address: client IP address - :: - +$ address - $% [%ipv4 @if] - [%ipv6 @is] - :: [%ames @p] - == - :: +inbound-request: +http-request and metadata - :: - +$ inbound-request - $: :: authenticated: has a valid session cookie - :: - authenticated=? - :: secure: whether this request was encrypted (https) - :: - secure=? - :: address: the source address of this request - :: - =address - :: request: the http-request itself - :: - =request:http - == - -- :: :::: :::: ++xmas :: (1i) new network :: :::: @@ -7600,22 +7577,22 @@ gift:able:behn gift:able:clay gift:able:dill + gift:able:eyre gift:able:ford gift:able:gall + gift:able:iris gift:able:jael - gift:able:http-client - gift:able:http-server == ++ task-arvo :: in request ->$ $% task:able:ames task:able:clay task:able:behn task:able:dill + task:able:iris task:able:ford task:able:gall + task:able:eyre task:able:jael - task:able:http-client - task:able:http-server == ++ note-arvo :: out request $-> $~ [%a %wake ~] @@ -7623,11 +7600,11 @@ {$b task:able:behn} {$c task:able:clay} {$d task:able:dill} + [%e task:able:eyre] {$f task:able:ford} {$g task:able:gall} + [%i task:able:iris] {$j task:able:jael} - [%l task:able:http-client] - [%r task:able:http-server] {@tas $meta vase} == ++ sign-arvo :: in result $<- @@ -7640,10 +7617,10 @@ {$c gift:able:clay} {$d gift:able:dill} {$f gift:able:ford} + [%e gift:able:eyre] {$g gift:able:gall} + [%i gift:able:iris] {$j gift:able:jael} - [%l gift:able:http-client] - [%r gift:able:http-server] == :: +$ unix-task :: input from unix @@ -7660,12 +7637,10 @@ :: %clay: new process :: $>(%boat task:able:clay) - :: %behn/%lient/%rver: new process - :: - :: XX %rver includes payload + :: %behn/%eyre/%iris: new process :: $>(%born vane-task) - :: %rver: cancel request + :: %eyre: cancel request :: [%cancel-request ~] :: any vane: error report @@ -7683,18 +7658,18 @@ :: %clay: external edit :: $>(%into task:able:clay) - :: %rver: learn ports of live http servers + :: %eyre: learn ports of live http servers :: - $>(%live task:able:http-server) - :: %lient: hear (partial) http response + $>(%live task:able:eyre) + :: %iris: hear (partial) http response :: - $>(%receive task:able:http-client) - :: %rver: starts handling an inbound http request + $>(%receive task:able:iris) + :: %eyre: starts handling an inbound http request :: - $>(%request task:able:http-server) - :: %rver: starts handling an backdoor http request + $>(%request task:able:eyre) + :: %eyre: starts handling an backdoor http request :: - $>(%request-local task:able:http-server) + $>(%request-local task:able:eyre) :: %behn: wakeup :: $>(%wake task:able:behn) diff --git a/pkg/arvo/tests/app/acme.hoon b/pkg/arvo/tests/app/acme.hoon index 9e4d1f1b2..20bb28366 100644 --- a/pkg/arvo/tests/app/acme.hoon +++ b/pkg/arvo/tests/app/acme.hoon @@ -47,7 +47,7 @@ %request /acme/try/2/directory [%'GET' (crip (en-purl:html directory-base:app)) ~ ~] - *outbound-config:http-client + *outbound-config:iris == == !> moves -- diff --git a/pkg/arvo/tests/sys/vane/rver.hoon b/pkg/arvo/tests/sys/vane/eyre.hoon similarity index 99% rename from pkg/arvo/tests/sys/vane/rver.hoon rename to pkg/arvo/tests/sys/vane/eyre.hoon index c63d9544b..de15f10ca 100644 --- a/pkg/arvo/tests/sys/vane/rver.hoon +++ b/pkg/arvo/tests/sys/vane/eyre.hoon @@ -1,6 +1,6 @@ /+ *test, *test-ford :: -/= http-server-raw /: /===/sys/vane/rver /!noun/ +/= http-server-raw /: /===/sys/vane/eyre /!noun/ :: !: :: diff --git a/pkg/arvo/tests/sys/vane/lient.hoon b/pkg/arvo/tests/sys/vane/iris.hoon similarity index 95% rename from pkg/arvo/tests/sys/vane/lient.hoon rename to pkg/arvo/tests/sys/vane/iris.hoon index 9ae9f94d8..b28029cb6 100644 --- a/pkg/arvo/tests/sys/vane/lient.hoon +++ b/pkg/arvo/tests/sys/vane/iris.hoon @@ -1,6 +1,6 @@ /+ *test :: -/= http-client-raw /: /===/sys/vane/lient /!noun/ +/= http-client-raw /: /===/sys/vane/iris /!noun/ :: !: :: @@ -39,7 +39,7 @@ :* duct=~[/http-get-request] ~ %request request - *outbound-config:http-client + *outbound-config:iris == ^= expected-moves ^- (list move:http-client-gate) @@ -61,7 +61,7 @@ scry=*sley ^= call-args :+ duct=~[/initial-born-duct] ~ - ^- task:able:http-client + ^- task:able:iris :* %receive id=0 ^- http-event:http @@ -135,7 +135,7 @@ :* duct=~[/http-get-request] ~ %request request - *outbound-config:http-client + *outbound-config:iris == ^= expected-moves ^- (list move:http-client-gate) @@ -157,7 +157,7 @@ scry=*sley ^= call-args :+ duct=~[/initial-born-duct] ~ - ^- task:able:http-client + ^- task:able:iris :* %receive id=0 ^- http-event:http @@ -194,7 +194,7 @@ scry=*sley ^= call-args :+ duct=~[/initial-born-duct] ~ - ^- task:able:http-client + ^- task:able:iris :* %receive id=0 ^- http-event:http @@ -227,7 +227,7 @@ scry=*sley ^= call-args :+ duct=~[/initial-born-duct] ~ - ^- task:able:http-client + ^- task:able:iris :* %receive id=0 ^- http-event:http @@ -292,7 +292,7 @@ :* duct=~[/http-get-request] ~ %request request - *outbound-config:http-client + *outbound-config:iris == ^= expected-moves ^- (list move:http-client-gate) @@ -314,7 +314,7 @@ scry=*sley ^= call-args :+ duct=~[/initial-born-duct] ~ - ^- task:able:http-client + ^- task:able:iris :* %receive id=0 ^- http-event:http @@ -398,7 +398,7 @@ :* duct=~[/http-get-request] ~ %request request - *outbound-config:http-client + *outbound-config:iris == ^= expected-moves ^- (list move:http-client-gate) @@ -420,7 +420,7 @@ scry=*sley ^= call-args :+ duct=~[/initial-born-duct] ~ - ^- task:able:http-client + ^- task:able:iris :* %receive id=0 ^- http-event:http @@ -471,7 +471,7 @@ :* duct=~[/http-get-request] ~ %request request - *outbound-config:http-client + *outbound-config:iris == ^= expected-moves ^- (list move:http-client-gate) @@ -492,7 +492,7 @@ scry=*sley ^= call-args :+ duct=~[/secondary-born-duct] ~ - ^- task:able:http-client + ^- task:able:iris :* %born ~ == @@ -515,7 +515,7 @@ |= $: http-client-gate=_http-client-gate now=@da scry=sley - call-args=[=duct type=* wrapped-task=(hobo task:able:http-client)] + call-args=[=duct type=* wrapped-task=(hobo task:able:iris)] expected-moves=(list move:http-client-gate) == ^- [tang _http-client-gate] diff --git a/pkg/arvo/tests/sys/vane/jael.hoon b/pkg/arvo/tests/sys/vane/jael.hoon index 1bed177e2..14289be02 100644 --- a/pkg/arvo/tests/sys/vane/jael.hoon +++ b/pkg/arvo/tests/sys/vane/jael.hoon @@ -30,7 +30,7 @@ [hen %slip %c %init ~nul] [hen %slip %g %init ~nul] [hen %slip %d %init ~nul] - [hen %slip %r %init ~nul] + [hen %slip %e %init ~nul] [hen %give %init ~nul] [hen %pass /~nul/init %b %wait +(~1234.5.6)] == == @@ -70,7 +70,7 @@ ^= comparator |= moves=(list move:jael-gate) ?> ?=(^ moves) - ?> ?=([* %pass * %l %request *] i.moves) + ?> ?=([* %pass * %i %request *] i.moves) ;: weld %+ expect-eq !> 1 diff --git a/pkg/urbit/vere/http.c b/pkg/urbit/vere/http.c index cd1b835cd..8e426037e 100644 --- a/pkg/urbit/vere/http.c +++ b/pkg/urbit/vere/http.c @@ -1431,103 +1431,15 @@ _http_release_ports_file(c3_c *pax_c) free(paf_c); } - -/* _http_czar_host(): galaxy hostname as (unit host:eyre) -*/ -static u3_noun -_http_czar_host(void) -{ - u3_noun dom = u3_nul; - return dom; - - // XX revisit -#if 0 - if ( (0 == u3_Host.ops_u.imp_c) || (c3n == u3_Host.ops_u.net) ) { - return dom; - } - - { - c3_c* dns_c = u3_Host.ops_u.dns_c; - c3_w len_w = strlen(dns_c); - c3_w dif_w; - c3_c* dom_c; - c3_c* dot_c; - - while ( 0 != len_w ) { - if ( 0 == (dot_c = strchr(dns_c, '.'))) { - len_w = 0; - dom = u3nc(u3i_string(dns_c), dom); - break; - } - else { - dif_w = dot_c - dns_c; - dom_c = c3_malloc(1 + dif_w); - strncpy(dom_c, dns_c, dif_w); - dom_c[dif_w] = 0; - - dom = u3nc(u3i_string(dom_c), dom); - - // increment to skip leading '.' - dns_c = dot_c + 1; - free(dom_c); - - // XX confirm that underflow is impossible here - len_w -= c3_min(dif_w, len_w); - } - } - } - - if ( u3_nul == dom ) { - return dom; - } - - // increment to skip '~' - dom = u3nc(u3i_string(u3_Host.ops_u.imp_c + 1), u3kb_flop(u3k(dom))); - - return u3nt(u3_nul, c3y, u3kb_flop(u3k(dom))); -#endif -} - /* u3_http_ef_bake(): notify %eyre that we're live */ void u3_http_ef_bake(void) { - u3_noun ipf = u3_nul; + u3_noun pax = u3nq(u3_blip, u3i_string("http-server"), + u3k(u3A->sen), u3_nul); - { - struct ifaddrs* iad_u; - getifaddrs(&iad_u); - - struct ifaddrs* dia_u = iad_u; - - while ( iad_u ) { - struct sockaddr_in* adr_u = (struct sockaddr_in *)iad_u->ifa_addr; - - if ( (0 != adr_u) && (AF_INET == adr_u->sin_family) ) { - c3_w ipf_w = ntohl(adr_u->sin_addr.s_addr); - - if ( INADDR_LOOPBACK != ipf_w ) { - ipf = u3nc(u3nc(c3n, u3i_words(1, &ipf_w)), ipf); - } - } - - iad_u = iad_u->ifa_next; - } - - freeifaddrs(dia_u); - } - - u3_noun hot = _http_czar_host(); - - if ( u3_nul != hot ) { - ipf = u3nc(u3k(u3t(hot)), ipf); - u3z(hot); - } - - u3_noun pax = u3nq(u3_blip, u3i_string("http-server"), u3k(u3A->sen), u3_nul); - - u3_pier_plan(pax, u3nc(c3__born, ipf)); + u3_pier_plan(pax, u3nc(c3__born, u3_nul)); } static u3_hreq*