mirror of
https://github.com/urbit/shrub.git
synced 2024-12-23 02:41:35 +03:00
Booting galaxies again.
This commit is contained in:
parent
1af4895a89
commit
976a9e4d2a
@ -608,20 +608,18 @@
|
|||||||
/* u3_opts: command line configuration.
|
/* u3_opts: command line configuration.
|
||||||
*/
|
*/
|
||||||
typedef struct _u3_opts {
|
typedef struct _u3_opts {
|
||||||
c3_c* imp_c; // -I, czar name
|
|
||||||
c3_c* nam_c; // -n, unix hostname
|
c3_c* nam_c; // -n, unix hostname
|
||||||
c3_c* raf_c; // -r, raft flotilla
|
|
||||||
c3_c* who_c; // -w, begin with ticket
|
c3_c* who_c; // -w, begin with ticket
|
||||||
c3_c* tic_c; // -t, ticket value
|
c3_c* tic_c; // -t, ticket value
|
||||||
c3_c* pil_c; // -B, bootstrap from
|
c3_c* pil_c; // -B, bootstrap from
|
||||||
c3_c* lit_c; // -J, ivory (fastboot) kernel
|
c3_c* lit_c; // -J, ivory (fastboot) kernel
|
||||||
c3_c* gen_c; // -G, czar generator
|
c3_c* sec_c; // -s, secret
|
||||||
c3_w kno_w; // -k, kernel version
|
c3_w kno_w; // -k, kernel version
|
||||||
c3_w fuz_w; // -f, fuzz testing
|
c3_w fuz_w; // -f, fuzz testing
|
||||||
c3_s por_s; // -p, ames port
|
c3_s por_s; // -p, ames port
|
||||||
c3_s rop_s; // -l, raft port
|
|
||||||
c3_o abo; // -a, abort aggressively
|
c3_o abo; // -a, abort aggressively
|
||||||
c3_o bat; // -b, batch create
|
c3_o bat; // -b, batch create
|
||||||
|
c3_o sic; // -S, enter secret at prompt
|
||||||
c3_o gab; // -g, test garbage collection
|
c3_o gab; // -g, test garbage collection
|
||||||
c3_o dem; // -d, daemon
|
c3_o dem; // -d, daemon
|
||||||
c3_o dry; // -D, dry compute, no checkpoint
|
c3_o dry; // -D, dry compute, no checkpoint
|
||||||
@ -1475,6 +1473,11 @@
|
|||||||
c3_l msc_l,
|
c3_l msc_l,
|
||||||
u3_noun job);
|
u3_noun job);
|
||||||
|
|
||||||
|
/* u3_pier_rand(): fill a 512-bit (16-word) buffer.
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
u3_pier_rand(c3_w* rad_w);
|
||||||
|
|
||||||
/* u3_pier_exit(): trigger a gentle shutdown.
|
/* u3_pier_exit(): trigger a gentle shutdown.
|
||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
|
46
vere/king.c
46
vere/king.c
@ -323,21 +323,51 @@ _boothack_cb(uv_connect_t *conn, int status)
|
|||||||
u3z(whu);
|
u3z(whu);
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
if ( c3y == u3_Host.ops_u.fak ) {
|
||||||
if ( !u3_Host.ops_u.tic_c ) {
|
fprintf(stderr, "boot: F A K E ship with null security\r\n");
|
||||||
fprintf(stderr, "boot: F A K E ship with null security (use -t)\r\n");
|
|
||||||
sec = 0;
|
sec = 0;
|
||||||
}
|
tic = 0;
|
||||||
else {
|
}
|
||||||
u3_noun suc = u3dc("slaw", 'p', u3i_string(u3_Host.ops_u.tic_c));
|
else {
|
||||||
|
if ( 0 == u3_Host.ops_u.sec_c ) {
|
||||||
|
c3_w eny_w[16];
|
||||||
|
|
||||||
|
u3_pier_rand(eny_w);
|
||||||
|
sec = u3i_words(2, eny_w);
|
||||||
|
{
|
||||||
|
u3_noun rot = u3dc("scot", 'p', u3k(sec));
|
||||||
|
c3_c* rot_c = u3r_string(rot);
|
||||||
|
|
||||||
|
fprintf(stderr, "boot: %s: R O O T P A S S W O R D %s\r\n",
|
||||||
|
u3_Host.ops_u.who_c,
|
||||||
|
rot_c);
|
||||||
|
fprintf(stderr, " (write it down and put it in your wallet)\r\n");
|
||||||
|
|
||||||
|
u3z(rot);
|
||||||
|
c3_free(rot_c);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
u3_noun suc = u3dc("slaw", 'p', u3i_string(u3_Host.ops_u.sec_c));
|
||||||
|
|
||||||
if ( u3_nul == suc ) {
|
if ( u3_nul == suc ) {
|
||||||
fprintf(stderr, "boot: malformed secret (-t)\r\n");
|
fprintf(stderr, "boot: malformed secret (-s)\r\n");
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
sec = u3k(u3t(suc));
|
sec = u3k(u3t(suc));
|
||||||
u3z(suc);
|
u3z(suc);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
u3_noun tuc = u3dc("slaw", 'p', u3i_string(u3_Host.ops_u.tic_c));
|
||||||
|
|
||||||
|
if ( u3_nul == tuc ) {
|
||||||
|
fprintf(stderr, "boot: malformed ticket (-t)\r\n");
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
tic = u3k(u3t(tuc));
|
||||||
|
u3z(tuc);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
tic = u3k(sec);
|
tic = u3k(sec);
|
||||||
pax = u3i_string(u3_Host.dir_c);
|
pax = u3i_string(u3_Host.dir_c);
|
||||||
|
94
vere/main.c
94
vere/main.c
@ -74,6 +74,7 @@ _main_getopt(c3_i argc, c3_c** argv)
|
|||||||
u3_Host.ops_u.tex = c3n;
|
u3_Host.ops_u.tex = c3n;
|
||||||
u3_Host.ops_u.pro = c3n;
|
u3_Host.ops_u.pro = c3n;
|
||||||
u3_Host.ops_u.dry = c3n;
|
u3_Host.ops_u.dry = c3n;
|
||||||
|
u3_Host.ops_u.sic = c3n;
|
||||||
u3_Host.ops_u.veb = c3n;
|
u3_Host.ops_u.veb = c3n;
|
||||||
u3_Host.ops_u.qui = c3n;
|
u3_Host.ops_u.qui = c3n;
|
||||||
u3_Host.ops_u.nuu = c3n;
|
u3_Host.ops_u.nuu = c3n;
|
||||||
@ -81,7 +82,7 @@ _main_getopt(c3_i argc, c3_c** argv)
|
|||||||
u3_Host.ops_u.rep = c3n;
|
u3_Host.ops_u.rep = c3n;
|
||||||
u3_Host.ops_u.kno_w = DefaultKernel;
|
u3_Host.ops_u.kno_w = DefaultKernel;
|
||||||
|
|
||||||
while ( (ch_i=getopt(argc, argv,"G:B:I:w:t:f:k:l:n:p:r:LabcdgmqvxFMPDXR")) != -1 ) {
|
while ( (ch_i=getopt(argc, argv,"s:B:I:w:t:f:k:l:n:p:LSabcdgmqvxFMPDXR")) != -1 ) {
|
||||||
switch ( ch_i ) {
|
switch ( ch_i ) {
|
||||||
case 'M': {
|
case 'M': {
|
||||||
u3_Host.ops_u.mem = c3y;
|
u3_Host.ops_u.mem = c3y;
|
||||||
@ -91,12 +92,8 @@ _main_getopt(c3_i argc, c3_c** argv)
|
|||||||
u3_Host.ops_u.pil_c = strdup(optarg);
|
u3_Host.ops_u.pil_c = strdup(optarg);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 'G': {
|
case 's': {
|
||||||
u3_Host.ops_u.gen_c = strdup(optarg);
|
u3_Host.ops_u.sec_c = strdup(optarg);
|
||||||
break;
|
|
||||||
}
|
|
||||||
case 'I': {
|
|
||||||
u3_Host.ops_u.imp_c = _main_presig(optarg);
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 'w': {
|
case 'w': {
|
||||||
@ -128,12 +125,6 @@ _main_getopt(c3_i argc, c3_c** argv)
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 'l': {
|
|
||||||
if ( c3n == _main_readw(optarg, 65536, &arg_w) ) {
|
|
||||||
return c3n;
|
|
||||||
} else u3_Host.ops_u.rop_s = arg_w;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case 'n': {
|
case 'n': {
|
||||||
u3_Host.ops_u.nam_c = strdup(optarg);
|
u3_Host.ops_u.nam_c = strdup(optarg);
|
||||||
break;
|
break;
|
||||||
@ -144,10 +135,6 @@ _main_getopt(c3_i argc, c3_c** argv)
|
|||||||
} else u3_Host.ops_u.por_s = arg_w;
|
} else u3_Host.ops_u.por_s = arg_w;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 'r': {
|
|
||||||
u3_Host.ops_u.raf_c = strdup(optarg);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case 'R': {
|
case 'R': {
|
||||||
u3_Host.ops_u.rep = c3y;
|
u3_Host.ops_u.rep = c3y;
|
||||||
return c3y;
|
return c3y;
|
||||||
@ -181,33 +168,55 @@ _main_getopt(c3_i argc, c3_c** argv)
|
|||||||
exit(1); /* (avoid simple usage msg) */
|
exit(1); /* (avoid simple usage msg) */
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( u3_Host.ops_u.gen_c != 0 && ( u3_Host.ops_u.imp_c == 0 ||
|
/* fill in any missing security data, etc
|
||||||
u3_Host.ops_u.nuu == c3n ) ) {
|
*/
|
||||||
fprintf(stderr, "-G only makes sense when creating a new galaxy\n");
|
if ( u3_Host.ops_u.nuu == c3y ) {
|
||||||
return c3n;
|
if ( u3_Host.ops_u.who_c == 0 ) {
|
||||||
}
|
fprintf(stderr, "comets are not yet supported; identify with -w\r\n");
|
||||||
|
return c3n;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
if ( c3n == u3_Host.ops_u.fak ) {
|
||||||
|
if ( (u3_Host.ops_u.tic_c == 0) &&
|
||||||
|
(strlen(u3_Host.ops_u.who_c) >= 4)
|
||||||
|
)
|
||||||
|
{
|
||||||
|
c3_c tic_c[29];
|
||||||
|
|
||||||
if ( u3_Host.ops_u.tic_c != 0 && ( u3_Host.ops_u.imp_c != 0 ||
|
printf("enter your ticket: ~");
|
||||||
u3_Host.ops_u.nuu == c3n ) ) {
|
scanf("%28s", tic_c);
|
||||||
fprintf(stderr, "-t only makes sense when creating a new non-galaxy\n");
|
u3_Host.ops_u.tic_c = _main_presig(tic_c);
|
||||||
return c3n;
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if ( u3_Host.ops_u.rop_s == 0 && u3_Host.ops_u.raf_c != 0 ) {
|
if ( c3y == u3_Host.ops_u.sic ) {
|
||||||
fprintf(stderr, "The -r flag requires -l.\n");
|
c3_c sec_c[29];
|
||||||
return c3n;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( (u3_Host.ops_u.tic_c == 0) &&
|
printf("enter your secret: ~");
|
||||||
(u3_Host.ops_u.who_c != 0) &&
|
scanf("%28s", sec_c);
|
||||||
(c3n == u3_Host.ops_u.fak)
|
u3_Host.ops_u.sec_c = _main_presig(sec_c);
|
||||||
)
|
}
|
||||||
{
|
}
|
||||||
c3_c tic_c[29];
|
}
|
||||||
|
} else {
|
||||||
|
if ( u3_Host.ops_u.sec_c != 0 ) {
|
||||||
|
fprintf(stderr, "-s only makes sense when creating a new ship\n");
|
||||||
|
return c3n;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( u3_Host.ops_u.tic_c != 0 ) {
|
||||||
|
fprintf(stderr, "-t only makes sense when creating a new ship\n");
|
||||||
|
return c3n;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( u3_Host.ops_u.who_c != 0 ) {
|
||||||
|
fprintf(stderr, "-w only makes sense when creating a new ship\n");
|
||||||
|
return c3n;
|
||||||
|
}
|
||||||
|
if ( u3_Host.ops_u.pil_c != 0) {
|
||||||
|
fprintf(stderr, "-B only makes sense when creating a new ship\n");
|
||||||
|
return c3n;
|
||||||
|
}
|
||||||
|
|
||||||
printf("enter your secret: ~");
|
|
||||||
scanf("%28s",tic_c);
|
|
||||||
u3_Host.ops_u.tic_c = _main_presig(tic_c);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( c3y == u3_Host.ops_u.bat ) {
|
if ( c3y == u3_Host.ops_u.bat ) {
|
||||||
@ -215,11 +224,6 @@ _main_getopt(c3_i argc, c3_c** argv)
|
|||||||
u3_Host.ops_u.nuu = c3y;
|
u3_Host.ops_u.nuu = c3y;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( u3_Host.ops_u.nuu != c3y && u3_Host.ops_u.pil_c != 0) {
|
|
||||||
fprintf(stderr, "-B only makes sense when bootstrapping a new instance\n");
|
|
||||||
return c3n;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( u3_Host.ops_u.pil_c != 0 ) {
|
if ( u3_Host.ops_u.pil_c != 0 ) {
|
||||||
struct stat s;
|
struct stat s;
|
||||||
if ( stat(u3_Host.ops_u.pil_c, &s) != 0 ) {
|
if ( stat(u3_Host.ops_u.pil_c, &s) != 0 ) {
|
||||||
|
11
vere/reck.c
11
vere/reck.c
@ -90,6 +90,17 @@ _reck_kick_term(u3_pier* pir_u, u3_noun pox, c3_l tid_l, u3_noun fav)
|
|||||||
u3z(pox); u3z(fav); return c3y;
|
u3z(pox); u3z(fav); return c3y;
|
||||||
} break;
|
} break;
|
||||||
|
|
||||||
|
// this can return through dill due to our fscked up boot sequence
|
||||||
|
//
|
||||||
|
case c3__send: {
|
||||||
|
u3_noun lan = u3k(u3h(u3t(fav)));
|
||||||
|
u3_noun pac = u3k(u3t(u3t(fav)));
|
||||||
|
|
||||||
|
fprintf(stderr, "kick: strange send\r\n");
|
||||||
|
u3_ames_ef_send(pir_u, lan, pac);
|
||||||
|
u3z(pox); u3z(fav); return c3y;
|
||||||
|
} break;
|
||||||
|
|
||||||
case c3__logo:
|
case c3__logo:
|
||||||
{
|
{
|
||||||
u3_pier_exit();
|
u3_pier_exit();
|
||||||
|
Loading…
Reference in New Issue
Block a user