Compare commits

..

10 Commits

Author SHA1 Message Date
6cf01adb61 chore: tidy deps
All checks were successful
arcad/emissary/pipeline/head This commit looks good
2023-08-14 14:49:41 -06:00
8e88b5a7f1 feat(auth): remote and local third-party authentication
Some checks reported warnings
arcad/emissary/pipeline/head This commit is unstable
2023-08-14 14:42:23 -06:00
42d49eb090 feat: move client to public package
All checks were successful
arcad/emissary/pipeline/head This commit looks good
2023-06-25 11:46:33 -06:00
4217850c30 chore: adding demo cast
All checks were successful
arcad/emissary/pipeline/head This commit looks good
2023-06-23 18:38:49 +02:00
4a58847d52 chore: update readme
All checks were successful
arcad/emissary/pipeline/head This commit looks good
2023-06-23 06:42:25 -06:00
42559408da chore: update logo
All checks were successful
arcad/emissary/pipeline/head This commit looks good
2023-06-23 06:26:27 -06:00
a5fbe3e6e0 chore: add logo
All checks were successful
arcad/emissary/pipeline/head This commit looks good
2023-06-22 09:05:16 -06:00
d73e027ee3 doc: uci configuration deployment tutorial
All checks were successful
arcad/emissary/pipeline/head This commit looks good
2023-05-26 15:53:00 +02:00
054744e3e9 fix: systemd units
All checks were successful
arcad/emissary/pipeline/head This commit looks good
2023-05-25 21:23:15 +02:00
0e664bce44 doc: add first steps tutorial (fr) 2023-05-25 21:22:56 +02:00
45 changed files with 1514 additions and 97 deletions

View File

@ -1,4 +1,6 @@
# Emissary
<p align="center">
<img width="400" src="./misc/resources/logo.svg" />
</p>
Control plane for "edge" (and OpenWRT-based) devices.
@ -14,6 +16,8 @@ Download the pre-compiled binaries from the [releases page](https://forge.cadole
See [`doc`](./doc/README.md)
## Licence
## Licence & mentions
AGPL-3.0
[AGPL-3.0](https://www.gnu.org/licenses/agpl-3.0.html#license-text)
Logo by [@aardouin](https://forge.cadoles.com/aardouin)

858
casts/emissary.cast Normal file
View File

@ -0,0 +1,858 @@
{"version": 2, "width": 240, "height": 82, "timestamp": 1687535780, "env": {"SHELL": "/bin/zsh", "TERM": "xterm-256color"}, "title": "Emissary in action"}
[1.096253, "o", "Identity added: /home/pcaseiro/.ssh/id_rsa (/home/pcaseiro/.ssh/id_rsa)\r\n"]
[1.099418, "o", "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m \r \r"]
[1.214747, "o", "\u001b]0;cadoles/emissary\u0007"]
[1.319126, "o", "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J\u001b[m\u001b[1mpcaseiro@numenor\u001b[0m\u001b[1m:~/code/cadoles/emissary\u001b[0m (pts/25 \u001b[4m/bin/zsh 5.9\u001b[24m UltimaThule) \u001b[1m17:56:22 \u001b[0m\u001b[35m(\u001b[39mgit\u001b[35m)\u001b[39m \u001b[35m[\u001b[39m\u001b[32mmaster\u001b[39m\u001b[35m|\u001b[39m\u001b[32m\u001b[39m\u001b[0m\u001b[31m\u001b[39m\u001b[0m\u001b[33m+1\u001b[39m\u001b[0m…3\u001b[32m\u001b[39m\u001b[0m\u001b[33m\u001b[39m\u001b[0m\u001b[35m]\u001b[39m\r\n\u001b[7m!429 Z1 ?0 L3\u001b[27m \u001b[1m~/code/cadoles/emissary →\u001b[0m \u001b[K\u001b[194C 100%\u001b[199D\u001b[?1h\u001b=\u001b[?2004h"]
[3.647795, "o", "\u001b[32mt\u001b[39m"]
[3.719657, "o", "\b\u001b[1m\u001b[31mt\u001b[1m\u001b[31mm\u001b[0m\u001b[39m"]
[3.830544, "o", "\b\b\u001b[1m\u001b[31mt\u001b[1m\u001b[31mm\u001b[1m\u001b[31mu\u001b[0m\u001b[39m"]
[4.003306, "o", "\b\b\b\u001b[0m\u001b[32mt\u001b[0m\u001b[32mm\u001b[0m\u001b[32mu\u001b[32mx\u001b[39m\u001b[1m \u001b[0m"]
[4.382336, "o", "\b\u001b[0m \b\u001b[?1l\u001b>\u001b[?2004l\u001b[K\r\r\n"]
[4.38264, "o", "\u001b]0;tmux\u0007"]
[4.39146, "o", "\u001b[?1h\u001b=\u001b[H\u001b[2J\u001b[?12l\u001b[?25h\u001b[?1000l\u001b[?1002l\u001b[?1003l\u001b[?1006l\u001b[?1005l\u001b(B\u001b[m\u001b[?12l\u001b[?25h\u001b[?1006l\u001b[?1000l\u001b[?1002l\u001b[?1003l\u001b[?2004l\u001b[1;1H\u001b[1;82r\u001b[>c\u001b[>q\u001b[1;1H"]
[4.391933, "o", "\u001b[?25l\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\u001b[37m\u001b[40m\r\n\u001b[32mnumenor\u001b[37m0:zsh* \"numenor\" 17:56 23-juin-23\u001b(B\u001b[m\u001b[?12l\u001b[?25h\u001b[1;1H"]
[4.392315, "o", "\u001b(B\u001b[m\u001b[?12l\u001b[?25h\u001b[?1006l\u001b[?1000l\u001b[?1002l\u001b[?1003l\u001b[?2004l\u001b[1;1H\u001b[1;82r\u001b[1;1H\u001b[?7727h\u001b[?7727h"]
[4.392677, "o", "\u001b[?25l\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\u001b[37m\u001b[40m\r\n\u001b[32mnumenor\u001b[37m0:zsh* \"numenor\" 17:56 23-juin-23\u001b(B\u001b[m\u001b[?12l\u001b[?25h\u001b[1;1H"]
[5.392151, "o", "\u001b[?25l\u001b[120C│\u001b[2;121H│\u001b[3;121H│\u001b[4;121H│\u001b[5;121H│\u001b[6;121H│\u001b[7;121H│\u001b[8;121H│\u001b[9;121H│\u001b[10;121H│\u001b[11;121H│\u001b[12;121H│\u001b[13;121H│\u001b[14;121H│\u001b[15;121H│\u001b[16;121H│\u001b[17;121H│\u001b[18;121H│\u001b[19;121H│\u001b[20;121H│\u001b[21;121H│\u001b[22;121H│\u001b[23;121H│\u001b[24;121H│\u001b[25;121H│\u001b[26;121H│\u001b[27;121H│\u001b[28;121H│\u001b[29;121H│\u001b[30;121H│\u001b[31;121H│\u001b[32;121H│\u001b[33;121H│\u001b[34;121H│\u001b[35;121H│\u001b[36;121H│\u001b[37;121H│\u001b[38;121H│\u001b[39;121H│\u001b[40;121H│\u001b[41;121H│\u001b[42;121H\u001b[32m│\u001b[43;121H│\u001b[44;121H│\u001b[45;121H│\u001b[46;121H│\u001b[47;121H│\u001b[48;121H│\u001b[49;121H│\u001b[50;121H│\u001b[51;121H│\u001b[52;121H│\u001b[53;121H│\u001b[54;121H│\u001b[55;121H│\u001b[56;121H│\u001b[57;121H│\u001b[58;121H│\u001b[59;121H│\u001b[60;121H│\u001b[61;121H│\u001b[62;121H│\u001b[63;121H│\u001b[64;121H│\u001b[65;121H│\u001b[66;121H│\u001b[67;121H│\u001b[68;121H│\u001b[69;121H│\u001b[70;121H│\u001b[71;121H│\u001b[72;121H│\u001b[73;121H│\u001b[74;121H│\u001b[75;121H│\u001b[76;121H│\u001b[77;121H│\u001b[78;121H│\u001b[79;121H│\u001b[80;121H│\u001b[81;121H│\u001b(B\u001b[m\u001b[1;120H\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1"]
[5.392363, "o", "K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\u001b[1;122H\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\u001b[37m\u001b[40m\r\n\u001b[32mnumenor\u001b[37m0:zsh* \"numenor\" 17:56 23-juin-23\u001b(B\u001b[m\u001b[?12l\u001b[?25h\u001b[1;122H"]
[5.528654, "o", "\u001b[HIdentity added: /home/pcaseiro/.ssh/id_rsa (/home/pcaseiro/.ssh/id_rsa)\u001b[50C"]
[5.531563, "o", "\r\n \u001b[1;122H"]
[5.749901, "o", "\u001b[1;81r\u001b[3;120H\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\u001b[2d\u001b[1K\r\u001b[36mtmux \u001b[39m\u001b[1mpcaseiro@numenor:~/code/cadoles/emissary\u001b(B\u001b[m (pts/26 \u001b[4m-zsh 5.9\u001b(B\u001b[m UltimaThule) \u001b[1m17:56:26 \u001b(B\u001b[m\u001b[35m(\u001b[39mgit\u001b[35m)\u001b[39m \u001b[35m[\u001b[32mmaster\u001b[35m|\u001b[33m+1\u001b[39m…3\u001b[35m]\r\n\u001b[39m\u001b[7m!430 Z1 ?0 L2\u001b(B\u001b[m \u001b[1m~/code/cadoles/emissary →\u001b(B\u001b[m \u001b[74X\u001b[74C 100%\u001b[1X\u001b[1;82r\u001b[1;122H"]
[6.471831, "o", "Identity added: /home/pcaseiro/.ssh/id_rsa (/home/pcaseiro/.ssh/id_rsa)\u001b[2;122H"]
[6.474732, "o", " \u001b[2;122H"]
[6.565444, "o", "\u001b[?25l\u001b[1;121H\u001b[32m│\u001b[2;121H│\u001b[3;121H│\u001b[4;121H│\u001b[5;121H│\u001b[6;121H│\u001b[7;121H│\u001b[8;121H│\u001b[9;121H│\u001b[10;121H│\u001b[11;121H│\u001b[12;121H│\u001b[13;121H│\u001b[14;121H│\u001b[15;121H│\u001b[16;121H│\u001b[17;121H│\u001b[18;121H│\u001b[19;121H│\u001b[20;121H│\u001b[21;121H│\u001b[22;121H│\u001b[23;121H│\u001b[24;121H│\u001b[25;121H│\u001b[26;121H│\u001b[27;121H│\u001b[28;121H│\u001b[29;121H│\u001b[30;121H│\u001b[31;121H│\u001b[32;121H│\u001b[33;121H│\u001b[34;121H│\u001b[35;121H│\u001b[36;121H│\u001b[37;121H│\u001b[38;121H│\u001b[39;121H│\u001b[40;121H│\u001b[41;121H│\u001b[42;121H\u001b[39m│\u001b[43;121H│\u001b[44;121H│\u001b[45;121H│\u001b[46;121H│\u001b[47;121H│\u001b[48;121H│\u001b[49;121H│\u001b[50;121H│\u001b[51;121H│\u001b[52;121H│\u001b[53;121H│\u001b[54;121H│\u001b[55;121H│\u001b[56;121H│\u001b[57;121H│\u001b[58;121H│\u001b[59;121H│\u001b[60;121H│\u001b[61;121H│\u001b[62;121H│\u001b[63;121H│\u001b[64;121H│\u001b[65;121H│\u001b[66;121H│\u001b[67;121H│\u001b[68;121H│\u001b[69;121H│\u001b[70;121H│\u001b[71;121H│\u001b[72;121H│\u001b[73;121H│\u001b[74;121H│\u001b[75;121H│\u001b[76;121H│\u001b[77;121H│\u001b[78;121H│\u001b[79;121H│\u001b[80;121H│\u001b[81;121H│\u001b(B\u001b[m\u001b[?12l\u001b[?25h\u001b[3;41H\u001b[?2004h"]
[6.686474, "o", "\u001b[1;81r\u001b[3;122H\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\u001b[2d\u001b[K\u001b[36mtmux \u001b[39m\u001b[1mpcaseiro@numenor:~/code/cadoles/emissary\u001b(B\u001b[m (pts/27 \u001b[4m-zsh 5.9\u001b(B\u001b[m UltimaThule) \u001b[1m17:56:27 \u001b(B\u001b[m\u001b[35m(\u001b[39mgit\u001b[35m)\u001b[39m \u001b[35m[\u001b[32mmaster\u001b[35m|\u001b[33m+1\u001b[39m…3\u001b[35m]\u001b[3;122H\u001b[39m\u001b[7m!430 Z1 ?0 L2\u001b(B\u001b[m \u001b[1m~/code/cadoles/emissary →\u001b(B\u001b[m \u001b[73X\u001b[73C 100%\u001b[K\u001b[1;82r\u001b[3;41H"]
[7.461303, "o", "\r\nbck-i-search: _\u001b[105X\u001b[3;41H"]
[7.748982, "o", "asciinema rec --cols 240 -t \"Emissary in action\" casts/emissary.ca\u001b[4ms\u001b(B\u001b[mt\u001b[4;15Hs_\u001b[3;107H"]
[7.900863, "o", "\u001b[8D\u001b[4mss\u001b[6C\u001b(B\u001b[ms\u001b[4;16Hs_\u001b[3;99H"]
[8.02899, "o", "\u001b[41G\u001b[4mssh\u001b(B\u001b[m openwrt \u001b[4;17Hh_\u001b[3;41H"]
[10.029326, "o", "\u001b[4Cemissary-server\u001b[19D"]
[10.55251, "o", "\u001b[32mssh\u001b[39m\u001b[16C\u001b[61X\u001b[4;120H\u001b[1K\r\u001b[?2004l"]
[10.903301, "o", "Welcome to Alpine!\u001b[6;1HThe Alpine Wiki contains a large amount of how-to guides and general\r\ninformation about administrating Alpine systems.\r\nSee <https://wiki.alpinelinux.org/>.\u001b[10;1HYou can setup the system with the command: setup-alpine\u001b[12;1HYou may change this message by editing /etc/motd.\u001b[14;1Hemissary:~# "]
[11.269977, "o", "\u001b[?25l\u001b[1;121H\u001b[32m│\u001b[2;121H│\u001b[3;121H│\u001b[4;121H│\u001b[5;121H│\u001b[6;121H│\u001b[7;121H│\u001b[8;121H│\u001b[9;121H│\u001b[10;121H│\u001b[11;121H│\u001b[12;121H│\u001b[13;121H│\u001b[14;121H│\u001b[15;121H│\u001b[16;121H│\u001b[17;121H│\u001b[18;121H│\u001b[19;121H│\u001b[20;121H│\u001b[21;121H│\u001b[22;121H│\u001b[23;121H│\u001b[24;121H│\u001b[25;121H│\u001b[26;121H│\u001b[27;121H│\u001b[28;121H│\u001b[29;121H│\u001b[30;121H│\u001b[31;121H│\u001b[32;121H│\u001b[33;121H│\u001b[34;121H│\u001b[35;121H│\u001b[36;121H│\u001b[37;121H│\u001b[38;121H│\u001b[39;121H│\u001b[40;121H│\u001b[41;121H│\u001b[42;121H\u001b[39m│\u001b[43;121H│\u001b[44;121H│\u001b[45;121H│\u001b[46;121H│\u001b[47;121H│\u001b[48;121H│\u001b[49;121H│\u001b[50;121H│\u001b[51;121H│\u001b[52;121H│\u001b[53;121H│\u001b[54;121H│\u001b[55;121H│\u001b[56;121H│\u001b[57;121H│\u001b[58;121H│\u001b[59;121H│\u001b[60;121H│\u001b[61;121H│\u001b[62;121H│\u001b[63;121H│\u001b[64;121H│\u001b[65;121H│\u001b[66;121H│\u001b[67;121H│\u001b[68;121H│\u001b[69;121H│\u001b[70;121H│\u001b[71;121H│\u001b[72;121H│\u001b[73;121H│\u001b[74;121H│\u001b[75;121H│\u001b[76;121H│\u001b[77;121H│\u001b[78;121H│\u001b[79;121H│\u001b[80;121H│\u001b[81;121H│\u001b(B\u001b[m\u001b[37m\u001b[40m\r\n\u001b[32mnumenor\u001b[37m0:ss"]
[11.27011, "o", "h* \"numenor\" 17:56 23-juin-23\u001b(B\u001b[m\u001b[?12l\u001b[?25h\u001b[14;13H"]
[11.374342, "o", "\u001b[?25l\u001b[1;121H│\u001b[2;121H│\u001b[3;121H│\u001b[4;121H│\u001b[5;121H│\u001b[6;121H│\u001b[7;121H│\u001b[8;121H│\u001b[9;121H│\u001b[10;121H│\u001b[11;121H│\u001b[12;121H│\u001b[13;121H│\u001b[14;121H│\u001b[15;121H│\u001b[16;121H│\u001b[17;121H│\u001b[18;121H│\u001b[19;121H│\u001b[20;121H│\u001b[21;121H│\u001b[22;121H│\u001b[23;121H│\u001b[24;121H│\u001b[25;121H│\u001b[26;121H│\u001b[27;121H│\u001b[28;121H│\u001b[29;121H│\u001b[30;121H│\u001b[31;121H│\u001b[32;121H│\u001b[33;121H│\u001b[34;121H│\u001b[35;121H│\u001b[36;121H│\u001b[37;121H│\u001b[38;121H│\u001b[39;121H│\u001b[40;121H│\u001b[41;121H│\u001b[42;121H\u001b[32m│\u001b[43;121H│\u001b[44;121H│\u001b[45;121H│\u001b[46;121H│\u001b[47;121H│\u001b[48;121H│\u001b[49;121H│\u001b[50;121H│\u001b[51;121H│\u001b[52;121H│\u001b[53;121H│\u001b[54;121H│\u001b[55;121H│\u001b[56;121H│\u001b[57;121H│\u001b[58;121H│\u001b[59;121H│\u001b[60;121H│\u001b[61;121H│\u001b[62;121H│\u001b[63;121H│\u001b[64;121H│\u001b[65;121H│\u001b[66;121H│\u001b[67;121H│\u001b[68;121H│\u001b[69;121H│\u001b[70;121H│\u001b[71;121H│\u001b[72;121H│\u001b[73;121H│\u001b[74;121H│\u001b[75;121H│\u001b[76;121H│\u001b[77;121H│\u001b[78;121H│\u001b[79;121H│\u001b[80;121H│\u001b[81;121H│\u001b(B\u001b[m\u001b[?12l\u001b[?25h\u001b[3;162H\u001b[?2004h"]
[11.734148, "o", "\u001b[?25l\u001b[1;121H│\u001b[2;121H│\u001b[3;121H│\u001b[4;121H│\u001b[5;121H│\u001b[6;121H│\u001b[7;121H│\u001b[8;121H│\u001b[9;121H│\u001b[10;121H│\u001b[11;121H│\u001b[12;121H│\u001b[13;121H│\u001b[14;121H│\u001b[15;121H│\u001b[16;121H│\u001b[17;121H│\u001b[18;121H│\u001b[19;121H│\u001b[20;121H│\u001b[21;121H│\u001b[22;121H│\u001b[23;121H│\u001b[24;121H│\u001b[25;121H│\u001b[26;121H│\u001b[27;121H│\u001b[28;121H│\u001b[29;121H│\u001b[30;121H│\u001b[31;121H│\u001b[32;121H│\u001b[33;121H│\u001b[34;121H│\u001b[35;121H│\u001b[36;121H│\u001b[37;121H│\u001b[38;121H│\u001b[39;121H│\u001b[40;121H│\u001b[41;121H│\u001b[42;121H\u001b[32m│\u001b[43;121H│\u001b[44;121H│\u001b[45;121H│\u001b[46;121H│\u001b[47;121H│\u001b[48;121H│\u001b[49;121H│\u001b[50;121H│\u001b[51;121H│\u001b[52;121H│\u001b[53;121H│\u001b[54;121H│\u001b[55;121H│\u001b[56;121H│\u001b[57;121H│\u001b[58;121H│\u001b[59;121H│\u001b[60;121H│\u001b[61;121H│\u001b[62;121H│\u001b[63;121H│\u001b[64;121H│\u001b[65;121H│\u001b[66;121H│\u001b[67;121H│\u001b[68;121H│\u001b[69;121H│\u001b[70;121H│\u001b[71;121H│\u001b[72;121H│\u001b[73;121H│\u001b[74;121H│\u001b[75;121H│\u001b[76;121H│\u001b[77;121H│\u001b[78;121H│\u001b[79;121H│\u001b[80;121H│\u001b[81;121H│\u001b(B\u001b[m\u001b[37m\u001b[40m\r\n\u001b[32mnumenor\u001b[37m0:zsh* "]
[11.734179, "o", " \"numenor\" 17:56 23-juin-23\u001b(B\u001b[m\u001b[?12l\u001b[?25h\u001b[3;162H"]
[11.737856, "o", "\u001b[31m\u001b[1ms\u001b(B\u001b[m"]
[11.918625, "o", "\b\u001b[32mss\u001b(B\u001b[m"]
[12.1028, "o", "\b\b\u001b[32mssh\u001b(B\u001b[m"]
[12.272136, "o", " "]
[12.768316, "o", "o"]
[12.880351, "o", "p"]
[12.999971, "o", "e"]
[13.168165, "o", "n"]
[13.383201, "o", "w"]
[13.551917, "o", "r"]
[13.719397, "o", "t"]
[14.318327, "o", "\u001b[K\u001b[4;122H\u001b[?2004l"]
[14.449636, "o", "\u001b[2BBusyBox v1.35.0 (2023-03-27 07:03:24 UTC) built-in shell (ash)\u001b[8;122H"]
[14.451825, "o", " _______ ________ __\u001b[9;122H | |.-----.-----.-----.| | | |.----.| |_\u001b[10;122H | - || _ | -__| || | | || _|| _|\u001b[11;122H |_______|| __|_____|__|__||________||__| |____|\u001b[12;122H |__| W I R E L E S S F R E E D O M\u001b[13;122H -----------------------------------------------------\u001b[14;122H OpenWrt 22.03.2, r19803-9a599fee93\u001b[15;122H -----------------------------------------------------\u001b[16;122H"]
[14.463042, "o", "=== WARNING! =====================================\u001b[17;122HThere is no root password defined on this device!\u001b[18;122HUse the \"passwd\" command to set up a new password\u001b[19;122Hin order to prevent unauthorized SSH logins.\u001b[20;122H--------------------------------------------------\u001b[21;122H"]
[14.463903, "o", "root@OpenWrt:~# "]
[14.791692, "o", "\u001b[?25l\u001b[1;121H│\u001b[2;121H│\u001b[3;121H│\u001b[4;121H│\u001b[5;121H│\u001b[6;121H│\u001b[7;121H│\u001b[8;121H│\u001b[9;121H│\u001b[10;121H│\u001b[11;121H│\u001b[12;121H│\u001b[13;121H│\u001b[14;121H│\u001b[15;121H│\u001b[16;121H│\u001b[17;121H│\u001b[18;121H│\u001b[19;121H│\u001b[20;121H│\u001b[21;121H│\u001b[22;121H│\u001b[23;121H│\u001b[24;121H│\u001b[25;121H│\u001b[26;121H│\u001b[27;121H│\u001b[28;121H│\u001b[29;121H│\u001b[30;121H│\u001b[31;121H│\u001b[32;121H│\u001b[33;121H│\u001b[34;121H│\u001b[35;121H│\u001b[36;121H│\u001b[37;121H│\u001b[38;121H│\u001b[39;121H│\u001b[40;121H│\u001b[41;121H│\u001b[42;121H\u001b[32m│\u001b[43;121H│\u001b[44;121H│\u001b[45;121H│\u001b[46;121H│\u001b[47;121H│\u001b[48;121H│\u001b[49;121H│\u001b[50;121H│\u001b[51;121H│\u001b[52;121H│\u001b[53;121H│\u001b[54;121H│\u001b[55;121H│\u001b[56;121H│\u001b[57;121H│\u001b[58;121H│\u001b[59;121H│\u001b[60;121H│\u001b[61;121H│\u001b[62;121H│\u001b[63;121H│\u001b[64;121H│\u001b[65;121H│\u001b[66;121H│\u001b[67;121H│\u001b[68;121H│\u001b[69;121H│\u001b[70;121H│\u001b[71;121H│\u001b[72;121H│\u001b[73;121H│\u001b[74;121H│\u001b[75;121H│\u001b[76;121H│\u001b[77;121H│\u001b[78;121H│\u001b[79;121H│\u001b[80;121H│\u001b[81;121H│\u001b(B\u001b[m\u001b[37m\u001b[40m\r\n\u001b[32mnumenor\u001b[37m0:ssh* "]
[14.791733, "o", " \"numenor\" 17:56 23-juin-23\u001b(B\u001b[m\u001b[?12l\u001b[?25h\u001b[21;138H"]
[15.6169, "o", "\u001b[1;81r\u001b[2;122H\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\u001b[1d\u001b[Kroot@OpenWrt:~# \u001b[2;122H\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\u001b[1;138H\u001b[K\u001b[1;82r\u001b[1;138H"]
[16.197477, "o", "\u001b[?25l\u001b[17D\u001b[32m│\u001b[2;121H│\u001b[3;121H│\u001b[4;121H│\u001b[5;121H│\u001b[6;121H│\u001b[7;121H│\u001b[8;121H│\u001b[9;121H│\u001b[10;121H│\u001b[11;121H│\u001b[12;121H│\u001b[13;121H│\u001b[14;121H│\u001b[15;121H│\u001b[16;121H│\u001b[17;121H│\u001b[18;121H│\u001b[19;121H│\u001b[20;121H│\u001b[21;121H│\u001b[22;121H│\u001b[23;121H│\u001b[24;121H│\u001b[25;121H│\u001b[26;121H│\u001b[27;121H│\u001b[28;121H│\u001b[29;121H│\u001b[30;121H│\u001b[31;121H│\u001b[32;121H│\u001b[33;121H│\u001b[34;121H│\u001b[35;121H│\u001b[36;121H│\u001b[37;121H│\u001b[38;121H│\u001b[39;121H│\u001b[40;121H│\u001b[41;121H│\u001b[42;121H\u001b[39m│\u001b[43;121H│\u001b[44;121H│\u001b[45;121H│\u001b[46;121H│\u001b[47;121H│\u001b[48;121H│\u001b[49;121H│\u001b[50;121H│\u001b[51;121H│\u001b[52;121H│\u001b[53;121H│\u001b[54;121H│\u001b[55;121H│\u001b[56;121H│\u001b[57;121H│\u001b[58;121H│\u001b[59;121H│\u001b[60;121H│\u001b[61;121H│\u001b[62;121H│\u001b[63;121H│\u001b[64;121H│\u001b[65;121H│\u001b[66;121H│\u001b[67;121H│\u001b[68;121H│\u001b[69;121H│\u001b[70;121H│\u001b[71;121H│\u001b[72;121H│\u001b[73;121H│\u001b[74;121H│\u001b[75;121H│\u001b[76;121H│\u001b[77;121H│\u001b[78;121H│\u001b[79;121H│\u001b[80;121H│\u001b[81;121H│\u001b(B\u001b[m\u001b[?12l\u001b[?25h\u001b[14;13H"]
[16.712675, "o", "\u001b[1;81r\u001b[2;120H\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\u001b[1d\u001b[1K\u001b[Hemissary:~# \u001b[2;120H\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\u001b[1;13H\u001b[108X\u001b[1;82r\u001b[1;13H"]
[20.46497, "o", "e"]
[20.64927, "o", "c"]
[20.760832, "o", "h"]
[20.840642, "o", "o"]
[20.944446, "o", " "]
[21.05675, "o", "\""]
[21.409471, "o", "T"]
[21.536293, "o", "h"]
[21.62476, "o", "e"]
[21.776569, "o", " "]
[21.88008, "o", "s"]
[21.9763, "o", "e"]
[22.048532, "o", "r"]
[22.200914, "o", "v"]
[22.272281, "o", "e"]
[22.384782, "o", "r"]
[22.584381, "o", "\""]
[24.224157, "o", "\r\nThe server\r\nemissary:~# "]
[24.97398, "o", "\u001b[?25l\u001b[1;121H│\u001b[2;121H│\u001b[3;121H│\u001b[4;121H│\u001b[5;121H│\u001b[6;121H│\u001b[7;121H│\u001b[8;121H│\u001b[9;121H│\u001b[10;121H│\u001b[11;121H│\u001b[12;121H│\u001b[13;121H│\u001b[14;121H│\u001b[15;121H│\u001b[16;121H│\u001b[17;121H│\u001b[18;121H│\u001b[19;121H│\u001b[20;121H│\u001b[21;121H│\u001b[22;121H│\u001b[23;121H│\u001b[24;121H│\u001b[25;121H│\u001b[26;121H│\u001b[27;121H│\u001b[28;121H│\u001b[29;121H│\u001b[30;121H│\u001b[31;121H│\u001b[32;121H│\u001b[33;121H│\u001b[34;121H│\u001b[35;121H│\u001b[36;121H│\u001b[37;121H│\u001b[38;121H│\u001b[39;121H│\u001b[40;121H│\u001b[41;121H│\u001b[42;121H\u001b[32m│\u001b[43;121H│\u001b[44;121H│\u001b[45;121H│\u001b[46;121H│\u001b[47;121H│\u001b[48;121H│\u001b[49;121H│\u001b[50;121H│\u001b[51;121H│\u001b[52;121H│\u001b[53;121H│\u001b[54;121H│\u001b[55;121H│\u001b[56;121H│\u001b[57;121H│\u001b[58;121H│\u001b[59;121H│\u001b[60;121H│\u001b[61;121H│\u001b[62;121H│\u001b[63;121H│\u001b[64;121H│\u001b[65;121H│\u001b[66;121H│\u001b[67;121H│\u001b[68;121H│\u001b[69;121H│\u001b[70;121H│\u001b[71;121H│\u001b[72;121H│\u001b[73;121H│\u001b[74;121H│\u001b[75;121H│\u001b[76;121H│\u001b[77;121H│\u001b[78;121H│\u001b[79;121H│\u001b[80;121H│\u001b[81;121H│\u001b(B\u001b[m\u001b[?12l\u001b[?25h\u001b[1;138H"]
[25.66414, "o", "e"]
[25.863716, "o", "c"]
[25.94348, "o", "h"]
[26.04007, "o", "o"]
[26.127871, "o", " "]
[26.512402, "o", "\""]
[26.808562, "o", "T"]
[26.992072, "o", "h"]
[27.079539, "o", "e"]
[27.464842, "o", " "]
[27.560029, "o", "c"]
[27.639923, "o", "l"]
[27.767737, "o", "i"]
[27.800173, "o", "e"]
[28.456016, "o", "n"]
[28.567718, "o", "t"]
[28.752508, "o", "\""]
[29.056597, "o", "\u001b[2;122HThe client\u001b[3;122Hroot@OpenWrt:~# "]
[29.878218, "o", "\u001b[?25l\u001b[1;121H\u001b[32m│\u001b[2;121H│\u001b[3;121H│\u001b[4;121H│\u001b[5;121H│\u001b[6;121H│\u001b[7;121H│\u001b[8;121H│\u001b[9;121H│\u001b[10;121H│\u001b[11;121H│\u001b[12;121H│\u001b[13;121H│\u001b[14;121H│\u001b[15;121H│\u001b[16;121H│\u001b[17;121H│\u001b[18;121H│\u001b[19;121H│\u001b[20;121H│\u001b[21;121H│\u001b[22;121H│\u001b[23;121H│\u001b[24;121H│\u001b[25;121H│\u001b[26;121H│\u001b[27;121H│\u001b[28;121H│\u001b[29;121H│\u001b[30;121H│\u001b[31;121H│\u001b[32;121H│\u001b[33;121H│\u001b[34;121H│\u001b[35;121H│\u001b[36;121H│\u001b[37;121H│\u001b[38;121H│\u001b[39;121H│\u001b[40;121H│\u001b[41;121H│\u001b[42;121H\u001b[39m│\u001b[43;121H│\u001b[44;121H│\u001b[45;121H│\u001b[46;121H│\u001b[47;121H│\u001b[48;121H│\u001b[49;121H│\u001b[50;121H│\u001b[51;121H│\u001b[52;121H│\u001b[53;121H│\u001b[54;121H│\u001b[55;121H│\u001b[56;121H│\u001b[57;121H│\u001b[58;121H│\u001b[59;121H│\u001b[60;121H│\u001b[61;121H│\u001b[62;121H│\u001b[63;121H│\u001b[64;121H│\u001b[65;121H│\u001b[66;121H│\u001b[67;121H│\u001b[68;121H│\u001b[69;121H│\u001b[70;121H│\u001b[71;121H│\u001b[72;121H│\u001b[73;121H│\u001b[74;121H│\u001b[75;121H│\u001b[76;121H│\u001b[77;121H│\u001b[78;121H│\u001b[79;121H│\u001b[80;121H│\u001b[81;121H│\u001b(B\u001b[m\u001b[?12l\u001b[?25h\u001b[3;13H"]
[34.220106, "o", "emissary api agent query\r\n"]
[34.239871, "o", "+----+-------+------------+--------+-------------+-----------+\r\n| ID | LABEL | THUMBPRINT | STATUS | CONTACTEDAT | UPDATEDAT |\r\n+----+-------+------------+--------+-------------+-----------+\r\n+----+-------+------------+--------+-------------+-----------+\r\n"]
[34.240119, "o", "emissary:~# "]
[41.285104, "o", "\u001b[?25l\u001b[37m\u001b[40m\u001b[82;1H\u001b[32mnumenor\u001b[37m0:ssh* \"numenor\" 17:57 23-juin-23\u001b(B\u001b[m\u001b[?12l\u001b[?25h\u001b[8;13H"]
[41.430426, "o", "\u001b[?25l\u001b[1;121H│\u001b[2;121H│\u001b[3;121H│\u001b[4;121H│\u001b[5;121H│\u001b[6;121H│\u001b[7;121H│\u001b[8;121H│\u001b[9;121H│\u001b[10;121H│\u001b[11;121H│\u001b[12;121H│\u001b[13;121H│\u001b[14;121H│\u001b[15;121H│\u001b[16;121H│\u001b[17;121H│\u001b[18;121H│\u001b[19;121H│\u001b[20;121H│\u001b[21;121H│\u001b[22;121H│\u001b[23;121H│\u001b[24;121H│\u001b[25;121H│\u001b[26;121H│\u001b[27;121H│\u001b[28;121H│\u001b[29;121H│\u001b[30;121H│\u001b[31;121H│\u001b[32;121H│\u001b[33;121H│\u001b[34;121H│\u001b[35;121H│\u001b[36;121H│\u001b[37;121H│\u001b[38;121H│\u001b[39;121H│\u001b[40;121H│\u001b[41;121H│\u001b[42;121H\u001b[32m│\u001b[43;121H│\u001b[44;121H│\u001b[45;121H│\u001b[46;121H│\u001b[47;121H│\u001b[48;121H│\u001b[49;121H│\u001b[50;121H│\u001b[51;121H│\u001b[52;121H│\u001b[53;121H│\u001b[54;121H│\u001b[55;121H│\u001b[56;121H│\u001b[57;121H│\u001b[58;121H│\u001b[59;121H│\u001b[60;121H│\u001b[61;121H│\u001b[62;121H│\u001b[63;121H│\u001b[64;121H│\u001b[65;121H│\u001b[66;121H│\u001b[67;121H│\u001b[68;121H│\u001b[69;121H│\u001b[70;121H│\u001b[71;121H│\u001b[72;121H│\u001b[73;121H│\u001b[74;121H│\u001b[75;121H│\u001b[76;121H│\u001b[77;121H│\u001b[78;121H│\u001b[79;121H│\u001b[80;121H│\u001b[81;121H│\u001b(B\u001b[m\u001b[?12l\u001b[?25h\u001b[3;138H"]
[41.847638, "o", "u"]
[42.008691, "o", "c"]
[42.128767, "o", "i"]
[42.265178, "o", "\u001b[19Droot@OpenWrt:~# uci \u001b[1;81r\u001b[4;122H\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\u001b[3;142H\u001b[K\u001b[1;82r\u001b[3;142H"]
[43.528431, "o", "s"]
[43.624275, "o", "e"]
[43.704262, "o", "t"]
[43.832626, "o", " "]
[44.064036, "o", "e"]
[44.184356, "o", "m"]
[44.344144, "o", "i"]
[44.488508, "o", "s"]
[44.671926, "o", "s"]
[44.856414, "o", "a"]
[45.008191, "o", "r"]
[45.152474, "o", "y"]
[46.496924, "o", "."]
[46.760587, "o", "a"]
[46.896795, "o", "g"]
[46.984154, "o", "e"]
[47.064542, "o", "n"]
[47.192499, "o", "t"]
[47.376814, "o", "."]
[47.520459, "o", "s"]
[47.616461, "o", "e"]
[47.696447, "o", "r"]
[47.856801, "o", "v"]
[47.927634, "o", "e"]
[48.056252, "o", "r"]
[48.720662, "o", "."]
[49.569159, "o", "\u001b[1;81r\u001b[4;122H\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\u001b[3;167H\u001b[K\u001b[1;82r\u001b[3;167H"]
[49.768382, "o", "_"]
[50.023726, "o", "u"]
[50.142999, "o", "r"]
[50.223839, "o", "l"]
[50.520493, "o", "="]
[50.88052, "o", "\""]
[51.232583, "o", "h"]
[51.32012, "o", "t"]
[51.472428, "o", "t"]
[51.568167, "o", "p"]
[51.784203, "o", ":"]
[52.007861, "o", "/"]
[52.832643, "o", "/"]
[53.504824, "o", "1"]
[53.71259, "o", "9"]
[53.800503, "o", "2"]
[53.952258, "o", "."]
[54.056515, "o", "1"]
[54.760124, "o", "6"]
[54.95909, "o", "8"]
[55.199962, "o", "."]
[56.128917, "o", "3"]
[56.232664, "o", "0"]
[56.448551, "o", "."]
[56.648562, "o", "2"]
[56.839948, "o", "0"]
[56.968233, "o", "0"]
[57.184279, "o", ":"]
[58.167802, "o", "3"]
[58.416307, "o", "0"]
[58.559587, "o", "0"]
[58.695934, "o", "0"]
[58.88815, "o", "\""]
[60.416273, "o", "\u001b[4;122H"]
[60.418825, "o", "root@OpenWrt:~# "]
[65.007294, "o", "u"]
[65.15203, "o", "c"]
[65.247617, "o", "i"]
[65.376629, "o", " "]
[65.520236, "o", "c"]
[65.576313, "o", "o"]
[65.632476, "o", "m"]
[65.783985, "o", "m"]
[65.87259, "o", "i"]
[65.95938, "o", "t"]
[66.432359, "o", "\u001b[5;122H"]
[66.477194, "o", "root@OpenWrt:~# "]
[67.992659, "o", "r"]
[68.047986, "o", "e"]
[68.184009, "o", "l"]
[68.352416, "o", "o"]
[68.375924, "o", "a"]
[68.488309, "o", "d"]
[68.648621, "o", "_"]
[68.824006, "o", "c"]
[68.903873, "o", "o"]
[68.951758, "o", "n"]
[69.023743, "o", "f"]
[69.14403, "o", "i"]
[69.24805, "o", "g"]
[69.640712, "o", "\u001b[6;122H"]
[69.674411, "o", "root@OpenWrt:~# "]
[71.305363, "o", "l"]
[71.472546, "o", "o"]
[72.031131, "o", "g"]
[72.312714, "o", "r"]
[72.512058, "o", "e"]
[72.873856, "o", "\u001b[21Droot@OpenWrt:~# logread \u001b[1;81r\u001b[7;122H\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\u001b[6;146H\u001b[K\u001b[1;82r\u001b[6;146H"]
[73.375291, "o", "f"]
[73.752486, "o", "\u001b[1;81r\u001b[7;122H\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\u001b[6;146H\u001b[K\u001b[1;82r\u001b[6;146H"]
[73.959425, "o", "-"]
[74.055612, "o", "f"]
[74.519013, "o", "\u001b[7;122H"]
[76.806035, "o", "\u001b[?25l\u001b[1;121H\u001b[32m│\u001b[2;121H│\u001b[3;121H│\u001b[4;121H│\u001b[5;121H│\u001b[6;121H│\u001b[7;121H│\u001b[8;121H│\u001b[9;121H│\u001b[10;121H│\u001b[11;121H│\u001b[12;121H│\u001b[13;121H│\u001b[14;121H│\u001b[15;121H│\u001b[16;121H│\u001b[17;121H│\u001b[18;121H│\u001b[19;121H│\u001b[20;121H│\u001b[21;121H│\u001b[22;121H│\u001b[23;121H│\u001b[24;121H│\u001b[25;121H│\u001b[26;121H│\u001b[27;121H│\u001b[28;121H│\u001b[29;121H│\u001b[30;121H│\u001b[31;121H│\u001b[32;121H│\u001b[33;121H│\u001b[34;121H│\u001b[35;121H│\u001b[36;121H│\u001b[37;121H│\u001b[38;121H│\u001b[39;121H│\u001b[40;121H│\u001b[41;121H│\u001b[42;121H\u001b[39m│\u001b[43;121H│\u001b[44;121H│\u001b[45;121H│\u001b[46;121H│\u001b[47;121H│\u001b[48;121H│\u001b[49;121H│\u001b[50;121H│\u001b[51;121H│\u001b[52;121H│\u001b[53;121H│\u001b[54;121H│\u001b[55;121H│\u001b[56;121H│\u001b[57;121H│\u001b[58;121H│\u001b[59;121H│\u001b[60;121H│\u001b[61;121H│\u001b[62;121H│\u001b[63;121H│\u001b[64;121H│\u001b[65;121H│\u001b[66;121H│\u001b[67;121H│\u001b[68;121H│\u001b[69;121H│\u001b[70;121H│\u001b[71;121H│\u001b[72;121H│\u001b[73;121H│\u001b[74;121H│\u001b[75;121H│\u001b[76;121H│\u001b[77;121H│\u001b[78;121H│\u001b[79;121H│\u001b[80;121H│\u001b[81;121H│\u001b(B\u001b[m\u001b[?12l\u001b[?25h\u001b[8;13H"]
[78.441454, "o", "\remissary:~# emissary api agent query\u001b[1;81r\u001b[9;120H\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\u001b[8;37H\u001b[84X\u001b[1;82r\u001b[8;37H"]
[79.408341, "o", "\r\n"]
[79.423951, "o", "+----+-------+-----------------------------------+--------+-----------------------------------+-------------------------\r\n----------+\r\n| ID | LABEL | THUMBPRINT | STATUS | CONTACTEDAT | UPDATEDAT \r\n |\r\n+----+-------+-----------------------------------+--------+-----------------------------------+-------------------------\r\n----------+\r\n| 1 | | 23ZQ4yoK869AFHJ6ryA8EpnAz8ZESr... | 0 | 2023-06-23 15:57:32.068805967 ... | \"2023-06-23T15:57:31.807\r\n03548Z... |\r\n+----+-------+-----------------------------------+--------+-----------------------------------+-------------------------\r\n----------+\r\n"]
[79.424215, "o", "emissary:~# "]
[83.713006, "o", "\r(reverse-i-search)'': \u001b[1;81r\u001b[20;120H\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\u001b[19;23H\u001b[98X\u001b[1;82r\u001b[19;23H"]
[90.209796, "o", "\r(reverse-i-search)'e': emissary api agent query\u001b[1;81r\u001b[20;120H\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\u001b[19;48H\u001b[73X\u001b[1;82r\u001b[19;24H"]
[90.457633, "o", "\r(reverse-i-search)'em': emissary api agent query\u001b[1;81r\u001b[20;120H\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\u001b[19;49H\u001b[72X\u001b[1;82r\u001b[19;25H"]
[91.032749, "o", "\remissary:~# emissary api agent query\u001b[1;81r\u001b[20;120H\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\u001b[19;37H\u001b[84X\u001b[13G^C\u001b[21;1Hemissary:~# \u001b[1;82r\u001b[21;13H"]
[91.568147, "o", "e"]
[91.688802, "o", "m"]
[91.792506, "o", "i"]
[91.88046, "o", "s"]
[92.048302, "o", "s"]
[92.169954, "o", "\remissary:~# emissary \u001b[1;81r\u001b[22;120H\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\u001b[21;22H\u001b[99X\u001b[1;82r\u001b[21;22H"]
[93.128744, "o", "a"]
[93.280615, "o", "p"]
[93.391802, "o", "i"]
[93.7609, "o", "\u001b[1;81r\u001b[22;120H\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\u001b[21;24H\u001b[97X\u001b[1;82r\u001b[21;24H"]
[94.07231, "o", "\u001b[1;81r\u001b[22;120H\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\u001b[21;23H\u001b[98X\u001b[1;82r\u001b[21;23H"]
[94.728386, "o", "p"]
[94.871923, "o", "i"]
[95.014665, "o", " "]
[95.199348, "o", "a"]
[95.352379, "o", "g"]
[95.424111, "o", "e"]
[95.519963, "o", "n"]
[95.624473, "o", "t"]
[95.808593, "o", " "]
[95.975659, "o", "u"]
[96.072053, "o", "p"]
[96.119892, "o", "d"]
[96.160294, "o", "a"]
[96.255722, "o", "t"]
[96.3603, "o", "e"]
[99.497311, "o", " "]
[99.920521, "o", "-"]
[100.079886, "o", "-"]
[100.448167, "o", "a"]
[100.6005, "o", "g"]
[100.68773, "o", "e"]
[100.768361, "o", "n"]
[100.855628, "o", "t"]
[101.112387, "o", "-"]
[101.248498, "o", "i"]
[101.367919, "o", "d"]
[101.488491, "o", " "]
[102.008363, "o", "1"]
[102.616774, "o", " "]
[103.080221, "o", "-"]
[103.224243, "o", "-"]
[103.368202, "o", "s"]
[103.448563, "o", "t"]
[103.512568, "o", "a"]
[103.60873, "o", "t"]
[103.688521, "o", "u"]
[103.808492, "o", "s"]
[103.872428, "o", " "]
[104.120393, "o", "1"]
[104.449135, "o", "\r\n"]
[104.749948, "o", "+----+-------+-----------------------------------+--------+-----------------------------------+-------------------------\r\n----------+\r\n| ID | LABEL | THUMBPRINT | STATUS | CONTACTEDAT | UPDATEDAT \r\n |\r\n+----+-------+-----------------------------------+--------+-----------------------------------+-------------------------\r\n----------+\r\n| 1 | | 23ZQ4yoK869AFHJ6ryA8EpnAz8ZESr... | 1 | 2023-06-23 15:57:32.068805967 ... | \"2023-06-23T15:58:05.165\r\n446799... |\r\n+----+-------+-----------------------------------+--------+-----------------------------------+-------------------------\r\n----------+\r\n"]
[104.751768, "o", "emissary:~# "]
[109.395515, "o", "\u001b[?25l\u001b[37m\u001b[40m\u001b[82;1H\u001b[32mnumenor\u001b[37m0:ssh* \"numenor\" 17:58 23-juin-23\u001b(B\u001b[m\u001b[?12l\u001b[?25h\u001b[32;13H"]
[117.160555, "o", "c"]
[117.248149, "o", "a"]
[117.360084, "o", "t"]
[117.656612, "o", " "]
[117.800299, "o", "c"]
[117.880754, "o", "o"]
[117.936245, "o", "n"]
[118.008473, "o", "f"]
[118.096709, "o", "\remissary:~# cat config/\u001b[1;81r\u001b[33;120H\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\u001b[32;24H\u001b[97X\u001b[1;82r\u001b[32;24H"]
[119.464482, "o", "m"]
[119.64143, "o", "y"]
[119.784378, "o", "\remissary:~# cat config/my-\u001b[1;81r\u001b[33;120H\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\u001b[32;27H\u001b[94X\u0007\u001b[1;82r\u001b[32;27H"]
[120.632281, "o", "u"]
[120.721236, "o", "\remissary:~# cat config/my-uci-spec.json \u001b[1;81r\u001b[33;120H\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\u001b[32;41H\u001b[80X\u001b[1;82r\u001b[32;41H"]
[123.304407, "o", "|"]
[123.74422, "o", " "]
[124.128128, "o", "e"]
[124.263941, "o", "m"]
[124.424373, "o", "s"]
[124.680564, "o", "s"]
[124.882004, "o", "\u0007"]
[125.279809, "o", "\u001b[1;81r\u001b[33;120H\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\u001b[32;46H\u001b[75X\u001b[1;82r\u001b[32;46H"]
[125.40824, "o", "\u001b[1;81r\u001b[33;120H\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\u001b[32;45H\u001b[76X\u001b[1;82r\u001b[32;45H"]
[125.584136, "o", "i"]
[125.67197, "o", "s"]
[125.801892, "o", "\remissary:~# cat config/my-uci-spec.json | emissary \u001b[1;81r\u001b[33;120H\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\u001b[32;52H\u001b[69X\u001b[1;82r\u001b[32;52H"]
[127.264396, "o", "a"]
[127.368578, "o", "p"]
[127.496614, "o", "i"]
[127.640492, "o", " "]
[127.784315, "o", "a"]
[127.967952, "o", "g"]
[128.080574, "o", "e"]
[128.192217, "o", "n"]
[128.336294, "o", "t"]
[129.383797, "o", " "]
[129.928473, "o", "s"]
[130.046847, "o", "p"]
[130.128637, "o", "e"]
[130.31167, "o", "c"]
[130.391636, "o", " "]
[130.504311, "o", "u"]
[130.599886, "o", "p"]
[130.664288, "o", "d"]
[130.704209, "o", "a"]
[130.800609, "o", "t"]
[130.904428, "o", "e"]
[130.944592, "o", " "]
[131.152072, "o", "-"]
[131.271984, "o", "a"]
[131.378654, "o", "\u001b[7;122HFri Jun 23 15:58:32 2023 daemon.info emissary[3471]: 2023-06-23 15:58:32.225 [INFO]\u001b[5C<./internal/agent/controller/pe\u001b[8;122Hrsistence/controller.go:58>\u001b[5C(*Controller).Reconcile\u001b[Cno changes detected, doing nothing\u001b[6C{\"controller\": \"persist\u001b[9;122Hence-controller\"}\u001b[32;76H"]
[131.809911, "o", "\u001b[10;122HFri Jun 23 15:58:32 2023 daemon.info emissary[3471]: 2023-06-23 15:58:32.657 [INFO]\u001b[5C<./internal/agent/controller/pr\u001b[11;122Hoxy/controller.go:35>\u001b[3C(*Controller).Reconcile\u001b[Ccould not find proxy spec\u001b[7C{\"controller\": \"proxy-controller\"}\u001b[12;122HFri Jun 23 15:58:32 2023 daemon.info emissary[3471]: 2023-06-23 15:58:32.657 [INFO]\u001b[5C<./internal/agent/controller/op\u001b[13;122Henwrt/uci_controller.go:32>\u001b[5C(*UCIController).Reconcile\u001b[6Ccould not find uci spec, doing nothing\u001b[2C{\"controller\": \u001b[14;122H\"uci-controller\"}\u001b[15;122HFri Jun 23 15:58:32 2023 daemon.info emissary[3471]: 2023-06-23 15:58:32.657 [INFO]\u001b[5C<./internal/agent/controller/ap\u001b[16;122Hp/controller.go:42>\u001b[5C(*Controller).Reconcile\u001b[Ccould not find app spec\u001b[C{\"controller\": \"app-controller\"}\u001b[17;122HFri Jun 23 15:58:32 2023 daemon.info emissary[3471]: 2023-06-23 15:58:32.658 [INFO]\u001b[5C<./internal/agent/controller/op\u001b[18;122Henwrt/sysupgrade_controller.go:36>\u001b[6C(*SysUpgradeController).Reconcile\u001b[7Ccould not find sysupgrade spec, doing n\u001b"]
[131.810072, "o", "[19;122Hothing\u001b[2C{\"controller\": \"sysupgrade-controller\"}\u001b[32;76H"]
[131.86396, "o", " "]
[132.592293, "o", "1"]
[134.37625, "o", " "]
[134.672641, "o", "-"]
[134.831325, "o", "-"]
[135.512804, "o", "n"]
[135.680765, "o", "o"]
[135.895838, "o", "-"]
[136.088186, "o", "p"]
[136.183895, "o", "a"]
[136.264002, "o", "t"]
[136.688423, "o", "c"]
[136.800043, "o", "h"]
[137.368326, "o", " "]
[138.096691, "o", "-"]
[138.248192, "o", "-"]
[138.376434, "o", "p"]
[138.480395, "o", "s"]
[138.576492, "o", "e"]
[138.992883, "o", "\u001b[1;81r\u001b[33;120H\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\u001b[32;94H\u001b[27X\u001b[1;82r\u001b[32;94H"]
[139.152606, "o", "\u001b[1;81r\u001b[33;120H\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\u001b[32;93H\u001b[28X\u001b[1;82r\u001b[32;93H"]
[139.632082, "o", "\u001b[1;81r\u001b[33;120H\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\u001b[32;92H\u001b[29X\u001b[1;82r\u001b[32;92H"]
[139.768562, "o", "s"]
[139.864029, "o", "p"]
[139.968671, "o", "e"]
[140.192028, "o", "c"]
[141.313515, "o", "-"]
[141.544495, "o", "d"]
[141.616185, "o", "a"]
[141.712432, "o", "t"]
[141.80823, "o", "a"]
[148.097053, "o", " "]
[149.008624, "o", "-"]
[149.217313, "o", " "]
[149.744995, "o", "-"]
[149.872177, "o", "-"]
[150.008948, "o", "p"]
[150.127181, "o", "s"]
[150.521487, "o", "\u001b[1;81r\u001b[33;120H\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\u001b[32;107H\u001b[14X\u001b[1;82r\u001b[32;107H"]
[150.74489, "o", "\u001b[1;81r\u001b[33;120H\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\u001b[32;106H\u001b[15X\u001b[1;82r\u001b[32;106H"]
[150.936482, "o", "s"]
[151.368788, "o", "p"]
[151.472664, "o", "e"]
[151.648574, "o", "c"]
[153.10513, "o", " "]
[153.497267, "o", "\u001b[1;81r\u001b[33;120H\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\u001b[32;110H\u001b[11X\u001b[1;82r\u001b[32;110H"]
[153.728312, "o", "-"]
[153.928423, "o", "n"]
[154.032525, "o", "a"]
[154.13689, "o", "m"]
[154.256425, "o", "e"]
[154.383972, "o", " "]
[154.975936, "o", "u"]
[155.192467, "o", "c"]
[155.272635, "o", "i"]
[155.60074, "o", "."]
[157.335898, "o", "e\r\n"]
[157.432746, "o", "m"]
[157.55987, "o", "i"]
[157.688586, "o", "s"]
[157.848415, "o", "s"]
[157.904094, "o", "a"]
[158.064258, "o", "r"]
[158.168433, "o", "y"]
[158.448669, "o", "."]
[158.592486, "o", "c"]
[158.66391, "o", "a"]
[158.776459, "o", "d"]
[158.872514, "o", "o"]
[159.016117, "o", "l"]
[159.088205, "o", "e"]
[159.160836, "o", "s"]
[159.29661, "o", "."]
[159.384514, "o", "c"]
[159.520686, "o", "o"]
[159.5924, "o", "m"]
[160.217903, "o", "\r\n"]
[160.491787, "o", "+----+--------------------------+-----------------------------------+----------+-----------------------------------+----\r\n-------------------------------+\r\n| ID | NAME | DATA | REVISION | CREATEDAT | UPD\r\nATEDAT |\r\n+----+--------------------------+-----------------------------------+----------+-----------------------------------+----\r\n-------------------------------+\r\n| 1 | uci.emissary.cadoles.com | {\"config\":{\"packages\":[{\"confi... | 0 | \"2023-06-23T15:59:00.937205005... | \"20\r\n23-06-23T15:59:00.937205005... |\r\n+----+--------------------------+-----------------------------------+----------+-----------------------------------+----\r\n-------------------------------+\r\n"]
[160.492898, "o", "emissary:~# "]
[167.752531, "o", "c"]
[167.824121, "o", "a"]
[167.936812, "o", "t"]
[168.120152, "o", " "]
[168.248404, "o", "c"]
[168.328154, "o", "o"]
[168.38465, "o", "n"]
[168.456121, "o", "f"]
[168.544836, "o", "\remissary:~# cat config/\u001b[1;81r\u001b[45;120H\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\u001b[44;24H\u001b[97X\u001b[1;82r\u001b[44;24H"]
[169.398711, "o", "\u001b[?25l\u001b[37m\u001b[40m\u001b[82;1H\u001b[32mnumenor\u001b[37m0:ssh* \"numenor\" 17:59 23-juin-23\u001b(B\u001b[m\u001b[?12l\u001b[?25h\u001b[44;24H"]
[170.048353, "o", "a"]
[170.143951, "o", "p"]
[170.31291, "o", "p"]
[170.50528, "o", "\remissary:~# cat config/app.emissary.cadoles.com.json \u001b[1;81r\u001b[45;120H\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\u001b[44;54H\u001b[67X\u001b[1;82r\u001b[44;54H"]
[172.896918, "o", "|"]
[173.184616, "o", " "]
[173.512251, "o", "e"]
[173.632645, "o", "m"]
[173.992759, "o", "i"]
[174.080153, "o", "s"]
[174.248666, "o", "s"]
[174.354212, "o", "\remissary:~# cat config/app.emissary.cadoles.com.json | emissary \u001b[1;81r\u001b[45;120H\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\u001b[44;65H\u001b[56X\u001b[1;82r\u001b[44;65H"]
[175.856833, "o", "a"]
[175.944762, "o", "p"]
[176.072667, "o", "i"]
[176.176415, "o", " "]
[176.280326, "o", "a"]
[176.416098, "o", "g"]
[176.504283, "o", "e"]
[176.600052, "o", "n"]
[177.056578, "o", "t"]
[177.160676, "o", " "]
[178.336251, "o", "s"]
[178.440892, "o", "p"]
[178.560014, "o", "e"]
[178.928922, "o", "c"]
[179.792395, "o", " "]
[180.78425, "o", "u"]
[180.896636, "o", "p"]
[180.944444, "o", "d"]
[181.000584, "o", "a"]
[181.120239, "o", "t"]
[181.184768, "o", "e"]
[181.240728, "o", " "]
[181.368838, "o", "-"]
[181.496538, "o", "a"]
[181.633077, "o", " "]
[181.992822, "o", "1"]
[182.272325, "o", " "]
[183.752904, "o", "-"]
[183.920789, "o", "-"]
[184.560267, "o", "n"]
[184.695618, "o", "o"]
[184.895732, "o", "-"]
[185.064886, "o", "p"]
[185.144271, "o", "a"]
[185.224775, "o", "t"]
[185.625037, "o", "c"]
[185.777507, "o", "h"]
[186.200872, "o", " "]
[186.824121, "o", "-"]
[186.952816, "o", "-"]
[187.112502, "o", "s"]
[187.232069, "o", "p"]
[187.992605, "o", "e"]
[188.17644, "o", "c"]
[188.384273, "o", "-"]
[188.488801, "o", "d"]
[188.616825, "o", "a"]
[188.656927, "o", "t"]
[188.784603, "o", "a"]
[191.372274, "o", "\u001b[20;122HFri Jun 23 15:59:32 2023 daemon.info emissary[3471]: 2023-06-23 15:59:32.218 [INFO]\u001b[5C<./internal/agent/controller/pe\u001b[21;122Hrsistence/controller.go:58>\u001b[5C(*Controller).Reconcile\u001b[Cno changes detected, doing nothing\u001b[6C{\"controller\": \"persist\u001b[22;122Hence-controller\"}\u001b[44;114H"]
[191.624997, "o", " "]
[191.752374, "o", "\u001b[23;122HFri Jun 23 15:59:32 2023 daemon.info emissary[3471]: 2023-06-23 15:59:32.598 [INFO]\u001b[5C<./internal/agent/controller/pr\u001b[24;122Hoxy/controller.go:35>\u001b[3C(*Controller).Reconcile\u001b[Ccould not find proxy spec\u001b[7C{\"controller\": \"proxy-controller\"}\u001b[44;115H"]
[191.757907, "o", "\u001b[25;122HFri Jun 23 15:59:32 2023 daemon.info emissary[3471]: 2023-06-23 15:59:32.606 [INFO]\u001b[5C<./internal/agent/controller/op\u001b[26;122Henwrt/uci_controller.go:40>\u001b[5C(*UCIController).Reconcile\u001b[6Cretrieved spec\u001b[2C{\"controller\": \"uci-controller\", \"spec\"\u001b[27;122H: \"uci.emissary.cadoles.com\", \"revision\": 0}\u001b[44;115H"]
[191.758357, "o", "\u001b[28;122HFri Jun 23 15:59:32 2023 daemon.info emissary[3471]: 2023-06-23 15:59:32.607 [INFO]\u001b[5C<./internal/agent/controller/op\u001b[29;122Henwrt/uci_controller.go:61>\u001b[5C(*UCIController).updateConfiguration\u001b[4Cimporting uci config\u001b[4C{\"controller\": \"uci-con\u001b[30;122Htroller\"}\u001b[44;115H"]
[191.936718, "o", "-"]
[192.119847, "o", " "]
[192.279354, "o", "\u001b[31;122HFri Jun 23 15:59:33 2023 daemon.info emissary[3471]: 2023-06-23 15:59:33.128 [INFO]\u001b[5C<./internal/agent/controller/op\u001b[32;122Henwrt/uci_controller.go:55>\u001b[5C(*UCIController).Reconcile\u001b[6Cupdating current spec revision\u001b[2C{\"controller\": \"uci-con\u001b[33;122Htroller\", \"revision\": 0}\u001b[34;122HFri Jun 23 15:59:33 2023 daemon.info emissary[3471]: 2023-06-23 15:59:33.128 [INFO]\u001b[5C<./internal/agent/controller/ap\u001b[35;122Hp/controller.go:42>\u001b[5C(*Controller).Reconcile\u001b[Ccould not find app spec\u001b[C{\"controller\": \"app-controller\"}\u001b[36;122HFri Jun 23 15:59:33 2023 daemon.info emissary[3471]: 2023-06-23 15:59:33.128 [INFO]\u001b[5C<./internal/agent/controller/op\u001b[37;122Henwrt/sysupgrade_controller.go:36>\u001b[6C(*SysUpgradeController).Reconcile\u001b[7Ccould not find sysupgrade spec, doing n\u001b[38;122Hothing\u001b[2C{\"controller\": \"sysupgrade-controller\"}\u001b[44;117H"]
[192.617006, "o", "-"]
[192.744737, "o", "-"]
[193.360547, "o", "s"]
[193.464729, "o", "p\r\n"]
[193.482541, "o", "\u001b[39;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: exiting on receipt of SIGTERM\u001b[45;1H"]
[193.53542, "o", "\u001b[40;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: started, version 2.86 cachesize 150\u001b[41;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: DNS service limited to local subnets\u001b[42;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: compile time options: IPv6 GNU-getopt no-DBus UBus no-i18n no-IDN DHCP\u001b[43;122H no-DHCPv6 no-Lua TFTP no-conntrack no-ipset no-auth no-cryptohash no-DNSSEC no-ID loop-detect inotify dumpfile\u001b[44;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: UBus support enabled: connected to system bus\u001b[45;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for test\u001b[46;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for onion\u001b[47;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for localhost\u001b[48;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for local\u001b[49;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locall"]
[193.535452, "o", "y-known addresses for invalid\u001b[50;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for bind\u001b[51;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for lan\u001b[52;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: reading /tmp/resolv.conf.d/resolv.conf.auto\u001b[45;1H\u001b[53;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using nameserver 192.168.5.53#53\u001b[54;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for test\u001b[55;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for onion\u001b[56;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for localhost\u001b[57;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for local\u001b[58;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for invalid\u001b[59;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-know"]
[193.535471, "o", "n addresses for bind\u001b[45;1H\u001b[60;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for lan\u001b[61;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: read /etc/hosts - 4 addresses\u001b[62;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: read /tmp/hosts/dhcp.cfg01411c - 0 addresses\u001b[45;1H"]
[193.568717, "o", "e"]
[193.694113, "o", "\u001b[63;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: read /etc/hosts - 4 addresses\u001b[64;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: read /tmp/hosts/dhcp.cfg01411c - 0 addresses\u001b[45;2H"]
[193.752914, "o", "c"]
[199.320776, "o", "-"]
[199.537004, "o", "n"]
[199.648409, "o", "a"]
[199.744294, "o", "m"]
[199.848727, "o", "e"]
[201.264275, "o", " "]
[201.440715, "o", "a"]
[201.576086, "o", "p"]
[201.72881, "o", "p"]
[202.04052, "o", "."]
[202.328931, "o", "e"]
[202.496948, "o", "m"]
[202.809086, "o", "i"]
[203.025228, "o", "s"]
[203.193087, "o", "s"]
[203.833397, "o", "a"]
[203.977048, "o", "r"]
[204.169049, "o", "y"]
[204.465105, "o", "."]
[204.608648, "o", "c"]
[204.657042, "o", "a"]
[204.809386, "o", "d"]
[204.90468, "o", "o"]
[205.056543, "o", "l"]
[205.104671, "o", "e"]
[205.192272, "o", "s"]
[205.328423, "o", "."]
[205.415944, "o", "c"]
[205.56821, "o", "o"]
[205.62499, "o", "m"]
[209.419737, "o", "\r\n"]
[209.738094, "o", "+----+--------------------------+-----------------------------------+----------+-----------------------------------+----\r\n-------------------------------+\r\n| ID | NAME | DATA | REVISION | CREATEDAT | UPD\r\nATEDAT |\r\n+----+--------------------------+-----------------------------------+----------+-----------------------------------+----\r\n-------------------------------+\r\n| 2 | app.emissary.cadoles.com | {\"apps\":{\"app.arcad.edge.hextr... | 0 | \"2023-06-23T15:59:50.133065468... | \"20\r\n23-06-23T15:59:50.133065468... |\r\n+----+--------------------------+-----------------------------------+----------+-----------------------------------+----\r\n-------------------------------+\r\n"]
[209.739666, "o", "emissary:~# "]
[217.662358, "o", "\u001b[?25l\u001b[1;121H│\u001b[2;121H│\u001b[3;121H│\u001b[4;121H│\u001b[5;121H│\u001b[6;121H│\u001b[7;121H│\u001b[8;121H│\u001b[9;121H│\u001b[10;121H│\u001b[11;121H│\u001b[12;121H│\u001b[13;121H│\u001b[14;121H│\u001b[15;121H│\u001b[16;121H│\u001b[17;121H│\u001b[18;121H│\u001b[19;121H│\u001b[20;121H│\u001b[21;121H│\u001b[22;121H│\u001b[23;121H│\u001b[24;121H│\u001b[25;121H│\u001b[26;121H│\u001b[27;121H│\u001b[28;121H│\u001b[29;121H│\u001b[30;121H│\u001b[31;121H│\u001b[32;121H│\u001b[33;121H│\u001b[34;121H│\u001b[35;121H│\u001b[36;121H│\u001b[37;121H│\u001b[38;121H│\u001b[39;121H│\u001b[40;121H│\u001b[41;121H│\u001b[42;121H\u001b[32m│\u001b[43;121H│\u001b[44;121H│\u001b[45;121H│\u001b[46;121H│\u001b[47;121H│\u001b[48;121H│\u001b[49;121H│\u001b[50;121H│\u001b[51;121H│\u001b[52;121H│\u001b[53;121H│\u001b[54;121H│\u001b[55;121H│\u001b[56;121H│\u001b[57;121H│\u001b[58;121H│\u001b[59;121H│\u001b[60;121H│\u001b[61;121H│\u001b[62;121H│\u001b[63;121H│\u001b[64;121H│\u001b[65;121H│\u001b[66;121H│\u001b[67;121H│\u001b[68;121H│\u001b[69;121H│\u001b[70;121H│\u001b[71;121H│\u001b[72;121H│\u001b[73;121H│\u001b[74;121H│\u001b[75;121H│\u001b[76;121H│\u001b[77;121H│\u001b[78;121H│\u001b[79;121H│\u001b[80;121H│\u001b[81;121H│\u001b(B\u001b[m\u001b[?12l\u001b[?25h\u001b[16A"]
[226.097445, "o", "\n"]
[226.761446, "o", "\n"]
[227.264713, "o", "^C"]
[227.265531, "o", "root@ArcadAgent:~# "]
[227.464954, "o", "^C\u001b[68;122Hroot@ArcadAgent:~# "]
[229.40574, "o", "\u001b[?25l\u001b[37m\u001b[40m\u001b[82;1H\u001b[32mnumenor\u001b[37m0:ssh* \"numenor\" 18:00 23-juin-23\u001b(B\u001b[m\u001b[?12l\u001b[?25h\u001b[68;141H"]
[230.560042, "o", "e"]
[230.744966, "o", "c"]
[230.857095, "o", "h"]
[230.952641, "o", "o"]
[231.056796, "o", " "]
[231.290282, "o", "$"]
[231.592817, "o", "H"]
[231.704742, "o", "O"]
[232.080914, "o", "\u001b[1;81r\u001b[69;122H\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\u001b[68;148H\u001b[K\u001b[1;82r\u001b[68;148H"]
[232.224793, "o", "\u001b[1;81r\u001b[69;122H\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\u001b[68;147H\u001b[K\u001b[1;82r\u001b[68;147H"]
[232.377174, "o", "\u001b[1;81r\u001b[69;122H\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\u001b[68;146H\u001b[K\u001b[1;82r\u001b[68;146H"]
[232.537685, "o", "\u001b[1;81r\u001b[69;122H\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\u001b[68;145H\u001b[K\u001b[1;82r\u001b[68;145H"]
[233.025066, "o", " "]
[233.152175, "o", "\""]
[233.472597, "o", "M"]
[233.632988, "o", "y"]
[233.728784, "o", " "]
[234.112825, "o", "h"]
[234.248615, "o", "o"]
[234.328623, "o", "s"]
[234.425096, "o", "t"]
[234.496488, "o", "n"]
[234.62482, "o", "a"]
[234.720164, "o", "m"]
[234.848289, "o", "e"]
[234.960521, "o", " "]
[235.128432, "o", "i"]
[235.191759, "o", "s"]
[235.287951, "o", " "]
[235.400033, "o", "n"]
[235.536368, "o", "o"]
[235.632548, "o", "w"]
[235.808347, "o", " "]
[236.496617, "o", "\""]
[236.993007, "o", "A"]
[237.936908, "o", "\u001b[1;81r\u001b[69;122H\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\u001b[68;167H\u001b[K\u001b[1;82r\u001b[68;167H"]
[238.864878, "o", "A"]
[239.288996, "o", "r"]
[239.488633, "o", "c"]
[239.616511, "o", "a"]
[239.744604, "o", "d"]
[240.079979, "o", "e"]
[241.344966, "o", "A"]
[241.568869, "o", "g"]
[241.616463, "o", "e"]
[241.776587, "o", "n"]
[241.880659, "o", "t"]
[242.13686, "o", "\""]
[243.712726, "o", "\""]
[244.176404, "o", "\u001b[69;122HMy hostname is now ArcadeAgent\u001b[70;122Hroot@ArcadAgent:~# "]
[254.221043, "o", "netstat -tlnup"]
[255.105911, "o", "\u001b[71;122H"]
[255.12124, "o", "Active Internet connections (only servers)\u001b[72;122HProto Recv-Q Send-Q Local Address Foreign Address State PID/Program name \u001b[73;122H"]
[255.121572, "o", "tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 4076/dnsmasq\u001b[74;122Htcp 0 0 192.168.10.230:53 0.0.0.0:* LISTEN 4076/dnsmasq\u001b[75;122H"]
[255.121909, "o", "tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 2087/dropbear\u001b[76;122Htcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1511/uhttpd\u001b[77;122H"]
[255.122264, "o", "tcp 0 0 :::8083 :::* LISTEN 3471/emissary\u001b[78;122H"]
[255.122781, "o", "tcp 0 0 :::8084 :::* LISTEN 3471/emissary\u001b[79;122H"]
[255.123088, "o", "tcp 0 0 ::1:53 :::* LISTEN 4076/dnsmasq\u001b[80;122H"]
[255.123334, "o", "tcp 0 0 fe80::c0ff:fea8:a08:53 :::* LISTEN 4076/dnsmasq\u001b[81;122H"]
[255.123777, "o", "\u001b[?25l\u001b[1dThe client\u001b[K\u001b[2;122Hroot@OpenWrt:~# uci set emissary.agent.server_url=\"http://192.168.30.200:3000\"\u001b[K\u001b[3;122Hroot@OpenWrt:~# uci commit\u001b[K\u001b[4;122Hroot@OpenWrt:~# reload_config\u001b[K\u001b[5;122Hroot@OpenWrt:~# logread -f\u001b[K\u001b[6;122HFri Jun 23 15:58:32 2023 daemon.info emissary[3471]: 2023-06-23 15:58:32.225 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/pe\u001b[7;122Hrsistence/controller.go:58>\u001b[5X\u001b[5C(*Controller).Reconcile\u001b[1X\u001b[Cno changes detected, doing nothing\u001b[6X\u001b[6C{\"controller\": \"persist\u001b[8;122Hence-controller\"}\u001b[K\u001b[9;122HFri Jun 23 15:58:32 2023 daemon.info emissary[3471]: 2023-06-23 15:58:32.657 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/pr\u001b[10;122Hoxy/controller.go:35>\u001b[3X\u001b[3C(*Controller).Reconcile\u001b[1X\u001b[Ccould not find proxy spec\u001b[7X\u001b[7C{\"controller\": \"proxy-controller\"}\u001b[K\u001b[11;122HFri Jun 23 15:58:32 2023 daemon.info emissary[3471]: 2023-06-23 15:58:32.657 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/op\u001b[12;122Henwrt/uci_controller.go:32>\u001b[5X\u001b[5C(*UCIController).Reconcile\u001b[6X\u001b[6Ccould not find uci spec, "]
[255.123796, "o", "doing nothing\u001b[2X\u001b[2C{\"controller\": \u001b[13;122H\"uci-controller\"}\u001b[K\u001b[14;122HFri Jun 23 15:58:32 2023 daemon.info emissary[3471]: 2023-06-23 15:58:32.657 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/ap\u001b[15;122Hp/controller.go:42>\u001b[5X\u001b[5C(*Controller).Reconcile\u001b[1X\u001b[Ccould not find app spec\u001b[1X\u001b[C{\"controller\": \"app-controller\"}\u001b[K\u001b[16;122HFri Jun 23 15:58:32 2023 daemon.info emissary[3471]: 2023-06-23 15:58:32.658 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/op\u001b[17;122Henwrt/sysupgrade_controller.go:36>\u001b[6X\u001b[6C(*SysUpgradeController).Reconcile\u001b[7X\u001b[7Ccould not find sysupgrade spec, doing n\u001b[18;122Hothing\u001b[2X\u001b[2C{\"controller\": \"sysupgrade-controller\"}\u001b[K\u001b[19;122HFri Jun 23 15:59:32 2023 daemon.info emissary[3471]: 2023-06-23 15:59:32.218 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/pe\u001b[20;122Hrsistence/controller.go:58>\u001b[5X\u001b[5C(*Controller).Reconcile\u001b[1X\u001b[Cno changes detected, doing nothing\u001b[6X\u001b[6C{\"controller\": \"persist\u001b[21;122Hence-controller\"}\u001b[K\u001b[22;122HFri Jun 23 15:59:32 2023 daemon.info emissary[3471]: 2023-06-2"]
[255.123939, "o", "3 15:59:32.598 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/pr\u001b[23;122Hoxy/controller.go:35>\u001b[3X\u001b[3C(*Controller).Reconcile\u001b[1X\u001b[Ccould not find proxy spec\u001b[7X\u001b[7C{\"controller\": \"proxy-controller\"}\u001b[K\u001b[24;122HFri Jun 23 15:59:32 2023 daemon.info emissary[3471]: 2023-06-23 15:59:32.606 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/op\u001b[25;122Henwrt/uci_controller.go:40>\u001b[5X\u001b[5C(*UCIController).Reconcile\u001b[6X\u001b[6Cretrieved spec\u001b[2X\u001b[2C{\"controller\": \"uci-controller\", \"spec\"\u001b[26;122H: \"uci.emissary.cadoles.com\", \"revision\": 0}\u001b[K\u001b[27;122HFri Jun 23 15:59:32 2023 daemon.info emissary[3471]: 2023-06-23 15:59:32.607 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/op\u001b[28;122Henwrt/uci_controller.go:61>\u001b[5X\u001b[5C(*UCIController).updateConfiguration\u001b[4X\u001b[4Cimporting uci config\u001b[4X\u001b[4C{\"controller\": \"uci-con\u001b[29;122Htroller\"}\u001b[K\u001b[30;122HFri Jun 23 15:59:33 2023 daemon.info emissary[3471]: 2023-06-23 15:59:33.128 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/op\u001b[31;122Henwrt/uci_controller.go:55>\u001b[5X\u001b[5C(*UCIController).Reconcile\u001b[6X\u001b[6C"]
[255.123955, "o", "updating current spec revision\u001b[2X\u001b[2C{\"controller\": \"uci-con\u001b[32;122Htroller\", \"revision\": 0}\u001b[K\u001b[33;122HFri Jun 23 15:59:33 2023 daemon.info emissary[3471]: 2023-06-23 15:59:33.128 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/ap\u001b[34;122Hp/controller.go:42>\u001b[5X\u001b[5C(*Controller).Reconcile\u001b[1X\u001b[Ccould not find app spec\u001b[1X\u001b[C{\"controller\": \"app-controller\"}\u001b[K\u001b[35;122HFri Jun 23 15:59:33 2023 daemon.info emissary[3471]: 2023-06-23 15:59:33.128 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/op\u001b[36;122Henwrt/sysupgrade_controller.go:36>\u001b[6X\u001b[6C(*SysUpgradeController).Reconcile\u001b[7X\u001b[7Ccould not find sysupgrade spec, doing n\u001b[37;122Hothing\u001b[2X\u001b[2C{\"controller\": \"sysupgrade-controller\"}\u001b[K\u001b[38;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: exiting on receipt of SIGTERM\u001b[K\u001b[39;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: started, version 2.86 cachesize 150\u001b[K\u001b[40;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: DNS service limited to local subnets\u001b[K\u001b[41;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1"]
[255.124085, "o", "]: compile time options: IPv6 GNU-getopt no-DBus UBus no-i18n no-IDN DHCP\u001b[42;122H no-DHCPv6 no-Lua TFTP no-conntrack no-ipset no-auth no-cryptohash no-DNSSEC no-ID loop-detect inotify dumpfile\u001b[K\u001b[43;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: UBus support enabled: connected to system bus\u001b[K\u001b[44;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for test\u001b[K\u001b[45;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for onion\u001b[K\u001b[46;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for localhost\u001b[K\u001b[47;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for local\u001b[K\u001b[48;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for invalid\u001b[K\u001b[49;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for bind\u001b[K\u001b[50;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addre"]
[255.124181, "o", "sses for lan\u001b[K\u001b[51;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: reading /tmp/resolv.conf.d/resolv.conf.auto\u001b[K\u001b[52;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using nameserver 192.168.5.53#53\u001b[K\u001b[53;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for test\u001b[K\u001b[54;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for onion\u001b[K\u001b[55;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for localhost\u001b[K\u001b[56;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for local\u001b[K\u001b[57;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for invalid\u001b[K\u001b[58;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for bind\u001b[K\u001b[59;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for lan\u001b[K\u001b[60;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: read /etc/hosts -"]
[255.124204, "o", " 4 addresses\u001b[K\u001b[61;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: read /tmp/hosts/dhcp.cfg01411c - 0 addresses\u001b[K\u001b[62;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: read /etc/hosts - 4 addresses\u001b[K\u001b[63;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: read /tmp/hosts/dhcp.cfg01411c - 0 addresses\u001b[K\u001b[64;122H\u001b[K\n\u001b[K\n^Croot@ArcadAgent:~# ^C\u001b[K\u001b[67;122Hroot@ArcadAgent:~# echo \"My hostname is now \"ArcadeAgent\"\"\u001b[K\u001b[68;122HMy hostname is now ArcadeAgent\u001b[K\u001b[69;122Hroot@ArcadAgent:~# netstat -tlnup\u001b[K\u001b[70;122HActive Internet connections (only servers)\u001b[K\u001b[71;122HProto Recv-Q Send-Q Local Address Foreign Address State PID/Program name \u001b[K\u001b[72;122Htcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 4076/dnsmasq\u001b[K\u001b[73;122Htcp 0 0 192.168.10.230:53 0.0.0.0:* LISTEN 4076/dnsmasq\u001b[K\u001b[74;122Htcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 2087/dropbear\u001b[K\u001b[75;122Htcp 0 0 0"]
[255.124358, "o", ".0.0.0:80 0.0.0.0:* LISTEN 1511/uhttpd\u001b[K\u001b[76;122Htcp 0 0 :::8083 :::* LISTEN 3471/emissary\u001b[K\u001b[77;122Htcp 0 0 :::8084 :::* LISTEN 3471/emissary\u001b[K\u001b[78;122Htcp 0 0 ::1:53 :::* LISTEN 4076/dnsmasq\u001b[K\u001b[79;122Htcp 0 0 fe80::c0ff:fea8:a08:53 :::* LISTEN 4076/dnsmasq\u001b[K\u001b[80;122Htcp 0 0 :::22 :::* LISTEN 2087/dropbear\u001b[K\u001b[81;122H\u001b[K\u001b[?12l\u001b[?25h\u001b[?25l\u001b[1droot@OpenWrt:~# uci set emissary.agent.server_url=\"http://192.168.30.200:3000\"\u001b[K\u001b[2;122Hroot@OpenWrt:~# uci commit\u001b[K\u001b[3;122Hroot@OpenWrt:~# reload_config\u001b[K\u001b[4;122Hroot@OpenWrt:~# logread -f\u001b[K\u001b[5;122HFri Jun 23 15:58:32 2023 daemon.info emissary[3471]: 2023-06-23 15:58:32.225 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/pe\u001b[6;122Hrsistence/controller.go:58>\u001b[5X\u001b[5C(*Controller).Reconcile\u001b[1"]
[255.124375, "o", "X\u001b[Cno changes detected, doing nothing\u001b[6X\u001b[6C{\"controller\": \"persist\u001b[7;122Hence-controller\"}\u001b[K\u001b[8;122HFri Jun 23 15:58:32 2023 daemon.info emissary[3471]: 2023-06-23 15:58:32.657 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/pr\u001b[9;122Hoxy/controller.go:35>\u001b[3X\u001b[3C(*Controller).Reconcile\u001b[1X\u001b[Ccould not find proxy spec\u001b[7X\u001b[7C{\"controller\": \"proxy-controller\"}\u001b[K\u001b[10;122HFri Jun 23 15:58:32 2023 daemon.info emissary[3471]: 2023-06-23 15:58:32.657 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/op\u001b[11;122Henwrt/uci_controller.go:32>\u001b[5X\u001b[5C(*UCIController).Reconcile\u001b[6X\u001b[6Ccould not find uci spec, doing nothing\u001b[2X\u001b[2C{\"controller\": \u001b[12;122H\"uci-controller\"}\u001b[K\u001b[13;122HFri Jun 23 15:58:32 2023 daemon.info emissary[3471]: 2023-06-23 15:58:32.657 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/ap\u001b[14;122Hp/controller.go:42>\u001b[5X\u001b[5C(*Controller).Reconcile\u001b[1X\u001b[Ccould not find app spec\u001b[1X\u001b[C{\"controller\": \"app-controller\"}\u001b[K\u001b[15;122HFri Jun 23 15:58:32 2023 daemon.info emissary[3471]: 2023-06-23 15:58:32.658 [INFO]\u001b[5X\u001b[5"]
[255.124454, "o", "C<./internal/agent/controller/op\u001b[16;122Henwrt/sysupgrade_controller.go:36>\u001b[6X\u001b[6C(*SysUpgradeController).Reconcile\u001b[7X\u001b[7Ccould not find sysupgrade spec, doing n\u001b[17;122Hothing\u001b[2X\u001b[2C{\"controller\": \"sysupgrade-controller\"}\u001b[K\u001b[18;122HFri Jun 23 15:59:32 2023 daemon.info emissary[3471]: 2023-06-23 15:59:32.218 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/pe\u001b[19;122Hrsistence/controller.go:58>\u001b[5X\u001b[5C(*Controller).Reconcile\u001b[1X\u001b[Cno changes detected, doing nothing\u001b[6X\u001b[6C{\"controller\": \"persist\u001b[20;122Hence-controller\"}\u001b[K\u001b[21;122HFri Jun 23 15:59:32 2023 daemon.info emissary[3471]: 2023-06-23 15:59:32.598 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/pr\u001b[22;122Hoxy/controller.go:35>\u001b[3X\u001b[3C(*Controller).Reconcile\u001b[1X\u001b[Ccould not find proxy spec\u001b[7X\u001b[7C{\"controller\": \"proxy-controller\"}\u001b[K\u001b[23;122HFri Jun 23 15:59:32 2023 daemon.info emissary[3471]: 2023-06-23 15:59:32.606 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/op\u001b[24;122Henwrt/uci_controller.go:40>\u001b[5X\u001b[5C(*UCIController).Reconcile\u001b[6X\u001b[6Cretrieved spec\u001b[2X\u001b"]
[255.124511, "o", "[2C{\"controller\": \"uci-controller\", \"spec\"\u001b[25;122H: \"uci.emissary.cadoles.com\", \"revision\": 0}\u001b[K\u001b[26;122HFri Jun 23 15:59:32 2023 daemon.info emissary[3471]: 2023-06-23 15:59:32.607 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/op\u001b[27;122Henwrt/uci_controller.go:61>\u001b[5X\u001b[5C(*UCIController).updateConfiguration\u001b[4X\u001b[4Cimporting uci config\u001b[4X\u001b[4C{\"controller\": \"uci-con\u001b[28;122Htroller\"}\u001b[K\u001b[29;122HFri Jun 23 15:59:33 2023 daemon.info emissary[3471]: 2023-06-23 15:59:33.128 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/op\u001b[30;122Henwrt/uci_controller.go:55>\u001b[5X\u001b[5C(*UCIController).Reconcile\u001b[6X\u001b[6Cupdating current spec revision\u001b[2X\u001b[2C{\"controller\": \"uci-con\u001b[31;122Htroller\", \"revision\": 0}\u001b[K\u001b[32;122HFri Jun 23 15:59:33 2023 daemon.info emissary[3471]: 2023-06-23 15:59:33.128 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/ap\u001b[33;122Hp/controller.go:42>\u001b[5X\u001b[5C(*Controller).Reconcile\u001b[1X\u001b[Ccould not find app spec\u001b[1X\u001b[C{\"controller\": \"app-controller\"}\u001b[K\u001b[34;122HFri Jun 23 15:59:33 2023 daemon.info emissary[3471]: 2023-"]
[255.124532, "o", "06-23 15:59:33.128 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/op\u001b[35;122Henwrt/sysupgrade_controller.go:36>\u001b[6X\u001b[6C(*SysUpgradeController).Reconcile\u001b[7X\u001b[7Ccould not find sysupgrade spec, doing n\u001b[36;122Hothing\u001b[2X\u001b[2C{\"controller\": \"sysupgrade-controller\"}\u001b[K\u001b[37;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: exiting on receipt of SIGTERM\u001b[K\u001b[38;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: started, version 2.86 cachesize 150\u001b[K\u001b[39;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: DNS service limited to local subnets\u001b[K\u001b[40;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: compile time options: IPv6 GNU-getopt no-DBus UBus no-i18n no-IDN DHCP\u001b[41;122H no-DHCPv6 no-Lua TFTP no-conntrack no-ipset no-auth no-cryptohash no-DNSSEC no-ID loop-detect inotify dumpfile\u001b[K\u001b[42;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: UBus support enabled: connected to system bus\u001b[K\u001b[43;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for test\u001b[K\u001b[44;122HFri Jun 23 "]
[255.124544, "o", "15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for onion\u001b[K\u001b[45;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for localhost\u001b[K\u001b[46;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for local\u001b[K\u001b[47;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for invalid\u001b[K\u001b[48;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for bind\u001b[K\u001b[49;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for lan\u001b[K\u001b[50;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: reading /tmp/resolv.conf.d/resolv.conf.auto\u001b[K\u001b[51;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using nameserver 192.168.5.53#53\u001b[K\u001b[52;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for test\u001b[K\u001b[53;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for onion\u001b[K\u001b[54;"]
[255.124557, "o", "122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for localhost\u001b[K\u001b[55;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for local\u001b[K\u001b[56;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for invalid\u001b[K\u001b[57;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for bind\u001b[K\u001b[58;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for lan\u001b[K\u001b[59;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: read /etc/hosts - 4 addresses\u001b[K\u001b[60;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: read /tmp/hosts/dhcp.cfg01411c - 0 addresses\u001b[K\u001b[61;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: read /etc/hosts - 4 addresses\u001b[K\u001b[62;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: read /tmp/hosts/dhcp.cfg01411c - 0 addresses\u001b[K\u001b[63;122H\u001b[K\n\u001b[K\n^Croot@ArcadAgent:~# ^C\u001b[K\u001b[66;122Hroot@ArcadAgent:~# echo \"My hostname is now \"ArcadeAgent\"\"\u001b"]
[255.124582, "o", "[K\u001b[67;122HMy hostname is now ArcadeAgent\u001b[K\u001b[68;122Hroot@ArcadAgent:~# netstat -tlnup\u001b[K\u001b[69;122HActive Internet connections (only servers)\u001b[K\u001b[70;122HProto Recv-Q Send-Q Local Address Foreign Address State PID/Program name \u001b[K\u001b[71;122Htcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 4076/dnsmasq\u001b[K\u001b[72;122Htcp 0 0 192.168.10.230:53 0.0.0.0:* LISTEN 4076/dnsmasq\u001b[K\u001b[73;122Htcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 2087/dropbear\u001b[K\u001b[74;122Htcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1511/uhttpd\u001b[K\u001b[75;122Htcp 0 0 :::8083 :::* LISTEN 3471/emissary\u001b[K\u001b[76;122Htcp 0 0 :::8084 :::* LISTEN 3471/emissary\u001b[K\u001b[77;122Htcp 0 0 ::1:53 :::* LISTEN 4076/dnsmasq\u001b[K\u001b[78;122Htcp 0 0 fe80::c0ff"]
[255.124709, "o", ":fea8:a08:53 :::* LISTEN 4076/dnsmasq\u001b[K\u001b[79;122Htcp 0 0 :::22 :::* LISTEN 2087/dropbear\u001b[K\u001b[80;122Htcp 0 0 :::80 :::* LISTEN 1511/uhttpd\u001b[K\u001b[81;122H\u001b[K\u001b[?12l\u001b[?25h\u001b[?25l\u001b[1droot@OpenWrt:~# reload_config\u001b[K\u001b[2;122Hroot@OpenWrt:~# logread -f\u001b[K\u001b[3;122HFri Jun 23 15:58:32 2023 daemon.info emissary[3471]: 2023-06-23 15:58:32.225 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/pe\u001b[4;122Hrsistence/controller.go:58>\u001b[5X\u001b[5C(*Controller).Reconcile\u001b[1X\u001b[Cno changes detected, doing nothing\u001b[6X\u001b[6C{\"controller\": \"persist\u001b[5;122Hence-controller\"}\u001b[K\u001b[6;122HFri Jun 23 15:58:32 2023 daemon.info emissary[3471]: 2023-06-23 15:58:32.657 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/pr\u001b[7;122Hoxy/controller.go:35>\u001b[3X\u001b[3C(*Controller).Reconcile\u001b[1X\u001b[Ccould not find proxy spec\u001b[7X\u001b[7C{\"controller\": \"proxy-controller\"}\u001b[K\u001b[8;122HFri Jun 23 15:58:32 2023 daemon.info emissary[3471]: 2023-06-23 15:58:32.657 "]
[255.1248, "o", "[INFO]\u001b[5X\u001b[5C<./internal/agent/controller/op\u001b[9;122Henwrt/uci_controller.go:32>\u001b[5X\u001b[5C(*UCIController).Reconcile\u001b[6X\u001b[6Ccould not find uci spec, doing nothing\u001b[2X\u001b[2C{\"controller\": \u001b[10;122H\"uci-controller\"}\u001b[K\u001b[11;122HFri Jun 23 15:58:32 2023 daemon.info emissary[3471]: 2023-06-23 15:58:32.657 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/ap\u001b[12;122Hp/controller.go:42>\u001b[5X\u001b[5C(*Controller).Reconcile\u001b[1X\u001b[Ccould not find app spec\u001b[1X\u001b[C{\"controller\": \"app-controller\"}\u001b[K\u001b[13;122HFri Jun 23 15:58:32 2023 daemon.info emissary[3471]: 2023-06-23 15:58:32.658 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/op\u001b[14;122Henwrt/sysupgrade_controller.go:36>\u001b[6X\u001b[6C(*SysUpgradeController).Reconcile\u001b[7X\u001b[7Ccould not find sysupgrade spec, doing n\u001b[15;122Hothing\u001b[2X\u001b[2C{\"controller\": \"sysupgrade-controller\"}\u001b[K\u001b[16;122HFri Jun 23 15:59:32 2023 daemon.info emissary[3471]: 2023-06-23 15:59:32.218 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/pe\u001b[17;122Hrsistence/controller.go:58>\u001b[5X\u001b[5C(*Controller).Reconcile\u001b[1X\u001b[Cno changes detecte"]
[255.12484, "o", "d, doing nothing\u001b[6X\u001b[6C{\"controller\": \"persist\u001b[18;122Hence-controller\"}\u001b[K\u001b[19;122HFri Jun 23 15:59:32 2023 daemon.info emissary[3471]: 2023-06-23 15:59:32.598 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/pr\u001b[20;122Hoxy/controller.go:35>\u001b[3X\u001b[3C(*Controller).Reconcile\u001b[1X\u001b[Ccould not find proxy spec\u001b[7X\u001b[7C{\"controller\": \"proxy-controller\"}\u001b[K\u001b[21;122HFri Jun 23 15:59:32 2023 daemon.info emissary[3471]: 2023-06-23 15:59:32.606 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/op\u001b[22;122Henwrt/uci_controller.go:40>\u001b[5X\u001b[5C(*UCIController).Reconcile\u001b[6X\u001b[6Cretrieved spec\u001b[2X\u001b[2C{\"controller\": \"uci-controller\", \"spec\"\u001b[23;122H: \"uci.emissary.cadoles.com\", \"revision\": 0}\u001b[K\u001b[24;122HFri Jun 23 15:59:32 2023 daemon.info emissary[3471]: 2023-06-23 15:59:32.607 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/op\u001b[25;122Henwrt/uci_controller.go:61>\u001b[5X\u001b[5C(*UCIController).updateConfiguration\u001b[4X\u001b[4Cimporting uci config\u001b[4X\u001b[4C{\"controller\": \"uci-con\u001b[26;122Htroller\"}\u001b[K\u001b[27;122HFri Jun 23 15:59:33 2023 daemon.info emissary[3471]: "]
[255.124879, "o", "2023-06-23 15:59:33.128 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/op\u001b[28;122Henwrt/uci_controller.go:55>\u001b[5X\u001b[5C(*UCIController).Reconcile\u001b[6X\u001b[6Cupdating current spec revision\u001b[2X\u001b[2C{\"controller\": \"uci-con\u001b[29;122Htroller\", \"revision\": 0}\u001b[K\u001b[30;122HFri Jun 23 15:59:33 2023 daemon.info emissary[3471]: 2023-06-23 15:59:33.128 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/ap\u001b[31;122Hp/controller.go:42>\u001b[5X\u001b[5C(*Controller).Reconcile\u001b[1X\u001b[Ccould not find app spec\u001b[1X\u001b[C{\"controller\": \"app-controller\"}\u001b[K\u001b[32;122HFri Jun 23 15:59:33 2023 daemon.info emissary[3471]: 2023-06-23 15:59:33.128 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/op\u001b[33;122Henwrt/sysupgrade_controller.go:36>\u001b[6X\u001b[6C(*SysUpgradeController).Reconcile\u001b[7X\u001b[7Ccould not find sysupgrade spec, doing n\u001b[34;122Hothing\u001b[2X\u001b[2C{\"controller\": \"sysupgrade-controller\"}\u001b[K\u001b[35;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: exiting on receipt of SIGTERM\u001b[K\u001b[36;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: started, version 2.86 cachesize 150\u001b[K\u001b[37;"]
[255.124911, "o", "122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: DNS service limited to local subnets\u001b[K\u001b[38;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: compile time options: IPv6 GNU-getopt no-DBus UBus no-i18n no-IDN DHCP\u001b[39;122H no-DHCPv6 no-Lua TFTP no-conntrack no-ipset no-auth no-cryptohash no-DNSSEC no-ID loop-detect inotify dumpfile\u001b[K\u001b[40;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: UBus support enabled: connected to system bus\u001b[K\u001b[41;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for test\u001b[K\u001b[42;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for onion\u001b[K\u001b[43;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for localhost\u001b[K\u001b[44;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for local\u001b[K\u001b[45;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for invalid\u001b[K\u001b[46;122HFri Jun 23 15:59:34 2023 daemon.info"]
[255.124948, "o", " dnsmasq[1]: using only locally-known addresses for bind\u001b[K\u001b[47;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for lan\u001b[K\u001b[48;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: reading /tmp/resolv.conf.d/resolv.conf.auto\u001b[K\u001b[49;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using nameserver 192.168.5.53#53\u001b[K\u001b[50;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for test\u001b[K\u001b[51;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for onion\u001b[K\u001b[52;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for localhost\u001b[K\u001b[53;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for local\u001b[K\u001b[54;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for invalid\u001b[K\u001b[55;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for bind\u001b[K\u001b[56;122HFri Jun 23 15:59:34 20"]
[255.124985, "o", "23 daemon.info dnsmasq[1]: using only locally-known addresses for lan\u001b[K\u001b[57;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: read /etc/hosts - 4 addresses\u001b[K\u001b[58;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: read /tmp/hosts/dhcp.cfg01411c - 0 addresses\u001b[K\u001b[59;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: read /etc/hosts - 4 addresses\u001b[K\u001b[60;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: read /tmp/hosts/dhcp.cfg01411c - 0 addresses\u001b[K\u001b[61;122H\u001b[K\n\u001b[K\n^Croot@ArcadAgent:~# ^C\u001b[K\u001b[64;122Hroot@ArcadAgent:~# echo \"My hostname is now \"ArcadeAgent\"\"\u001b[K\u001b[65;122HMy hostname is now ArcadeAgent\u001b[K\u001b[66;122Hroot@ArcadAgent:~# netstat -tlnup\u001b[K\u001b[67;122HActive Internet connections (only servers)\u001b[K\u001b[68;122HProto Recv-Q Send-Q Local Address Foreign Address State PID/Program name \u001b[K\u001b[69;122Htcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 4076/dnsmasq\u001b[K\u001b[70;122Htcp 0 0 192.168.10.230:53 0.0.0.0:* LISTEN 407"]
[255.12503, "o", "6/dnsmasq\u001b[K\u001b[71;122Htcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 2087/dropbear\u001b[K\u001b[72;122Htcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1511/uhttpd\u001b[K\u001b[73;122Htcp 0 0 :::8083 :::* LISTEN 3471/emissary\u001b[K\u001b[74;122Htcp 0 0 :::8084 :::* LISTEN 3471/emissary\u001b[K\u001b[75;122Htcp 0 0 ::1:53 :::* LISTEN 4076/dnsmasq\u001b[K\u001b[76;122Htcp 0 0 fe80::c0ff:fea8:a08:53 :::* LISTEN 4076/dnsmasq\u001b[K\u001b[77;122Htcp 0 0 :::22 :::* LISTEN 2087/dropbear\u001b[K\u001b[78;122Htcp 0 0 :::80 :::* LISTEN 1511/uhttpd\u001b[K\u001b[79;122Hudp 0 0 127.0.0.1:53 0.0.0.0:* 4076/dnsmasq\u001b[K\u001b[80;122Hudp 0 0 192.168.10.230:53 0.0.0.0:* "]
[255.125068, "o", " 4076/dnsmasq\u001b[K\u001b[81;122H\u001b[K\u001b[?12l\u001b[?25h"]
[255.125132, "o", "\u001b[?25l\u001b[1droot@OpenWrt:~# logread -f\u001b[K\u001b[2;122HFri Jun 23 15:58:32 2023 daemon.info emissary[3471]: 2023-06-23 15:58:32.225 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/pe\u001b[3;122Hrsistence/controller.go:58>\u001b[5X\u001b[5C(*Controller).Reconcile\u001b[1X\u001b[Cno changes detected, doing nothing\u001b[6X\u001b[6C{\"controller\": \"persist\u001b[4;122Hence-controller\"}\u001b[K\u001b[5;122HFri Jun 23 15:58:32 2023 daemon.info emissary[3471]: 2023-06-23 15:58:32.657 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/pr\u001b[6;122Hoxy/controller.go:35>\u001b[3X\u001b[3C(*Controller).Reconcile\u001b[1X\u001b[Ccould not find proxy spec\u001b[7X\u001b[7C{\"controller\": \"proxy-controller\"}\u001b[K\u001b[7;122HFri Jun 23 15:58:32 2023 daemon.info emissary[3471]: 2023-06-23 15:58:32.657 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/op\u001b[8;122Henwrt/uci_controller.go:32>\u001b[5X\u001b[5C(*UCIController).Reconcile\u001b[6X\u001b[6Ccould not find uci spec, doing nothing\u001b[2X\u001b[2C{\"controller\": \u001b[9;122H\"uci-controller\"}\u001b[K\u001b[10;122HFri Jun 23 15:58:32 2023 daemon.info emissary[3471]: 2023-06-23 15:58:32.657 [INFO]\u001b[5X\u001b[5C<./internal/agent/controll"]
[255.125171, "o", "er/ap\u001b[11;122Hp/controller.go:42>\u001b[5X\u001b[5C(*Controller).Reconcile\u001b[1X\u001b[Ccould not find app spec\u001b[1X\u001b[C{\"controller\": \"app-controller\"}\u001b[K\u001b[12;122HFri Jun 23 15:58:32 2023 daemon.info emissary[3471]: 2023-06-23 15:58:32.658 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/op\u001b[13;122Henwrt/sysupgrade_controller.go:36>\u001b[6X\u001b[6C(*SysUpgradeController).Reconcile\u001b[7X\u001b[7Ccould not find sysupgrade spec, doing n\u001b[14;122Hothing\u001b[2X\u001b[2C{\"controller\": \"sysupgrade-controller\"}\u001b[K\u001b[15;122HFri Jun 23 15:59:32 2023 daemon.info emissary[3471]: 2023-06-23 15:59:32.218 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/pe\u001b[16;122Hrsistence/controller.go:58>\u001b[5X\u001b[5C(*Controller).Reconcile\u001b[1X\u001b[Cno changes detected, doing nothing\u001b[6X\u001b[6C{\"controller\": \"persist\u001b[17;122Hence-controller\"}\u001b[K\u001b[18;122HFri Jun 23 15:59:32 2023 daemon.info emissary[3471]: 2023-06-23 15:59:32.598 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/pr\u001b[19;122Hoxy/controller.go:35>\u001b[3X\u001b[3C(*Controller).Reconcile\u001b[1X\u001b[Ccould not find proxy spec\u001b[7X\u001b[7C{\"controller\": \"proxy-controll"]
[255.125209, "o", "er\"}\u001b[K\u001b[20;122HFri Jun 23 15:59:32 2023 daemon.info emissary[3471]: 2023-06-23 15:59:32.606 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/op\u001b[21;122Henwrt/uci_controller.go:40>\u001b[5X\u001b[5C(*UCIController).Reconcile\u001b[6X\u001b[6Cretrieved spec\u001b[2X\u001b[2C{\"controller\": \"uci-controller\", \"spec\"\u001b[22;122H: \"uci.emissary.cadoles.com\", \"revision\": 0}\u001b[K\u001b[23;122HFri Jun 23 15:59:32 2023 daemon.info emissary[3471]: 2023-06-23 15:59:32.607 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/op\u001b[24;122Henwrt/uci_controller.go:61>\u001b[5X\u001b[5C(*UCIController).updateConfiguration\u001b[4X\u001b[4Cimporting uci config\u001b[4X\u001b[4C{\"controller\": \"uci-con\u001b[25;122Htroller\"}\u001b[K\u001b[26;122HFri Jun 23 15:59:33 2023 daemon.info emissary[3471]: 2023-06-23 15:59:33.128 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/op\u001b[27;122Henwrt/uci_controller.go:55>\u001b[5X\u001b[5C(*UCIController).Reconcile\u001b[6X\u001b[6Cupdating current spec revision\u001b[2X\u001b[2C{\"controller\": \"uci-con\u001b[28;122Htroller\", \"revision\": 0}\u001b[K\u001b[29;122HFri Jun 23 15:59:33 2023 daemon.info emissary[3471]: 2023-06-23 15:59:33.128 [INFO]\u001b["]
[255.125246, "o", "5X\u001b[5C<./internal/agent/controller/ap\u001b[30;122Hp/controller.go:42>\u001b[5X\u001b[5C(*Controller).Reconcile\u001b[1X\u001b[Ccould not find app spec\u001b[1X\u001b[C{\"controller\": \"app-controller\"}\u001b[K\u001b[31;122HFri Jun 23 15:59:33 2023 daemon.info emissary[3471]: 2023-06-23 15:59:33.128 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/op\u001b[32;122Henwrt/sysupgrade_controller.go:36>\u001b[6X\u001b[6C(*SysUpgradeController).Reconcile\u001b[7X\u001b[7Ccould not find sysupgrade spec, doing n\u001b[33;122Hothing\u001b[2X\u001b[2C{\"controller\": \"sysupgrade-controller\"}\u001b[K\u001b[34;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: exiting on receipt of SIGTERM\u001b[K\u001b[35;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: started, version 2.86 cachesize 150\u001b[K\u001b[36;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: DNS service limited to local subnets\u001b[K\u001b[37;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: compile time options: IPv6 GNU-getopt no-DBus UBus no-i18n no-IDN DHCP\u001b[38;122H no-DHCPv6 no-Lua TFTP no-conntrack no-ipset no-auth no-cryptohash no-DNSSEC no-ID loop-detect inotify dumpfi"]
[255.125283, "o", "le\u001b[K\u001b[39;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: UBus support enabled: connected to system bus\u001b[K\u001b[40;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for test\u001b[K\u001b[41;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for onion\u001b[K\u001b[42;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for localhost\u001b[K\u001b[43;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for local\u001b[K\u001b[44;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for invalid\u001b[K\u001b[45;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for bind\u001b[K\u001b[46;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for lan\u001b[K\u001b[47;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: reading /tmp/resolv.conf.d/resolv.conf.auto\u001b[K\u001b[48;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using nameserv"]
[255.125325, "o", "er 192.168.5.53#53\u001b[K\u001b[49;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for test\u001b[K\u001b[50;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for onion\u001b[K\u001b[51;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for localhost\u001b[K\u001b[52;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for local\u001b[K\u001b[53;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for invalid\u001b[K\u001b[54;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for bind\u001b[K\u001b[55;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for lan\u001b[K\u001b[56;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: read /etc/hosts - 4 addresses\u001b[K\u001b[57;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: read /tmp/hosts/dhcp.cfg01411c - 0 addresses\u001b[K\u001b[58;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: read /etc/hos"]
[255.125362, "o", "ts - 4 addresses\u001b[K\u001b[59;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: read /tmp/hosts/dhcp.cfg01411c - 0 addresses\u001b[K\u001b[60;122H\u001b[K\n\u001b[K\n^Croot@ArcadAgent:~# ^C\u001b[K\u001b[63;122Hroot@ArcadAgent:~# echo \"My hostname is now \"ArcadeAgent\"\"\u001b[K\u001b[64;122HMy hostname is now ArcadeAgent\u001b[K\u001b[65;122Hroot@ArcadAgent:~# netstat -tlnup\u001b[K\u001b[66;122HActive Internet connections (only servers)\u001b[K\u001b[67;122HProto Recv-Q Send-Q Local Address Foreign Address State PID/Program name \u001b[K\u001b[68;122Htcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 4076/dnsmasq\u001b[K\u001b[69;122Htcp 0 0 192.168.10.230:53 0.0.0.0:* LISTEN 4076/dnsmasq\u001b[K\u001b[70;122Htcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 2087/dropbear\u001b[K\u001b[71;122Htcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1511/uhttpd\u001b[K\u001b[72;122Htcp 0 0 :::8083 :::* LISTEN 3471/emissary\u001b[K\u001b[73;122Htcp "]
[255.125396, "o", " 0 0 :::8084 :::* LISTEN 3471/emissary\u001b[K\u001b[74;122Htcp 0 0 ::1:53 :::* LISTEN 4076/dnsmasq\u001b[K\u001b[75;122Htcp 0 0 fe80::c0ff:fea8:a08:53 :::* LISTEN 4076/dnsmasq\u001b[K\u001b[76;122Htcp 0 0 :::22 :::* LISTEN 2087/dropbear\u001b[K\u001b[77;122Htcp 0 0 :::80 :::* LISTEN 1511/uhttpd\u001b[K\u001b[78;122Hudp 0 0 127.0.0.1:53 0.0.0.0:* 4076/dnsmasq\u001b[K\u001b[79;122Hudp 0 0 192.168.10.230:53 0.0.0.0:* 4076/dnsmasq\u001b[K\u001b[80;122Hudp 0 0 ::1:53 :::* 4076/dnsmasq\u001b[K\u001b[81;122H\u001b[K\u001b[?12l\u001b[?25h"]
[255.125507, "o", "\u001b[?25l\u001b[1dFri Jun 23 15:58:32 2023 daemon.info emissary[3471]: 2023-06-23 15:58:32.225 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/pe\u001b[2;122Hrsistence/controller.go:58>\u001b[5X\u001b[5C(*Controller).Reconcile\u001b[1X\u001b[Cno changes detected, doing nothing\u001b[6X\u001b[6C{\"controller\": \"persist\u001b[3;122Hence-controller\"}\u001b[K\u001b[4;122HFri Jun 23 15:58:32 2023 daemon.info emissary[3471]: 2023-06-23 15:58:32.657 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/pr\u001b[5;122Hoxy/controller.go:35>\u001b[3X\u001b[3C(*Controller).Reconcile\u001b[1X\u001b[Ccould not find proxy spec\u001b[7X\u001b[7C{\"controller\": \"proxy-controller\"}\u001b[K\u001b[6;122HFri Jun 23 15:58:32 2023 daemon.info emissary[3471]: 2023-06-23 15:58:32.657 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/op\u001b[7;122Henwrt/uci_controller.go:32>\u001b[5X\u001b[5C(*UCIController).Reconcile\u001b[6X\u001b[6Ccould not find uci spec, doing nothing\u001b[2X\u001b[2C{\"controller\": \u001b[8;122H\"uci-controller\"}\u001b[K\u001b[9;122HFri Jun 23 15:58:32 2023 daemon.info emissary[3471]: 2023-06-23 15:58:32.657 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/ap\u001b[10;122Hp/controller.go:42>\u001b[5X\u001b"]
[255.12555, "o", "[5C(*Controller).Reconcile\u001b[1X\u001b[Ccould not find app spec\u001b[1X\u001b[C{\"controller\": \"app-controller\"}\u001b[K\u001b[11;122HFri Jun 23 15:58:32 2023 daemon.info emissary[3471]: 2023-06-23 15:58:32.658 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/op\u001b[12;122Henwrt/sysupgrade_controller.go:36>\u001b[6X\u001b[6C(*SysUpgradeController).Reconcile\u001b[7X\u001b[7Ccould not find sysupgrade spec, doing n\u001b[13;122Hothing\u001b[2X\u001b[2C{\"controller\": \"sysupgrade-controller\"}\u001b[K\u001b[14;122HFri Jun 23 15:59:32 2023 daemon.info emissary[3471]: 2023-06-23 15:59:32.218 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/pe\u001b[15;122Hrsistence/controller.go:58>\u001b[5X\u001b[5C(*Controller).Reconcile\u001b[1X\u001b[Cno changes detected, doing nothing\u001b[6X\u001b[6C{\"controller\": \"persist\u001b[16;122Hence-controller\"}\u001b[K\u001b[17;122HFri Jun 23 15:59:32 2023 daemon.info emissary[3471]: 2023-06-23 15:59:32.598 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/pr\u001b[18;122Hoxy/controller.go:35>\u001b[3X\u001b[3C(*Controller).Reconcile\u001b[1X\u001b[Ccould not find proxy spec\u001b[7X\u001b[7C{\"controller\": \"proxy-controller\"}\u001b[K\u001b[19;122HFri Jun 23 15:59:32 20"]
[255.125593, "o", "23 daemon.info emissary[3471]: 2023-06-23 15:59:32.606 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/op\u001b[20;122Henwrt/uci_controller.go:40>\u001b[5X\u001b[5C(*UCIController).Reconcile\u001b[6X\u001b[6Cretrieved spec\u001b[2X\u001b[2C{\"controller\": \"uci-controller\", \"spec\"\u001b[21;122H: \"uci.emissary.cadoles.com\", \"revision\": 0}\u001b[K\u001b[22;122HFri Jun 23 15:59:32 2023 daemon.info emissary[3471]: 2023-06-23 15:59:32.607 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/op\u001b[23;122Henwrt/uci_controller.go:61>\u001b[5X\u001b[5C(*UCIController).updateConfiguration\u001b[4X\u001b[4Cimporting uci config\u001b[4X\u001b[4C{\"controller\": \"uci-con\u001b[24;122Htroller\"}\u001b[K\u001b[25;122HFri Jun 23 15:59:33 2023 daemon.info emissary[3471]: 2023-06-23 15:59:33.128 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/op\u001b[26;122Henwrt/uci_controller.go:55>\u001b[5X\u001b[5C(*UCIController).Reconcile\u001b[6X\u001b[6Cupdating current spec revision\u001b[2X\u001b[2C{\"controller\": \"uci-con\u001b[27;122Htroller\", \"revision\": 0}\u001b[K\u001b[28;122HFri Jun 23 15:59:33 2023 daemon.info emissary[3471]: 2023-06-23 15:59:33.128 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/ap\u001b"]
[255.125628, "o", "[29;122Hp/controller.go:42>\u001b[5X\u001b[5C(*Controller).Reconcile\u001b[1X\u001b[Ccould not find app spec\u001b[1X\u001b[C{\"controller\": \"app-controller\"}\u001b[K\u001b[30;122HFri Jun 23 15:59:33 2023 daemon.info emissary[3471]: 2023-06-23 15:59:33.128 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/op\u001b[31;122Henwrt/sysupgrade_controller.go:36>\u001b[6X\u001b[6C(*SysUpgradeController).Reconcile\u001b[7X\u001b[7Ccould not find sysupgrade spec, doing n\u001b[32;122Hothing\u001b[2X\u001b[2C{\"controller\": \"sysupgrade-controller\"}\u001b[K\u001b[33;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: exiting on receipt of SIGTERM\u001b[K\u001b[34;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: started, version 2.86 cachesize 150\u001b[K\u001b[35;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: DNS service limited to local subnets\u001b[K\u001b[36;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: compile time options: IPv6 GNU-getopt no-DBus UBus no-i18n no-IDN DHCP\u001b[37;122H no-DHCPv6 no-Lua TFTP no-conntrack no-ipset no-auth no-cryptohash no-DNSSEC no-ID loop-detect inotify dumpfile\u001b[K\u001b[38;122HFri Jun 23 15:59:34 2023"]
[255.125669, "o", " daemon.info dnsmasq[1]: UBus support enabled: connected to system bus\u001b[K\u001b[39;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for test\u001b[K\u001b[40;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for onion\u001b[K\u001b[41;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for localhost\u001b[K\u001b[42;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for local\u001b[K\u001b[43;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for invalid\u001b[K\u001b[44;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for bind\u001b[K\u001b[45;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for lan\u001b[K\u001b[46;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: reading /tmp/resolv.conf.d/resolv.conf.auto\u001b[K\u001b[47;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using nameserver 192.168.5.53#53\u001b[K\u001b[48;122HFri Jun "]
[255.125704, "o", "23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for test\u001b[K\u001b[49;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for onion\u001b[K\u001b[50;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for localhost\u001b[K\u001b[51;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for local\u001b[K\u001b[52;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for invalid\u001b[K\u001b[53;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for bind\u001b[K\u001b[54;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for lan\u001b[K\u001b[55;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: read /etc/hosts - 4 addresses\u001b[K\u001b[56;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: read /tmp/hosts/dhcp.cfg01411c - 0 addresses\u001b[K\u001b[57;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: read /etc/hosts - 4 addresses\u001b[K\u001b[58;122HFri Jun 23"]
[255.125736, "o", " 15:59:34 2023 daemon.info dnsmasq[1]: read /tmp/hosts/dhcp.cfg01411c - 0 addresses\u001b[K\u001b[59;122H\u001b[K\n\u001b[K\n^Croot@ArcadAgent:~# ^C\u001b[K\u001b[62;122Hroot@ArcadAgent:~# echo \"My hostname is now \"ArcadeAgent\"\"\u001b[K\u001b[63;122HMy hostname is now ArcadeAgent\u001b[K\u001b[64;122Hroot@ArcadAgent:~# netstat -tlnup\u001b[K\u001b[65;122HActive Internet connections (only servers)\u001b[K\u001b[66;122HProto Recv-Q Send-Q Local Address Foreign Address State PID/Program name \u001b[K\u001b[67;122Htcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 4076/dnsmasq\u001b[K\u001b[68;122Htcp 0 0 192.168.10.230:53 0.0.0.0:* LISTEN 4076/dnsmasq\u001b[K\u001b[69;122Htcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 2087/dropbear\u001b[K\u001b[70;122Htcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1511/uhttpd\u001b[K\u001b[71;122Htcp 0 0 :::8083 :::* LISTEN 3471/emissary\u001b[K\u001b[72;122Htcp 0 0 :::8084 "]
[255.125767, "o", " :::* LISTEN 3471/emissary\u001b[K\u001b[73;122Htcp 0 0 ::1:53 :::* LISTEN 4076/dnsmasq\u001b[K\u001b[74;122Htcp 0 0 fe80::c0ff:fea8:a08:53 :::* LISTEN 4076/dnsmasq\u001b[K\u001b[75;122Htcp 0 0 :::22 :::* LISTEN 2087/dropbear\u001b[K\u001b[76;122Htcp 0 0 :::80 :::* LISTEN 1511/uhttpd\u001b[K\u001b[77;122Hudp 0 0 127.0.0.1:53 0.0.0.0:* 4076/dnsmasq\u001b[K\u001b[78;122Hudp 0 0 192.168.10.230:53 0.0.0.0:* 4076/dnsmasq\u001b[K\u001b[79;122Hudp 0 0 ::1:53 :::* 4076/dnsmasq\u001b[K\u001b[80;122Hudp 0 0 fe80::c0ff:fea8:a08:53 :::* 4076/dnsmasq\u001b[K\u001b[81;122H\u001b[K\u001b[?12l\u001b[?25hroot@ArcadAgent:~# "]
[258.944464, "o", "e"]
[259.128951, "o", "c"]
[259.168813, "o", "h"]
[259.240703, "o", "o"]
[259.312742, "o", " "]
[259.456279, "o", "\""]
[259.753944, "o", "N"]
[259.880553, "o", "e"]
[260.039821, "o", "w"]
[260.176748, "o", " "]
[260.40835, "o", "a"]
[260.513141, "o", "p"]
[260.664885, "o", "p"]
[260.784994, "o", "l"]
[260.864747, "o", "i"]
[260.967853, "o", "c"]
[261.05623, "o", "a"]
[261.15203, "o", "t"]
[261.208696, "o", "i"]
[261.264736, "o", "o"]
[261.359858, "o", "n"]
[261.520099, "o", "s"]
[261.632929, "o", " "]
[261.832751, "o", "a"]
[262.000749, "o", "r"]
[262.072634, "o", "e"]
[262.200499, "o", " "]
[262.408182, "o", "i"]
[262.495155, "o", "n"]
[262.608733, "o", "s"]
[262.664374, "o", "t"]
[262.736198, "o", "a"]
[262.85664, "o", "l"]
[263.016309, "o", "l"]
[263.088305, "o", "e"]
[263.271612, "o", "d"]
[265.064967, "o", "\""]
[265.641216, "o", "\u001b[?25l\u001b[1;122Hence-controller\"}\u001b[K\u001b[2;122HFri Jun 23 15:58:32 2023 daemon.info emissary[3471]: 2023-06-23 15:58:32.657 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/pr\u001b[3;122Hoxy/controller.go:35>\u001b[3X\u001b[3C(*Controller).Reconcile\u001b[1X\u001b[Ccould not find proxy spec\u001b[7X\u001b[7C{\"controller\": \"proxy-controller\"}\u001b[K\u001b[4;122HFri Jun 23 15:58:32 2023 daemon.info emissary[3471]: 2023-06-23 15:58:32.657 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/op\u001b[5;122Henwrt/uci_controller.go:32>\u001b[5X\u001b[5C(*UCIController).Reconcile\u001b[6X\u001b[6Ccould not find uci spec, doing nothing\u001b[2X\u001b[2C{\"controller\": \u001b[6;122H\"uci-controller\"}\u001b[K\u001b[7;122HFri Jun 23 15:58:32 2023 daemon.info emissary[3471]: 2023-06-23 15:58:32.657 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/ap\u001b[8;122Hp/controller.go:42>\u001b[5X\u001b[5C(*Controller).Reconcile\u001b[1X\u001b[Ccould not find app spec\u001b[1X\u001b[C{\"controller\": \"app-controller\"}\u001b[K\u001b[9;122HFri Jun 23 15:58:32 2023 daemon.info emissary[3471]: 2023-06-23 15:58:32.658 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/op\u001b[10;122Henwrt/sysupgrade_controller."]
[265.641253, "o", "go:36>\u001b[6X\u001b[6C(*SysUpgradeController).Reconcile\u001b[7X\u001b[7Ccould not find sysupgrade spec, doing n\u001b[11;122Hothing\u001b[2X\u001b[2C{\"controller\": \"sysupgrade-controller\"}\u001b[K\u001b[12;122HFri Jun 23 15:59:32 2023 daemon.info emissary[3471]: 2023-06-23 15:59:32.218 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/pe\u001b[13;122Hrsistence/controller.go:58>\u001b[5X\u001b[5C(*Controller).Reconcile\u001b[1X\u001b[Cno changes detected, doing nothing\u001b[6X\u001b[6C{\"controller\": \"persist\u001b[14;122Hence-controller\"}\u001b[K\u001b[15;122HFri Jun 23 15:59:32 2023 daemon.info emissary[3471]: 2023-06-23 15:59:32.598 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/pr\u001b[16;122Hoxy/controller.go:35>\u001b[3X\u001b[3C(*Controller).Reconcile\u001b[1X\u001b[Ccould not find proxy spec\u001b[7X\u001b[7C{\"controller\": \"proxy-controller\"}\u001b[K\u001b[17;122HFri Jun 23 15:59:32 2023 daemon.info emissary[3471]: 2023-06-23 15:59:32.606 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/op\u001b[18;122Henwrt/uci_controller.go:40>\u001b[5X\u001b[5C(*UCIController).Reconcile\u001b[6X\u001b[6Cretrieved spec\u001b[2X\u001b[2C{\"controller\": \"uci-controller\", \"spec\"\u001b[19;122H: \"uci.emissary.ca"]
[265.641268, "o", "doles.com\", \"revision\": 0}\u001b[K\u001b[20;122HFri Jun 23 15:59:32 2023 daemon.info emissary[3471]: 2023-06-23 15:59:32.607 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/op\u001b[21;122Henwrt/uci_controller.go:61>\u001b[5X\u001b[5C(*UCIController).updateConfiguration\u001b[4X\u001b[4Cimporting uci config\u001b[4X\u001b[4C{\"controller\": \"uci-con\u001b[22;122Htroller\"}\u001b[K\u001b[23;122HFri Jun 23 15:59:33 2023 daemon.info emissary[3471]: 2023-06-23 15:59:33.128 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/op\u001b[24;122Henwrt/uci_controller.go:55>\u001b[5X\u001b[5C(*UCIController).Reconcile\u001b[6X\u001b[6Cupdating current spec revision\u001b[2X\u001b[2C{\"controller\": \"uci-con\u001b[25;122Htroller\", \"revision\": 0}\u001b[K\u001b[26;122HFri Jun 23 15:59:33 2023 daemon.info emissary[3471]: 2023-06-23 15:59:33.128 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/ap\u001b[27;122Hp/controller.go:42>\u001b[5X\u001b[5C(*Controller).Reconcile\u001b[1X\u001b[Ccould not find app spec\u001b[1X\u001b[C{\"controller\": \"app-controller\"}\u001b[K\u001b[28;122HFri Jun 23 15:59:33 2023 daemon.info emissary[3471]: 2023-06-23 15:59:33.128 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/op\u001b[29;"]
[265.641281, "o", "122Henwrt/sysupgrade_controller.go:36>\u001b[6X\u001b[6C(*SysUpgradeController).Reconcile\u001b[7X\u001b[7Ccould not find sysupgrade spec, doing n\u001b[30;122Hothing\u001b[2X\u001b[2C{\"controller\": \"sysupgrade-controller\"}\u001b[K\u001b[31;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: exiting on receipt of SIGTERM\u001b[K\u001b[32;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: started, version 2.86 cachesize 150\u001b[K\u001b[33;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: DNS service limited to local subnets\u001b[K\u001b[34;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: compile time options: IPv6 GNU-getopt no-DBus UBus no-i18n no-IDN DHCP\u001b[35;122H no-DHCPv6 no-Lua TFTP no-conntrack no-ipset no-auth no-cryptohash no-DNSSEC no-ID loop-detect inotify dumpfile\u001b[K\u001b[36;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: UBus support enabled: connected to system bus\u001b[K\u001b[37;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for test\u001b[K\u001b[38;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addres"]
[265.641294, "o", "ses for onion\u001b[K\u001b[39;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for localhost\u001b[K\u001b[40;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for local\u001b[K\u001b[41;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for invalid\u001b[K\u001b[42;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for bind\u001b[K\u001b[43;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for lan\u001b[K\u001b[44;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: reading /tmp/resolv.conf.d/resolv.conf.auto\u001b[K\u001b[45;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using nameserver 192.168.5.53#53\u001b[K\u001b[46;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for test\u001b[K\u001b[47;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for onion\u001b[K\u001b[48;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only local"]
[265.641306, "o", "ly-known addresses for localhost\u001b[K\u001b[49;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for local\u001b[K\u001b[50;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for invalid\u001b[K\u001b[51;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for bind\u001b[K\u001b[52;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for lan\u001b[K\u001b[53;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: read /etc/hosts - 4 addresses\u001b[K\u001b[54;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: read /tmp/hosts/dhcp.cfg01411c - 0 addresses\u001b[K\u001b[55;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: read /etc/hosts - 4 addresses\u001b[K\u001b[56;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: read /tmp/hosts/dhcp.cfg01411c - 0 addresses\u001b[K\u001b[57;122H\u001b[K\n\u001b[K\n^Croot@ArcadAgent:~# ^C\u001b[K\u001b[60;122Hroot@ArcadAgent:~# echo \"My hostname is now \"ArcadeAgent\"\"\u001b[K\u001b[61;122HMy hostname is now ArcadeAgent\u001b[K\u001b[62;122Hroot@ArcadAgent:"]
[265.641334, "o", "~# netstat -tlnup\u001b[K\u001b[63;122HActive Internet connections (only servers)\u001b[K\u001b[64;122HProto Recv-Q Send-Q Local Address Foreign Address State PID/Program name \u001b[K\u001b[65;122Htcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 4076/dnsmasq\u001b[K\u001b[66;122Htcp 0 0 192.168.10.230:53 0.0.0.0:* LISTEN 4076/dnsmasq\u001b[K\u001b[67;122Htcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 2087/dropbear\u001b[K\u001b[68;122Htcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1511/uhttpd\u001b[K\u001b[69;122Htcp 0 0 :::8083 :::* LISTEN 3471/emissary\u001b[K\u001b[70;122Htcp 0 0 :::8084 :::* LISTEN 3471/emissary\u001b[K\u001b[71;122Htcp 0 0 ::1:53 :::* LISTEN 4076/dnsmasq\u001b[K\u001b[72;122Htcp 0 0 fe80::c0ff:fea8:a08:53 :::* LISTEN 4076/dnsmasq\u001b[K\u001b[73"]
[265.64135, "o", ";122Htcp 0 0 :::22 :::* LISTEN 2087/dropbear\u001b[K\u001b[74;122Htcp 0 0 :::80 :::* LISTEN 1511/uhttpd\u001b[K\u001b[75;122Hudp 0 0 127.0.0.1:53 0.0.0.0:* 4076/dnsmasq\u001b[K\u001b[76;122Hudp 0 0 192.168.10.230:53 0.0.0.0:* 4076/dnsmasq\u001b[K\u001b[77;122Hudp 0 0 ::1:53 :::* 4076/dnsmasq\u001b[K\u001b[78;122Hudp 0 0 fe80::c0ff:fea8:a08:53 :::* 4076/dnsmasq\u001b[K\u001b[79;122Hroot@ArcadAgent:~# echo \"New applications are installed\"\u001b[K\u001b[80;122HNew applications are installed\u001b[K\u001b[81;122Hroot@ArcadAgent:~# \u001b[K\u001b[?12l\u001b[?25h"]
[268.262913, "o", "\u001b[?25l\u001b[1;121H\u001b[32m│\u001b[2;121H│\u001b[3;121H│\u001b[4;121H│\u001b[5;121H│\u001b[6;121H│\u001b[7;121H│\u001b[8;121H│\u001b[9;121H│\u001b[10;121H│\u001b[11;121H│\u001b[12;121H│\u001b[13;121H│\u001b[14;121H│\u001b[15;121H│\u001b[16;121H│\u001b[17;121H│\u001b[18;121H│\u001b[19;121H│\u001b[20;121H│\u001b[21;121H│\u001b[22;121H│\u001b[23;121H│\u001b[24;121H│\u001b[25;121H│\u001b[26;121H│\u001b[27;121H│\u001b[28;121H│\u001b[29;121H│\u001b[30;121H│\u001b[31;121H│\u001b[32;121H│\u001b[33;121H│\u001b[34;121H│\u001b[35;121H│\u001b[36;121H│\u001b[37;121H│\u001b[38;121H│\u001b[39;121H│\u001b[40;121H│\u001b[41;121H│\u001b[42;121H\u001b[39m│\u001b[43;121H│\u001b[44;121H│\u001b[45;121H│\u001b[46;121H│\u001b[47;121H│\u001b[48;121H│\u001b[49;121H│\u001b[50;121H│\u001b[51;121H│\u001b[52;121H│\u001b[53;121H│\u001b[54;121H│\u001b[55;121H│\u001b[56;121H│\u001b[57;121H│\u001b[58;121H│\u001b[59;121H│\u001b[60;121H│\u001b[61;121H│\u001b[62;121H│\u001b[63;121H│\u001b[64;121H│\u001b[65;121H│\u001b[66;121H│\u001b[67;121H│\u001b[68;121H│\u001b[69;121H│\u001b[70;121H│\u001b[71;121H│\u001b[72;121H│\u001b[73;121H│\u001b[74;121H│\u001b[75;121H│\u001b[76;121H│\u001b[77;121H│\u001b[78;121H│\u001b[79;121H│\u001b[80;121H│\u001b[81;121H│\u001b(B\u001b[m\u001b[?12l\u001b[?25h\u001b[56;13H"]
[269.081217, "o", "v"]
[269.153163, "o", "i"]
[269.265339, "o", " "]
[269.81128, "o", "c"]
[269.872513, "o", "o"]
[269.95588, "o", "n"]
[270.065954, "o", "\remissary:~# vi config/\u001b[1;81r\u001b[57;120H\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\u001b[56;23H\u001b[98X\u001b[1;82r\u001b[56;23H"]
[270.313035, "o", "m"]
[270.456767, "o", "y"]
[270.559559, "o", "\remissary:~# vi config/my-\u001b[1;81r\u001b[57;120H\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\u001b[56;26H\u001b[95X\u0007\u001b[1;82r\u001b[56;26H"]
[271.297045, "o", "c"]
[271.521003, "o", "\u0007"]
[272.081294, "o", "\u001b[1;81r\u001b[57;120H\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\u001b[56;26H\u001b[95X\u001b[1;82r\u001b[56;26H"]
[272.273395, "o", "\remissary:~# vi config/my-\u001b[1;81r\u001b[57;120H\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\u001b[56;26H\u001b[95X\u0007\u001b[1;82r\u001b[56;26H"]
[272.729045, "o", "\r\nmy-agent-config.json my-uci-spec.json\r\nemissary:~# vi config/my-\u001b[1;81r\u001b[59;120H\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\u001b[58;26H\u001b[95X\u001b[1;82r\u001b[58;26H"]
[273.545161, "o", "u"]
[273.625572, "o", "\remissary:~# vi config/my-uci-spec.json \u001b[1;81r\u001b[59;120H\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\u001b[58;40H\u001b[81X\u001b[1;82r\u001b[58;40H"]
[274.186674, "o", "\r\n"]
[274.189049, "o", "\u001b[?25l\u001b[1;120H\u001b[1K\u001b[H{\u001b[2;120H\u001b[1K\u001b[2G\u001b[1K\u001b[C\"config\": {\u001b[3;120H\u001b[1K\u001b[4G\u001b[1K\u001b[C\"packages\": [\u001b[4;120H\u001b[1K\u001b[6G\u001b[1K\u001b[C{\u001b[5;120H\u001b[1K\u001b[8G\u001b[1K\u001b[C\"name\": \"dhcp\",\u001b[6;120H\u001b[1K\u001b[8G\u001b[1K\u001b[C\"configs\": [\u001b[7;120H\u001b[1K\u001b[10G\u001b[1K\u001b[C{\u001b[8;120H\u001b[1K\u001b[12G\u001b[1K\u001b[C\"name\": \"dnsmasq\",\u001b[9;120H\u001b[1K\u001b[12G\u001b[1K\u001b[C\"options\": [\u001b[10;120H\u001b[1K\u001b[14G\u001b[1K\u001b[C{\u001b[11;120H\u001b[1K\u001b[16G\u001b[1K\u001b[C\"type\": \"option\",\u001b[12;120H\u001b[1K\u001b[16G\u001b[1K\u001b[C\"name\": \"domainneeded\",\u001b[13;120H\u001b[1K\u001b[16G\u001b[1K\u001b[C\"value\": \"1\"\u001b[14;120H\u001b[1K\u001b[14G\u001b[1K\u001b[C},\u001b[15;120H\u001b[1K\u001b[14G\u001b[1K\u001b[C{\u001b[16;120H\u001b[1K\u001b[16G\u001b[1K\u001b[C\"type\": \"option\",\u001b[17;120H\u001b[1K\u001b[16G\u001b[1K\u001b[C\"name\": \"boguspriv\",\u001b[18;120H\u001b[1K\u001b[16G\u001b[1K\u001b[C\"value\": \"1\"\u001b[19;120H\u001b[1K\u001b[14G\u001b[1K\u001b[C},\u001b[20;120H\u001b[1K\u001b[14G\u001b[1K\u001b[C{\u001b[21;120H\u001b[1K\u001b[16G\u001b[1K\u001b[C\"type\": \"option\",\u001b[22;120H\u001b[1K\u001b[16G\u001b[1K\u001b[C\"name\": \"filterwin2k\",\u001b[23;120H\u001b[1K\u001b[16G\u001b[1K\u001b[C\"value\": \"0\"\u001b[24;120H\u001b[1K\u001b[14G\u001b[1K\u001b[C},\u001b[25;120H\u001b[1K\u001b[14G\u001b[1K\u001b[C{\u001b[26;120H\u001b[1K\u001b[16G\u001b[1K\u001b[C\"type\": \"option\",\u001b[27;120H\u001b[1K\u001b[16G\u001b[1K\u001b[C\"name\": \"localise_queries\",\u001b[28;120H\u001b[1K\u001b[16G\u001b[1K\u001b[C\"value\": \"1\"\u001b[29;120H\u001b[1K\u001b[14G\u001b[1K\u001b[C},\u001b[30;120H\u001b[1"]
[274.189076, "o", "K\u001b[14G\u001b[1K\u001b[C{\u001b[31;120H\u001b[1K\u001b[16G\u001b[1K\u001b[C\"type\": \"option\",\u001b[32;120H\u001b[1K\u001b[16G\u001b[1K\u001b[C\"name\": \"rebind_localhost\",\u001b[33;120H\u001b[1K\u001b[16G\u001b[1K\u001b[C\"value\": \"1\"\u001b[34;120H\u001b[1K\u001b[14G\u001b[1K\u001b[C},\u001b[35;120H\u001b[1K\u001b[14G\u001b[1K\u001b[C{\u001b[36;120H\u001b[1K\u001b[16G\u001b[1K\u001b[C\"type\": \"option\",\u001b[37;120H\u001b[1K\u001b[16G\u001b[1K\u001b[C\"name\": \"local\",\u001b[38;120H\u001b[1K\u001b[16G\u001b[1K\u001b[C\"value\": \"/lan/\"\u001b[39;120H\u001b[1K\u001b[14G\u001b[1K\u001b[C},\u001b[40;120H\u001b[1K\u001b[14G\u001b[1K\u001b[C{\u001b[41;120H\u001b[1K\u001b[16G\u001b[1K\u001b[C\"type\": \"option\",\u001b[42;120H\u001b[1K\u001b[16G\u001b[1K\u001b[C\"name\": \"domain\",\u001b[43;120H\u001b[1K\u001b[16G\u001b[1K\u001b[C\"value\": \"lan\"\u001b[44;120H\u001b[1K\u001b[14G\u001b[1K\u001b[C},\u001b[45;120H\u001b[1K\u001b[14G\u001b[1K\u001b[C{\u001b[46;120H\u001b[1K\u001b[16G\u001b[1K\u001b[C\"type\": \"option\",\u001b[47;120H\u001b[1K\u001b[16G\u001b[1K\u001b[C\"name\": \"expandhosts\",\u001b[48;120H\u001b[1K\u001b[16G\u001b[1K\u001b[C\"value\": \"1\"\u001b[49;120H\u001b[1K\u001b[14G\u001b[1K\u001b[C},\u001b[50;120H\u001b[1K\u001b[14G\u001b[1K\u001b[C{\u001b[51;120H\u001b[1K\u001b[16G\u001b[1K\u001b[C\"type\": \"option\",\u001b[52;120H\u001b[1K\u001b[16G\u001b[1K\u001b[C\"name\": \"nonegcache\",\u001b[53;120H\u001b[1K\u001b[16G\u001b[1K\u001b[C\"value\": \"0\"\u001b[54;120H\u001b[1K\u001b[14G\u001b[1K\u001b[C},\u001b[55;120H\u001b[1K\u001b[14G\u001b[1K\u001b[C{\u001b[56;120H\u001b[1K\u001b[16G\u001b[1K\u001b[C\"type\": \"option\",\u001b[57;120H\u001b[1K\u001b[16G\u001b[1K\u001b[C\"name\": \"authoritative\",\u001b[58;120H\u001b[1K\u001b[16G\u001b[1K\u001b[C"]
[274.189089, "o", "\"value\": \"1\"\u001b[59;120H\u001b[1K\u001b[14G\u001b[1K\u001b[C},\u001b[60;120H\u001b[1K\u001b[14G\u001b[1K\u001b[C{\u001b[61;120H\u001b[1K\u001b[16G\u001b[1K\u001b[C\"type\": \"option\",\u001b[62;120H\u001b[1K\u001b[16G\u001b[1K\u001b[C\"name\": \"readethers\",\u001b[63;120H\u001b[1K\u001b[16G\u001b[1K\u001b[C\"value\": \"1\"\u001b[64;120H\u001b[1K\u001b[14G\u001b[1K\u001b[C},\u001b[65;120H\u001b[1K\u001b[14G\u001b[1K\u001b[C{\u001b[66;120H\u001b[1K\u001b[16G\u001b[1K\u001b[C\"type\": \"option\",\u001b[67;120H\u001b[1K\u001b[16G\u001b[1K\u001b[C\"name\": \"leasefile\",\u001b[68;120H\u001b[1K\u001b[16G\u001b[1K\u001b[C\"value\": \"/tmp/dhcp.leases\"\u001b[69;120H\u001b[1K\u001b[14G\u001b[1K\u001b[C},\u001b[70;120H\u001b[1K\u001b[14G\u001b[1K\u001b[C{\u001b[71;120H\u001b[1K\u001b[16G\u001b[1K\u001b[C\"type\": \"option\",\u001b[72;120H\u001b[1K\u001b[16G\u001b[1K\u001b[C\"name\": \"resolvfile\",\u001b[73;16H\u001b[1K\u001b[C\"value\": \"/tmp/resolv.conf.d/resolv.conf.auto\"\u001b[58X\u001b[74;120H\u001b[1K\u001b[14G\u001b[1K\u001b[C},\u001b[75;120H\u001b[1K\u001b[14G\u001b[1K\u001b[C{\u001b[76;120H\u001b[1K\u001b[16G\u001b[1K\u001b[C\"type\": \"option\",\u001b[77;120H\u001b[1K\u001b[16G\u001b[1K\u001b[C\"name\": \"nonwildcard\",\u001b[78;120H\u001b[1K\u001b[16G\u001b[1K\u001b[C\"value\": \"1\"\u001b[79;120H\u001b[1K\u001b[14G\u001b[1K\u001b[C},\u001b[80;120H\u001b[1K\u001b[14G\u001b[1K\u001b[C{\u001b[81;120H\u001b[1K\r- config/my-uci-spec.json 1/1574 0%\u001b[?12l\u001b[?25h\u001b[H"]
[276.0343, "o", "\u001b[81d/\u001b[119X\u0007"]
[277.681058, "o", "A"]
[277.977808, "o", "r"]
[278.176983, "o", "c"]
[278.304404, "o", "a"]
[278.417316, "o", "d"]
[278.912726, "o", "A"]
[279.096756, "o", "g"]
[279.345984, "o", "\u001b[H \"value\": \"30\"\u001b[2;3H }\u001b[3;5H ] \u001b[4;7H },\u001b[5;9H { \u001b[6;9H \"name\": \"login\",\u001b[7;11H \"options\": [\u001b[8;13H { \u001b[9;13H \"type\": \"option\",\u001b[10;15H \"name\": \"username\",\u001b[11;18Hvalue\": \"root\" \u001b[12;15H}, \u001b[13;15H{ \u001b[14;15H \"type\": \"option\",\u001b[15;15H \"name\": \"password\",\u001b[16;18Hvalue\": \"$p$root\"\u001b[17;15H}, \u001b[18;15H{ \u001b[19;15H \"type\": \"list\",\u001b[20;15H \"name\": \"read\",\u001b[21;18Hvalue\": \"*\" \u001b[22;15H}, \u001b[23;15H{ \u001b[24;15H \"type\": \"list\",\u001b[25;15H \"name\": \"write\",\u001b[26;18Hvalue\": \"*\" \u001b[27;15H} \u001b[28;13H] \u001b[29;11H} \u001b[30;9H] \u001b[31;7H}, \u001b[32;7H{ \u001b[33;9H\"name\": \"system\", \u001b[34;9H\"configs\": [\u001b[35;11H{ \u001b[36;13H\"name\": \"system\", \u001b[37;13H\"options\": [ \u001b[38;15H{ \u001b[39;15H \"type\": \"option\",\u001b[40;15H \"name\": \"hostname\",\u001b[41;18Hvalu"]
[279.34602, "o", "e\": \"ArcadAgent\"\u001b[42;15H}, \u001b[43;15H{ \u001b[44;15H \"type\": \"option\",\u001b[45;15H \"name\": \"timezone\",\u001b[46;18Hvalue\": \"UTC\" \u001b[47;15H}, \u001b[48;15H{ \u001b[49;15H \"type\": \"option\",\u001b[50;15H \"name\": \"ttylogin\",\u001b[51;18Hvalue\": \"0\" \u001b[52;15H}, \u001b[53;15H{ \u001b[54;15H \"type\": \"option\",\u001b[55;15H \"name\": \"log_size\",\u001b[56;18Hvalue\": \"64\" \u001b[57;15H}, \u001b[58;15H{ \u001b[59;15H \"type\": \"option\",\u001b[60;15H \"name\": \"urandom_seed\",\u001b[61;18Hvalue\": \"0\" \u001b[62;15H} \u001b[63;13H] \u001b[64;11H}, \u001b[65;11H{ \u001b[66;13H\"name\": \"timeserver\u001b[67;13H\"section\": \"ntp\", \u001b[68;13H\"options\": [ \u001b[69;15H{ \u001b[70;15H \"type\": \"option\",\u001b[71;18Hname\": \"enabled\",\u001b[72;18Hvalue\": \"1\" \u001b[73;15H}, \u001b[74;15H{ \u001b[75;15H \"type\": \"option\",\u001b[76;18Hname\": \"enable_server\",\u001b[77;18Hvalue\": \"0\" \u001b[78;15H}, \u001b[79;15H{ \u001b[80;15H \"type"]
[279.346032, "o", "\": \"list\",\r\n- config/my-uci-spec.json 1146/1574 72%\u001b[81X\u001b[41;27H"]
[281.659897, "o", "\u001b[81;1HI config/my-uci-spec.json 1146/1574 72%\u001b[81X\u0007\u001b[41;27H"]
[282.121181, "o", "NArcadAgent\"\u001b[11D"]
[282.305551, "o", "eArcadAgent\"\u001b[11D"]
[282.450581, "o", "wArcadAgent\"\u001b[11D"]
[283.555238, "o", "\u001b[81;1H:\u001b[119X"]
[283.624391, "o", "w"]
[283.792746, "o", "q"]
[284.154207, "o", "\u001b[116C\u001b[1K\r"]
[284.154458, "o", "\u001b[?25l\u001b[1;120H\u001b[1K\u001b[Hemissary:~# echo \"The server\"\u001b[2;120H\u001b[1K\rThe server\u001b[3;120H\u001b[1K\remissary:~# emissary api agent query\r\n+----+-------+------------+--------+-------------+-----------+\u001b[58X\r\n| ID | LABEL | THUMBPRINT | STATUS | CONTACTEDAT | UPDATEDAT |\u001b[58X\r\n+----+-------+------------+--------+-------------+-----------+\u001b[58X\r\n+----+-------+------------+--------+-------------+-----------+\u001b[58X\u001b[8;120H\u001b[1K\remissary:~# emissary api agent query\r\n+----+-------+-----------------------------------+--------+-----------------------------------+-------------------------\u001b[10;120H\u001b[1K\r----------+\r\n| ID | LABEL | THUMBPRINT | STATUS | CONTACTEDAT | UPDATEDAT \u001b[12;120H\u001b[1K\r |\r\n+----+-------+-----------------------------------+--------+-----------------------------------+-------------------------\u001b[14;120H\u001b[1K\r----------+\r\n| 1 | | 23ZQ4yoK869AFHJ6ryA8EpnAz8ZESr... | 0 | 2023-06-23 15:57:32.068805967 ... | \"2023-06-23T15:57:31.807\u001b[16;120H\u001b[1K\r"]
[284.15451, "o", "03548Z... |\r\n+----+-------+-----------------------------------+--------+-----------------------------------+-------------------------\u001b[18;120H\u001b[1K\r----------+\u001b[19;120H\u001b[1K\remissary:~# ^Cissary api agent query\u001b[20;120H\u001b[1K\r\nemissary:~# emissary api agent update --agent-id 1 --status 1\u001b[59X\r\n+----+-------+-----------------------------------+--------+-----------------------------------+-------------------------\u001b[23;120H\u001b[1K\r----------+\r\n| ID | LABEL | THUMBPRINT | STATUS | CONTACTEDAT | UPDATEDAT \u001b[25;120H\u001b[1K\r |\r\n+----+-------+-----------------------------------+--------+-----------------------------------+-------------------------\u001b[27;120H\u001b[1K\r----------+\r\n| 1 | | 23ZQ4yoK869AFHJ6ryA8EpnAz8ZESr... | 1 | 2023-06-23 15:57:32.068805967 ... | \"2023-06-23T15:58:05.165\u001b[29;120H\u001b[1K\r446799... |\r\n+----+-------+-----------------------------------+--------+-----------------------------------+-------------------------\u001b[31;120H\u001b[1K\r----------+"]
[284.154608, "o", "\r\nemissary:~# cat config/my-uci-spec.json | emissary api agent spec update -a 1 --no-patch --spec-data - --spec-name uci.e\u001b[33;120H\u001b[1K\rmissary.cadoles.com\r\n+----+--------------------------+-----------------------------------+----------+-----------------------------------+----\u001b[35;120H\u001b[1K\r-------------------------------+\r\n| ID | NAME | DATA | REVISION | CREATEDAT | UPD\u001b[37;120H\u001b[1K\rATEDAT |\r\n+----+--------------------------+-----------------------------------+----------+-----------------------------------+----\u001b[39;120H\u001b[1K\r-------------------------------+\r\n| 1 | uci.emissary.cadoles.com | {\"config\":{\"packages\":[{\"confi... | 0 | \"2023-06-23T15:59:00.937205005... | \"20\u001b[41;120H\u001b[1K\r23-06-23T15:59:00.937205005... |\r\n+----+--------------------------+-----------------------------------+----------+-----------------------------------+----\u001b[43;120H\u001b[1K\r-------------------------------+\r\nemissary:~# cat config/app."]
[284.154621, "o", "emissary.cadoles.com.json | emissary api agent spec update -a 1 --no-patch --spec-data - --sp\u001b[45;120H\u001b[1K\rec-name app.emissary.cadoles.com\r\n+----+--------------------------+-----------------------------------+----------+-----------------------------------+----\u001b[47;120H\u001b[1K\r-------------------------------+\r\n| ID | NAME | DATA | REVISION | CREATEDAT | UPD\u001b[49;120H\u001b[1K\rATEDAT |\r\n+----+--------------------------+-----------------------------------+----------+-----------------------------------+----\u001b[51;120H\u001b[1K\r-------------------------------+\r\n| 2 | app.emissary.cadoles.com | {\"apps\":{\"app.arcad.edge.hextr... | 0 | \"2023-06-23T15:59:50.133065468... | \"20\u001b[53;120H\u001b[1K\r23-06-23T15:59:50.133065468... |\r\n+----+--------------------------+-----------------------------------+----------+-----------------------------------+----\u001b[55;120H\u001b[1K\r-------------------------------+\u001b[56;120H\u001b[1K\remissary:~# vi config/my-\u001b[57;1"]
[284.154766, "o", "20H\u001b[1K\rmy-agent-config.json my-uci-spec.json\u001b[58;120H\u001b[1K\remissary:~# vi config/my-uci-spec.json \u001b[59;120H\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\u001b[?12l\u001b[?25h\u001b[59;1Hemissary:~# "]
[285.288747, "o", "\remissary:~# vi config/my-uci-spec.json \u001b[1;81r\u001b[60;120H\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\u001b[59;40H\u001b[81X\u001b[1;82r\u001b[59;40H"]
[285.546285, "o", "\remissary:~# cat config/app.emissary.cadoles.com.json | emissary api agent spec update -a 1 --no-patch --spec-data - --sp\r\nec-name app.emissary.cadoles.com\u001b[1;81r\u001b[61;120H\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\u001b[60;33H\u001b[88X\u001b[1;82r\u001b[60;33H"]
[285.833525, "o", "\u001b[59;1Hemissary:~# cat config/my-uci-spec.json | emissary api agent spec update -a 1 --no-patch --spec-data - --spec-name uci.e\r\nmissary.cadoles.com\u001b[1;81r\u001b[61;120H\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\n\u001b[1K\u001b[60;20H\u001b[101X\u001b[1;82r\u001b[60;20H"]
[289.415637, "o", "\u001b[?25l\u001b[37m\u001b[40m\u001b[82;1H\u001b[32mnumenor\u001b[37m0:ssh* \"numenor\" 18:01 23-juin-23\u001b(B\u001b[m\u001b[?12l\u001b[?25h\u001b[60;20H"]
[289.826581, "o", "\r\n"]
[290.081445, "o", "+----+--------------------------+-----------------------------------+----------+-----------------------------------+----\r\n-------------------------------+\r\n| ID | NAME | DATA | REVISION | CREATEDAT | UPD\r\nATEDAT |\r\n+----+--------------------------+-----------------------------------+----------+-----------------------------------+----\r\n-------------------------------+\r\n| 1 | uci.emissary.cadoles.com | {\"config\":{\"packages\":[{\"confi... | 1 | \"2023-06-23T15:59:00.937205005... | \"20\r\n23-06-23T16:01:10.546999379... |\r\n+----+--------------------------+-----------------------------------+----------+-----------------------------------+----\r\n-------------------------------+\r\n"]
[290.081594, "o", "emissary:~# "]
[291.718595, "o", "\u001b[?25l\u001b[1;121H│\u001b[2;121H│\u001b[3;121H│\u001b[4;121H│\u001b[5;121H│\u001b[6;121H│\u001b[7;121H│\u001b[8;121H│\u001b[9;121H│\u001b[10;121H│\u001b[11;121H│\u001b[12;121H│\u001b[13;121H│\u001b[14;121H│\u001b[15;121H│\u001b[16;121H│\u001b[17;121H│\u001b[18;121H│\u001b[19;121H│\u001b[20;121H│\u001b[21;121H│\u001b[22;121H│\u001b[23;121H│\u001b[24;121H│\u001b[25;121H│\u001b[26;121H│\u001b[27;121H│\u001b[28;121H│\u001b[29;121H│\u001b[30;121H│\u001b[31;121H│\u001b[32;121H│\u001b[33;121H│\u001b[34;121H│\u001b[35;121H│\u001b[36;121H│\u001b[37;121H│\u001b[38;121H│\u001b[39;121H│\u001b[40;121H│\u001b[41;121H│\u001b[42;121H\u001b[32m│\u001b[43;121H│\u001b[44;121H│\u001b[45;121H│\u001b[46;121H│\u001b[47;121H│\u001b[48;121H│\u001b[49;121H│\u001b[50;121H│\u001b[51;121H│\u001b[52;121H│\u001b[53;121H│\u001b[54;121H│\u001b[55;121H│\u001b[56;121H│\u001b[57;121H│\u001b[58;121H│\u001b[59;121H│\u001b[60;121H│\u001b[61;121H│\u001b[62;121H│\u001b[63;121H│\u001b[64;121H│\u001b[65;121H│\u001b[66;121H│\u001b[67;121H│\u001b[68;121H│\u001b[69;121H│\u001b[70;121H│\u001b[71;121H│\u001b[72;121H│\u001b[73;121H│\u001b[74;121H│\u001b[75;121H│\u001b[76;121H│\u001b[77;121H│\u001b[78;121H│\u001b[79;121H│\u001b[80;121H│\u001b[81;121H│\u001b(B\u001b[m\u001b[?12l\u001b[?25h\u001b[19C"]
[295.169644, "o", "l"]
[295.352434, "o", "o"]
[295.752737, "o", "g"]
[296.048604, "o", "r"]
[296.505008, "o", "e"]
[296.633205, "o", "\u001b[24Droot@ArcadAgent:~# logread \u001b[1;81r\u001b[81;149H\u001b[K\u001b[1;82r\u001b[81;149H"]
[297.256572, "o", "-"]
[297.368874, "o", "f"]
[297.489328, "o", "\u001b[?25l\u001b[1;122HFri Jun 23 15:58:32 2023 daemon.info emissary[3471]: 2023-06-23 15:58:32.657 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/pr\u001b[2;122Hoxy/controller.go:35>\u001b[3X\u001b[3C(*Controller).Reconcile\u001b[1X\u001b[Ccould not find proxy spec\u001b[7X\u001b[7C{\"controller\": \"proxy-controller\"}\u001b[K\u001b[3;122HFri Jun 23 15:58:32 2023 daemon.info emissary[3471]: 2023-06-23 15:58:32.657 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/op\u001b[4;122Henwrt/uci_controller.go:32>\u001b[5X\u001b[5C(*UCIController).Reconcile\u001b[6X\u001b[6Ccould not find uci spec, doing nothing\u001b[2X\u001b[2C{\"controller\": \u001b[5;122H\"uci-controller\"}\u001b[K\u001b[6;122HFri Jun 23 15:58:32 2023 daemon.info emissary[3471]: 2023-06-23 15:58:32.657 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/ap\u001b[7;122Hp/controller.go:42>\u001b[5X\u001b[5C(*Controller).Reconcile\u001b[1X\u001b[Ccould not find app spec\u001b[1X\u001b[C{\"controller\": \"app-controller\"}\u001b[K\u001b[8;122HFri Jun 23 15:58:32 2023 daemon.info emissary[3471]: 2023-06-23 15:58:32.658 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/op\u001b[9;122Henwrt/sysupgrade_controller.go:36>\u001b[6X\u001b[6C(*SysUpgradeCon"]
[297.489364, "o", "troller).Reconcile\u001b[7X\u001b[7Ccould not find sysupgrade spec, doing n\u001b[10;122Hothing\u001b[2X\u001b[2C{\"controller\": \"sysupgrade-controller\"}\u001b[K\u001b[11;122HFri Jun 23 15:59:32 2023 daemon.info emissary[3471]: 2023-06-23 15:59:32.218 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/pe\u001b[12;122Hrsistence/controller.go:58>\u001b[5X\u001b[5C(*Controller).Reconcile\u001b[1X\u001b[Cno changes detected, doing nothing\u001b[6X\u001b[6C{\"controller\": \"persist\u001b[13;122Hence-controller\"}\u001b[K\u001b[14;122HFri Jun 23 15:59:32 2023 daemon.info emissary[3471]: 2023-06-23 15:59:32.598 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/pr\u001b[15;122Hoxy/controller.go:35>\u001b[3X\u001b[3C(*Controller).Reconcile\u001b[1X\u001b[Ccould not find proxy spec\u001b[7X\u001b[7C{\"controller\": \"proxy-controller\"}\u001b[K\u001b[16;122HFri Jun 23 15:59:32 2023 daemon.info emissary[3471]: 2023-06-23 15:59:32.606 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/op\u001b[17;122Henwrt/uci_controller.go:40>\u001b[5X\u001b[5C(*UCIController).Reconcile\u001b[6X\u001b[6Cretrieved spec\u001b[2X\u001b[2C{\"controller\": \"uci-controller\", \"spec\"\u001b[18;122H: \"uci.emissary.cadoles.com\", \"revision\": 0}\u001b[K"]
[297.48938, "o", "\u001b[19;122HFri Jun 23 15:59:32 2023 daemon.info emissary[3471]: 2023-06-23 15:59:32.607 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/op\u001b[20;122Henwrt/uci_controller.go:61>\u001b[5X\u001b[5C(*UCIController).updateConfiguration\u001b[4X\u001b[4Cimporting uci config\u001b[4X\u001b[4C{\"controller\": \"uci-con\u001b[21;122Htroller\"}\u001b[K\u001b[22;122HFri Jun 23 15:59:33 2023 daemon.info emissary[3471]: 2023-06-23 15:59:33.128 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/op\u001b[23;122Henwrt/uci_controller.go:55>\u001b[5X\u001b[5C(*UCIController).Reconcile\u001b[6X\u001b[6Cupdating current spec revision\u001b[2X\u001b[2C{\"controller\": \"uci-con\u001b[24;122Htroller\", \"revision\": 0}\u001b[K\u001b[25;122HFri Jun 23 15:59:33 2023 daemon.info emissary[3471]: 2023-06-23 15:59:33.128 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/ap\u001b[26;122Hp/controller.go:42>\u001b[5X\u001b[5C(*Controller).Reconcile\u001b[1X\u001b[Ccould not find app spec\u001b[1X\u001b[C{\"controller\": \"app-controller\"}\u001b[K\u001b[27;122HFri Jun 23 15:59:33 2023 daemon.info emissary[3471]: 2023-06-23 15:59:33.128 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/op\u001b[28;122Henwrt/sysupgrade_controll"]
[297.489393, "o", "er.go:36>\u001b[6X\u001b[6C(*SysUpgradeController).Reconcile\u001b[7X\u001b[7Ccould not find sysupgrade spec, doing n\u001b[29;122Hothing\u001b[2X\u001b[2C{\"controller\": \"sysupgrade-controller\"}\u001b[K\u001b[30;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: exiting on receipt of SIGTERM\u001b[K\u001b[31;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: started, version 2.86 cachesize 150\u001b[K\u001b[32;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: DNS service limited to local subnets\u001b[K\u001b[33;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: compile time options: IPv6 GNU-getopt no-DBus UBus no-i18n no-IDN DHCP\u001b[34;122H no-DHCPv6 no-Lua TFTP no-conntrack no-ipset no-auth no-cryptohash no-DNSSEC no-ID loop-detect inotify dumpfile\u001b[K\u001b[35;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: UBus support enabled: connected to system bus\u001b[K\u001b[36;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for test\u001b[K\u001b[37;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for onion\u001b[K\u001b[38;122HFri "]
[297.489523, "o", "Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for localhost\u001b[K\u001b[39;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for local\u001b[K\u001b[40;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for invalid\u001b[K\u001b[41;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for bind\u001b[K\u001b[42;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for lan\u001b[K\u001b[43;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: reading /tmp/resolv.conf.d/resolv.conf.auto\u001b[K\u001b[44;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using nameserver 192.168.5.53#53\u001b[K\u001b[45;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for test\u001b[K\u001b[46;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for onion\u001b[K\u001b[47;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for localh"]
[297.489551, "o", "ost\u001b[K\u001b[48;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for local\u001b[K\u001b[49;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for invalid\u001b[K\u001b[50;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for bind\u001b[K\u001b[51;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for lan\u001b[K\u001b[52;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: read /etc/hosts - 4 addresses\u001b[K\u001b[53;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: read /tmp/hosts/dhcp.cfg01411c - 0 addresses\u001b[K\u001b[54;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: read /etc/hosts - 4 addresses\u001b[K\u001b[55;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: read /tmp/hosts/dhcp.cfg01411c - 0 addresses\u001b[K\u001b[56;122H\u001b[K\n\u001b[K\n^Croot@ArcadAgent:~# ^C\u001b[K\u001b[59;122Hroot@ArcadAgent:~# echo \"My hostname is now \"ArcadeAgent\"\"\u001b[K\u001b[60;122HMy hostname is now ArcadeAgent\u001b[K\u001b[61;122Hroot@ArcadAgent:~# netstat -tlnup\u001b[K\u001b[62;122H"]
[297.489566, "o", "Active Internet connections (only servers)\u001b[K\u001b[63;122HProto Recv-Q Send-Q Local Address Foreign Address State PID/Program name \u001b[K\u001b[64;122Htcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 4076/dnsmasq\u001b[K\u001b[65;122Htcp 0 0 192.168.10.230:53 0.0.0.0:* LISTEN 4076/dnsmasq\u001b[K\u001b[66;122Htcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 2087/dropbear\u001b[K\u001b[67;122Htcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1511/uhttpd\u001b[K\u001b[68;122Htcp 0 0 :::8083 :::* LISTEN 3471/emissary\u001b[K\u001b[69;122Htcp 0 0 :::8084 :::* LISTEN 3471/emissary\u001b[K\u001b[70;122Htcp 0 0 ::1:53 :::* LISTEN 4076/dnsmasq\u001b[K\u001b[71;122Htcp 0 0 fe80::c0ff:fea8:a08:53 :::* LISTEN 4076/dnsmasq\u001b[K\u001b[72;122Htcp 0 0 :::2"]
[297.489579, "o", "2 :::* LISTEN 2087/dropbear\u001b[K\u001b[73;122Htcp 0 0 :::80 :::* LISTEN 1511/uhttpd\u001b[K\u001b[74;122Hudp 0 0 127.0.0.1:53 0.0.0.0:* 4076/dnsmasq\u001b[K\u001b[75;122Hudp 0 0 192.168.10.230:53 0.0.0.0:* 4076/dnsmasq\u001b[K\u001b[76;122Hudp 0 0 ::1:53 :::* 4076/dnsmasq\u001b[K\u001b[77;122Hudp 0 0 fe80::c0ff:fea8:a08:53 :::* 4076/dnsmasq\u001b[K\u001b[78;122Hroot@ArcadAgent:~# echo \"New applications are installed\"\u001b[K\u001b[79;122HNew applications are installed\u001b[K\u001b[80;122Hroot@ArcadAgent:~# logread -f\u001b[K\u001b[81;122H\u001b[K\u001b[?12l\u001b[?25h"]
[309.145484, "o", "\u001b[?25l\u001b[1doxy/controller.go:35>\u001b[3X\u001b[3C(*Controller).Reconcile\u001b[1X\u001b[Ccould not find proxy spec\u001b[7X\u001b[7C{\"controller\": \"proxy-controller\"}\u001b[K\u001b[2;122HFri Jun 23 15:58:32 2023 daemon.info emissary[3471]: 2023-06-23 15:58:32.657 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/op\u001b[3;122Henwrt/uci_controller.go:32>\u001b[5X\u001b[5C(*UCIController).Reconcile\u001b[6X\u001b[6Ccould not find uci spec, doing nothing\u001b[2X\u001b[2C{\"controller\": \u001b[4;122H\"uci-controller\"}\u001b[K\u001b[5;122HFri Jun 23 15:58:32 2023 daemon.info emissary[3471]: 2023-06-23 15:58:32.657 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/ap\u001b[6;122Hp/controller.go:42>\u001b[5X\u001b[5C(*Controller).Reconcile\u001b[1X\u001b[Ccould not find app spec\u001b[1X\u001b[C{\"controller\": \"app-controller\"}\u001b[K\u001b[7;122HFri Jun 23 15:58:32 2023 daemon.info emissary[3471]: 2023-06-23 15:58:32.658 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/op\u001b[8;122Henwrt/sysupgrade_controller.go:36>\u001b[6X\u001b[6C(*SysUpgradeController).Reconcile\u001b[7X\u001b[7Ccould not find sysupgrade spec, doing n\u001b[9;122Hothing\u001b[2X\u001b[2C{\"controller\": \"sysupgrade-controller\"}\u001b[K\u001b[10;"]
[309.145522, "o", "122HFri Jun 23 15:59:32 2023 daemon.info emissary[3471]: 2023-06-23 15:59:32.218 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/pe\u001b[11;122Hrsistence/controller.go:58>\u001b[5X\u001b[5C(*Controller).Reconcile\u001b[1X\u001b[Cno changes detected, doing nothing\u001b[6X\u001b[6C{\"controller\": \"persist\u001b[12;122Hence-controller\"}\u001b[K\u001b[13;122HFri Jun 23 15:59:32 2023 daemon.info emissary[3471]: 2023-06-23 15:59:32.598 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/pr\u001b[14;122Hoxy/controller.go:35>\u001b[3X\u001b[3C(*Controller).Reconcile\u001b[1X\u001b[Ccould not find proxy spec\u001b[7X\u001b[7C{\"controller\": \"proxy-controller\"}\u001b[K\u001b[15;122HFri Jun 23 15:59:32 2023 daemon.info emissary[3471]: 2023-06-23 15:59:32.606 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/op\u001b[16;122Henwrt/uci_controller.go:40>\u001b[5X\u001b[5C(*UCIController).Reconcile\u001b[6X\u001b[6Cretrieved spec\u001b[2X\u001b[2C{\"controller\": \"uci-controller\", \"spec\"\u001b[17;122H: \"uci.emissary.cadoles.com\", \"revision\": 0}\u001b[K\u001b[18;122HFri Jun 23 15:59:32 2023 daemon.info emissary[3471]: 2023-06-23 15:59:32.607 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/op\u001b[19"]
[309.145539, "o", ";122Henwrt/uci_controller.go:61>\u001b[5X\u001b[5C(*UCIController).updateConfiguration\u001b[4X\u001b[4Cimporting uci config\u001b[4X\u001b[4C{\"controller\": \"uci-con\u001b[20;122Htroller\"}\u001b[K\u001b[21;122HFri Jun 23 15:59:33 2023 daemon.info emissary[3471]: 2023-06-23 15:59:33.128 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/op\u001b[22;122Henwrt/uci_controller.go:55>\u001b[5X\u001b[5C(*UCIController).Reconcile\u001b[6X\u001b[6Cupdating current spec revision\u001b[2X\u001b[2C{\"controller\": \"uci-con\u001b[23;122Htroller\", \"revision\": 0}\u001b[K\u001b[24;122HFri Jun 23 15:59:33 2023 daemon.info emissary[3471]: 2023-06-23 15:59:33.128 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/ap\u001b[25;122Hp/controller.go:42>\u001b[5X\u001b[5C(*Controller).Reconcile\u001b[1X\u001b[Ccould not find app spec\u001b[1X\u001b[C{\"controller\": \"app-controller\"}\u001b[K\u001b[26;122HFri Jun 23 15:59:33 2023 daemon.info emissary[3471]: 2023-06-23 15:59:33.128 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/op\u001b[27;122Henwrt/sysupgrade_controller.go:36>\u001b[6X\u001b[6C(*SysUpgradeController).Reconcile\u001b[7X\u001b[7Ccould not find sysupgrade spec, doing n\u001b[28;122Hothing\u001b[2X\u001b[2C{\"controller\": "]
[309.145694, "o", "\"sysupgrade-controller\"}\u001b[K\u001b[29;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: exiting on receipt of SIGTERM\u001b[K\u001b[30;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: started, version 2.86 cachesize 150\u001b[K\u001b[31;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: DNS service limited to local subnets\u001b[K\u001b[32;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: compile time options: IPv6 GNU-getopt no-DBus UBus no-i18n no-IDN DHCP\u001b[33;122H no-DHCPv6 no-Lua TFTP no-conntrack no-ipset no-auth no-cryptohash no-DNSSEC no-ID loop-detect inotify dumpfile\u001b[K\u001b[34;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: UBus support enabled: connected to system bus\u001b[K\u001b[35;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for test\u001b[K\u001b[36;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for onion\u001b[K\u001b[37;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for localhost\u001b[K\u001b[38;122HFri Jun 23 15:59:34 2023 daemo"]
[309.145726, "o", "n.info dnsmasq[1]: using only locally-known addresses for local\u001b[K\u001b[39;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for invalid\u001b[K\u001b[40;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for bind\u001b[K\u001b[41;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for lan\u001b[K\u001b[42;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: reading /tmp/resolv.conf.d/resolv.conf.auto\u001b[K\u001b[43;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using nameserver 192.168.5.53#53\u001b[K\u001b[44;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for test\u001b[K\u001b[45;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for onion\u001b[K\u001b[46;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for localhost\u001b[K\u001b[47;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for local\u001b[K\u001b[48;122HFri Jun 23 15:5"]
[309.145743, "o", "9:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for invalid\u001b[K\u001b[49;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for bind\u001b[K\u001b[50;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for lan\u001b[K\u001b[51;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: read /etc/hosts - 4 addresses\u001b[K\u001b[52;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: read /tmp/hosts/dhcp.cfg01411c - 0 addresses\u001b[K\u001b[53;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: read /etc/hosts - 4 addresses\u001b[K\u001b[54;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: read /tmp/hosts/dhcp.cfg01411c - 0 addresses\u001b[K\u001b[55;122H\u001b[K\n\u001b[K\n^Croot@ArcadAgent:~# ^C\u001b[K\u001b[58;122Hroot@ArcadAgent:~# echo \"My hostname is now \"ArcadeAgent\"\"\u001b[K\u001b[59;122HMy hostname is now ArcadeAgent\u001b[K\u001b[60;122Hroot@ArcadAgent:~# netstat -tlnup\u001b[K\u001b[61;122HActive Internet connections (only servers)\u001b[K\u001b[62;122HProto Recv-Q Send-Q Local Address Foreign Address State P"]
[309.145863, "o", "ID/Program name \u001b[K\u001b[63;122Htcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 4076/dnsmasq\u001b[K\u001b[64;122Htcp 0 0 192.168.10.230:53 0.0.0.0:* LISTEN 4076/dnsmasq\u001b[K\u001b[65;122Htcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 2087/dropbear\u001b[K\u001b[66;122Htcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1511/uhttpd\u001b[K\u001b[67;122Htcp 0 0 :::8083 :::* LISTEN 3471/emissary\u001b[K\u001b[68;122Htcp 0 0 :::8084 :::* LISTEN 3471/emissary\u001b[K\u001b[69;122Htcp 0 0 ::1:53 :::* LISTEN 4076/dnsmasq\u001b[K\u001b[70;122Htcp 0 0 fe80::c0ff:fea8:a08:53 :::* LISTEN 4076/dnsmasq\u001b[K\u001b[71;122Htcp 0 0 :::22 :::* LISTEN 2087/dropbear\u001b[K\u001b[72;122Htcp 0 0 :::80 :::* "]
[309.145928, "o", " LISTEN 1511/uhttpd\u001b[K\u001b[73;122Hudp 0 0 127.0.0.1:53 0.0.0.0:* 4076/dnsmasq\u001b[K\u001b[74;122Hudp 0 0 192.168.10.230:53 0.0.0.0:* 4076/dnsmasq\u001b[K\u001b[75;122Hudp 0 0 ::1:53 :::* 4076/dnsmasq\u001b[K\u001b[76;122Hudp 0 0 fe80::c0ff:fea8:a08:53 :::* 4076/dnsmasq\u001b[K\u001b[77;122Hroot@ArcadAgent:~# echo \"New applications are installed\"\u001b[K\u001b[78;122HNew applications are installed\u001b[K\u001b[79;122Hroot@ArcadAgent:~# logread -f\u001b[K\u001b[80;122H\u001b[K\n\u001b[K\u001b[?12l\u001b[?25h"]
[309.544826, "o", "^Croot@ArcadAgent:~# "]
[310.177471, "o", "\u001b[?25l\u001b[1;122HFri Jun 23 15:58:32 2023 daemon.info emissary[3471]: 2023-06-23 15:58:32.657 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/op\u001b[2;122Henwrt/uci_controller.go:32>\u001b[5X\u001b[5C(*UCIController).Reconcile\u001b[6X\u001b[6Ccould not find uci spec, doing nothing\u001b[2X\u001b[2C{\"controller\": \u001b[3;122H\"uci-controller\"}\u001b[K\u001b[4;122HFri Jun 23 15:58:32 2023 daemon.info emissary[3471]: 2023-06-23 15:58:32.657 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/ap\u001b[5;122Hp/controller.go:42>\u001b[5X\u001b[5C(*Controller).Reconcile\u001b[1X\u001b[Ccould not find app spec\u001b[1X\u001b[C{\"controller\": \"app-controller\"}\u001b[K\u001b[6;122HFri Jun 23 15:58:32 2023 daemon.info emissary[3471]: 2023-06-23 15:58:32.658 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/op\u001b[7;122Henwrt/sysupgrade_controller.go:36>\u001b[6X\u001b[6C(*SysUpgradeController).Reconcile\u001b[7X\u001b[7Ccould not find sysupgrade spec, doing n\u001b[8;122Hothing\u001b[2X\u001b[2C{\"controller\": \"sysupgrade-controller\"}\u001b[K\u001b[9;122HFri Jun 23 15:59:32 2023 daemon.info emissary[3471]: 2023-06-23 15:59:32.218 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/pe\u001b[10;122"]
[310.17751, "o", "Hrsistence/controller.go:58>\u001b[5X\u001b[5C(*Controller).Reconcile\u001b[1X\u001b[Cno changes detected, doing nothing\u001b[6X\u001b[6C{\"controller\": \"persist\u001b[11;122Hence-controller\"}\u001b[K\u001b[12;122HFri Jun 23 15:59:32 2023 daemon.info emissary[3471]: 2023-06-23 15:59:32.598 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/pr\u001b[13;122Hoxy/controller.go:35>\u001b[3X\u001b[3C(*Controller).Reconcile\u001b[1X\u001b[Ccould not find proxy spec\u001b[7X\u001b[7C{\"controller\": \"proxy-controller\"}\u001b[K\u001b[14;122HFri Jun 23 15:59:32 2023 daemon.info emissary[3471]: 2023-06-23 15:59:32.606 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/op\u001b[15;122Henwrt/uci_controller.go:40>\u001b[5X\u001b[5C(*UCIController).Reconcile\u001b[6X\u001b[6Cretrieved spec\u001b[2X\u001b[2C{\"controller\": \"uci-controller\", \"spec\"\u001b[16;122H: \"uci.emissary.cadoles.com\", \"revision\": 0}\u001b[K\u001b[17;122HFri Jun 23 15:59:32 2023 daemon.info emissary[3471]: 2023-06-23 15:59:32.607 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/op\u001b[18;122Henwrt/uci_controller.go:61>\u001b[5X\u001b[5C(*UCIController).updateConfiguration\u001b[4X\u001b[4Cimporting uci config\u001b[4X\u001b[4C{\"controller\": \"uci-co"]
[310.177526, "o", "n\u001b[19;122Htroller\"}\u001b[K\u001b[20;122HFri Jun 23 15:59:33 2023 daemon.info emissary[3471]: 2023-06-23 15:59:33.128 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/op\u001b[21;122Henwrt/uci_controller.go:55>\u001b[5X\u001b[5C(*UCIController).Reconcile\u001b[6X\u001b[6Cupdating current spec revision\u001b[2X\u001b[2C{\"controller\": \"uci-con\u001b[22;122Htroller\", \"revision\": 0}\u001b[K\u001b[23;122HFri Jun 23 15:59:33 2023 daemon.info emissary[3471]: 2023-06-23 15:59:33.128 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/ap\u001b[24;122Hp/controller.go:42>\u001b[5X\u001b[5C(*Controller).Reconcile\u001b[1X\u001b[Ccould not find app spec\u001b[1X\u001b[C{\"controller\": \"app-controller\"}\u001b[K\u001b[25;122HFri Jun 23 15:59:33 2023 daemon.info emissary[3471]: 2023-06-23 15:59:33.128 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/op\u001b[26;122Henwrt/sysupgrade_controller.go:36>\u001b[6X\u001b[6C(*SysUpgradeController).Reconcile\u001b[7X\u001b[7Ccould not find sysupgrade spec, doing n\u001b[27;122Hothing\u001b[2X\u001b[2C{\"controller\": \"sysupgrade-controller\"}\u001b[K\u001b[28;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: exiting on receipt of SIGTERM\u001b[K\u001b[29;122HFri Jun "]
[310.17769, "o", "23 15:59:34 2023 daemon.info dnsmasq[1]: started, version 2.86 cachesize 150\u001b[K\u001b[30;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: DNS service limited to local subnets\u001b[K\u001b[31;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: compile time options: IPv6 GNU-getopt no-DBus UBus no-i18n no-IDN DHCP\u001b[32;122H no-DHCPv6 no-Lua TFTP no-conntrack no-ipset no-auth no-cryptohash no-DNSSEC no-ID loop-detect inotify dumpfile\u001b[K\u001b[33;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: UBus support enabled: connected to system bus\u001b[K\u001b[34;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for test\u001b[K\u001b[35;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for onion\u001b[K\u001b[36;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for localhost\u001b[K\u001b[37;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for local\u001b[K\u001b[38;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only"]
[310.177716, "o", " locally-known addresses for invalid\u001b[K\u001b[39;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for bind\u001b[K\u001b[40;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for lan\u001b[K\u001b[41;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: reading /tmp/resolv.conf.d/resolv.conf.auto\u001b[K\u001b[42;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using nameserver 192.168.5.53#53\u001b[K\u001b[43;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for test\u001b[K\u001b[44;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for onion\u001b[K\u001b[45;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for localhost\u001b[K\u001b[46;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for local\u001b[K\u001b[47;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for invalid\u001b[K\u001b[48;122HFri Jun 23 15:59:34 2023 daemon.info dnsma"]
[310.177724, "o", "sq[1]: using only locally-known addresses for bind\u001b[K\u001b[49;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for lan\u001b[K\u001b[50;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: read /etc/hosts - 4 addresses\u001b[K\u001b[51;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: read /tmp/hosts/dhcp.cfg01411c - 0 addresses\u001b[K\u001b[52;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: read /etc/hosts - 4 addresses\u001b[K\u001b[53;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: read /tmp/hosts/dhcp.cfg01411c - 0 addresses\u001b[K\u001b[54;122H\u001b[K\n\u001b[K\n^Croot@ArcadAgent:~# ^C\u001b[K\u001b[57;122Hroot@ArcadAgent:~# echo \"My hostname is now \"ArcadeAgent\"\"\u001b[K\u001b[58;122HMy hostname is now ArcadeAgent\u001b[K\u001b[59;122Hroot@ArcadAgent:~# netstat -tlnup\u001b[K\u001b[60;122HActive Internet connections (only servers)\u001b[K\u001b[61;122HProto Recv-Q Send-Q Local Address Foreign Address State PID/Program name \u001b[K\u001b[62;122Htcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 4076/dnsmasq\u001b[K\u001b[63;122"]
[310.177733, "o", "Htcp 0 0 192.168.10.230:53 0.0.0.0:* LISTEN 4076/dnsmasq\u001b[K\u001b[64;122Htcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 2087/dropbear\u001b[K\u001b[65;122Htcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1511/uhttpd\u001b[K\u001b[66;122Htcp 0 0 :::8083 :::* LISTEN 3471/emissary\u001b[K\u001b[67;122Htcp 0 0 :::8084 :::* LISTEN 3471/emissary\u001b[K\u001b[68;122Htcp 0 0 ::1:53 :::* LISTEN 4076/dnsmasq\u001b[K\u001b[69;122Htcp 0 0 fe80::c0ff:fea8:a08:53 :::* LISTEN 4076/dnsmasq\u001b[K\u001b[70;122Htcp 0 0 :::22 :::* LISTEN 2087/dropbear\u001b[K\u001b[71;122Htcp 0 0 :::80 :::* LISTEN 1511/uhttpd\u001b[K\u001b[72;122Hudp 0 0 127.0.0.1:53 0.0.0.0:* 4076"]
[310.17788, "o", "/dnsmasq\u001b[K\u001b[73;122Hudp 0 0 192.168.10.230:53 0.0.0.0:* 4076/dnsmasq\u001b[K\u001b[74;122Hudp 0 0 ::1:53 :::* 4076/dnsmasq\u001b[K\u001b[75;122Hudp 0 0 fe80::c0ff:fea8:a08:53 :::* 4076/dnsmasq\u001b[K\u001b[76;122Hroot@ArcadAgent:~# echo \"New applications are installed\"\u001b[K\u001b[77;122HNew applications are installed\u001b[K\u001b[78;122Hroot@ArcadAgent:~# logread -f\u001b[K\u001b[79;122H\u001b[K\n^Croot@ArcadAgent:~# \u001b[K\u001b[81;122Hroot@ArcadAgent:~# \u001b[K\u001b[?12l\u001b[?25h"]
[310.36104, "o", "\u001b[?25l\u001b[1;122Henwrt/uci_controller.go:32>\u001b[5X\u001b[5C(*UCIController).Reconcile\u001b[6X\u001b[6Ccould not find uci spec, doing nothing\u001b[2X\u001b[2C{\"controller\": \u001b[2;122H\"uci-controller\"}\u001b[K\u001b[3;122HFri Jun 23 15:58:32 2023 daemon.info emissary[3471]: 2023-06-23 15:58:32.657 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/ap\u001b[4;122Hp/controller.go:42>\u001b[5X\u001b[5C(*Controller).Reconcile\u001b[1X\u001b[Ccould not find app spec\u001b[1X\u001b[C{\"controller\": \"app-controller\"}\u001b[K\u001b[5;122HFri Jun 23 15:58:32 2023 daemon.info emissary[3471]: 2023-06-23 15:58:32.658 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/op\u001b[6;122Henwrt/sysupgrade_controller.go:36>\u001b[6X\u001b[6C(*SysUpgradeController).Reconcile\u001b[7X\u001b[7Ccould not find sysupgrade spec, doing n\u001b[7;122Hothing\u001b[2X\u001b[2C{\"controller\": \"sysupgrade-controller\"}\u001b[K\u001b[8;122HFri Jun 23 15:59:32 2023 daemon.info emissary[3471]: 2023-06-23 15:59:32.218 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/pe\u001b[9;122Hrsistence/controller.go:58>\u001b[5X\u001b[5C(*Controller).Reconcile\u001b[1X\u001b[Cno changes detected, doing nothing\u001b[6X\u001b[6C{\"controller\": \"persist"]
[310.361085, "o", "\u001b[10;122Hence-controller\"}\u001b[K\u001b[11;122HFri Jun 23 15:59:32 2023 daemon.info emissary[3471]: 2023-06-23 15:59:32.598 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/pr\u001b[12;122Hoxy/controller.go:35>\u001b[3X\u001b[3C(*Controller).Reconcile\u001b[1X\u001b[Ccould not find proxy spec\u001b[7X\u001b[7C{\"controller\": \"proxy-controller\"}\u001b[K\u001b[13;122HFri Jun 23 15:59:32 2023 daemon.info emissary[3471]: 2023-06-23 15:59:32.606 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/op\u001b[14;122Henwrt/uci_controller.go:40>\u001b[5X\u001b[5C(*UCIController).Reconcile\u001b[6X\u001b[6Cretrieved spec\u001b[2X\u001b[2C{\"controller\": \"uci-controller\", \"spec\"\u001b[15;122H: \"uci.emissary.cadoles.com\", \"revision\": 0}\u001b[K\u001b[16;122HFri Jun 23 15:59:32 2023 daemon.info emissary[3471]: 2023-06-23 15:59:32.607 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/op\u001b[17;122Henwrt/uci_controller.go:61>\u001b[5X\u001b[5C(*UCIController).updateConfiguration\u001b[4X\u001b[4Cimporting uci config\u001b[4X\u001b[4C{\"controller\": \"uci-con\u001b[18;122Htroller\"}\u001b[K\u001b[19;122HFri Jun 23 15:59:33 2023 daemon.info emissary[3471]: 2023-06-23 15:59:33.128 [INFO]\u001b[5X\u001b[5C<./intern"]
[310.361098, "o", "al/agent/controller/op\u001b[20;122Henwrt/uci_controller.go:55>\u001b[5X\u001b[5C(*UCIController).Reconcile\u001b[6X\u001b[6Cupdating current spec revision\u001b[2X\u001b[2C{\"controller\": \"uci-con\u001b[21;122Htroller\", \"revision\": 0}\u001b[K\u001b[22;122HFri Jun 23 15:59:33 2023 daemon.info emissary[3471]: 2023-06-23 15:59:33.128 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/ap\u001b[23;122Hp/controller.go:42>\u001b[5X\u001b[5C(*Controller).Reconcile\u001b[1X\u001b[Ccould not find app spec\u001b[1X\u001b[C{\"controller\": \"app-controller\"}\u001b[K\u001b[24;122HFri Jun 23 15:59:33 2023 daemon.info emissary[3471]: 2023-06-23 15:59:33.128 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/op\u001b[25;122Henwrt/sysupgrade_controller.go:36>\u001b[6X\u001b[6C(*SysUpgradeController).Reconcile\u001b[7X\u001b[7Ccould not find sysupgrade spec, doing n\u001b[26;122Hothing\u001b[2X\u001b[2C{\"controller\": \"sysupgrade-controller\"}\u001b[K\u001b[27;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: exiting on receipt of SIGTERM\u001b[K\u001b[28;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: started, version 2.86 cachesize 150\u001b[K\u001b[29;122HFri Jun 23 15:59:34 2023 daemon.info dnsmas"]
[310.361108, "o", "q[1]: DNS service limited to local subnets\u001b[K\u001b[30;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: compile time options: IPv6 GNU-getopt no-DBus UBus no-i18n no-IDN DHCP\u001b[31;122H no-DHCPv6 no-Lua TFTP no-conntrack no-ipset no-auth no-cryptohash no-DNSSEC no-ID loop-detect inotify dumpfile\u001b[K\u001b[32;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: UBus support enabled: connected to system bus\u001b[K\u001b[33;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for test\u001b[K\u001b[34;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for onion\u001b[K\u001b[35;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for localhost\u001b[K\u001b[36;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for local\u001b[K\u001b[37;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for invalid\u001b[K\u001b[38;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses"]
[310.361117, "o", " for bind\u001b[K\u001b[39;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for lan\u001b[K\u001b[40;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: reading /tmp/resolv.conf.d/resolv.conf.auto\u001b[K\u001b[41;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using nameserver 192.168.5.53#53\u001b[K\u001b[42;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for test\u001b[K\u001b[43;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for onion\u001b[K\u001b[44;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for localhost\u001b[K\u001b[45;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for local\u001b[K\u001b[46;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for invalid\u001b[K\u001b[47;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for bind\u001b[K\u001b[48;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-k"]
[310.361342, "o", "nown addresses for lan\u001b[K\u001b[49;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: read /etc/hosts - 4 addresses\u001b[K\u001b[50;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: read /tmp/hosts/dhcp.cfg01411c - 0 addresses\u001b[K\u001b[51;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: read /etc/hosts - 4 addresses\u001b[K\u001b[52;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: read /tmp/hosts/dhcp.cfg01411c - 0 addresses\u001b[K\u001b[53;122H\u001b[K\n\u001b[K\n^Croot@ArcadAgent:~# ^C\u001b[K\u001b[56;122Hroot@ArcadAgent:~# echo \"My hostname is now \"ArcadeAgent\"\"\u001b[K\u001b[57;122HMy hostname is now ArcadeAgent\u001b[K\u001b[58;122Hroot@ArcadAgent:~# netstat -tlnup\u001b[K\u001b[59;122HActive Internet connections (only servers)\u001b[K\u001b[60;122HProto Recv-Q Send-Q Local Address Foreign Address State PID/Program name \u001b[K\u001b[61;122Htcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 4076/dnsmasq\u001b[K\u001b[62;122Htcp 0 0 192.168.10.230:53 0.0.0.0:* LISTEN 4076/dnsmasq\u001b[K\u001b[63;122Htcp 0 0 0.0.0."]
[310.361378, "o", "0:22 0.0.0.0:* LISTEN 2087/dropbear\u001b[K\u001b[64;122Htcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1511/uhttpd\u001b[K\u001b[65;122Htcp 0 0 :::8083 :::* LISTEN 3471/emissary\u001b[K\u001b[66;122Htcp 0 0 :::8084 :::* LISTEN 3471/emissary\u001b[K\u001b[67;122Htcp 0 0 ::1:53 :::* LISTEN 4076/dnsmasq\u001b[K\u001b[68;122Htcp 0 0 fe80::c0ff:fea8:a08:53 :::* LISTEN 4076/dnsmasq\u001b[K\u001b[69;122Htcp 0 0 :::22 :::* LISTEN 2087/dropbear\u001b[K\u001b[70;122Htcp 0 0 :::80 :::* LISTEN 1511/uhttpd\u001b[K\u001b[71;122Hudp 0 0 127.0.0.1:53 0.0.0.0:* 4076/dnsmasq\u001b[K\u001b[72;122Hudp 0 0 192.168.10.230:53 0.0.0.0:* 4076/dnsmasq\u001b[K\u001b[73;122Hudp "]
[310.361389, "o", " 0 0 ::1:53 :::* 4076/dnsmasq\u001b[K\u001b[74;122Hudp 0 0 fe80::c0ff:fea8:a08:53 :::* 4076/dnsmasq\u001b[K\u001b[75;122Hroot@ArcadAgent:~# echo \"New applications are installed\"\u001b[K\u001b[76;122HNew applications are installed\u001b[K\u001b[77;122Hroot@ArcadAgent:~# logread -f\u001b[K\u001b[78;122H\u001b[K\n^Croot@ArcadAgent:~# \u001b[K\u001b[80;122Hroot@ArcadAgent:~# \u001b[K\u001b[81;122Hroot@ArcadAgent:~# \u001b[K\u001b[?12l\u001b[?25h"]
[311.633197, "o", "h"]
[311.768577, "o", "o"]
[311.87281, "o", "s"]
[311.969677, "o", "t"]
[312.081036, "o", "n"]
[312.201739, "o", "\u0007"]
[312.784528, "o", "a"]
[312.929515, "o", "m"]
[313.0326, "o", "e"]
[313.594965, "o", "\u001b[?25l\u001b[1;122HFri Jun 23 15:58:32 2023 daemon.info emissary[3471]: 2023-06-23 15:58:32.657 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/ap\u001b[2;122Hp/controller.go:42>\u001b[5X\u001b[5C(*Controller).Reconcile\u001b[1X\u001b[Ccould not find app spec\u001b[1X\u001b[C{\"controller\": \"app-controller\"}\u001b[K\u001b[3;122HFri Jun 23 15:58:32 2023 daemon.info emissary[3471]: 2023-06-23 15:58:32.658 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/op\u001b[4;122Henwrt/sysupgrade_controller.go:36>\u001b[6X\u001b[6C(*SysUpgradeController).Reconcile\u001b[7X\u001b[7Ccould not find sysupgrade spec, doing n\u001b[5;122Hothing\u001b[2X\u001b[2C{\"controller\": \"sysupgrade-controller\"}\u001b[K\u001b[6;122HFri Jun 23 15:59:32 2023 daemon.info emissary[3471]: 2023-06-23 15:59:32.218 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/pe\u001b[7;122Hrsistence/controller.go:58>\u001b[5X\u001b[5C(*Controller).Reconcile\u001b[1X\u001b[Cno changes detected, doing nothing\u001b[6X\u001b[6C{\"controller\": \"persist\u001b[8;122Hence-controller\"}\u001b[K\u001b[9;122HFri Jun 23 15:59:32 2023 daemon.info emissary[3471]: 2023-06-23 15:59:32.598 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/pr\u001b[10;122"]
[313.595005, "o", "Hoxy/controller.go:35>\u001b[3X\u001b[3C(*Controller).Reconcile\u001b[1X\u001b[Ccould not find proxy spec\u001b[7X\u001b[7C{\"controller\": \"proxy-controller\"}\u001b[K\u001b[11;122HFri Jun 23 15:59:32 2023 daemon.info emissary[3471]: 2023-06-23 15:59:32.606 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/op\u001b[12;122Henwrt/uci_controller.go:40>\u001b[5X\u001b[5C(*UCIController).Reconcile\u001b[6X\u001b[6Cretrieved spec\u001b[2X\u001b[2C{\"controller\": \"uci-controller\", \"spec\"\u001b[13;122H: \"uci.emissary.cadoles.com\", \"revision\": 0}\u001b[K\u001b[14;122HFri Jun 23 15:59:32 2023 daemon.info emissary[3471]: 2023-06-23 15:59:32.607 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/op\u001b[15;122Henwrt/uci_controller.go:61>\u001b[5X\u001b[5C(*UCIController).updateConfiguration\u001b[4X\u001b[4Cimporting uci config\u001b[4X\u001b[4C{\"controller\": \"uci-con\u001b[16;122Htroller\"}\u001b[K\u001b[17;122HFri Jun 23 15:59:33 2023 daemon.info emissary[3471]: 2023-06-23 15:59:33.128 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/op\u001b[18;122Henwrt/uci_controller.go:55>\u001b[5X\u001b[5C(*UCIController).Reconcile\u001b[6X\u001b[6Cupdating current spec revision\u001b[2X\u001b[2C{\"controller\": \"uci-con\u001b[19;12"]
[313.595021, "o", "2Htroller\", \"revision\": 0}\u001b[K\u001b[20;122HFri Jun 23 15:59:33 2023 daemon.info emissary[3471]: 2023-06-23 15:59:33.128 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/ap\u001b[21;122Hp/controller.go:42>\u001b[5X\u001b[5C(*Controller).Reconcile\u001b[1X\u001b[Ccould not find app spec\u001b[1X\u001b[C{\"controller\": \"app-controller\"}\u001b[K\u001b[22;122HFri Jun 23 15:59:33 2023 daemon.info emissary[3471]: 2023-06-23 15:59:33.128 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/op\u001b[23;122Henwrt/sysupgrade_controller.go:36>\u001b[6X\u001b[6C(*SysUpgradeController).Reconcile\u001b[7X\u001b[7Ccould not find sysupgrade spec, doing n\u001b[24;122Hothing\u001b[2X\u001b[2C{\"controller\": \"sysupgrade-controller\"}\u001b[K\u001b[25;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: exiting on receipt of SIGTERM\u001b[K\u001b[26;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: started, version 2.86 cachesize 150\u001b[K\u001b[27;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: DNS service limited to local subnets\u001b[K\u001b[28;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: compile time options: IPv6 GNU-getopt no-DBus UBus no-i18n no-IDN"]
[313.595034, "o", " DHCP\u001b[29;122H no-DHCPv6 no-Lua TFTP no-conntrack no-ipset no-auth no-cryptohash no-DNSSEC no-ID loop-detect inotify dumpfile\u001b[K\u001b[30;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: UBus support enabled: connected to system bus\u001b[K\u001b[31;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for test\u001b[K\u001b[32;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for onion\u001b[K\u001b[33;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for localhost\u001b[K\u001b[34;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for local\u001b[K\u001b[35;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for invalid\u001b[K\u001b[36;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for bind\u001b[K\u001b[37;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for lan\u001b[K\u001b[38;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq"]
[313.595047, "o", "[1]: reading /tmp/resolv.conf.d/resolv.conf.auto\u001b[K\u001b[39;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using nameserver 192.168.5.53#53\u001b[K\u001b[40;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for test\u001b[K\u001b[41;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for onion\u001b[K\u001b[42;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for localhost\u001b[K\u001b[43;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for local\u001b[K\u001b[44;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for invalid\u001b[K\u001b[45;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for bind\u001b[K\u001b[46;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for lan\u001b[K\u001b[47;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: read /etc/hosts - 4 addresses\u001b[K\u001b[48;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq"]
[313.595225, "o", "[1]: read /tmp/hosts/dhcp.cfg01411c - 0 addresses\u001b[K\u001b[49;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: read /etc/hosts - 4 addresses\u001b[K\u001b[50;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: read /tmp/hosts/dhcp.cfg01411c - 0 addresses\u001b[K\u001b[51;122H\u001b[K\n\u001b[K\n^Croot@ArcadAgent:~# ^C\u001b[K\u001b[54;122Hroot@ArcadAgent:~# echo \"My hostname is now \"ArcadeAgent\"\"\u001b[K\u001b[55;122HMy hostname is now ArcadeAgent\u001b[K\u001b[56;122Hroot@ArcadAgent:~# netstat -tlnup\u001b[K\u001b[57;122HActive Internet connections (only servers)\u001b[K\u001b[58;122HProto Recv-Q Send-Q Local Address Foreign Address State PID/Program name \u001b[K\u001b[59;122Htcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 4076/dnsmasq\u001b[K\u001b[60;122Htcp 0 0 192.168.10.230:53 0.0.0.0:* LISTEN 4076/dnsmasq\u001b[K\u001b[61;122Htcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 2087/dropbear\u001b[K\u001b[62;122Htcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1511/uhtt"]
[313.595259, "o", "pd\u001b[K\u001b[63;122Htcp 0 0 :::8083 :::* LISTEN 3471/emissary\u001b[K\u001b[64;122Htcp 0 0 :::8084 :::* LISTEN 3471/emissary\u001b[K\u001b[65;122Htcp 0 0 ::1:53 :::* LISTEN 4076/dnsmasq\u001b[K\u001b[66;122Htcp 0 0 fe80::c0ff:fea8:a08:53 :::* LISTEN 4076/dnsmasq\u001b[K\u001b[67;122Htcp 0 0 :::22 :::* LISTEN 2087/dropbear\u001b[K\u001b[68;122Htcp 0 0 :::80 :::* LISTEN 1511/uhttpd\u001b[K\u001b[69;122Hudp 0 0 127.0.0.1:53 0.0.0.0:* 4076/dnsmasq\u001b[K\u001b[70;122Hudp 0 0 192.168.10.230:53 0.0.0.0:* 4076/dnsmasq\u001b[K\u001b[71;122Hudp 0 0 ::1:53 :::* 4076/dnsmasq\u001b[K\u001b[72;122Hudp 0 0 fe80::c0ff:fea8:a08:53 :::* "]
[313.595275, "o", " 4076/dnsmasq\u001b[K\u001b[73;122Hroot@ArcadAgent:~# echo \"New applications are installed\"\u001b[K\u001b[74;122HNew applications are installed\u001b[K\u001b[75;122Hroot@ArcadAgent:~# logread -f\u001b[K\u001b[76;122H\u001b[K\n^Croot@ArcadAgent:~# \u001b[K\u001b[78;122Hroot@ArcadAgent:~# \u001b[K\u001b[79;122Hroot@ArcadAgent:~# hostname\u001b[K\u001b[80;122H-ash: hostname: not found\u001b[K\u001b[81;122Hroot@ArcadAgent:~# \u001b[K\u001b[?12l\u001b[?25h"]
[315.528948, "o", "\u001b[19Droot@ArcadAgent:~# hostname\u001b[1;81r\u001b[81;149H\u001b[K\u001b[1;82r\u001b[81;149H"]
[315.823738, "o", "\u001b[27Droot@ArcadAgent:~# logread -f\u001b[1;81r\u001b[81;151H\u001b[K\u001b[1;82r\u001b[81;151H"]
[316.249269, "o", "\u001b[?25l\u001b[1;122Hp/controller.go:42>\u001b[5X\u001b[5C(*Controller).Reconcile\u001b[1X\u001b[Ccould not find app spec\u001b[1X\u001b[C{\"controller\": \"app-controller\"}\u001b[K\u001b[2;122HFri Jun 23 15:58:32 2023 daemon.info emissary[3471]: 2023-06-23 15:58:32.658 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/op\u001b[3;122Henwrt/sysupgrade_controller.go:36>\u001b[6X\u001b[6C(*SysUpgradeController).Reconcile\u001b[7X\u001b[7Ccould not find sysupgrade spec, doing n\u001b[4;122Hothing\u001b[2X\u001b[2C{\"controller\": \"sysupgrade-controller\"}\u001b[K\u001b[5;122HFri Jun 23 15:59:32 2023 daemon.info emissary[3471]: 2023-06-23 15:59:32.218 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/pe\u001b[6;122Hrsistence/controller.go:58>\u001b[5X\u001b[5C(*Controller).Reconcile\u001b[1X\u001b[Cno changes detected, doing nothing\u001b[6X\u001b[6C{\"controller\": \"persist\u001b[7;122Hence-controller\"}\u001b[K\u001b[8;122HFri Jun 23 15:59:32 2023 daemon.info emissary[3471]: 2023-06-23 15:59:32.598 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/pr\u001b[9;122Hoxy/controller.go:35>\u001b[3X\u001b[3C(*Controller).Reconcile\u001b[1X\u001b[Ccould not find proxy spec\u001b[7X\u001b[7C{\"controller\": \"proxy-controller\"}\u001b[K\u001b"]
[316.249309, "o", "[10;122HFri Jun 23 15:59:32 2023 daemon.info emissary[3471]: 2023-06-23 15:59:32.606 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/op\u001b[11;122Henwrt/uci_controller.go:40>\u001b[5X\u001b[5C(*UCIController).Reconcile\u001b[6X\u001b[6Cretrieved spec\u001b[2X\u001b[2C{\"controller\": \"uci-controller\", \"spec\"\u001b[12;122H: \"uci.emissary.cadoles.com\", \"revision\": 0}\u001b[K\u001b[13;122HFri Jun 23 15:59:32 2023 daemon.info emissary[3471]: 2023-06-23 15:59:32.607 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/op\u001b[14;122Henwrt/uci_controller.go:61>\u001b[5X\u001b[5C(*UCIController).updateConfiguration\u001b[4X\u001b[4Cimporting uci config\u001b[4X\u001b[4C{\"controller\": \"uci-con\u001b[15;122Htroller\"}\u001b[K\u001b[16;122HFri Jun 23 15:59:33 2023 daemon.info emissary[3471]: 2023-06-23 15:59:33.128 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/op\u001b[17;122Henwrt/uci_controller.go:55>\u001b[5X\u001b[5C(*UCIController).Reconcile\u001b[6X\u001b[6Cupdating current spec revision\u001b[2X\u001b[2C{\"controller\": \"uci-con\u001b[18;122Htroller\", \"revision\": 0}\u001b[K\u001b[19;122HFri Jun 23 15:59:33 2023 daemon.info emissary[3471]: 2023-06-23 15:59:33.128 [INFO]\u001b[5X\u001b[5C<."]
[316.249324, "o", "/internal/agent/controller/ap\u001b[20;122Hp/controller.go:42>\u001b[5X\u001b[5C(*Controller).Reconcile\u001b[1X\u001b[Ccould not find app spec\u001b[1X\u001b[C{\"controller\": \"app-controller\"}\u001b[K\u001b[21;122HFri Jun 23 15:59:33 2023 daemon.info emissary[3471]: 2023-06-23 15:59:33.128 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/op\u001b[22;122Henwrt/sysupgrade_controller.go:36>\u001b[6X\u001b[6C(*SysUpgradeController).Reconcile\u001b[7X\u001b[7Ccould not find sysupgrade spec, doing n\u001b[23;122Hothing\u001b[2X\u001b[2C{\"controller\": \"sysupgrade-controller\"}\u001b[K\u001b[24;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: exiting on receipt of SIGTERM\u001b[K\u001b[25;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: started, version 2.86 cachesize 150\u001b[K\u001b[26;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: DNS service limited to local subnets\u001b[K\u001b[27;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: compile time options: IPv6 GNU-getopt no-DBus UBus no-i18n no-IDN DHCP\u001b[28;122H no-DHCPv6 no-Lua TFTP no-conntrack no-ipset no-auth no-cryptohash no-DNSSEC no-ID loop-detect inotify dumpfile\u001b[K\u001b[2"]
[316.249473, "o", "9;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: UBus support enabled: connected to system bus\u001b[K\u001b[30;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for test\u001b[K\u001b[31;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for onion\u001b[K\u001b[32;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for localhost\u001b[K\u001b[33;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for local\u001b[K\u001b[34;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for invalid\u001b[K\u001b[35;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for bind\u001b[K\u001b[36;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for lan\u001b[K\u001b[37;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: reading /tmp/resolv.conf.d/resolv.conf.auto\u001b[K\u001b[38;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using nameserver 192.1"]
[316.249544, "o", "68.5.53#53\u001b[K\u001b[39;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for test\u001b[K\u001b[40;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for onion\u001b[K\u001b[41;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for localhost\u001b[K\u001b[42;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for local\u001b[K\u001b[43;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for invalid\u001b[K\u001b[44;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for bind\u001b[K\u001b[45;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for lan\u001b[K\u001b[46;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: read /etc/hosts - 4 addresses\u001b[K\u001b[47;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: read /tmp/hosts/dhcp.cfg01411c - 0 addresses\u001b[K\u001b[48;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: read /etc/hosts - 4 a"]
[316.249653, "o", "ddresses\u001b[K\u001b[49;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: read /tmp/hosts/dhcp.cfg01411c - 0 addresses\u001b[K\u001b[50;122H\u001b[K\n\u001b[K\n^Croot@ArcadAgent:~# ^C\u001b[K\u001b[53;122Hroot@ArcadAgent:~# echo \"My hostname is now \"ArcadeAgent\"\"\u001b[K\u001b[54;122HMy hostname is now ArcadeAgent\u001b[K\u001b[55;122Hroot@ArcadAgent:~# netstat -tlnup\u001b[K\u001b[56;122HActive Internet connections (only servers)\u001b[K\u001b[57;122HProto Recv-Q Send-Q Local Address Foreign Address State PID/Program name \u001b[K\u001b[58;122Htcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 4076/dnsmasq\u001b[K\u001b[59;122Htcp 0 0 192.168.10.230:53 0.0.0.0:* LISTEN 4076/dnsmasq\u001b[K\u001b[60;122Htcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 2087/dropbear\u001b[K\u001b[61;122Htcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1511/uhttpd\u001b[K\u001b[62;122Htcp 0 0 :::8083 :::* LISTEN 3471/emissary\u001b[K\u001b[63;122Htcp 0"]
[316.249767, "o", " 0 :::8084 :::* LISTEN 3471/emissary\u001b[K\u001b[64;122Htcp 0 0 ::1:53 :::* LISTEN 4076/dnsmasq\u001b[K\u001b[65;122Htcp 0 0 fe80::c0ff:fea8:a08:53 :::* LISTEN 4076/dnsmasq\u001b[K\u001b[66;122Htcp 0 0 :::22 :::* LISTEN 2087/dropbear\u001b[K\u001b[67;122Htcp 0 0 :::80 :::* LISTEN 1511/uhttpd\u001b[K\u001b[68;122Hudp 0 0 127.0.0.1:53 0.0.0.0:* 4076/dnsmasq\u001b[K\u001b[69;122Hudp 0 0 192.168.10.230:53 0.0.0.0:* 4076/dnsmasq\u001b[K\u001b[70;122Hudp 0 0 ::1:53 :::* 4076/dnsmasq\u001b[K\u001b[71;122Hudp 0 0 fe80::c0ff:fea8:a08:53 :::* 4076/dnsmasq\u001b[K\u001b[72;122Hroot@ArcadAgent:~# echo \"New applications are installed\"\u001b[K\u001b[73;122HNew applications are installed\u001b"]
[316.249826, "o", "[K\u001b[74;122Hroot@ArcadAgent:~# logread -f\u001b[K\u001b[75;122H\u001b[K\n^Croot@ArcadAgent:~# \u001b[K\u001b[77;122Hroot@ArcadAgent:~# \u001b[K\u001b[78;122Hroot@ArcadAgent:~# hostname\u001b[K\u001b[79;122H-ash: hostname: not found\u001b[K\u001b[80;122Hroot@ArcadAgent:~# logread -f\u001b[K\u001b[81;122H\u001b[K\u001b[?12l\u001b[?25h"]
[337.313431, "o", "\u001b[?25l\u001b[1dFri Jun 23 15:58:32 2023 daemon.info emissary[3471]: 2023-06-23 15:58:32.658 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/op\u001b[2;122Henwrt/sysupgrade_controller.go:36>\u001b[6X\u001b[6C(*SysUpgradeController).Reconcile\u001b[7X\u001b[7Ccould not find sysupgrade spec, doing n\u001b[3;122Hothing\u001b[2X\u001b[2C{\"controller\": \"sysupgrade-controller\"}\u001b[K\u001b[4;122HFri Jun 23 15:59:32 2023 daemon.info emissary[3471]: 2023-06-23 15:59:32.218 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/pe\u001b[5;122Hrsistence/controller.go:58>\u001b[5X\u001b[5C(*Controller).Reconcile\u001b[1X\u001b[Cno changes detected, doing nothing\u001b[6X\u001b[6C{\"controller\": \"persist\u001b[6;122Hence-controller\"}\u001b[K\u001b[7;122HFri Jun 23 15:59:32 2023 daemon.info emissary[3471]: 2023-06-23 15:59:32.598 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/pr\u001b[8;122Hoxy/controller.go:35>\u001b[3X\u001b[3C(*Controller).Reconcile\u001b[1X\u001b[Ccould not find proxy spec\u001b[7X\u001b[7C{\"controller\": \"proxy-controller\"}\u001b[K\u001b[9;122HFri Jun 23 15:59:32 2023 daemon.info emissary[3471]: 2023-06-23 15:59:32.606 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/op\u001b[10;"]
[337.313792, "o", "122Henwrt/uci_controller.go:40>\u001b[5X\u001b[5C(*UCIController).Reconcile\u001b[6X\u001b[6Cretrieved spec\u001b[2X\u001b[2C{\"controller\": \"uci-controller\", \"spec\"\u001b[11;122H: \"uci.emissary.cadoles.com\", \"revision\": 0}\u001b[K\u001b[12;122HFri Jun 23 15:59:32 2023 daemon.info emissary[3471]: 2023-06-23 15:59:32.607 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/op\u001b[13;122Henwrt/uci_controller.go:61>\u001b[5X\u001b[5C(*UCIController).updateConfiguration\u001b[4X\u001b[4Cimporting uci config\u001b[4X\u001b[4C{\"controller\": \"uci-con\u001b[14;122Htroller\"}\u001b[K\u001b[15;122HFri Jun 23 15:59:33 2023 daemon.info emissary[3471]: 2023-06-23 15:59:33.128 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/op\u001b[16;122Henwrt/uci_controller.go:55>\u001b[5X\u001b[5C(*UCIController).Reconcile\u001b[6X\u001b[6Cupdating current spec revision\u001b[2X\u001b[2C{\"controller\": \"uci-con\u001b[17;122Htroller\", \"revision\": 0}\u001b[K\u001b[18;122HFri Jun 23 15:59:33 2023 daemon.info emissary[3471]: 2023-06-23 15:59:33.128 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/ap\u001b[19;122Hp/controller.go:42>\u001b[5X\u001b[5C(*Controller).Reconcile\u001b[1X\u001b[Ccould not find app spec\u001b[1X\u001b[C{\"controll"]
[337.313947, "o", "er\": \"app-controller\"}\u001b[K\u001b[20;122HFri Jun 23 15:59:33 2023 daemon.info emissary[3471]: 2023-06-23 15:59:33.128 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/op\u001b[21;122Henwrt/sysupgrade_controller.go:36>\u001b[6X\u001b[6C(*SysUpgradeController).Reconcile\u001b[7X\u001b[7Ccould not find sysupgrade spec, doing n\u001b[22;122Hothing\u001b[2X\u001b[2C{\"controller\": \"sysupgrade-controller\"}\u001b[K\u001b[23;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: exiting on receipt of SIGTERM\u001b[K\u001b[24;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: started, version 2.86 cachesize 150\u001b[K\u001b[25;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: DNS service limited to local subnets\u001b[K\u001b[26;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: compile time options: IPv6 GNU-getopt no-DBus UBus no-i18n no-IDN DHCP\u001b[27;122H no-DHCPv6 no-Lua TFTP no-conntrack no-ipset no-auth no-cryptohash no-DNSSEC no-ID loop-detect inotify dumpfile\u001b[K\u001b[28;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: UBus support enabled: connected to system bus\u001b[K\u001b[29;122HFri Jun 23 15:59:34 202"]
[337.313974, "o", "3 daemon.info dnsmasq[1]: using only locally-known addresses for test\u001b[K\u001b[30;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for onion\u001b[K\u001b[31;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for localhost\u001b[K\u001b[32;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for local\u001b[K\u001b[33;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for invalid\u001b[K\u001b[34;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for bind\u001b[K\u001b[35;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for lan\u001b[K\u001b[36;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: reading /tmp/resolv.conf.d/resolv.conf.auto\u001b[K\u001b[37;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using nameserver 192.168.5.53#53\u001b[K\u001b[38;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for test\u001b[K\u001b[39;122HFri Jun 2"]
[337.313991, "o", "3 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for onion\u001b[K\u001b[40;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for localhost\u001b[K\u001b[41;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for local\u001b[K\u001b[42;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for invalid\u001b[K\u001b[43;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for bind\u001b[K\u001b[44;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for lan\u001b[K\u001b[45;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: read /etc/hosts - 4 addresses\u001b[K\u001b[46;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: read /tmp/hosts/dhcp.cfg01411c - 0 addresses\u001b[K\u001b[47;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: read /etc/hosts - 4 addresses\u001b[K\u001b[48;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: read /tmp/hosts/dhcp.cfg01411c - 0 addresses\u001b[K\u001b[49;122H\u001b[K\n\u001b[K\n^C"]
[337.314052, "o", "root@ArcadAgent:~# ^C\u001b[K\u001b[52;122Hroot@ArcadAgent:~# echo \"My hostname is now \"ArcadeAgent\"\"\u001b[K\u001b[53;122HMy hostname is now ArcadeAgent\u001b[K\u001b[54;122Hroot@ArcadAgent:~# netstat -tlnup\u001b[K\u001b[55;122HActive Internet connections (only servers)\u001b[K\u001b[56;122HProto Recv-Q Send-Q Local Address Foreign Address State PID/Program name \u001b[K\u001b[57;122Htcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 4076/dnsmasq\u001b[K\u001b[58;122Htcp 0 0 192.168.10.230:53 0.0.0.0:* LISTEN 4076/dnsmasq\u001b[K\u001b[59;122Htcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 2087/dropbear\u001b[K\u001b[60;122Htcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1511/uhttpd\u001b[K\u001b[61;122Htcp 0 0 :::8083 :::* LISTEN 3471/emissary\u001b[K\u001b[62;122Htcp 0 0 :::8084 :::* LISTEN 3471/emissary\u001b[K\u001b[63;122Htcp 0 0 ::1:53 "]
[337.314069, "o", " :::* LISTEN 4076/dnsmasq\u001b[K\u001b[64;122Htcp 0 0 fe80::c0ff:fea8:a08:53 :::* LISTEN 4076/dnsmasq\u001b[K\u001b[65;122Htcp 0 0 :::22 :::* LISTEN 2087/dropbear\u001b[K\u001b[66;122Htcp 0 0 :::80 :::* LISTEN 1511/uhttpd\u001b[K\u001b[67;122Hudp 0 0 127.0.0.1:53 0.0.0.0:* 4076/dnsmasq\u001b[K\u001b[68;122Hudp 0 0 192.168.10.230:53 0.0.0.0:* 4076/dnsmasq\u001b[K\u001b[69;122Hudp 0 0 ::1:53 :::* 4076/dnsmasq\u001b[K\u001b[70;122Hudp 0 0 fe80::c0ff:fea8:a08:53 :::* 4076/dnsmasq\u001b[K\u001b[71;122Hroot@ArcadAgent:~# echo \"New applications are installed\"\u001b[K\u001b[72;122HNew applications are installed\u001b[K\u001b[73;122Hroot@ArcadAgent:~# logread -f\u001b[K\u001b[74;122H\u001b[K\n^Croot@ArcadAgent:~# \u001b[K\u001b[76;122Hroot@ArcadAgent:~# \u001b[K\u001b[77;122Hroot@ArcadAgent"]
[337.314081, "o", ":~# hostname\u001b[K\u001b[78;122H-ash: hostname: not found\u001b[K\u001b[79;122Hroot@ArcadAgent:~# logread -f\u001b[K\u001b[80;122H\u001b[K\n\u001b[K\u001b[?12l\u001b[?25h"]
[337.569106, "o", "\u001b[?25l\u001b[1denwrt/sysupgrade_controller.go:36>\u001b[6X\u001b[6C(*SysUpgradeController).Reconcile\u001b[7X\u001b[7Ccould not find sysupgrade spec, doing n\u001b[2;122Hothing\u001b[2X\u001b[2C{\"controller\": \"sysupgrade-controller\"}\u001b[K\u001b[3;122HFri Jun 23 15:59:32 2023 daemon.info emissary[3471]: 2023-06-23 15:59:32.218 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/pe\u001b[4;122Hrsistence/controller.go:58>\u001b[5X\u001b[5C(*Controller).Reconcile\u001b[1X\u001b[Cno changes detected, doing nothing\u001b[6X\u001b[6C{\"controller\": \"persist\u001b[5;122Hence-controller\"}\u001b[K\u001b[6;122HFri Jun 23 15:59:32 2023 daemon.info emissary[3471]: 2023-06-23 15:59:32.598 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/pr\u001b[7;122Hoxy/controller.go:35>\u001b[3X\u001b[3C(*Controller).Reconcile\u001b[1X\u001b[Ccould not find proxy spec\u001b[7X\u001b[7C{\"controller\": \"proxy-controller\"}\u001b[K\u001b[8;122HFri Jun 23 15:59:32 2023 daemon.info emissary[3471]: 2023-06-23 15:59:32.606 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/op\u001b[9;122Henwrt/uci_controller.go:40>\u001b[5X\u001b[5C(*UCIController).Reconcile\u001b[6X\u001b[6Cretrieved spec\u001b[2X\u001b[2C{\"controller\": \"uci-controller\", \"sp"]
[337.569144, "o", "ec\"\u001b[10;122H: \"uci.emissary.cadoles.com\", \"revision\": 0}\u001b[K\u001b[11;122HFri Jun 23 15:59:32 2023 daemon.info emissary[3471]: 2023-06-23 15:59:32.607 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/op\u001b[12;122Henwrt/uci_controller.go:61>\u001b[5X\u001b[5C(*UCIController).updateConfiguration\u001b[4X\u001b[4Cimporting uci config\u001b[4X\u001b[4C{\"controller\": \"uci-con\u001b[13;122Htroller\"}\u001b[K\u001b[14;122HFri Jun 23 15:59:33 2023 daemon.info emissary[3471]: 2023-06-23 15:59:33.128 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/op\u001b[15;122Henwrt/uci_controller.go:55>\u001b[5X\u001b[5C(*UCIController).Reconcile\u001b[6X\u001b[6Cupdating current spec revision\u001b[2X\u001b[2C{\"controller\": \"uci-con\u001b[16;122Htroller\", \"revision\": 0}\u001b[K\u001b[17;122HFri Jun 23 15:59:33 2023 daemon.info emissary[3471]: 2023-06-23 15:59:33.128 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/ap\u001b[18;122Hp/controller.go:42>\u001b[5X\u001b[5C(*Controller).Reconcile\u001b[1X\u001b[Ccould not find app spec\u001b[1X\u001b[C{\"controller\": \"app-controller\"}\u001b[K\u001b[19;122HFri Jun 23 15:59:33 2023 daemon.info emissary[3471]: 2023-06-23 15:59:33.128 [INFO]\u001b[5X\u001b[5C<./int"]
[337.569158, "o", "ernal/agent/controller/op\u001b[20;122Henwrt/sysupgrade_controller.go:36>\u001b[6X\u001b[6C(*SysUpgradeController).Reconcile\u001b[7X\u001b[7Ccould not find sysupgrade spec, doing n\u001b[21;122Hothing\u001b[2X\u001b[2C{\"controller\": \"sysupgrade-controller\"}\u001b[K\u001b[22;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: exiting on receipt of SIGTERM\u001b[K\u001b[23;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: started, version 2.86 cachesize 150\u001b[K\u001b[24;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: DNS service limited to local subnets\u001b[K\u001b[25;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: compile time options: IPv6 GNU-getopt no-DBus UBus no-i18n no-IDN DHCP\u001b[26;122H no-DHCPv6 no-Lua TFTP no-conntrack no-ipset no-auth no-cryptohash no-DNSSEC no-ID loop-detect inotify dumpfile\u001b[K\u001b[27;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: UBus support enabled: connected to system bus\u001b[K\u001b[28;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for test\u001b[K\u001b[29;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: u"]
[337.569169, "o", "sing only locally-known addresses for onion\u001b[K\u001b[30;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for localhost\u001b[K\u001b[31;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for local\u001b[K\u001b[32;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for invalid\u001b[K\u001b[33;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for bind\u001b[K\u001b[34;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for lan\u001b[K\u001b[35;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: reading /tmp/resolv.conf.d/resolv.conf.auto\u001b[K\u001b[36;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using nameserver 192.168.5.53#53\u001b[K\u001b[37;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for test\u001b[K\u001b[38;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for onion\u001b[K\u001b[39;122HFri Jun 23 15:59:34 2023 daemon.inf"]
[337.569181, "o", "o dnsmasq[1]: using only locally-known addresses for localhost\u001b[K\u001b[40;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for local\u001b[K\u001b[41;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for invalid\u001b[K\u001b[42;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for bind\u001b[K\u001b[43;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for lan\u001b[K\u001b[44;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: read /etc/hosts - 4 addresses\u001b[K\u001b[45;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: read /tmp/hosts/dhcp.cfg01411c - 0 addresses\u001b[K\u001b[46;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: read /etc/hosts - 4 addresses\u001b[K\u001b[47;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: read /tmp/hosts/dhcp.cfg01411c - 0 addresses\u001b[K\u001b[48;122H\u001b[K\n\u001b[K\n^Croot@ArcadAgent:~# ^C\u001b[K\u001b[51;122Hroot@ArcadAgent:~# echo \"My hostname is now \"ArcadeAgent\"\"\u001b[K\u001b[52;122HMy hostname is now ArcadeAge"]
[337.569193, "o", "nt\u001b[K\u001b[53;122Hroot@ArcadAgent:~# netstat -tlnup\u001b[K\u001b[54;122HActive Internet connections (only servers)\u001b[K\u001b[55;122HProto Recv-Q Send-Q Local Address Foreign Address State PID/Program name \u001b[K\u001b[56;122Htcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 4076/dnsmasq\u001b[K\u001b[57;122Htcp 0 0 192.168.10.230:53 0.0.0.0:* LISTEN 4076/dnsmasq\u001b[K\u001b[58;122Htcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 2087/dropbear\u001b[K\u001b[59;122Htcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1511/uhttpd\u001b[K\u001b[60;122Htcp 0 0 :::8083 :::* LISTEN 3471/emissary\u001b[K\u001b[61;122Htcp 0 0 :::8084 :::* LISTEN 3471/emissary\u001b[K\u001b[62;122Htcp 0 0 ::1:53 :::* LISTEN 4076/dnsmasq\u001b[K\u001b[63;122Htcp 0 0 fe80::c0ff:fea8:a08:53 :::* "]
[337.569381, "o", "LISTEN 4076/dnsmasq\u001b[K\u001b[64;122Htcp 0 0 :::22 :::* LISTEN 2087/dropbear\u001b[K\u001b[65;122Htcp 0 0 :::80 :::* LISTEN 1511/uhttpd\u001b[K\u001b[66;122Hudp 0 0 127.0.0.1:53 0.0.0.0:* 4076/dnsmasq\u001b[K\u001b[67;122Hudp 0 0 192.168.10.230:53 0.0.0.0:* 4076/dnsmasq\u001b[K\u001b[68;122Hudp 0 0 ::1:53 :::* 4076/dnsmasq\u001b[K\u001b[69;122Hudp 0 0 fe80::c0ff:fea8:a08:53 :::* 4076/dnsmasq\u001b[K\u001b[70;122Hroot@ArcadAgent:~# echo \"New applications are installed\"\u001b[K\u001b[71;122HNew applications are installed\u001b[K\u001b[72;122Hroot@ArcadAgent:~# logread -f\u001b[K\u001b[73;122H\u001b[K\n^Croot@ArcadAgent:~# \u001b[K\u001b[75;122Hroot@ArcadAgent:~# \u001b[K\u001b[76;122Hroot@ArcadAgent:~# hostname\u001b[K\u001b[77;122H-ash: hostname: not found\u001b[K\u001b[78;122Hroot@ArcadAgent:~# logread -f\u001b[K\u001b[79;122H\u001b[K\n\u001b[K\n\u001b[K\u001b[?12l\u001b[?25h"]
[337.738842, "o", "\u001b[?25l\u001b[1dothing\u001b[2X\u001b[2C{\"controller\": \"sysupgrade-controller\"}\u001b[K\u001b[2;122HFri Jun 23 15:59:32 2023 daemon.info emissary[3471]: 2023-06-23 15:59:32.218 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/pe\u001b[3;122Hrsistence/controller.go:58>\u001b[5X\u001b[5C(*Controller).Reconcile\u001b[1X\u001b[Cno changes detected, doing nothing\u001b[6X\u001b[6C{\"controller\": \"persist\u001b[4;122Hence-controller\"}\u001b[K\u001b[5;122HFri Jun 23 15:59:32 2023 daemon.info emissary[3471]: 2023-06-23 15:59:32.598 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/pr\u001b[6;122Hoxy/controller.go:35>\u001b[3X\u001b[3C(*Controller).Reconcile\u001b[1X\u001b[Ccould not find proxy spec\u001b[7X\u001b[7C{\"controller\": \"proxy-controller\"}\u001b[K\u001b[7;122HFri Jun 23 15:59:32 2023 daemon.info emissary[3471]: 2023-06-23 15:59:32.606 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/op\u001b[8;122Henwrt/uci_controller.go:40>\u001b[5X\u001b[5C(*UCIController).Reconcile\u001b[6X\u001b[6Cretrieved spec\u001b[2X\u001b[2C{\"controller\": \"uci-controller\", \"spec\"\u001b[9;122H: \"uci.emissary.cadoles.com\", \"revision\": 0}\u001b[K\u001b[10;122HFri Jun 23 15:59:32 2023 daemon.info emissary[3471]: 2023-06-23"]
[337.738882, "o", " 15:59:32.607 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/op\u001b[11;122Henwrt/uci_controller.go:61>\u001b[5X\u001b[5C(*UCIController).updateConfiguration\u001b[4X\u001b[4Cimporting uci config\u001b[4X\u001b[4C{\"controller\": \"uci-con\u001b[12;122Htroller\"}\u001b[K\u001b[13;122HFri Jun 23 15:59:33 2023 daemon.info emissary[3471]: 2023-06-23 15:59:33.128 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/op\u001b[14;122Henwrt/uci_controller.go:55>\u001b[5X\u001b[5C(*UCIController).Reconcile\u001b[6X\u001b[6Cupdating current spec revision\u001b[2X\u001b[2C{\"controller\": \"uci-con\u001b[15;122Htroller\", \"revision\": 0}\u001b[K\u001b[16;122HFri Jun 23 15:59:33 2023 daemon.info emissary[3471]: 2023-06-23 15:59:33.128 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/ap\u001b[17;122Hp/controller.go:42>\u001b[5X\u001b[5C(*Controller).Reconcile\u001b[1X\u001b[Ccould not find app spec\u001b[1X\u001b[C{\"controller\": \"app-controller\"}\u001b[K\u001b[18;122HFri Jun 23 15:59:33 2023 daemon.info emissary[3471]: 2023-06-23 15:59:33.128 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/op\u001b[19;122Henwrt/sysupgrade_controller.go:36>\u001b[6X\u001b[6C(*SysUpgradeController).Reconcile\u001b[7X\u001b[7Ccould not find"]
[337.738896, "o", " sysupgrade spec, doing n\u001b[20;122Hothing\u001b[2X\u001b[2C{\"controller\": \"sysupgrade-controller\"}\u001b[K\u001b[21;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: exiting on receipt of SIGTERM\u001b[K\u001b[22;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: started, version 2.86 cachesize 150\u001b[K\u001b[23;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: DNS service limited to local subnets\u001b[K\u001b[24;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: compile time options: IPv6 GNU-getopt no-DBus UBus no-i18n no-IDN DHCP\u001b[25;122H no-DHCPv6 no-Lua TFTP no-conntrack no-ipset no-auth no-cryptohash no-DNSSEC no-ID loop-detect inotify dumpfile\u001b[K\u001b[26;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: UBus support enabled: connected to system bus\u001b[K\u001b[27;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for test\u001b[K\u001b[28;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for onion\u001b[K\u001b[29;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known ad"]
[337.738909, "o", "dresses for localhost\u001b[K\u001b[30;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for local\u001b[K\u001b[31;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for invalid\u001b[K\u001b[32;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for bind\u001b[K\u001b[33;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for lan\u001b[K\u001b[34;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: reading /tmp/resolv.conf.d/resolv.conf.auto\u001b[K\u001b[35;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using nameserver 192.168.5.53#53\u001b[K\u001b[36;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for test\u001b[K\u001b[37;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for onion\u001b[K\u001b[38;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for localhost\u001b[K\u001b[39;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using on"]
[337.73892, "o", "ly locally-known addresses for local\u001b[K\u001b[40;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for invalid\u001b[K\u001b[41;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for bind\u001b[K\u001b[42;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for lan\u001b[K\u001b[43;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: read /etc/hosts - 4 addresses\u001b[K\u001b[44;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: read /tmp/hosts/dhcp.cfg01411c - 0 addresses\u001b[K\u001b[45;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: read /etc/hosts - 4 addresses\u001b[K\u001b[46;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: read /tmp/hosts/dhcp.cfg01411c - 0 addresses\u001b[K\u001b[47;122H\u001b[K\n\u001b[K\n^Croot@ArcadAgent:~# ^C\u001b[K\u001b[50;122Hroot@ArcadAgent:~# echo \"My hostname is now \"ArcadeAgent\"\"\u001b[K\u001b[51;122HMy hostname is now ArcadeAgent\u001b[K\u001b[52;122Hroot@ArcadAgent:~# netstat -tlnup\u001b[K\u001b[53;122HActive Internet connections (only servers)\u001b[K\u001b[54;122HProto Recv-Q Send-"]
[337.738933, "o", "Q Local Address Foreign Address State PID/Program name \u001b[K\u001b[55;122Htcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 4076/dnsmasq\u001b[K\u001b[56;122Htcp 0 0 192.168.10.230:53 0.0.0.0:* LISTEN 4076/dnsmasq\u001b[K\u001b[57;122Htcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 2087/dropbear\u001b[K\u001b[58;122Htcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1511/uhttpd\u001b[K\u001b[59;122Htcp 0 0 :::8083 :::* LISTEN 3471/emissary\u001b[K\u001b[60;122Htcp 0 0 :::8084 :::* LISTEN 3471/emissary\u001b[K\u001b[61;122Htcp 0 0 ::1:53 :::* LISTEN 4076/dnsmasq\u001b[K\u001b[62;122Htcp 0 0 fe80::c0ff:fea8:a08:53 :::* LISTEN 4076/dnsmasq\u001b[K\u001b[63;122Htcp 0 0 :::22 :::* LISTEN 2087/dropbear\u001b[K"]
[337.738946, "o", "\u001b[64;122Htcp 0 0 :::80 :::* LISTEN 1511/uhttpd\u001b[K\u001b[65;122Hudp 0 0 127.0.0.1:53 0.0.0.0:* 4076/dnsmasq\u001b[K\u001b[66;122Hudp 0 0 192.168.10.230:53 0.0.0.0:* 4076/dnsmasq\u001b[K\u001b[67;122Hudp 0 0 ::1:53 :::* 4076/dnsmasq\u001b[K\u001b[68;122Hudp 0 0 fe80::c0ff:fea8:a08:53 :::* 4076/dnsmasq\u001b[K\u001b[69;122Hroot@ArcadAgent:~# echo \"New applications are installed\"\u001b[K\u001b[70;122HNew applications are installed\u001b[K\u001b[71;122Hroot@ArcadAgent:~# logread -f\u001b[K\u001b[72;122H\u001b[K\n^Croot@ArcadAgent:~# \u001b[K\u001b[74;122Hroot@ArcadAgent:~# \u001b[K\u001b[75;122Hroot@ArcadAgent:~# hostname\u001b[K\u001b[76;122H-ash: hostname: not found\u001b[K\u001b[77;122Hroot@ArcadAgent:~# logread -f\u001b[K\u001b[78;122H\u001b[K\n\u001b[K\n\u001b[K\n\u001b[K\u001b[?12l\u001b[?25h"]
[342.433133, "o", "^C"]
[342.433766, "o", "root@NewArcadAgent:~# "]
[343.272942, "o", "\u001b[?25l\u001b[1;122HFri Jun 23 15:59:32 2023 daemon.info emissary[3471]: 2023-06-23 15:59:32.218 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/pe\u001b[2;122Hrsistence/controller.go:58>\u001b[5X\u001b[5C(*Controller).Reconcile\u001b[1X\u001b[Cno changes detected, doing nothing\u001b[6X\u001b[6C{\"controller\": \"persist\u001b[3;122Hence-controller\"}\u001b[K\u001b[4;122HFri Jun 23 15:59:32 2023 daemon.info emissary[3471]: 2023-06-23 15:59:32.598 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/pr\u001b[5;122Hoxy/controller.go:35>\u001b[3X\u001b[3C(*Controller).Reconcile\u001b[1X\u001b[Ccould not find proxy spec\u001b[7X\u001b[7C{\"controller\": \"proxy-controller\"}\u001b[K\u001b[6;122HFri Jun 23 15:59:32 2023 daemon.info emissary[3471]: 2023-06-23 15:59:32.606 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/op\u001b[7;122Henwrt/uci_controller.go:40>\u001b[5X\u001b[5C(*UCIController).Reconcile\u001b[6X\u001b[6Cretrieved spec\u001b[2X\u001b[2C{\"controller\": \"uci-controller\", \"spec\"\u001b[8;122H: \"uci.emissary.cadoles.com\", \"revision\": 0}\u001b[K\u001b[9;122HFri Jun 23 15:59:32 2023 daemon.info emissary[3471]: 2023-06-23 15:59:32.607 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/op\u001b["]
[343.272981, "o", "10;122Henwrt/uci_controller.go:61>\u001b[5X\u001b[5C(*UCIController).updateConfiguration\u001b[4X\u001b[4Cimporting uci config\u001b[4X\u001b[4C{\"controller\": \"uci-con\u001b[11;122Htroller\"}\u001b[K\u001b[12;122HFri Jun 23 15:59:33 2023 daemon.info emissary[3471]: 2023-06-23 15:59:33.128 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/op\u001b[13;122Henwrt/uci_controller.go:55>\u001b[5X\u001b[5C(*UCIController).Reconcile\u001b[6X\u001b[6Cupdating current spec revision\u001b[2X\u001b[2C{\"controller\": \"uci-con\u001b[14;122Htroller\", \"revision\": 0}\u001b[K\u001b[15;122HFri Jun 23 15:59:33 2023 daemon.info emissary[3471]: 2023-06-23 15:59:33.128 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/ap\u001b[16;122Hp/controller.go:42>\u001b[5X\u001b[5C(*Controller).Reconcile\u001b[1X\u001b[Ccould not find app spec\u001b[1X\u001b[C{\"controller\": \"app-controller\"}\u001b[K\u001b[17;122HFri Jun 23 15:59:33 2023 daemon.info emissary[3471]: 2023-06-23 15:59:33.128 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/op\u001b[18;122Henwrt/sysupgrade_controller.go:36>\u001b[6X\u001b[6C(*SysUpgradeController).Reconcile\u001b[7X\u001b[7Ccould not find sysupgrade spec, doing n\u001b[19;122Hothing\u001b[2X\u001b[2C{\"controller\""]
[343.273006, "o", ": \"sysupgrade-controller\"}\u001b[K\u001b[20;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: exiting on receipt of SIGTERM\u001b[K\u001b[21;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: started, version 2.86 cachesize 150\u001b[K\u001b[22;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: DNS service limited to local subnets\u001b[K\u001b[23;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: compile time options: IPv6 GNU-getopt no-DBus UBus no-i18n no-IDN DHCP\u001b[24;122H no-DHCPv6 no-Lua TFTP no-conntrack no-ipset no-auth no-cryptohash no-DNSSEC no-ID loop-detect inotify dumpfile\u001b[K\u001b[25;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: UBus support enabled: connected to system bus\u001b[K\u001b[26;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for test\u001b[K\u001b[27;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for onion\u001b[K\u001b[28;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for localhost\u001b[K\u001b[29;122HFri Jun 23 15:59:34 2023 dae"]
[343.273163, "o", "mon.info dnsmasq[1]: using only locally-known addresses for local\u001b[K\u001b[30;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for invalid\u001b[K\u001b[31;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for bind\u001b[K\u001b[32;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for lan\u001b[K\u001b[33;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: reading /tmp/resolv.conf.d/resolv.conf.auto\u001b[K\u001b[34;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using nameserver 192.168.5.53#53\u001b[K\u001b[35;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for test\u001b[K\u001b[36;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for onion\u001b[K\u001b[37;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for localhost\u001b[K\u001b[38;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for local\u001b[K\u001b[39;122HFri Jun 23 15"]
[343.2732, "o", ":59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for invalid\u001b[K\u001b[40;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for bind\u001b[K\u001b[41;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for lan\u001b[K\u001b[42;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: read /etc/hosts - 4 addresses\u001b[K\u001b[43;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: read /tmp/hosts/dhcp.cfg01411c - 0 addresses\u001b[K\u001b[44;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: read /etc/hosts - 4 addresses\u001b[K\u001b[45;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: read /tmp/hosts/dhcp.cfg01411c - 0 addresses\u001b[K\u001b[46;122H\u001b[K\n\u001b[K\n^Croot@ArcadAgent:~# ^C\u001b[K\u001b[49;122Hroot@ArcadAgent:~# echo \"My hostname is now \"ArcadeAgent\"\"\u001b[K\u001b[50;122HMy hostname is now ArcadeAgent\u001b[K\u001b[51;122Hroot@ArcadAgent:~# netstat -tlnup\u001b[K\u001b[52;122HActive Internet connections (only servers)\u001b[K\u001b[53;122HProto Recv-Q Send-Q Local Address Foreign Address State "]
[343.273211, "o", " PID/Program name \u001b[K\u001b[54;122Htcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 4076/dnsmasq\u001b[K\u001b[55;122Htcp 0 0 192.168.10.230:53 0.0.0.0:* LISTEN 4076/dnsmasq\u001b[K\u001b[56;122Htcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 2087/dropbear\u001b[K\u001b[57;122Htcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1511/uhttpd\u001b[K\u001b[58;122Htcp 0 0 :::8083 :::* LISTEN 3471/emissary\u001b[K\u001b[59;122Htcp 0 0 :::8084 :::* LISTEN 3471/emissary\u001b[K\u001b[60;122Htcp 0 0 ::1:53 :::* LISTEN 4076/dnsmasq\u001b[K\u001b[61;122Htcp 0 0 fe80::c0ff:fea8:a08:53 :::* LISTEN 4076/dnsmasq\u001b[K\u001b[62;122Htcp 0 0 :::22 :::* LISTEN 2087/dropbear\u001b[K\u001b[63;122Htcp 0 0 :::80 :::* "]
[343.273309, "o", " LISTEN 1511/uhttpd\u001b[K\u001b[64;122Hudp 0 0 127.0.0.1:53 0.0.0.0:* 4076/dnsmasq\u001b[K\u001b[65;122Hudp 0 0 192.168.10.230:53 0.0.0.0:* 4076/dnsmasq\u001b[K\u001b[66;122Hudp 0 0 ::1:53 :::* 4076/dnsmasq\u001b[K\u001b[67;122Hudp 0 0 fe80::c0ff:fea8:a08:53 :::* 4076/dnsmasq\u001b[K\u001b[68;122Hroot@ArcadAgent:~# echo \"New applications are installed\"\u001b[K\u001b[69;122HNew applications are installed\u001b[K\u001b[70;122Hroot@ArcadAgent:~# logread -f\u001b[K\u001b[71;122H\u001b[K\n^Croot@ArcadAgent:~# \u001b[K\u001b[73;122Hroot@ArcadAgent:~# \u001b[K\u001b[74;122Hroot@ArcadAgent:~# hostname\u001b[K\u001b[75;122H-ash: hostname: not found\u001b[K\u001b[76;122Hroot@ArcadAgent:~# logread -f\u001b[K\u001b[77;122H\u001b[K\n\u001b[K\n\u001b[K\n^Croot@NewArcadAgent:~# \u001b[K\u001b[81;122H\u001b[K\u001b[?12l\u001b[?25h"]
[343.273698, "o", "\u001b[?25l\u001b[1drsistence/controller.go:58>\u001b[5X\u001b[5C(*Controller).Reconcile\u001b[1X\u001b[Cno changes detected, doing nothing\u001b[6X\u001b[6C{\"controller\": \"persist\u001b[2;122Hence-controller\"}\u001b[K\u001b[3;122HFri Jun 23 15:59:32 2023 daemon.info emissary[3471]: 2023-06-23 15:59:32.598 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/pr\u001b[4;122Hoxy/controller.go:35>\u001b[3X\u001b[3C(*Controller).Reconcile\u001b[1X\u001b[Ccould not find proxy spec\u001b[7X\u001b[7C{\"controller\": \"proxy-controller\"}\u001b[K\u001b[5;122HFri Jun 23 15:59:32 2023 daemon.info emissary[3471]: 2023-06-23 15:59:32.606 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/op\u001b[6;122Henwrt/uci_controller.go:40>\u001b[5X\u001b[5C(*UCIController).Reconcile\u001b[6X\u001b[6Cretrieved spec\u001b[2X\u001b[2C{\"controller\": \"uci-controller\", \"spec\"\u001b[7;122H: \"uci.emissary.cadoles.com\", \"revision\": 0}\u001b[K\u001b[8;122HFri Jun 23 15:59:32 2023 daemon.info emissary[3471]: 2023-06-23 15:59:32.607 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/op\u001b[9;122Henwrt/uci_controller.go:61>\u001b[5X\u001b[5C(*UCIController).updateConfiguration\u001b[4X\u001b[4Cimporting uci config\u001b[4X\u001b[4C{\"controller\": \"uci-c"]
[343.273726, "o", "on\u001b[10;122Htroller\"}\u001b[K\u001b[11;122HFri Jun 23 15:59:33 2023 daemon.info emissary[3471]: 2023-06-23 15:59:33.128 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/op\u001b[12;122Henwrt/uci_controller.go:55>\u001b[5X\u001b[5C(*UCIController).Reconcile\u001b[6X\u001b[6Cupdating current spec revision\u001b[2X\u001b[2C{\"controller\": \"uci-con\u001b[13;122Htroller\", \"revision\": 0}\u001b[K\u001b[14;122HFri Jun 23 15:59:33 2023 daemon.info emissary[3471]: 2023-06-23 15:59:33.128 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/ap\u001b[15;122Hp/controller.go:42>\u001b[5X\u001b[5C(*Controller).Reconcile\u001b[1X\u001b[Ccould not find app spec\u001b[1X\u001b[C{\"controller\": \"app-controller\"}\u001b[K\u001b[16;122HFri Jun 23 15:59:33 2023 daemon.info emissary[3471]: 2023-06-23 15:59:33.128 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/op\u001b[17;122Henwrt/sysupgrade_controller.go:36>\u001b[6X\u001b[6C(*SysUpgradeController).Reconcile\u001b[7X\u001b[7Ccould not find sysupgrade spec, doing n\u001b[18;122Hothing\u001b[2X\u001b[2C{\"controller\": \"sysupgrade-controller\"}\u001b[K\u001b[19;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: exiting on receipt of SIGTERM\u001b[K\u001b[20;122HFri Jun"]
[343.273741, "o", " 23 15:59:34 2023 daemon.info dnsmasq[1]: started, version 2.86 cachesize 150\u001b[K\u001b[21;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: DNS service limited to local subnets\u001b[K\u001b[22;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: compile time options: IPv6 GNU-getopt no-DBus UBus no-i18n no-IDN DHCP\u001b[23;122H no-DHCPv6 no-Lua TFTP no-conntrack no-ipset no-auth no-cryptohash no-DNSSEC no-ID loop-detect inotify dumpfile\u001b[K\u001b[24;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: UBus support enabled: connected to system bus\u001b[K\u001b[25;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for test\u001b[K\u001b[26;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for onion\u001b[K\u001b[27;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for localhost\u001b[K\u001b[28;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for local\u001b[K\u001b[29;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using onl"]
[343.273755, "o", "y locally-known addresses for invalid\u001b[K\u001b[30;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for bind\u001b[K\u001b[31;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for lan\u001b[K\u001b[32;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: reading /tmp/resolv.conf.d/resolv.conf.auto\u001b[K\u001b[33;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using nameserver 192.168.5.53#53\u001b[K\u001b[34;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for test\u001b[K\u001b[35;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for onion\u001b[K\u001b[36;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for localhost\u001b[K\u001b[37;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for local\u001b[K\u001b[38;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for invalid\u001b[K\u001b[39;122HFri Jun 23 15:59:34 2023 daemon.info dnsm"]
[343.27388, "o", "asq[1]: using only locally-known addresses for bind\u001b[K\u001b[40;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for lan\u001b[K\u001b[41;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: read /etc/hosts - 4 addresses\u001b[K\u001b[42;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: read /tmp/hosts/dhcp.cfg01411c - 0 addresses\u001b[K\u001b[43;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: read /etc/hosts - 4 addresses\u001b[K\u001b[44;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: read /tmp/hosts/dhcp.cfg01411c - 0 addresses\u001b[K\u001b[45;122H\u001b[K\n\u001b[K\n^Croot@ArcadAgent:~# ^C\u001b[K\u001b[48;122Hroot@ArcadAgent:~# echo \"My hostname is now \"ArcadeAgent\"\"\u001b[K\u001b[49;122HMy hostname is now ArcadeAgent\u001b[K\u001b[50;122Hroot@ArcadAgent:~# netstat -tlnup\u001b[K\u001b[51;122HActive Internet connections (only servers)\u001b[K\u001b[52;122HProto Recv-Q Send-Q Local Address Foreign Address State PID/Program name \u001b[K\u001b[53;122Htcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 4076/dnsmasq\u001b[K\u001b[54;12"]
[343.27391, "o", "2Htcp 0 0 192.168.10.230:53 0.0.0.0:* LISTEN 4076/dnsmasq\u001b[K\u001b[55;122Htcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 2087/dropbear\u001b[K\u001b[56;122Htcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1511/uhttpd\u001b[K\u001b[57;122Htcp 0 0 :::8083 :::* LISTEN 3471/emissary\u001b[K\u001b[58;122Htcp 0 0 :::8084 :::* LISTEN 3471/emissary\u001b[K\u001b[59;122Htcp 0 0 ::1:53 :::* LISTEN 4076/dnsmasq\u001b[K\u001b[60;122Htcp 0 0 fe80::c0ff:fea8:a08:53 :::* LISTEN 4076/dnsmasq\u001b[K\u001b[61;122Htcp 0 0 :::22 :::* LISTEN 2087/dropbear\u001b[K\u001b[62;122Htcp 0 0 :::80 :::* LISTEN 1511/uhttpd\u001b[K\u001b[63;122Hudp 0 0 127.0.0.1:53 0.0.0.0:* 4076"]
[343.273926, "o", "/dnsmasq\u001b[K\u001b[64;122Hudp 0 0 192.168.10.230:53 0.0.0.0:* 4076/dnsmasq\u001b[K\u001b[65;122Hudp 0 0 ::1:53 :::* 4076/dnsmasq\u001b[K\u001b[66;122Hudp 0 0 fe80::c0ff:fea8:a08:53 :::* 4076/dnsmasq\u001b[K\u001b[67;122Hroot@ArcadAgent:~# echo \"New applications are installed\"\u001b[K\u001b[68;122HNew applications are installed\u001b[K\u001b[69;122Hroot@ArcadAgent:~# logread -f\u001b[K\u001b[70;122H\u001b[K\n^Croot@ArcadAgent:~# \u001b[K\u001b[72;122Hroot@ArcadAgent:~# \u001b[K\u001b[73;122Hroot@ArcadAgent:~# hostname\u001b[K\u001b[74;122H-ash: hostname: not found\u001b[K\u001b[75;122Hroot@ArcadAgent:~# logread -f\u001b[K\u001b[76;122H\u001b[K\n\u001b[K\n\u001b[K\n^Croot@NewArcadAgent:~# \u001b[K\u001b[80;122HConnection to 192.168.10.230 closed.\u001b[K\u001b[81;122H\u001b[K\u001b[?12l\u001b[?25h"]
[343.274131, "o", " \u001b[81;122H"]
[343.41012, "o", "\u001b[1;81r\u001b[81;122H\u001b[K\u001b[36mtmux \u001b[39m\u001b[1mpcaseiro@numenor:~/code/cadoles/emissary\u001b(B\u001b[m (pts/27 \u001b[4m-zsh 5.9\u001b(B\u001b[m UltimaThule) \u001b[1m18:02:04 \u001b(B\u001b[m\u001b[35m(\u001b[39mgit\u001b[35m)\u001b[39m \u001b[35m[\u001b[32mmaster\u001b[35m|\u001b[33m+1\u001b[39m…\u001b[1;82r\u001b[81;162H"]
[343.410399, "o", "\u001b[?25l\u001b[1;122Hence-controller\"}\u001b[K\u001b[2;122HFri Jun 23 15:59:32 2023 daemon.info emissary[3471]: 2023-06-23 15:59:32.598 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/pr\u001b[3;122Hoxy/controller.go:35>\u001b[3X\u001b[3C(*Controller).Reconcile\u001b[1X\u001b[Ccould not find proxy spec\u001b[7X\u001b[7C{\"controller\": \"proxy-controller\"}\u001b[K\u001b[4;122HFri Jun 23 15:59:32 2023 daemon.info emissary[3471]: 2023-06-23 15:59:32.606 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/op\u001b[5;122Henwrt/uci_controller.go:40>\u001b[5X\u001b[5C(*UCIController).Reconcile\u001b[6X\u001b[6Cretrieved spec\u001b[2X\u001b[2C{\"controller\": \"uci-controller\", \"spec\"\u001b[6;122H: \"uci.emissary.cadoles.com\", \"revision\": 0}\u001b[K\u001b[7;122HFri Jun 23 15:59:32 2023 daemon.info emissary[3471]: 2023-06-23 15:59:32.607 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/op\u001b[8;122Henwrt/uci_controller.go:61>\u001b[5X\u001b[5C(*UCIController).updateConfiguration\u001b[4X\u001b[4Cimporting uci config\u001b[4X\u001b[4C{\"controller\": \"uci-con\u001b[9;122Htroller\"}\u001b[K\u001b[10;122HFri Jun 23 15:59:33 2023 daemon.info emissary[3471]: 2023-06-23 15:59:33.128 [INFO]\u001b[5X\u001b[5C<./internal/"]
[343.410474, "o", "agent/controller/op\u001b[11;122Henwrt/uci_controller.go:55>\u001b[5X\u001b[5C(*UCIController).Reconcile\u001b[6X\u001b[6Cupdating current spec revision\u001b[2X\u001b[2C{\"controller\": \"uci-con\u001b[12;122Htroller\", \"revision\": 0}\u001b[K\u001b[13;122HFri Jun 23 15:59:33 2023 daemon.info emissary[3471]: 2023-06-23 15:59:33.128 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/ap\u001b[14;122Hp/controller.go:42>\u001b[5X\u001b[5C(*Controller).Reconcile\u001b[1X\u001b[Ccould not find app spec\u001b[1X\u001b[C{\"controller\": \"app-controller\"}\u001b[K\u001b[15;122HFri Jun 23 15:59:33 2023 daemon.info emissary[3471]: 2023-06-23 15:59:33.128 [INFO]\u001b[5X\u001b[5C<./internal/agent/controller/op\u001b[16;122Henwrt/sysupgrade_controller.go:36>\u001b[6X\u001b[6C(*SysUpgradeController).Reconcile\u001b[7X\u001b[7Ccould not find sysupgrade spec, doing n\u001b[17;122Hothing\u001b[2X\u001b[2C{\"controller\": \"sysupgrade-controller\"}\u001b[K\u001b[18;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: exiting on receipt of SIGTERM\u001b[K\u001b[19;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: started, version 2.86 cachesize 150\u001b[K\u001b[20;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1"]
[343.410598, "o", "]: DNS service limited to local subnets\u001b[K\u001b[21;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: compile time options: IPv6 GNU-getopt no-DBus UBus no-i18n no-IDN DHCP\u001b[22;122H no-DHCPv6 no-Lua TFTP no-conntrack no-ipset no-auth no-cryptohash no-DNSSEC no-ID loop-detect inotify dumpfile\u001b[K\u001b[23;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: UBus support enabled: connected to system bus\u001b[K\u001b[24;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for test\u001b[K\u001b[25;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for onion\u001b[K\u001b[26;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for localhost\u001b[K\u001b[27;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for local\u001b[K\u001b[28;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for invalid\u001b[K\u001b[29;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses fo"]
[343.41063, "o", "r bind\u001b[K\u001b[30;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for lan\u001b[K\u001b[31;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: reading /tmp/resolv.conf.d/resolv.conf.auto\u001b[K\u001b[32;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using nameserver 192.168.5.53#53\u001b[K\u001b[33;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for test\u001b[K\u001b[34;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for onion\u001b[K\u001b[35;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for localhost\u001b[K\u001b[36;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for local\u001b[K\u001b[37;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for invalid\u001b[K\u001b[38;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-known addresses for bind\u001b[K\u001b[39;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: using only locally-know"]
[343.410642, "o", "n addresses for lan\u001b[K\u001b[40;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: read /etc/hosts - 4 addresses\u001b[K\u001b[41;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: read /tmp/hosts/dhcp.cfg01411c - 0 addresses\u001b[K\u001b[42;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: read /etc/hosts - 4 addresses\u001b[K\u001b[43;122HFri Jun 23 15:59:34 2023 daemon.info dnsmasq[1]: read /tmp/hosts/dhcp.cfg01411c - 0 addresses\u001b[K\u001b[44;122H\u001b[K\n\u001b[K\n^Croot@ArcadAgent:~# ^C\u001b[K\u001b[47;122Hroot@ArcadAgent:~# echo \"My hostname is now \"ArcadeAgent\"\"\u001b[K\u001b[48;122HMy hostname is now ArcadeAgent\u001b[K\u001b[49;122Hroot@ArcadAgent:~# netstat -tlnup\u001b[K\u001b[50;122HActive Internet connections (only servers)\u001b[K\u001b[51;122HProto Recv-Q Send-Q Local Address Foreign Address State PID/Program name \u001b[K\u001b[52;122Htcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 4076/dnsmasq\u001b[K\u001b[53;122Htcp 0 0 192.168.10.230:53 0.0.0.0:* LISTEN 4076/dnsmasq\u001b[K\u001b[54;122Htcp 0 0 0.0.0.0:2"]
[343.410773, "o", "2 0.0.0.0:* LISTEN 2087/dropbear\u001b[K\u001b[55;122Htcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1511/uhttpd\u001b[K\u001b[56;122Htcp 0 0 :::8083 :::* LISTEN 3471/emissary\u001b[K\u001b[57;122Htcp 0 0 :::8084 :::* LISTEN 3471/emissary\u001b[K\u001b[58;122Htcp 0 0 ::1:53 :::* LISTEN 4076/dnsmasq\u001b[K\u001b[59;122Htcp 0 0 fe80::c0ff:fea8:a08:53 :::* LISTEN 4076/dnsmasq\u001b[K\u001b[60;122Htcp 0 0 :::22 :::* LISTEN 2087/dropbear\u001b[K\u001b[61;122Htcp 0 0 :::80 :::* LISTEN 1511/uhttpd\u001b[K\u001b[62;122Hudp 0 0 127.0.0.1:53 0.0.0.0:* 4076/dnsmasq\u001b[K\u001b[63;122Hudp 0 0 192.168.10.230:53 0.0.0.0:* 4076/dnsmasq\u001b[K\u001b[64;122Hudp "]
[343.410797, "o", "0 0 ::1:53 :::* 4076/dnsmasq\u001b[K\u001b[65;122Hudp 0 0 fe80::c0ff:fea8:a08:53 :::* 4076/dnsmasq\u001b[K\u001b[66;122Hroot@ArcadAgent:~# echo \"New applications are installed\"\u001b[K\u001b[67;122HNew applications are installed\u001b[K\u001b[68;122Hroot@ArcadAgent:~# logread -f\u001b[K\u001b[69;122H\u001b[K\n^Croot@ArcadAgent:~# \u001b[K\u001b[71;122Hroot@ArcadAgent:~# \u001b[K\u001b[72;122Hroot@ArcadAgent:~# hostname\u001b[K\u001b[73;122H-ash: hostname: not found\u001b[K\u001b[74;122Hroot@ArcadAgent:~# logread -f\u001b[K\u001b[75;122H\u001b[K\n\u001b[K\n\u001b[K\n^Croot@NewArcadAgent:~# \u001b[K\u001b[79;122HConnection to 192.168.10.230 closed.\u001b[K\u001b[36m\u001b[80;122Htmux \u001b[39m\u001b[1mpcaseiro@numenor:~/code/cadoles/emissary\u001b(B\u001b[m (pts/27 \u001b[4m-zsh 5.9\u001b(B\u001b[m UltimaThule) \u001b[1m18:02:04 \u001b(B\u001b[m\u001b[35m(\u001b[39mgit\u001b[35m)\u001b[39m \u001b[35m[\u001b[32mmaster\u001b[35m|\u001b[33m+1\u001b[39m…3\u001b[35m]\u001b[39m\u001b[K\u001b[7m\u001b[81;122H!431 Z2 ?0 L2\u001b(B\u001b[m \u001b[1m~/code/cadoles/emissary →\u001b(B\u001b[m \u001b[73X\u001b[73C 100%\u001b[K\u001b[?12l\u001b[?25h\u001b[78D\u001b[?2004h"]
[344.264836, "o", "\u001b[?25l\u001b[1;121H│\u001b[2;121H│\u001b[3;121H│\u001b[4;121H│\u001b[5;121H│\u001b[6;121H│\u001b[7;121H│\u001b[8;121H│\u001b[9;121H│\u001b[10;121H│\u001b[11;121H│\u001b[12;121H│\u001b[13;121H│\u001b[14;121H│\u001b[15;121H│\u001b[16;121H│\u001b[17;121H│\u001b[18;121H│\u001b[19;121H│\u001b[20;121H│\u001b[21;121H│\u001b[22;121H│\u001b[23;121H│\u001b[24;121H│\u001b[25;121H│\u001b[26;121H│\u001b[27;121H│\u001b[28;121H│\u001b[29;121H│\u001b[30;121H│\u001b[31;121H│\u001b[32;121H│\u001b[33;121H│\u001b[34;121H│\u001b[35;121H│\u001b[36;121H│\u001b[37;121H│\u001b[38;121H│\u001b[39;121H│\u001b[40;121H│\u001b[41;121H│\u001b[42;121H\u001b[32m│\u001b[43;121H│\u001b[44;121H│\u001b[45;121H│\u001b[46;121H│\u001b[47;121H│\u001b[48;121H│\u001b[49;121H│\u001b[50;121H│\u001b[51;121H│\u001b[52;121H│\u001b[53;121H│\u001b[54;121H│\u001b[55;121H│\u001b[56;121H│\u001b[57;121H│\u001b[58;121H│\u001b[59;121H│\u001b[60;121H│\u001b[61;121H│\u001b[62;121H│\u001b[63;121H│\u001b[64;121H│\u001b[65;121H│\u001b[66;121H│\u001b[67;121H│\u001b[68;121H│\u001b[69;121H│\u001b[70;121H│\u001b[71;121H│\u001b[72;121H│\u001b[73;121H│\u001b[74;121H│\u001b[75;121H│\u001b[76;121H│\u001b[77;121H│\u001b[78;121H│\u001b[79;121H│\u001b[80;121H│\u001b[81;121H│\u001b(B\u001b[m\u001b[37m\u001b[40m\r\n\u001b[32mnumenor\u001b[37m0:zsh* "]
[344.264873, "o", " \"numenor\" 18:02 23-juin-23\u001b(B\u001b[m\u001b[?12l\u001b[?25h\u001b[81;162H"]
[345.862252, "o", "\u001b[1;82r\u001b(B\u001b[m\u001b[?1l\u001b>\u001b[H\u001b[2J\u001b[?2004l\u001b[?12l\u001b[?25h\u001b[?1000l\u001b[?1002l\u001b[?1003l\u001b[?1006l\u001b[?1005l\u001b[?7727l\u001b[?1004l"]
[345.86257, "o", "[detached (from session 5)]\r\n"]
[345.863083, "o", "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m \r \r"]
[345.918704, "o", "\u001b]0;cadoles/emissary\u0007"]
[346.005274, "o", "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J\u001b[m\u001b[1mpcaseiro@numenor\u001b[0m\u001b[1m:~/code/cadoles/emissary\u001b[0m (pts/25 \u001b[4m/bin/zsh 5.9\u001b[24m UltimaThule) \u001b[1m18:02:06 \u001b[0m\u001b[35m(\u001b[39mgit\u001b[35m)\u001b[39m \u001b[35m[\u001b[39m\u001b[32mmaster\u001b[39m\u001b[35m|\u001b[39m\u001b[32m\u001b[39m\u001b[0m\u001b[31m\u001b[39m\u001b[0m\u001b[33m+1\u001b[39m\u001b[0m…3\u001b[32m\u001b[39m\u001b[0m\u001b[33m\u001b[39m\u001b[0m\u001b[35m]\u001b[39m\r\n\u001b[7m!430 Z2 ?0 L3\u001b[27m \u001b[1m~/code/cadoles/emissary →\u001b[0m \u001b[K\u001b[194C 100%\u001b[199D"]
[346.005414, "o", "\u001b[?1h\u001b=\u001b[?2004h"]
[348.232652, "o", "\u001b[1m\u001b[31mf\u001b[0m\u001b[39m"]
[348.487255, "o", "\b\u001b[0m\u001b[32mf\u001b[32mg\u001b[39m"]
[348.655951, "o", "\u001b[?1l\u001b>\u001b[?2004l\u001b[K\r\r\n"]
[348.656509, "o", "\u001b]0;fg\u0007"]
[348.656541, "o", "fg: no current job\r\n\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m \r \r"]
[348.774308, "o", "\u001b]0;cadoles/emissary\u0007"]
[348.878027, "o", "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J\u001b[m\u001b[1mpcaseiro@numenor\u001b[0m\u001b[1m:~/code/cadoles/emissary\u001b[0m (pts/25 \u001b[4m/bin/zsh 5.9\u001b[24m UltimaThule) \u001b[1m18:02:09 \u001b[0m\u001b[35m(\u001b[39mgit\u001b[35m)\u001b[39m \u001b[35m[\u001b[39m\u001b[32mmaster\u001b[39m\u001b[35m|\u001b[39m\u001b[32m\u001b[39m\u001b[0m\u001b[31m\u001b[39m\u001b[0m\u001b[33m+1\u001b[39m\u001b[0m…3\u001b[32m\u001b[39m\u001b[0m\u001b[33m\u001b[39m\u001b[0m\u001b[35m]\u001b[39m\r\n\u001b[7m!431 Z3 \u001b[31m?1\u001b[m\u001b[7m L3\u001b[27m \u001b[1m~/code/cadoles/emissary →\u001b[0m \u001b[K\u001b[192C:( 100%\u001b[199D\u001b[?1h\u001b=\u001b[?2004h"]
[350.165425, "o", "\u001b[?2004l\u001b[K\r\r\n"]

View File

@ -5,6 +5,8 @@
## Tutorials
- (FR) - [Premiers pas](./tutorials/fr/first-steps.md)
- (FR) - [Déployer un serveur mandataire inverse sur un agent](./tutorials/fr/deploy-reverse-proxy.md)
- (FR) - [Déployer une configuration UCI personnalisée sur un agent](./tutorials/fr/deploy-uci-configuration.md)
## References

View File

@ -0,0 +1,3 @@
# Déployer un serveur mandataire inverse sur un agent
> TODO

View File

@ -0,0 +1,130 @@
# Déployer une configuration UCI personnalisée sur un agent
Via la spécification [`uci.emissary.cadoles.com`](../../../internal/spec/uci/schema.json) il est possible de configurer un agent avec un système OpenWRT. Dans ce tutoriel nous verrons:
- Comment exporter une configuration UCI existante au format attendu par Emissary;
- Comment modifier la spécification d'un agent Emissary pour mettre à jour sa configuration via le serveur de pilotage.
## Étapes
### Identifier l'empreinte de votre agent
1. Sur la machine agent, utiliser la commande intégrée pour récupérer l'empreinte ("thumbprint") identifiant l'agent:
```
emissary agent show-thumbprint
```
**Noter la valeur retournée. Elle sera utilisée dans les étapes suivantes.**
### Exporter la configuration UCI de votre agent au format Emissary
1. Se connecter en SSH sur votre agent Emissary:
```
ssh root@<agent_ip>
```
2. Sur la machine agent, utiliser la commande intégrée pour exporter la configuration UCI de votre agent au format Emissary:
```
uci export | emissary agent openwrt uci transform > my-agent-config.json
```
> **Astuce**
>
> Par défaut, l'outil [LuCi](https://openwrt.org/fr/doc/howto/luci.essentials) est disponible sur votre agent. Vous pouvez y accéder via l'URL `http://<agent_ip>/`.
>
> Vous pouvez utiliser LuCi pour modifier la configuration de l'agent (par exemple, configurer le WiFi, créer des règles réseaux, etc) avant d'exporter la configuration.
>
> De cette manière, il est possible de répliquer celle ci sur plusieurs agents via Emissary !
3. Transférer le fichier `my-agent-config.json` sur la machine hébergeant votre serveur de pilotage Emissary.
### Transformer la configuration en spécification
#### Prérequis
- [`jq`](https://stedolan.github.io/jq/)
- [`sponge`](https://linux.die.net/man/1/sponge) (paquet `moreutils` sur Ubuntu)
#### Étapes
1. Sur la machine hébergeant le serveur de pilotage Emissary, utiliser l'outil `jq` pour créer un objet JSON correspondant au schéma attendu par la spécification [`uci.emissary.cadoles.com`](../../../internal/spec/uci/schema.json):
```bash
# Créer la structure de base de la spécification UCI
cat >> my-uci-spec.json <<EOF
{
"config": null,
"postImportCommands": [
{ "command": "uci", "args": ["commit"] },
{ "command": "reload_config", "args": [] }
]
}
EOF
# Injecter la configuration récupérée de notre agent dans la spécification
cat my-uci-spec.json | jq --slurpfile config my-agent-config.json '.config = $config[0]' | sponge my-uci-spec.json
```
Notre spécification est prête à être assignée à notre agent !
### Assigner la spécification à l'agent
1. Sur la machine hébergeant le serveur de pilotage Emissary, retrouver l'identifiant associé à l'agent:
```bash
# Déclarer une variable contenant l'empreinte de l'agent précédemment trouvée
AGENT_THUMBPRINT="<empreinte agent>"
# Récupérer l'identifiant de l'agent
AGENT_ID=$(emissary api agent query -f json | jq -r --arg thumbprint "$AGENT_THUMBPRINT" '.[] | select(.thumbprint == $thumbprint) | .id')
```
2. Assigner la spécification à l'agent UCI:
```bash
cat my-uci-spec.json | emissary api agent spec update -a ${AGENT_ID} --no-patch --spec-data - --spec-name uci.emissary.cadoles.com
```
**Bravo, vous avez déployé des spécifications UCI sur votre agent !**
### Exemple: modifier le `hostname` de votre agent
En intervenant directement sur notre spécification, il est possible de modifier la configuration et appliquer ces changements à notre agent.
1. Sur la machine hébergeant le serveur de pilotage, faire:
```bash
# On créait une variable avec le nouveau hostname de notre agent
MY_NEW_AGENT_HOSTNAME="MyEmissaryAgent"
# On utilise jq afin de modifier la valeur de configuration dans notre spécification UCI
cat my-uci-spec.json | jq --arg hostname "$MY_NEW_AGENT_HOSTNAME" '( .config.packages[] | select(.name == "system") | .configs[].options[] | select(.name == "hostname").value ) |= $hostname' | sponge my-uci-spec.json
```
> **Astuce**
>
> En utilisant la commande `grep -C 10 hostname my-uci-spec.json`, on peut voir que la valeur de configuration `hostname` a bien été mise à jour dans notre spécification.
2. Mettre à jour la configuration de l'agent:
```bash
cat my-uci-spec.json | emissary api agent spec update -a ${AGENT_ID} --no-patch --spec-data - --spec-name uci.emissary.cadoles.com
```
3. Sur l'agent, après quelques secondes (par défaut, la fréquence de mise à jour est de 1 fois par minute) l'agent devrait avoir son `hostname` mis à jour:
```
uci show system.@system[].hostname
```
Un message de ce type devrait s'afficher:
```
system.cfg01e48a.hostname='MyEmissaryAgent'
```
La modification devrait être également visible dans le prompt du shell de l'agent.

View File

@ -1,3 +1,158 @@
# Premiers pas
> TODO
## Prérequis
- Pour le serveur, une machine [Ubuntu 22.04](https://ubuntu.com/download/server)
- Pour l'agent, un [RaspberryPi version 3](https://openwrt.org/toh/raspberry_pi_foundation/raspberry_pi)
## Étapes
### Préparer votre RaspberryPi
1. Sur la page des ["versions"](https://forge.cadoles.com/arcad/emissary-firmware/releases) des firmwares du projet Emissary, télécharger la dernière version disponibles correspondant à votre système cible, dans le cas présent `openwrt-<openwrt_version>-emissary-<emissary_firmware_version>-bcm27xx-bcm2710-rpi-3-ext4-factory.img.gz`
2. Brancher votre carte SD dans le lecteur, flasher celle ci avec le firmware:
```bash
# Chemin vers le fichier de firmware précédemment téléchargé
FIRMWARE_FILE="openwrt-<openwrt_version>-emissary-<emissary_firmware_version>-bcm27xx-bcm2710-rpi-3-ext4-factory.img.gz"
SDCARD_DEVICE=/dev/sdX # Chemin vers le "device" correspondant à votre carte SD
# Décompresser le firmware
gzip -d "${FIRMWARE_FILE}"
# Flash la carte SD
sudo dd if="${FIRMWARE_FILE%.gz}" of="${SDCARD_DEVICE}" bs=2M conv=fsync
# Attendre la fin des écritures
sudo sync
```
3. Placer votre carte SD dans votre RaspberryPi, le connecter à votre réseau en Ethernet puis l'allumer.
4. Scanner votre réseau pour trouver l'adresse IP de votre Raspberry Pi. Par exemple, avec l'outil `nmap`:
```bash
sudo nmap -sP 192.168.0.* # À modifier par le préfixe correspondant à votre réseau local
```
Une entrée équivalente à la suivante devrait être affichée:
```bash
Starting Nmap 7.93 ( https://nmap.org ) at 2023-05-25 19:29 CEST
Nmap scan report for 192.168.0.24
Host is up (0.0034s latency).
MAC Address: B8:27:EB:E5:7B:55 (Raspberry Pi Foundation)
[...]
```
5. Se connecter en SSH sur votre RaspberryPi et définir un mot de passe pour le compte administrateur:
```bash
ssh root@<ip>
passwd
```
### Installer le serveur Emissary
1. Sur la machine Ubuntu 22.04, télécharger les paquets Emissary sur la page ["Versions"](https://forge.cadoles.com/arcad/emissary/releases) du projet. Dans le cas présent, choisir le paquet Debian `emissary-server_<emissary_version>_linux_<arch>.deb` où `<arch>` correspond à l'architecture CPU de votre machine.
2. Installer le paquet télécharger via `dpkg`:
```
sudo dpkg -i emissary-server_<emissary_version>_linux_<arch>.deb
```
3. Appliquer les migrations sur la base de données:
```shell
sudo emissary --workdir /usr/share/emissary --config /etc/emissary/server.yml server database migrate
```
4. Redémarrer le service:
```shell
sudo systemctl restart emissary-server
```
5. Créer un jeton d'administration:
```shell
sudo emissary --workdir /usr/share/emissary --config /etc/emissary/server.yml server auth create-token --role writer --subject $(whoami) > .emissary-token
```
6. Vérifier l'authentification sur l'API:
```shell
emissary api agent query
```
Une réponse équivalente à la suivante devrait s'afficher:
```shell
+----+-------+------------+--------+-------------+-----------+
| ID | LABEL | THUMBPRINT | STATUS | CONTACTEDAT | UPDATEDAT |
+----+-------+------------+--------+-------------+-----------+
+----+-------+------------+--------+-------------+-----------+
```
### Appairer l'agent avec votre serveur
1. Sur le RaspberryPi, exécuter la commande suivante:
```shell
uci set emissary.agent.server_url='http://<server_ip>:3000'
uci commit emissary
reload_config
```
2. Via la commande `logread`, vérifier que l'agent arrive à se connecter avec le serveur:
```shell
logread -f
```
Un message de ce type devrait s'afficher:
```
Thu May 25 18:48:51 2023 daemon.info emissary[2202]: 2023-05-25 18:48:51.611 [INFO] <./internal/agent/controller/persistence/controller.go:58> (*Controller).Reconcile no changes detected, doing nothing {"controller": "persistence-controller"}
Thu May 25 18:48:51 2023 daemon.info emissary[2202]: 2023-05-25 18:48:51.675 [ERROR] <./internal/agent/controller/spec/controller.go:43>(*Controller).reconcileAgent unexpected agent status {"controller": "spec-controller", "agentID": 1, "status": 0}
Thu May 25 18:48:51 2023 daemon.info emissary[2202]: 2023-05-25 18:48:51.676 [INFO] <./internal/agent/controller/openwrt/uci_controller.go:32> (*UCIController).Reconcile could not find uci spec, doing nothing {"controller": "uci-controller"}
Thu May 25 18:48:51 2023 daemon.info emissary[2202]: 2023-05-25 18:48:51.677 [INFO] <./internal/agent/controller/app/controller.go:43> (*Controller).Reconcile could not find app spec {"controller": "app-controller"}
Thu May 25 18:48:51 2023 daemon.info emissary[2202]: 2023-05-25 18:48:51.678 [INFO] <./internal/agent/controller/proxy/controller.go:35>(*Controller).Reconcile could not find proxy spec {"controller": "proxy-controller"}
Thu May 25 18:48:51 2023 daemon.info emissary[2202]: 2023-05-25 18:48:51.680 [INFO] <./internal/agent/controller/mdns/controller.go:38>(*Controller).Reconcile could not find mdns spec {"controller": "mdns-controller"}
Thu May 25 18:48:51 2023 daemon.info emissary[2202]: 2023-05-25 18:48:51.680 [INFO] <./internal/agent/controller/openwrt/sysupgrade_controller.go:36> (*SysUpgradeController).Reconcile could not find sysupgrade spec, doing nothing {"controller": "sysupgrade-controller"}
```
3. Sur le serveur, vérifier que l'agent a pu s'enregistrer:
```shell
emissary api agent query
```
Un message de ce type devrait s'afficher:
```
+----+-------+-----------------------------------+--------+-----------------------------------+-----------------------------------+
| ID | LABEL | THUMBPRINT | STATUS | CONTACTEDAT | UPDATEDAT |
+----+-------+-----------------------------------+--------+-----------------------------------+-----------------------------------+
| 1 | | 21CnUATcboKCaheb2uczWCuoxTZtnp... | 0 | 2023-05-25 18:49:51.652680196 ... | "2023-05-25T18:49:51.589225817... |
+----+-------+-----------------------------------+--------+-----------------------------------+-----------------------------------+
```
Noter l'identifiant associé à l'agent.
4. Mettre à jour le statut de l'agent afin qu'il soit en capacité à récupérer ses spécifications:
```
emissary api agent update --agent-id <agent_id> --status 1
```
**Bravo, vous avez appairé votre premier agent et son serveur Emissary !**
## Aller plus loin
- [Déployer une configuration UCI personnalisée sur un agent](./deploy-uci-configuration.md)
- [Déployer un serveur mandataire inverse sur votre agent](./deploy-reverse-proxy.md)

1
go.mod
View File

@ -7,6 +7,7 @@ require (
github.com/Masterminds/sprig/v3 v3.2.3
github.com/alecthomas/participle/v2 v2.0.0-beta.5
github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883
github.com/antonmedv/expr v1.12.7
github.com/brutella/dnssd v1.2.6
github.com/btcsuite/btcd/btcutil v1.1.3
github.com/davecgh/go-spew v1.1.1

2
go.sum
View File

@ -149,6 +149,8 @@ github.com/alexflint/go-filemutex v1.1.0/go.mod h1:7P4iRhttt/nUvUOrYIhcpMzv2G6CY
github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883 h1:bvNMNQO63//z+xNgfBlViaCIJKLlCJ6/fmUseuG0wVQ=
github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883/go.mod h1:rCTlJbsFo29Kk6CurOXKm700vrz8f0KW0JNfpkRJY/8=
github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY=
github.com/antonmedv/expr v1.12.7 h1:jfV/l/+dHWAadLwAtESXNxXdfbK9bE4+FNMHYCMntwk=
github.com/antonmedv/expr v1.12.7/go.mod h1:FPC8iWArxls7axbVLsW+kpg1mz29A1b2M6jt+hZfDkU=
github.com/apache/arrow/go/arrow v0.0.0-20210818145353-234c94e4ce64/go.mod h1:2qMFB56yOP3KzkB3PbYZ4AlUFg3a88F67TIx5lB/WwY=
github.com/apache/arrow/go/arrow v0.0.0-20211013220434-5962184e7a30/go.mod h1:Q7yQnSMnLvcXlZ8RV+jwz/6y1rQTqbX6C82SndT52Zs=
github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o=

View File

@ -6,8 +6,8 @@ import (
"forge.cadoles.com/Cadoles/emissary/internal/agent/metadata"
"forge.cadoles.com/Cadoles/emissary/internal/auth/agent"
"forge.cadoles.com/Cadoles/emissary/internal/client"
"forge.cadoles.com/Cadoles/emissary/internal/jwk"
"forge.cadoles.com/Cadoles/emissary/pkg/client"
"github.com/pkg/errors"
"gitlab.com/wpetit/goweb/api"
"gitlab.com/wpetit/goweb/logger"

View File

@ -3,7 +3,7 @@ package agent
import (
"context"
"forge.cadoles.com/Cadoles/emissary/internal/client"
"forge.cadoles.com/Cadoles/emissary/pkg/client"
"github.com/pkg/errors"
)

View File

@ -4,8 +4,8 @@ import (
"context"
"forge.cadoles.com/Cadoles/emissary/internal/agent"
"forge.cadoles.com/Cadoles/emissary/internal/client"
"forge.cadoles.com/Cadoles/emissary/internal/datastore"
"forge.cadoles.com/Cadoles/emissary/pkg/client"
"github.com/pkg/errors"
"gitlab.com/wpetit/goweb/logger"
)

View File

@ -4,7 +4,7 @@ import (
"time"
"forge.cadoles.com/Cadoles/emissary/internal/agent/metadata"
"forge.cadoles.com/Cadoles/emissary/internal/client"
"forge.cadoles.com/Cadoles/emissary/pkg/client"
)
type Options struct {

View File

@ -11,7 +11,6 @@ import (
"github.com/lestrrat-go/jwx/v2/jws"
"github.com/lestrrat-go/jwx/v2/jwt"
"github.com/pkg/errors"
"gitlab.com/wpetit/goweb/logger"
)
const DefaultAcceptableSkew = 5 * time.Minute
@ -23,8 +22,6 @@ type Authenticator struct {
// Authenticate implements auth.Authenticator.
func (a *Authenticator) Authenticate(ctx context.Context, r *http.Request) (auth.User, error) {
ctx = logger.With(r.Context(), logger.F("remoteAddr", r.RemoteAddr))
authorization := r.Header.Get("Authorization")
if authorization == "" {
return nil, errors.WithStack(auth.ErrUnauthenticated)

View File

@ -8,22 +8,25 @@ import (
"forge.cadoles.com/Cadoles/emissary/internal/auth"
"forge.cadoles.com/Cadoles/emissary/internal/jwk"
"github.com/lestrrat-go/jwx/v2/jwt"
"github.com/pkg/errors"
"gitlab.com/wpetit/goweb/logger"
)
const DefaultAcceptableSkew = 5 * time.Minute
type (
GetKeySet func(context.Context) (jwk.Set, error)
GetTokenRole func(context.Context, jwt.Token) (string, error)
)
type Authenticator struct {
keys jwk.Set
issuer string
getKeySet GetKeySet
getTokenRole GetTokenRole
acceptableSkew time.Duration
}
// Authenticate implements auth.Authenticator.
func (a *Authenticator) Authenticate(ctx context.Context, r *http.Request) (auth.User, error) {
ctx = logger.With(r.Context(), logger.F("remoteAddr", r.RemoteAddr))
authorization := r.Header.Get("Authorization")
if authorization == "" {
return nil, errors.WithStack(auth.ErrUnauthenticated)
@ -34,37 +37,37 @@ func (a *Authenticator) Authenticate(ctx context.Context, r *http.Request) (auth
return nil, errors.WithStack(auth.ErrUnauthenticated)
}
token, err := parseToken(ctx, a.keys, a.issuer, rawToken, a.acceptableSkew)
keys, err := a.getKeySet(ctx)
if err != nil {
return nil, errors.WithStack(err)
}
rawRole, exists := token.Get(keyRole)
if !exists {
return nil, errors.New("could not find 'thumbprint' claim")
token, err := parseToken(ctx, keys, rawToken, a.acceptableSkew)
if err != nil {
return nil, errors.WithStack(err)
}
role, ok := rawRole.(string)
if !ok {
return nil, errors.Errorf("unexpected '%s' claim value: '%v'", keyRole, rawRole)
rawRole, err := a.getTokenRole(ctx, token)
if err != nil {
return nil, errors.WithStack(err)
}
if !isValidRole(role) {
return nil, errors.Errorf("invalid role '%s'", role)
if !isValidRole(rawRole) {
return nil, errors.Errorf("invalid role '%s'", rawRole)
}
user := &User{
subject: token.Subject(),
role: Role(role),
role: Role(rawRole),
}
return user, nil
}
func NewAuthenticator(keys jwk.Set, issuer string, acceptableSkew time.Duration) *Authenticator {
func NewAuthenticator(getKeySet GetKeySet, getTokenRole GetTokenRole, acceptableSkew time.Duration) *Authenticator {
return &Authenticator{
keys: keys,
issuer: issuer,
getTokenRole: getTokenRole,
getKeySet: getKeySet,
acceptableSkew: acceptableSkew,
}
}

View File

@ -11,15 +11,13 @@ import (
"github.com/pkg/errors"
)
const keyRole = "role"
func parseToken(ctx context.Context, keys jwk.Set, issuer string, rawToken string, acceptableSkew time.Duration) (jwt.Token, error) {
func parseToken(ctx context.Context, keys jwk.Set, rawToken string, acceptableSkew time.Duration) (jwt.Token, error) {
token, err := jwt.Parse(
[]byte(rawToken),
jwt.WithKeySet(keys, jws.WithRequireKid(false)),
jwt.WithIssuer(issuer),
jwt.WithValidate(true),
jwt.WithAcceptableSkew(acceptableSkew),
jwt.WithContext(ctx),
)
if err != nil {
return nil, errors.WithStack(err)
@ -28,18 +26,16 @@ func parseToken(ctx context.Context, keys jwk.Set, issuer string, rawToken strin
return token, nil
}
func GenerateToken(ctx context.Context, key jwk.Key, issuer, subject string, role Role) (string, error) {
const DefaultRoleKey string = "role"
func GenerateToken(ctx context.Context, key jwk.Key, subject string, role Role) (string, error) {
token := jwt.New()
if err := token.Set(jwt.SubjectKey, subject); err != nil {
return "", errors.WithStack(err)
}
if err := token.Set(jwt.IssuerKey, issuer); err != nil {
return "", errors.WithStack(err)
}
if err := token.Set(keyRole, role); err != nil {
if err := token.Set(DefaultRoleKey, role); err != nil {
return "", errors.WithStack(err)
}

View File

@ -3,10 +3,10 @@ package agent
import (
"os"
"forge.cadoles.com/Cadoles/emissary/internal/client"
"forge.cadoles.com/Cadoles/emissary/internal/command/api/apierr"
clientFlag "forge.cadoles.com/Cadoles/emissary/internal/command/api/flag"
"forge.cadoles.com/Cadoles/emissary/internal/format"
"forge.cadoles.com/Cadoles/emissary/pkg/client"
"github.com/pkg/errors"
"github.com/urfave/cli/v2"
)

View File

@ -3,12 +3,12 @@ package agent
import (
"os"
"forge.cadoles.com/Cadoles/emissary/internal/client"
agentFlag "forge.cadoles.com/Cadoles/emissary/internal/command/api/agent/flag"
"forge.cadoles.com/Cadoles/emissary/internal/command/api/apierr"
clientFlag "forge.cadoles.com/Cadoles/emissary/internal/command/api/flag"
"forge.cadoles.com/Cadoles/emissary/internal/datastore"
"forge.cadoles.com/Cadoles/emissary/internal/format"
"forge.cadoles.com/Cadoles/emissary/pkg/client"
"github.com/pkg/errors"
"github.com/urfave/cli/v2"
)

View File

@ -3,11 +3,11 @@ package agent
import (
"os"
"forge.cadoles.com/Cadoles/emissary/internal/client"
agentFlag "forge.cadoles.com/Cadoles/emissary/internal/command/api/agent/flag"
"forge.cadoles.com/Cadoles/emissary/internal/command/api/apierr"
clientFlag "forge.cadoles.com/Cadoles/emissary/internal/command/api/flag"
"forge.cadoles.com/Cadoles/emissary/internal/format"
"forge.cadoles.com/Cadoles/emissary/pkg/client"
"github.com/pkg/errors"
"github.com/urfave/cli/v2"
)

View File

@ -3,11 +3,11 @@ package agent
import (
"os"
"forge.cadoles.com/Cadoles/emissary/internal/client"
"forge.cadoles.com/Cadoles/emissary/internal/command/api/apierr"
clientFlag "forge.cadoles.com/Cadoles/emissary/internal/command/api/flag"
"forge.cadoles.com/Cadoles/emissary/internal/datastore"
"forge.cadoles.com/Cadoles/emissary/internal/format"
"forge.cadoles.com/Cadoles/emissary/pkg/client"
"github.com/pkg/errors"
"github.com/urfave/cli/v2"
)

View File

@ -3,12 +3,12 @@ package spec
import (
"os"
"forge.cadoles.com/Cadoles/emissary/internal/client"
agentFlag "forge.cadoles.com/Cadoles/emissary/internal/command/api/agent/flag"
"forge.cadoles.com/Cadoles/emissary/internal/command/api/apierr"
clientFlag "forge.cadoles.com/Cadoles/emissary/internal/command/api/flag"
"forge.cadoles.com/Cadoles/emissary/internal/format"
"forge.cadoles.com/Cadoles/emissary/internal/spec"
"forge.cadoles.com/Cadoles/emissary/pkg/client"
"github.com/pkg/errors"
"github.com/urfave/cli/v2"
)

View File

@ -3,11 +3,11 @@ package spec
import (
"os"
"forge.cadoles.com/Cadoles/emissary/internal/client"
agentFlag "forge.cadoles.com/Cadoles/emissary/internal/command/api/agent/flag"
"forge.cadoles.com/Cadoles/emissary/internal/command/api/apierr"
clientFlag "forge.cadoles.com/Cadoles/emissary/internal/command/api/flag"
"forge.cadoles.com/Cadoles/emissary/internal/format"
"forge.cadoles.com/Cadoles/emissary/pkg/client"
"github.com/pkg/errors"
"github.com/urfave/cli/v2"
)

View File

@ -4,12 +4,12 @@ import (
"encoding/json"
"os"
"forge.cadoles.com/Cadoles/emissary/internal/client"
agentFlag "forge.cadoles.com/Cadoles/emissary/internal/command/api/agent/flag"
"forge.cadoles.com/Cadoles/emissary/internal/command/api/apierr"
clientFlag "forge.cadoles.com/Cadoles/emissary/internal/command/api/flag"
"forge.cadoles.com/Cadoles/emissary/internal/format"
"forge.cadoles.com/Cadoles/emissary/internal/spec"
"forge.cadoles.com/Cadoles/emissary/pkg/client"
jsonpatch "github.com/evanphx/json-patch/v5"
"github.com/pkg/errors"
"github.com/urfave/cli/v2"

View File

@ -3,11 +3,11 @@ package agent
import (
"os"
"forge.cadoles.com/Cadoles/emissary/internal/client"
agentFlag "forge.cadoles.com/Cadoles/emissary/internal/command/api/agent/flag"
"forge.cadoles.com/Cadoles/emissary/internal/command/api/apierr"
clientFlag "forge.cadoles.com/Cadoles/emissary/internal/command/api/flag"
"forge.cadoles.com/Cadoles/emissary/internal/format"
"forge.cadoles.com/Cadoles/emissary/pkg/client"
"github.com/pkg/errors"
"github.com/urfave/cli/v2"
)

View File

@ -36,12 +36,17 @@ func CreateTokenCommand() *cli.Command {
subject := ctx.String("subject")
role := ctx.String("role")
key, err := jwk.LoadOrGenerate(string(conf.Server.PrivateKeyPath), jwk.DefaultKeySize)
localAuth := conf.Server.Auth.Local
if localAuth == nil {
return errors.New("local auth is disabled")
}
key, err := jwk.LoadOrGenerate(string(localAuth.PrivateKeyPath), jwk.DefaultKeySize)
if err != nil {
return errors.WithStack(err)
}
token, err := thirdparty.GenerateToken(ctx.Context, key, string(conf.Server.Issuer), subject, thirdparty.Role(role))
token, err := thirdparty.GenerateToken(ctx.Context, key, subject, thirdparty.Role(role))
if err != nil {
return errors.WithStack(err)
}

View File

@ -4,6 +4,7 @@ import (
"os"
"regexp"
"strconv"
"time"
"github.com/pkg/errors"
"gopkg.in/yaml.v3"
@ -123,3 +124,37 @@ func (iss *InterpolatedStringSlice) UnmarshalYAML(value *yaml.Node) error {
return nil
}
type InterpolatedDuration time.Duration
func (id *InterpolatedDuration) UnmarshalYAML(value *yaml.Node) error {
var str string
if err := value.Decode(&str); err != nil {
return errors.Wrapf(err, "could not decode value '%v' (line '%d') into string", value.Value, value.Line)
}
if match := reVar.FindStringSubmatch(str); len(match) > 0 {
str = os.Getenv(match[1])
}
duration, err := time.ParseDuration(str)
if err != nil {
return errors.Wrapf(err, "could not parse duration '%v', line '%d'", str, value.Line)
}
*id = InterpolatedDuration(duration)
return nil
}
func (id *InterpolatedDuration) MarshalYAML() (interface{}, error) {
duration := time.Duration(*id)
return duration.String(), nil
}
func NewInterpolatedDuration(d time.Duration) *InterpolatedDuration {
id := InterpolatedDuration(d)
return &id
}

View File

@ -1,19 +1,50 @@
package config
import (
"fmt"
"forge.cadoles.com/Cadoles/emissary/internal/auth/thirdparty"
)
type ServerConfig struct {
PrivateKeyPath InterpolatedString `yaml:"privateKeyPath"`
Issuer InterpolatedString `yaml:"issuer"`
HTTP HTTPConfig `yaml:"http"`
Database DatabaseConfig `yaml:"database"`
CORS CORSConfig `yaml:"cors"`
HTTP HTTPConfig `yaml:"http"`
Database DatabaseConfig `yaml:"database"`
CORS CORSConfig `yaml:"cors"`
Auth AuthConfig `yaml:"auth"`
}
func NewDefaultServerConfig() ServerConfig {
return ServerConfig{
PrivateKeyPath: "server-key.json",
Issuer: "http://127.0.0.1:3000",
HTTP: NewDefaultHTTPConfig(),
Database: NewDefaultDatabaseConfig(),
CORS: NewDefaultCORSConfig(),
HTTP: NewDefaultHTTPConfig(),
Database: NewDefaultDatabaseConfig(),
CORS: NewDefaultCORSConfig(),
Auth: NewDefaultAuthConfig(),
}
}
type AuthConfig struct {
Local *LocalAuthConfig `yaml:"local"`
Remote *RemoteAuthConfig `yaml:"remote"`
RoleExtractionRules []string `yaml:"roleExtractionRules"`
}
func NewDefaultAuthConfig() AuthConfig {
return AuthConfig{
Local: &LocalAuthConfig{
PrivateKeyPath: "server-key.json",
},
Remote: nil,
RoleExtractionRules: []string{
fmt.Sprintf("jwt.%s != nil ? str(jwt.%s) : ''", thirdparty.DefaultRoleKey, thirdparty.DefaultRoleKey),
},
}
}
type LocalAuthConfig struct {
PrivateKeyPath InterpolatedString `yaml:"privateKeyPath"`
}
type RemoteAuthConfig struct {
JsonWebKeySetURL InterpolatedString `yaml:"jwksUrl"`
RefreshInterval *InterpolatedDuration `yaml:"refreshInterval"`
}

View File

@ -1,11 +1,13 @@
package jwk
import (
"context"
"crypto/rand"
"crypto/rsa"
"encoding/json"
"io/ioutil"
"os"
"time"
"github.com/btcsuite/btcd/btcutil/base58"
"github.com/lestrrat-go/jwx/v2/jwa"
@ -34,7 +36,7 @@ func Parse(src []byte, options ...jwk.ParseOption) (Set, error) {
return jwk.Parse(src, options...)
}
func PublicKeySet(keys ...jwk.Key) (jwk.Set, error) {
func RS256PublicKeySet(keys ...jwk.Key) (jwk.Set, error) {
set := jwk.NewSet()
for _, k := range keys {
@ -85,6 +87,27 @@ func LoadOrGenerate(path string, size int) (jwk.Key, error) {
return key, nil
}
func CreateCachedRemoteKeySet(ctx context.Context, url string, refreshInterval time.Duration) (func(context.Context) (jwk.Set, error), error) {
cache := jwk.NewCache(ctx)
if err := cache.Register(url, jwk.WithMinRefreshInterval(refreshInterval)); err != nil {
return nil, errors.WithStack(err)
}
if _, err := cache.Refresh(ctx, url); err != nil {
return nil, errors.WithStack(err)
}
return func(ctx context.Context) (jwk.Set, error) {
keySet, err := cache.Get(ctx, url)
if err != nil {
return nil, errors.WithStack(err)
}
return keySet, nil
}, nil
}
func Generate(size int) (jwk.Key, error) {
privKey, err := rsa.GenerateKey(rand.Reader, size)
if err != nil {

View File

@ -12,7 +12,7 @@ func TestJWK(t *testing.T) {
t.Fatalf("%+v", errors.WithStack(err))
}
keySet, err := PublicKeySet(privateKey)
keySet, err := RS256PublicKeySet(privateKey)
if err != nil {
t.Fatalf("%+v", errors.WithStack(err))
}

View File

@ -6,6 +6,9 @@ import (
"log"
"net"
"net/http"
"reflect"
"strings"
"time"
"forge.cadoles.com/Cadoles/emissary/internal/auth"
"forge.cadoles.com/Cadoles/emissary/internal/auth/agent"
@ -13,9 +16,13 @@ import (
"forge.cadoles.com/Cadoles/emissary/internal/config"
"forge.cadoles.com/Cadoles/emissary/internal/datastore"
"forge.cadoles.com/Cadoles/emissary/internal/jwk"
"github.com/antonmedv/expr"
"github.com/antonmedv/expr/vm"
"github.com/go-chi/chi"
"github.com/go-chi/chi/middleware"
"github.com/go-chi/cors"
"github.com/lestrrat-go/jwx/v2/jwa"
"github.com/lestrrat-go/jwx/v2/jwt"
"github.com/pkg/errors"
"gitlab.com/wpetit/goweb/logger"
)
@ -72,20 +79,6 @@ func (s *Server) run(parentCtx context.Context, addrs chan net.Addr, errs chan e
}
}()
key, err := jwk.LoadOrGenerate(string(s.conf.PrivateKeyPath), jwk.DefaultKeySize)
if err != nil {
errs <- errors.WithStack(err)
return
}
keys, err := jwk.PublicKeySet(key)
if err != nil {
errs <- errors.WithStack(err)
return
}
router := chi.NewRouter()
router.Use(middleware.Logger)
@ -100,12 +93,19 @@ func (s *Server) run(parentCtx context.Context, addrs chan net.Addr, errs chan e
router.Use(corsMiddleware.Handler)
thirdPartyAuth, err := s.getThirdPartyAuthenticator()
if err != nil {
errs <- errors.WithStack(err)
return
}
router.Route("/api/v1", func(r chi.Router) {
r.Post("/register", s.registerAgent)
r.Group(func(r chi.Router) {
r.Use(auth.Middleware(
thirdparty.NewAuthenticator(keys, string(s.conf.Issuer), thirdparty.DefaultAcceptableSkew),
thirdPartyAuth,
agent.NewAuthenticator(s.agentRepo, agent.DefaultAcceptableSkew),
))
@ -131,6 +131,151 @@ func (s *Server) run(parentCtx context.Context, addrs chan net.Addr, errs chan e
logger.Info(ctx, "http server exiting")
}
func (s *Server) getThirdPartyAuthenticator() (*thirdparty.Authenticator, error) {
var localPublicKey jwk.Key
localAuth := s.conf.Auth.Local
if localAuth != nil {
key, err := jwk.LoadOrGenerate(string(localAuth.PrivateKeyPath), jwk.DefaultKeySize)
if err != nil {
return nil, errors.WithStack(err)
}
publicKey, err := key.PublicKey()
if err != nil {
return nil, errors.WithStack(err)
}
if err := publicKey.Set(jwk.AlgorithmKey, jwa.RS256); err != nil {
return nil, errors.WithStack(err)
}
localPublicKey = publicKey
}
var getRemoteKeySet thirdparty.GetKeySet
remoteAuth := s.conf.Auth.Remote
if remoteAuth != nil {
refreshInterval := time.Minute * 15
if remoteAuth.RefreshInterval != nil {
refreshInterval = time.Duration(*remoteAuth.RefreshInterval)
}
fn, err := jwk.CreateCachedRemoteKeySet(context.Background(), string(remoteAuth.JsonWebKeySetURL), refreshInterval)
if err != nil {
return nil, errors.WithStack(err)
}
getRemoteKeySet = fn
}
getKeySet := func(ctx context.Context) (jwk.Set, error) {
keySet := jwk.NewSet()
if localPublicKey != nil {
if err := keySet.AddKey(localPublicKey); err != nil {
return nil, errors.WithStack(err)
}
}
if getRemoteKeySet != nil {
remoteKeySet, err := getRemoteKeySet(ctx)
if err != nil {
return nil, errors.WithStack(err)
}
for idx := 0; idx < remoteKeySet.Len(); idx++ {
key, ok := remoteKeySet.Key(idx)
if !ok {
break
}
if err := keySet.AddKey(key); err != nil {
return nil, errors.WithStack(err)
}
}
}
return keySet, nil
}
getTokenRole, err := s.createGetTokenRoleFunc()
if err != nil {
return nil, errors.WithStack(err)
}
return thirdparty.NewAuthenticator(getKeySet, getTokenRole, thirdparty.DefaultAcceptableSkew), nil
}
func (s *Server) createGetTokenRoleFunc() (func(ctx context.Context, token jwt.Token) (string, error), error) {
rawRules := s.conf.Auth.RoleExtractionRules
rules := make([]*vm.Program, 0, len(rawRules))
type Env struct {
JWT map[string]any `expr:"jwt"`
}
strFunc := expr.Function(
"str",
func(params ...any) (any, error) {
var builder strings.Builder
for _, p := range params {
if _, err := builder.WriteString(fmt.Sprintf("%v", p)); err != nil {
return nil, errors.WithStack(err)
}
}
return builder.String(), nil
},
new(func(any) string),
)
for _, rr := range rawRules {
r, err := expr.Compile(rr,
expr.Env(Env{}),
expr.AsKind(reflect.String),
strFunc,
)
if err != nil {
return nil, errors.Wrapf(err, "could not compile role extraction rule '%s'", rr)
}
rules = append(rules, r)
}
return func(ctx context.Context, token jwt.Token) (string, error) {
jwt, err := token.AsMap(ctx)
if err != nil {
return "", errors.WithStack(err)
}
vm := vm.VM{}
for _, r := range rules {
result, err := vm.Run(r, Env{
JWT: jwt,
})
if err != nil {
return "", errors.WithStack(err)
}
role, ok := result.(string)
if !ok {
logger.Debug(ctx, "ignoring unexpected role extraction result", logger.F("result", result))
continue
}
if role != "" {
return role, nil
}
}
return "", errors.New("could not extract role from token")
}, nil
}
func New(funcs ...OptionFunc) *Server {
opt := defaultOption()
for _, fn := range funcs {

View File

@ -2,8 +2,6 @@ logger:
level: 1
format: human
server:
privateKeyPath: /var/lib/emissary/server-key.json
issuer: http://127.0.0.1:3000
http:
host: 0.0.0.0
port: 3000
@ -25,3 +23,11 @@ server:
- Authorization
- Sentry-Trace
debug: false
auth:
local:
privateKeyPath: /var/lib/emissary/server-key.json
roleExtractionRules:
- "jwt.role != nil ? str(jwt.role) : ''"
remote: ~
# jwksUrl: https://my-server/.well-known/jwks.json

View File

@ -6,7 +6,7 @@ After=network.target
Type=simple
Restart=always
WorkingDirectory=/usr/share/emissary
ExecStart=/usr/bin/emissary --config /etc/emissary/config.yml agent run
ExecStart=/usr/bin/emissary --config /etc/emissary/agent.yml agent run
[Install]
WantedBy=multi-user.target

View File

@ -4,9 +4,9 @@ After=network.target
[Service]
Type=simple
Restart=always
Restart=on-failure
WorkingDirectory=/usr/share/emissary
ExecStart=/usr/bin/emissary --config /etc/emissary/config.yml server run
ExecStart=/usr/bin/emissary --config /etc/emissary/server.yml server run
[Install]
WantedBy=multi-user.target

1
misc/resources/logo.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 12 KiB

View File

@ -16,8 +16,8 @@
"config": {
"appUrlResolving": {
"ifaceMappings": {
"wlp4s0": "http://{{ .DeviceIP }}:{{ .AppPort }}",
"enp0s31f6": "http://{{ .DeviceIP }}:{{ .AppPort }}"
"eth0": "http://{{ .DeviceIP }}:{{ .AppPort }}",
"eth1": "http://{{ .DeviceIP }}:{{ .AppPort }}"
},
"defaultUrlTemplate": "http://{{ last ( splitList \".\" ( toString .Manifest.ID ) ) }}.localhost.arcad.lan:8080"
},

23
pkg/client/alias.go Normal file
View File

@ -0,0 +1,23 @@
package client
import (
"forge.cadoles.com/Cadoles/emissary/internal/agent/metadata"
"forge.cadoles.com/Cadoles/emissary/internal/datastore"
"forge.cadoles.com/Cadoles/emissary/internal/jwk"
"forge.cadoles.com/Cadoles/emissary/internal/spec"
)
type (
Spec = spec.Spec
SpecName = spec.Name
)
type (
AgentID = datastore.AgentID
Agent = datastore.Agent
AgentStatus = datastore.AgentStatus
)
type MetadataTuple = metadata.Tuple
type Key = jwk.Key

View File

@ -8,7 +8,7 @@ import (
"github.com/pkg/errors"
)
func (c *Client) DeleteAgent(ctx context.Context, agentID datastore.AgentID, funcs ...OptionFunc) (datastore.AgentID, error) {
func (c *Client) DeleteAgent(ctx context.Context, agentID AgentID, funcs ...OptionFunc) (AgentID, error) {
response := withResponse[struct {
AgentID int64 `json:"agentId"`
}]()

View File

@ -4,12 +4,11 @@ import (
"context"
"fmt"
"forge.cadoles.com/Cadoles/emissary/internal/datastore"
"forge.cadoles.com/Cadoles/emissary/internal/spec"
"github.com/pkg/errors"
)
func (c *Client) DeleteAgentSpec(ctx context.Context, agentID datastore.AgentID, name spec.Name, funcs ...OptionFunc) (spec.Name, error) {
func (c *Client) DeleteAgentSpec(ctx context.Context, agentID AgentID, name SpecName, funcs ...OptionFunc) (SpecName, error) {
payload := struct {
Name spec.Name `json:"name"`
}{

View File

@ -4,13 +4,12 @@ import (
"context"
"fmt"
"forge.cadoles.com/Cadoles/emissary/internal/datastore"
"github.com/pkg/errors"
)
func (c *Client) GetAgent(ctx context.Context, agentID datastore.AgentID, funcs ...OptionFunc) (*datastore.Agent, error) {
func (c *Client) GetAgent(ctx context.Context, agentID AgentID, funcs ...OptionFunc) (*Agent, error) {
response := withResponse[struct {
Agent *datastore.Agent `json:"agent"`
Agent *Agent `json:"agent"`
}]()
path := fmt.Sprintf("/api/v1/agents/%d", agentID)

View File

@ -4,12 +4,11 @@ import (
"context"
"fmt"
"forge.cadoles.com/Cadoles/emissary/internal/datastore"
"forge.cadoles.com/Cadoles/emissary/internal/spec"
"github.com/pkg/errors"
)
func (c *Client) GetAgentSpecs(ctx context.Context, agentID datastore.AgentID, funcs ...OptionFunc) ([]spec.Spec, error) {
func (c *Client) GetAgentSpecs(ctx context.Context, agentID AgentID, funcs ...OptionFunc) ([]Spec, error) {
response := withResponse[struct {
Specs []*spec.RawSpec `json:"specs"`
}]()

View File

@ -16,8 +16,8 @@ type QueryAgentsOptions struct {
Limit *int
Offset *int
Thumbprints []string
IDs []datastore.AgentID
Statuses []datastore.AgentStatus
IDs []AgentID
Statuses []AgentStatus
}
func WithQueryAgentsOptions(funcs ...OptionFunc) QueryAgentsOptionFunc {
@ -56,7 +56,7 @@ func WithQueryAgentsStatus(statuses ...datastore.AgentStatus) QueryAgentsOptionF
}
}
func (c *Client) QueryAgents(ctx context.Context, funcs ...QueryAgentsOptionFunc) ([]*datastore.Agent, int, error) {
func (c *Client) QueryAgents(ctx context.Context, funcs ...QueryAgentsOptionFunc) ([]*Agent, int, error) {
options := &QueryAgentsOptions{}
for _, fn := range funcs {
fn(options)

View File

@ -9,8 +9,8 @@ import (
"github.com/pkg/errors"
)
func (c *Client) RegisterAgent(ctx context.Context, key jwk.Key, thumbprint string, meta []metadata.Tuple, funcs ...OptionFunc) (*datastore.Agent, error) {
keySet, err := jwk.PublicKeySet(key)
func (c *Client) RegisterAgent(ctx context.Context, key Key, thumbprint string, meta []MetadataTuple, funcs ...OptionFunc) (*Agent, error) {
keySet, err := jwk.RS256PublicKeySet(key)
if err != nil {
return nil, errors.WithStack(err)
}

View File

@ -10,7 +10,7 @@ import (
"github.com/pkg/errors"
)
func (c *Client) UpdateAgentSpec(ctx context.Context, agentID datastore.AgentID, spc spec.Spec, funcs ...OptionFunc) (*datastore.Spec, error) {
func (c *Client) UpdateAgentSpec(ctx context.Context, agentID AgentID, spc Spec, funcs ...OptionFunc) (Spec, error) {
payload := struct {
Name spec.Name `json:"name"`
Revision int `json:"revision"`