Commit Graph

282 Commits

Author SHA1 Message Date
Elliot Glaysher
04ab7b5eb6 king: implement -I and --inject-event-list
This makes it so during `run`, you can inject a series of Events
into your Urbit. The `-I` injection was implemented in Vere, and
has been ported to KH, with the extended `--inject-event-list`
flag which handles a jammed list of events.

Also included is a sample generator which builds a list of events.
2020-10-21 14:39:35 -04:00
pilfer-pandex
c8159b7fe8 king: multi-request support lol 2020-10-20 16:42:20 -07:00
Elliot Glaysher
c6de028fc2
Merge pull request #3728 from urbit/kh-fix-newline
Revert "king: fix zig-zag in stderr logging"
2020-10-16 10:30:49 -04:00
fang
7853c7df9b
king: improve king subsite implementation
Make KingSubsite part of ServConf, handle 404 case more gracefully, make
slog endpoint send SSE headers immediately.

Remaining work mostly revolves around the slog endpoint's slog queue. It
builds up even if nobody is listening, and only the first to pull from
the queue gets to handle/emit the slog event.
2020-10-16 14:13:07 +02:00
pilfer-pandex
359d6c881b king: scry reform 2020-10-15 21:22:48 -07:00
Elliot Glaysher
aa8634ecdd Revert "king: fix zig-zag in stderr logging"
This reverts commit e9ed97f8a8.
2020-10-15 13:58:41 -04:00
Elliot Glaysher
9e2039ee2f arvo: Simplify the actual +code implemetation in jael. 2020-10-15 13:20:06 -04:00
Elliot Glaysher
16b3edfbd0 king: derive +code from Ring and print login +code on startup
We need to be able to programatically get the +code outside of
Urbit, so add an implementation of the derivation in king haskell.
2020-10-15 13:17:43 -04:00
pilfer-pandex
b35f879502 king: implement ~_~/slog without cookies; problems with MultiEyre 2020-10-14 17:05:56 -07:00
pilfer-pandex
e9ed97f8a8 king: fix zig-zag in stderr logging 2020-10-13 12:01:04 -07:00
pilfer-pandex
def318abd9 king: packet tests, scry tqueue 2020-10-12 21:57:01 -07:00
Elliot Glaysher
5eeb86a935 king: actually try shutting down the piers 2020-10-07 13:00:05 -04:00
Elliot Glaysher
ce92c405fe king: --serf="" is a host option, not a per ship option.
This means you don't need to specify this per ship in a multitenant
environment when you are alwyas going to set it to the same binary
if you're overriding it in the first place.
2020-10-07 13:00:00 -04:00
Elliot Glaysher
7e117f86b7 king: move internal IPC types to own file
This lets us put a StrictData annotation on these datas, without
touching the rest.
2020-10-05 14:28:17 -04:00
Elliot Glaysher
77a11a82be
Merge branch 'release/next-vere' into kh-strict 2020-10-05 13:26:46 -04:00
Elliot Glaysher
8d3e15c62b king: strictify all parsed nouns
At least some of the parsed plea structures were holding on to the raw
bytestrings through laziness.
2020-10-05 13:16:45 -04:00
Elliot Glaysher
0451953822 king: evaluate text which goes into the log 2020-10-05 13:15:57 -04:00
Elliot Glaysher
37a52136ab king: Use modifyTVar' instead of modifyTVar.
We mostly used modifyTVar', but there were a few lazy cases.
2020-10-05 13:12:22 -04:00
Elliot Glaysher
e7b69c9407 king: use Data.Map.Strict instead of Data.Map. 2020-10-05 13:12:22 -04:00
pilfer-pandex
45ad5da9e9 king: fix tests in a way that doesn't quite work 2020-10-04 16:04:47 -07:00
Elliot Glaysher
4698659bb2
Merge pull request #3575 from urbit/kh-printing-is-a-slog
King Haskell terminal fixes
2020-10-01 12:14:30 -04:00
Elliot Glaysher
4b2d2b5931 king: more review comments 2020-10-01 11:10:30 -04:00
Elliot Glaysher
dd18bf6f0f king: review comments 2020-09-28 10:56:51 -04:00
pilfer-pandex
52b917ee71 king: stateless forwarding 2020-09-26 16:10:25 -07:00
Elliot Glaysher
20a6c0331c king: set initial terminal size and react to resizes
This changes startup so we get the size of the current terminal
to send to Urbit on startup. We then subscribe to terminal size
change notifications and send those to your Urbit via the terminal
muxing system.

In the case where there are multiple terminal connections to your
Urbit, set the terminal size to the minimum of the widths.
2020-09-25 12:40:24 -04:00
Elliot Glaysher
e9f09e32c1 king: put slogs in the muxed scrollback
If you connect to an urbit using the remote terminal code,
slogs would not be printed to them since they were hard
coded to be printed to stderr. This threads slog printing
to the terminal driver, and puts them in scrollback.

(It does not actually fix slogs being printed on one line.)
2020-09-25 12:40:23 -04:00
Fang
6659c859f1
kh: abolish unicode syntax in favor of ascii 2020-09-25 01:43:03 +02:00
Fang
dd3112985e
kh: support rendering +stub as ansi escape codes
Adds support to term.hs for a %klr blit, containing a +stub describing
styled text.

Dill will start making use of this in a separate commit, for release
cutting reasons.
2020-09-15 16:50:25 +02:00
pilfer-pandex
ba79aa713a king: move most things from debug log level to info 2020-09-09 18:20:21 -07:00
Elliot Glaysher
0a3fe85c06
Merge pull request #3439 from urbit/kh-sending-chunk
king: change logging from tracing to info in Wai.hs
2020-09-08 10:32:23 -04:00
Elliot Glaysher
ecbcdf7d00 king: change logging from tracing to info in Wai.hs
I noticed that the king's text log file kept filling up, and it's
mostly 'sending chunk "\n"' from eyre. This changes the log level
of every partial send over an active eyre channel to info, instead
of always.
2020-09-05 21:49:23 -04:00
Elliot Glaysher
a42c90db9c king dawn: export functions used in tests 2020-09-04 17:02:11 -04:00
Elliot Glaysher
74b40e0e52 king dawn: nits 2020-09-04 14:44:26 -04:00
Elliot Glaysher
07089a1c93 king dawn: remove stray marks 2020-09-04 11:01:47 -04:00
Elliot Glaysher
4bd0882e7d king dawn: instead of crashing, return an error 2020-09-04 10:54:31 -04:00
Elliot Glaysher
4a7e1b2009 king dawn: replace web3 usage with hand rolled jsonrpc messages.
This replaces the autogenerated bindings to the Azimuth contracts
which use Network.Web3 with hand rolled json messages. Booting a
ship involved 256 individual galaxy point lookups using web3, while
Vere batched all of that into one JSONRPC message.

With this patch, we also batch everything at each phase into one
JSONRPC batch.
2020-09-03 16:05:08 -04:00
Elliot Glaysher
8255fc0e8c natpmp: formatting and cleanup old pmp handle 2020-08-20 20:23:25 -04:00
Elliot Glaysher
15f0df81f1 natpmp: when reopening laptop, reestablish a connection to the router. 2020-08-20 15:47:02 -04:00
Elliot Glaysher
88428961dd natpmp: also detect 172.16.0/0/12 ips as private. 2020-08-19 14:02:03 -04:00
Elliot Glaysher
1401d7bc5c natpmp: fix error handling and don't die on errors in getpubliaddress
This fixes a case where the natpmp async could pure () instead of
recursing, which would lock ames. This also adds some more error
handling on the haskell side of things and disables the raw fprintfs
in the c bindings layer.
2020-08-19 12:53:59 -04:00
Elliot Glaysher
60e2ae02a2 natpmp: cleanup by using a tristate 2020-08-18 15:43:31 -04:00
Elliot Glaysher
dca4344a45 natpmp: By default, only try to talk to the router on private ips.
Since startup hangs for seconds when you are not behind a router,
but still attempt to ask one to open ports for you, by default,
only try to contact the router if the local ip is 192.168.*.* or
10.*.*.*.

Also make port forwarding force on/off.
2020-08-18 12:22:45 -04:00
pilfer-pandex
750b986370 Merge branch 'release/next-vere' into pp/log-cli
Rename `koUseNatPmp` to `hUseNatPmp`; cleanup
2020-08-17 11:43:30 -07:00
pilfer-pandex
6a236a2749 king: use XDG cache directory for default log location 2020-08-17 11:27:30 -07:00
Elliot Glaysher
81e3a8f927 natpmp: cleanups for ~master-morzod 2020-08-17 10:58:48 -04:00
pilfer-pandex
2d1f3cdfa0 king: thread LogLevel through, make output better 2020-08-16 10:33:52 -07:00
pilfer-pandex
8ab60b9133 king: configure logging via cli flags 2020-08-14 19:40:48 -07:00
Elliot Glaysher
1b3a69e24d
Merge branch 'release/next-vere' into king-natpmp 2020-08-14 16:17:47 -04:00
Elliot Glaysher
14d1b59117 natpmp: even more cleanup 2020-08-14 10:23:39 -04:00
Elliot Glaysher
b4878a8b03 natpmp: Separate out the PortThreadMsgs from the heap actions. 2020-08-13 13:36:20 -04:00
Elliot Glaysher
a3336fde41 natpmp: more nits 2020-08-13 11:52:42 -04:00
Elliot Glaysher
1183ac0b22 natpmp: checkpoint while addressing comments 2020-08-13 11:12:26 -04:00
Elliot Glaysher
ac4b5a99e5 natpmp: Rename RunningEnv to HostEnv. 2020-08-13 10:19:35 -04:00
Elliot Glaysher
3e6fd0f8e8 natpmp: ~pilfer style nits 2020-08-13 10:08:02 -04:00
pilfer-pandex
36ee3da818
Merge pull request #3267 from urbit/pp/print-http-ports
king: eyre: add missing printouts with ports
2020-08-11 22:11:35 -07:00
pilfer-pandex
8e04cd12f0
Merge pull request #3230 from urbit/pp/ames-slow-startup
king: ames: add stderr when sending before having turfs
2020-08-10 17:47:43 -07:00
Elliot Glaysher
2e66ae10ec natpmp: use MonadIO in the bindings to remove unsightly "io $" 2020-08-10 13:15:03 -04:00
Elliot Glaysher
4d8c6ad09a nat-pmp: improve error and diagnostic messages 2020-08-10 13:02:13 -04:00
pilfer-pandex
556d92107a king: eyre: add missing printouts with ports 2020-08-09 22:12:44 -07:00
Elliot Glaysher
b7bfa170a9
Merge pull request #3262 from urbit/king-fix-eth
king: fix dawn to use the wrapped ethereum server.
2020-08-07 14:31:07 -04:00
Elliot Glaysher
4c4712f4e8 king: fix dawn to use the wrapped ethereum server. 2020-08-07 13:18:16 -04:00
Elliot Glaysher
149565cd97 king: get tests passing after nat-pmp changes 2020-08-07 13:04:57 -04:00
Elliot Glaysher
6368aa2b02 king: Turn NAT-PMP on by default, with a flag to disable.
Also: error checking.
2020-08-07 12:42:00 -04:00
Elliot Glaysher
a3e33644a9 king: port forward ames traffic behind a NAT.
Tested with a comet trying to receive traffic from a planet in the
cloud. (h/t ~master-morzod)
2020-08-06 16:26:22 -04:00
pilfer-pandex
1691c984dd king: ames: add stderr when sending before having turfs 2020-08-06 12:11:36 -07:00
Elliot Glaysher
86b445b7cb king: First attempt at integration with NATPMP.
This sets up a separate thread to handle scheduling of lease
renewals.
2020-08-05 15:33:37 -04:00
Elliot Glaysher
d39d7246d1 king: move MultiEyreApi to a new RunningEnv.
There was a TODO in runShips about how the different layers of the
RIO environment had to be changed, so that there was a layer between
KingEnv and PierEnv for things shared between individual Piers, but
which weren't used outside of any PierEnv. This addresses those
TODOs by creating RunningEnv, which for now just owns MultiEyreApi
and makes it so we don't have to pass the entire thing around
explicitly.

The IP handling stuff will go in RunningEnv in a following patch.
2020-08-04 16:56:32 -04:00
Elliot Glaysher
225d2a288b king: Add CLI options for NAT traversal.
(Not yet hooked up to anything.)
2020-08-04 16:08:35 -04:00
pilfer-pandex
1e995e8f11 king: wtf use getExecutablePath 2020-07-24 21:05:23 -07:00
pilfer-pandex
fc92fd3611 king: use c vere's heuristics for finding the serf binary 2020-07-24 16:31:43 -07:00
Joe Bryan
1953e4e2b3
Merge pull request #3099 from urbit/philip/compact
Memory compaction
2020-07-23 14:53:52 -07:00
pilfer-pandex
942e60670e king: fix ames tests 2020-07-23 13:17:02 -07:00
pilfer-pandex
7eddb89b70 king: it was too clever of me to use stateTVar; compiler can't help 2020-07-22 22:52:46 -07:00
pilfer-pandex
8e14fb8086 king: fix comment about ames q behavior 2020-07-22 22:50:22 -07:00
pilfer-pandex
4c9cbb5d19 king: ames bounded q, now with logging and fifo 2020-07-22 22:48:35 -07:00
pilfer-pandex
3349ea511f king: fix goshdarn typo 2020-07-21 21:22:08 -07:00
pilfer-pandex
565be3cad6 king: drop ames packets when >1k are unprocessed 2020-07-21 21:15:06 -07:00
Joe Bryan
a580f96416 serf: adds subcommands to urbit-worker 2020-07-21 17:15:11 -07:00
Joe Bryan
2994e0e44e vere: wires |pack to new compaction; renames old |pack to |cram 2020-07-21 14:10:15 -07:00
Joe Bryan
a53f688d01 vere/serf/king: support timeouts and error response in %peek 2020-06-27 00:12:53 -07:00
Joe Bryan
6fa194d527 Merge branch 'master' into jb/ipc-redux
* master: (147 commits)
  vere: bump version to 0.10.7
  libsigsegv: disable stack vma check
  vere: bump version to 0.10.6
  ci: add travis as trusted user
  jets: use appropriate macro
  noun: add -C to control memo cache size
  jets: restore fond/play/peek hooks
  jam: add commented-out functionality to count size of atom
  jets: cap memo cache and remove peek, play, and fond jets
  noun: add functions to count size of noun
  release: urbit-os-v1.0.23
  interface/config: fix production build
  soto: run +on-load migration once
  publish, links: restore full height
  sh/build-interface: amend for SPA
  interface/CONTRIBUTING: amend for SPA / webpack
  solid: update pill
  hood + apps: fix OTA process for feat/SPA
  hood: add version %6 for %file-server upgrade
  chat: equally size both code + s3 buttons
  ...
2020-06-26 13:33:00 -07:00
Joe Bryan
db9472dbe2 vere/king: tweaks serf startup args (unconditionally send all) 2020-06-26 12:29:18 -07:00
Joe Bryan
6e9f8ec34b king: fixes --serf worker-path cli parser 2020-06-26 00:54:29 -07:00
Joe Bryan
81ff98c5d4 vere/king/serf: adds and enables event timeouts 2020-06-26 00:54:29 -07:00
~siprel
57ef4254e4 Merge branch 'khrc' of https://github.com/urbit/urbit into siprel/sigwinch 2020-06-12 18:27:25 +00:00
~siprel
e8e46ee8c4 Merge branch 'master' of https://github.com/urbit/urbit into siprel/sigwinch 2020-06-12 18:19:51 +00:00
~siprel
2f02a6d0e6 king: Command line flag to enable verbose logging. 2020-06-11 02:07:10 +00:00
~siprel
eb81f5ca14 Less verbose log output. 2020-06-11 02:02:53 +00:00
~siprel
849d25044a king: disable "bullshit scry tester" 2020-06-11 00:32:15 +00:00
~siprel
ba5bd09724 CLI option for serf exe + serf exe/flags live in PierConfig. 2020-06-10 23:56:48 +00:00
~siprel
f0f82d7e14 king: Handle %vega/%exit, %wack on boot, and stop logging secrets. 2020-06-10 22:00:37 +00:00
~siprel
dabe38be0d In non-daemon mode, initial serf slogs are user-visiable. 2020-06-10 21:17:55 +00:00
~siprel
c721baee7f king: serf stderr goes to terminals. 2020-06-10 21:03:46 +00:00
~siprel
cefc25cbe1 king: ^C from connected terminals kills current event. 2020-06-10 20:53:55 +00:00
~siprel
b552149610 king: handle tanks that are just a cord. 2020-06-10 20:04:09 +00:00
~siprel
e178ad353d king: Fix spinner bugs. 2020-06-10 19:25:51 +00:00
~siprel
c57c3023f9 king: Event prioritization and error handling for born events. 2020-06-10 19:22:45 +00:00
~siprel
cc772da03c king: Urbit.Vere.Pier cleanup. 2020-06-08 23:07:42 +00:00
~siprel
528e1d29ff king: Separate out urbit-eventlog-lmdb package. 2020-06-08 22:01:28 +00:00
~siprel
957f14ee40 king: Minor cleanup. 2020-06-08 21:22:04 +00:00
~siprel
1f4c823d92 king: Separate package for racquire + small cleanup. 2020-06-08 20:23:30 +00:00
~siprel
ff646f4830 king: Snapshot on shutdown; no snapshot on start if no events to replay. 2020-06-08 17:45:41 +00:00
~siprel
ba50eb94cd king: Spin off urbit-noun-core and urbit-noun packages. 2020-06-08 17:24:05 +00:00
~siprel
a88849743c king: Module re-org in prepraration for new IO-Driver interface. 2020-06-08 01:19:43 +00:00
~siprel
21975cf929 King: Fixed a few bugs. 2020-06-07 23:35:54 +00:00
~siprel
6ab2d78d7b king: Progress bars on replay. 2020-06-07 00:26:59 +00:00
~siprel
95df4b0764 king: Pier cleanup pass. 2020-06-06 23:34:27 +00:00
~siprel
648b0743c8 king: Shutdown TMVars now live in KingEnv/PierEnv. 2020-06-06 23:16:34 +00:00
~siprel
bd51337156 king: In non-daemon-mode, ^D now actually brings down the executable. 2020-06-06 21:33:15 +00:00
~siprel
45d7ac6150 king: Cleanup date serialization and move to Urbit.Time. 2020-06-05 16:20:21 +00:00
~siprel
54acebb0c5 Got bulshit scry working and hooked up replay progress callback. 2020-06-04 23:49:56 +00:00
~siprel
3838cf8abb ^C brings king/serf down cleanly and promptly. 2020-06-04 21:10:33 +00:00
~siprel
45f475a178 king: snapshot requests block until event log catches up to serf. 2020-06-02 23:03:04 +00:00
~siprel
28f464fc42 king: Each event comes with error callback, but all do nothing for now. 2020-06-02 20:48:07 +00:00
~siprel
61bdb3cac0 king: Re-Implemenet collectFX and log events as passed to the serf. 2020-06-01 21:31:24 +00:00
~siprel
75b97d9e60 Docs and cleanup for Urbit.Vere.Serf.IPC. 2020-06-01 17:51:37 +00:00
~siprel
a4f5ea2e2f king: Urbit.Vere.King.IPC cleanup + handle scry/pack. 2020-05-31 22:43:34 +00:00
~siprel
2f852c2e9f king: Remove GoodParse hack in newRunCompute. 2020-05-31 22:04:56 +00:00
Benjamin Summers
47247d86d2 Merge branch 'khrc' of github.com:urbit/urbit into ipc-redux-kh 2020-05-29 17:15:16 -07:00
Benjamin Summers
3c0db10703 king: Get tests to compile. 2020-05-29 15:57:35 -07:00
~siprel
7ece09c0d1 king: Cleanup IPC batching in swimming flow. 2020-05-29 20:16:37 +00:00
~siprel
ba440c8e3a king: Make sure spinner callbacks are handled correctly from serf. 2020-05-29 19:20:53 +00:00
~siprel
bc35ec0406 king: IPC Batching during replay and normal operation. 2020-05-29 02:14:25 +00:00
~siprel
80b905c239 king: Slogs routed to both terminal and log output. 2020-05-28 18:56:51 +00:00
~siprel
d8f90ead07 king: Misc Small Cleanup. 2020-05-28 18:21:43 +00:00
~siprel
ca13d3f79b king: Better handling of edge-cases around IPC failure. 2020-05-28 00:08:53 +00:00
~siprel
8e78266d74 king: Review and Cleanup w/ Harrison 2020-05-27 22:57:34 +00:00
~siprel
1f64a528cd king: Handle replacement events correctly (dont try to parse them). 2020-05-27 00:08:07 +00:00
~siprel
26bd5a9e4b king: Got new IPC working, still needs lots of polish. 2020-05-26 23:01:03 +00:00
Benjamin Summers
c5896f5ea0 HasKingEnv + HasPierEnv + misc cleanup 2020-05-22 11:37:58 -07:00
~siprel
e10d8ab9cb king: Fleshed out some IPC flows for new protocol. 2020-05-21 22:42:00 +00:00
Benjamin Summers
0b2c78e24b king: Skecthed out lowest layer of new IPC protocol. 2020-05-20 17:35:33 -07:00
Joe Bryan
0d4b0f6e30 WIP kh ipc protocol 2020-05-20 14:20:01 -07:00
Benjamin Summers
419dc03727 RIO environment cleanup. 2020-05-13 12:55:16 -07:00
Benjamin Summers
097259de66 king: Use random numbers for request IDs. 2020-05-13 12:06:55 -07:00
Benjamin Summers
66278edd19 king: Logging cleanup. 2020-05-13 12:06:32 -07:00
Benjamin Summers
ba4b9e7fdf king: Use same logger from all contexts. 2020-05-13 11:29:50 -07:00
Benjamin Summers
b749017564 king: eyre: [WIP] Got multi-tenet HTTPS working. 2020-05-12 17:33:55 -07:00
Benjamin Summers
4ebf276430 king: Flags to disable HTTP/HTTPS/UDP per-ship. 2020-05-12 16:55:49 -07:00
Benjamin Summers
ba705694bd king: eyre: [WIP] Got multi-tenet HTTPS working. 2020-05-12 15:43:19 -07:00
Benjamin Summers
67245e9052 king: eyre: Got multi-tenet HTTP working. 2020-05-12 12:53:40 -07:00
Benjamin Summers
f8cd148f0e king: eyre: Hooked up multi-tenet HTTP. Start-up is a bit hacky. Still totally untested. 2020-05-12 12:04:46 -07:00
Benjamin Summers
965f599788 king: eyre: Finished multi-tenet HTTP flow (not yet started by king). 2020-05-11 12:51:51 -07:00
Benjamin Summers
c1454b1366 king: Finish factoring out HTTP server lifecycle from Eyre. 2020-05-10 15:27:02 -07:00
Benjamin Summers
37855fd704 king: Factor out HTTP server lifecycle from Eyre + impl multi-tenet HTTP. 2020-05-09 13:01:47 -07:00
Benjamin Summers
4b6c2c6ce0 king: Renamed %eyre modules. 2020-05-08 11:29:18 -07:00
Benjamin Summers
5ba113b499 Begin factoring out Raw HTTP logic from Eyre. 2020-05-07 17:38:27 -07:00
Benjamin Summers
36ca949317 king: Factored out DNS flow from Ames driver. 2020-05-07 14:15:32 -07:00
Benjamin Summers
21dcddc65b king: Factored out UDP flow from Ames driver. 2020-05-05 16:18:29 -07:00
Benjamin Summers
47bf14f0f2 king: Further sketch of shared http. 2020-05-05 10:29:36 -07:00