A framework for building modular, plugin-driven server software, BBSes and MUDs.
It also includes a purpose built TUI window manager (optional) that plugins can interact with, allowing for a consistent and easy-to-use means of handling concurrent IO to and from client terminals.
Feel free to check out the wiki.
My end goal with Project Accela is to utilize the framework to create a sandboxed virtual network "game" for hackers to play around in, explore and exploit. I want it to be social, highly strategic and to reward those that think out of the box. It will look and behave somewhat similarly to a BBS or a MUD.
The plugins that will be used to create said environment will be publicly available along with the rest of the project (though probably in a separate repository). I have plenty of plans for this "game", but that is outside the scope of this README.
- The full code for the server core and Prismatic will be uploaded at a later date, as it's not quite ready yet and I'm dissatisfied with the current code quality.
- I plan on adding support for more protocols than just telnet, as well as implementing encryption for all protocols. However, as I'm currently only using it for local testing, unencrypted telnet is more than sufficient.
- JetBrains annotations (@NotNull & @Nullable)
- SnakeYAML
TBD.
TBD.
Plugins are loadable modules that come in the form of .jar
files. They provide additional functionality on top of the server core.
Plugins can be loaded into the server at any point during runtime
and will run in a sandboxed environment where they are only allowed access to certain parts of the framework.
The server core provides the essential frameworks and functionality behind the project. Including, but not limited to (keep in mind some of this is not implemented yet):
- Plugin framework.
- Service scheduling.
- Event-based cross-plugin communication separated by channels.
- Sandbox security features, including a permissions system for limiting plugin access.
- Basic user data and per-user permissions management.
- Standard classes for creating Session Providers that add support for network communication through various client-server protocols (such as Telnet). This is so that any future protocols can be easily implemented and interacted with in a standardized fashion.
- Logging.
Prismatic lets multiple plugins simultaneously provide terminal-based I/O to and from users, without the plugins interfering with each other.
It lets you build an interactive user interface similar to how one would do for a GUI program. This includes buttons, dropdown menus, input boxes, etc.
Repo link: Prismatic Window Manager
A plugin that adds support for communication through the telnet protocol. It provides users a means of connecting to the system and interacting with it.
The telnet server supports proper telnet negotiation, and can intelligently negotiate for features that the server and client both support or have in common. The plugin can also be configured to listen on multiple ports if needed.
Repo link: Telnet Provider
Thanks to:
- SqZ / Ozz Nixon - My main source of advice and insights.