::::::::::.. .,-::::::::::::-. ....:::::: .::::::. ;;;;;;;``;;;; ,;;;'````' ;;, `';, ;;;;;;;;;````;;;` ` [[[ [[[,/[[[' [[[ `[[ [[ ''` `[[. '[==/[[[[, $$$ $$$$$$c $$$ $$, $$ ,,, `$$ ''' $ 888 888b "88bo,`88bo,__,o, 888_,o8P'd8b888boood88 88b dP MMM MMMM "W" "YUMMMMMP"MMMMP"` YMP"MMMMMMMM" "YMmMY" A Node.JS IRC Server ircd.js
Twitter: @alex_young.
- [2010-12-27] More work on server links (broadcasting of SERVER commands)
- [2010-12-11] Now installable from npm, server now checks for config in /etc/ircdjs/config.json
- [2010-12-11] First steps towards linked servers, major restructuring
- [2010-12-04] Added user mode w and WALLOPS
- [2010-12-01] Split code into channel.js, user.js, server.js
- [2010-11-28] Added KICK
- [2010-11-23] Added OPER command that uses sha1 passwords in the config file
- [2010-11-23] Added invisible user mode and user support for WHO command
- [2010-11-19] Added AWAY
- [2010-11-18] Added VERSION, TIME, WHOWAS
- [2010-11-16] Added +i and INVITE
- [2010-11-14] Added +k (channel key)
- [2010-11-12] Added +l (user limit)
- [2010-11-11] Added voice/devoice support, and removing channel modes on part
- [2010-11-07] Added ban support, commands are no-longer case sensitive
I’m implementing rfc1459/rfc2812 in Node.
The server will allow clients to connect, join channels, change topics; basic stuff.
Done:
- 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:
- 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, MOTD, LINKS, TRACE, ADMIN, INFO
- More tests (I only wrote basic tests to get started)
- Log files and logging options
- Local ops (+O)
- Stats command
- Services
- Add command line arguments for changing configuration path
Install with npm install ircdjs
.
Set up configuration in /etc/ircdjs/config.json
.
- niklasf
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/.