7f0b09aa

Created Started Finished

By: Tom Sydney Kerckhove <syd@cs-syd.eu>

Fix what reviewing the deployment turned up

Five things, the first of which would have bitten.

A configuration whose way back in is the whole of it has no rest, and the
deployment handed RouterOS the empty file anyway rather than noticing there
was nothing to import. examples/valid/minimal.rsc is exactly that shape.

Waiting for the router used ping and then slept fifteen seconds, on the theory
that ping answering means ssh will shortly. It now waits for ssh, which is
what the next step needs. It also slept nowhere inside the loop, which is fine
while the router is quiet and useless when it is unreachable: ping fails
instantly then, and a hundred and twenty instant failures take no time at all,
so the wait would have given up before the router had a chance.

A dst-nat rule naming neither a protocol nor a port forwards everything, and
both forward checks skipped it for want of the fields they compare. So the
largest thing a rule can do was the one thing nothing would mention. It is
reported as `everything` now, and there is an example of it.

`import` exited without flushing what it had printed, which on anything but a
terminal could lose the router's account of why it refused a file: the only
result there is. It also read only stdout, and now reads both streams.

Also: the address and the username are escaped like the name already was, and
the forwards of one machine are worked out once rather than once per port.