2018-11-29 17:14:12 +00:00
|
|
|
const { currentFacet, genUuid } = require("@syndicate-lang/core");
|
|
|
|
const S = activate require("@syndicate-lang/driver-streams-node");
|
|
|
|
|
|
|
|
spawn named 'ssh-relay-server' {
|
2019-05-31 12:58:04 +00:00
|
|
|
on asserted S.Stream($conn, S.Incoming(S.TcpListener(2022))) {
|
2018-11-29 17:14:12 +00:00
|
|
|
spawn named ['sshconn', conn] {
|
2019-05-31 12:58:04 +00:00
|
|
|
stop on retracted S.Stream(conn, S.Duplex());
|
2018-11-29 17:14:12 +00:00
|
|
|
|
|
|
|
const daemon = genUuid('daemon');
|
2019-05-31 12:58:04 +00:00
|
|
|
assert S.Stream(daemon, S.Outgoing(S.SubprocessAddress('/usr/sbin/sshd', ['-dei'], {})));
|
|
|
|
stop on message S.Stream(daemon, S.Rejected($err)) {
|
2018-11-29 17:14:12 +00:00
|
|
|
console.error("Couldn't start sshd", err);
|
|
|
|
}
|
2019-05-31 12:58:04 +00:00
|
|
|
stop on message S.Stream(daemon, S.Accepted()) {
|
2018-11-29 17:14:12 +00:00
|
|
|
react {
|
2019-05-31 12:58:04 +00:00
|
|
|
stop on retracted S.Stream(conn, S.Duplex());
|
|
|
|
stop on retracted S.Stream(daemon, S.Duplex());
|
|
|
|
assert S.Stream(conn, S.BackPressure(daemon));
|
|
|
|
assert S.Stream(daemon, S.BackPressure(conn));
|
2019-06-03 11:08:30 +00:00
|
|
|
on message S.Stream(conn, S.Data($chunk)) send S.Stream(daemon, S.Push(chunk, false));
|
|
|
|
on message S.Stream(daemon, S.Data($chunk)) send S.Stream(conn, S.Push(chunk, false));
|
2018-11-29 17:14:12 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|