Giter Club home page Giter Club logo

42_irc's Introduction

About The Project

It is a group project about creating your own IRC server. We use an actual IRC client Irssi v1.4.4 to connect to our server and test it.

Internet Relay Chat or IRC is a text-based communication protocol on the Internet. It offers real-time messaging that can be either public or private. Users can exchange direct messages and join group channels.

Subject requirements

  • Your code must comply with the C++ 98 standard. Then, it should still compile if you add the flag -std=c++98.
  • The server must be capable of handling multiple clients at the same time and never hang.
  • Forking is not allowed. All I/O operations must be non-blocking.
  • Communication between client and server has to be done via TCP/IP (v4 or v6).
  • Using your reference client with your server must be similar to using it with any official IRC server. However, you only have to implement the following features:
    • You must be able to authenticate, set a nickname, a username, join a channel, send and receive private messages using your reference client.
    • All the messages sent from one client to a channel have to be forwarded to every other client that joined the channel.
    • You must have operators and regular users.
    • Then, you have to implement the commands that are specific to channel operators:
      • KICK - Eject a client from the channel
      • INVITE - Invite a client to a channel
      • TOPIC - Change or view the channel topic
      • MODE - Change the channel’s mode:
        • i: Set/remove Invite-only channel
        • t: Set/remove the restrictions of the TOPIC command to channel operators
        • k: Set/remove the channel key (password)
        • o: Give/take channel operator privilege
        • l: Set/remove the user limit to channel

Usage

To start server:

make
./irc <port> <pass>

For client:

irssi
/connect -nocap -notls localhost <port>
/quote PASS <server pass>
/join <channel name>

irssi example

Useful links

  1. https://modern.ircdocs.horse/
  2. https://irssi.org/
  3. http://chi.cs.uchicago.edu/chirc/irc_examples.html
  4. https://ircgod.com/

42_irc's People

Contributors

wildfrenzy avatar yyber avatar

Watchers

 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.