A couple of random ideas for improvements to the metaserver.

One that would be relatively easy to implement would be for servers to
signal their locale/language code to the metaserver -- I was reminded of
this when Marko had the Scots Gaelic servers running.
It might be slightly tricky to determine a useful language code on the
server side; I could look into that. I may even be able to suggest
changes to the metaserver code, but I probably wouldn't test them.
If agreed, this could probably go into 2.4.

Another more involved idea is for the metaserver to make a trial
connection back to the server to determine if it's reachable, before
listing it.
I think a lot of people are behind NAT these days, and Freeciv doesn't
currently do much to mitigate/diagnose this.

Talking to someone on IRC who just wanted to set up a game with his
(non-technical) friends made me think about this. In that case,
advertising a game on the public metaserver is not the ideal solution
from a security point of view, because this was supposed to be a private
game, yet the default server is unauthenticated; but it is a good
solution from the usability point of view (the other players could
select the correct server from a list, identified as "Fred's server" or
whatever, rather than having to type an IP address into their clients).

For private games, perhaps involving the metaserver as a simple
"reflection" service, to tell servers their public IP address, would be
useful -- probably triggered by a command/button rather than
automatically "phoning home". This would at least give the game host a
reliable host/IP that they can email/IM to the other players (in the
conversation I was struggling to find a way for the host to work out his
own public IP address).

This doesn't help with other aspects of NAT, of course, such as the
potential need to set up port forwarding in the NAT router. There's not
much we can do about that, unless perhaps we get involved in UPnP NAT
traversal / IGD (which can apparently also retrieve the public IP
address). But I don't have a feel for whether that's widely enough
implemented/honoured by consumer routers to be worth bothering with (it
feels like a security hole to me).

Back to the metaserver changes, this would probably need some sort of
change to the client-server protocol to give the metaserver some command
it could give to the server rather than pretending to be a real client
(possibly retrieving a cookie received over the metaserver connection to
be sure it's the same server), so I think this would be 2.5 at the
(This also feels like it may need some care to avoid the metaserver
becoming a vector for open relay / DoS type attacks, so the server would
need to cope gracefully if the metaserver refused to connect back, if we
decided the whole system was a security risk.)

Freeciv-dev mailing list

Reply via email to