GithubHelp home page GithubHelp logo

proof-of-concept / ircd.js Goto Github PK

View Code? Open in Web Editor NEW

This project forked from alexyoung/ircd.js

0.0 2.0 0.0 289 KB

A Node ircd (IRC daemon)

License: GNU General Public License v3.0

JavaScript 99.90% Makefile 0.10%

ircd.js's Introduction

About

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

Documentation

Install with npm install ircdjs.

Set up configuration in /etc/ircdjs/config.json.

Contributions

License (GPL)

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/.

ircd.js's People

Contributors

sespindola avatar niklasf avatar 7bp avatar overra avatar jazzychad avatar coolstar avatar jus101 avatar matejkramny avatar maxime-gaudron avatar neiltron avatar simonwex avatar eirikb avatar

Watchers

 avatar James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.