Commit Graph

1030 Commits

Author SHA1 Message Date
Joe Bryan
5053de8b6b hoon: enables need/have type printfs on nest-fail 2020-10-09 10:26:38 -07:00
Fang
c444806c3d
eyre: explicitly permit proposed request in cors
Instead of always providing a wildcard for the allowed methods and
headers, now echoes back the method and headers that the client asked
for, if any.

Fixes #3676.
2020-10-09 14:07:05 +02:00
fang
e512e91f37
hoon: go full lark in +lead and +late (#3442)
To avoid wet-gate issues around face shadowing and such things.
2020-10-07 15:11:05 +02:00
Joe Bryan
00c1fbc185 hoon: virtualize cue when parsing %blob coin literals 2020-10-06 18:01:09 -07:00
Joe Bryan
e786a5f165 zuse: rewrites |base16 for clarity, simplicity, specificity 2020-10-06 11:45:16 -07:00
Joe Bryan
9118913412 zuse: adds |base16 hex $oct en/decoder 2020-10-06 10:56:09 -07:00
Joe Bryan
c8ae2c2537
Merge pull request #3643 from urbit/jb/octs-once
zuse: remove duplicate $octs definition
2020-10-06 10:51:44 -07:00
fang
a1e43e02a0
eyre: prevent binding in reserved namespaces
Disallows registering bindings (through %connect and %serve) that would capture
traffic on paths starting with /~ (Eyre's) or /~_~ (runtime's, as of cc389c5).

Note that we don't touch +insert-binding, which is used by Eyre internally to
set up bindings in its own namespace.
2020-10-06 16:50:49 +02:00
Joe Bryan
b5c9f4ed2a zuse: removes redundant definitions of $mite and $octs 2020-10-03 23:34:10 -07:00
Joe Bryan
a208387a72
Merge pull request #3520 from urbit/ted/ames-scry-print
ames: print failed scrys
2020-10-02 15:30:27 -07:00
fang
be1f4a5f6b
eyre: add authentication checker scry endpoint
Lets you check whether a specific Cookie header value string constitutes an
authenticated request.

/ex/=//=/authenticated/cookie/(scot %t 'cookie-string')

Intended for use in the runtime, for example with #3557.
2020-10-01 19:55:16 +02:00
fang
a37b728b86
Merge pull request #3565 from tylershuster/eyre-response-code
eyre: send 'no content' status with no content
2020-10-01 16:06:44 +02:00
Fang
0866d99c73
eyre: minimal CORS support
Adds a cors-registry to Eyre's state that tracks allowed and rejected
origins for the purposes of CORS request handling.

For preflight requests, generates a response in-line.
For simple requests, adds CORS headers onto whatever response is given.

See also:
https://groups.google.com/a/urbit.org/g/dev/c/bb82dwEJGzM/m/q2JjNSx5BwAJ
2020-09-30 15:54:15 +02:00
Elliot Glaysher
cea51ef16d
Merge pull request #3553 from pkova/eyre
eyre: remove superfluous connection-state check
2020-09-28 10:50:20 -04:00
Tyler Brown Cifu Shuster
9d1514385f Merge branch 'release/next-sys' of https://github.com/urbit/urbit into eyre-response-code 2020-09-27 21:28:04 -07:00
Tyler Brown Cifu Shuster
8a9534e0ac eyre: send 'no content' headers with no content 2020-09-24 21:07:07 -07:00
fang
c46061eda7
zuse: make octs value @ instead of @t
Because these things aren't always printable/valid @t.
2020-09-24 21:36:45 +02:00
pkova
5902ef9a53 eyre: remove superfluous connection-state check
This was originally introduced by me in #1814 to address #1811. Eyre was not
canceling heartbeat timers on all relevant events making it easy to end
up with an infinite behn loop. This check allowed ships that entered an infinite
loop to recover, as per my comment at
https://github.com/urbit/urbit/pull/1814#discussion_r333477482. Otherwise it's
not necessary.
2020-09-24 17:50:42 +03:00
Joe Bryan
30befdf4a9 arvo: updates +of-wain:format sample
and consistently uses $cord and $wain in of/to-wain
2020-09-18 16:15:13 -07:00
Paul Driver
2da36aa234 arvo: change sample type of ++to-wain:format to @t
@t further indicates to the caller (although loosely, because auras
are loosely enforced types) that the input should not contain embedded
NUL bytes, which are not valid @t.

Separately, a minor improvement has been made to the performance of
the raw hoon by pinning the gates used in the inner loop.
2020-09-18 16:15:12 -07:00
Paul Driver
3aaf82de5e arvo: accept embedded nulls in to-wain:format
Prior to this commit, there was a jet mismatch in to-wain (formerly
called lore, and still jetted under that name). 0 bytes in the middle of
a cord caused the jet to crash, whereas the hoon simply treated them as
the end of cord and truncated the output. The history of this behavior
is fraught with controversy. This commit rectifies the current mess with
the following rationale: Null bytes are valid ASCII/UTF-8, and \n\n in
the input will cause null list items in the output, so nulls are (for
the purposes of to-wain) allowed in cords. Trailing nulls cannot be
represented because of the nature of atoms, but that is outside the
scope of to-wain's concern. Therefore to-wain should simply measure the
cord and split on newlines, and do nothing fancy at all with nulls.

In addition, the hoon for to-wain was written in an inefficient style
that produced a lot of intermediate garbage atoms via rsh and cat. This
commit's implementation measures once and cuts once, so to speak, and so
avoids the intermediate garbage.  Quick benchmarks suggest it is about
20x faster than the old hoon, but still orders of magnitude slower than
the jetted code. to-wain is the workhorse for the txt mark, so we should
still prefer to have a jet.

The old jet is left wired up under %lore, and should be removed when
support for the old, unupgraded zuse is no longer necessary. A new jet
with matching null handling has been wired up under the name %leer.
2020-09-18 16:15:10 -07:00
Ted Blackman
f2be97d315 ames: print failed scrys 2020-09-18 16:06:13 -04:00
Joe Bryan
74d5d5df24 hoon: refactors +stir types/comments for clarity 2020-09-11 12:48:19 -07:00
Joe Bryan
d89210cceb hoon: rewrites +stir using tail-recursion and +roll 2020-09-11 12:48:14 -07:00
Joe Bryan
31fe240632 arvo: adds |meld, triggering memory unification 2020-09-09 22:50:43 -07:00
Joe Bryan
7f0b500778 arvo: adds |trim, triggering memory reclamation 2020-09-09 22:49:37 -07:00
Fang
ef4b56f8c7
dill: send styled text to runtime as-is
Depending on the additions to term.c made in 467d8d239 allows dill to
forget about ansi escape codes, and pass styled text nouns straight on
to vere.

Also removes a bit of logic from drum, which assumed things about the
rendering of escape codes to adjust cursor positioning. Now it simply
states the semantic cursor position, letting the runtime deal with the
potential influence of styling.
2020-09-09 19:09:29 +02:00
Philip Monk
f9665c0cbd
Merge pull request #3378 from urbit/philip/base-hash
clay: expose mergebase as base-hash
2020-09-08 20:11:05 -07:00
matildepark
c45691d214
Merge pull request #3408 from urbit/lf/xml-ver
zuse: allow xml declaration in +de-xml:html
2020-09-05 16:17:31 -04:00
Philip Monk
c7480c9b07
clay: fix bug in %mate
If both sides changed a file in the same way, %mate used the version in
the mergebase, which is incorrect.  This changes it to use the version
in the destination desk.

An example of this issue:

    > +cat %/test/hoon
    /~zod/home/~2020.9.3..21.41.24..61ed/test/hoon
    first

    > |merge %scratch our %home
    >=
    merged with strategy %fine
    + /~zod/scratch/2/test/hoon

    > +cat /=scratch=/test
    /~zod/scratch/~2020.9.3..21.41.32..408c/test/hoon
    first

    > *%/test/hoon 'second'
    : /~zod/home/3/test/hoon

    > *%%%/scratch=/test/hoon 'second'
    : /~zod/scratch/3/test/hoon

    > |merge %scratch our %home
    >=
    %fine merge failed, trying %meet
    %meet merge failed, trying %mate
    merged with strategy %mate
    : /~zod/scratch/4/test/hoon

    > +cat /=scratch=/test
    /~zod/scratch/~2020.9.3..21.42.25..9e8b/test/hoon
    first
2020-09-03 14:34:30 -07:00
Liam Fitzgerald
5020223ff2 zuse: de-xml:html handles declarations as in spec 2020-09-01 02:15:19 +10:00
Liam Fitzgerald
b5f64715f4 zuse: allow xml declaration in +de-xml:html
Allows for parsing of an xml declaration. Throws it away, as the
datastructure doesn't have anywhere to put the result
2020-08-31 12:24:41 +10:00
Philip Monk
67c5caada8
clay: add safe merge options
As described in gen/hood/merge/help.txt
2020-08-28 16:36:00 -07:00
Fang
2385670631
Merge pull request #3387 from urbit/m/eyre-wack-gall
eyre: prevent %eyre-no-channel errors
2020-08-27 22:26:19 +02:00
Fang
b06f8a0f9e
eyre: send %leave on %fact/ack for deleted channel
Ordinarily, eyre cleans up the relevant gall subscriptions whenever a
channel disappears. In yet unresolved erroneous behavior though, it may
leave a gall subscription open, despite wiping the channel from state.

Attempting to pass the response onto the deleted channel anyway results
in an %eyre-no-channel error later in the event. The volume of these
errors can degrade the user experience, as per #3196.

To resolve the annoyance (but not the underlying issue) we detect the
"subscription has no channel" case, and issue a %leave. Doing so
requires additional information in the wire, so we add that in,
refactoring the relevant wire building along the way.

Note that due to the wire requirements, this cannot resolve existing
cases. For that, we depend on bc929ba6d.
2020-08-27 14:16:46 +02:00
Fang
bc929ba6db
gall: forget eyre subscriptions once
As part of the solution to #3196, we need to clean up any gall
subscriptions that eyre didn't properly clean up.

Since detecting that is hard, we opt to just wipe _all_ eyre-originating
subscriptions from gall. We inspect the duct, which isn't good, but it's
only just this once.
2020-08-27 13:23:36 +02:00
Philip Monk
769b43d73a
clay: add comments and cleanup +find-merge-points 2020-08-26 18:32:20 -07:00
Philip Monk
9cd826f8f9
clay: make +find-merge-points faster
The main thing here is that we aggressively check whether we're in
ancestry of another mergebase candidate.  This means we don't have to do
a 2nd pass to eliminate redundant candidates.
2020-08-25 22:54:48 -07:00
Philip Monk
4468d79509
clay: expose mergebase as base-hash
Change the definition of base-hash to be the mergebase of %home with the
OTA source.  This means it's the most recent successfully-applied
update, which is usually the most important information.

Add sour-hash, which is the hash of the most recently *downloaded*
update, regardless of whether it applied successfuly (ie the old
base-hash).

Add a summary of the various hashes at the top of gen/trouble.
2020-08-25 20:25:39 -07:00
Philip Monk
f606d2e3d6
clay: cleaner no-op detection
Only no-op if the incoming commit's parent is the old head of the desk.
Also move the printing near the end so we can know exactly if anything
changed.
2020-08-25 18:15:06 -07:00
Philip Monk
d5596eb1a3
clay: if commit would be a no-op, don't commit it
fixes #3317
2020-08-25 16:24:36 -07:00
Philip Monk
d4c7f99bd6
Merge pull request #3217 from cmarcelo/code-reset
jael, eyre: Add a way to reset the web login code
2020-08-25 15:26:01 -07:00
Caio Marcelo de Oliveira Filho
92cf9d7c33 Merge branch 'master' into code-reset 2020-08-17 14:55:07 -07:00
Fang
22c66f9ac4
Merge pull request #3304 from ohAitch/patch-3
Fix {a/$foo} in type printing to [a=%foo]
2020-08-13 10:44:36 +02:00
Anton Dyudin
06262cb701
Fix {a/$foo} in type printing to [a/%foo]
Per longtime deprecation of modeless mold syntax.
2020-08-12 12:25:46 -07:00
Fang
2e7ea5cdb3
hoon: add +lead and +late
For tacking some head or tail onto some noun, respectively.
2020-08-09 16:15:17 +02:00
Caio Marcelo de Oliveira Filho
72b164ade2 eyre: Make %code-changed handling less chatty 2020-07-31 13:01:19 -07:00
Caio Marcelo de Oliveira Filho
df868e2c4f jael, eyre: Add a way to reset the web login code
Jael now stores a `step` that is combined with the original salt to
produce a new code.  A `%step` card is used to increment that value,
and effectively resetting the keys.  Because the first `step` is zero,
the first code is the same as before.

Eyre was changed to be notified with `%code-changed` so it can forget
old cookies, sessions and discard all the existing channels.

A new generator was added |code, that does both querying and
resetting the code

    |code             :: shows current code, step and help
    |code %reset      :: changes the code

The old +code generator still works correctly.
2020-07-31 11:35:48 -07:00
Philip Monk
48745e945a
Merge branch 'philip/ames-lane' (#3186)
* origin/philip/ames-lane:
  ames: fix lane discovery during some lane changes

Signed-off-by: Philip Monk <phil@pcmonk.me>
2020-07-30 13:33:29 -07:00
Philip Monk
a289615f8d
Merge branch 'philip/clay' (#3188)
* philip/clay:
  clay: fix ph tests
  clay: remove debugging printfs
  clay: rewrite new protocol
  clay: refactor over-the-wire protocol

Signed-off-by: Philip Monk <phil@pcmonk.me>
2020-07-30 13:30:16 -07:00
Philip Monk
3d1b7f2b35
clay: fix ph tests 2020-07-28 21:44:45 -07:00
Philip Monk
e29b7ea70a
Merge pull request #3124 from lukechampine/wtts-axis
hoon: fix wtts axis for simple wings
2020-07-27 18:01:47 -07:00
Philip Monk
495a6cf004
clay: remove debugging printfs 2020-07-24 22:05:49 -07:00
Philip Monk
1d0409c4c4
ames: fix lane discovery during some lane changes
We used to not accept new indirect lanes if we already have a direct
lane.  This means that if Bob, with a publicly-accessible lane, changes
lanes (eg by restarting the process and getting a new port or changing
ip addresses), tries to talk to Alice, who is behind a NAT, then Bob
will try directly but fail (because Alice is behind a NAT), so he will
route the message through her galaxy.  This is good -- the message gets
to Alice.  However, Alice had a direct route to Bob's old lane, so she
will try to ack on that lane, which fails.  She will not time out this
lane because she doesn't know that Bob isn't getting the acks (acks
don't have their own acks).

The solution is that if Alice receives an indirect lane for Bob when she
already has a direct lane, she shouldn't ignore it.  If the lane is the
same as what she has, she shouldn't change anything (in particular, she
shouldn't mark it as indirect).  But if it's a new lane, she should
discard her old direct lane and use the new indirect lane.
2020-07-24 20:41:48 -07:00
Philip Monk
51983e5480
clay: rewrite new protocol
Use an explicit state machine to carefully manage pending downloads.
2020-07-24 00:20:22 -07:00
Philip Monk
553a9db843
clay: refactor over-the-wire protocol
Don't send blobs initially; instead, wait for the recipient to ask for
any they need.  This should significantly reduce network and memory usage.
2020-07-23 00:12:33 -07:00
Matilde Park
0d68f3f901 Merge branch 'release/next-sys' 2020-07-22 14:31:17 -04:00
Fang
d6a39c1311
Merge pull request #3059 from urbit/jb/m/behn-scry
arvo: ames & behn scry interface updates
2020-07-22 19:55:16 +02:00
Fang
3955d1092b
ames: add scry endpoint for forward lanes
Finds the lane for that peer, or their galaxy. Intended for use in the
runtime, to enable stateless forwarding.
2020-07-22 16:33:34 +02:00
Fang
4ea98e569f
ames: improve scry interface
No longer abuse the desk field, instead making use of the path. Reject
any scries outside of the local ship, empty desk and current time as
invalid.
2020-07-22 16:30:47 +02:00
Philip Monk
452b668c5f
Merge pull request #2972 from urbit/la/ordered-map-subset
zuse: add subset arm to ordered-map
2020-07-21 18:09:22 -07:00
Philip Monk
753ccf1b7e
Merge remote-tracking branch 'origin/ted/fix-huck' into release/next-sys 2020-07-21 17:08:01 -07:00
Fang
3eab480de7
Merge branch 'release/next-sys' into jb/m/behn-scry 2020-07-22 02:02:05 +02:00
Philip Monk
1169d6b443
clay: ignore extraneous /sys/lyv results 2020-07-21 15:42:46 -07:00
Logan Allen
f76759b9e0 zuse: added docstring and warning 2020-07-21 14:39:42 -07:00
Philip Monk
f4c34c7598
release: urbit-os-v1.0.29 2020-07-21 12:59:12 -07:00
Fang
d65148ea37
zuse: parse rfc2396 unreserved chars correctly
RFC2396 defines[1] unreserved characters as alphanumerics and nine "mark"
characters. We were only parsing for four of those, leading to parsing failure
for valid URLs.

[1]: https://tools.ietf.org/html/rfc2396#appendix-A
2020-07-19 17:58:19 +02:00
lukechampine
8b5097eb0f hoon: fix wtts axis for simple wings 2020-07-14 12:34:47 -04:00
matildepark
2ea019850e
Merge pull request #3105 from urbit/mp/destub-ver
eyre: remove stubbed version text
2020-07-09 16:53:12 -04:00
Fang
76b3ce8ef1
Merge pull request #3063 from urbit/m/drop-pole
zuse: make +drop-pole produce a unit
2020-07-09 18:06:15 +02:00
Fang
fa32d711fa
eyre: remove channel.js
Userspace has, rightfully, taken over the task of serving a js client for
eyre's channel API.
2020-07-09 00:15:51 +02:00
Logan Allen
64a30fea62 ordered-map: got %zuse to compile and all tests to pass 2020-07-08 15:07:14 -04:00
Ted Blackman
11a8e911be zuse,behn,gall: fix %huck and |reset 2020-07-08 02:08:27 -04:00
Matilde Park
eef149d46d eyre: remove stubbed version text
In replicating a mockup, the residual 'version' for OS1 has overstayed
its welcome as a stub. This commit
removes it.
2020-07-07 23:41:37 -04:00
Logan Allen
cd5840770e zuse: ordered-map subset style fixes 2020-07-07 19:19:47 -04:00
Logan Allen
4168344c3b zuse: added mop, a mold builder for ordered-maps 2020-07-07 19:19:47 -04:00
Logan Allen
04232e0ebe zuse: add subset arm to ordered-map 2020-07-07 19:19:47 -04:00
Philip Monk
935ffaaf23
eyre: give scry function to generators
In Ford Fusion, Clay builds generators but Dojo and Eyre run them.  Dojo
is already virtualized with a scry function, so +mule is fine, but Eyre
is not, so Eyre needs to use +mock and explicitly supply the scry
function.  This does that.  Fortunately, the produced result is simple
and easily clammable.

Fixes #3089
2020-07-02 23:30:17 -07:00
Philip Monk
37b9f854fd
eyre: give all args to generators
fixes #3082
2020-07-02 14:42:26 -07:00
Philip Monk
f3dede23d1
Merge pull request #3076 from urbit/philip/clay-print
kiln: Small fixes
2020-06-30 18:08:01 -07:00
Philip Monk
f4f1d0ab4b
clay: print conflicts 2020-06-30 15:24:42 -07:00
Philip Monk
51c5a74360
Merge remote-tracking branch 'origin/philip/jael-breach-restart' into release/next-sys 2020-06-29 19:25:13 -07:00
Philip Monk
e7e2c07d6f
clay: remove scaffolding 2020-06-29 14:30:33 -07:00
Philip Monk
40db8ea580
kiln: make otas continue even if they failed to apply 2020-06-29 13:25:10 -07:00
Ted Blackman
ede7105820 clay: flop syntax error trace 2020-06-29 11:01:23 -04:00
Fang
0ecd108f98
zuse: make +drop-pole produce a unit
Both +drop-list and +drop-map produce units instead of crashing. This makes
+drop-pole match that behavior, producing a unit of the resulting tuple.
2020-06-28 21:33:17 +02:00
Ted Blackman
f6171042ae arvo: use date instead of kelvin 2020-06-28 01:13:42 -04:00
Ted Blackman
7266b3f5c3 hoon: re-fix +slab; /tests: fix clay tests 2020-06-28 00:59:02 -04:00
Philip Monk
42de999024
kiln: don't implicitly create syncs
Also silence some spurious errors.
2020-06-26 19:21:09 -07:00
Philip Monk
0301838f25
Merge remote-tracking branch 'origin/release/next-sys' into ford-fusion 2020-06-26 17:46:25 -07:00
Fang
523acf2eaf behn: optimize bounded timers scry 2020-06-26 15:17:20 -07:00
Fang
fe87d69ad1 behn: improve scry interface
No longer abuse the desk field, instead making use of the path. Reject
any scries outside of the local ship, empty desk and current time as
invalid.

Expose ducts only under a debug endpoint, nothing else should care about
being able to inspect them.

Add scry endpoints for the very next timer (if any), and all timers up
to and including a specified timestamp.
2020-06-26 15:17:12 -07:00
Fang
b824d5bd70 arvo: allow the empty desk (%$) in scries
+slaw fails to parse empty strings as %tas, so we special-case it here.
2020-06-26 15:17:03 -07:00
Philip Monk
77df80d603
gall: don't make large stack trace 2020-06-26 09:20:17 -07:00
Ted Blackman
ef138bb007 ames: use +cut in +encrypt 2020-06-25 22:54:37 -04:00
Ted Blackman
3daecd8c1b Merge remote-tracking branch 'origin/fix-slab' into ford-fusion 2020-06-25 21:58:21 -04:00
Philip Monk
51c6faaa31
ford,kiln: nicer errors 2020-06-24 21:24:58 -07:00
Philip Monk
3a662881be
clay: don't be evil 2020-06-24 21:24:27 -07:00
Philip Monk
fc42bf6039
clay: special-case +run-pact for %hoon 2020-06-24 20:26:04 -07:00
Ted Blackman
154f153801 gall: fix routes in +ap-yoke 2020-06-22 21:37:17 -04:00