CGI:IRC

Last updated
CGI:IRC
CGIIRC screenshot.png
Developer(s) David Leadbeater
Initial releaseSeptember 9, 2000 (2000-09-09)
Stable release 0.5.11 (September 24, 2013;5 years ago (2013-09-24)) [±]
Repository sourceforge.net/projects/cgiirc/
Written in Perl
Type IRC client
License GNU General Public License
Website cgiirc.org

CGI:IRC is a CGI program written in Perl that allows access to IRC via a web browser. [1] 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. [2]

In computing, Common Gateway Interface (CGI) offers a standard protocol for web servers to execute programs that execute like console applications running on a server that generates web pages dynamically. Such programs are known as CGI scripts or simply as CGIs. The specifics of how the script is executed by the server are determined by the server. In the common case, a CGI script executes at the time a request is made and generates HTML.

Perl interpreted programming language

Perl is a family of two high-level, general-purpose, interpreted, dynamic programming languages, Perl 5 and Perl 6.

Web browser software application for retrieving, presenting and traversing information resources on the World Wide Web

A web browser is a software application for accessing information on the World Wide Web. Each individual web page, image, and video is identified by a distinct Uniform Resource Locator (URL), enabling browsers to retrieve and display them on the user's device.

Contents

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.

Links (web browser) 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.

Main features

With a modern browser (with Javascript and DHTML enabled), [2] 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.

Command-line completion is a common feature of command line interpreters, in which the program automatically fills in partially typed commands.

Some common IRC client features are unavailable, such as scripting, DCC chat, and file transfers, due to the webserver-based nature of CGI:IRC. [2]

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. [1]

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 Perl, 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. [2] Early versions of some web browsers such as Apple Safari had problems with streaming connections. [2]

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." [2]

See also

Related Research Articles

XChat irc client

XChat is an Internet Relay Chat client. It has a choice of a tabbed document interface or tree interface, support for multiple servers, and numerous configuration options. Both command-line and graphical versions were available.

Internet Relay Chat (IRC) is an application layer protocol that facilitates communication in the form of text. The chat process works on a client/server networking model. IRC clients are computer programs that users can install on their system or web based applications running either locally in the browser or on 3rd party server. These clients communicate with chat servers to transfer messages to other clients. IRC is mainly designed for group communication in discussion forums, called channels, but also allows one-on-one communication via private messages as well as chat and data transfer, including file sharing.

Proxy server server that acts as an intermediate between a client and its destination server

In computer networks, a proxy server is a server that acts as an intermediary for requests from clients seeking resources from other servers. A client connects to the proxy server, requesting some service, such as a file, connection, web page, or other resource available from a different server and the proxy server evaluates the request as a way to simplify and control its complexity. Proxies were invented to add structure and encapsulation to distributed systems.

ChatZilla Firefox IRC client addon

ChatZilla is an IRC client for Mozilla-based browsers such as Firefox, introduced in 2000. It is cross-platform open source software which has been noted for its consistent appearance across platforms, CSS appearance customization and scripting.

XDCC

XDCC is a computer file sharing method which uses the Internet Relay Chat (IRC) network as a host service.

SOCKS is an Internet protocol that exchanges network packets between a client and server through a proxy server. SOCKS5 additionally provides authentication so only authorized users may access a server. Practically, a SOCKS server proxies TCP connections to an arbitrary IP address, and provides a means for UDP packets to be forwarded.

Direct Client-to-Client (DCC) is an IRC-related sub-protocol enabling peers to interconnect using an IRC server for handshaking in order to exchange files or perform non-relayed chats. Once established, a typical DCC session runs independently from the IRC server. Originally designed to be used with ircII it is now supported by many IRC clients. Some peer-to-peer clients on napster-protocol servers also have DCC send/get capability, including TekNap, SunshineUN and Lopster. A variation of the DCC protocol called SDCC, also known as DCC SCHAT supports encrypted connections. An RFC specification on the use of DCC does not exist.

Virtual hosting is a method for hosting multiple domain names on a single server. This allows one server to share its resources, such as memory and processor cycles, without requiring all services provided to use the same host name. The term virtual hosting is usually used in reference to web servers but the principles do carry over to other internet services.

Captive portal

A captive portal is a web page accessed with a web browser that is displayed to newly connected users of a Wi-Fi network before they are granted broader access to network resources. Captive portals are commonly used to present a landing or log-in page which may require authentication, payment, acceptance of an end-user license agreement or an acceptable use policy, or other valid credentials that both the host and user agree to adhere by. Captive portals are used for a broad range of mobile and pedestrian broadband services - including cable and commercially provided Wi-Fi and home hotspots. A captive portal can also be used to provide access to enterprise or residential wired networks, such as apartment houses, hotel rooms, and business centers.

An IRCd, short for Internet Relay Chat daemon, is server software that implements the IRC protocol, enabling people to talk to each other via the Internet. It is distinct from an IRC bot that connects outbound to an IRC channel.

Client-to-client protocol (CTCP) is a special type of communication between Internet Relay Chat (IRC) clients.

In computer networking, port forwarding or port mapping is an application of network address translation (NAT) that redirects a communication request from one address and port number combination to another while the packets are traversing a network gateway, such as a router or firewall. This technique is most commonly used to make services on a host residing on a protected or masqueraded (internal) network available to hosts on the opposite side of the gateway, by remapping the destination IP address and port number of the communication to an internal host.

Open proxy proxy server accessible to any Internet user

An open proxy is a proxy server that is accessible by any Internet user. Generally, a proxy server only allows users within a network group to store and forward Internet services such as DNS or web pages to reduce and control the bandwidth used by the group. With an open proxy, however, any user on the Internet is able to use this forwarding service.

A BNC is a piece of software that is used to relay traffic and connections in computer networks, much like a proxy. Using a BNC allows a user to hide the original source of the user's connection, providing privacy as well as the ability to route traffic through a specific location. A BNC can also be used to hide the true target to which a user connects.

In computer networks, a tunneling protocol is a communications protocol that allows for the movement of data from one network to another. It involves allowing private network communications to be sent across a public network, such as the Internet, through a process called encapsulation. A tunneling protocol may, for example, allow a foreign protocol to run over a network that does not support that particular protocol, such as running IPv6 over IPv4. Another important use is to provide services that are impractical or unsafe to be offered using only the underlying network services, such as providing a corporate network address to a remote user whose physical network address is not part of the corporate network. Because tunneling involves repackaging the traffic data into a different form, perhaps with encryption as standard, it can hide the nature of the traffic that is run through a tunnel.

Shared web hosting service refers to a web hosting service where many websites reside on one web server connected to the Internet. This is generally the most economical option for hosting, as the overall cost of server maintenance is amortized over many customers.

A proxy auto-config (PAC) file defines how web browsers and other user agents can automatically choose the appropriate proxy server for fetching a given URL.

In the context of computer networking, an application-level gateway consists of a security component that augments a firewall or NAT employed in a computer network. It allows customized NAT traversal filters to be plugged into the gateway to support address and port translation for certain application layer "control/data" protocols such as FTP, BitTorrent, SIP, RTSP, file transfer in IM applications, etc. In order for these protocols to work through NAT or a firewall, either the application has to know about an address/port number combination that allows incoming packets, or the NAT has to monitor the control traffic and open up port mappings dynamically as required. Legitimate application data can thus be passed through the security checks of the firewall or NAT that would have otherwise restricted the traffic for not meeting its limited filter criteria.

Proxy list

A proxy list is a list of open HTTP/HTTPS/SOCKS proxy servers all on one website. Proxies allow users to make indirect network connections to other computer network services. Proxy lists include the IP addresses of computers hosting open proxy servers, meaning that these proxy servers are available to anyone on the internet. Proxy lists are often organized by the various proxy protocols the servers use. Many proxy lists index Web proxies, which can be used without changing browser settings.

Mibbit web based IRC client

Mibbit is a web-based client for web browsers that supports Internet Relay Chat (IRC), Yahoo! Messenger, and Twitter. It is developed by Jimmy Moore and is designed around the Ajax model with a user interface written in JavaScript. It is the IRC application setup by default on Firefox.

References

  1. 1 2 Piccard, Paul; Brian Baskin; George Spillman; Marcus Sachs (May 1, 2005). "Common IRC Clients by OS". Securing IM and P2P Applications for the Enterprise (1st ed.). Syngress. p. 431. ISBN   1-59749-017-2.
  2. 1 2 3 4 5 6 Leadbeater, David (2004-07-27). "Other Ways to Connect to IRC : Hack 91: Use IRC from a Web Page without Java". In Mutton, Paul. IRC Hacks: 100 Industrial-Strength Tips & Tools (1st ed.). Sebastopol, CA: O'Reilly Media. pp. 342–344. ISBN   0-596-00687-X.