UnrealIRCd supports the WEBIRC / CGIIRC protocol. This allows users to use a browser rather than a (real) IRC client and still make them show up on IRC with their real IP.
How it works
Take this example:
User (IP: 184.108.40.206) <--browser connection--> WebIRC software (IP: 220.127.116.11) <--IRC connection--> UnrealIRCd (IP: 18.104.22.168)
The user only needs a web browser, nothing else. Normally any Firefox, Google Chrome, Internet Explorer or Safari version will do.
You need to install a web irc client. Which one you choose is up to you. This could be installed on the same machine as the IRC Server is on, but it's also perfectly fine if it's installed on a different machine.
Your Web IRC may already work, but all your users will show up with the same IP when they come online. Why? Take a look at the example at the beginning: all IRC connections originate from your WebIRC machine (22.214.171.124 in our example), so all your users will show up with the IP 126.96.36.199. UnrealIRCd has no way of knowing that the actual user 'behind it' actually has IP 188.8.131.52.
This is a real problem if you ban a user from a channel (+b *@184.108.40.206), or /KLINE *@220.127.116.11, as it will affect all the (many) clients that use the WebIRC software. But there's a solution, see next.
This is where the WEBIRC protocol comes to the rescue. With WEBIRC you allow a specific IP (your WebIRC machine) with a specific password to "spoof" the host, that is: to change/set the IP of the user on IRC.
- On UnrealIRCd: you create a WebIRC block where you specify your webirc machine IP and a secret password
- In the WebIRC software: configure it to use WEBIRC and specify the same password.
Then, when all is good your clients will no longer end up with the WebIRC machine's IP but with their real IP instead (18.104.22.168 in our example).
Note that spoofing of the IP is really something powerful, so you should only add webirc blocks for machines you trust.