Up to Main Index                               Up to Journal for May, 2014

                      JOURNAL FOR SUNDAY 25TH MAY, 2014
______________________________________________________________________________

SUBJECT: A dev branch update. Telnet over SSL in the works.
   DATE: Sun 25 May 20:11:10 BST 2014

The PROTOTYPE3 release seems to have gone down well :)

I had a question about specifying which interface WolfMUD listens on, more
specifically: Can WolfMUD listen on any/all interfaces? Yes it can. In the
configuration file - data/config.wrj - change the listen.address to be empty:


  listen.address:


Then the server will listen on all available network interfaces. This can be
useful on android tablets where editing the config file is a pain every time
the wireless connection gets a new IP address ;) I've updated the
configuration file comments to mention this now.

It was also noticed that slow connections sometimes discarded the final data
in transit - usually the 'Idle connection terminated by server' message. This
is also fixed in the dev branch.

Finally I've fixed a bug where the maximum number of concurrent players can be
inaccurate if a player logs in and then out before the stats snapshot is
taken. Again this is fixed in the dev branch.

The above three changes have just been pushed out to the public dev branch.

I've also switched to using GO1.3 (BETA 2) for development.

Since PROTOTYPE3 I've been working mainly on cleaning up the code. The bugs
and bits above were fixed as I came across them.

I say 'mainly working on' because I had another networking request come in
which has provided for and interesting distraction. Quite a number of users
are using WolfMUD as a chat server - lets face it, you can't do much else at
the moment :)


  "In light of HEARTBLEED and allegations of everybody snooping on everyone
   else could you make WolfMUD connections more secure please?"


So far I have a proof of concept working with Telnet over SSL, self signed
certificates and perfect forward secrecy. I've hacked this into the existing
code - not ideal as you lose the plain Telnet connections. As the accept loop
is in the main goroutine I need to adjust that to run multiple accept loops in
their own goroutines. The configuration also needs to be modified to handle
multiple sections, maybe something like:


              data.dir: .
      mem.profile.rate: 1
            stats.rate: 10s
        account.id.min: 10
  account.password.min: 10
  %%
  listen.protocol: telnet
   listen.address: 127.0.0.1
      listen.port: 4001
  %%
  listen.protocol: telnet-ssl
   listen.address: 127.0.0.1
      listen.port: 4002
      listen.cert: WolfMUD.crt
       listen.key: WolfMUD.key
        listen.ca: ca-bundle.crt
  %%


This would also allow SSH connections to be added later on. Separate local and
remote connections could also be specified - I'm thinking always allow local
connections even if the server is full so that admin users can gain access.

I've not had time to play with this too much - just got the proof of concept
working. One thing I did notice was that I couldn't use a tls.Conn as a drop
in replacement for a standard net.TCPConn or net.Conn :( This is awkward as I
can't use the standard WolfMUD client package. I'm sure I've just overlooked
something obvious here?

--
Diddymus


  Up to Main Index                               Up to Journal for May, 2014