Further implementation building up on https://github.com/alexyoung/ircd.js but enhancing the features. This might not always comply to RFC 1459 / RFC 2812 for Node.js.
Enhanced features:
- Channel mode +d
delayed join: As long as the channel mode +d is set on a channel any new join will not be shown. Removing this channel mode will cause all hidden users to appear. - Channel mode +a
automatic delayed join: After the 20th user the server automatically sets +d on the channel to prevent flooding - User mode +x
masked: To mask a host and maintain anonymity a user is free to use usermode +x. Once usermode +x is applied it cannot be removed. - Bitcoin address
Upon join a user can provide his bitcoin address as server password. It will be verified (syntax and validity of the address itself) and added to the users whois information. - Forbidden channels (see config.json)
Disallows joining forbidden channel (e.g. Anti-Warez) - Oper command /broadcast
Sends a message to all connected users - Oper command /kill
An oper can force an instant disconnect on a client by user /kill - Oper overrides
To allow management of channels an oper has more rights even the rights are not displayed in a channel. For example an oper can op himself in a foreign channel. - Oper channel #oper (see config.json)
There should always be a place where no one else can be. E.g. for a irc network management. Only opers are allowed to join this channel. - Simple Service X (see config.json)
For debugging and kind of maintaining the service X posts the debug messages in the channel #oper if the debug flag is set to true (see config.json). The service is supposed to be an almighty service that cannot be kicked, killed or harmed in any other way.
The server will allow clients to connect, join channels, change topics; basic stuff.
Done:
- PASS (connection password)
- PING/PONG
- PRIVMSG
- MODE
- JOIN
- TOPIC
- NAMES
- LIST
- INVITE
- WHOWAS
- TIME
- VERSION
- AWAY
- WHO
- OPER
- KICK
- WALLOP
- CONNECT
- Connection garbage like MOTD
- Basic data validation
- Simple JSON config file
- Channel modes: o, p, s, t, n, m, i, l, b, v, k
- User modes: i, w, o
Planned:
- Services
- Bring back server links
- Server-to-server NICK messages when nicks are changed or new clients join
- Server-to-server messages for JOIN, NJOIN, MODE, PRIVSG and NOTICE
- SQUIT and QUIT for links
- Server to server communication
- More basic commands: NOTICE, LINKS, TRACE, ADMIN, INFO
- Log files and logging options
- Local ops (+O)
- Stats command
Install with npm install ircdjs
.
Set up configuration in /etc/ircdjs/config.json
.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see http://www.gnu.org/licenses/.