https://github.com/mushigarou/irc-server
This IRC server features private, group chat and file transfert
https://github.com/mushigarou/irc-server
cpp98 irc-server oop socket-programming x-macros
Last synced: 11 months ago
JSON representation
This IRC server features private, group chat and file transfert
- Host: GitHub
- URL: https://github.com/mushigarou/irc-server
- Owner: Mushigarou
- License: mit
- Created: 2023-12-30T00:53:30.000Z (about 2 years ago)
- Default Branch: main
- Last Pushed: 2024-07-15T06:28:55.000Z (over 1 year ago)
- Last Synced: 2025-04-03T09:12:22.383Z (12 months ago)
- Topics: cpp98, irc-server, oop, socket-programming, x-macros
- Language: C++
- Homepage:
- Size: 1.77 MB
- Stars: 2
- Watchers: 1
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# IRC
Our Internet Relay Chat (IRC) server works prefectly with clients such as LimeChat (User friendly graphical interface) or `nc` command.
The server features :
- private messages (1 to 1)
- channels (group chat) / operators / priviligies
- file transfert
This server supports the following commands :
- SENDFILE
- GETFILE
- NICK
- PASS_USER
- PRVMSG
- PONG
- IRCBOT
- DATE
- JOKE
- WHOAMI
- JOIN
- MODE
- KICK
- TOPIC
- INVITE
- QUIT
- PART
The main source for implementing these commands is [Modern IRC Client Protocol](https://modern.ircdocs.horse/)
# Usage
```bash
# Compile files
$> make
# run the server
$> ./ircserv
# example
$> ./ircserv localhost 9999 0000
```
```bash
# Compile file
$> make build=bot
# run the bot
$> ./a.out
# example
$> ./a.out localhost 9999 0000
```
```bash
# connect a client using nc command
$> nc -c
PASS
NICK
USER 0 *
# example
$> nc -c localhost 9999 0000
PASS 0000
NICK Tommy
USER Homy 0 * lony
```
```bash
# Cleanning
$> make clean
$> make flclean
$> make fcleanbot
$> make clean
# Clean and recompile
$> make re
```
## Sources :
[what is socket programming ?](https://www.scaler.com/topics/socket-programming-in-c/)
[Command Reference](https://dd.ircdocs.horse/refs/commands/)
[Modern IRC Client Protocol](https://modern.ircdocs.horse/)
[Internet Relay Chat Protocol 1459](https://datatracker.ietf.org/doc/html/rfc1459)
[Internet Relay Chat: Client Protocol 2812](https://datatracker.ietf.org/doc/html/rfc2812)
[RFC 1459 | Message format in 'pseudo' BNF](https://www.rfcreader.com/#rfc1459)
[IRC Modes](https://modern.ircdocs.horse/#modes)
## Other Sources :
[The Pitchfork Layout](https://api.csswg.org/bikeshed/?force=1&url=https://raw.githubusercontent.com/vector-of-bool/pitchfork/spec/data/spec.bs#tld.src) a convention for laying out source, build, and resource files in a filesystem to aide in uniformity, tooling, understandability, and compartmentalization.