****** Operators guide for the dancer IRC server ****** **** Andrew Suffield **** Copyright © 2001 by Andrew Suffield Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation A copy of the license is included in the section entitled "GNU Free Documentation License". =============================================================================== Table of Contents 1. Introduction Scope_of_this_document Open_Projects_Philosophy Principals Practicalities Dancer_operators 2. Umodes Allowed_vs._default_umodes Meanings_of_umodes +a,_auspex +b,_see_bots +B,_edit_other_users +c,_see_client_connections +d,_debug +D,_die_command +e,_identified +E,_reject_messages_from_unidentified_users +f,_full_warning +F,_immune_to_flood_protection +G,_global_kill +h,_high_priority +H,_rehash +i,_invisible +I,_refuse_invite +k,_server_kill_notices +K,_local_kill +l,_channel_creation_notices +L,_force_lusers +m,_immune +M,_mass_notices +n,_nick_change_notices +N,_use_any_nick +o,_operator +p,_god_mode +P,_SETHOST_and_SETIDENT +r,_notices_on_name_rejections +R,_server_routing +s,_server_notices +S,_run_commands_remotely +U,_unkline +v,_view_privileges +V,_view_routing +w,_receive_wallops +W,_send_wallops +x,_see_servers_joining +X,_experimental_features +y,_spy +Y,_server_connection_details +z,_receive_operwall +Z,_send_operwall +0,_see_opers +1,_see_connection_settings +2,_see_network_bans +3,_see_nick_bans +4,_see_STATS_T +5,_see_STATS_? +9,_use_testline +*,_grant_umodes +@,_free_spoofing 3. Cmodes Meanings_of_cmodes +b,_channel_ban +c,_colour_filter +d,_gecos_ban +e,_ban_exemption +f,_channel_invite_forwarding +g,_allow_anybody_to_invite +F,_enable_channel_forwarding +i,_invite_only +I,_invite_exception_(invex) +j,_jupe_channel +k,_key_(channel_password) +l,_channel_member_limit +m,_moderated +n,_prevent_external_send_to_channel +P,_permanent_channel +s,_secret_channel +q,_quiet 4. Operator_Commands Network_management_commands CONNECT SQUIT REHASH RESTART DIE HTM SET HASH DNS User_management_commands KILL CLOSE KLINE UNKLINE DLINE TESTLINE SETNAME,_SETIDENT,_SETHOST Miscellaneous_commands STATS SCAN TRACE WALLOPS OPERWALL 5. Server_config_file_format General_format Specific_lines M:line A:line Y:line I:line O:line C/N:lines K:line D:line Q:lines X:lines H:line P:line A. GNU_Free_Documentation_License 0. PREAMBLE 1. APPLICABILITY_AND_DEFINITIONS 2. VERBATIM_COPYING 3. COPYING_IN_QUANTITY 4. MODIFICATIONS 5. COMBINING_DOCUMENTS 6. COLLECTIONS_OF_DOCUMENTS 7. AGGREGATION_WITH_INDEPENDENT_WORKS 8. TRANSLATION 9. TERMINATION 10. FUTURE_REVISIONS_OF_THIS_LICENSE How_to_use_this_License_for_your_documents =============================================================================== ****** Chapter 1. Introduction ****** ***** Scope of this document ***** This document describes the commands and functions available to operators in the dancer ircd, version 1.0, as used on the Open_Projects_Network. This document also details some of the basic philosophies and procedures of the Open Projects IRC network. It is recommended that you read the dancer users guide for more complete details of normal network operation from the perspective of the users. While this document may be of some interest to the users of dancer servers, it is intended as a reference for operators. The dancer ircd is based on hybrid-6, although much has changed. hybrid-6 is commonly used on efnet, and some other networks. =============================================================================== ***** Open Projects Philosophy ***** The dancer IRC server was written for the Open_Projects_Network, and designed with OPN philosophy in mind. As such, it may have features which are at odds with other networks and their philosophies. The Open Projects Net philosophy has several components. OPN exists to provide interactive services to projects and groups involved with "Open Source, Open Technology and Open Information." We work to provide an interaction environment in which free software community members can improve their skills in the areas of communication and coordination of effort. We also try to provide an environment which serves to introduce new participants to the free software community. =============================================================================== **** Principals **** The basic principles of OPN are: * Community members benefit from better access to each other. Putting a number of projects in close proximity in an interactive environment creates linkages between developers and projects, and helps community members take better advantage of each other's work. * Communication and coordination skills are important to community projects. Free software and open source work because the paradigm works. Developers and community members are not unusually gifted at project coordination and communication. But improving those skills can make projects work better. * Friendly interaction is more efficient than flaming. Calm, relaxed discourse without angry contention provides for better exchange of information. Flaming produces situations in which the listener must contend with the state of his or her emotions at least as much as with the comprehension of a speaker's comments. * Open source developers are self-driven. No one guarantees your work will be used, but only you decide whether a project is worth doing. There is no single right approach to any coding or support problem, and friendly competition is a fundamentally good thing. * The free software community is small, and needs to grow. Many valuable projects chronically lack skilled, motivated developers with time to devote to them. Our potential developer base includes programmers in all fields and disciplines, and both students and working professionals. Our potential user base includes individuals and organizations standing to benefit from software projects we successfully pursue. The community must continue to grow. * Free software is about the software. Free software and open source were not born in the recent venture-capital, pre-IPO environment. Our roots are in coders coding software for the benefit of themselves and their organizations, and for the pleasure of producing quality work. It is completely legitimate to profit monetarily from coding and supporting free and open applications. Corporate sponsors of open source projects are welcome on OPN. It's time, though, for the community to get back to its roots. =============================================================================== **** Practicalities **** The OPN IRC network provides a controlled environment in which open projects can communicate between developers and users. To this end, OPN is centrally maintained, and operators are expected to try and resolve situations without actually exercising their power when possible. They are also expected to stay out of channel politics and arguments, so don't bother asking them to intervene if you disagree with the people who run a channel. They won't. OPN runs a full services implementation, which allows nicks and channels to be registered and protected by the server, thusly making channel takeovers largely impossible, while maintaining a consistant interface for channels to be managed. If an individual has somehow gained ops on a channel, then the channel founder, or people with an appropriate level of access, can handle it themselves with chanserv; refer to the dancer users guide for details. If somebody has managed to take founder access (by guessing the founder password, or whatever), then the original founder should come to channel #openprojects ASAP so that the situation can be resolved. =============================================================================== ***** Dancer operators ***** The most visible change from vanilla hybrid, and most other IRC servers, is with relation to operators. In most IRC servers, an operator has considerable power, being able to use KILL and KLINE to remove people from the network, and possibly more. In the now aging dancer-ircu, operators were gods, able to join any channel, kick, ban, etc. This is not the case in dancer. These are the things that any operator can now do: * See the oper help, and motd * When attempting to gain a restricted mode they do not have access to, opers will be told that. Normal users will be told there is no such mode. * Show up as operators in commands like WHOIS and TRACE, if the person who invoked the command can see operators. * Be counted in LUSERS and similar commands as an oper. That's it. No more. All other functionality has been distributed across the umodes, which can be individually granted in ircd.conf. =============================================================================== ****** Chapter 2. Umodes ****** ***** Allowed vs. default umodes ***** In dancer, every operator is granted a set of allowed umodes, and default umodes. Default umodes are those which are automatically set when the person becomes an operator with the OPER command. Allowed umodes are those which the user may set on themselves afterwards. These will be listed when the OPER command is successfully invoked. =============================================================================== ***** Meanings of umodes ***** **** +a, auspex **** Auspex is the ability to see all users, servers, and IP addresses. Auspex users can see inivisible users and secret channels. Care should be taken to keep this information private, and not reveal it to non-auspex users. =============================================================================== **** +b, see bots **** Users with the +b umode set will receive warning messages from the server when potentiol flooders and spambots are detected. =============================================================================== **** +B, edit other users **** This umode allows the operator to use the SETHOST, SETNAME, and SETIDENT commands on other people. It also allows the operator to change another person's umode, although they cannot grant modes that the target user doesn't have without +*,_grant_modes. =============================================================================== **** +c, see client connections **** Users who have the +c umode set will receive server notices when clients attach to the network. They are also warned when a client fails to provide reverse DNS or ident information. =============================================================================== **** +d, debug **** The +d umode provides extra information and commands which may be of interest to debuggers. It will also cause the user to receive server notices if certain assertions fail inside the server. It's precise meaning is extremely variable. While every effort will be made to ensure that it grants no extra privileges, no guarantees can be made. Do not depend on the effects of this umode as they can and will change without notice in later revisions. Note that this may (and usually will) divulge information about the network routing. It may also give away IP addresses. Yeah, it's a security risk. Sorry. =============================================================================== **** +D, die command **** The DIE command causes a server to cease processing at once and exit. This umode should not be granted without due care. =============================================================================== **** +e, identified **** This umode is used for integration with dancer/hybserv. A user with the +e umode has successfully identified with nickserv. __________________________________________________________ |______________________________________Warning_____________| |_Under_no_circumstances_should_+e_be_granted_in_an_O:line.| =============================================================================== **** +E, reject messages from unidentified users **** Note: This is a user umode, which anybody can set. It is not specific to operators. If a user has the +E umode set, then any users who do not have the +e umode set will receive an error message if they attempt to send a private message or notice to the +E user. =============================================================================== **** +f, full warning **** Users with the +f umode set will receive notices when an I:line becomes full, and users can no longer connect. =============================================================================== **** +F, immune to flood protection **** +F users will not be throttled in their use of commands, nor will they be checked by the flood detection code. =============================================================================== **** +G, global kill **** An operator who can do global kills can kill a user who is attached to a different server. See +K,_local_kill. =============================================================================== **** +h, high priority **** A person with high priority set will have their connection polled more often by the server, and will still be able to do stuff while the server is in high traffic mode. Normally, high traffic mode means that most commands from attached clients will be rejected, until the server can clear it's backlog of processing. This mode should be granted sparingly, to only those people who would need to be able to work rapidly when the server is under extreme load. =============================================================================== **** +H, rehash **** This grants the ability to use the rehash command, to reload the server configuration files. =============================================================================== **** +i, invisible **** Note: This is a user umode, which anybody can set. It is not specific to operators. Invisible users do not show up in WHO unless you can see them, and their WHOIS will only show channels on which you can see them. See +a,_auspex. =============================================================================== **** +I, refuse invite **** Note: This is a user umode, which anybody can set. It is not specific to operators. If you have the +I umode set, nobody will be able to issue an INVITE to let you in to a channel. =============================================================================== **** +k, server kill notices **** Users with the +k umode set will receive server notices when server kills occur. =============================================================================== **** +K, local kill **** With the +K umode, a person can set klines and use the KILL command, to remove people from the server they are connected to. =============================================================================== **** +l, channel creation notices **** A user with +l set will receive a server notice when a new channel is created (by somebody entering it). =============================================================================== **** +L, force lusers **** With the +L umode set, a user can use the 4-argument LUSERS message to force a recount. =============================================================================== **** +m, immune **** they are able to speak even if they are banned. =============================================================================== **** +M, mass notices **** A user with +M set can send notices to people based on a mask. A notice to $* will go out to every user on the network. =============================================================================== **** +n, nick change notices **** A user with +n set will receive a server notice every time somebody changes their nick, giving the old and new nicks. =============================================================================== **** +N, use any nick **** The +N umode overrides Q:lines and X:lines, which normally forbid the use of given nicks. This is potentiolly useful if running without services, to protect the nicks of opers, should you wish to do that. =============================================================================== **** +o, operator **** This indicates global operator status. It's meaning is now minimal; it is a gateway to the operator umodes. Setting -o will automatically remove all the operator umodes. The things which +o still does are listed in Dancer_operators. __________________________________________________________ |______________________________________Warning_____________| |_Under_no_circumstances_should_+o_be_granted_in_an_O:line.| =============================================================================== **** +p, god mode **** do, they can always join channels and speak regardless of channel modes, limits, or bans. =============================================================================== **** +P, SETHOST and SETIDENT **** This umode allows the use of the command SETHOST, and SETIDENT. =============================================================================== **** +r, notices on name rejections **** Users with this umode set will receive a server notice when somebody tries to use an invalid nick/username, or a quarantined nick (Q:link) or banned nick (X: line). =============================================================================== **** +R, server routing **** This umode grants the use of the commands CONNECT and SQUIT, in both local and remote forms. It also allows the use of the HTM command to query/change current HTM settings. =============================================================================== **** +s, server notices **** This umode allows a user to receive server notices. =============================================================================== **** +S, run commands remotely **** This allows various commands, notably ADMIN, INFO, MOTD, VERSION, and STATS, to be used in their remote form, where an extra server parameter is given and the command executes on a remote server, returning results to the user. Note that this command does not affect the local or remote forms of the CONNECT and SQUIT commands; these are controlled entirely by umode +R. =============================================================================== **** +U, unkline **** This grants the use of the UNKLINE command. =============================================================================== **** +v, view privileges **** This causes the privileges an oper has available to be returned when the +v user WHOIS's them. =============================================================================== **** +V, view routing **** This allows the routing between the servers to be seen. This activates the MAP command, and shows routing information in LINKS, as well as showing full server connection messages. =============================================================================== **** +w, receive wallops **** Note: This is a user umode, which anybody can set. It is not specific to operators. Users with the +w umode set will receive WALLOPS messages. =============================================================================== **** +W, send wallops **** Users with the +W umode can use the WALLOPS command to send WALLOPS messages. =============================================================================== **** +x, see servers joining **** People who have the +x umode set will see all servers being introduced when a server rejoins, not just the one which made the connection. (This means all the servers already connected on the other side of the link). This obviously divulges routing information, and is rather loud on a large network. It's value is uncertain. =============================================================================== **** +X, experimental features **** This umode controls access to various experimental features of dancer. It is deliberately undocumented. If you do not know what it does (if you are not involved in the development of dancer) then you should not use it. The features it controls will eventually be moved out and documented when their usage (and their side effects) are better understood. =============================================================================== **** +y, spy **** This umode should be used with caution, as it is an invasion of privacy. Nonetheless, it is necessary that some people have this ability to detect stealthy floods. All sorts of client activity will be reported to an oper with umode +y set. =============================================================================== **** +Y, server connection details **** This umode activates some extra messages sent during server connection, which used to be attached to +s. It exists mostly so that it can be turned off if these messages become bothersome. =============================================================================== **** +z, receive operwall **** OPERWALL differs from WALLOPS in that the ability to receive such messages is restricted. Users with +z set will receive OPERWALL messages. =============================================================================== **** +Z, send operwall **** The ability to send OPERWALL messages is controlled by the +Z umode. =============================================================================== **** +0, see opers **** Users with the +0 umode set are able to tell that a person is an oper by their WHOIS, and in various other commands such as STATS o and TRACE. =============================================================================== **** +1, see connection settings **** This umode allows the use of STATS commands to see: B:lines (deprecated) E:lines (deprecated) F:lines (deprecated) I:lines Y:lines =============================================================================== **** +2, see network bans **** This umode allows the use of STATS commands to see: D:lines G:lines K:lines =============================================================================== **** +3, see nick bans **** This umode allows the use of STATS commands to see: Q:lines X:lines =============================================================================== **** +4, see STATS T **** This allows the use of the STATS T command, to get general server statistics. =============================================================================== **** +5, see STATS ? **** This allows the use of the STATS ? command, to get a list of all servers and some statistics on them from the perspective of the current server. =============================================================================== **** +9, use testline **** This umode enables the TESTLINE command. =============================================================================== **** +*, grant umodes **** This umode allows the user to grant umodes they have access to to other people. As such it is very dangerous, and should be carefully controlled. It is strongly recommended that * never be put in the default umodes for anybody, and that it only be set when it is needed, to prevent accidents. When a user has +* set, then they may set a mode on another user which that user would not normally have access to (assuming the originator has the ability to gain that mode themselves). This umode will be added to the list of umodes that the target has access to for the duration of the session. Similarly, removing a umode will revoke the ability to use that mode, unless it is in the list of normal user modes. Note: This umode is useless without +B also set. =============================================================================== **** +@, free spoofing **** This umode allows the user to change their host to anything with the SETHOST command. Without it they can only use the 0-argument form of SETHOST to flip between their real and official spoofed hostname. Note: This umode is useless without +P also set. =============================================================================== ****** Chapter 3. Cmodes ****** ***** Meanings of cmodes ***** **** +b, channel ban **** Bans take one parameter, either in the form +b nick!user@host, or +b nick!user@host!#channel. The wildcards * and ? are allowed, matching zero-or- more, and exactly-one characters respectively. The masks will be trimmed to fit the maximum allowable length for the relevant element, with wildcards added as appropriate to ensure that they still match. In the simple case, without a !#channel, the mask causes any matching user to be prohibited from sending to the channel, knocking, or joining. Having +v set on them on the channel overrides the prohibition on sending, while being invited overrides the prohibition on joining. If the mask has a channel name specified and the channel has +F set, then in all situations where the user would previously have been told they could not join the channel, they will instead join the channel named in the ban mask, and be sent a 379 numeric describing that. =============================================================================== **** +c, colour filter **** This cmode activates the colour filter for the channel. This filters out bold, underline, reverse video, beeps, mIRC colour codes, and ANSI escapes. Note that escape sequences will usually leave cruft sent to the channel, just without the escape characters themselves. =============================================================================== **** +d, gecos ban **** This mode takes on parameter, a mask which is matched against the so-called "Real name" field each client supplies, and prevents any matching clients from sending to the channel or joining it. It accepts the standard * and ? wildcards. =============================================================================== **** +e, ban exemption **** This mode takes on parameter of the form nick!user@host, with the usual wildcards, which overrides +b and +d bans for all clients it matches. =============================================================================== **** +f, channel invite forwarding **** This mode takes one parameter, the name of a channel (+f #channel). If the channel also has the +Fi cmodes set, and somebody attempts to join without either being expliticly invited, or having an invex (+I), then they will instead join the channel named in the mode parameter. The client will also be sent a 379 numeric giving the original and target channels. =============================================================================== **** +g, allow anybody to invite **** When this mode is set, anybody may use the INVITE command on the channel in question. When it is unset, only channel operators may use the INVITE command. =============================================================================== **** +F, enable channel forwarding **** This mode can only be set by network administrators. It enables channel forwarding for a given channel. =============================================================================== **** +i, invite only **** When this cmode is set, no client can join the channel unless they have an invex (+I) or are explicitly invited. =============================================================================== **** +I, invite exception (invex) **** This mode takes a parameter of the form nick!user@host with the usual wildcards. Matching clients do not need to be invited to join the channel when it is invite-only. =============================================================================== **** +j, jupe channel **** This cmode can only be set by network operators. It basically prohibits the channel from being used for any purpose, anywhere on the network. Joining such channels is not possible. =============================================================================== **** +k, key (channel password) **** Taking one parameter, when set, this mode requires a user to supply the key in order to join the channel. =============================================================================== **** +l, channel member limit **** Takes one numeric parameter, the number of users which are allowed to be in the channel before further joins are blocked. =============================================================================== **** +m, moderated **** When a channel is set +m, only users with +o or +v on the channel can send to it. =============================================================================== **** +n, prevent external send to channel **** When set, this mode prevents users from sending to the channel without being in it themselves. =============================================================================== **** +P, permanent channel **** Channels with this mode (which is accessible only to network admins) set will not be destroyed when the last user leaves. They will also be allowed much larger banlists. =============================================================================== **** +s, secret channel **** When set, this mode prevents the channel from appearing in the output of the LIST command. =============================================================================== **** +q, quiet **** This mode behaves exactly like the simple form of +b (ban), except that the user may still join the channel. The net effect is that they cannot send to the channel. =============================================================================== ****** Chapter 4. Operator Commands ****** ***** Network management commands ***** Note: All commands and names are case insensitive. =============================================================================== **** CONNECT **** CONNECT target [port] [source] Initiate a connection attempt to server target. If a port is given, connect to that port on the target, otherwise use the one given in ircd.conf. If source is given, tell that server to initiate the connection attempt, otherwise it will be made from the server you are attached to. =============================================================================== **** SQUIT **** SQUIT server [reason] Closes down the link to server from the current server. If a reason is given, it will be sent out in the server notices on both sides of the link. =============================================================================== **** REHASH **** REHASH [DNS | IP | TKLINES | GC | MOTD | OMOTD | HELP | DLINES] With no parameter given, ircd.conf will be re-read and parsed. Parameters DNS Re-read /etc/resolv.conf IP Reload the internal IP hash. Don't use it unless you know what that means. TKLINES Clear all temporary K:lines GC Force immediate garbage collection MOTD Reload the MOTD file OMOTD Reload the operator MOTD file HELP Reload the help file DLINES Rehash D:lines =============================================================================== **** RESTART **** Cause an immediate total shutdown of the IRC server, and restart from scratch as if it had just been executed. =============================================================================== **** DIE **** DIE server [reason] Immediately terminate the IRC server, after sending notices to all connected clients and servers, optionally with the given reason Note:This command cannot be used remotely. The server name is used only as a safety measure. =============================================================================== **** HTM **** HTM [ON | OFF | TO rate | QUIET | NOISY] With no parameters, the server will return the current HTM rate and status High Traffic Mode controls how the server polls it's connections. When HTM is on, the server will poll server and high-priority connections more often, making it more efficient on those connections. This will make it notably less efficient at handling normal local client traffic. ON Forces HTM on OFF Forces HTM off TO rate Sets the traffic level at which the server will automatically switch HTM on until things calm down QUIET Prevents the server from notifying the operators when HTM is activated/ deactivated NOISY Makes the server notify operators when HTM is activated/deactivated =============================================================================== **** SET **** SET [LOG | MAX | FLUDNUM | FLUDTIME | FLUDBLOCK | SPLITDELAY | SMALLNET | SPAMNUM | SPAMTIME] value The SET command sets a runtime-configurable value LOG Logging level for ircd.log and syslog MAX Set the maximum connections allowed (may not exceed the compiled-in value HARD_FDLIMIT) FLUDNUM The number of messages needed to trip the flud alarm FLUDTIME Number of seconds in which FLUDNUM messages must occur to trip the flud alarm FLUDBLOCK Number of seconds to block fluds for. 0 disables flud checking. DRONETIME Number of seconds in which DRONECOUNT messages must occur to trip the drone alarm DRONECOUNT Number of messages which constitutes a drone flood. 0 disables drone flood checking. SPLITDELAY Number of minutes after a connect burst begins until joining an empty channel will give you ops SMALLNET Sets the number of servers which are needed to constitute "attached to the network", as opposed to "split" SPAMNUM Sets the number of JOINs/PARTs which constitutes a possible spambot SPAMTIME Staying on a channel for less than this length of time adds to the SPAMNUM count =============================================================================== **** HASH **** Shows some internal hashing statistics. If you don't know what it means, don't use it. =============================================================================== **** DNS **** Shows some statistics about the internal asynchronous resolver. If you don't know what it means, don't use it. =============================================================================== ***** User management commands ***** **** KILL **** KILL nick [reason] Disconnects the user with the given nick from the server they are connected to, with the reason given, if present, and broadcast a server notice announcing this. =============================================================================== **** CLOSE **** Closes all connections from clients who have not completed registering. =============================================================================== **** KLINE **** KLINE [length] [nick | user@host | user@a.b.c.d] [:reason] Add a K:line to the local server config file to ban the given user from using that server. If a nick is given, the user@host they currently have will be banned, otherwise the ban will be directly added. If the optional parameter length is given, the K:line will be temporary and last that long in minutes. If an IP address is given, the ban will be against all hosts matching that IP regardless of DNS. The IP address can be given as a full address (192.168.0.1), as a CIDR mask (192.168.0.0/24), or as a glob (192.168.0.*). All clients matching the K:line will be disconnected from the server immediately. If a reason is specified, it will be sent to the client when they are disconnected, and whenever a connection is attempted which is banned. =============================================================================== **** UNKLINE **** UNKLINE user@host Will attempt to remove a K:line matching user@host from the config files, and will flush a temporary K:line. =============================================================================== **** DLINE **** DLINE [nick | a.b.c.d] [:reason] Add a D:line to the config files, which will deny any connections from the IP address of the banned client (either the address given, or the address of the user specified). If a reason is specified, it will be sent to the client when they are disconnected, and whenever a connection is attempted which is banned. D:lines are less load on a server, and may be more appropriate if somebody is flooding connections. =============================================================================== **** TESTLINE **** [user@host | a.b.c.d] Looks up the given hostmask or IP address and reports back on any I:, D:, G:, or K: lines found. =============================================================================== **** SETNAME, SETIDENT, SETHOST **** SETNAME [nick] value SETIDENT [nick] value SETHOST [nick] [value] Set the fullname, ident (username), or hostname associated with a particular nick for the duration of this session. If SETHOST is used without parameters, then it will change the hostname of the user who used the command. If their hostname is currently the real hostname that was looked up when they connected, then their hostname will be changed to the spoof name from their I:line (or SPOOF_LIMIT_HOST if their I:line did not specify a spoof host). Otherwise their current hostname will be set to their real hostname. This behaviour is specific to SETHOST and not shared by SETIDENT or SETNAME. If SETHOST, SETNAME, or SETIDENT is used with a single parameter then it will change the hostname of the user who used the command to the given value. SETNAME may be used by anybody, at any time, to change their "real name" field. =============================================================================== ***** Miscellaneous commands ***** **** STATS **** STATS [type] [nick | server] Display various statistics. Values for type c Show C/N:lines d Show D:lines g Show G:lines h Show H/L:lines i Show I:lines k Show temporary K:lines, or matched temporary K:lines K Show K:lines, or matched K:lines L Show IP and generic information about the given nick l Show hostname and generic information about the given nick m Show commands and their usage statistics o Show O/o:lines P Show configured ports p Show opers connected and their idle times q Show Q:lines r Show resource usage by the ircd Note:Only available if compiled in debugging mode s Show the server name cache t Show generic server stats U Show U:lines u Show server uptime v Show connected servers and their idle times x Show X:lines y Show Y:lines z Show memory usage stats ? Show connected servers and sendq information about them =============================================================================== **** SCAN **** SCAN UMODES {mode string} [list | no-list | list-max max | allowed | current | mask mask ...] UMODES Scan all connected clients based on their current umode. The mode string is of the form +abc-xyz, and selects clients who have all the + modes set, and who have none of the - modes set. It is not necessary to specify both a + and a - set. If list is set then the clients and their modes will be listed; if no- list is set then only the summary count will be. (Default is to list everything) If list-max is non-zero then the list will be limited to the given number of users. Default is 100. The summary count is not affected. If allowed is set then the mode string will be compared to the umodes which a user is permitted to set; if current is set then it will be compared to the umodes a user currently has set. Default is allowed. If mask is set then only users matching the given nick!user@host mask will be displayed and counted in the summary. =============================================================================== **** TRACE **** TRACE [server | nick] Shows client information about the given target, or about the current server if no targets are specified. The path to the target will also be given, and all servers and opers connected. =============================================================================== **** WALLOPS **** WALLOPS :message Sends a WALLOPS message to all users who have the +w umode set. This is for things you don't mind the whole network knowing about. =============================================================================== **** OPERWALL **** OPERWALL :message Sends an OPERWALL message to all users who have the +z umode set. +z is restricted, OPERWALL should be considered private communications. =============================================================================== ****** Chapter 5. Server config file format ****** ***** General format ***** The config file consists of a series of discrete lines. Each line consists of a series of colon-separated fields, the first of which is a single character, which defines what sort of thing the line is describing. A line may also be a .include directive, which is of the form .include "file" and causes file to be read in at that point, before the rest of the current file is processed. Anything from a # to the end of a line is a comment. Blank lines are ignored. =============================================================================== ***** Specific lines ***** **** M:line **** M:server name:[bind address]:description the name the server will claim to be to clients and to other servers, and usually is chosen to be something that resolves to the server's IP address. The text description is sent out in LINKS and when clients connect. The optional bind address is which interface to bind to/send from when making outgoing connections. =============================================================================== **** A:line **** A:text:text:text This line should contain exactly three text fields, which can contain any arbitrary text. It is returned by the ADMIN command. It is suggested that it contains the name of the organisation running the IRC network, and a means to contact the network/server administrator (probably email). =============================================================================== **** Y:line **** Y:class:ping frequency:connect frequency:maximum links:sendq size Y:lines define classes of connections for later use. The class number is used to connect them to other lines in the config file. All fields are integers. The class field must be a value greater than zero, and must uniquely identify the connection class within the config. The rate at which things in this connection are pinged to see if their connection is still alive is controlled by the second field. connect frequency for a server connection is the time in seconds this server will wait before attempting to make a connection (if autoconnect is allowed). If the connect frequency is 0 then only one connection will be attempted, at server startup. For a client class, this is the number of connections which will be allowed from the same originating IP address, or 0 for no limit. sendq is the size in bytes of the queue which holds messages awaiting delivery to the target. For clients a few hundred thousand bytes is adequete; for servers at least 4Mb is recommended. When picking a server to connect to, the ircd will try higher connection classes first, unless they are waiting for the "connect frequency" time to elapse before trying again. =============================================================================== **** I:line **** I:IP mask:[password]:domain mask::connection class I:lines allow client connections to the server, and control/set various flags about those connections. If the IP mask is a CIDR mask, then the I:line matches anything coming from the range it indicates and the domain mask is matched against the nick of the connecting user, otherwise the domain mask contains a nick@host mask which is matched against the resolved hostname. If the domain mask is of the nick@host form, then the IP mask field contains instead the hostname to spoof to. This will be used if the = flag is specified. If a password is given, then it must be used at connection time or the connection will be dropped, without checking any other I:lines. The domain mask matches may (and usually does) contain wildcards. The domain mask may have several prefixes which affect the client connection. They are: * - Don't prefix a ~ to the username if the ident check fails. * + Require ident check to succeed to connect. * ! Only allow n connections (as defined in the Y:line) per IP address, not per hostmask. * ^ Exempt from K/G lines. Partially exempt from D lines. * & Will not be killed by the bot check. * > Exempt from connection limits. * _ Exempt from G:lines. * = The IP mask field contains the hostname to spoof to. * / Spoof the hostname automatically on connect. Note that you cannot specify an IP address range *and* a domain mask at the same time. The IP mask will be parsed as the hostname to spoof to if the = flag is given, otherwise it will be ignored when using a domain mask. If no = flag is given, then SPOOF_LIMIT_HOST in config.h will be used as the hostname to spoof to, if any. =============================================================================== **** O:line **** O:hostname:password:nick:allowed umodes:connection class:default umodes O:lines define who may use the OPER command to gain extended privileges. The hostname may be a mask, and must match for an OPER command to work. The password may be encrypted as an MD5 hash, depending on compile-time configuration. Dancer uses a very different system than most ircds. Rather than a capabilities field, it has a field which contains the list of umodes an oper may have. This allows for very fine control of what a person can and can't do. When an OPER command succeeds, the user will be moved into the connection class specified in the O:line, and they will have all the umodes in the "default umodes" field set. =============================================================================== **** C/N:lines **** C:hostname:[password]:name:[port]:connection class N:hostname:[password]:name::connection class[:] These always appear in matched pairs, and define what servers may connect or be connected to. The hostname must match that of the remote server. The cleartext password in the C:line on one side of a link must match the (possibly hashed) password in the N:line on the other side. The name must match that given in the first field of the M:line on the remote server. If a port is given in the C:line, a connection will be automatically attempted according to the connection class, on startup, and at regular intervals when a server is not connected. In order for a server to be listed in the LINKS response, it must have an N: line (it need not have a C:line, nor need there be a valid password in the N: line). If the last (6th field) is present (ie: trailing colon after connection class), then the server will not be listed in LINKS. This allows you to have locally connected servers which are not listed, and listed servers which are not locally connected. =============================================================================== **** K:line **** K:hostname:[time ranges]:username A K:line bans all users matching a given user and host from connecting to the server. Both the hostname and the username may contain wildcards. The time ranges field is deprecated. It allows a range of times in which the K:line is in effect. =============================================================================== **** D:line **** D:IP address:comment D:lines (dumps) drop all connections from the given address or CIDR mask. This is notably less expensive on the server than a K:line, so should be used by preference to deal with persistant attackers. Note that D:lines must be individually placed on each server, and should not be used lightly. =============================================================================== **** Q:lines **** Q:nick mask:reason:user@host Q:lines (quarantines) prevent the given nick or anything matching the given mask from being used, unless the user is connected matching the given user@host mask. =============================================================================== **** X:lines **** X:mask:reason::kill X:lines match the mask against the realname field for the a client attempting to connect. If kill is non-zero (true) then the client will be dropped as if they were K:lined, instead of being allowed to connect, otherwise a warning notice will be broadcast to the opers with +r set. =============================================================================== **** H:line **** H:domain mask::server name An H:line allows a remote server matching the given masks to introduce other servers. =============================================================================== **** P:line **** P::[bind address]::port number A P:line specifies what ports a server should listen on. =============================================================================== ****** Appendix A. GNU Free Documentation License ****** Version 1.1, March 2000 Copyright (C) 2000 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. =============================================================================== ***** 0. PREAMBLE ***** The purpose of this License is to make a manual, textbook, or other written document "free" in the sense of freedom: to assure everyone the effective freedom to copy and redistribute it, with or without modifying it, either commercially or noncommercially. Secondarily, this License preserves for the author and publisher a way to get credit for their work, while not being considered responsible for modifications made by others. This License is a kind of "copyleft", which means that derivative works of the document must themselves be free in the same sense. It complements the GNU General Public License, which is a copyleft license designed for free software. We have designed this License in order to use it for manuals for free software, because free software needs free documentation: a free program should come with manuals providing the same freedoms that the software does. But this License is not limited to software manuals; it can be used for any textual work, regardless of subject matter or whether it is published as a printed book. We recommend this License principally for works whose purpose is instruction or reference. =============================================================================== ***** 1. APPLICABILITY AND DEFINITIONS ***** This License applies to any manual or other work that contains a notice placed by the copyright holder saying it can be distributed under the terms of this License. The "Document", below, refers to any such manual or work. Any member of the public is a licensee, and is addressed as "you". A "Modified Version" of the Document means any work containing the Document or a portion of it, either copied verbatim, or with modifications and/or translated into another language. A "Secondary Section" is a named appendix or a front-matter section of the Document that deals exclusively with the relationship of the publishers or authors of the Document to the Document's overall subject (or to related matters) and contains nothing that could fall directly within that overall subject. (For example, if the Document is in part a textbook of mathematics, a Secondary Section may not explain any mathematics.) The relationship could be a matter of historical connection with the subject or with related matters, or of legal, commercial, philosophical, ethical or political position regarding them. The "Invariant Sections" are certain Secondary Sections whose titles are designated, as being those of Invariant Sections, in the notice that says that the Document is released under this License. The "Cover Texts" are certain short passages of text that are listed, as Front- Cover Texts or Back-Cover Texts, in the notice that says that the Document is released under this License. A "Transparent" copy of the Document means a machine-readable copy, represented in a format whose specification is available to the general public, whose contents can be viewed and edited directly and straightforwardly with generic text editors or (for images composed of pixels) generic paint programs or (for drawings) some widely available drawing editor, and that is suitable for input to text formatters or for automatic translation to a variety of formats suitable for input to text formatters. A copy made in an otherwise Transparent file format whose markup has been designed to thwart or discourage subsequent modification by readers is not Transparent. A copy that is not "Transparent" is called "Opaque". Examples of suitable formats for Transparent copies include plain ASCII without markup, Texinfo input format, LaTeX input format, SGML or XML using a publicly available DTD, and standard-conforming simple HTML designed for human modification. Opaque formats include PostScript, PDF, proprietary formats that can be read and edited only by proprietary word processors, SGML or XML for which the DTD and/or processing tools are not generally available, and the machine-generated HTML produced by some word processors for output purposes only. The "Title Page" means, for a printed book, the title page itself, plus such following pages as are needed to hold, legibly, the material this License requires to appear in the title page. For works in formats which do not have any title page as such, "Title Page" means the text near the most prominent appearance of the work's title, preceding the beginning of the body of the text. =============================================================================== ***** 2. VERBATIM COPYING ***** You may copy and distribute the Document in any medium, either commercially or noncommercially, provided that this License, the copyright notices, and the license notice saying this License applies to the Document are reproduced in all copies, and that you add no other conditions whatsoever to those of this License. You may not use technical measures to obstruct or control the reading or further copying of the copies you make or distribute. However, you may accept compensation in exchange for copies. If you distribute a large enough number of copies you must also follow the conditions in section 3. You may also lend copies, under the same conditions stated above, and you may publicly display copies. =============================================================================== ***** 3. COPYING IN QUANTITY ***** If you publish printed copies of the Document numbering more than 100, and the Document's license notice requires Cover Texts, you must enclose the copies in covers that carry, clearly and legibly, all these Cover Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on the back cover. Both covers must also clearly and legibly identify you as the publisher of these copies. The front cover must present the full title with all words of the title equally prominent and visible. You may add other material on the covers in addition. Copying with changes limited to the covers, as long as they preserve the title of the Document and satisfy these conditions, can be treated as verbatim copying in other respects. If the required texts for either cover are too voluminous to fit legibly, you should put the first ones listed (as many as fit reasonably) on the actual cover, and continue the rest onto adjacent pages. If you publish or distribute Opaque copies of the Document numbering more than 100, you must either include a machine-readable Transparent copy along with each Opaque copy, or state in or with each Opaque copy a publicly-accessible computer-network location containing a complete Transparent copy of the Document, free of added material, which the general network-using public has access to download anonymously at no charge using public-standard network protocols. If you use the latter option, you must take reasonably prudent steps, when you begin distribution of Opaque copies in quantity, to ensure that this Transparent copy will remain thus accessible at the stated location until at least one year after the last time you distribute an Opaque copy (directly or through your agents or retailers) of that edition to the public. It is requested, but not required, that you contact the authors of the Document well before redistributing any large number of copies, to give them a chance to provide you with an updated version of the Document. =============================================================================== ***** 4. MODIFICATIONS ***** You may copy and distribute a Modified Version of the Document under the conditions of sections 2 and 3 above, provided that you release the Modified Version under precisely this License, with the Modified Version filling the role of the Document, thus licensing distribution and modification of the Modified Version to whoever possesses a copy of it. In addition, you must do these things in the Modified Version: a. Use in the Title Page (and on the covers, if any) a title distinct from that of the Document, and from those of previous versions (which should, if there were any, be listed in the History section of the Document). You may use the same title as a previous version if the original publisher of that version gives permission. b. List on the Title Page, as authors, one or more persons or entities responsible for authorship of the modifications in the Modified Version, together with at least five of the principal authors of the Document (all of its principal authors, if it has less than five). c. State on the Title page the name of the publisher of the Modified Version, as the publisher. d. Preserve all the copyright notices of the Document. e. Add an appropriate copyright notice for your modifications adjacent to the other copyright notices. f. Include, immediately after the copyright notices, a license notice giving the public permission to use the Modified Version under the terms of this License, in the form shown in the Addendum below. g. Preserve in that license notice the full lists of Invariant Sections and required Cover Texts given in the Document's license notice. h. Include an unaltered copy of this License. i. Preserve the section entitled "History", and its title, and add to it an item stating at least the title, year, new authors, and publisher of the Modified Version as given on the Title Page. If there is no section entitled "History" in the Document, create one stating the title, year, authors, and publisher of the Document as given on its Title Page, then add an item describing the Modified Version as stated in the previous sentence. j. Preserve the network location, if any, given in the Document for public access to a Transparent copy of the Document, and likewise the network locations given in the Document for previous versions it was based on. These may be placed in the "History" section. You may omit a network location for a work that was published at least four years before the Document itself, or if the original publisher of the version it refers to gives permission. k. In any section entitled "Acknowledgements" or "Dedications", preserve the section's title, and preserve in the section all the substance and tone of each of the contributor acknowledgements and/or dedications given therein. l. Preserve all the Invariant Sections of the Document, unaltered in their text and in their titles. Section numbers or the equivalent are not considered part of the section titles. m. Delete any section entitled "Endorsements". Such a section may not be included in the Modified Version. n. Do not retitle any existing section as "Endorsements" or to conflict in title with any Invariant Section. If the Modified Version includes new front-matter sections or appendices that qualify as Secondary Sections and contain no material copied from the Document, you may at your option designate some or all of these sections as invariant. To do this, add their titles to the list of Invariant Sections in the Modified Version's license notice. These titles must be distinct from any other section titles. You may add a section entitled "Endorsements", provided it contains nothing but endorsements of your Modified Version by various parties--for example, statements of peer review or that the text has been approved by an organization as the authoritative definition of a standard. You may add a passage of up to five words as a Front-Cover Text, and a passage of up to 25 words as a Back-Cover Text, to the end of the list of Cover Texts in the Modified Version. Only one passage of Front-Cover Text and one of Back- Cover Text may be added by (or through arrangements made by) any one entity. If the Document already includes a cover text for the same cover, previously added by you or by arrangement made by the same entity you are acting on behalf of, you may not add another; but you may replace the old one, on explicit permission from the previous publisher that added the old one. The author(s) and publisher(s) of the Document do not by this License give permission to use their names for publicity for or to assert or imply endorsement of any Modified Version. =============================================================================== ***** 5. COMBINING DOCUMENTS ***** You may combine the Document with other documents released under this License, under the terms defined in section 4 above for modified versions, provided that you include in the combination all of the Invariant Sections of all of the original documents, unmodified, and list them all as Invariant Sections of your combined work in its license notice. The combined work need only contain one copy of this License, and multiple identical Invariant Sections may be replaced with a single copy. If there are multiple Invariant Sections with the same name but different contents, make the title of each such section unique by adding at the end of it, in parentheses, the name of the original author or publisher of that section if known, or else a unique number. Make the same adjustment to the section titles in the list of Invariant Sections in the license notice of the combined work. In the combination, you must combine any sections entitled "History" in the various original documents, forming one section entitled "History"; likewise combine any sections entitled "Acknowledgements", and any sections entitled "Dedications". You must delete all sections entitled "Endorsements." =============================================================================== ***** 6. COLLECTIONS OF DOCUMENTS ***** You may make a collection consisting of the Document and other documents released under this License, and replace the individual copies of this License in the various documents with a single copy that is included in the collection, provided that you follow the rules of this License for verbatim copying of each of the documents in all other respects. You may extract a single document from such a collection, and distribute it individually under this License, provided you insert a copy of this License into the extracted document, and follow this License in all other respects regarding verbatim copying of that document. =============================================================================== ***** 7. AGGREGATION WITH INDEPENDENT WORKS ***** A compilation of the Document or its derivatives with other separate and independent documents or works, in or on a volume of a storage or distribution medium, does not as a whole count as a Modified Version of the Document, provided no compilation copyright is claimed for the compilation. Such a compilation is called an "aggregate", and this License does not apply to the other self-contained works thus compiled with the Document, on account of their being thus compiled, if they are not themselves derivative works of the Document. If the Cover Text requirement of section 3 is applicable to these copies of the Document, then if the Document is less than one quarter of the entire aggregate, the Document's Cover Texts may be placed on covers that surround only the Document within the aggregate. Otherwise they must appear on covers around the whole aggregate. =============================================================================== ***** 8. TRANSLATION ***** Translation is considered a kind of modification, so you may distribute translations of the Document under the terms of section 4. Replacing Invariant Sections with translations requires special permission from their copyright holders, but you may include translations of some or all Invariant Sections in addition to the original versions of these Invariant Sections. You may include a translation of this License provided that you also include the original English version of this License. In case of a disagreement between the translation and the original English version of this License, the original English version will prevail. =============================================================================== ***** 9. TERMINATION ***** You may not copy, modify, sublicense, or distribute the Document except as expressly provided for under this License. Any other attempt to copy, modify, sublicense or distribute the Document is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. =============================================================================== ***** 10. FUTURE REVISIONS OF THIS LICENSE ***** The Free Software Foundation may publish new, revised versions of the GNU Free Documentation License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. See http://www.gnu.org/copyleft/. Each version of the License is given a distinguishing version number. If the Document specifies that a particular numbered version of this License "or any later version" applies to it, you have the option of following the terms and conditions either of that specified version or of any later version that has been published (not as a draft) by the Free Software Foundation. If the Document does not specify a version number of this License, you may choose any version ever published (not as a draft) by the Free Software Foundation. =============================================================================== ***** How to use this License for your documents ***** To use this License in a document you have written, include a copy of the License in the document and put the following copyright and license notices just after the title page: Copyright (c) YEAR YOUR NAME. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with the Invariant Sections being LIST THEIR TITLES, with the Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST. A copy of the license is included in the section entitled "GNU Free Documentation License". If you have no Invariant Sections, write "with no Invariant Sections" instead of saying which ones are invariant. If you have no Front-Cover Texts, write "no Front-Cover Texts" instead of "Front-Cover Texts being LIST"; likewise for Back-Cover Texts. If your document contains nontrivial examples of program code, we recommend releasing these examples in parallel under your choice of free software license, such as the GNU General Public License, to permit their use in free software.