Giter VIP home page Giter VIP logo

ft_irc's Introduction

ft_irc

Internet Relay Chat


About the project

This project is about creating your own IRC server. You will use an actual IRC client to connect to your server and test it. Internet is ruled by solid standards protocols that allow connected computers to interact with each other. It’s always a good thing to know.

Usage

Requirements

The function is written in C language and thus needs the c++ compiler and some standard C, C++ libraries to run.

First install a client, here we'll use irssi since it is the one we chose to do the project with :

# using apt to install
sudo apt install irssi

# using brew to install
brew install irssi

Instructions

1. Compiling the program

To compile, go to the program path and run:

make

2. Executing the program

To launch the server, run:

./ircserv [port number] [password]

Behaviors

Connect to the server with a Netcat

nc localhost [port]

Connect to the server with a IRSSI

irssi
/connect localhost [port] [password]

Commands

Auth Commands

  • PASS: <password>
    The password is used to connect to the server
  • NICK: <nickname>
    The nickname is used to identify you on the server
  • USER: <username> <hostname> <servername> <realname>
    The username is used to identify you on the server

Other Commands

  • JOIN: <#channel>
    The channel is used to join a channel
  • PART: <#channel>
    The channel is used to leave a channel
  • PRIVMSG: <nickname> <message>
    The nickname is used to send a private message to a user
  • PRIVMSG: <#channel> <message>
    The channel is used to send a message to a channel
  • QUIT: <message>
    The message is used to leave the server
  • PING: <server>
    The server is used to check the connection with the server
  • KICK: <#channel> <nickname>
    The channel is used to kick a user from a channel
  • MODE: <#channel> <mode>
    The channel is used to change the mode of a channel
    • Modes:
      • o : Give operator status to a user
      • l : Only operators can change the channel limit
      • t : Only operators can change the topic
      • k : Set a password to join the channel
      • i : Set the channel to invite only
  • TOPIC: <#channel> <topic>
    The channel is used to change the topic of a channel
  • INVITE: <#channel> <nickname>
    The channel is used to invite a user to a channel
  • TIME:
    The time is used to check the time of the server
  • VERSION:
    The version is used to check the version of the server
  • HELP: <command>

For Bonus

  • PRIVMSG: bot announce <message>
    The bot is used to send a message to all users in server
  • PRIVMSG: bot <channel list | channel join | channel invite>
    The bot is used to see the list of channels, joining channel, or invited channel
  • PRIVMSG: bot sendfile <nickname> <filename_path>
    The bot is used to send a file to a user
  • PRIVMSG: bot getfile <nickname> <filename_path>
    The bot is used to get a file from a user

ft_irc's People

Contributors

shmorish avatar ishi-eenn avatar pinohikari 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.