Crossfire Archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: CF: Telnet-interface for 0.95.1



Anthony Thyssen (anthony@cit.gu.edu.au) wrote:

> | So I took the 0.95.1 server and hacked around a little bit -- the result
> | of that can be found at
> |    http://www.informatik.tu-muenchen.de/~stieber/crossfire/Socket.tar.gz
> | There is also a small documentation file.
> | 
> Two things I think you should think about
>   Documentation

I don't think we need docs via an telnet interface?

>   Meta-server hooks

Hm... how about this: the server gets a list of metaservers (or just
one?). When it starts up it sends a "startup" packet to the
metaservers, and a "stop" packet when it is shut down. The start
packet contains the version number of the server (since this is
something you probably want to display in any case). Players can get
additional information via the telnet interface (all of this can be
hidden via webpages, of course).

Maybe I should implement an "info" command to return more information
about the server than the "version" command:
  version
  maintainer
  (some) compile options
  list of additional maps
  general info

The metaservers, on the other hand, send "test" packets to registered
servers every five minutes (roughly --- no need for a strict timing),
to see if they are still alive (a server might have crashed and not
been restarted. It's probably enough to just connect to my 13326 port
and send a "quit".

A player command "meta" would give a list of metaservers that it has
registered with.

The metaserver protocol would be much simpler: currently I only see
the need for a "servers" command, to return the list of currently
registered servers. Additional software would use that command
to create webpages (it would get the serverlist from a metaserver,
and information about an individual server from the server itself).

If nobody has objections I'll implement it that way.

Note that there are no provisions to prevent bad guys from setting up
fake servers. Preventing that would require a maintainer --- a person
who decides whether a server is real or not. Only servers that are
known to be real would be accepted by the metaservers.

Denial-of-service attacks might be possible by setting up a lot of
connections to the metaserver, or flooding it with fake servers.

I don't think there are any cf-security problems right now, so I don't
really care about such things.

Christian

BTW, I'm thinking about banning characters. Their playerfile would get
an additional "banned" entry, with a date/time telling when the ban
expires. This would require fixing the kick command first (too bad that
I have implemented it...) so a dm could "ban" the character, which
would add the ban to the playerfile, then kick him out of the
game. Sort of a "warning" for misbehaving players.

Maybe we even want two sorts of dm: the "standard" dm which can do
things like summoning players, kicking and banning them, and the
"master" dm which can do anything a dm can currently do. This would be
interesting for servers with a lot of players, since some players
could get standard dm privileges without the really bad things.


-- 
Christian Stieber        http://www.informatik.tu-muenchen.de/~stieber
-
[you can put yourself on the announcement list only or unsubscribe altogether
by sending an email stating your wishes to crossfire-request@ifi.uio.no]