├── .gitignore ├── .travis.yml ├── Gemfile ├── LICENSE ├── README.md ├── _config.yml ├── _data ├── chanmembers.yaml ├── chanmodes.yaml ├── chantypes.yaml ├── clientcaps.yaml ├── ctcp.yaml ├── extbans.yaml ├── formatting.yaml ├── isupport.yaml ├── numerics.yaml ├── selfmessage.yaml ├── servermodes.yaml ├── snomasks.yaml ├── stats.yaml ├── tags.yaml ├── usermodes.yaml └── validation │ ├── chanmembers.meta.yaml │ ├── chanmodes.meta.yaml │ ├── chantypes.meta.yaml │ ├── clientcaps.meta.yaml │ ├── ctcp.meta.yaml │ ├── extbans.meta.yaml │ ├── formatting.meta.yaml │ ├── irc-list.types.yaml │ ├── isupport.meta.yaml │ ├── numerics.meta.yaml │ ├── selfmessage.meta.yaml │ ├── servermodes.meta.yaml │ ├── snomasks.meta.yaml │ ├── stats.meta.yaml │ ├── tags.meta.yaml │ └── usermodes.meta.yaml ├── _includes └── table.html ├── _layouts ├── compress.html └── default.html ├── _legacy_data ├── chanmembers.def ├── chanmodes.def ├── chantypes.def ├── def_to_yaml.py ├── irc2numerics.def ├── servermodes.def └── usermodes.def ├── defs ├── chanmembers.html ├── chanmodes.html ├── chantypes.html ├── clientcaps.html ├── ctcp.html ├── extbans.html ├── isupport.html ├── numerics.html ├── servermodes.html ├── snomasks.html ├── stats.html ├── tags.html └── usermodes.html ├── discover_numerics ├── index.html └── info ├── formatting.html └── selfmessages.html /.gitignore: -------------------------------------------------------------------------------- 1 | 2 | # Created by https://www.gitignore.io/api/windows,osx,linux,python,jekyll 3 | 4 | ### Windows ### 5 | # Windows image file caches 6 | Thumbs.db 7 | ehthumbs.db 8 | 9 | # Folder config file 10 | Desktop.ini 11 | 12 | # Recycle Bin used on file shares 13 | $RECYCLE.BIN/ 14 | 15 | # Windows Installer files 16 | *.cab 17 | *.msi 18 | *.msm 19 | *.msp 20 | 21 | # Windows shortcuts 22 | *.lnk 23 | 24 | 25 | ### OSX ### 26 | .DS_Store 27 | .AppleDouble 28 | .LSOverride 29 | 30 | # Icon must end with two \r 31 | Icon 32 | 33 | # Thumbnails 34 | ._* 35 | 36 | # Files that might appear in the root of a volume 37 | .DocumentRevisions-V100 38 | .fseventsd 39 | .Spotlight-V100 40 | .TemporaryItems 41 | .Trashes 42 | .VolumeIcon.icns 43 | 44 | # Directories potentially created on remote AFP share 45 | .AppleDB 46 | .AppleDesktop 47 | Network Trash Folder 48 | Temporary Items 49 | .apdisk 50 | 51 | 52 | ### Linux ### 53 | *~ 54 | 55 | # KDE directory preferences 56 | .directory 57 | 58 | # Linux trash folder which might appear on any partition or disk 59 | .Trash-* 60 | 61 | 62 | ### Python ### 63 | # Byte-compiled / optimized / DLL files 64 | __pycache__/ 65 | *.py[cod] 66 | *$py.class 67 | 68 | # C extensions 69 | *.so 70 | 71 | # Distribution / packaging 72 | .Python 73 | env/ 74 | build/ 75 | develop-eggs/ 76 | dist/ 77 | downloads/ 78 | eggs/ 79 | .eggs/ 80 | lib/ 81 | lib64/ 82 | parts/ 83 | sdist/ 84 | var/ 85 | *.egg-info/ 86 | .installed.cfg 87 | *.egg 88 | 89 | # PyInstaller 90 | # Usually these files are written by a python script from a template 91 | # before PyInstaller builds the exe, so as to inject date/other infos into it. 92 | *.manifest 93 | *.spec 94 | 95 | # Installer logs 96 | pip-log.txt 97 | pip-delete-this-directory.txt 98 | 99 | # Unit test / coverage reports 100 | htmlcov/ 101 | .tox/ 102 | .coverage 103 | .coverage.* 104 | .cache 105 | nosetests.xml 106 | coverage.xml 107 | *,cover 108 | .hypothesis/ 109 | 110 | # Translations 111 | *.mo 112 | *.pot 113 | 114 | # Django stuff: 115 | *.log 116 | 117 | # Sphinx documentation 118 | docs/_build/ 119 | 120 | # PyBuilder 121 | target/ 122 | 123 | 124 | ### Jekyll ### 125 | _site/ 126 | .sass-cache/ 127 | .jekyll-metadata 128 | 129 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | dist: bionic 2 | 3 | before_install: 4 | - sudo apt update --quiet --quiet 5 | - sudo apt install --quiet --quiet python3-pip python3-setuptools 6 | - pip3 install --quiet --upgrade --user pip 7 | 8 | script: 9 | - bundle exec jekyll build 10 | - pip3 install --quiet --upgrade --user git+https://github.com/DanielOaks/yamltypes.git@irc-defs-fixes#egg=yamltypes 11 | - ~/.local/bin/yamlvalidate $(find _data | grep \.yaml | grep -v "validation/" | xargs) --path _data/validation 12 | 13 | notifications: 14 | email: false 15 | 16 | env: 17 | global: 18 | - NOKOGIRI_USE_SYSTEM_LIBRARIES=true 19 | 20 | git: 21 | quiet: true 22 | 23 | cache: 24 | bundler: true 25 | -------------------------------------------------------------------------------- /Gemfile: -------------------------------------------------------------------------------- 1 | source "https://rubygems.org" 2 | 3 | gem "jekyll" 4 | gem "jekyll-sitemap" 5 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | CC0 1.0 Universal 2 | 3 | Statement of Purpose 4 | 5 | The laws of most jurisdictions throughout the world automatically confer 6 | exclusive Copyright and Related Rights (defined below) upon the creator and 7 | subsequent owner(s) (each and all, an "owner") of an original work of 8 | authorship and/or a database (each, a "Work"). 9 | 10 | Certain owners wish to permanently relinquish those rights to a Work for the 11 | purpose of contributing to a commons of creative, cultural and scientific 12 | works ("Commons") that the public can reliably and without fear of later 13 | claims of infringement build upon, modify, incorporate in other works, reuse 14 | and redistribute as freely as possible in any form whatsoever and for any 15 | purposes, including without limitation commercial purposes. These owners may 16 | contribute to the Commons to promote the ideal of a free culture and the 17 | further production of creative, cultural and scientific works, or to gain 18 | reputation or greater distribution for their Work in part through the use and 19 | efforts of others. 20 | 21 | For these and/or other purposes and motivations, and without any expectation 22 | of additional consideration or compensation, the person associating CC0 with a 23 | Work (the "Affirmer"), to the extent that he or she is an owner of Copyright 24 | and Related Rights in the Work, voluntarily elects to apply CC0 to the Work 25 | and publicly distribute the Work under its terms, with knowledge of his or her 26 | Copyright and Related Rights in the Work and the meaning and intended legal 27 | effect of CC0 on those rights. 28 | 29 | 1. Copyright and Related Rights. A Work made available under CC0 may be 30 | protected by copyright and related or neighboring rights ("Copyright and 31 | Related Rights"). Copyright and Related Rights include, but are not limited 32 | to, the following: 33 | 34 | i. the right to reproduce, adapt, distribute, perform, display, communicate, 35 | and translate a Work; 36 | 37 | ii. moral rights retained by the original author(s) and/or performer(s); 38 | 39 | iii. publicity and privacy rights pertaining to a person's image or likeness 40 | depicted in a Work; 41 | 42 | iv. rights protecting against unfair competition in regards to a Work, 43 | subject to the limitations in paragraph 4(a), below; 44 | 45 | v. rights protecting the extraction, dissemination, use and reuse of data in 46 | a Work; 47 | 48 | vi. database rights (such as those arising under Directive 96/9/EC of the 49 | European Parliament and of the Council of 11 March 1996 on the legal 50 | protection of databases, and under any national implementation thereof, 51 | including any amended or successor version of such directive); and 52 | 53 | vii. other similar, equivalent or corresponding rights throughout the world 54 | based on applicable law or treaty, and any national implementations thereof. 55 | 56 | 2. Waiver. To the greatest extent permitted by, but not in contravention of, 57 | applicable law, Affirmer hereby overtly, fully, permanently, irrevocably and 58 | unconditionally waives, abandons, and surrenders all of Affirmer's Copyright 59 | and Related Rights and associated claims and causes of action, whether now 60 | known or unknown (including existing as well as future claims and causes of 61 | action), in the Work (i) in all territories worldwide, (ii) for the maximum 62 | duration provided by applicable law or treaty (including future time 63 | extensions), (iii) in any current or future medium and for any number of 64 | copies, and (iv) for any purpose whatsoever, including without limitation 65 | commercial, advertising or promotional purposes (the "Waiver"). Affirmer makes 66 | the Waiver for the benefit of each member of the public at large and to the 67 | detriment of Affirmer's heirs and successors, fully intending that such Waiver 68 | shall not be subject to revocation, rescission, cancellation, termination, or 69 | any other legal or equitable action to disrupt the quiet enjoyment of the Work 70 | by the public as contemplated by Affirmer's express Statement of Purpose. 71 | 72 | 3. Public License Fallback. Should any part of the Waiver for any reason be 73 | judged legally invalid or ineffective under applicable law, then the Waiver 74 | shall be preserved to the maximum extent permitted taking into account 75 | Affirmer's express Statement of Purpose. In addition, to the extent the Waiver 76 | is so judged Affirmer hereby grants to each affected person a royalty-free, 77 | non transferable, non sublicensable, non exclusive, irrevocable and 78 | unconditional license to exercise Affirmer's Copyright and Related Rights in 79 | the Work (i) in all territories worldwide, (ii) for the maximum duration 80 | provided by applicable law or treaty (including future time extensions), (iii) 81 | in any current or future medium and for any number of copies, and (iv) for any 82 | purpose whatsoever, including without limitation commercial, advertising or 83 | promotional purposes (the "License"). The License shall be deemed effective as 84 | of the date CC0 was applied by Affirmer to the Work. Should any part of the 85 | License for any reason be judged legally invalid or ineffective under 86 | applicable law, such partial invalidity or ineffectiveness shall not 87 | invalidate the remainder of the License, and in such case Affirmer hereby 88 | affirms that he or she will not (i) exercise any of his or her remaining 89 | Copyright and Related Rights in the Work or (ii) assert any associated claims 90 | and causes of action with respect to the Work, in either case contrary to 91 | Affirmer's express Statement of Purpose. 92 | 93 | 4. Limitations and Disclaimers. 94 | 95 | a. No trademark or patent rights held by Affirmer are waived, abandoned, 96 | surrendered, licensed or otherwise affected by this document. 97 | 98 | b. Affirmer offers the Work as-is and makes no representations or warranties 99 | of any kind concerning the Work, express, implied, statutory or otherwise, 100 | including without limitation warranties of title, merchantability, fitness 101 | for a particular purpose, non infringement, or the absence of latent or 102 | other defects, accuracy, or the present or absence of errors, whether or not 103 | discoverable, all to the greatest extent permissible under applicable law. 104 | 105 | c. Affirmer disclaims responsibility for clearing rights of other persons 106 | that may apply to the Work or any use thereof, including without limitation 107 | any person's Copyright and Related Rights in the Work. Further, Affirmer 108 | disclaims responsibility for obtaining any necessary consents, permissions 109 | or other rights required for any use of the Work. 110 | 111 | d. Affirmer understands and acknowledges that Creative Commons is not a 112 | party to this document and has no duty or obligation with respect to this 113 | CC0 or use of the Work. 114 | 115 | For more information, please see 116 | 117 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # IRC Definition Lists 2 | 3 | These are IRC definition lists. Things like lists of IRC numerics, channel modes, user modes and other things that are implemented in various bits of IRC software. 4 | 5 | Base data was taken from [alien.net.au](https://www.alien.net.au/irc/), converted to YAML via the tools in the `_legacy_data/` folder and adapted for use with the [Jekyll](https://jekyllrb.com/) static site generator (used by Github Pages). 6 | 7 | Pull requests to correct or update these lists are welcomed. 8 | 9 | Online Site: https://defs.ircdocs.horse/ 10 | 11 | ## Available Pages 12 | 13 | * [Channel Member Prefixes](https://defs.ircdocs.horse/defs/chanmembers.html) 14 | * [Channel Modes](https://defs.ircdocs.horse/defs/chanmodes.html) 15 | * [Channel Type Prefixes](https://defs.ircdocs.horse/defs/chantypes.html) 16 | * [Client Capabilities](https://defs.ircdocs.horse/defs/clientcaps.html) 17 | * [CTCP Messages](https://defs.ircdocs.horse/defs/ctcp.html) 18 | * [Extended Bans](https://defs.ircdocs.horse/defs/extbans.html) 19 | * [Formatting Characters](https://defs.ircdocs.horse/info/formatting.html) 20 | * [RPL_ISUPPORT Tokens](https://defs.ircdocs.horse/defs/isupport.html) 21 | * [Numerics](https://defs.ircdocs.horse/defs/numerics.html) 22 | * [Server Modes](https://defs.ircdocs.horse/defs/servermodes.html) 23 | * [Server Notice Masks](https://defs.ircdocs.horse/defs/snomasks.html) 24 | * [STATS Characters](https://defs.ircdocs.horse/defs/stats.html) 25 | * [Message Tags](https://defs.ircdocs.horse/defs/tags.html) 26 | * [User Modes](https://defs.ircdocs.horse/defs/usermodes.html) 27 | 28 | ## Repo Structure 29 | 30 | Given that this is a Jekyll site, there's a very particular way this repo is laid out, which I'll go through here: 31 | 32 | * `_data/` - contains the data files, which make up our tables; 33 | * `validation/` - contains validation files, which [yamltypes](https://github.com/DanielOaks/yamltypes) uses to validate the data files; 34 | * `chanmembers.yaml` - data for Channel Member Prefixes; 35 | * `chanmodes.yaml` - data for Channel Modes; 36 | * `chantypes.yaml` - data for Channel Type Prefixes; 37 | * `clientcaps.yaml` - data for Client Capabilities; 38 | * `ctcp.yaml` - data for CTCP Messages; 39 | * `extbans.yaml` - data for Extended Bans (banning/excluding by account, etc.); 40 | * `formatting.yaml` - data for Formatting Characters support in different clients; 41 | * `isupport.yaml` - data for `RPL_ISUPPORT` Tokens; 42 | * `numerics.yaml` - data for Numerics; 43 | * `selfmessage.yaml` - data for self-message support in different clients; 44 | * `servermodes.yaml` - data for Server Modes; 45 | * `snomasks.yaml` - data for Server Notice Masks; 46 | * `stats.yaml` - data for `STATS` Characters; 47 | * `tags.yaml` - data for Message Tags; 48 | * `usermodes.yaml` - data for User Modes; 49 | * `_includes/` - contains Jekyll HTML includes; 50 | * `table.html` - this is the main data-table printer, outputs based on the content of the YAML data files; 51 | * `_layouts/` - contains Jekyll HTML layouts; 52 | * `_legacy_data/` - contains the original data files from [alient.net.au](https://www.alien.net.au/irc/), which we used, along with our original conversion script; 53 | * `defs/` - contains the front-end HTML for each definitions page; 54 | * `discover_numerics` - script to discover numerics for various IRC servers from their source repo. 55 | 56 | ## YAML Structure 57 | 58 | To interpret YAML data files: 59 | 60 | //TODO 61 | 62 | ## License 63 | 64 | The following license information is from the [alien.net.au](https://www.alien.net.au/irc/) website: 65 | ``` 66 | You may be interested in using the definition files in your own project; 67 | There are no license restrictions, other than to retain the copyright information. 68 | ``` 69 | Copyright information is listed in the specific converted spec files in the `_data/` folder (as in the original `.def` files downloaded from [alien.net.au](https://www.alien.net.au/irc/)). 70 | 71 | ## Discovering Numerics 72 | 73 | I've written a script called `discover_numerics` that helps me search for numerics that aren't currently listed in our list. It's helpful to use this to search new releases of ircd-hybrid, inspircd, charybdis, unrealircd, etc. 74 | 75 | It requires the `pyyaml` and `docopt` python modules. To install the required modules, install `python3-pip`, then run: 76 | ``` 77 | pip3 install pyyaml docopt 78 | ``` 79 | 80 | ### Usage Examples 81 | 82 | #### Searching a typical `numeric.h` file 83 | 84 | Searching a single `numeric.h` file, such as in ircd-hybrid, charybdis, unrealircd, etc: 85 | ``` 86 | ./discover_numerics search /path/to/ircd/include/numerics.h 87 | ``` 88 | 89 | #### Searching InspIRCd 90 | 91 | Because inspircd scatters its numeric definitions all over its source directory, you can't just search a single file. Because of this, you need to search multiple files in the directory like this: 92 | 93 | `find /path/to/inspircd/ -type f | xargs ./discover_numerics search` 94 | 95 | This also does not find every numeric, thanks to how inspircd likes to use numerics directly rather than `#define` them. 96 | 97 | Numerics will output as lines like this, which makes it simple to grep through the source directory to discover the format and usage of these numerics: 98 | ``` 99 | Could not find numeric: RPL_STATSCLONE (225) 100 | Could not find numeric: RPL_USINGSSL (275) 101 | Could not find numeric: RPL_EXEMPTLIST (348) 102 | Could not find numeric: RPL_ENDOFEXEMPTLIST (349) 103 | Could not find numeric: RPL_RWHOREPLY (354) 104 | Could not find numeric: ERR_TARGETTOFAST (439) 105 | Could not find numeric: ERR_NOSSL (488) 106 | Could not find numeric: ERR_NOSHAREDCHAN (493) 107 | Could not find numeric: ERR_LAST_ERR_MSG (504) 108 | ``` 109 | -------------------------------------------------------------------------------- /_config.yml: -------------------------------------------------------------------------------- 1 | title: IRC Definition Lists 2 | 3 | exclude: 4 | - Gemfile 5 | - LICENSE 6 | - README.md 7 | - discover_numeric 8 | - vendor 9 | 10 | plugins: 11 | - jekyll-sitemap 12 | 13 | incremental: true 14 | -------------------------------------------------------------------------------- /_data/chanmembers.yaml: -------------------------------------------------------------------------------- 1 | # chanmembers.yaml 2 | # 3 | # This file is Copyright (c) 2015-2019 Daniel Oaks 4 | # 5 | # This file is Copyright (c) 2001-2004 Simon Butcher 6 | # 7 | # 8 | # This file is PUBLIC DOMAIN, to benefit the IRC developer community. If you 9 | # modify this file, please state your name and modifications here in order 10 | # for people to be able to distinguish between your version and this version. 11 | # 12 | # For more information or corrections, please contact the author. 13 | 14 | file: 15 | type: "chanmembers" 16 | revision: "1.60" 17 | 18 | # The following information is used to create pretty HTML page and tables 19 | 20 | page: 21 | name: Channel Member Prefixes 22 | extra: > 23 |

24 | Red denotes a conflicting numeric definition, gray for deprecated 25 | (however quite possibly still in use), and blue for OK. Where 26 | multiple prefix or mode characters may be commonly seen in the wild 27 | for this membership prefix, they are listed together. 28 |

29 | 30 | table: 31 | row-id: name 32 | 33 | row-classes: 34 | - conflict 35 | - obsolete 36 | 37 | columns: 38 | - 39 | name: Prefix 40 | content: prefixchar 41 | classes: code center 42 | inline-link: name 43 | description: Prefix character 44 | - 45 | name: Name 46 | content: name 47 | classes: code 48 | link: information 49 | - 50 | name: Mode 51 | content: mode 52 | classes: code center 53 | description: Mode character that enables this prefix 54 | - 55 | name: Origin 56 | content: origin 57 | link: contact 58 | description: Where the prefix came from 59 | - 60 | name: Comments 61 | content: comment 62 | seealso: seealso 63 | description: "Additional comments, history and other details" 64 | 65 | # The following format is used through-out this file. The fields 'name', 66 | # 'prefixchar', and irc2_mode are mandatory, the others may or may not exist. 67 | 68 | format: 69 | name: membership type name 70 | prefixchar: the prefix character for nicknames to denote status 71 | mode: irc2 mode character associated with this membership 72 | origin: where the mode was found 73 | when: release version or announced date 74 | contact: point of contact associated with the membership 75 | information: url where to find more information 76 | comment: "comments, history etc" 77 | conflict: true 78 | obsolete: true 79 | 80 | values: 81 | - 82 | name: FOUNDER 83 | prefixchar: "~" 84 | mode: q 85 | origin: EliteIRCd 86 | comment: > 87 | User created the channel. This user usually cannot be kicked 88 | or have this mode taken away by other users. In some software, 89 | they may perform actions that operators can, but are at a 90 | higher privilege level than either operators or protected 91 | users. 92 | 93 | - 94 | name: PROTECTED 95 | prefixchar: "& !" 96 | mode: a 97 | origin: EliteIRCd 98 | comment: > 99 | User is "protected". This means they cannot be kicked or have 100 | this mode taken away by operators (or other protected users). 101 | In some software, they may perform actions that operators can, 102 | but at a higher privilege level than operators. 103 | 104 | - 105 | name: OPERATOR 106 | prefixchar: "@" 107 | mode: o 108 | origin: RFC1459 109 | comment: > 110 | User is a channel operator. They can kick users, change modes, 111 | set other users to operator (or lower) status, etc. 112 | 113 | - 114 | name: HALF_OPERATOR 115 | prefixchar: "%" 116 | mode: h 117 | origin: Hybrid 118 | comment: > 119 | User is a channel half-operator, that is they have 'half' the 120 | access of a full operator. Half-ops can kick unopped users, 121 | voiced users, set channel modes including +v, but not kick ops 122 | or deop ops. This leads to greater security on channels. 123 | 124 | - 125 | name: VOICED 126 | prefixchar: "+" 127 | mode: v 128 | origin: RFC1459 129 | comment: > 130 | Channel member is voiced. They can speak while the channel is 131 | being moderated. Some implementations also allow them to speak 132 | when barred from access to the channel for some reason (such as 133 | being banned) 134 | 135 | - 136 | name: CREATOR 137 | prefixchar: "@" 138 | mode: O 139 | origin: RFC2811 140 | comment: > 141 | The user created the channel, but only used for '!' channels 142 | according to the RFC. 143 | 144 | obsolete: true 145 | -------------------------------------------------------------------------------- /_data/chantypes.yaml: -------------------------------------------------------------------------------- 1 | # chantypes.yaml 2 | # 3 | # This file is Copyright (c) 2015-2019 Daniel Oaks 4 | # 5 | # This file is Copyright (c) 2001-2004 Simon Butcher 6 | # 7 | # 8 | # This file is PUBLIC DOMAIN, to benefit the IRC developer community. If you 9 | # modify this file, please state your name and modifications here in order 10 | # for people to be able to distinguish between your version and this version. 11 | # 12 | # For more information or corrections, please contact the author. 13 | 14 | file: 15 | type: "chantypes" 16 | revision: "1.60" 17 | 18 | # The following information is used to create pretty HTML page and tables 19 | 20 | page: 21 | name: Channel Type Prefixes 22 | extra: > 23 |

24 | Red denotes a conflicting numeric definition, gray for deprecated 25 | (however quite possibly still in use), and blue for OK. 26 |

27 | 28 | table: 29 | row-id: name 30 | 31 | row-classes: 32 | - conflict 33 | - obsolete 34 | 35 | columns: 36 | - 37 | name: Prefix 38 | content: prefixchar 39 | classes: code center 40 | inline-link: name 41 | description: Prefix character 42 | - 43 | name: Name 44 | content: name 45 | classes: code 46 | link: information 47 | - 48 | name: Origin 49 | content: origin 50 | link: contact 51 | description: Where the prefix came from 52 | - 53 | name: Creatable 54 | content: clientcreate 55 | classes: center 56 | description: Can regular clients create this type of channel? 57 | - 58 | name: Comments 59 | content: comment 60 | seealso: seealso 61 | description: "Additional comments, history and other details" 62 | markdown: true 63 | 64 | 65 | # The following format is used through-out this file. The fields 'name' and 66 | # 'prefixchar' are mandatory, the others may or may not exist. 67 | # 68 | # The 'clientcreate' field determines whether or not a normal client may 69 | # create a channel of that type. If it's set to no, then the channel must 70 | # be created some other way (such as a service, server, or even an operator). 71 | 72 | format: 73 | name: channel type name 74 | prefixchar: channel type prefix character 75 | origin: where the type was found 76 | when: release version or announced date 77 | contact: point of contact associated with the type 78 | information: url where to find more information 79 | comment: "comments, history etc" 80 | clientcreate: Y 81 | conflict: true 82 | obsolete: true 83 | 84 | values: 85 | - 86 | name: LOCAL 87 | prefixchar: "&" 88 | origin: RFC1459 89 | comment: > 90 | This channel type is known only to the server they are created 91 | on, and as such only clients on that server can join it. Each 92 | instance of this channel type is contained per server. 93 | 94 | clientcreate: Y 95 | 96 | - 97 | name: NETWORK 98 | prefixchar: "#" 99 | origin: RFC1459 100 | comment: > 101 | This channel type is known to all servers that are connected to 102 | the network. 103 | 104 | clientcreate: Y 105 | 106 | - 107 | name: NETWORK_SAFE 108 | prefixchar: "!" 109 | origin: RFC2811 110 | comment: > 111 | These channels work similar to the `'#'` channels, except the name 112 | is prefixed not only with the `'!'` but also a set of alpha- 113 | numeric digits. This is an alternative to the time-stamp method 114 | of avoiding channel-takeovers during network splits. 115 | 116 | clientcreate: Y 117 | 118 | - 119 | name: NETWORK_UNMODERATED 120 | prefixchar: "+" 121 | origin: RFC2811 122 | comment: > 123 | These unmoderated channels work almost exactly the same as `'#'` 124 | channels, except nobody can obtain channel operator status on 125 | them. Some implementations seem to set the channel mode to `'+nt'` 126 | upon creation, however most implementations act as if modes `+nt` 127 | are set but don't announce them as being set. 128 | 129 | clientcreate: Y 130 | -------------------------------------------------------------------------------- /_data/clientcaps.yaml: -------------------------------------------------------------------------------- 1 | # clientcaps.yaml 2 | # 3 | # This file is Copyright (c) 2016-2019 Daniel Oaks 4 | # 5 | # 6 | # This file is PUBLIC DOMAIN, to benefit the IRC developer community. If you 7 | # modify this file, please state your name and modifications here in order 8 | # for people to be able to distinguish between your version and this version. 9 | # 10 | # For more information or corrections, please contact the author. 11 | 12 | file: 13 | type: "clientcaps" 14 | revision: "0.10" 15 | 16 | # The following information is used to create pretty HTML page and tables 17 | 18 | page: 19 | name: Client Capabilities 20 | extra: > 21 |

22 | Red denotes a conflicting token definition, gray for deprecated 23 | (however quite possibly still in use), yellow for proposed, and 24 | blue for OK. 25 |

26 | 27 | table: 28 | row-id: name 29 | 30 | row-classes: 31 | - conflict 32 | - obsolete 33 | - proposed 34 | - repeated 35 | 36 | columns: 37 | - 38 | name: Name 39 | content: name 40 | classes: code 41 | link: information 42 | - 43 | name: Format 44 | content: format 45 | classes: code 46 | description: Format of the token 47 | examples: true 48 | - 49 | name: Comments 50 | content: comment 51 | seealso: seealso 52 | description: "Additional comments, history and other details" 53 | markdown: true 54 | 55 | # The following format is used through-out this file. The first field 56 | # ('name') is mandatory, the others may or may not exist. 57 | 58 | format: 59 | name: token name 60 | origin: where the token was found 61 | contact: point of contact associated with the token 62 | information: url where to find more information 63 | format: the token format 64 | comment: "comments, history etc" 65 | seealso: name 66 | conflict: true 67 | obsolete: true 68 | repeated: true 69 | 70 | values: 71 | - 72 | name: account-notify 73 | format: "account-notify" 74 | information: "http://ircv3.net/specs/extensions/account-notify-3.1.html" 75 | comment: > 76 | Notifies clients when other clients in common channels authenticate 77 | with or deauthenticate from their account (e.g. NickServ, SASL). 78 | 79 | - 80 | name: account-tag 81 | format: "account-tag" 82 | information: "http://ircv3.net/specs/extensions/account-tag-3.2.html" 83 | comment: > 84 | Attaches a tag containing the user's account to every message they 85 | send. 86 | 87 | - 88 | name: away-notify 89 | format: "away-notify" 90 | information: "http://ircv3.net/specs/extensions/away-notify-3.1.html" 91 | comment: > 92 | Notifies clients when other clients in common channels go away or 93 | come back (replacing the traditional method of clients polling the 94 | server for changes). 95 | 96 | - 97 | name: batch 98 | format: "batch" 99 | information: "http://ircv3.net/specs/extensions/batch-3.2.html" 100 | comment: > 101 | Lets the server bundle common messages together, which lets clients 102 | be more intelligent about displaying and processing them. i.e., 103 | netsplits and netjoins, chat history, etc. 104 | 105 | - 106 | name: cap-notify 107 | format: "cap-notify" 108 | information: "http://ircv3.net/specs/extensions/cap-notify-3.2.html" 109 | comment: > 110 | Notifies clients when client capabilities become available or are 111 | no longer available. 112 | 113 | Implicitly enabled with `CAP LS 302` or higher. 114 | 115 | - 116 | name: chghost 117 | format: "chghost" 118 | information: "http://ircv3.net/specs/extensions/chghost-3.2.html" 119 | comment: > 120 | Enables the `CHGHOST` message, which lets servers notify clients 121 | when another client's username and/or hostname changes. 122 | 123 | - 124 | name: echo-message 125 | format: "echo-message" 126 | information: "http://ircv3.net/specs/extensions/echo-message-3.2.html" 127 | comment: > 128 | Notifies clients when their `PRIVMSG` and `NOTICE`s are correctly 129 | received by the server. Will be more useful for general clients 130 | when the IRCv3 WG standardizes their `id` tag to let clients track 131 | these messages properly. 132 | 133 | - 134 | name: extended-join 135 | format: "extended-join" 136 | information: "http://ircv3.net/specs/extensions/extended-join-3.1.html" 137 | comment: > 138 | Extends the `JOIN` message to include the account name of the 139 | joining client. Used in conjunction with the `account-*` caps to 140 | let clients track account information better. 141 | 142 | seealso: "account-notify" 143 | 144 | - 145 | name: inspircd.org/replay-message 146 | format: "inspircd.org/replay-message" 147 | comment: > 148 | Functionally equivalent to `echo-message`. Use `echo-message` 149 | rather than this capability. 150 | 151 | obsolete: true 152 | seealso: "echo-message" 153 | 154 | - 155 | name: invite-notify 156 | format: "invite-notify" 157 | information: "http://ircv3.net/specs/extensions/invite-notify-3.2.html" 158 | comment: > 159 | Notifies clients when other clients are invited to common channels. 160 | The notify messages are generally only sent to privileged channel 161 | members. 162 | 163 | - 164 | name: metadata 165 | format: "metadata" 166 | information: "http://ircv3.net/specs/core/metadata-3.2.html" 167 | comment: > 168 | Lets clients store metadata about themselves with the server, for 169 | other clients to request and retrieve later. 170 | 171 | - 172 | name: monitor 173 | format: "monitor" 174 | information: "http://ircv3.net/specs/core/monitor-3.2.html" 175 | comment: > 176 | Indicates support for the `MONITOR` command, which lets users 177 | request notifications for when clients become online / offline. 178 | 179 | - 180 | name: multi-prefix 181 | format: "multi-prefix" 182 | information: "http://ircv3.net/specs/extensions/multi-prefix-3.1.html" 183 | comment: > 184 | Makes the server send *all* prefixes in `NAMES` and `WHO` output, 185 | in order of rank from highest to lowest. Replaces the `UHNAMES` 186 | token for `RPL_ISUPPORT`. 187 | 188 | - 189 | name: sasl 190 | format: "sasl[=mechanism{,mechanism}]" 191 | information: "http://ircv3.net/specs/extensions/sasl-3.2.html" 192 | comment: > 193 | Indicates support for SASL authentication, a standardized way for 194 | clients to identify for an account. Replaces the 195 | `NICKSERV IDENTIFY` command / private message and lets IRC clients 196 | build better interfaces for account auth. 197 | 198 | examples: 199 | - "sasl" 200 | - "sasl=PLAIN" 201 | - "sasl=EXTERNAL,FOO,DH-AES,BAR,DH-BLOWFISH,FOOBAR,PLAIN" 202 | 203 | - 204 | name: server-time 205 | format: "server-time" 206 | information: "http://ircv3.net/specs/extensions/server-time-3.2.html" 207 | comment: > 208 | Lets clients show the actual time messages were received by the 209 | server. Facilitates things like IRC history playback by bouncers. 210 | 211 | - 212 | name: tls 213 | format: "tls" 214 | information: "http://ircv3.net/specs/extensions/tls-3.1.html" 215 | comment: > 216 | Indicates support for the `STARTTLS` command, which lets clients 217 | upgrade their connection to use SSL/TLS rather than plaintext. 218 | 219 | - 220 | name: twitch.tv/commands 221 | format: "twitch.tv/commands" 222 | information: "https://github.com/justintv/Twitch-API/blob/master/IRC.md#commands" 223 | comment: > 224 | Used by Twitch.tv to enable the `USERSTATE`, `GLOBALSTATE`, 225 | `ROOMSTATE`, `HOSTTARGET`, `NOTICE`, and `CLEARCHAT` messages, as 226 | well as the `msg-id` tag. 227 | 228 | - 229 | name: twitch.tv/membership 230 | format: "twitch.tv/membership" 231 | information: "https://github.com/justintv/Twitch-API/blob/master/IRC.md#membership" 232 | comment: > 233 | Used by Twitch.tv to enable the `NAMES`, `JOIN`, `PART`, and `MODE` 234 | channel membership and state messages. 235 | 236 | - 237 | name: twitch.tv/tags 238 | format: "twitch.tv/tags" 239 | information: "https://github.com/justintv/Twitch-API/blob/master/IRC.md#tags" 240 | comment: > 241 | Used by Twitch.tv to enable custom tags on the `PRIVMSG`, 242 | `USERSTATE`, `NOTICE`, and `GLOBALUSERSTATE` messages. 243 | 244 | - 245 | name: userhost-in-names 246 | format: "userhost-in-names" 247 | information: "http://ircv3.net/specs/extensions/userhost-in-names-3.2.html" 248 | comment: > 249 | Extends the `RPL_NAMREPLY` message to contain the full nickmask 250 | `(nick!user@host)` of every user, rather than just the nickname. 251 | 252 | - 253 | name: znc.in/self-message 254 | format: "znc.in/self-message" 255 | comment: > 256 | Used by ZNC to make sure all connected sessions receive copies of 257 | private messages sent by other sessions. 258 | 259 | seealso: "echo-message" 260 | -------------------------------------------------------------------------------- /_data/ctcp.yaml: -------------------------------------------------------------------------------- 1 | # ctcp.yaml 2 | # 3 | # This file is Copyright (c) 2016-2019 Daniel Oaks 4 | # 5 | # 6 | # This file is PUBLIC DOMAIN, to benefit the IRC developer community. If you 7 | # modify this file, please state your name and modifications here in order 8 | # for people to be able to distinguish between your version and this version. 9 | # 10 | # For more information or corrections, please contact the author. 11 | 12 | file: 13 | type: "ctcp" 14 | revision: "0.10" 15 | 16 | # The following information is used to create pretty HTML page and tables 17 | 18 | page: 19 | name: Client-to-Client Protocol (CTCP) Messages 20 | extra: > 21 |

22 | Red denotes a conflicting CTCP definition, gray for deprecated 23 | (however quite possibly still in use), and blue for OK. 24 |

25 |

26 | For further information, feel free to see the Modern 27 | Client-to-Client Protocol (CTCP) docs. 28 |

29 | 30 | table: 31 | row-ids: 32 | - name 33 | 34 | row-classes: 35 | - conflict 36 | - obsolete 37 | 38 | columns: 39 | - 40 | name: Name 41 | content: name 42 | link: information 43 | - 44 | name: Type 45 | content: ctcp-type 46 | description: > 47 | Extended formatting CTCPs change how messages are displayed. 48 | Metadata query CTCPs provide static information about the target client, user or connection. 49 | Extended query CTCPs provide dynamic information or invoke actions from the client. 50 | - 51 | name: Format 52 | content: format 53 | classes: code 54 | description: Format of the CTCP message 55 | xml_escape: true 56 | examples: true 57 | - 58 | name: Spread 59 | content: spread 60 | description: How widely-spread this CTCP message is 61 | xml_escape: true 62 | - 63 | name: Description 64 | content: desc 65 | seealso: seealso 66 | description: Description of how the CTCP works 67 | markdown: true 68 | 69 | values: 70 | - 71 | name: ACTION 72 | format: "ACTION " 73 | ctcp-type: Extended Formatting 74 | spread: Universal 75 | information: "http://modern.ircdocs.horse/ctcp.html#action" 76 | desc: > 77 | Displays `` as an _action_ or _emote_. In clients, it's 78 | generally activated with the command `/me` 79 | examples: 80 | - "ACTION writes a specification" 81 | - 82 | name: AVATAR 83 | ctcp-type: Metadata Query 84 | spread: Specific to KVIrc 85 | information: "https://gist.github.com/grawity/a74722bfbfc3957684e0#avatar" 86 | desc: > 87 | Returns an URL to an "avatar" image chosen by the user. 88 | - 89 | name: CLIENTINFO 90 | format: "CLIENTINFO { }" 91 | ctcp-type: Metadata Query 92 | spread: Widely implemented 93 | information: "http://modern.ircdocs.horse/ctcp.html#clientinfo" 94 | desc: > 95 | Returns a list of the CTCP messages that this client supports and implements. 96 | examples: 97 | - "CLIENTINFO ACTION CLIENTINFO PING VERSION" 98 | - 99 | name: DCC 100 | format: "DCC [varies]" 101 | ctcp-type: Extended Query 102 | spread: Widely implemented 103 | information: "http://modern.ircdocs.horse/ctcp.html#dcc" 104 | desc: > 105 | Sets up and controls connections that go directly between clients, 106 | bypassing the IRC server. This is typically used for features that 107 | require a large amount of traffic between clients or simply wish to 108 | bypass the server itself such as file transfer, direct chat, and 109 | voice messages. 110 | - 111 | name: FINGER 112 | format: "FINGER " 113 | ctcp-type: Metadata Query 114 | spread: Widely implemented 115 | information: "http://modern.ircdocs.horse/ctcp.html#finger" 116 | obsolete: true 117 | desc: > 118 | Returns miscellaneous info about the user, typically the same 119 | information that's in their `realname` 120 | 121 | However, some implementations return the client name and 122 | version instead. 123 | - 124 | name: PAGE 125 | ctcp-type: Extended Query 126 | spread: Rarely implemented 127 | information: "https://gist.github.com/grawity/a74722bfbfc3957684e0#page" 128 | desc: > 129 | Does something to notify the recipient off-band (e.g. playing a 130 | sound; playing the given message via text-to-speech; etc.). 131 | - 132 | name: PING 133 | format: "PING " 134 | ctcp-type: Extended Query 135 | spread: Universal 136 | information: "http://modern.ircdocs.horse/ctcp.html#ping" 137 | desc: > 138 | Confirms reachability with other clients and checks latency. 139 | examples: 140 | - "PING 1473523721 662865" 141 | - "PING foo bar baz" 142 | - 143 | name: SOURCE 144 | format: "SOURCE " 145 | ctcp-type: Metadata Query 146 | spread: Rarely implemented 147 | information: "http://modern.ircdocs.horse/ctcp.html#source" 148 | desc: > 149 | Returns the location of the source code for the client. 150 | examples: 151 | - "SOURCE https://weechat.org/download" 152 | - 153 | name: TIME 154 | format: "TIME " 155 | ctcp-type: Extended Query 156 | spread: Almost Universal 157 | information: "http://modern.ircdocs.horse/ctcp.html#time" 158 | desc: > 159 | Return the client's local time in an unspecified human-readable 160 | format. I recommend using ISO 8601 format, but raw `ctime()` output 161 | appears to be the most common in practice. 162 | 163 | New implementations should consider using UTC time for privacy 164 | reasons. 165 | examples: 166 | - "TIME 2016-09-26T00:45:36Z" 167 | - 168 | name: VERSION 169 | format: "VERSION " 170 | ctcp-type: Metadata Query 171 | spread: Universal 172 | information: "http://modern.ircdocs.horse/ctcp.html#version" 173 | desc: > 174 | Return the name and version of the client software in use. There's 175 | no specified format for the version string. 176 | examples: 177 | - "VERSION WeeChat 1.5-rc2 (git: v1.5-rc2-1-gc1441b1) (Apr 25 2016)" 178 | - 179 | name: USERINFO 180 | format: "USERINFO " 181 | ctcp-type: Metadata Query 182 | spread: Widely implemented 183 | information: "http://modern.ircdocs.horse/ctcp.html#userinfo" 184 | obsolete: true 185 | desc: > 186 | Returns miscellaneous info about the user, typically the same 187 | information that's in their `realname` 188 | 189 | However, some implementations return ` ()` 190 | instead. 191 | -------------------------------------------------------------------------------- /_data/extbans.yaml: -------------------------------------------------------------------------------- 1 | # extbans.yaml 2 | # 3 | # This file is Copyright (c) 2016-2019 Daniel Oaks 4 | # 5 | # 6 | # This file is PUBLIC DOMAIN, to benefit the IRC developer community. If you 7 | # modify this file, please state your name and modifications here in order 8 | # for people to be able to distinguish between your version and this version. 9 | # 10 | # For more information or corrections, please contact the author. 11 | 12 | file: 13 | type: "extbans" 14 | revision: "0.10" 15 | 16 | # The following information is used to create pretty HTML page and tables 17 | 18 | page: 19 | name: Extended Bans 20 | extra: > 21 |

22 | Red denotes a conflicting extban definition, gray for deprecated 23 | (however quite possibly still in use), and blue for OK. 24 |

25 |

26 | NOTE: Charybdis supports the ~ (tilde) modifier which can appear before the extban char to negate the match. 27 |

28 | 29 | table: 30 | row-ids: 31 | - char 32 | - name 33 | 34 | row-classes: 35 | - conflict 36 | - obsolete 37 | 38 | columns: 39 | - 40 | name: Char 41 | content: char 42 | classes: code center 43 | inline-links: 44 | - char 45 | - name 46 | description: extban character 47 | - 48 | name: Name 49 | content: name 50 | link: information 51 | - 52 | name: Type 53 | content: ban-type 54 | description: Matching extbans match users, Acting extbans change what the ban actually does 55 | - 56 | name: Format 57 | content: format 58 | classes: code 59 | description: Format of the extban 60 | xml_escape: true 61 | examples: true 62 | - 63 | name: Origin 64 | content: origin 65 | link: contact 66 | description: Where the prefix came from 67 | - 68 | name: Description 69 | content: desc 70 | seealso: seealso 71 | description: "Description of what the extban type matches or does" 72 | markdown: true 73 | 74 | values: 75 | - 76 | char: a 77 | name: account 78 | format: "a[:]" 79 | origin: Charybdis 80 | ban-type: Matching 81 | desc: > 82 | Matches all logged-in users, or if `` is given then only 83 | matches users who are logged in with the given account (`'?'` and 84 | `'*'` wildcards are parsed in ``). 85 | 86 | conflict: true 87 | - 88 | char: a 89 | name: user+realname 90 | format: "a:+" 91 | origin: InspIRCd 3.0 92 | ban-type: Matching 93 | desc: > 94 | Matches users with the given usermask and realname (`'?'` and `'*'` wildcards 95 | are parsed in `` and ``). 96 | 97 | conflict: true 98 | - 99 | char: A 100 | name: allowinvite 101 | format: "A:" 102 | origin: InspIRCd 103 | ban-type: Acting 104 | desc: > 105 | Blocks invites from matching users, even when inviting is not 106 | restricted to channel staff. 107 | - 108 | char: B 109 | name: blockcaps 110 | format: "B:" 111 | origin: InspIRCd 112 | ban-type: Acting 113 | desc: > 114 | Blocks all capital or nearly-entirely uppercase messages sent by 115 | matching users. 116 | - 117 | char: c 118 | name: channel 119 | format: "c:" 120 | origin: Charybdis 121 | ban-type: Matching 122 | desc: > 123 | Matches users who are on the given channel. Only valid if the 124 | channel exists and is not set as secret or private. 125 | 126 | conflict: true 127 | - 128 | char: c 129 | name: color 130 | format: "c:" 131 | origin: InspIRCd 132 | ban-type: Acting 133 | desc: > 134 | Blocks any messages that contain color codes from matching users. 135 | 136 | conflict: true 137 | - 138 | char: C 139 | name: ctcp 140 | format: "C:" 141 | origin: InspIRCd 142 | ban-type: Acting 143 | desc: > 144 | Blocks CTCPs from matching users 145 | - 146 | char: j 147 | name: channel 148 | format: "j:" 149 | origin: InspIRCd 150 | ban-type: Matching 151 | desc: > 152 | Matches users who are on the given channel. 153 | - 154 | char: m 155 | name: mute 156 | format: "m:" 157 | origin: InspIRCd 158 | ban-type: Acting 159 | desc: > 160 | Blocks messages from matching users (but does not block their 161 | messages if they have voice or higher). 162 | 163 | conflict: true 164 | - 165 | char: m 166 | name: match 167 | format: "m:" 168 | origin: Charybdis 169 | ban-type: Matching 170 | desc: > 171 | Performs a normal mask match. Allows for stacking with [and](#and) and [or](#or) combination operators 172 | 173 | conflict: true 174 | - 175 | char: N 176 | name: nicks 177 | format: "N:" 178 | origin: InspIRCd 179 | ban-type: Acting 180 | desc: > 181 | Blocks nick changes from matching users. 182 | - 183 | char: o 184 | name: opers 185 | format: "o" 186 | origin: Charybdis 187 | ban-type: Matching 188 | desc: Matches any IRC operator (useful with invite exceptions). 189 | - 190 | char: O 191 | name: opertype 192 | format: "O:" 193 | origin: InspIRCd 194 | ban-type: Matching 195 | desc: > 196 | Matches IRC operators with the given `` (useful with 197 | invite exceptions). 198 | - 199 | char: p 200 | name: part 201 | format: "p:" 202 | origin: InspIRCd 203 | ban-type: Acting 204 | desc: > 205 | Blocks `PART` messages from matching users. 206 | - 207 | char: q 208 | name: quiet 209 | format: "q:" 210 | origin: Unreal 211 | ban-type: Acting 212 | desc: > 213 | Blocks messages from matching users. 214 | - 215 | char: Q 216 | name: blockkicks 217 | format: "Q:" 218 | origin: InspIRCd 219 | ban-type: Acting 220 | desc: > 221 | Blocks `KICK`s by matching users. 222 | - 223 | char: r 224 | name: realname 225 | format: "r:" 226 | origin: Charybdis 227 | ban-type: Matching 228 | desc: > 229 | Matches users with the given realname (`'?'` and `'*'` wildcards 230 | are parsed in ``). 231 | - 232 | char: R 233 | name: account 234 | format: "R:" 235 | origin: InspIRCd 236 | ban-type: Matching 237 | desc: > 238 | Matches users logged into the given account. 239 | 240 | conflict: true 241 | - 242 | char: R 243 | name: registered 244 | format: "R" 245 | origin: Unreal 246 | ban-type: Matching 247 | desc: > 248 | Matches if using a registered nick. 249 | 250 | conflict: true 251 | - 252 | char: s 253 | name: server 254 | format: "s:" 255 | origin: Charybdis 256 | ban-type: Matching 257 | desc: > 258 | Matches users connected to a server matching `` (`'?'` and 259 | `'*'` wildcards are parsed). 260 | - 261 | char: S 262 | name: stripcolors 263 | format: "S:" 264 | origin: InspIRCd 265 | ban-type: Acting 266 | desc: > 267 | Strips colors/bold/underline from messages from matching users. 268 | 269 | conflict: true 270 | - 271 | char: S 272 | name: tlscert 273 | format: "S:" 274 | origin: Unreal 275 | ban-type: Matching 276 | desc: > 277 | Matches users with the given certificate fingerprint. 278 | 279 | conflict: true 280 | - 281 | char: T 282 | name: blocknotice 283 | format: "T:" 284 | origin: InspIRCd 285 | ban-type: Acting 286 | desc: > 287 | Blocks `NOTICE`s from matching users. 288 | - 289 | char: U 290 | name: unregistered 291 | format: "U:" 292 | origin: InspIRCd 293 | ban-type: Acting 294 | desc: > 295 | Blocks unregistered users matching ``. 296 | - 297 | char: z 298 | name: tlscert 299 | format: "z:" 300 | origin: InspIRCd 301 | ban-type: Matching 302 | desc: > 303 | Matches users with the given certificate fingerprint. 304 | - 305 | char: "&" 306 | name: and 307 | format: "&:" 308 | origin: Charybdis 309 | ban-type: Matching 310 | desc: > 311 | Combine component bans as ANDs. 312 | Allows for stacking extbans. Optional pair of parens around data. 313 | component bans are separated by commas, but commas between 314 | matching pairs of parens are skipped. 315 | Parens, commas and backslashes can be escaped by backslashes. 316 | A backslash before any character other than a paren or backslash 317 | is just a backslash (backslash and character are both used). 318 | - 319 | char: "|" 320 | name: or 321 | format: "|:" 322 | origin: Charybdis 323 | ban-type: Matching 324 | desc: > 325 | Combine component bans as ORs. See [and](#and) 326 | -------------------------------------------------------------------------------- /_data/formatting.yaml: -------------------------------------------------------------------------------- 1 | # formatting.yaml 2 | # 3 | # This file is Copyright (c) 2017-2019 Daniel Oaks 4 | # 5 | # 6 | # This file is PUBLIC DOMAIN, to benefit the IRC developer community. If you 7 | # modify this file, please state your name and modifications here in order 8 | # for people to be able to distinguish between your version and this version. 9 | # 10 | # For more information or corrections, please contact the author. 11 | 12 | file: 13 | type: "formatting" 14 | revision: "0.01" 15 | 16 | # The following information is used to create pretty HTML page and tables 17 | 18 | page: 19 | name: Formatting Characters 20 | extra: > 21 |

22 | Special characters are used to denote formatting on IRC. These are 23 | described on this page. 24 |

25 |

26 | This table displays how clients handle each character, and (hopefully) 27 | give a sense of how widespread each one is. 28 |

29 |

30 | Tested Clients:
31 | AdiIRC 2.7, BitchX 1.2.1, HexChat 2.12.4, IceChat 9.15, Instantbird 1.5, IRCCloud (2017-08-05), irssi 0.8.20, KiwiIRC (2017-07-09), Konversation 1.6 (#4910), KVIrc 4.9.2, The Lounge v2.7.0, mIRC 7.48, Quassel 0.12.4 (90183ee), WeeChat 1.7 32 | 33 | 34 |

35 | 36 | table: 37 | row-ids: 38 | - char 39 | - name 40 | 41 | row-classes: 42 | - unique 43 | - obsolete 44 | 45 | columns: 46 | - 47 | name: Char 48 | content: char 49 | classes: code 50 | 51 | - 52 | name: Caret 53 | content: caret 54 | classes: code 55 | 56 | - 57 | name: Feature 58 | content: name 59 | link: information 60 | 61 | - 62 | name: Support from tested clients 63 | content: client-support 64 | 65 | - 66 | name: Supported Clients 67 | content: client-names 68 | 69 | - 70 | name: Comments 71 | seealso: seealso 72 | content: comment 73 | 74 | values: 75 | - char: "0x02" 76 | caret: "^B" 77 | name: Bold 78 | information: https://modern.ircdocs.horse/formatting.html#bold 79 | client-support: 100% 80 | client-names: AdiIRC, BitchX, HexChat, IceChat, Instantbird, IRCCloud, irssi, KiwiIRC, Konversation, KVIrc, The Lounge, mIRC, Quassel, WeeChat 81 | unique: true 82 | 83 | - char: "0x03" 84 | caret: "^C" 85 | name: mIRC Color 86 | information: https://modern.ircdocs.horse/formatting.html#color 87 | client-support: 100% 88 | client-names: AdiIRC, BitchX, HexChat, IceChat, Instantbird, IRCCloud, irssi, KiwiIRC, Konversation, KVIrc, The Lounge, mIRC, Quassel, WeeChat 89 | unique: true 90 | 91 | - char: "0x04" 92 | caret: "^D" 93 | name: Hex Color 94 | information: https://modern.ircdocs.horse/formatting.html#hex-color 95 | client-support: ~20% 96 | client-names: AdiIRC, IRCCloud, The Lounge 97 | unique: true 98 | 99 | - char: "0x11" 100 | caret: "^Q" 101 | name: Monospace 102 | information: https://modern.ircdocs.horse/formatting.html#monospace 103 | client-support: 104 | client-names: IRCCloud, The Lounge 105 | unique: true 106 | 107 | - char: "0x12" 108 | caret: "^R" 109 | name: Reverse Color 110 | information: https://modern.ircdocs.horse/formatting.html#reverse-color--or-italics 111 | client-support: 0% 112 | seealso: 0x16 (Reverse Color) 113 | unique: false 114 | obsolete: true 115 | 116 | - char: "0x16" 117 | caret: "^V" 118 | name: Reverse Color 119 | information: https://modern.ircdocs.horse/formatting.html#reverse-color--or-italics 120 | client-support: 54% 121 | client-names: BitchX, HexChat, IRCCloud, Irssi, Konversation, KVIrc, The Lounge, WeeChat 122 | comment: mIRC doesn't do reverse color but forces the whole rest of the line to be dark-on-light, even if other color codes are given after this character. 123 | seealso: 0x12 (Reverse Color) 124 | unique: false 125 | 126 | - char: "0x16" 127 | caret: "^V" 128 | name: Italics 129 | information: https://modern.ircdocs.horse/formatting.html#reverse-color--or-italics 130 | client-support: 0% 131 | client-names: 132 | seealso: 0x1D (Italics) 133 | unique: false 134 | obsolete: true 135 | 136 | - char: "0x1E" 137 | caret: "^^" 138 | name: Strikethrough 139 | information: https://modern.ircdocs.horse/formatting.html#strikethrough 140 | client-support: 141 | client-names: HexChat, IRCCloud, The Lounge, Textual 142 | unique: true 143 | 144 | - char: "0x0F" 145 | caret: "^O" 146 | name: Reset 147 | information: https://modern.ircdocs.horse/formatting.html#reset 148 | client-support: 149 | client-names: 150 | unique: true 151 | 152 | - char: "0x1D" 153 | caret: "^]" 154 | name: Italics 155 | information: https://modern.ircdocs.horse/formatting.html#italics 156 | client-support: 92% 157 | client-names: AdiIRC, HexChat, IceChat, Instantbird, IRCCloud, Irssi, KiwiIRC, Konversation, KVIrc, The Lounge, mIRC, Quassel, WeeChat 158 | seealso: 0x16 (Italics) 159 | unique: false 160 | 161 | - char: "0x1F" 162 | caret: "^_" 163 | name: Underline 164 | information: https://modern.ircdocs.horse/formatting.html#underline 165 | client-support: 100% 166 | client-names: AdiIRC, BitchX, HexChat, IceChat, Instantbird, IRCCloud, Irssi, KiwiIRC, Konversation, KVIrc, The Lounge, mIRC, Quassel, WeeChat 167 | unique: true 168 | -------------------------------------------------------------------------------- /_data/selfmessage.yaml: -------------------------------------------------------------------------------- 1 | # selfmessage.yaml 2 | # 3 | # This file is Copyright (c) 2017-2019 dx 4 | # 5 | # This file is Copyright (c) 2017-2019 Daniel Oaks 6 | # 7 | # 8 | # This file is PUBLIC DOMAIN, to benefit the IRC developer community. If you 9 | # modify this file, please state your name and modifications here in order 10 | # for people to be able to distinguish between your version and this version. 11 | # 12 | # For more information or corrections, please contact the author. 13 | 14 | file: 15 | type: "selfmessage" 16 | revision: "1.0" 17 | 18 | # The following information is used to create pretty HTML page and tables 19 | 20 | page: 21 | name: self-message support 22 | extra: > 23 |

24 | When a server sends a PRIVMSG/NOTICE to someone else on behalf of a client 25 | connected to it - common when multiple clients are connected to a bouncer - it 26 | is called a self-message. With the echo-message 27 | capability, they are also sent in reply to every PRIVMSG/NOTICE a client sends. 28 | These are represented by a protocol message looking like this: 29 |

30 |
:yournick!~foo@example.com PRIVMSG someone_else :Hello world!
31 |

32 | They should be put in someone_else's query and displayed as though they 33 | were sent by the connected client themselves. This page displays which clients 34 | properly parse and display this type of echo'd PRIVMSG/NOTICE. 35 |

36 | 37 | table: 38 | row-ids: 39 | - char 40 | - name 41 | 42 | row-classes: 43 | - works 44 | - unreleased 45 | - script 46 | 47 | neg-row-classes: 48 | - works 49 | 50 | columns: 51 | - 52 | name: Name 53 | content: name 54 | 55 | - 56 | name: Script Required 57 | content: script-required 58 | link: script 59 | classes: center 60 | 61 | - 62 | name: Requested Caps 63 | content: requested-caps 64 | classes: code center 65 | 66 | - 67 | name: Last Tested Version 68 | content: last-tested-version 69 | classes: center 70 | 71 | - 72 | name: Working Since 73 | content: working-since 74 | classes: center 75 | 76 | - 77 | name: Comments 78 | content: comment 79 | 80 | values: 81 | - name: AdiIRC 82 | last-tested-version: "2.7" 83 | script-required: "Yes" 84 | script: http://wiki.znc.in/Privmsg/AdiIRC 85 | comment: Shows messages in window with client's own nick 86 | 87 | - name: Adium 88 | last-tested-version: 1.5.10.4 89 | comment: Drops messages 90 | 91 | - name: AndChat 92 | last-tested-version: 1.4.3.2 93 | comment: Shows messages in window with client's own nick 94 | 95 | - name: Android IRC 96 | working-since: "2.1.15" 97 | works: true 98 | 99 | - name: AndroIRC 100 | works: true 101 | 102 | - name: Atomic 103 | requested-caps: znc.in/self-message 104 | works: true 105 | 106 | - name: BitchX 107 | last-tested-version: 1.2.1 108 | comment: Drops messages 109 | 110 | - name: ChatZilla 111 | last-tested-version: 0.9.93 112 | comment: Shows messages in window with client's own nick 113 | 114 | - name: Colloquy 115 | works: true 116 | 117 | - name: Communi 118 | works: true 119 | 120 | - name: Hermes 121 | works: true 122 | 123 | - name: HexChat 124 | last-tested-version: 2.12.4 125 | script-required: "Yes" 126 | script: https://github.com/TingPing/plugins/blob/master/HexChat/mymsg.lua 127 | requested-caps: znc.in/self-message 128 | comment: Shows messages in window with client's own nick by default 129 | 130 | - name: IRCCloud 131 | works: true 132 | requested-caps: znc.in/self-message 133 | 134 | - name: Irssi 135 | working-since: "0.8.18" 136 | works: true 137 | 138 | - name: KiwiIRC 139 | working-since: "1.0.0" 140 | works: true 141 | 142 | - name: KVirc 143 | working-since: "4.9.2" 144 | requested-caps: znc.in/self-message 145 | works: true 146 | 147 | - name: Limechat 148 | last-tested-version: "2.42" 149 | comment: Shows messages in server window 150 | 151 | - name: mIRC 152 | last-tested-version: "7.52" 153 | script-required: "Yes" 154 | script: http://wiki.znc.in/Privmsg/mIRC 155 | comment: Shows messages in window with client's own nick 156 | 157 | - name: Mutter 158 | works: true 159 | 160 | - name: Palaver 161 | works: true 162 | 163 | - name: Quassel 164 | working-since: "0.13.0" 165 | requested-caps: znc.in/self-message 166 | works: true 167 | 168 | - name: Textual 169 | working-since: "2.1" 170 | requested-caps: znc.in/self-message 171 | works: true 172 | 173 | - name: The Lounge 174 | requested-caps: znc.in/self-message 175 | works: true 176 | 177 | - name: Weechat 178 | works: true 179 | 180 | - name: XChat 181 | last-tested-version: 2.8.6 182 | script-required: "Yes" 183 | script: http://wiki.znc.in/Privmsg/XChat 184 | comment: Shows messages in window with client's own nick 185 | -------------------------------------------------------------------------------- /_data/servermodes.yaml: -------------------------------------------------------------------------------- 1 | # servermodes.yaml 2 | # 3 | # This file is Copyright (c) 2015-2019 Daniel Oaks 4 | # 5 | # This file is Copyright (c) 2001-2004 Simon Butcher 6 | # 7 | # 8 | # This file is PUBLIC DOMAIN, to benefit the IRC developer community. If you 9 | # modify this file, please state your name and modifications here in order 10 | # for people to be able to distinguish between your version and this version. 11 | # 12 | # For more information or corrections, please contact the author. 13 | 14 | file: 15 | type: "servermodes" 16 | revision: "1.91" 17 | 18 | # The following information is used to create pretty HTML page and tables 19 | 20 | page: 21 | name: Server Modes 22 | extra: > 23 |

24 | Red denotes a conflicting numeric definition, gray for deprecated 25 | (however quite possibly still in use), and blue for OK. 26 |

27 | 28 | table: 29 | row-ids: 30 | - char 31 | - name 32 | 33 | row-classes: 34 | - conflict 35 | - obsolete 36 | 37 | columns: 38 | - 39 | name: Mode 40 | content: char 41 | classes: code center 42 | inline-links: 43 | - char 44 | - name 45 | description: Mode character 46 | - 47 | name: Name 48 | content: name 49 | classes: code 50 | link: information 51 | - 52 | name: Origin 53 | content: origin 54 | link: contact 55 | description: Where the prefix came from 56 | - 57 | name: Server Only 58 | content: server_only 59 | description: "" 60 | classes: center 61 | - 62 | name: Broadcast 63 | content: broadcast 64 | description: "" 65 | classes: center 66 | - 67 | name: Parameter 68 | content: parameter 69 | classes: code 70 | description: Parameter for the mode 71 | xml_escape: true 72 | - 73 | name: When 74 | content: when 75 | description: Release version or announced date 76 | - 77 | name: Comments 78 | content: comment 79 | seealso: seealso 80 | description: "Additional comments, history and other details" 81 | 82 | # The following format is used through-out this file. The first two fields 83 | # ('irc2char' and 'name') are mandatory, the others may or may not exist. 84 | # 85 | # The server_only field denotes whether or not the mode can be modified by 86 | # a server only. If it is not set, or set to 'no', then operators can 87 | # possibly modify them. 88 | # 89 | # The broadcast field specifies whether the mode is broadcast to other 90 | # servers on the network or not. 91 | 92 | format: 93 | char: mode char for irc2 based protocol(s) 94 | name: mode name 95 | origin: where the mode was found 96 | when: release version or announced date 97 | contact: point of contact associated with the mode 98 | information: url where to find more information 99 | parameter: parameter name 100 | comment: "comments, history etc" 101 | server_only: Y 102 | broadcast: Y 103 | conflict: true 104 | obsolete: true 105 | 106 | values: 107 | - 108 | char: h 109 | name: HUB 110 | origin: ircu 111 | when: ircu2.10.11.04 112 | comment: > 113 | Indicates the server is a hub. In ircu, this also hides the 114 | server from users. 115 | 116 | server_only: Y 117 | broadcast: Y 118 | 119 | - 120 | char: s 121 | name: SERVICE 122 | origin: ircu 123 | when: ircu2.10.11.04 124 | comment: > 125 | When set, the server is a 'service' (as in, it only provides 126 | services). In ircu, this also hides the server from users. 127 | 128 | server_only: Y 129 | broadcast: Y 130 | -------------------------------------------------------------------------------- /_data/snomasks.yaml: -------------------------------------------------------------------------------- 1 | # snomasks.yaml 2 | # 3 | # This file is Copyright (c) 2017-2019 Daniel Oaks 4 | # 5 | # 6 | # This file is PUBLIC DOMAIN, to benefit the IRC developer community. If you 7 | # modify this file, please state your name and modifications here in order 8 | # for people to be able to distinguish between your version and this version. 9 | # 10 | # For more information or corrections, please contact the author. 11 | 12 | file: 13 | type: "snomasks" 14 | revision: "0.10" 15 | 16 | # The following information is used to create pretty HTML page and tables 17 | 18 | page: 19 | name: Server Notice Masks 20 | extra: > 21 |

22 | Red denotes a conflicting snomask definition, gray for deprecated 23 | (however quite possibly still in use), and blue for OK. 24 |

25 | 26 | table: 27 | row-ids: 28 | - char 29 | - name 30 | 31 | row-classes: 32 | - conflict 33 | - obsolete 34 | 35 | columns: 36 | - 37 | name: Char 38 | content: char 39 | classes: code center 40 | inline-links: 41 | - char 42 | - name 43 | description: snomask character 44 | - 45 | name: Name 46 | content: name 47 | classes: code 48 | link: information 49 | - 50 | name: Origin 51 | content: origin 52 | link: contact 53 | description: Where the prefix came from 54 | - 55 | name: Description 56 | content: desc 57 | seealso: seealso 58 | description: "Description of what the extban type matches or does" 59 | markdown: true 60 | 61 | values: 62 | - 63 | char: a 64 | name: LOCAL_ANNOUNCEMENTS 65 | origin: InspIRCd 66 | desc: > 67 | Allows receipt of local announcement messages. 68 | - 69 | char: A 70 | name: GLOBAL_ANNOUNCEMENTS 71 | origin: InspIRCd 72 | desc: > 73 | Allows receipt of global announcement messages. 74 | - 75 | char: b 76 | name: BOTS 77 | origin: Charybdis 78 | desc: > 79 | Allows receipt of messages when potential flooders and spambots are detected. 80 | - 81 | char: c 82 | name: LOCAL_CONNECT 83 | origin: 84 | desc: > 85 | Allows receipt of local client connection messages. 86 | - 87 | char: C 88 | name: REMOTE_CONNECT 89 | origin: InspIRCd 90 | desc: > 91 | Allows receipt of remote client connection messages. 92 | conflict: true 93 | - 94 | char: C 95 | name: EXTENDED_LOCAL_CONNECTS 96 | origin: Charybdis 97 | desc: > 98 | Allows receipt of local client connection messages, in an extended format 99 | that's intended for script parsing. 100 | conflict: true 101 | - 102 | char: d 103 | name: DEBUG 104 | origin: 105 | desc: > 106 | Allows receipt of general (and sometimes random) debug messages. 107 | - 108 | char: D 109 | name: REJECTED_DCC 110 | origin: UnrealIRCd 111 | desc: > 112 | Allows receipt of rejected DCC's due to Deny DCC blocks. 113 | - 114 | char: e 115 | name: EYES 116 | origin: UnrealIRCd 117 | desc: > 118 | Allows receipt of 'Eyes' notices including /MKPASSWD use, some operoverrides, 119 | CHGNAME/CHGIDENT/CHGHOST, etc. 120 | - 121 | char: f 122 | name: FLOOD 123 | origin: 124 | desc: > 125 | Allows receipt of flooding messages. 126 | conflict: true 127 | - 128 | char: f 129 | name: FULL 130 | origin: Charybdis 131 | desc: > 132 | Allows receipt of notices when a client connection is denied because a 133 | connection limit is exceeded. 134 | conflict: true 135 | - 136 | char: F 137 | name: FAR_SERVER_CONNECTS 138 | origin: UnrealIRCd 139 | desc: > 140 | Allows receipt of remote server connection notices (except from u-lined servers 141 | like services). 142 | conflict: true 143 | - 144 | char: F 145 | name: FAR_CLIENT_CONNECTS 146 | origin: Charybdis 147 | desc: > 148 | Allows receipt of remote client connection notices. 149 | conflict: true 150 | - 151 | char: g 152 | name: GLOBOPS 153 | origin: InspIRCd 154 | desc: > 155 | Allows receipt of globops. 156 | - 157 | char: G 158 | name: REMOTE_GLOBOPS 159 | origin: InspIRCd 160 | desc: > 161 | Allows receipt of remote globops. 162 | conflict: true 163 | - 164 | char: G 165 | name: GLINE_AND_SHUN 166 | origin: UnrealIRCd 167 | desc: > 168 | Allows receipt of G-LINE and SHUN notices. 169 | conflict: true 170 | - 171 | char: j 172 | name: LOCAL_CHAN_CREATE 173 | origin: InspIRCd 174 | desc: > 175 | Allows receipt of local channel creation notices. 176 | conflict: true 177 | - 178 | char: j 179 | name: JUNK 180 | origin: UnrealIRCd 181 | desc: > 182 | Allows receipt of 'junk' notices. Noisy, includes mostly harmless notices. 183 | conflict: true 184 | - 185 | char: J 186 | name: REMOTE_CHAN_CREATE 187 | origin: InspIRCd 188 | desc: > 189 | Allows receipt of remote channel creation notices. 190 | - 191 | char: k 192 | name: LOCAL_KILLS 193 | origin: InspIRCd 194 | desc: > 195 | Allows receipt of local kill messages. 196 | conflict: true 197 | - 198 | char: k 199 | name: KILLS 200 | origin: 201 | desc: > 202 | Allows receipt of (local and remote) kill messages. 203 | conflict: true 204 | - 205 | char: K 206 | name: REMOTE_KILLS 207 | origin: InspIRCd 208 | desc: > 209 | Allows receipt of remote kill messages. 210 | - 211 | char: l 212 | name: LINKING 213 | origin: InspIRCd 214 | desc: > 215 | Allows receipt of linking related messages. 216 | - 217 | char: l 218 | name: CHANNELCREATE 219 | origin: ircd-seven 220 | desc: > 221 | Allows receipt of channel creation notices 222 | - 223 | char: L 224 | name: REMOTE_LINKING 225 | origin: InspIRCd 226 | desc: > 227 | Allows receipt of linking related messages from other servers. 228 | - 229 | char: n 230 | name: LOCAL_NICKS 231 | origin: 232 | desc: > 233 | Allows receipt of local nickname changes. 234 | - 235 | char: N 236 | name: REMOTE_NICKS 237 | origin: 238 | desc: > 239 | Allows receipt of remote nickname changes. 240 | - 241 | char: o 242 | name: LOCAL_OPER 243 | origin: 244 | desc: > 245 | Allows receipt of local oper-up, oper-down, and oper-failure messages. 246 | - 247 | char: O 248 | name: REMOTE_OPER 249 | origin: InspIRCd 250 | desc: > 251 | Allows receipt of remote oper-up, oper-down, and oper-failure messages. 252 | - 253 | char: q 254 | name: LOCAL_QUITS 255 | origin: InspIRCd 256 | desc: > 257 | Allows receipt of local quit messages. 258 | conflict: true 259 | - 260 | char: q 261 | name: QLINE_REJECTIONS 262 | origin: UnrealIRCd 263 | desc: > 264 | Allows receipt of deny-line (Q-LINE) rejection notices. 265 | conflict: true 266 | - 267 | char: Q 268 | name: REMOTE_QUITS 269 | origin: InspIRCd 270 | desc: > 271 | Allows receipt of remote quit messages. 272 | - 273 | char: r 274 | name: REJECTED_NAMES 275 | origin: Charybdis 276 | desc: > 277 | Allows receipt of notices when someone tries to use an invalid username, or when 278 | HTTP proxies try to connect. 279 | - 280 | char: s 281 | name: SERVER_NOTICES 282 | origin: 283 | desc: > 284 | Allows receipt of generic server notices (includes the most important messages). 285 | - 286 | char: t 287 | name: STATS 288 | origin: InspIRCd 289 | desc: > 290 | Allows receipt of attempts to use /STATS (local and remote). 291 | - 292 | char: u 293 | name: UNAUTHORIZED_CONNECTIONS 294 | origin: Charybdis 295 | desc: > 296 | Allows receipt of attempts to oper-up, when the given client doesn't have a 297 | valid `AUTH{}` block. 298 | - 299 | char: v 300 | name: OPER_OVERRIDE 301 | origin: InspIRCd 302 | desc: > 303 | Allows receipt of use of oper-override. 304 | - 305 | char: W 306 | name: WHOIS 307 | origin: Charybdis 308 | desc: > 309 | Allows receipt of notices when clients execute a WHOIS on them. 310 | - 311 | char: x 312 | name: LOCAL_XLINE 313 | origin: InspIRCd 314 | desc: > 315 | Allows receipt of local Xline notices (g/z/q/k/e/etc). 316 | conflict: true 317 | - 318 | char: x 319 | name: EXTRA_ROUTING 320 | origin: Charybdis 321 | desc: > 322 | Allows receipt of extra routing notices, including servers connecting and 323 | disconnecting remotely. 324 | conflict: true 325 | - 326 | char: X 327 | name: REMOTE_XLINE 328 | origin: InspIRCd 329 | desc: > 330 | Allows receipt of remote Xline notices (g/z/q/k/e/etc). 331 | - 332 | char: y 333 | name: SPY 334 | origin: Charybdis 335 | desc: > 336 | Allows receipt of notices when users try to join "juped" channels. 337 | - 338 | char: Z 339 | name: OPERSPY 340 | origin: Charybdis 341 | desc: > 342 | Allows receipt of notices when opers anywhere on the network use "operspy". 343 | -------------------------------------------------------------------------------- /_data/stats.yaml: -------------------------------------------------------------------------------- 1 | # stats.yaml 2 | # 3 | # This file is Copyright (c) 2016-2019 Daniel Oaks 4 | # 5 | # 6 | # This file is PUBLIC DOMAIN, to benefit the IRC developer community. If you 7 | # modify this file, please state your name and modifications here in order 8 | # for people to be able to distinguish between your version and this version. 9 | # 10 | # For more information or corrections, please contact the author. 11 | 12 | file: 13 | type: "stats" 14 | revision: "0.10" 15 | 16 | # The following information is used to create pretty HTML page and tables 17 | 18 | page: 19 | name: STATS Characters 20 | extra: > 21 |

22 | Red denotes a conflicting stat definition, gray for deprecated 23 | (however quite possibly still in use), and blue for OK. 24 |

25 | 26 | table: 27 | row-ids: 28 | - char 29 | - name 30 | 31 | row-classes: 32 | - conflict 33 | - obsolete 34 | 35 | columns: 36 | - 37 | name: Char 38 | content: char 39 | classes: code center 40 | inline-links: 41 | - char 42 | - name 43 | description: stats character 44 | - 45 | name: Name 46 | content: name 47 | classes: code 48 | link: information 49 | - 50 | name: Origin 51 | content: origin 52 | link: contact 53 | description: Where the character came from 54 | - 55 | name: Description 56 | content: desc 57 | seealso: seealso 58 | description: "Description of what the stats character does" 59 | markdown: true 60 | 61 | values: 62 | - 63 | char: A 64 | name: dns 65 | origin: Hybrid 66 | desc: > 67 | Shows the DNS servers in use. 68 | - 69 | char: b 70 | name: nick delays 71 | origin: Charybdis 72 | desc: > 73 | Shows active nick delays. 74 | conflict: true 75 | - 76 | char: b 77 | name: badword 78 | origin: Unreal 79 | desc: > 80 | Shows the badwords version list. 81 | conflict: true 82 | - 83 | char: B 84 | name: hash stats 85 | origin: Charybdis 86 | desc: > 87 | Shows active hash statistics. 88 | conflict: true 89 | - 90 | char: B 91 | name: banversion 92 | origin: Unreal 93 | desc: > 94 | Shows the ban version list. 95 | conflict: true 96 | - 97 | char: c 98 | name: server connections 99 | origin: RFC1459 100 | desc: > 101 | Shows servers which this server is configured to connect to or allow 102 | connections from. Also known as 'connect blocks'. 103 | - 104 | char: C 105 | name: channel-bans 106 | origin: InspIRCd 107 | desc: > 108 | Shows channel bans. 109 | conflict: true 110 | - 111 | char: C 112 | name: link 113 | origin: Unreal 114 | desc: > 115 | Shows the link-block list. 116 | conflict: true 117 | - 118 | char: d 119 | name: temp-dlines 120 | origin: Hybrid 121 | desc: > 122 | Shows temporary DLINEs. 123 | conflict: true 124 | - 125 | char: d 126 | name: dnsbl 127 | origin: InspIRCd 128 | desc: > 129 | Shows configured DNSBLs and related stats. 130 | conflict: true 131 | - 132 | char: d 133 | name: denylinkauto 134 | origin: Unreal 135 | desc: > 136 | Shows the deny link (auto) block list. 137 | conflict: true 138 | - 139 | char: D 140 | name: dlines 141 | origin: Hybrid 142 | desc: > 143 | Shows permanent DLINEs. 144 | conflict: true 145 | - 146 | char: D 147 | name: denylinkall 148 | origin: Unreal 149 | desc: > 150 | Shows the deny link (all) list. 151 | conflict: true 152 | - 153 | char: e 154 | name: exceptions 155 | origin: Hybrid 156 | desc: > 157 | Shows DLINE ban exceptions. 158 | conflict: true 159 | - 160 | char: e 161 | name: exceptthrottle 162 | origin: Unreal 163 | desc: > 164 | Shows the except throttle block list. 165 | conflict: true 166 | - 167 | char: E 168 | name: events 169 | origin: Hybrid 170 | desc: > 171 | Shows active timers and events (internal IRCd details). 172 | conflict: true 173 | - 174 | char: E 175 | name: exceptban 176 | origin: Unreal 177 | desc: > 178 | Shows the except ban and except tkl block list. 179 | conflict: true 180 | - 181 | char: f 182 | name: file descriptors 183 | origin: Hybrid 184 | desc: > 185 | Shows open file descriptors. 186 | conflict: true 187 | - 188 | char: f 189 | name: spamfilter 190 | origin: Unreal 191 | desc: > 192 | Shows the spamfilter list. 193 | conflict: true 194 | - 195 | char: F 196 | name: denydcc 197 | origin: Unreal 198 | desc: > 199 | Shows the deny dcc and allow dcc block lists. 200 | - 201 | char: g 202 | name: global klines 203 | origin: Charybdis 204 | desc: > 205 | Shows global KLINEs. 206 | - 207 | char: G 208 | name: geoip 209 | origin: InspIRCd 210 | desc: > 211 | Shows how many local users are connected from each country, according to GeoIP. 212 | conflict: true 213 | - 214 | char: G 215 | name: gline 216 | origin: Unreal 217 | desc: > 218 | Shows the gline and gzline list. 219 | conflict: true 220 | - 221 | char: h 222 | name: hubs-leafs 223 | origin: RFC1459 224 | desc: > 225 | Shows servers that either are forced to be treated as leaves or may 226 | act as hubs. 227 | - 228 | char: H 229 | name: shuns 230 | origin: InspIRCd 231 | desc: > 232 | Shows shuns. 233 | - 234 | char: i 235 | name: auth blocks 236 | origin: RFC1459 237 | desc: > 238 | Shows hosts that clients may connect from (also known as auth blocks or ILINEs). 239 | - 240 | char: I 241 | name: allow 242 | origin: Unreal 243 | desc: > 244 | Shows the allow block list. 245 | - 246 | char: j 247 | name: officialchans 248 | origin: Unreal 249 | desc: > 250 | Shows the official channels list. 251 | - 252 | char: k 253 | name: banned-userhosts 254 | origin: RFC1459 255 | desc: > 256 | Shows banned usernames/hostnames from that server. 257 | conflict: true 258 | - 259 | char: k 260 | name: temp-klines 261 | origin: Hybrid 262 | desc: > 263 | Shows temporary KLINEs. 264 | conflict: true 265 | - 266 | char: k 267 | name: klines 268 | origin: InspIRCd 269 | desc: > 270 | Shows KLINEs. 271 | conflict: true 272 | - 273 | char: K 274 | name: klines 275 | origin: Hybrid 276 | desc: > 277 | Shows permanent KLINEs. 278 | conflict: true 279 | - 280 | char: K 281 | name: kline 282 | origin: Unreal 283 | desc: > 284 | Shows KLINEs. 285 | conflict: true 286 | - 287 | char: l 288 | name: connections 289 | origin: RFC1459 290 | desc: > 291 | Shows connections that server has open (including duration and 292 | traffic). 293 | conflict: true 294 | - 295 | char: l 296 | name: hostname-info 297 | origin: Hybrid 298 | desc: > 299 | Shows the hostname and generic info of a given nickname. 300 | conflict: true 301 | - 302 | char: l 303 | name: client-connections 304 | origin: InspIRCd 305 | desc: > 306 | Shows all client connections with information (sendq, commands, bytes, time 307 | connected). 308 | conflict: true 309 | - 310 | char: l 311 | name: linkinfo 312 | origin: Unreal 313 | desc: > 314 | Shows 'link information'. 315 | conflict: true 316 | - 317 | char: L 318 | name: ip-info 319 | origin: Hybrid 320 | desc: > 321 | Shows the IP address and generic info of a given nickname. 322 | conflict: true 323 | - 324 | char: L 325 | name: client-info 326 | origin: InspIRCd 327 | desc: > 328 | Shows all client connections with info and IP address. 329 | conflict: true 330 | - 331 | char: L 332 | name: linkinfoall 333 | origin: Unreal 334 | desc: > 335 | Shows 'all link information'. 336 | conflict: true 337 | - 338 | char: m 339 | name: commands 340 | origin: RFC1459 341 | desc: > 342 | Shows the commands supported by the server, along with usage counts. 343 | - 344 | char: M 345 | name: commands 346 | origin: Unreal 347 | desc: > 348 | Shows the commands supported by the server, along with usage counts. 349 | - 350 | char: n 351 | name: dns blacklists 352 | origin: Charybdis 353 | desc: > 354 | Shows DNS blacklists. 355 | conflict: true 356 | - 357 | char: n 358 | name: banrealname 359 | origin: Unreal 360 | desc: > 361 | Shows the ban realname block list. 362 | conflict: true 363 | - 364 | char: o 365 | name: operator hosts 366 | origin: RFC1459 367 | desc: > 368 | Shows hosts from which clients can become operators. Some servers show operator 369 | blocks. 370 | - 371 | char: O 372 | name: privsets 373 | origin: Charybdis 374 | desc: > 375 | Shows privsets. 376 | conflict: true 377 | - 378 | char: O 379 | name: opertypes 380 | origin: InspIRCd 381 | desc: > 382 | Shows opertypes and the allowed user/channel modes they can set. Seems similar 383 | to the above? 384 | conflict: true 385 | - 386 | char: O 387 | name: oper 388 | origin: Unreal 389 | desc: > 390 | Shows the oper block list. 391 | conflict: true 392 | - 393 | char: p 394 | name: connected opers 395 | origin: Hybrid 396 | desc: > 397 | Shows connected opers and their idle times. 398 | conflict: true 399 | - 400 | char: p 401 | name: helpops 402 | origin: ircd-seven 403 | desc: > 404 | Shows all opers who have marked themselves available for help (set 405 | themselves umode +h). 406 | conflict: true 407 | - 408 | char: p 409 | name: client-ports 410 | origin: InspIRCd 411 | desc: > 412 | Shows open client ports, and the port type (plaintext/TLS). 413 | conflict: true 414 | - 415 | char: P 416 | name: ports 417 | origin: Hybrid 418 | desc: > 419 | Shows configured listen blocks (ports the server listens on). 420 | conflict: true 421 | - 422 | char: P 423 | name: connected opers 424 | origin: InspIRCd 425 | desc: > 426 | Shows connected opers and their idle times. 427 | conflict: true 428 | - 429 | char: q 430 | name: resv 431 | origin: Hybrid 432 | desc: > 433 | Shows RESV'd nicks and channels. 434 | conflict: true 435 | - 436 | char: q 437 | name: temp-global-resv 438 | origin: Charybdis 439 | desc: > 440 | Shows temporary/global RESV'd nicks and channels. 441 | conflict: true 442 | - 443 | char: q 444 | name: qlines 445 | origin: InspIRCd 446 | desc: > 447 | Shows nickmask bans. 448 | conflict: true 449 | - 450 | char: q 451 | name: bannick 452 | origin: Unreal 453 | desc: > 454 | Shows the ban nick block list. 455 | conflict: true 456 | - 457 | char: Q 458 | name: resv 459 | origin: Charybdis 460 | desc: > 461 | Shows RESV'd nicks and channels. 462 | conflict: true 463 | - 464 | char: Q 465 | name: sqline 466 | origin: Unreal 467 | desc: > 468 | Shows the global QLINE list. 469 | conflict: true 470 | - 471 | char: r 472 | name: resource-usage 473 | origin: Charybdis 474 | desc: > 475 | Shows resource usage. 476 | conflict: true 477 | - 478 | char: r 479 | name: chanrestrict 480 | origin: Unreal 481 | desc: > 482 | Shows the channel deny/allow block list. 483 | conflict: true 484 | - 485 | char: R 486 | name: regex-bans 487 | origin: InspIRCd 488 | desc: > 489 | Shows regular expression bans. 490 | conflict: true 491 | - 492 | char: R 493 | name: usage 494 | origin: Unreal 495 | desc: > 496 | Shows usage information (debug). 497 | conflict: true 498 | - 499 | char: s 500 | name: services 501 | origin: Hybrid 502 | desc: > 503 | Shows configured service blocks. 504 | conflict: true 505 | - 506 | char: s 507 | name: filters 508 | origin: InspIRCd 509 | desc: > 510 | Shows filters. 511 | conflict: true 512 | - 513 | char: s 514 | name: shun 515 | origin: Unreal 516 | desc: > 517 | Shows the shun list. 518 | conflict: true 519 | - 520 | char: S 521 | name: ssld 522 | origin: Charybdis 523 | desc: > 524 | Shows SSLd processes. 525 | conflict: true 526 | - 527 | char: S 528 | name: held-nicknames 529 | origin: InspIRCd 530 | desc: > 531 | Shows currently-held, registered nicknames. 532 | conflict: true 533 | - 534 | char: S 535 | name: set 536 | origin: Unreal 537 | desc: > 538 | Shows the set block list. 539 | conflict: true 540 | - 541 | char: t 542 | name: stats 543 | origin: Hybrid 544 | desc: > 545 | Shows generic server stats. 546 | conflict: true 547 | - 548 | char: t 549 | name: tld 550 | origin: Unreal 551 | desc: > 552 | Shows the tld block list. 553 | conflict: true 554 | - 555 | char: T 556 | name: motd-blocks 557 | origin: Hybrid 558 | desc: > 559 | Shows configured MOTD blocks. 560 | conflict: true 561 | - 562 | char: T 563 | name: traffic 564 | origin: InspIRCd 565 | desc: > 566 | Shows traffic statistics. 567 | conflict: true 568 | - 569 | char: u 570 | name: uptime 571 | origin: RFC1459 572 | desc: > 573 | Shows how long the server's been up. 574 | - 575 | char: U 576 | name: ulines 577 | origin: Hybrid 578 | desc: > 579 | Shows configured shared and cluster blocks. 580 | - 581 | char: v 582 | name: connected-servers 583 | origin: Hybrid 584 | desc: > 585 | Shows connected servers and information about them (including idle time). 586 | conflict: true 587 | - 588 | char: v 589 | name: denyver 590 | origin: Unreal 591 | desc: > 592 | Shows the denied client versions list. 593 | conflict: true 594 | - 595 | char: V 596 | name: vhost 597 | origin: Unreal 598 | desc: > 599 | Shows the vhost block list. 600 | - 601 | char: W 602 | name: fdtable 603 | origin: Unreal 604 | desc: > 605 | Shows the file descriptor table. 606 | - 607 | char: x 608 | name: realname bans 609 | origin: Hybrid 610 | desc: > 611 | Shows realname bans. 612 | conflict: true 613 | - 614 | char: x 615 | name: temp-global realname bans 616 | origin: Charybdis 617 | desc: > 618 | Shows temporary and global realname bans. 619 | conflict: true 620 | - 621 | char: X 622 | name: realname bans 623 | origin: Charybdis 624 | desc: > 625 | Shows realname bans. 626 | conflict: true 627 | - 628 | char: X 629 | name: notlink 630 | origin: Unreal 631 | desc: > 632 | Shows the servers that are not currently linked. 633 | conflict: true 634 | - 635 | char: y 636 | name: class-lines 637 | origin: RFC1459 638 | desc: > 639 | Shows Y (class) lines from the server's config? 640 | - 641 | char: Y 642 | name: class-lines 643 | origin: InspIRCd 644 | desc: > 645 | Shows connection classes. 646 | - 647 | char: z 648 | name: memory 649 | origin: Hybrid 650 | desc: > 651 | Shows memory stats. 652 | - 653 | char: Z 654 | name: ziplinks 655 | origin: Charybdis 656 | desc: > 657 | Shows ziplink stats. 658 | conflict: true 659 | - 660 | char: Z 661 | name: zlines 662 | origin: InspIRCd 663 | desc: > 664 | Shows IP mask bans. 665 | conflict: true 666 | - 667 | char: Z 668 | name: mem 669 | origin: Unreal 670 | desc: > 671 | Shows memory usage info. 672 | conflict: true 673 | - 674 | char: "?" 675 | name: servers-sendqs 676 | origin: Hybrid 677 | desc: > 678 | Shows connected servers and SENDQ info about them. 679 | -------------------------------------------------------------------------------- /_data/tags.yaml: -------------------------------------------------------------------------------- 1 | # tags.yaml 2 | # 3 | # This file is Copyright (c) 2016-2019 Daniel Oaks 4 | # 5 | # 6 | # This file is PUBLIC DOMAIN, to benefit the IRC developer community. If you 7 | # modify this file, please state your name and modifications here in order 8 | # for people to be able to distinguish between your version and this version. 9 | # 10 | # For more information or corrections, please contact the author. 11 | 12 | file: 13 | type: "tags" 14 | revision: "0.10" 15 | 16 | # The following information is used to create pretty HTML page and tables 17 | 18 | page: 19 | name: Message Tags 20 | extra: > 21 |

22 | Red denotes a conflicting tag definition, gray for deprecated 23 | (however quite possibly still in use), yellow for proposed, blue 24 | for OK, and brown for vendor-specific tags that are not properly 25 | vendor prefixed. 26 |

27 | 28 | table: 29 | row-id: name 30 | 31 | row-classes: 32 | - conflict 33 | - obsolete 34 | - proposed 35 | - repeated 36 | - nonstandard 37 | 38 | columns: 39 | - 40 | name: Name 41 | content: name 42 | classes: code 43 | link: information 44 | - 45 | name: Format 46 | content: format 47 | classes: code 48 | description: Format of the tag 49 | examples: true 50 | xml_escape: true 51 | - 52 | name: Comments 53 | content: comment 54 | seealso: seealso 55 | description: "Additional comments, history and other details" 56 | markdown: true 57 | 58 | # The following format is used through-out this file. The first field 59 | # ('name') is mandatory, the others may or may not exist. 60 | 61 | format: 62 | name: tag name 63 | origin: where the tag was created 64 | contact: point of contact associated with the tag 65 | information: url where to find more information 66 | format: the tag format 67 | comment: "comments, history etc" 68 | seealso: name 69 | conflict: true 70 | obsolete: true 71 | repeated: true 72 | nonstandard: true 73 | 74 | values: 75 | - 76 | name: account 77 | format: "account=" 78 | information: "http://ircv3.net/specs/extensions/account-tag-3.2.html" 79 | comment: > 80 | The `account` tag contains the account name of the user that 81 | sent the attached message to the client. For instance, on a 82 | `PRIVMSG`, the `account` tag would contain the account name of the 83 | user that sent the `PRIVMSG`. Enabled by the IRCv3 84 | [`account-tag` capability](http://ircv3.net/specs/extensions/account-tag-3.2.html). 85 | 86 | examples: 87 | - "account=rabbit" 88 | - "account=george" 89 | 90 | - 91 | name: batch 92 | format: "batch=" 93 | information: "http://ircv3.net/specs/extensions/batch-3.2.html" 94 | comment: > 95 | The `batch` tag contains the ID of the batch the attached message 96 | is a part of. Messages that are a part of the same batch are 97 | related and are processed according to the IRCv3 `batch` 98 | specifications. Enabled by the IRCv3 99 | [`batch` capability](http://ircv3.net/specs/extensions/batch-3.2.html). 100 | 101 | examples: 102 | - "batch=1" 103 | - "batch=outer" 104 | - "batch=yXNAbvnRHTRBv" 105 | 106 | - 107 | name: broadcaster-lang 108 | format: "broadcaster-lang=" 109 | information: "https://github.com/justintv/Twitch-API/blob/master/IRC.md#roomstate-1" 110 | comment: > 111 | Used by Twitch.tv to represent the language of the current room 112 | when 'broadcaster language mode' is enabled. 113 | 114 | nonstandard: true 115 | 116 | - 117 | name: color 118 | format: "color=<#RRGGBB>" 119 | information: "https://github.com/justintv/Twitch-API/blob/master/IRC.md#privmsg" 120 | comment: > 121 | Used by Twitch.tv to represent the color of a user's name. 122 | 123 | nonstandard: true 124 | 125 | - 126 | name: display-name 127 | format: "display-name=" 128 | information: "https://github.com/justintv/Twitch-API/blob/master/IRC.md#privmsg" 129 | comment: > 130 | Used by Twitch.tv to represent the 'display name' of the user 131 | sending the given message. 132 | 133 | nonstandard: true 134 | 135 | - 136 | name: emote-sets 137 | format: "emote-sets=" 138 | information: "https://github.com/justintv/Twitch-API/blob/master/IRC.md#userstate-1" 139 | comment: > 140 | Used by Twitch.tv to list the set of 'emotes' that the sending user 141 | has access to. 142 | 143 | nonstandard: true 144 | 145 | - 146 | name: emotes 147 | format: "emotes=" 148 | information: "https://github.com/justintv/Twitch-API/blob/master/IRC.md#privmsg" 149 | comment: > 150 | Used by Twitch.tv to tell clients where given emote images should 151 | be inserted into the text of the given message. 152 | 153 | nonstandard: true 154 | 155 | - 156 | name: mod 157 | format: "mod=<0/1>" 158 | information: "https://github.com/justintv/Twitch-API/blob/master/IRC.md#privmsg" 159 | comment: > 160 | Used by Twitch.tv to represent whether the user is a moderator in 161 | the current Twitch stream. 162 | 163 | nonstandard: true 164 | 165 | - 166 | name: msg-id 167 | format: "msg-id=" 168 | information: "https://github.com/justintv/Twitch-API/blob/master/IRC.md#notice" 169 | comment: > 170 | Used by Twitch.tv to provide event names on `NOTICE`s sent by the 171 | server describing their specific events. 172 | 173 | nonstandard: true 174 | 175 | - 176 | name: r9k 177 | format: "r9k=<0/1>" 178 | information: "https://github.com/justintv/Twitch-API/blob/master/IRC.md#roomstate-1" 179 | comment: > 180 | Used by Twitch.tv to represent whether R9K mode is enabled in the 181 | current channel. When enabled, messages with more than 9 characters 182 | must be unique. 183 | 184 | nonstandard: true 185 | 186 | - 187 | name: slow 188 | format: "slow=" 189 | information: "https://github.com/justintv/Twitch-API/blob/master/IRC.md#roomstate-1" 190 | comment: > 191 | Used by Twitch.tv to represent how many seconds chatters without 192 | Twitch moderator privileges must wait between sending messages to 193 | the current channel. 194 | 195 | nonstandard: true 196 | 197 | - 198 | name: subs-only 199 | format: "subs-only=<0/1>" 200 | information: "https://github.com/justintv/Twitch-API/blob/master/IRC.md#roomstate-1" 201 | comment: > 202 | Used by Twitch.tv to represent whether the channel is in 203 | 'subscribers-only' mode. When enabled, only subscribers or 204 | Twitch moderators can speak. 205 | 206 | nonstandard: true 207 | 208 | - 209 | name: subscriber 210 | format: "subscriber=<0/1>" 211 | information: "https://github.com/justintv/Twitch-API/blob/master/IRC.md#privmsg" 212 | comment: > 213 | Used by Twitch.tv to represent whether the user is a subscriber to 214 | the current Twitch stream. 215 | 216 | nonstandard: true 217 | 218 | - 219 | name: turbo 220 | format: "turbo=<0/1>" 221 | information: "https://github.com/justintv/Twitch-API/blob/master/IRC.md#privmsg" 222 | comment: > 223 | Used by Twitch.tv to represent whether the user has the 'turbo badge'. 224 | 225 | nonstandard: true 226 | 227 | - 228 | name: user-id 229 | format: "user-id=" 230 | information: "https://github.com/justintv/Twitch-API/blob/master/IRC.md#privmsg" 231 | comment: > 232 | Used by Twitch.tv to convey the Twitch ID of the user sending this 233 | message. 234 | 235 | nonstandard: true 236 | 237 | - 238 | name: user-type 239 | format: "user-type=[]" 240 | information: "https://github.com/justintv/Twitch-API/blob/master/IRC.md#privmsg" 241 | comment: > 242 | Used by Twitch.tv to convey the type of user that is sending this 243 | message. 244 | 245 | nonstandard: true 246 | 247 | - 248 | name: time 249 | format: "time=" 250 | information: "http://ircv3.net/specs/extensions/server-time-3.2.html" 251 | comment: > 252 | The `time` tag contains the time that the given message should be 253 | treated as happening at. This is useful for things such as chat 254 | history replay. The value format is defined in the `server-time` 255 | specification. Enabled by the IRCv3 256 | [`server-time` capability](http://ircv3.net/specs/extensions/server-time-3.2.html). 257 | 258 | examples: 259 | - "time=2011-10-19T16:40:51.620Z" 260 | - "time=2012-06-30T23:59:60.419Z" 261 | -------------------------------------------------------------------------------- /_data/usermodes.yaml: -------------------------------------------------------------------------------- 1 | # usermodes.yaml 2 | # 3 | # This file is Copyright (c) 2015-2019 Daniel Oaks 4 | # 5 | # This file is Copyright (c) 2001-2004 Simon Butcher 6 | # 7 | # 8 | # This file is PUBLIC DOMAIN, to benefit the IRC developer community. If you 9 | # modify this file, please state your name and modifications here in order 10 | # for people to be able to distinguish between your version and this version. 11 | # 12 | # For more information or corrections, please contact the author. 13 | 14 | file: 15 | type: "usermodes" 16 | revision: "1.20" 17 | 18 | # The following information is used to create pretty HTML page and tables 19 | 20 | page: 21 | name: User Modes 22 | extra: > 23 |

24 | Red denotes a conflicting numeric definition, gray for deprecated 25 | (however quite possibly still in use), and blue for OK. 26 |

27 | 28 | table: 29 | row-ids: 30 | - char 31 | - name 32 | 33 | row-classes: 34 | - conflict 35 | - obsolete 36 | 37 | columns: 38 | - 39 | name: Mode 40 | content: char 41 | classes: code center 42 | inline-links: 43 | - char 44 | - name 45 | description: Mode character 46 | - 47 | name: Name 48 | content: name 49 | classes: code 50 | link: information 51 | - 52 | name: Origin 53 | content: origin 54 | link: contact 55 | description: Where the prefix came from 56 | - 57 | name: Server On 58 | content: server_on 59 | description: "Only a server can set this mode" 60 | classes: center 61 | - 62 | name: Server Off 63 | content: server_off 64 | description: "Only a server can unset this mode" 65 | classes: center 66 | - 67 | name: Parameter 68 | content: parameter 69 | classes: code 70 | description: Parameter for the mode 71 | - 72 | name: Comments 73 | content: comment 74 | seealso: seealso 75 | description: "Additional comments, history and other details" 76 | 77 | # The following format is used through-out this file. The first two fields 78 | # ('irc2char' and 'name') are mandatory, the others may or may not exist. 79 | 80 | format: 81 | char: mode char for irc protocol(s) 82 | name: mode name 83 | origin: where the mode was found 84 | when: release version or announced date 85 | contact: point of contact associated with the mode 86 | information: url where to find more information 87 | parameter: parameter name 88 | comment: "comments, history etc" 89 | server_on: true 90 | server_off: true 91 | conflict: true 92 | obsolete: true 93 | 94 | values: 95 | - 96 | char: a 97 | name: AWAY 98 | origin: RFC2812 99 | comment: User is away (see AWAY command?) 100 | server_on: Y 101 | server_off: Y 102 | conflict: true 103 | 104 | - 105 | char: a 106 | name: SERVICES_ADMIN 107 | origin: "Bahamut, Unreal" 108 | comment: User is a services administrator 109 | conflict: true 110 | 111 | - 112 | char: a 113 | name: ADMIN 114 | origin: Hybrid 115 | comment: > 116 | Admin status. Shown as an admin in WHOIS, able to load and 117 | unload modules, and see IP's in STATS c 118 | 119 | conflict: true 120 | 121 | - 122 | char: a 123 | name: ERRORS 124 | origin: AustHex 125 | comment: User receives all errors and alerts 126 | conflict: true 127 | 128 | - 129 | char: A 130 | name: SERVER_ADMIN 131 | origin: "Bahamut, Unreal" 132 | comment: User is a server administrator 133 | 134 | - 135 | char: b 136 | name: BOTS 137 | origin: Hybrid 138 | comment: User receives information about potential bots/drones 139 | conflict: true 140 | 141 | - 142 | char: b 143 | name: CHATOPS 144 | origin: "Bahamut, Unreal" 145 | comment: User receives CHATOPS messages 146 | conflict: true 147 | 148 | - 149 | char: B 150 | name: BOT 151 | origin: Unreal 152 | comment: User is a bot/drone 153 | 154 | - 155 | char: c 156 | name: CLIENT_CONNS 157 | origin: Hybrid 158 | comment: > 159 | User receives information about clients connecting/disconnecting 160 | 161 | conflict: true 162 | 163 | - 164 | char: c 165 | name: COMMON_CHANS 166 | origin: InspIRCd 167 | comment: > 168 | Other users must be in a common channel before being able to 169 | PRIVMSG this user. 170 | 171 | conflict: true 172 | 173 | - 174 | char: C 175 | name: CO_ADMIN 176 | origin: Unreal 177 | comment: User is a co-administrator 178 | 179 | - 180 | char: d 181 | name: DEAF 182 | origin: ircu 183 | comment: User does not receive channel messages 184 | conflict: true 185 | 186 | - 187 | char: d 188 | name: DEAF 189 | comment: > 190 | User does not receive channel messages unless they are prefixed 191 | with a specific character (usually '!' ?). This is an extension 192 | of the ircu '+d' 193 | 194 | conflict: true 195 | 196 | - 197 | char: d 198 | name: DEBUG 199 | origin: "Hybrid, Bahamut" 200 | comment: User receives debugging messages 201 | conflict: true 202 | 203 | - 204 | char: D 205 | name: DEAF 206 | origin: Hybrid? 207 | 208 | - 209 | char: e 210 | name: EXTERNAL 211 | origin: Hybrid? 212 | comment: > 213 | User receives information about servers connecting/disconnecting 214 | 215 | - 216 | char: f 217 | name: FULL 218 | origin: Hybrid 219 | comment: > 220 | User receives notices about I-lines being full, or too many 221 | clients in general 222 | 223 | conflict: true 224 | 225 | - 226 | char: f 227 | name: FLOODS 228 | origin: Bahamut 229 | comment: User receives flood notices 230 | conflict: true 231 | 232 | - 233 | char: F 234 | name: REMOTE_CLIENT_CONNS 235 | origin: Hybrid? 236 | comment: > 237 | User receives information about remote clients 238 | connecting/disconnecting 239 | 240 | - 241 | char: g 242 | name: DEBUG 243 | origin: ircu 244 | comment: User receives debugging messages 245 | conflict: true 246 | 247 | - 248 | char: g 249 | name: CALLERID 250 | origin: Hybrid 251 | comment: > 252 | User is ignoring everyone, unless they are ACCEPTed with the 253 | ACCEPT command 254 | 255 | conflict: true 256 | 257 | - 258 | char: g 259 | name: GLOBOPS 260 | origin: Bahamut 261 | comment: User receives GLOBOPS messages 262 | conflict: true 263 | 264 | - 265 | char: G 266 | name: CENSOR 267 | origin: InspIRCd 268 | comment: Censors messages based on the network config file. 269 | conflict: true 270 | 271 | - 272 | char: G 273 | name: STRIP_BAD_WORDS 274 | origin: Unreal 275 | comment: Messages user receives are stripped of profanity 276 | conflict: true 277 | 278 | - 279 | char: G 280 | name: SOFTCALLERID 281 | origin: Hybrid 282 | comment: > 283 | User is ignoring everyone they are not on common channels 284 | with, unless they are ACCEPTed with the ACCEPT command 285 | 286 | conflict: true 287 | 288 | - 289 | char: h 290 | name: HELPER 291 | origin: "Bahamut, AustHex" 292 | comment: "User is a HELPER, associated with network services" 293 | server_on: Y 294 | conflict: true 295 | 296 | - 297 | char: h 298 | name: HELPOP 299 | origin: ircd-seven 300 | comment: > 301 | User has marked themselves available for help, listed in the output 302 | of /stats p 303 | conflict: true 304 | 305 | - 306 | char: H 307 | name: HIDE_OPER 308 | origin: Unreal 309 | comment: Hides oper status from users (i.e. whois) 310 | 311 | - 312 | char: i 313 | name: INVISIBLE 314 | origin: RFC1459 315 | comment: User is invisible 316 | 317 | - 318 | char: I 319 | name: HIDECHANS 320 | origin: InspIRCd 321 | comment: Hides all channels the user's in from WHOIS. 322 | 323 | - 324 | char: I 325 | name: INVISIBLE_JOINPART 326 | origin: Unreal 327 | comment: > 328 | User is invisible when joining/parting channels. This is 329 | obsolete as of UnrealIRCd 3.2 beta 16 330 | 331 | obsolete: true 332 | conflict: true 333 | 334 | - 335 | char: j 336 | name: REJ 337 | origin: Hybrid? 338 | comment: User receives notices about rejected clients 339 | 340 | - 341 | char: k 342 | name: SERVICE 343 | origin: ircu 344 | comment: > 345 | User is a service (cannot be KILLed or KICKed from channels, and 346 | WHOIS output is usually limited) 347 | 348 | conflict: true 349 | 350 | - 351 | char: k 352 | name: KILLS 353 | origin: "Hybrid, Bahamut" 354 | comment: User receives KILL notices 355 | conflict: true 356 | 357 | - 358 | char: l 359 | name: LOCOPS 360 | origin: Hybrid 361 | comment: User receives LOCOPS messages 362 | conflict: true 363 | 364 | - 365 | char: l 366 | name: LISTALL 367 | origin: AustHex 368 | comment: User can list all channels (including hidden ones) 369 | conflict: true 370 | 371 | - 372 | char: n 373 | name: NCHANGE 374 | origin: Hybrid 375 | comment: User sees client nick changes 376 | conflict: true 377 | 378 | - 379 | char: n 380 | name: ROUTING 381 | origin: Bahamut 382 | comment: User receives routing messages 383 | conflict: true 384 | 385 | - 386 | char: N 387 | name: NETWORK_ADMIN 388 | origin: Unreal 389 | comment: User is a network administrator 390 | 391 | - 392 | char: m 393 | name: SPAMBOTS 394 | origin: Bahamut 395 | comment: User receives notices about (potential) spambots 396 | 397 | - 398 | char: o 399 | name: GLOBAL_OPERATOR 400 | origin: RFC1459 401 | comment: User is a network-wide or 'global' operator 402 | 403 | - 404 | char: O 405 | name: LOCAL_OPERATOR 406 | origin: RFC2812 407 | comment: User is a server-wide or 'local' operator 408 | 409 | - 410 | char: O 411 | name: HELPER 412 | origin: ircd-seven 413 | comment: > 414 | User is an operator with limited powers, can only set umode +h and 415 | receive operwalls 416 | 417 | - 418 | char: p 419 | name: HIDE_CHANNELS 420 | origin: Unreal 421 | comment: > 422 | Hide channels from user's WHOIS reply (will suppress 423 | RPL_WHOISCHANNELS) 424 | 425 | - 426 | char: p 427 | name: OVERRIDE 428 | origin: Charybdis 429 | comment: > 430 | User can send to, join, and execute commands on channels regardless 431 | of any modes that would normally prevent them from doing so. 432 | 433 | - 434 | char: q 435 | name: KIX 436 | origin: Unreal 437 | comment: "Only U:liners/arbiters can kick this user" 438 | conflict: true 439 | 440 | - 441 | char: q 442 | name: QUIET 443 | origin: Hybrid? 444 | comment: "Hides idle and signon time from user's WHOIS reply" 445 | conflict: true 446 | 447 | - 448 | char: r 449 | name: RESTRICTED 450 | origin: RFC2812 451 | comment: Restricted user connection 452 | server_on: Y 453 | server_off: Y 454 | conflict: true 455 | 456 | - 457 | char: r 458 | name: REGISTERED 459 | origin: "Bahamut, ircu" 460 | comment: Nickname is registered with a network nickname service 461 | server_on: Y 462 | server_off: Y 463 | conflict: true 464 | 465 | - 466 | char: r 467 | name: REJ 468 | origin: Hybrid 469 | comment: User receives notices about rejected clients 470 | conflict: true 471 | obsolete: true 472 | 473 | - 474 | char: R 475 | name: NO_NON_REGISTERED 476 | origin: "Bahamut, Unreal" 477 | server_on: Y 478 | server_off: Y 479 | comment: User wants to block messages from non-registered nicknames 480 | 481 | - 482 | char: s 483 | name: SERVER_NOTICES 484 | origin: RFC1459 485 | comment: > 486 | User receives server notices. RFC2812 considers this mode 487 | obsolete, however it is still in very wide-spread use. 488 | 489 | - 490 | char: s 491 | name: SERVER_NOTICES 492 | origin: ircu 493 | parameter: Mask integer 494 | comment: > 495 | User receives server notices, and can opt in/out of particular 496 | notice types by supplying the optional mask as an integer 497 | 498 | - 499 | char: s 500 | name: SERVER_NOTICES 501 | origin: "Unreal" 502 | parameter: Notice mask list 503 | comment: > 504 | User receives server notices. The notice masks are normally a 505 | list of letters corresponding with specific notices the user 506 | wishes to receive, such as 'D' for debugging, etc. 507 | 508 | - 509 | char: S 510 | name: SERVICE 511 | origin: Unreal 512 | comment: "User is a service, and is protected." 513 | conflict: true 514 | 515 | - 516 | char: S 517 | name: SSL 518 | origin: Hybrid? 519 | comment: > 520 | User is connected via SSL/TLS. See also +Z SSLCLIENT 521 | and +z SECURE. 522 | server_on: Y 523 | server_off: Y 524 | conflict: true 525 | 526 | - 527 | char: S 528 | name: STRIPCOLOR 529 | origin: InspIRCd 530 | comment: Strips control codes from messages to the user 531 | conflict: true 532 | 533 | - 534 | char: t 535 | name: Z_LINED 536 | origin: AustHex 537 | comment: "User is using an AustHex Z: line" 538 | server_on: Y 539 | server_off: Y 540 | conflict: true 541 | 542 | - 543 | char: t 544 | name: MODIFIED_HOST 545 | origin: Unreal 546 | comment: User is using a /vhost (modified host) 547 | server_on: Y 548 | server_off: Y 549 | conflict: true 550 | 551 | - 552 | char: T 553 | name: W_LINED 554 | origin: AustHex 555 | comment: "User is using an AustHex w: line" 556 | server_on: Y 557 | server_off: Y 558 | conflict: true 559 | 560 | - 561 | char: T 562 | name: BLOCK_CTCP 563 | origin: Unreal 564 | comment: Blocks all CTCP requests from other users 565 | conflict: true 566 | 567 | - 568 | char: u 569 | name: UNAUTH 570 | origin: Hybrid 571 | comment: User receives unauthorized client connection notices 572 | 573 | - 574 | char: v 575 | name: HOST_HIDING 576 | origin: AustHex 577 | comment: > 578 | Hide the host of the user, often with a hashed value. Some 579 | networks use 'mirroring', or masking with metacharacters. The 580 | letter 'v' comes from Austnet's 'Virtual World'. Be aware that 581 | use of +x for the same purpose is more wide-spread. 582 | 583 | conflict: true 584 | 585 | - 586 | char: v 587 | name: VICTIM 588 | origin: Unreal 589 | comment: User receives messages regarding infected DCC rejections 590 | conflict: true 591 | 592 | - 593 | char: V 594 | name: WEBTV 595 | origin: Unreal 596 | comment: User is using a WebTV client 597 | 598 | - 599 | char: w 600 | name: WALLOPS 601 | origin: RFC1459 602 | comment: User receives WALLOPS messages 603 | 604 | - 605 | char: W 606 | name: WHOIS_PARANOIA 607 | origin: Unreal 608 | comment: User is receives a notice when WHOIS'd 609 | conflict: true 610 | 611 | - 612 | char: W 613 | name: WEBIRC 614 | origin: Hybrid? 615 | comment: Designates this user is connected using a webirc gateway 616 | conflict: true 617 | 618 | - 619 | char: x 620 | name: HOST_HIDING 621 | origin: "ircu, Unreal" 622 | comment: > 623 | Hide the host of the user, often with a hashed value. Some 624 | networks use 'mirroring', or masking with metacharacters. Using 625 | the 'x' letter for this mode appears to be the most standard 626 | method for toggling masking user hosts. 627 | 628 | - 629 | char: x 630 | name: EXTERNAL 631 | origin: Hybrid 632 | comment: > 633 | User receives notices about servers connecting/disconnecting. 634 | Hybrid now uses the 'e' character for this mode 635 | 636 | conflict: true 637 | obsolete: true 638 | 639 | - 640 | char: y 641 | name: STATS_LINKS 642 | origin: Bahamut 643 | comment: User receives notices about stats/links 644 | conflict: true 645 | 646 | - 647 | char: y 648 | name: SPY 649 | origin: Hybrid 650 | comment: > 651 | User receives LINKS, STATS (if configured) and TRACE notices 652 | 653 | conflict: true 654 | 655 | - 656 | char: z 657 | name: OPERWALL 658 | origin: Hybrid 659 | comment: User receives operator generated WALLOPS messages 660 | conflict: true 661 | 662 | - 663 | char: z 664 | name: SECURE 665 | origin: Unreal 666 | comment: > 667 | User is connected via SSL/TLS. See also +Z SSLCLIENT and 668 | +S SSL. 669 | conflict: true 670 | 671 | - 672 | char: z 673 | name: SSLQUERIES 674 | origin: InspIRCd 675 | comment: > 676 | Prevents messages from being sent to or received from a 677 | user that is not connected using SSL/TLS. See also 678 | +Z SECURED_ONLY. 679 | conflict: true 680 | 681 | - 682 | char: Z 683 | name: SECURED_ONLY 684 | origin: Unreal 685 | comment: > 686 | Prevents messages from being sent to or received from a 687 | user that is not connected using SSL/TLS. See also 688 | +z SSLQUERIES. 689 | conflict: true 690 | 691 | - 692 | char: Z 693 | name: SSLCLIENT 694 | origin: Charybdis 695 | comment: > 696 | User is connected via SSL/TLS. See also +z SECURE and 697 | +S SSL. 698 | conflict: true 699 | -------------------------------------------------------------------------------- /_data/validation/chanmembers.meta.yaml: -------------------------------------------------------------------------------- 1 | imports: 2 | - irc-list.types.yaml 3 | root: 4 | type: datatable 5 | -------------------------------------------------------------------------------- /_data/validation/chanmodes.meta.yaml: -------------------------------------------------------------------------------- 1 | imports: 2 | - irc-list.types.yaml 3 | root: 4 | type: datatable 5 | -------------------------------------------------------------------------------- /_data/validation/chantypes.meta.yaml: -------------------------------------------------------------------------------- 1 | imports: 2 | - irc-list.types.yaml 3 | root: 4 | type: datatable 5 | -------------------------------------------------------------------------------- /_data/validation/clientcaps.meta.yaml: -------------------------------------------------------------------------------- 1 | imports: 2 | - irc-list.types.yaml 3 | root: 4 | type: datatable 5 | -------------------------------------------------------------------------------- /_data/validation/ctcp.meta.yaml: -------------------------------------------------------------------------------- 1 | imports: 2 | - irc-list.types.yaml 3 | root: 4 | type: datatable 5 | -------------------------------------------------------------------------------- /_data/validation/extbans.meta.yaml: -------------------------------------------------------------------------------- 1 | imports: 2 | - irc-list.types.yaml 3 | root: 4 | type: datatable 5 | -------------------------------------------------------------------------------- /_data/validation/formatting.meta.yaml: -------------------------------------------------------------------------------- 1 | imports: 2 | - irc-list.types.yaml 3 | root: 4 | type: datatable 5 | -------------------------------------------------------------------------------- /_data/validation/irc-list.types.yaml: -------------------------------------------------------------------------------- 1 | datatable: 2 | type: dict 3 | kids: 4 | file: 5 | type: dict 6 | kids: 7 | type: 8 | type: string 9 | revision: 10 | type: string 11 | page: 12 | type: dict 13 | kids: 14 | name: 15 | type: string 16 | extra: 17 | type: string 18 | table: 19 | type: dict 20 | kids: 21 | row-id: 22 | type: string 23 | required: false 24 | row-ids: 25 | type: listofstrings 26 | required: false 27 | row-classes: 28 | type: listofstrings 29 | neg-row-classes: 30 | type: listofstrings 31 | required: false 32 | columns: 33 | type: listofdicts 34 | kids: 35 | name: 36 | type: string 37 | content: 38 | type: string 39 | classes: 40 | type: string 41 | required: false 42 | inline-link: 43 | type: string 44 | required: false 45 | inline-links: 46 | type: listofstrings 47 | required: false 48 | link: 49 | type: string 50 | required: false 51 | seealso: 52 | type: string 53 | required: false 54 | description: 55 | type: string 56 | examples: 57 | type: boolean 58 | required: false 59 | xml_escape: 60 | type: boolean 61 | required: false 62 | markdown: 63 | type: boolean 64 | required: false 65 | format: 66 | type: mapofmultis 67 | types: 68 | - 69 | type: string 70 | - 71 | type: boolean 72 | values: 73 | type: listofdicts 74 | kids: 75 | char: 76 | type: string 77 | required: false 78 | name: 79 | type: string 80 | numeric: 81 | type: string 82 | required: false 83 | mode: 84 | type: string 85 | required: false 86 | prefixchar: 87 | type: string 88 | required: false 89 | origin: 90 | type: string 91 | required: false 92 | when: 93 | type: string 94 | required: false 95 | format: 96 | type: string 97 | required: false 98 | ban-type: 99 | type: string 100 | required: false 101 | caret: 102 | type: string 103 | required: false 104 | client-names: 105 | type: string 106 | required: false 107 | client-support: 108 | type: string 109 | required: false 110 | last-tested-version: 111 | type: string 112 | required: false 113 | working-since: 114 | type: string 115 | required: false 116 | works: 117 | type: boolean 118 | required: false 119 | requested-caps: 120 | type: string 121 | required: false 122 | script: 123 | type: string 124 | required: false 125 | script-required: 126 | type: string 127 | required: false 128 | unique: 129 | type: boolean 130 | required: false 131 | unreleased: 132 | type: boolean 133 | required: false 134 | comment: 135 | type: string 136 | required: false 137 | ctcp-type: 138 | type: string 139 | required: false 140 | desc: 141 | type: string 142 | required: false 143 | inline-link: 144 | type: string 145 | required: false 146 | inline-links: 147 | type: listofstrings 148 | required: false 149 | link: 150 | type: string 151 | required: false 152 | seealso: 153 | type: string 154 | required: false 155 | contact: 156 | type: string 157 | required: false 158 | information: 159 | type: string 160 | required: false 161 | parameter: 162 | type: string 163 | required: false 164 | examples: 165 | type: listofstrings 166 | required: false 167 | server_on: 168 | type: string 169 | required: false 170 | server_off: 171 | type: string 172 | required: false 173 | clientcreate: 174 | type: string 175 | required: false 176 | broadcast: 177 | type: string 178 | required: false 179 | server_only: 180 | type: string 181 | required: false 182 | spread: 183 | type: string 184 | required: false 185 | registration: 186 | type: boolean 187 | required: false 188 | proposed: 189 | type: boolean 190 | required: false 191 | conflict: 192 | type: boolean 193 | required: false 194 | repeated: 195 | type: boolean 196 | required: false 197 | obsolete: 198 | type: boolean 199 | required: false 200 | nonstandard: 201 | type: boolean 202 | required: false 203 | -------------------------------------------------------------------------------- /_data/validation/isupport.meta.yaml: -------------------------------------------------------------------------------- 1 | imports: 2 | - irc-list.types.yaml 3 | root: 4 | type: datatable 5 | -------------------------------------------------------------------------------- /_data/validation/numerics.meta.yaml: -------------------------------------------------------------------------------- 1 | imports: 2 | - irc-list.types.yaml 3 | root: 4 | type: datatable 5 | -------------------------------------------------------------------------------- /_data/validation/selfmessage.meta.yaml: -------------------------------------------------------------------------------- 1 | imports: 2 | - irc-list.types.yaml 3 | root: 4 | type: datatable 5 | -------------------------------------------------------------------------------- /_data/validation/servermodes.meta.yaml: -------------------------------------------------------------------------------- 1 | imports: 2 | - irc-list.types.yaml 3 | root: 4 | type: datatable 5 | -------------------------------------------------------------------------------- /_data/validation/snomasks.meta.yaml: -------------------------------------------------------------------------------- 1 | imports: 2 | - irc-list.types.yaml 3 | root: 4 | type: datatable 5 | -------------------------------------------------------------------------------- /_data/validation/stats.meta.yaml: -------------------------------------------------------------------------------- 1 | imports: 2 | - irc-list.types.yaml 3 | root: 4 | type: datatable 5 | -------------------------------------------------------------------------------- /_data/validation/tags.meta.yaml: -------------------------------------------------------------------------------- 1 | imports: 2 | - irc-list.types.yaml 3 | root: 4 | type: datatable 5 | -------------------------------------------------------------------------------- /_data/validation/usermodes.meta.yaml: -------------------------------------------------------------------------------- 1 | imports: 2 | - irc-list.types.yaml 3 | root: 4 | type: datatable 5 | -------------------------------------------------------------------------------- /_includes/table.html: -------------------------------------------------------------------------------- 1 |

{{ info.page.name }}

2 |

Revision {{ info.file.revision }}

3 | 4 | {{ info.page.extra }} 5 | 6 | 90 | 91 | 92 | 93 | 94 | {% for col in info.table.columns %} 95 | 98 | {% endfor %} 99 | 100 | 101 | 102 | {% for row in info.values %} 103 | 104 | {% for col in info.table.columns %} 105 | 131 | {% endfor %} 132 | 133 | {% endfor %} 134 | 135 |
96 | {{ col.name }} 97 |
106 | {% if col['inline-link'] %}{% if row[col['inline-link']] %}{% endif %}{% endif %} 107 | {% if col['inline-links'] %}{% endif %} 108 | {% if col.link %}{% if row[col.link] %}{% endif %}{% endif %} 109 | {% if col.xml_escape %} 110 | {{ row[col['content']] | xml_escape }} 111 | {% elsif col.markdown %} 112 | {{ row[col['content']] | markdownify }} 113 | {% else %} 114 | {{ row[col['content']] }} 115 | {% endif %} 116 | {% if col.link %}{% if row[col.link] %}{% endif %}{% endif %} 117 | {% if col['inline-links'] %}{% endif %} 118 | {% if col['inline-link'] %}{% if row[col['inline-link']] %}{% endif %}{% endif %} 119 | {% if col.seealso %}{% if row.seealso %} 120 |

Also see {{ row.seealso }}.

121 | {% endif %}{% endif %} 122 | {% if col.examples %}{% if row.examples %} 123 |

Examples:

124 |
    125 | {% for example in row.examples %} 126 |
  • {{ example }}
  • 127 | {% endfor %} 128 |
129 | {% endif %}{% endif %} 130 |
136 | 137 | 140 | -------------------------------------------------------------------------------- /_layouts/compress.html: -------------------------------------------------------------------------------- 1 | --- 2 | # Jekyll layout that compresses HTML 3 | # v3.1.0 4 | # http://jch.penibelst.de/ 5 | # © 2014–2015 Anatol Broder 6 | # MIT License 7 | --- 8 | 9 | {% capture _LINE_FEED %} 10 | {% endcapture %}{% if site.compress_html.ignore.envs contains jekyll.environment or site.compress_html.ignore.envs == "all" %}{{ content }}{% else %}{% capture _content %}{{ content }}{% endcapture %}{% assign _profile = site.compress_html.profile %}{% if site.compress_html.endings == "all" %}{% assign _endings = "html head body li dt dd optgroup option colgroup caption thead tbody tfoot tr td th" | split: " " %}{% else %}{% assign _endings = site.compress_html.endings %}{% endif %}{% for _element in _endings %}{% capture _end %}{% endcapture %}{% assign _content = _content | remove: _end %}{% endfor %}{% if _profile and _endings %}{% assign _profile_endings = _content | size | plus: 1 %}{% endif %}{% for _element in site.compress_html.startings %}{% capture _start %}<{{ _element }}>{% endcapture %}{% assign _content = _content | remove: _start %}{% endfor %}{% if _profile and site.compress_html.startings %}{% assign _profile_startings = _content | size | plus: 1 %}{% endif %}{% if site.compress_html.comments == "all" %}{% assign _comments = "" | split: " " %}{% else %}{% assign _comments = site.compress_html.comments %}{% endif %}{% if _comments.size == 2 %}{% capture _comment_befores %}.{{ _content }}{% endcapture %}{% assign _comment_befores = _comment_befores | split: _comments.first %}{% for _comment_before in _comment_befores %}{% if forloop.first %}{% continue %}{% endif %}{% capture _comment_outside %}{% if _carry %}{{ _comments.first }}{% endif %}{{ _comment_before }}{% endcapture %}{% capture _comment %}{% unless _carry %}{{ _comments.first }}{% endunless %}{{ _comment_outside | split: _comments.last | first }}{% if _comment_outside contains _comments.last %}{{ _comments.last }}{% assign _carry = false %}{% else %}{% assign _carry = true %}{% endif %}{% endcapture %}{% assign _content = _content | remove_first: _comment %}{% endfor %}{% if _profile %}{% assign _profile_comments = _content | size | plus: 1 %}{% endif %}{% endif %}{% assign _pre_befores = _content | split: "" %}{% assign _pres_after = "" %}{% if _pres.size != 0 %}{% if site.compress_html.blanklines %}{% assign _lines = _pres.last | split: _LINE_FEED %}{% capture _pres_after %}{% for _line in _lines %}{% assign _trimmed = _line | split: " " | join: " " %}{% if _trimmed != empty or forloop.last %}{% unless forloop.first %}{{ _LINE_FEED }}{% endunless %}{{ _line }}{% endif %}{% endfor %}{% endcapture %}{% else %}{% assign _pres_after = _pres.last | split: " " | join: " " %}{% endif %}{% endif %}{% capture _content %}{{ _content }}{% if _pre_before contains "" %}{% endif %}{% unless _pre_before contains "" and _pres.size == 1 %}{{ _pres_after }}{% endunless %}{% endcapture %}{% endfor %}{% if _profile %}{% assign _profile_collapse = _content | size | plus: 1 %}{% endif %}{% if site.compress_html.clippings == "all" %}{% assign _clippings = "html head title base link meta style body article section nav aside h1 h2 h3 h4 h5 h6 hgroup header footer address p hr blockquote ol ul li dl dt dd figure figcaption main div table caption colgroup col tbody thead tfoot tr td th" | split: " " %}{% else %}{% assign _clippings = site.compress_html.clippings %}{% endif %}{% for _element in _clippings %}{% assign _edges = " ;; ;" | replace: "e", _element | split: ";" %}{% assign _content = _content | replace: _edges[0], _edges[1] | replace: _edges[2], _edges[3] | replace: _edges[4], _edges[5] %}{% endfor %}{% if _profile and _clippings %}{% assign _profile_clippings = _content | size | plus: 1 %}{% endif %}{{ _content }}{% if _profile %}
Step Bytes
raw {{ content | size }}{% if _profile_endings %}
endings {{ _profile_endings }}{% endif %}{% if _profile_startings %}
startings {{ _profile_startings }}{% endif %}{% if _profile_comments %}
comments {{ _profile_comments }}{% endif %}{% if _profile_collapse %}
collapse {{ _profile_collapse }}{% endif %}{% if _profile_clippings %}
clippings {{ _profile_clippings }}{% endif %}
{% endif %}{% endif %} 11 | -------------------------------------------------------------------------------- /_layouts/default.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: compress 3 | --- 4 | 5 | 6 | 7 | 8 | {{ page.title }} 9 | 10 | 11 | 12 | 13 | {{ content }} 14 | 15 | 16 | -------------------------------------------------------------------------------- /_legacy_data/chanmembers.def: -------------------------------------------------------------------------------- 1 | /* $Id: chanmembers.def,v 1.5 2004/10/16 19:55:51 pickle Exp $ 2 | * 3 | * This file is Copyright (c) 2001,2002,2003,2004 Simon Butcher 4 | * 5 | * 6 | * This file is PUBLIC DOMAIN, to benifit the IRC developer community. If you 7 | * modify this file, please state your name and modifications here in order 8 | * for people to be able to distinguish between your version and this version. 9 | * 10 | * For more information or corrections, please contact the author. 11 | */ 12 | autogen definitions chanmembers; 13 | 14 | /* The following format is used through-out this file. The fields 'name', 15 | * 'prefixchar', and irc2_mode are manditory, the others may or may not exist. 16 | * 17 | * chanmembers = { 18 | * name = ""; 19 | * prefixchar = ""; 20 | * irc2mode = ""; 21 | * [ origin = ""; ] 22 | * [ when = ""; ] 23 | * [ contact = ""; ] 24 | * [ information = ""; ] 25 | * [ comment = ""; ] 26 | * [ conflict = "yes"; ] 27 | * [ obsolete = "yes"; ] 28 | * } 29 | * 30 | * The list below is ordered from least authoritative to most 31 | */ 32 | 33 | 34 | revision = "$Revision: 1.5 $"; 35 | lastupdated = "$Date: 2004/10/16 19:55:51 $"; 36 | 37 | 38 | chanmembers = { 39 | name = "VOICED"; 40 | prefixchar = "+"; 41 | irc2mode = "v"; 42 | origin = "RFC1459"; 43 | comment = "Channel member is voiced. They can speak while the " 44 | "channel is being moderated. Some implementations also " 45 | "allow them to speak when barred from access to the " 46 | "channel for some reason (such as being banned)"; 47 | }; 48 | 49 | chanmembers = { 50 | name = "HALF_OPERATOR"; 51 | prefixchar = "%"; 52 | irc2mode = "h"; 53 | origin = "Hybrid"; 54 | comment = "User is a channel half-operator, that is they have " 55 | "'half' the access of a full operator. Half-ops can kick " 56 | "unopped users, voiced users, set channel modes including " 57 | "+v, but not kick ops or deop ops. This leads to greater " 58 | "security on channels."; 59 | }; 60 | 61 | chanmembers = { 62 | name = "OPERATOR"; 63 | prefixchar = "@"; 64 | irc2mode = "o"; 65 | origin = "RFC1459"; 66 | comment = "User is a channel operator. They can kick users, change " 67 | "modes, set other users to operator (or lower) status, etc."; 68 | }; 69 | 70 | chanmembers = { 71 | name = "CREATOR"; 72 | prefixchar = "@"; 73 | irc2mode = "O"; 74 | origin = "RFC2811"; 75 | comment = "The user created the channel, but only used for '!' " 76 | "channels according to the RFC."; 77 | }; 78 | 79 | chanmembers = { 80 | name = "SERVICE"; 81 | prefixchar = "!"; 82 | irc2mode = "!"; 83 | origin = "KineIRCd"; 84 | contact = "kineircd@alien.net.au"; 85 | comment = "This is given only by servers or services. It should " 86 | "always be the highest ranking membership type in the " 87 | "channel, and denotes that the user with the membership " 88 | "status is a service. The intended use for this was to " 89 | "mark out which channel member is an official channel " 90 | "service, however other applications are also available."; 91 | }; 92 | 93 | chanmembers = { 94 | name = "FOUNDER"; 95 | prefixchar = "."; 96 | irc2mode = "u"; 97 | origin = "tr-ircd"; 98 | comment = "This is given to users when they are given 'founder' " 99 | "status on a channel, and should have a rank higher than " 100 | "a normal operator."; 101 | }; 102 | 103 | -------------------------------------------------------------------------------- /_legacy_data/chanmodes.def: -------------------------------------------------------------------------------- 1 | /* $Id: chanmodes.def,v 1.14 2004/10/25 18:53:56 pickle Exp $ 2 | * 3 | * This file is Copyright (c) 2001,2002,2003,2004 Simon Butcher 4 | * 5 | * 6 | * This file is PUBLIC DOMAIN, to benifit the IRC developer community. If you 7 | * modify this file, please state your name and modifications here in order 8 | * for people to be able to distinguish between your version and this version. 9 | * 10 | * For more information or corrections, please contact the author. 11 | */ 12 | autogen definitions chanmodes; 13 | 14 | /* The following format is used through-out this file. The first two fields 15 | * ('irc2char' and 'name') are manditory, the others may or may not exist. 16 | * 17 | * usermodes = { 18 | * irc2char = ""; 19 | * name = ""; 20 | * [ origin = ""; ] 21 | * [ when = ""; ] 22 | * [ contact = ""; ] 23 | * [ information = ""; ] 24 | * [ parameter = ""; ] 25 | * [ comment = ""; ] 26 | * [ server_on = "yes"; ] 27 | * [ server_off = "yes"; ] 28 | * [ conflict = "yes"; ] 29 | * [ obsolete = "yes"; ] 30 | * } 31 | */ 32 | 33 | 34 | revision = "$Revision: 1.14 $"; 35 | lastupdated = "$Date: 2004/10/25 18:53:56 $"; 36 | 37 | 38 | chanmodes = { 39 | irc2char = "a"; 40 | name = "ANONYMOUS"; 41 | origin = "RFC2811"; 42 | comment = "Marks the channel to use anonymous conversations. All " 43 | "conversations, and people joining/parting are viewed all " 44 | "from 'anonymous!anonymous@anonymous'. Users quitting are " 45 | "seen as users parting the channel with no reason."; 46 | }; 47 | 48 | chanmodes = { 49 | irc2char = "a"; 50 | name = "HIDEOPS"; 51 | origin = "Hybrid"; 52 | comment = "Anonymous operators - channel operators a hidden"; 53 | conflict = "yes"; 54 | }; 55 | 56 | chanmodes = { 57 | irc2char = "a"; 58 | name = "CHANNEL_PROTECTION"; 59 | origin = "Unreal"; 60 | parameter = "Nickname"; 61 | comment = "Gives the given nickname 'protection'; Cannot be " 62 | "kicked/deopped"; 63 | conflict = "yes"; 64 | }; 65 | 66 | chanmodes = { 67 | irc2char = "A"; 68 | name = "ADMIN_ONLY"; 69 | origin = "Unreal"; 70 | comment = "Only server/service/network (co-)administrators can join " 71 | "the channel"; 72 | }; 73 | 74 | chanmodes = { 75 | irc2char = "b"; 76 | name = "BAN"; 77 | origin = "RFC1459"; 78 | parameter = "n!u@h mask"; 79 | comment = "Bans the specified mask from the channel"; 80 | }; 81 | 82 | chanmodes = { 83 | irc2char = "c"; 84 | name = "NOCOLOUR"; 85 | origin = "Bahamut"; 86 | comment = "Stops colour from being broadcast from the channel. Some " 87 | "implementations drop lines, some implementations strip it."; 88 | }; 89 | 90 | chanmodes = { 91 | irc2char = "C"; 92 | name = "NO_CTCP"; 93 | origin = "Unreal"; 94 | comment = "Stops people from sending CTCP commands to the channel"; 95 | }; 96 | 97 | chanmodes = { 98 | irc2char = "d"; 99 | name = "DENY"; 100 | parameter = "Real-name"; 101 | comment = "Like ban, but apparently bans through matching the given " 102 | "one-word mask to the 'irc-name' or 'real name' field a " 103 | "client has."; 104 | conflict = "yes"; 105 | }; 106 | 107 | chanmodes = { 108 | irc2char = "d"; 109 | name = "HAS_HIDDEN"; // what is the real name? 110 | origin = "QuakeNet"; 111 | comment = "Set by the server when the channel mode +D (on QuakeNet) " 112 | "was removed, but there are still 'hidden' users in the " 113 | "channel"; 114 | server_on = "yes"; 115 | server_off = "yes"; 116 | conflict = "yes"; 117 | }; 118 | 119 | chanmodes = { 120 | irc2char = "D"; 121 | name = "DELJOINS"; 122 | origin = "QuakeNet"; 123 | comment = "When set, all joins are hidden until the user is given a " 124 | "voice, oper status, until they speak, or change a topic " 125 | "etc."; 126 | }; 127 | 128 | chanmodes = { 129 | irc2char = "e"; 130 | name = "EVENT"; 131 | origin = "AustHex"; 132 | obsolete = "yes"; 133 | comment = "Stops users from changing their nicknames when set. " 134 | "AustNet considers this obsolete, due to the conflict " 135 | "between the more widely accepted use of the 'e' mode."; 136 | }; 137 | 138 | chanmodes = { 139 | irc2char = "e"; 140 | name = "BAN_EXCEPTION"; 141 | origin = "RFC2811"; 142 | parameter = "n!u@h mask"; 143 | comment = "Creates a ban exception using the given mask. Normally, " 144 | "if someone's identity fits a channel ban mask, they are " 145 | "banned. If their identity also matches the ban exception " 146 | "mask, they are allowed not banned (exempt from the ban)"; 147 | }; 148 | 149 | chanmodes = { 150 | irc2char = "f"; 151 | name = "FLOOD_LIMIT"; 152 | origin = "Unreal"; 153 | information = "http://www.vulnscan.org/UnrealIrcd/unreal32docs.html#feature_antiflood"; 154 | parameter = ":"; 155 | comment = "Flood limiter"; 156 | }; 157 | 158 | chanmodes = { 159 | irc2char = "G"; 160 | name = "STRIP_BAD_WORDS"; 161 | origin = "Unreal"; 162 | comment = "Strips profanity from messages broadcast through the " 163 | "channel"; 164 | }; 165 | 166 | chanmodes = { 167 | irc2char = "h"; 168 | name = "HALFOP"; 169 | origin = "RFC2811"; 170 | parameter = "Nickname"; 171 | comment = "Gives the specified nickname channel half-operator status"; 172 | }; 173 | 174 | chanmodes = { 175 | irc2char = "H"; 176 | name = "NO_HIDING"; 177 | origin = "Unreal"; 178 | comment = "When set, this stops users set umode +I " 179 | "(INVISIBLE_JOINPART) from being able to join or part a " 180 | "channel secretly"; 181 | }; 182 | 183 | chanmodes = { 184 | irc2char = "i"; 185 | name = "INVITE_ONLY"; 186 | origin = "RFC1459"; 187 | comment = "Marks the channel as invite only. When set, clients must " 188 | "be invited using the INVITE command prior to being " 189 | "allowed to join the channel"; 190 | }; 191 | 192 | chanmodes = { 193 | irc2char = "I"; 194 | name = "INVITATION_MASK"; 195 | origin = "RFC2811"; 196 | parameter = "n!u@h mask"; 197 | comment = "If the channel is marked as invite only, users matching " 198 | "the mask(s) set using this mode are allowed to enter " 199 | "without invitation."; 200 | }; 201 | 202 | chanmodes = { 203 | irc2char = "J"; 204 | name = "JOIN_THROTTLE"; 205 | origin = "Dancer"; 206 | parameter = ","; 207 | comment = "When set, users may join this channel once every " 208 | "'frequency' seconds with an initial burst and limit value " 209 | "of 'limit' users"; 210 | }; 211 | 212 | chanmodes = { 213 | irc2char = "k"; 214 | name = "KEYLOCK"; 215 | origin = "RFC1459"; 216 | parameter = "Password"; 217 | comment = "Locks the channel with the given password, which must be " 218 | "specified via the JOIN command to any clients attempting " 219 | "to join the channel when set. The correct key must be " 220 | "given when turning this mode off."; 221 | }; 222 | 223 | chanmodes = { 224 | irc2char = "K"; 225 | name = "NOKNOCK"; 226 | origin = "Unreal"; 227 | comment = "Disables people using KNOCK on the channel"; 228 | }; 229 | 230 | chanmodes = { 231 | irc2char = "l"; 232 | name = "LIMIT"; 233 | origin = "RFC1459"; 234 | parameter = "Integer"; 235 | comment = "Limits the channel to only allow the given number of " 236 | "members to be in the channel while the mode is set. " 237 | "Nobody else is allowed to join the channel while the " 238 | "channel membership count is greater than or equal to " 239 | "the number given with the mode, however some " 240 | "implementations allow IRC operators to circumvent that " 241 | "rule. Most traditional implementations accept only a " 242 | "signed integer here (using atoi()), however some more " 243 | "modern implementations may accept an unsigned integer " 244 | "(i.e. strtoul()), or even have machine variations on " 245 | "whether a 32-bit or 64-bit integer is accepted."; 246 | }; 247 | 248 | chanmodes = { 249 | irc2char = "L"; 250 | name = "LISTED"; 251 | origin = "Bahamut"; 252 | conflict = "yes"; 253 | }; 254 | 255 | chanmodes = { 256 | irc2char = "L"; 257 | name = "LINK"; 258 | origin = "Unreal"; 259 | parameter = "Channel name"; 260 | comment = "If the channel is +l, and the channel is full, users will " 261 | "be redirected to the given channel"; 262 | conflict = "yes"; 263 | }; 264 | 265 | chanmodes = { 266 | irc2char = "m"; 267 | name = "MODERATED"; 268 | origin = "RFC1459"; 269 | comment = "The channel is being moderated. Only users who have a " 270 | "voice are able to talk (people who are voiced or channel " 271 | "operator members)"; 272 | }; 273 | 274 | chanmodes = { 275 | irc2char = "M"; 276 | name = "MODREG"; 277 | origin = "Bahamut"; 278 | conflict = "yes"; 279 | }; 280 | 281 | chanmodes = { 282 | irc2char = "M"; 283 | name = "REGONLY"; 284 | origin = "Unreal"; 285 | comment = "Channel only allows registered nicknames to talk."; 286 | conflict = "yes"; 287 | }; 288 | 289 | chanmodes = { 290 | irc2char = "n"; 291 | name = "NO_EXTERNAL_MSGS"; 292 | origin = "RFC1459"; 293 | comment = "Disallows messages from users who are not channel " 294 | "members entering the channel"; 295 | }; 296 | 297 | chanmodes = { 298 | irc2char = "N"; 299 | name = "NO_NICK_CHANGE"; 300 | origin = "Unreal"; 301 | comment = "Disallow nickname changes. This is similar to " 302 | "AustHex's obsolete +e ('event') mode"; 303 | }; 304 | 305 | chanmodes = { 306 | irc2char = "o"; 307 | name = "OPER"; 308 | origin = "RFC1459"; 309 | parameter = "Nickname"; 310 | comment = "Gives the specified nickname channel operator status"; 311 | }; 312 | 313 | chanmodes = { 314 | irc2char = "O"; 315 | name = "CREATOR"; 316 | origin = "RFC2811"; 317 | parameter = "Nickname"; 318 | comment = "Give the specified nickname channel creator status"; 319 | conflict = "yes"; 320 | }; 321 | 322 | chanmodes = { 323 | irc2char = "O"; 324 | name = "OPER_ONLY"; 325 | origin = "Bahamut, Unreal"; 326 | comment = "Channel only allows IRC operators to join"; 327 | conflict = "yes"; 328 | }; 329 | 330 | chanmodes = { 331 | irc2char = "p"; 332 | name = "PRIVATE"; 333 | origin = "RFC1459"; 334 | comment = "Marks the channel as private. Using this form, +p cannot " 335 | "be set with +s at the same time. Setting +p while +s is " 336 | "set turns off +s, and vice-versa. This is widely " 337 | "considered obsolete in favour of the secret mode (+s)."; 338 | obsolete = "yes"; 339 | }; 340 | 341 | chanmodes = { 342 | irc2char = "p"; 343 | name = "PRIVATE"; 344 | origin = "Hybrid"; 345 | comment = "This restricts KNOCK, and prevents half-ops from using +h"; 346 | }; 347 | 348 | chanmodes = { 349 | irc2char = "q"; 350 | name = "QUIET"; 351 | origin = "RFC2811"; 352 | comment = "Sets the channel to be quiet. When set, it restricts " 353 | "what is sent to clients who are on the channel. Joins, " 354 | "parts, and nick changes are not broadcast. From the " 355 | "user's point of view, the channel only contains one user " 356 | "(them)."; 357 | server_on = "yes"; 358 | server_off = "yes"; 359 | conflict = "yes"; 360 | }; 361 | 362 | chanmodes = { 363 | irc2char = "q"; 364 | name = "CHANNEL_OWNER"; 365 | origin = "Unreal"; 366 | parameter = "Nickname"; 367 | comment = "Gives the nickname channel owner status"; 368 | conflict = "yes"; 369 | }; 370 | 371 | chanmodes = { 372 | irc2char = "Q"; 373 | name = "NO_KICK"; 374 | origin = "Unreal"; 375 | comment = "Disallow people being kicked from the channel"; 376 | }; 377 | 378 | chanmodes = { 379 | irc2char = "r"; 380 | name = "REOP"; 381 | origin = "RFC2811"; 382 | comment = "This mode is used to prevent a channel from having no " 383 | "operator for an extended period of time. When set, any " 384 | "channel that has lost all its channel operators for a " 385 | "certain period of time automatically has some or all " 386 | "channel members given channel operator status. RFC2811 " 387 | "specifies this is only available to '!' channels, but " 388 | "some implementations are reported to use it on other " 389 | "channel types, since they use timestamping to avoid " 390 | "channel take-overs during network splits."; 391 | conflict = "yes"; 392 | }; 393 | 394 | chanmodes = { 395 | irc2char = "r"; 396 | name = "REGISTERED"; 397 | origin = "Bahamut"; 398 | comment = "Channel is registered with a network channel service"; 399 | server_on = "yes"; 400 | server_off = "yes"; 401 | conflict = "yes"; 402 | }; 403 | 404 | chanmodes = { 405 | irc2char = "r"; 406 | name = "REGONLY"; 407 | origin = "ircu"; 408 | comment = "Channel only allows registered nicknames to join/talk."; 409 | conflict = "yes"; 410 | }; 411 | 412 | chanmodes = { 413 | irc2char = "R"; 414 | name = "REGONLY"; 415 | origin = "Bahamut, tr-ircd"; 416 | comment = "Channel only allows registered nicknames to join/talk"; 417 | conflict = "yes"; 418 | }; 419 | 420 | chanmodes = { 421 | irc2char = "R"; 422 | name = "REOP_LIST"; 423 | origin = "IRCNet"; 424 | parameter = "n!u@h mask"; 425 | comment = "Re-oper list - a list of identities used as a hint for " 426 | "reop when a channel is opless for a long enough time. Only " 427 | "one of the matches is used for the reop."; 428 | conflict = "yes"; 429 | }; 430 | 431 | chanmodes = { 432 | irc2char = "s"; 433 | name = "SECRET"; 434 | origin = "RFC1459"; 435 | comment = "Marks the channel as secret. The channel will not appear " 436 | "in channel listings, the NAMES command will not list " 437 | "nicknames for users who are not channel members, and the " 438 | "channel will not appear in WHOIS unless WHOIS is called " 439 | "by a fellow channel member."; 440 | }; 441 | 442 | chanmodes = { 443 | irc2char = "S"; 444 | name = "STRIP"; 445 | origin = "Unreal"; 446 | comment = "Strip mIRC colours from text broadcast via the channel"; 447 | }; 448 | 449 | chanmodes = { 450 | irc2char = "t"; 451 | name = "TOPIC_LOCK"; 452 | origin = "RFC1459"; 453 | comment = "Topic is locked, and can only be changed by channel " 454 | "operators"; 455 | }; 456 | 457 | chanmodes = { 458 | irc2char = "u"; 459 | name = "AUDITORIUM"; 460 | origin = "Unreal"; 461 | comment = "When set, makes /names and /who only show channel " 462 | "operators"; 463 | conflict = "yes"; 464 | }; 465 | 466 | chanmodes = { 467 | irc2char = "u"; 468 | name = "FOUNDER"; 469 | origin = "tr-ircd"; 470 | comment = "Gives the specified nickname 'founder' status."; 471 | conflict = "yes"; 472 | }; 473 | 474 | chanmodes = { 475 | irc2char = "u"; 476 | name = "NOQUITPARTS"; 477 | origin = "QuakeNet"; 478 | comment = "When set, this hides all part messages (no part reasons " 479 | "are broadcast) and all quit reasons are simply replaced " 480 | "with a generic string such as \"Signed Off\"."; 481 | conflict = "yes"; 482 | }; 483 | 484 | chanmodes = { 485 | irc2char = "v"; 486 | name = "VOICE"; 487 | origin = "RFC1459"; 488 | parameter = "Nickname"; 489 | comment = "Gives the specified nickname a voice. The user may then " 490 | "speak when the channel is being moderated (+m)."; 491 | }; 492 | 493 | chanmodes = { 494 | irc2char = "V"; 495 | name = "NO_INVITE"; 496 | origin = "Unreal"; 497 | comment = "Stop channel members inviting people"; 498 | }; 499 | 500 | chanmodes = { 501 | irc2char = "z"; 502 | name = "SECURED_ONLY"; 503 | origin = "Unreal"; 504 | comment = "Only allows clients connected via secure connections to " 505 | "join (eg. SSL)"; 506 | }; 507 | 508 | chanmodes = { 509 | irc2char = "!"; 510 | name = "SERVICE"; 511 | origin = "KineIRCd"; 512 | contact = "kineircd@alien.net.au"; 513 | parameter = "Nickname"; 514 | comment = "Gives the specified nickname a marker (a '!') to show " 515 | "that it is a service (i.e. a channel service). This is to " 516 | "help users identify legitimate services on channels"; 517 | }; 518 | 519 | -------------------------------------------------------------------------------- /_legacy_data/chantypes.def: -------------------------------------------------------------------------------- 1 | /* $Id: chantypes.def,v 1.5 2004/10/16 19:55:51 pickle Exp $ 2 | * 3 | * This file is Copyright (c) 2001,2002,2003,2004 Simon Butcher 4 | * 5 | * 6 | * This file is PUBLIC DOMAIN, to benifit the IRC developer community. If you 7 | * modify this file, please state your name and modifications here in order 8 | * for people to be able to distinguish between your version and this version. 9 | * 10 | * For more information or corrections, please contact the author. 11 | */ 12 | autogen definitions chantypes; 13 | 14 | /* The following format is used through-out this file. The fields 'name' and 15 | * 'prefixchar' are manditory, the others may or may not exist. 16 | * 17 | * The 'clientcreate' field determins whether or not a normal client may 18 | * create a channel of that type. If it's set to no, then the channel must 19 | * be created some other way (such as a service, server, or even an operator). 20 | * 21 | * chantypes = { 22 | * name = ""; 23 | * prefixchar = ""; 24 | * [ origin = ""; ] 25 | * [ when = ""; ] 26 | * [ contact = ""; ] 27 | * [ information = ""; ] 28 | * [ comment = ""; ] 29 | * [ clientcreate = "yes"; ] 30 | * [ conflict = "yes"; ] 31 | * [ obsolete = "yes"; ] 32 | * } 33 | */ 34 | 35 | 36 | revision = "$Revision: 1.5 $"; 37 | lastupdated = "$Date: 2004/10/16 19:55:51 $"; 38 | 39 | 40 | chantypes = { 41 | name = "LOCAL"; 42 | prefixchar = "&"; 43 | origin = "RFC1459"; 44 | comment = "This channel type is known only to the server they are " 45 | "created on, and as such only clients on that server can " 46 | "join it. Each instance of this channel type is contained " 47 | "per server."; 48 | clientcreate = "yes"; 49 | }; 50 | 51 | chantypes = { 52 | name = "NETWORK"; 53 | prefixchar = "#"; 54 | origin = "RFC1459"; 55 | comment = "This channel type is known to all servers that are " 56 | "connected to the network."; 57 | clientcreate = "yes"; 58 | }; 59 | 60 | chantypes = { 61 | name = "NETWORK_SAFE"; 62 | prefixchar = "!"; 63 | origin = "RFC2811"; 64 | comment = "These channels work similar to the '#' channels, except " 65 | "the name is prefixed not only with the '!' but also a " 66 | "set of alpha-numeric digits. This is an alternative to " 67 | "the time-stamp method of avoiding channel-takeovers " 68 | "during network splits."; 69 | clientcreate = "yes"; 70 | }; 71 | 72 | chantypes = { 73 | name = "NETWORK_UNMODERATED"; 74 | prefixchar = "+"; 75 | origin = "RFC2811"; 76 | comment = "These unmoderated channels work almost exactly the same " 77 | "as '#' channels, except nobody can obtain channel " 78 | "operator status on them. Some implementations seem to " 79 | "set the channel mode to '+nt' upon creation, however most " 80 | "implementations act as if modes +nt are set but don't " 81 | "announce them as being set."; 82 | clientcreate = "yes"; 83 | }; 84 | 85 | chantypes = { 86 | name = "SOFTCHAN"; 87 | prefixchar = "."; 88 | origin = "KineIRCd"; 89 | contact = "kineircd@alien.net.au"; 90 | comment = "This is a programmable channel type. Normal users cannot " 91 | "create channels of this type. Channels must be created " 92 | "by the software that controls them. The parameters of " 93 | "these channels are not set in stone, and are controlled " 94 | "entirely by software. This means '.' channels of " 95 | "different names may have different properties. The " 96 | "function of this channel type is to provide set channels " 97 | "which require rare features without channel mode bloat, " 98 | "or software bloat. By creating a new channel type it " 99 | "also avoids confusion with other channel types with " 100 | "fixed definitions."; 101 | }; 102 | 103 | chantypes = { 104 | prefixchar = "~"; 105 | name = "GLOBAL"; 106 | origin = "KineIRCd"; 107 | contact = "kineircd@alien.net.au"; 108 | comment = "This is a proposed channel type for IIRC. This is " 109 | "available to all IRC networks visible on an IIRC " 110 | "network, and as such users from other networks can " 111 | "participate."; 112 | clientcreate = "yes"; 113 | }; 114 | -------------------------------------------------------------------------------- /_legacy_data/def_to_yaml.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | # .def to YAML converter, specifically for irc-def files 3 | # Written by Daniel Oaks , under CC0 license 4 | 5 | from collections import OrderedDict 6 | from glob import glob 7 | import re 8 | import textwrap 9 | 10 | RE_FORM_LINE = re.compile(r'(?P[a-z_]+)\s+= "\[^\>"]+)') 11 | RE_INFO_LINE = re.compile(r'(?P[a-z_]+)\s*= "\$[^\:]+\:(?P[^\$]+)') 12 | RE_VALUES_LINE = re.compile(r'(?P[a-z_]+)\s*= "(?P[^"]+)"') 13 | RE_VALUE_CONTINUATION_LINE = re.compile(r'"(?P[^"]+)"') 14 | RE_URL = re.compile(r'(https?://[^\s]+)', re.IGNORECASE) 15 | 16 | 17 | def parse_def_file(name, text): 18 | """Parse the given irc def file into an output file.""" 19 | # parse initial comment 20 | initial_comment, text = text.split('*/', 1) 21 | 22 | initial_comment = initial_comment.split('\n')[2:-1] 23 | initial_comment = '\n'.join(['#' + x.lstrip().lstrip('*') for x in initial_comment]) 24 | 25 | # extract format comment 26 | form, text = text.split('*/', 1) 27 | 28 | form_lines = form.strip().split('\n')[2:-1] 29 | form_comment = '' 30 | while True: 31 | line = form_lines.pop(0) 32 | 33 | if ' = {' in line: 34 | form_comment = form_comment.rstrip('\n# \n') 35 | break 36 | 37 | form_comment += '# ' + line.strip().lstrip('/* ') + '\n' 38 | 39 | # parse format string 40 | args = OrderedDict() 41 | 42 | for line in form_lines: 43 | line = line.lstrip('* ') 44 | 45 | data = RE_FORM_LINE.search(line) 46 | if data: 47 | if data.group('description') == 'yes': 48 | args[data.group('name')] = 'true' 49 | else: 50 | args[data.group('name')] = data.group('description') 51 | 52 | # parse out file info 53 | file = OrderedDict() 54 | info_lines, text = text.lstrip().split('\n\n', 1) 55 | info_lines = info_lines.split('\n') 56 | 57 | for line in info_lines: 58 | data = RE_INFO_LINE.search(line) 59 | if data and data.group('key') != 'lastupdated': 60 | file[data.group('key')] = data.group('value').strip() 61 | 62 | # parse out values string 63 | values_str = [] 64 | for info in text.split('\n\n'): 65 | info = info.strip().split('\n')[1:-1] 66 | values = OrderedDict() 67 | 68 | last_key = '' 69 | for line in info: 70 | data = RE_VALUES_LINE.search(line) 71 | if data: 72 | last_key = data.group('key') 73 | values[last_key] = data.group('value') 74 | else: 75 | data = RE_VALUE_CONTINUATION_LINE.search(line) 76 | if data: 77 | values[last_key] += data.group('value') 78 | 79 | value_str = '-\n' 80 | for key, value in values.items(): 81 | if len(value) < 60 or key in ['format']: 82 | if ',' in value or ':' in value or key in ['format', 'prefixchar']: 83 | value = '"{}"'.format(value.replace('"', '\\"')) 84 | if value.casefold().strip() == 'yes': 85 | value = 'true' 86 | value_str += ' {k}: {v}\n'.format(k=key, v=value) 87 | else: 88 | wrapped_value = '' 89 | wrap_text = True 90 | for part in RE_URL.split(value): 91 | if wrap_text: 92 | text = '\n'.join(textwrap.wrap(part, width=64)) 93 | else: 94 | text = part 95 | 96 | if text.strip(): 97 | wrapped_value += textwrap.indent(text, ' ') + '\n' 98 | 99 | wrap_text = not wrap_text 100 | 101 | value_str += ' {k}: >\n{v}\n'.format(k=key, v=wrapped_value) 102 | 103 | if value_str.strip() != '-': 104 | values_str.append(value_str.strip()) 105 | 106 | values_str = '\n\n'.join(values_str) 107 | 108 | # yaml file 109 | return("""# {name}.yaml 110 | # 111 | {initial_comment} 112 | 113 | file: 114 | type: "{name}" 115 | {file} 116 | 117 | {form_comment} 118 | 119 | format: 120 | {form_args} 121 | 122 | values: 123 | {values} 124 | """.format(name=name, 125 | initial_comment=initial_comment, 126 | file='\n'.join([' {k}: "{v}"'.format(k=k, v=v) for k, v in file.items()]), 127 | form_comment=form_comment, 128 | form_args='\n'.join([' {k}: "{v}"'.format(k=k, v=v) if ',' in v else ' {k}: {v}'.format(k=k, v=v) for k, v in args.items()]), 129 | values=textwrap.indent(values_str, ' '))) 130 | 131 | filenames = glob('*.def') 132 | 133 | for def_filename in filenames: 134 | with open(def_filename, 'r') as def_file: 135 | data = parse_def_file(def_filename.split('.def')[0], def_file.read()) 136 | 137 | with open(def_filename.replace('.def', '.yaml'), 'w') as yaml_file: 138 | yaml_file.write(data) 139 | -------------------------------------------------------------------------------- /_legacy_data/servermodes.def: -------------------------------------------------------------------------------- 1 | /* $Id: servermodes.def,v 1.9 2004/10/20 20:40:49 pickle Exp $ 2 | * 3 | * This file is Copyright (c) 2001,2002,2003,2004 Simon Butcher 4 | * 5 | * 6 | * This file is PUBLIC DOMAIN, to benifit the IRC developer community. If you 7 | * modify this file, please state your name and modifications here in order 8 | * for people to be able to distinguish between your version and this version. 9 | * 10 | * For more information or corrections, please contact the author. 11 | */ 12 | autogen definitions servermodes; 13 | 14 | /* The following format is used through-out this file. The first two fields 15 | * ('irc2char' and 'name') are manditory, the others may or may not exist. 16 | * 17 | * The server_only field denotes whether or not the mode can be modified by 18 | * a server only. If it is not set, or set to 'no', then operators can 19 | * possibly modify them. 20 | * 21 | * The broadcast field specifies whether the mode is broadcast to other 22 | * servers on the network or not. 23 | * 24 | * servermodes = { 25 | * irc2char = ""; 26 | * name = ""; 27 | * [ origin = ""; ] 28 | * [ when = ""; ] 29 | * [ contact = ""; ] 30 | * [ information = ""; ] 31 | * [ parameter = ""; ] 32 | * [ comment = ""; ] 33 | * [ server_only = "yes"; ] 34 | * [ broadcast = "yes"; ] 35 | * [ conflict = "yes"; ] 36 | * [ obsolete = "yes"; ] 37 | * } 38 | */ 39 | 40 | 41 | revision = "$Revision: 1.9 $"; 42 | lastupdated = "$Date: 2004/10/20 20:40:49 $"; 43 | 44 | 45 | servermodes = { 46 | irc2char = "a"; 47 | name = "AUTOCONNECT"; 48 | origin = "KineIRCd"; 49 | contact = "kineircd@alien.net.au"; 50 | comment = "Follow the autoconnect rules - When set on, the server " 51 | "should follow autoconnect parameters given in the " 52 | "configuration file to maintain its connection to the " 53 | "network."; 54 | broadcast = "yes"; 55 | }; 56 | 57 | servermodes = { 58 | irc2char = "A"; 59 | name = "AUTO_TBS"; 60 | origin = "KineIRCd"; 61 | contact = "kineircd@alien.net.au"; 62 | comment = "Automatically switch bone/tendril links. This is used in " 63 | "association with server to server protocols which have " 64 | "redundant links to specify whether or not the server " 65 | "should be actively monitoring links to see if a better " 66 | "'bone' can be selected. When on, this gives the server " 67 | "the right to switch bone connections around to benifit " 68 | "the network."; 69 | broadcast = "yes"; 70 | }; 71 | 72 | servermodes = { 73 | irc2char = "D"; 74 | name = "DEBUGGING"; 75 | origin = "KineIRCd"; 76 | contact = "kineircd@alien.net.au"; 77 | comment = "Turns debugging on (if available), or shows a server which " 78 | "is in debugging mode."; 79 | broadcast = "yes"; 80 | }; 81 | 82 | servermodes = { 83 | irc2char = "F"; 84 | name = "FULL"; 85 | origin = "KineIRCd"; 86 | contact = "kineircd@alien.net.au"; 87 | comment = "A server turns toggles this depending on its 'fullness'. " 88 | "If the server is full, either no more file descriptors " 89 | "are left, or all connection classes are full, then this " 90 | "is a warning to other servers not to redirect clients to " 91 | "it."; 92 | server_only = "yes"; 93 | broadcast = "yes"; 94 | }; 95 | 96 | servermodes = { 97 | irc2char = "h"; 98 | name = "HUB"; 99 | origin = "ircu"; 100 | when = "ircu2.10.11.04"; 101 | comment = "Indicates the server is a hub. In ircu, this also hides " 102 | "the server from users."; 103 | server_only = "yes"; 104 | broadcast = "yes"; 105 | }; 106 | 107 | servermodes = { 108 | irc2char = "H"; 109 | name = "HIDDEN"; 110 | origin = "KineIRCd"; 111 | contact = "kineircd@alien.net.au"; 112 | comment = "When set, the server should be completely hidden to " 113 | "users. This is different to masking the server's name. " 114 | "This allows for invisible hubs, or invisible servers " 115 | "which host network services, etc."; 116 | broadcast = "yes"; 117 | }; 118 | 119 | servermodes = { 120 | irc2char = "l"; 121 | name = "LAZY_LEAF"; 122 | origin = "KineIRCd"; 123 | contact = "kineircd@alien.net.au"; 124 | comment = "Server should consider itself a lazy leaf link to the " 125 | "network. This means only one connection can be made to " 126 | "the server, and it runs on lazy principles. The idea for " 127 | "lazy leafs comes from Hybrid."; 128 | broadcast = "yes"; 129 | }; 130 | 131 | servermodes = { 132 | irc2char = "L"; 133 | name = "DEFAULT_LANGUAGE"; 134 | origin = "KineIRCd"; 135 | contact = "kineircd@alien.net.au"; 136 | parameter = ""; 137 | comment = "Marks the given language code as the 'default' language " 138 | "for that server. Language codes are that prescribed by " 139 | "BCP-0047, and only one can be set at a time."; 140 | broadcast = "yes"; 141 | }; 142 | 143 | servermodes = { 144 | irc2char = "M"; 145 | name = "MODES_LOCKED"; 146 | origin = "KineIRCd"; 147 | contact = "kineircd@alien.net.au"; 148 | comment = "The server modes are locked, and can only be changed by " 149 | "other servers. This is useful when servers shouldn't not " 150 | "be touched by operators. Arbiters/U:lines servers can " 151 | "still change modes (i.e. to remove this mode!)"; 152 | broadcast = "yes"; 153 | }; 154 | 155 | servermodes = { 156 | irc2char = "n"; 157 | name = "NO_OPER"; 158 | origin = "KineIRCd"; 159 | contact = "kineircd@alien.net.au"; 160 | comment = "When set, the OPER command is rendered useless"; 161 | broadcast = "yes"; 162 | }; 163 | 164 | servermodes = { 165 | irc2char = "s"; 166 | name = "SERVICE"; 167 | origin = "ircu"; 168 | when = "ircu2.10.11.04"; 169 | comment = "When set, the server is a 'service' (as in, it only " 170 | "provides services). In ircu, this also hides the server " 171 | "from users."; 172 | server_only = "yes"; 173 | broadcast = "yes"; 174 | }; 175 | 176 | servermodes = { 177 | irc2char = "T"; 178 | name = "TESTLINK"; 179 | origin = "KineIRCd"; 180 | contact = "kineircd@alien.net.au"; 181 | comment = "Mark the server as being under a 'testlink' period. Many " 182 | "networks give new servers a testing period to give both " 183 | "the server administrator, and the network, time to " 184 | "evaluate whether or not the server will be able to remain " 185 | "permanent. Depending on network policy, testlink server " 186 | "administrators may have restricted rights, such as not " 187 | "being able to send global messages. This flag aids to " 188 | "enforce those policies."; 189 | broadcast = "yes"; 190 | }; 191 | -------------------------------------------------------------------------------- /_legacy_data/usermodes.def: -------------------------------------------------------------------------------- 1 | /* $Id: usermodes.def,v 1.10 2005/01/11 21:44:09 pickle Exp $ 2 | * 3 | * This file is Copyright (c) 2001,2002,2003,2004 Simon Butcher 4 | * 5 | * 6 | * This file is PUBLIC DOMAIN, to benifit the IRC developer community. If you 7 | * modify this file, please state your name and modifications here in order 8 | * for people to be able to distinguish between your version and this version. 9 | * 10 | * For more information or corrections, please contact the author. 11 | */ 12 | autogen definitions usermodes; 13 | 14 | /* The following format is used through-out this file. The first two fields 15 | * ('irc2char' and 'name') are manditory, the others may or may not exist. 16 | * 17 | * usermodes = { 18 | * irc2char = ""; 19 | * name = ""; 20 | * [ origin = ""; ] 21 | * [ when = ""; ] 22 | * [ contact = ""; ] 23 | * [ information = ""; ] 24 | * [ parameter = ""; ] 25 | * [ comment = ""; ] 26 | * [ server_on = "yes"; ] 27 | * [ server_off = "yes"; ] 28 | * [ conflict = "yes"; ] 29 | * [ obsolete = "yes"; ] 30 | * } 31 | */ 32 | 33 | 34 | revision = "$Revision: 1.10 $"; 35 | lastupdated = "$Date: 2005/01/11 21:44:09 $"; 36 | 37 | 38 | usermodes = { 39 | irc2char = "a"; 40 | name = "AWAY"; 41 | origin = "RFC2812"; 42 | comment = "User is away (see AWAY command?)"; 43 | server_on = "yes"; 44 | server_off = "yes"; 45 | conflict = "yes"; 46 | }; 47 | 48 | usermodes = { 49 | irc2char = "a"; 50 | name = "SERVICES_ADMIN"; 51 | origin = "Bahamut, Unreal"; 52 | comment = "User is a services administrator"; 53 | conflict = "yes"; 54 | }; 55 | 56 | usermodes = { 57 | irc2char = "a"; 58 | name = "ADMIN"; 59 | origin = "Hybrid"; 60 | comment = "Admin status. Shown as an admin in WHOIS, able to load " 61 | "and unload modules, and see IP's in STATS c"; 62 | conflict = "yes"; 63 | }; 64 | 65 | usermodes = { 66 | irc2char = "a"; 67 | name = "ERRORS"; 68 | origin = "AustHex"; 69 | comment = "User receives all errors and alerts"; 70 | conflict = "yes"; 71 | }; 72 | 73 | usermodes = { 74 | irc2char = "A"; 75 | name = "SERVER_ADMIN"; 76 | origin = "Bahamut, Unreal"; 77 | comment = "User is a server administrator"; 78 | }; 79 | 80 | usermodes = { 81 | irc2char = "b"; 82 | name = "BOTS"; 83 | origin = "Hybrid"; 84 | comment = "User receives information about potential bots/drones"; 85 | conflict = "yes"; 86 | }; 87 | 88 | usermodes = { 89 | irc2char = "b"; 90 | name = "CHATOPS"; 91 | origin = "Bahamut, Unreal"; 92 | comment = "User receives CHATOPS messages"; 93 | conflict = "yes"; 94 | }; 95 | 96 | usermodes = { 97 | irc2char = "B"; 98 | name = "BOT"; 99 | origin = "Unreal"; 100 | comment = "User is a bot/drone"; 101 | }; 102 | 103 | usermodes = { 104 | irc2char = "c"; 105 | name = "CLIENT_CONNS"; 106 | origin = "Hybrid"; 107 | comment = "User receives information about clients connecting/" 108 | "disconnecting"; 109 | }; 110 | 111 | usermodes = { 112 | irc2char = "C"; 113 | name = "CO_ADMIN"; 114 | origin = "Unreal"; 115 | comment = "User is a co-administrator"; 116 | }; 117 | 118 | usermodes = { 119 | irc2char = "d"; 120 | name = "DEAF"; 121 | origin = "ircu"; 122 | comment = "User does not receive channel messages"; 123 | conflict = "yes"; 124 | }; 125 | 126 | usermodes = { 127 | irc2char = "d"; 128 | name = "DEAF"; 129 | comment = "User does not receive channel messages unless they are " 130 | "prefixed with a specific character (usually '!' ?). This " 131 | "is an extension of the ircu '+d'"; 132 | conflict = "yes"; 133 | }; 134 | 135 | usermodes = { 136 | irc2char = "d"; 137 | name = "DEAF"; 138 | origin = "KineIRCd"; 139 | contact = "kineircd@alien.net.au"; 140 | parameter = "Prefix character"; 141 | comment = "User does not receive channel messages unless they are " 142 | "prefixed with the given prefix character. If no parameter " 143 | "is given, all channel messages are ignored, with no " 144 | "prefix checking."; 145 | conflict = "yes"; 146 | }; 147 | 148 | usermodes = { 149 | irc2char = "d"; 150 | name = "DEBUG"; 151 | origin = "Hybrid, Bahamut"; 152 | comment = "User receives debugging messages"; 153 | conflict = "yes"; 154 | }; 155 | 156 | usermodes = { 157 | irc2char = "f"; 158 | name = "FULL"; 159 | origin = "Hybrid"; 160 | comment = "User receives notices about I-lines being full, or too " 161 | "many clients in general"; 162 | conflict = "yes"; 163 | }; 164 | 165 | usermodes = { 166 | irc2char = "f"; 167 | name = "FLOODS"; 168 | origin = "Bahamut"; 169 | comment = "User receives flood notices"; 170 | conflict = "yes"; 171 | }; 172 | 173 | usermodes = { 174 | irc2char = "g"; 175 | name = "DEBUG"; 176 | origin = "ircu"; 177 | comment = "User receives debugging messages"; 178 | conflict = "yes"; 179 | }; 180 | 181 | usermodes = { 182 | irc2char = "g"; 183 | name = "CALLERID"; 184 | origin = "Hybrid, KineIRCd"; 185 | comment = "User is ignoring everyone, unless they are ACCEPTed with " 186 | "the ACCEPT command"; 187 | conflict = "yes"; 188 | }; 189 | 190 | usermodes = { 191 | irc2char = "g"; 192 | name = "GLOBOPS"; 193 | origin = "Bahamut"; 194 | comment = "User receives GLOBOPS messages"; 195 | conflict = "yes"; 196 | }; 197 | 198 | usermodes = { 199 | irc2char = "G"; 200 | name = "STRIP_BAD_WORDS"; 201 | origin = "Unreal"; 202 | comment = "Messages user receives are stripped of profanity"; 203 | }; 204 | 205 | usermodes = { 206 | irc2char = "h"; 207 | name = "HELPER"; 208 | origin = "Bahamut, AustHex"; 209 | comment = "User is a HELPER, associated with network services"; 210 | server_on = "yes"; 211 | }; 212 | 213 | usermodes = { 214 | irc2char = "h"; 215 | name = "HELPER"; 216 | origin = "KineIRCd"; 217 | contact = "kineircd@alien.net.au"; 218 | parameter = "level"; 219 | comment = "User is a HELPER, the level is an unsigned 16-bit integer " 220 | "denotes 'rank', as determined by network services"; 221 | server_on = "yes"; 222 | }; 223 | 224 | usermodes = { 225 | irc2char = "H"; 226 | name = "HIDE_OPER"; 227 | origin = "Unreal"; 228 | comment = "Hides oper status from users (i.e. whois)"; 229 | }; 230 | 231 | usermodes = { 232 | irc2char = "i"; 233 | name = "INVISIBLE"; 234 | origin = "RFC1459"; 235 | comment = "User is invisible"; 236 | }; 237 | 238 | usermodes = { 239 | irc2char = "I"; 240 | name = "INVISIBLE_JOINPART"; 241 | origin = "Unreal"; 242 | comment = "User is invisible when joining/parting channels. This is " 243 | "supposedly obsolete as of UnrealIRCd 3.2 beta 16"; 244 | obsolete = "yes"; 245 | }; 246 | 247 | usermodes = { 248 | irc2char = "k"; 249 | name = "SERVICE"; 250 | origin = "ircu"; 251 | comment = "User is a service (cannot be KILLed or KICKed from " 252 | "channels, and WHOIS output is usually limited)"; 253 | conflict = "yes"; 254 | }; 255 | 256 | usermodes = { 257 | irc2char = "k"; 258 | name = "KILLS"; 259 | origin = "Hybrid, Bahamut"; 260 | comment = "User receives KILL notices"; 261 | conflict = "yes"; 262 | }; 263 | 264 | usermodes = { 265 | irc2char = "l"; 266 | name = "LOCOPS"; 267 | origin = "Hybrid"; 268 | comment = "User receives LOCOPS messages"; 269 | conflict = "yes"; 270 | }; 271 | 272 | usermodes = { 273 | irc2char = "l"; 274 | name = "LISTALL"; 275 | origin = "AustHex"; 276 | comment = "User can list all channels (including hidden ones)"; 277 | conflict = "yes"; 278 | }; 279 | 280 | usermodes = { 281 | irc2char = "n"; 282 | name = "NCHANGE"; 283 | origin = "Hybrid"; 284 | comment = "User sees client nick changes"; 285 | conflict = "yes"; 286 | }; 287 | 288 | usermodes = { 289 | irc2char = "n"; 290 | name = "ROUTING"; 291 | origin = "Bahamut"; 292 | comment = "User receives routing messages"; 293 | conflict = "yes"; 294 | }; 295 | 296 | usermodes = { 297 | irc2char = "N"; 298 | name = "NETWORK_ADMIN"; 299 | origin = "Unreal"; 300 | comment = "User is a network administrator"; 301 | }; 302 | 303 | usermodes = { 304 | irc2char = "m"; 305 | name = "SPAMBOTS"; 306 | origin = "Bahamut"; 307 | comment = "User receives notices about (potential) spambots"; 308 | }; 309 | 310 | usermodes = { 311 | irc2char = "o"; 312 | name = "GLOBAL_OPERATOR"; 313 | origin = "RFC1459"; 314 | comment = "User is a network-wide or 'global' operator"; 315 | }; 316 | 317 | usermodes = { 318 | irc2char = "O"; 319 | name = "LOCAL_OPERATOR"; 320 | origin = "RFC2812"; 321 | comment = "User is a server-wise or 'local' operator"; 322 | }; 323 | 324 | usermodes = { 325 | irc2char = "p"; 326 | name = "HIDE_CHANNELS"; 327 | origin = "Unreal"; 328 | comment = "Hide channels from user's WHOIS reply (will suppress " 329 | "RPL_WHOISCHANNELS)"; 330 | }; 331 | 332 | usermodes = { 333 | irc2char = "q"; 334 | name = "KIX"; 335 | origin = "Unreal"; 336 | comment = "Only U:liners/arbiters can kick this user"; 337 | }; 338 | 339 | usermodes = { 340 | irc2char = "r"; 341 | name = "RESTRICTED"; 342 | origin = "RFC2812"; 343 | comment = "Restricted user connection"; 344 | server_on = "yes"; 345 | server_off = "yes"; 346 | conflict = "yes"; 347 | }; 348 | 349 | usermodes = { 350 | irc2char = "r"; 351 | name = "REJ"; 352 | origin = "Hybrid"; 353 | comment = "User receives notices about rejected clients"; 354 | conflict = "yes"; 355 | }; 356 | 357 | usermodes = { 358 | irc2char = "r"; 359 | name = "REGISTERED"; 360 | origin = "Bahamut, ircu"; 361 | comment = "Nickname is registered with a network nickname service"; 362 | server_on = "yes"; 363 | server_off = "yes"; 364 | conflict = "yes"; 365 | }; 366 | 367 | usermodes = { 368 | irc2char = "R"; 369 | name = "NO_NON_REGISTERED"; 370 | origin = "Bahamut, KineIRCd, Unreal"; 371 | server_on = "yes"; 372 | server_off = "yes"; 373 | comment = "User wants to block messages from non-registered nicknames"; 374 | }; 375 | 376 | usermodes = { 377 | irc2char = "s"; 378 | name = "SERVER_NOTICES"; 379 | origin = "RFC1459"; 380 | comment = "User receives server notices. RFC2812 considers this mode " 381 | "obsolete, however it is still in very wide-spread use."; 382 | }; 383 | 384 | usermodes = { 385 | irc2char = "s"; 386 | name = "SERVER_NOTICES"; 387 | origin = "ircu"; 388 | parameter = "Mask integer"; 389 | comment = "User receives server notices, and can opt in/out of " 390 | "particular notice types by supplying the optional mask " 391 | "as an integer"; 392 | }; 393 | 394 | usermodes = { 395 | irc2char = "s"; 396 | name = "SERVER_NOTICES"; 397 | origin = "KineIRCd, Unreal"; 398 | parameter = "Notice mask list"; 399 | comment = "User receives server notices. The notice masks are " 400 | "normally a list of letters corresponding with specific " 401 | "notices the user wishes to receive, such as 'D' for " 402 | "debugging, etc."; 403 | }; 404 | 405 | usermodes = { 406 | irc2char = "S"; 407 | name = "SERVICE"; 408 | origin = "Unreal"; 409 | comment = "User is a service, and is protected."; 410 | }; 411 | 412 | usermodes = { 413 | irc2char = "t"; 414 | name = "Z_LINED"; 415 | origin = "AustHex"; 416 | comment = "User is using an AustHex Z: line"; 417 | server_on = "yes"; 418 | server_off = "yes"; 419 | conflict = "yes"; 420 | }; 421 | 422 | usermodes = { 423 | irc2char = "t"; 424 | name = "MODIFIED_HOST"; 425 | origin = "Unreal"; 426 | comment = "User is using a /vhost (modified host)"; 427 | server_on = "yes"; 428 | server_off = "yes"; 429 | conflict = "yes"; 430 | }; 431 | 432 | usermodes = { 433 | irc2char = "T"; 434 | name = "W_LINED"; 435 | origin = "AustHex"; 436 | comment = "User is using an AustHex w: line"; 437 | server_on = "yes"; 438 | server_off = "yes"; 439 | conflict = "yes"; 440 | }; 441 | 442 | usermodes = { 443 | irc2char = "T"; 444 | name = "BLOCK_CTCP"; 445 | origin = "Unreal"; 446 | comment = "Blocks all CTCP requests from other users"; 447 | conflict = "yes"; 448 | }; 449 | 450 | usermodes = { 451 | irc2char = "u"; 452 | name = "UNAUTH"; 453 | origin = "Hybrid"; 454 | comment = "User receives unauthorised client notices"; 455 | }; 456 | 457 | usermodes = { 458 | irc2char = "v"; 459 | name = "HOST_HIDING"; 460 | origin = "AustHex"; 461 | comment = "Hide the host of the user, often with a hashed value. " 462 | "Some networks use 'mirroring', or masking with " 463 | "metacharacters. The letter 'v' comes from Austnet's " 464 | "'Virtual World'. Be aware that use of +x for the same " 465 | "purpose is more wide-spread."; 466 | conflict = "yes"; 467 | }; 468 | 469 | usermodes = { 470 | irc2char = "v"; 471 | name = "VICTIM"; 472 | origin = "Unreal"; 473 | comment = "User receives messages regarding infected DCC rejections"; 474 | conflict = "yes"; 475 | }; 476 | 477 | usermodes = { 478 | irc2char = "V"; 479 | name = "WEBTV"; 480 | origin = "Unreal"; 481 | comment = "User is using a WebTV client"; 482 | }; 483 | 484 | usermodes = { 485 | irc2char = "w"; 486 | name = "WALLOPS"; 487 | origin = "RFC1459"; 488 | comment = "User receives WALLOPS messages"; 489 | }; 490 | 491 | usermodes = { 492 | irc2char = "W"; 493 | name = "WHOIS_PARANOIA"; 494 | origin = "Unreal"; 495 | comment = "User is receives a notice when WHOIS'd"; 496 | }; 497 | 498 | usermodes = { 499 | irc2char = "x"; 500 | name = "EXTERNAL"; 501 | origin = "Hybrid"; 502 | comment = "User receives notices about servers connecting/" 503 | "disconnecting"; 504 | conflict = "yes"; 505 | }; 506 | 507 | usermodes = { 508 | irc2char = "x"; 509 | name = "HOST_HIDING"; 510 | origin = "ircu, Unreal"; 511 | comment = "Hide the host of the user, often with a hashed value. " 512 | "Some networks use 'mirroring', or masking with " 513 | "metacharacters. Using the 'x' letter for this mode appears " 514 | "to be the most standard method for toggling masking user " 515 | "hosts."; 516 | conflict = "yes"; 517 | }; 518 | 519 | usermodes = { 520 | irc2char = "y"; 521 | name = "STATS_LINKS"; 522 | origin = "Bahamut"; 523 | comment = "User receives notices about stats/links"; 524 | conflict = "yes"; 525 | }; 526 | 527 | usermodes = { 528 | irc2char = "y"; 529 | name = "SPY"; 530 | origin = "Hybrid"; 531 | comment = "User receives LINKS, STATS (if configured) and TRACE " 532 | "notices"; 533 | conflict = "yes"; 534 | }; 535 | 536 | usermodes = { 537 | irc2char = "z"; 538 | name = "OPERWALL"; 539 | origin = "Hybrid"; 540 | comment = "User receives operator generated WALLOPS messages"; 541 | conflict = "yes"; 542 | }; 543 | 544 | usermodes = { 545 | irc2char = "z"; 546 | name = "SECURE_CONN"; 547 | origin = "Unreal"; 548 | comment = "User is securely connected"; 549 | conflict = "yes"; 550 | }; 551 | 552 | -------------------------------------------------------------------------------- /defs/chanmembers.html: -------------------------------------------------------------------------------- 1 | --- 2 | title: Channel Member Prefixes 3 | layout: default 4 | --- 5 | 6 | {% assign info = site.data.chanmembers %} 7 | {% include table.html %} 8 | -------------------------------------------------------------------------------- /defs/chanmodes.html: -------------------------------------------------------------------------------- 1 | --- 2 | title: Channel Modes 3 | layout: default 4 | --- 5 | 6 | {% assign info = site.data.chanmodes %} 7 | {% include table.html %} 8 | -------------------------------------------------------------------------------- /defs/chantypes.html: -------------------------------------------------------------------------------- 1 | --- 2 | title: Channel Type Prefixes 3 | layout: default 4 | --- 5 | 6 | {% assign info = site.data.chantypes %} 7 | {% include table.html %} 8 | -------------------------------------------------------------------------------- /defs/clientcaps.html: -------------------------------------------------------------------------------- 1 | --- 2 | title: Client Capabilities 3 | layout: default 4 | --- 5 | 6 | {% assign info = site.data.clientcaps %} 7 | {% include table.html %} 8 | -------------------------------------------------------------------------------- /defs/ctcp.html: -------------------------------------------------------------------------------- 1 | --- 2 | title: Client-to-Client Protocol (CTCP) Messages 3 | layout: default 4 | --- 5 | 6 | {% assign info = site.data.ctcp %} 7 | {% include table.html %} 8 | -------------------------------------------------------------------------------- /defs/extbans.html: -------------------------------------------------------------------------------- 1 | --- 2 | title: Extended Bans 3 | layout: default 4 | --- 5 | 6 | {% assign info = site.data.extbans %} 7 | {% include table.html %} 8 | -------------------------------------------------------------------------------- /defs/isupport.html: -------------------------------------------------------------------------------- 1 | --- 2 | title: RPL_ISUPPORT Tokens 3 | layout: default 4 | --- 5 | 6 | {% assign info = site.data.isupport %} 7 | {% include table.html %} 8 | -------------------------------------------------------------------------------- /defs/numerics.html: -------------------------------------------------------------------------------- 1 | --- 2 | title: Numerics 3 | layout: default 4 | --- 5 | 6 | {% assign info = site.data.numerics %} 7 | {% include table.html %} 8 | -------------------------------------------------------------------------------- /defs/servermodes.html: -------------------------------------------------------------------------------- 1 | --- 2 | title: Server Modes 3 | layout: default 4 | --- 5 | 6 | {% assign info = site.data.servermodes %} 7 | {% include table.html %} 8 | -------------------------------------------------------------------------------- /defs/snomasks.html: -------------------------------------------------------------------------------- 1 | --- 2 | title: Server Notice Masks 3 | layout: default 4 | --- 5 | 6 | {% assign info = site.data.snomasks %} 7 | {% include table.html %} 8 | -------------------------------------------------------------------------------- /defs/stats.html: -------------------------------------------------------------------------------- 1 | --- 2 | title: STATS Characters 3 | layout: default 4 | --- 5 | 6 | {% assign info = site.data.stats %} 7 | {% include table.html %} 8 | -------------------------------------------------------------------------------- /defs/tags.html: -------------------------------------------------------------------------------- 1 | --- 2 | title: Message Tags 3 | layout: default 4 | --- 5 | 6 | {% assign info = site.data.tags %} 7 | {% include table.html %} 8 | -------------------------------------------------------------------------------- /defs/usermodes.html: -------------------------------------------------------------------------------- 1 | --- 2 | title: User Modes 3 | layout: default 4 | --- 5 | 6 | {% assign info = site.data.usermodes %} 7 | {% include table.html %} 8 | -------------------------------------------------------------------------------- /discover_numerics: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | # numerics discovery for irc-defs files 3 | # Written by Daniel Oaks , under CC0 license 4 | """discover_numerics - Feed this a numerics.h file or something similar, and 5 | this will discover which numerics exist in that file but do not exist in our 6 | numerics list. 7 | 8 | Usage: 9 | discover_numerics search ... [--pedantic] [--yaml ] 10 | discover_numerics search-dir [--pedantic] [--yaml ] 11 | discover_numerics (-h | --help) 12 | 13 | Options: 14 | --pedantic Complain about more things than usual 15 | --yaml Path to the numerics.yaml file [default: _data/numerics.yaml] 16 | """ 17 | __version__ = '0.1.0' 18 | 19 | import glob 20 | import re 21 | import yaml 22 | from docopt import docopt 23 | 24 | RE_IRC2_INSP_NUMERIC_H = re.compile(r'^\s*(?P(?:ERR_|RPL_)[0-9A-Z_]+)\s+=\s+(?P[0-9]+)') 25 | RE_CHARY_NUMERIC_H = re.compile(r'^#define\s+(?P(?:ERR_|RPL_)[0-9A-Z_]+)\s+(?P[0-9]+)') 26 | RE_INSP_NUMERIC_ALONE = re.compile(r'(?P)(?:AddRow|Write(?:Remote)?Numeric)\((?P[0-9]+)[^0-9]') 27 | 28 | if __name__ == '__main__': 29 | arguments = docopt(__doc__, version=__version__) 30 | 31 | files = [] 32 | if arguments['search']: 33 | files = arguments[''] 34 | elif arguments['search-dir']: 35 | for ext in [ 'c', 'cpp', 'h', 'hpp' ]: 36 | files += glob.glob("{base}/**/*.{ext}".format(base=arguments[''], ext=ext), recursive=True) 37 | 38 | if files: 39 | data = yaml.safe_load(open(arguments['--yaml'], 'r').read()) 40 | 41 | for numerics_filename in files: 42 | lines = None 43 | try: 44 | lines = open(numerics_filename, 'r').read().split('\n') 45 | except UnicodeDecodeError: 46 | # skip binary files 47 | continue 48 | 49 | for line in lines: 50 | matches = RE_IRC2_INSP_NUMERIC_H.findall(line) + RE_CHARY_NUMERIC_H.findall(line) + RE_INSP_NUMERIC_ALONE.findall(line) 51 | for match in matches: 52 | name, numeric = match 53 | numeric = numeric.zfill(3) 54 | 55 | found = False 56 | stdname = None 57 | 58 | for val in data['values']: 59 | if name: 60 | if val['name'] == name and val['numeric'] == numeric: 61 | found = True 62 | elif val['numeric'] == numeric and name in val.get('comment', ''): 63 | found = True 64 | stdname = val['name'] 65 | else: 66 | # if there's no name we can only check by numeric, dodgy but it's all we can do. 67 | if val['numeric'] == numeric: 68 | found = True 69 | stdname = val['name'] 70 | 71 | if not found: 72 | if name: 73 | print('Could not find numeric {name} ({numeric}): {file}'.format(name=name, numeric=numeric, file=numerics_filename)) 74 | else: 75 | print('Could not find numeric {numeric}: {file}'.format(numeric=numeric, file=numerics_filename)) 76 | 77 | 78 | elif arguments['--pedantic']: 79 | if not name: 80 | print('{stdname} ({numeric}) is being used without a name: {file}'.format(stdname=stdname, numeric=numeric, file=numerics_filename)) 81 | 82 | elif stdname: 83 | print('{stdname} ({numeric}) is being used with a non-standard name ({name}): {file}'.format(stdname=stdname, numeric=numeric, name=name, file=numerics_filename)) 84 | -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | --- 2 | title: IRC Definition Files 3 | layout: default 4 | --- 5 | 6 | 88 | 89 |

{{ page.title }}

90 |

These files note interesting and useful information about IRC software. They are designed for IRC software developers, not regular IRC users.

91 |

A number of these files are based on the original lists from alien.net.au and are being updated and corrected to account for new software and versions.

92 |

The source code for this site is available on GitHub, under ircdocs/irc-defs. Pull requests to correct or update these lists are welcomed. 93 |
You can also talk to us at #ircdocs on Libera.Chat.

94 |
95 |
96 |
97 |

Numerics and Modes

98 |
99 |

{{ site.data.numerics.page.name }}

100 | 104 |

{{ site.data.chanmodes.page.name }}

105 | 109 |

{{ site.data.servermodes.page.name }}

110 | 114 |

{{ site.data.usermodes.page.name }}

115 | 119 |
120 |
121 |

Channels

122 |
123 |

{{ site.data.chanmembers.page.name }}

124 | 128 |

{{ site.data.chantypes.page.name }}

129 | 133 |
134 |
135 |
136 |
137 |

ISUPPORT, Caps and Tags

138 |
139 |

{{ site.data.isupport.page.name }}

140 | 144 |

{{ site.data.clientcaps.page.name }}

145 | 149 |

{{ site.data.tags.page.name }}

150 | 154 |
155 |
156 |
157 |
158 |

Misc

159 |
160 |

{{ site.data.ctcp.page.name }}

161 | 165 |

{{ site.data.extbans.page.name }}

166 | 170 |

{{ site.data.snomasks.page.name }}

171 | 175 |

{{ site.data.stats.page.name }}

176 | 180 |

{{ site.data.selfmessage.page.name }}

181 | 185 |

{{ site.data.formatting.page.name }}

186 | 190 |
191 |
192 |
193 | -------------------------------------------------------------------------------- /info/formatting.html: -------------------------------------------------------------------------------- 1 | --- 2 | title: Formatting Characters 3 | layout: default 4 | --- 5 | 6 | {% assign info = site.data.formatting %} 7 | {% include table.html %} 8 | -------------------------------------------------------------------------------- /info/selfmessages.html: -------------------------------------------------------------------------------- 1 | --- 2 | title: self-message 3 | layout: default 4 | --- 5 | 6 | {% assign info = site.data.selfmessage %} 7 | {% include table.html %} 8 | --------------------------------------------------------------------------------