jwodicka / mural-legacy Goto Github PK
View Code? Open in Web Editor NEWA social chat server with MU*-inspired features, supporting multiple characters per account and pass-through access to MU*s running on other servers and codebases.
A social chat server with MU*-inspired features, supporting multiple characters per account and pass-through access to MU*s running on other servers and codebases.
Mural ===== Thanks for grabbing Mural. This codebase is unstable and thoroughly work-in-progress at the moment, and your contributions are quite appreciated. Getting Mural ------------- You can grab Mural from https://github.com/jwodicka/Mural Running Mural ------------- Right now, the only way to run Mural is to build it yourself. Mural is developed using the Mono runtime - it may work in Visual Studio, but the developers aren't promising anything on that build path. If you're interested in letting us know how we're doing on that front, get in touch! You will need: * A recent version of Mono as of July 2011. *TODO: What version are we actually dependent on?* * A copy of the MonoDevelop IDE - version 2.6 required. A Very Simple User Manual ------------------------- When you start up Mural, it will listen for a telnet connection on port 8888. If you connect to Mural, you can issue commands against that connection. Right now, Mural understands the following commands when it is not acting as a proxy: * connect _account_ _character_@_service_ _password_ Connects a session to a service (also called a "world" in parts of the codebase). _account_ must be an account known to the system. _password_ is the password for _account_ (Passwords are per-account, **not** per-character) _service_ is the name of a known service that Mural can connect to. Services must be known to Mural - to avoid having Mural act as an open proxy, Mural installations should only forward connections to servers and ports known to have MU*-style services running on them. _character_ is the name of a known character on _service_. This is **not** necessarily the name the remote service knows for the character; but is instead used to route connections internal to Mural. If a connection is established to a character and service which Mural is already connected to, the two connections will be merged, and a second connection to the service will not be established. This is how connection-proxying works. * quit Disconnects from Mural.
Character ownership should function independent of implementation.
CharacterOwnershipIndex should be refactored into an interface for objects that can provide ownership data, and an initial implementation that can read such data from a simple format - initially, SQLite.
Mural emits a lot of debug output to the console. This should be replaced with a sensible, configurable logging class - either something good that we can just pull in, or something simple we build ourselves.
An admin console is the first service that lives entirely within Mural.
Users with access to the admin console can:
Other features the console wants? Syntax thoughts on the console? This is the explicit administrative interface to the system, so anything we find ourselves wanting to do to a running Mural instance is fair game to go in here.
This also adds, implicitly, our first notion of a privileged admin user class: users who have access to a character on console are capable of using the console powers.
A number of the objects in the system currently construct other objects to help - particularly, connections construct parts of the message pipeline, and things that need data construct the relevant providers to go out and get it from the DB.
While much of the code is already abstracted into interfaces with concrete instances, and does a decent job with manual dependency injection, we need to improve the dependency injection, and wrap it all in an IoC container to give us a point from which to manage it.
I'm currently looking at Ninject - http://ninject.org/ - as a way of doing that, and some TODOs littering the code make reference to it - but if you have an argument for another IoC container, we can have that discussion.
Right now, Mural attempts to autodetect the current network configuration in a fragile way. It should instead be configured explicitly by reading from a config file.
Right now, we can connect to remote services that use telnet-over-SSL (FurryMuck has been our test case for this), but it's not currently possible for an end-user to connect with an SSLed connection.
We need to enable SSL for incoming connections; telnet has no security against packet-sniffing, and it would be more appropriate to pass credentials in a secure fashion whenever possible.
I accidentally connected an SSLSession to the non-SSLed version of the remote, and discovered that the system ends up in a badly inconsistent state. Didn't investigate much, but it's clearly a problem.
Unacceptable results are:
Ideally, we want to give a hint to the user (and the admins, via the log) of what happened here. This might happen because of a remote-side failure, but it it's recurrent for a given server, it's likely that whatever is on the other end just isn't talking SSL.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.