Demon
From Botdom Wiki
| Developer(s): | plaguethenet |
| Programming language: | C# |
| Development state: | Pre-Alpha |
| Source model: | Not yet released |
| Last stable release: | Not yet released (0.0.1-private) |
| Last preview release: | None |
| License type: | None yet
|
Demon (previously Crystal) is a server based off of the dAmn protocol coded by plaguethenet. Crystal changed its name to Demon after a complete code scrap and rewrite. Find info on Demon on #Serverdom on dAmn.
Contents |
How to access
- Official Client
- The official Demon client (v0.1a) is available at http://download.botdom.com/qxbc9/DemonClient.zip.
- Other methods
- Web based user creation/authentication
- Use the following page: [link] to create a user and retrieve an authtoken.
- Bot-based user authentication
- Adopt the following PHP script to your bot's programming model. (Programmed for Dante.)
- http://download.botdom.com/i48ax/crystalgetAuthToken.php
- Command-line based user creation/authentication
- Use the following command line program to create/get an authtoken:
- http://download.botdom.com/yd5sz/DemonLoginTool.zip
- Web based user creation/authentication
Features
- Quick processing w/spooling and threading.
- User creation w/password -> authtoken generation
- Join/part handling
- Connection handling
- Most dAmn commands handled (partial /admin support)
- Partial /admin support (all except user-related commands)
- Chatroom
- Multiple chatrooms
- Supports msg, npmsg, and action main(note: main is not the only supported channel).
- Title/topic support
- Full privclass support
- Partial HTML support
Commands Available
- /join and /part
- /topic and /title
- /kick
- /kill for MN@
- /promote and /demote
- /admin create, /admin remove, /admin update, /admin show privclass
Changelog
30 December 07 (Unreleased)
- New Features
- Various undocumented backend changes for speed.
- Spooling replaces threading for packet parsing.
- Fixes
- HTML exploit in kick, kill, and usernames fixed.
23 December 07 (Unreleased)
- New Features
- More HTML tags supported.
- Admin commands updated.
- Fixes
- Ported to .NET 3.5.
18 December 07 (Unreleased)
- New Features
- Login page available at http://plaguethenet.dyndns.org/
- Partial tablump support (code and bcode are partially broken but work)
17 December 07 (Unreleased)
- New Features
- Privclass permissions fully implemented.
- Title/topic support re-implemented.
- GPC's re-implemented.
- Privclasses fully re-implemented.
- /promote, /demote, /kill, /kick support added.
16 December 07 (Unreleased)
- Changes
- Code scrapped and rewritten.
- New features
- Authtoken system implemented. Actual authentication protocols in use.
14 December 07 (Unreleased)
- Fixes
- Fixed the Socket Error bug when getting disconnected. The correct message is now correctly displayed.
- Fixed an issue where privclasses were not being saved properly with the room data.
- New features
- Privclasses partially implemented.
- /admin create and /admin remove implemented.
- Added /kick.
- Tightened security for privclasses. (Considering re-write now that basics are worked out.)
13 December 07 (Unreleased)
- Fixes
- HTML Security exploit fixed.
- Fixed the title/topic bug when initially joining a room.
- New features
- Crystal specific admin commands created (/admin gpc username gpc, /admin reload)
- GPC's Partially implemented.
Notes
Deviations from the official dAmn protocol
- Handshake sends a parameter: server=servername and version (For clients to be able to detect if they are connected to Demon)
- Demon does not send an error if you use a channel other than main for msg/npmsg/action, It instead sends out a recv packet with the new channel (IE: msg background)
Login System Protocol
- The login server is running on port 3901.
- The protocol is VERY Similar to dAmn's protocol.
- Login packet:
login username password=password
- Create packet:
create username password=password
- Login response packet:
login username e=ok|failure reason pk=pk (If e=ok)
- Create response packet:
create username e=ok|failed
- Note: The login system will not give an explicit error for security purposes.

