CGI:IRC
Encyclopedia
CGI:IRC is a CGI
program written in Perl
that allows access to IRC via a web browser
. It is designed to be flexible and has many uses such as an IRC gateway for an IRC network, a chat-room for a website or to access IRC when stuck behind a restrictive firewall
.
CGI:IRC will work in most browsers, including text based browsers such as Links
. To make full use of most of the available features, a newer version is essential; older browsers will work, but CGI:IRC will use a single windowed interface instead and the names list will not update as quickly.
and DHTML enabled), CGI:IRC will present a tabbed interface similar to GUI IRC clients. Tab completion and keyboard shortcuts are available, for example ALT+window-number jumps to a particular window.
Some common IRC client features are unavailable, such as scripting, DCC chat, and file transfers, due to the webserver-based nature of CGI:IRC.
What was a seemingly inconsequential implementation of the IRC protocol is increasingly being seen as a means to evade bans in IRC chat rooms. Several IRC servers have, as a consequence, developed an intolerance for CGI connections. Compounding this development is the fact that there does not exist a means to effectively distinguish between a CGI connection and a real IRC connection.
Some IRC servers may display the true hostname of the connecting client, most will only show the hostname of the CGI:IRC proxy. However, this does not offer much in the way of privacy, since the IP address of the user is hex encoded and included in the ident and/or real name. A simple perl script to decode the IP is included with CGI:IRC. Depending on how CGI:IRC is configured, it may also return the users true IP address (in addition to the HTTP headers) in response to a CTCP USERINFO request.
, and uses Unix
domain sockets. It uses a special HTTP streaming connection while communicating with the user's web browser; this reduces network usage because the user's webpage is not continually being redrawn. Early versions of some web browsers such as Apple Safari
had problems with streaming connections.
CGI:IRC can be configured to allow access to any server and channel, or restricted to single instances. One limitation of CGI:IRC with respect to some IRC servers is "Because CGI:IRC acts as a client, connections from it appear to be coming from the web server's address. This allows it to get past firewalls, but, unfortunately, if several clients are connecting from the same address, some IRC servers will refuse to accept additional connections beyond a certain limit."
Common Gateway Interface
The Common Gateway Interface is a standard method for web servers software to delegate the generation of web pages to executable files...
program written in Perl
Perl
Perl is a high-level, general-purpose, interpreted, dynamic programming language. Perl was originally developed by Larry Wall in 1987 as a general-purpose Unix scripting language to make report processing easier. Since then, it has undergone many changes and revisions and become widely popular...
that allows access to IRC via a web browser
Web browser
A web browser is a software application for retrieving, presenting, and traversing information resources on the World Wide Web. An information resource is identified by a Uniform Resource Identifier and may be a web page, image, video, or other piece of content...
. It is designed to be flexible and has many uses such as an IRC gateway for an IRC network, a chat-room for a website or to access IRC when stuck behind a restrictive firewall
Firewall (computing)
A firewall is a device or set of devices designed to permit or deny network transmissions based upon a set of rules and is frequently used to protect networks from unauthorized access while permitting legitimate communications to pass....
.
CGI:IRC will work in most browsers, including text based browsers such as Links
Links (web browser)
Links is an open source text and graphic web browser with a pull-down menu system. It renders complex pages, has partial HTML 4.0 support , supports color and monochrome terminals and allows horizontal scrolling.It is oriented toward visual users who want to retain many typical elements of...
. To make full use of most of the available features, a newer version is essential; older browsers will work, but CGI:IRC will use a single windowed interface instead and the names list will not update as quickly.
Main features
With a modern browser (with JavascriptJavaScript
JavaScript is a prototype-based scripting language that is dynamic, weakly typed and has first-class functions. It is a multi-paradigm language, supporting object-oriented, imperative, and functional programming styles....
and DHTML enabled), CGI:IRC will present a tabbed interface similar to GUI IRC clients. Tab completion and keyboard shortcuts are available, for example ALT+window-number jumps to a particular window.
Some common IRC client features are unavailable, such as scripting, DCC chat, and file transfers, due to the webserver-based nature of CGI:IRC.
Use of CGI:IRC
CGI:IRC is used by many IRC networks to provide a way for users to chat on their network from within their web browser. When used in this way, most of the functions are disabled for security reasons, i.e. the user is unable to connect to a different server, sometimes the channels that the user may join are restricted. Due to the nature of CGI:IRC, users are unable to use DCC.What was a seemingly inconsequential implementation of the IRC protocol is increasingly being seen as a means to evade bans in IRC chat rooms. Several IRC servers have, as a consequence, developed an intolerance for CGI connections. Compounding this development is the fact that there does not exist a means to effectively distinguish between a CGI connection and a real IRC connection.
Some IRC servers may display the true hostname of the connecting client, most will only show the hostname of the CGI:IRC proxy. However, this does not offer much in the way of privacy, since the IP address of the user is hex encoded and included in the ident and/or real name. A simple perl script to decode the IP is included with CGI:IRC. Depending on how CGI:IRC is configured, it may also return the users true IP address (in addition to the HTTP headers) in response to a CTCP USERINFO request.
Abuse of CGI:IRC
Unfortunately, just like other open proxies, open installations of CGI:IRC, which do not restrict the server used, can also be abused. Usually CGI:IRC is abused to create many clones, which are used to flood an IRC network or a particular user. In response, many networks have started to ban CGI:IRC clients except those which originate from their own CGI:IRC proxy (if they have one).Server side
CGI:IRC runs on a webserver such as Apache configured to run PerlPerl
Perl is a high-level, general-purpose, interpreted, dynamic programming language. Perl was originally developed by Larry Wall in 1987 as a general-purpose Unix scripting language to make report processing easier. Since then, it has undergone many changes and revisions and become widely popular...
, and uses Unix
Unix
Unix is a multitasking, multi-user computer operating system originally developed in 1969 by a group of AT&T employees at Bell Labs, including Ken Thompson, Dennis Ritchie, Brian Kernighan, Douglas McIlroy, and Joe Ossanna...
domain sockets. It uses a special HTTP streaming connection while communicating with the user's web browser; this reduces network usage because the user's webpage is not continually being redrawn. Early versions of some web browsers such as Apple Safari
Safari (web browser)
Safari is a web browser developed by Apple Inc. and included with the Mac OS X and iOS operating systems. First released as a public beta on January 7, 2003 on the company's Mac OS X operating system, it became Apple's default browser beginning with Mac OS X v10.3 "Panther". Safari is also the...
had problems with streaming connections.
CGI:IRC can be configured to allow access to any server and channel, or restricted to single instances. One limitation of CGI:IRC with respect to some IRC servers is "Because CGI:IRC acts as a client, connections from it appear to be coming from the web server's address. This allows it to get past firewalls, but, unfortunately, if several clients are connecting from the same address, some IRC servers will refuse to accept additional connections beyond a certain limit."