SQUISH is a lightweight IRC server implemented in Go. It provides basic IRC functionality with support for nickname registration, channel management, and various IRC commands.
- Basic IRC protocol implementation
- Nickname registration and authentication (NickServ)
- Channel registration and management (ChanServ)
- Support for standard IRC commands
- SQLite database for persistent storage
- Go 1.16 or higher
- SQLite3
-
Clone the repository:
git clone https://github.com/donuts-are-good/squish.git
-
Navigate to the project directory:
cd squish
-
Install dependencies:
go mod tidy
-
Build the server:
go build
-
Start the server:
./squish
The server will start on port 6667 by default.
-
Connect to the server using an IRC client of your choice.
Use any standard IRC client to connect to the SQUISH server. Here are some examples:
- Open irssi
- Connect to the server:
/connect localhost 6667
- Set your nickname:
/nick YourNickname
- Register your nickname:
/msg NickServ REGISTER YourPassword your@email.com
- Open HexChat
- Add a new network:
- Network name: SQUISH
- Server: localhost/6667
- Connect to the server
- Register your nickname:
/msg NickServ REGISTER YourPassword your@email.com
- NICK: Change nickname
- USER: Set user information
- JOIN: Join channels
- PART: Leave channels
- PRIVMSG: Send messages
- QUIT: Disconnect from server
- LIST: List channels
- NAMES: List users in a channel
- TOPIC: View or set channel topic
- MODE: Set or remove channel/user modes
- WHO: List information about users
- WHOIS: Get detailed user information
- KICK: Kick a user from a channel
- BAN: Ban a user from a channel
- UNBAN: Remove a ban from a channel
- BANLIST: List all bans in a channel
- REGISTER: Register a nickname
- IDENTIFY: Identify with a registered nickname
- SET PASSWORD: Change password
- INFO: Get nickname information
- GHOST: Disconnect an old session
- REGISTER: Register a channel
- OP: Give operator status
- DEOP: Remove operator status
- SET: Change channel settings
- INFO: Get channel information
- +i: Set user as invisible
- +n: No external messages (only channel members can send messages)
- +t: Only channel operators can change the topic
- +m: Moderated channel (only voiced users and operators can speak)
- +i: Invite-only channel
- +k : Set a channel key (password)
- +l : Set a user limit for the channel
- +b : Set a ban on the channel
- +o : Give channel operator status to a user
- +v : Give voice status to a user
The server uses a SQLite database (irc.db
) for persistent storage. The database is created automatically on first run.
Contributions are welcome! Please feel free to submit a Pull Request.
This project is licensed under the MIT License.