Coder Social home page Coder Social logo

ft_irc's People

Contributors

i99dev avatar isaad18 avatar saxsori avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar

Forkers

saxsori isaad18

ft_irc's Issues

Connecting a real IRC client to our server

I have connected our server to irssi client. I tried to send the first message (the welcome message) to establish the connection and to be able to receive the commands from the client. I think now we need to move to the next step which is parsing these messages and execute: (the commands and the chatting processes).

The welcome message was:
:ft_irc 001 sasori :Welcome to the Internet Relay Network [email protected]\r\n

Screen.Recording.2022-11-20.at.7.49.01.AM.mov

Optimize Mode Parameter

MODE &oulu +b *!*@*.edu +e *!*@*.bu.edu
MODE #bu +be *!*@*.edu *!*@*.bu.edu

  • The mode parameters should be handled in these two forms .. the mode might not be always the second parameter.

wildcards strings

Good news, wildcards support * and ?

All methods come under the Message class

If you want to check if Messages have wildcard only, you can call _message->getMask().size() if > 0, that means wildcard function implementation

The type like * and ? if you want to check only call _message->getType()
for more understanding, you can check to commend Privmsg. There is an example if the user use

/msg *dev hi all --> will send message to all username end with dev ex: i99dev

There is a very important method call bool match_wildCard(std::string const &str);
use to get what is value match and use it also Privmsg good example any questions please let me know

improvement clientReply

I want to do async-promise function to help us handle many requests coming from clients or server

any one want read more about Promis Link

MODE command

This command consists of two different parts: user mode and channel mode.

feat: Connection 'Liveness'

5.1 Connection 'Liveness'

To detect when a connection has died or become unresponsive, the
server MUST poll each of its connections. The PING command (See "IRC
Client Protocol" [IRC-CLIENT]) is used if the server doesn't get a
response from its peer in a given amount of time.

If a connection doesn't respond in time, its connection is closed
using the appropriate procedures.

Client Status

  • The client status should be checked using the PING message.
  • A timer needs to be set in the PING command to check the time between each PING message.
  • If the time exceeded and the client didn't send a PING message .. the client should be set as offline.
  • If the client sends QUIT .. the client should be set as offline.
  • The client info should be deleted from the server if the fd is closed.
  • If the client was back alive again .. in the "authentication" .. the status of the client should be checked .. if the client was offline then the connection should be accepted .. and the client should be online.

new connect and nickname

try to fix issue when a new user tries to connect with the server same username

  • new user with _.
  • keep connecting with a user when he lost connect by accident

create_socket leak check

There might be leaks when you exit the program in terms of the error in the function ft::Server::create_socket .. please make sure to free everything in the class before exiting

fix some error and response server messag

In this photo, you can see what I mean by message error
image

The solution will be :

  • add a new command like CAP, but it will be empty with no response.
  • fix message responses by clear from char '/r' last every
  • add format standard for some responses on Replies.hpp header file

NICK

if you change your nick name it should send a message to all channels you have joined that you changed your nick name from ... to ...

improvement Nick Command

there is a bug with the nickname command. I will try to fix it by putting a condition to reject any nickname, including a special character

Channel Operator

This is the list of the commands that are only allowed for the channel operators:

  • INVITE - Invite a client to an invite-only channel (mode +i)
  • TOPIC - Change the channel topic is allowed to all the member but if the channel mode was (+t) only operators can change it
  • KICK - Forced removal of a user from a channel
  • PRIVMSG - The clients can't send the message if the channel mode was (+m) unless their mode was (+v) or if they were operators
  • MODE - Change the channel's mode, as well as members' privileges

PART

I am working on the command part

Wildcards in Channel Operator

  • Wildcard tools and mask class or structure is usable to create the list of masks
  • Create the list of banned masks .. invited masks .. exception masks in the channel
  • Implement some function to access and check the mask list in the channel
  • The masks lists in the channel are checked before adding clients in the channel in JOIN and INVITE commands

parsing message

limechat, weechat, textualchat

work under branch name fix_server_respose

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.