%_load manual.var%
A zone is a group of channels with a common base name. For example, "#general.chat" and "#general.help" could both be in the same zone, "#general.*". Zones can also contain zones. For example, the channels "#general.help.urgent" and "#general.help.misc" can both be in the "#general.help.*" zone which is itself in the "#general.*" zone.
The virtual hosting feature set allows you to define zones and zone operators and to map server addresses and ports to specific zone lists. This requires several steps:
1) Choose the zones you wish to create initially. Each zone must start with the '#' character (which signifies a channel) and end with ".*".
2) Choose the virtual hosts you wish to create initially and configure the server to listen on those IP addresses and ports.
3) Create client classes that map each virtual host to the zones it is allowed to access and the zones it is prohibited from accessing.
4) Assign administrative passwords to zones to support zone managers. Assign bots to groups of zones and assign administrative passwords to bots to support managers for groups of zones.
5) If desired, create web virtual hosts for each of the chat virtual hosts. This can be done on our web server, using either its virtual host logic, theme logic, or just a different path, or it can be done on a separate web server.
For the first step, a list on paper is sufficient. If you are a hosting provider, you would probably want to create at least one zone for each client. You can easily add zones later. The important thing is to have at least a skeleton so that you can plan your client classes.
If you choose to set up zones on your server, we recommend that you put all your channels inside zones. You can make an exception for server management and help channels, or you can create a zone specifically for that.
You do not have to use the virtual hosting capability with zones if you do not wish to. You can assign each client class a list of allowed and prohibited zones and you can use virtual hosts to configure which client class a client is placed in. However, you can also use passwords or other mechanisms to decide which client class to place a client in.
You can use either the 'AS' command set or the server's web management interface to create at least one client class for each virtual server. You can then use either the web administrative interface or the 'AS" command set to add a virtual host specification to the client class.
A virtual host specification consists of a host mask, a colon, and a port mask. For example, to specify that anyone who connects to the server on port 6001 should match this client class, you would use a virtual host specification of '*:6001'. To specify that anyone who connects to the IP address 10.1.0.3 on any port should match this client class, you would use a virtual host specification of "10.1.0.3:*". Note that there is no point in specifying a virtual host specification if the server is not listening on any IP/port combination that matches the mask.
So you should create at least one client class for each virtual server. If you wish to use virtual hosting to determine which virtual server a client is placed in, you should add the appropriate virtual host specification(s) to that client class. The appropriate 'AS' command is 'client
Next you should add the appropriate zone permissions to each client class. Again, you can use either the web administration interface or the 'AS' command set. The 'AS' command is 'client
If you wish to make clients on a virtual server invisible to users on other virtual servers, you should set channel visibility (instead of server visibility) for each client class for that server. The 'AS' command is 'client
This is all that is needed to allow a virtual server to be specified by an IP address or host name and port and to have clients that connect to that host/port be placed in the virtual server and limited to the channels in the zones that are mapped to that server.
The easiest way to create a zone manager is to create the channel corresponding to the zone as a bot-managed channel. The 'AS' command to do this is 'chan
Administrative access is obtained by sending a private message to the bot that manages the channel. The message should read 'identify
If you wish to create managers for groups of zones, simply use the same bot to manage each zone. For example, to make the '#general.*' zone managed by the 'MyBot' bot, use the 'AS' command 'chan #general set bot MyBot'. Then assign an administrative password to the bot, with a command like 'bot MyBot set adminpass ASecretPassword'. Managers can obtain access to all the zones the bot manages by sending a private message to the bot, 'identify MyBot ASecretPassword'.
If you wish to use virtual hosting with the web server included with ConferenceRoom, the easiest way is to create a theme for each virtual host. Then use the web vhost 'AS' command to map virtual hosts to themes. For example, 'web vhost add 10.1.0.3:80 blue' will cause users who connect to the web server on IP address 10.1.0.3 and port 80 to get the 'blue' theme.
The rules for web virtual hosting are much the same as for chat. The masks must be specified using IP addresses, though clients can use host names to connect. The server must be configured to listen on at least on address/port combination for the virtual host to work, however, you can configure the server to listen using wildcards. For example, you can specify that the web server listen on port 80 (which will implicitly listen on all IP address assigned to the machine) and then configure virtual hosts for various IP addresses assigned to the machine.