stephenh / mirror

A tool for real-time, two-way sync for remote (e.g. desktop/laptop) development
Apache License 2.0
391 stars 37 forks source link

restricting server to only one interface #63

Closed alfarme closed 4 years ago

alfarme commented 4 years ago

Hi,

I have a machine with three network interfaces, and I need/want the server to only listen to one of them. Since mirror doesnt seem to support it, can this be achieved through java options?

There doesn't seem to be any other way to secure the server, like no auth or certificate.

thanks, sven

stephenh commented 4 years ago

The mirror server command supports a --host option which should do what you want:

https://github.com/stephenh/mirror/blob/master/src/main/java/mirror/Mirror.java#L109

I.e. specify the IP of the network interface you want to bind on. I don't regularly use this myself, but it should work.

like no auth or certificate

Right, the current expectation is that you'd use SSH tunneling to secure the server's port. Pretty sure the readme talks about that.

alfarme commented 4 years ago

oh, I wasn't aware of this, the help command doesnt mention it:

~/tmp$ ./mirror help server NAME mirror server - starts a server for the remote client to connect to

SYNOPSIS mirror server [ --enable-log-file ] [ {-p | --port} ] [ --skip-limit-checks ]

OPTIONS --enable-log-file enables logging debug statements to mirror.log

    -p <port>, --port <port>
        port to listen on, default: 49172

    --skip-limit-checks
        skip system file descriptor/watches checks

I don't usually skim through source code to find supported arguments :)

about ths ssh tunnel: yes, this opens a secure connection, but as soon as you start the server, it will serve all connection requests, not only the ones from localhost. (I guess this works if you limit the server to localhost via above command :)

alfarme commented 4 years ago

wondering whether I have the latest version? (I downloaded from https://github.com/stephenh/mirror/releases/latest/download/mirror)

Exception in thread "main" com.github.rvesse.airline.parser.errors.ParseArgumentsUnexpectedException: Found unexpected parameters: [--host, x.x.x.x]

stephenh commented 4 years ago

Oh huh, yeah, looks like --host was added very recently (at least in terms of commits), and I probably haven't done a release yet.

Can you use a build from master? I can get around to doing a release soon-ish.

alfarme commented 4 years ago

ok sure, thanks for the heads up :)

stephenh commented 4 years ago

Oh huh. I forgot I'd already automated the release process. "Just run the ./release command" :-). Granted, I have to run it by hand, need to get it hooked up to CI...

But anyway, there is now a v1.3.9 release with a pre-built jar/binary with the commit you're looking for on the github releases page.

alfarme commented 4 years ago

amazing, thank you!!