Been talking to people on a TMS thread about clients and features that could be added to them. One feature none of them have, so far, is cross-server authentication. Most wouldn't even be able to do this at all. I think, interestingly enough, that Mushclient can. So, here is the idea..
In a main world, which is actually a dummy, with the IP at 0.0.0.0 you have a plugin. This plugin has these functions:
1. Create new worlds.
2. Send text through simulate.
3. Negotiate between worlds.
4. Close worlds.
So, what you do is log into the "login" server by having the authentication plugin in your "dummy" create a world with the IP set to the authentication server and a plugin that redirects all incoming stuff from there "to" OnCallPlugin in your dummy. That then dumps the text sent to it to either the authentication routines *or* through "world.simulate". Once negotiation is over and you play, until you need to switch servers. At that point you open a new world with the new IP, negotiate the connect to it, etc, just like you did with the previous server, with everything redirected through CallPlugin, then once you are "on" that one, you close the first servers world and continue on.
Its a bit screwy a way to do things, but the only other way would be to have something like:
1. Allow a second IP.
2. Connect to the second IP, but only allow OnIP2PacketRecieved to "see" what it is doing.
3. Have a function for "TransferToIP2", which traded the second connection for the first one, making the original IP now IP2 and allowing it to be closed, while all new data comes from the new server.
That would be roughly how a client would need to support it "natively". Assuming anyone ever coded a mud that used multiple servers to host itself, which I have yet to see. But, I thought it was interesting that, in theory, Mushclient could be adapted, as is, to support such multiple server negotiations, assuming the script coder understood the protocols involved well enough to get the switch from one to the other to work. The only possible issue would be in limitations of how "big" the data sent through CallPlugin can be, which might prevent it from working properly in some cases.
Anyway, this was just an exercise in what might be possible, not something useful at the moment. Unless you wanted to do something bizzare like cracking the negotiations for some 3D game and using an external OpenGL system through script to display the 3D, while using Mushclient as the keyboard interface for it... But, those use the mouse a lot and we don't exactly have GUI support working, so.. lol
Just shows how bloody scary what this client is sometimes, given what its theoretically able to do now. |