Fonctionnalités

From UnrealIRCd documentation wiki
Jump to navigation Jump to search
This page is a translated version of the page Features and the translation is 14% complete.
Outdated translations are marked like this.
Other languages:
English • ‎français • ‎中文(台灣)‎

Si vous voulez juste avoir un aperçu rapide des fonctionnalités, allez voir la page À propos d'UnrealIRCd à la place.

Nous allons expliquer ici en profondeur un certain nombre de fonctionnalités. Si vous êtes toujours en train d'installer votre serveur UnrealIRCd, nous vous recommandons de survoler rapidement cette liste. Une fois le serveur en état de fonctionner, vous souhaiterez sans doute lire cette section plus en détails, ou juste l'utiliser comme une référence rapide pour mieux comprendre une fonctionnalité.

Modules

Other languages:
English • ‎français • ‎中文(台灣)‎

Dans UnrealIRCd 4, nous avons déplacé une grande partie des fonctionnalités dans des modules séparés (plus de 150 !). La plupart des modes de salon, des modes utilisateur et tous les bans étendus sont définis par des modules désormais.

Avantages :

  1. Il est possible de choisir exactement quelles fonctionnalités vous voulez activer ;
  2. Les codeurs peuvent facilement voir l'ensemble du code relatif à une fonctionnalité donnée ;
  3. Les bugs peuvent être corrigés sans avoir à redémarrer l'IRCd. Il suffit de rehash pour recharger les modules.

Charger des modules

Pour plus d'informations sur comment charger des modules, voir la directive Loadmodule.

Si vous voulez juste charger tous les modules disponibles (et donc toutes les fonctionnalités) dans UnrealIRCd, alors ajoutez ceci à votre unrealircd.conf :

include "modules.default.conf";

Modules disponibles

UnrealIRCd a plus de 150 modules. Les modules à charger pour activer ou désactiver une fonctionnalité donnée sont indiqué dans les pages correspondantes :

De plus, vous voudrez sans doute jeter un œil à modules.default.conf.

Third party modules

It is possible to expand UnrealIRCd's functionality by modules from others. We call these modules "third party modules" because they are made by a 3rd party (not the UnrealIRCd team).

Where to find (more) third party modules

Many can be found on the Modules (3rd party) forums

How to use 3rd party modules

See FAQ: How to install 3rd party modules?

Dangers of third party modules

Although 3rd party modules are a great way to extend UnrealIRCd's features there is also a risk: any (subtle) coding mistakes can cause UnrealIRCd to crash. In fact, 90% of the crashes reported to our bug tracker are not crashes caused by UnrealIRCd but by 3rd party modules (not our bugs).


Authentication

UnrealIRCd allows users to authenticate to their services account before they are online. This also means you can require authentication so unauthenticated users cannot enter the server. This can be done selectively (eg: only certain IP addresses, only TOR proxy users, etc.) or simply for everyone (if you want a closed chat server).

Read more on authentication here

Cloaking

Other languages:
English • ‎français • ‎中文(台灣)‎

Le cloaking (camouflage) est un moyen de cacher le nom d'hôte (hostname) des utilisateurs sur IRC. Par exemple, si votre nom d'hôte est d5142341.cable.wanadoo.nl alors sans cloaking, le message d'entrée sur un salon ressemblera à ça :

*** Utilisateur (~none@d5142341.cable.wanadoo.nl) a rejoint #test

Alors qu'avec le cloaking actif, les utilisateurs verront :

*** Utilisateur (~none@rox-2DCA3201.cable.wanadoo.nl) a rejoint #test

Comme vous pouvez voir, le nom d'hôte est camouflé (déguisé, partiellement caché) et les autres utilisateurs ne peuvent pas voir votre vrai nom d'hôte ou votre IP. Cette fonctionnalité est utile pour empêcher les utilisateurs de se flooder/attaquer entre eux, car ils ne peuvent pas le faire sans connaître le vrai nom d'hôte ou l'IP. Le nom d'hôte n'est pas juste caché dans les messages d'entrée (JOIN), mais aussi dans ceux de sortie (PART), dans les WHOIS, et dans tous les commandes qui indiqueraient en temps normal le vrai nom d'hôte ou la vraie IP d'un utilisateur.

Le cloaking est contrôlé par le mode utilisateur +x (exemple : /mode votrenick +x). Normalement, les administrateurs forcent l'activation du mode +x par défaut (via set::modes-on-connect).

Un nom d'hôte caché est généré par un module de cloaking. Vous devez charger au moins un module de cloaking, mais ne vous en inquiétez pas trop car le fichier de configuration par défaut modules.default.conf (que presque tout le monde utilise) charge le module de cloaking qui est fourni par défaut avec UnrealIRCd. Il est aussi possible d'utiliser un autre module fourni par d'autres développeurs.

L'algorithme de cloaking nécessite que des clés secrètes de cloaking soient définies. Voir set::cloak-keys pour plus d'informations.

Les clés de cloaking DOIVENT être identiques sur TOUS les serveurs d'un réseau. Les clés de cloaking doivent être gardées secrètes car, lorsque l'on connaît ces clés, il est possible de décoder (ou plutôt de bruteforcer) le nom d'hôte réel, et ça rendrait le principe même du cloaking inutile.

Veuillez noter que si le cloaking évite que le serveur IRC expose le nom d'hôte ou l'IP des utilisateurs, il y a toujours plein de façons pour un utilisateur d'exposer son IP. Par exemple, si quelqu'un vous demande d'aller visiter un site internet qu'il contrôle, il pourra aller regarder dans les logs de son serveur pour récupérer votre IP.

With cloaking turned off, a join on IRC looks like this:

*** User (~none@d5142341.example.net) has joined #test

With cloaking turned on, users will see:

*** User (~none@rox-2DCA3201.example.net) has joined #test

The first part of the host is partially hidden or "cloaked". Other people won't see your real hostname or IP address. This security feature is useful to prevent users from flooding/attacking each other.

For a more detailed explanation and the possible settings, see Cloaking.

Inclusions distantes

Les inclusions distantes sont un bon moyen de partager votre configuration entre plusieurs serveurs. Elles sont idéales pour un réseau IRC composé de plusieurs serveurs. Il vous suffit de mettre votre configuration partagée à un endroit sécurisé, comme un serveur web de confiance, et les serveurs IRC la chargeront au démarrage ou lorsque /REHASH sera utilisé.

Lisez-en plus à propos des inclusions distantes ici.

Snomasks

Other languages:
English • ‎français • ‎中文(台灣)‎

Les snomasks sont des masques de notices serveur. Il s'agit d'un type spécial de modes utilisateur qui contrôle quelles notices du serveur vous recevez. Ils sont surtout utilisés par les Opérateurs.

Ils peuvent être ajoutés avec : /MODE votrenick +s SNOMASK, par exemple : /MODE votrenick +s +cF. Pour enlever certains snomasks, utilisez quelque chose comme : /MODE votrenick +s -c ; ou pour enlever tous les snomasks, utilisez : /MODE votrenick -s.

Les snomasks actuellement disponibles sont :

Snomask Module Description Restrictions
c de base Connexions locales IRCOp uniquement
D snomasks/dccreject DCC bloqués par un block Deny DCC IRCOp uniquement
F de base Connexions distantes (sur d'autres serveurs, sauf les U-line comme les Services) IRCOp uniquement
f de base Notices de flood IRCOp uniquement
k de base Notices de kill
e de base Notices de 'eyes' - un peu verbeux (?) IRCOp uniquement
j de base Notices diverses (Surtout pour débugguer, des choses bruyantes et possiblement sans danger) IRCOp uniquement
v de base Utilisation de VHOST IRCOp uniquement
G de base Utilisation de GLINE et SHUN IRCOp uniquement
n de base Changements de nick locaux IRCOp uniquement
N de base Changements de nick distants IRCOp uniquement
q de base Notices de nicks interdits (QLINE) IRCOp uniquement
s de base Reçoit les notices serveur (inclus les messages les plus importants) IRCOp uniquement
S de base Les correspondances de Spamfilter IRCOp uniquement
o de base Utilisations de /OPER IRCOp uniquement

Vous pouvez contrôler quels snomasks sont automatiquement obtenus à la connexion (set::snomask-on-connect) et lorsque vous devenez oper (set::snomask-on-oper, oper::snomask)


Alias

Other languages:
English • ‎français • ‎中文(台灣)‎

Les alias vous permettent de configurer des alias de commandes au niveau du serveur. Vous pouvez par exemple faire que sorte que /NS IDENTIFY blabla soit transmis à NickServ. UnrealIRCd convertira alors cette commande en /MSG NickServ IDENTIFY blabla. Vous pouvez aussi faire des alias plus complexes : par exemple, faire en sorte que la commande /REGISTER transmette le message à ChanServ si le premier argument commence par un # ou à NickServ sinon.

Les alias sont configurés dans le block Alias.

Notez que UnrealIRCd est fourni avec une liste d'alias par défaut pour Anope, Atheme et d'autres Services IRC. Voir la section Fichiers couramment inclus.


Helpop

Other languages:
English • ‎français • ‎中文(台灣)‎

UnrealIRCd a un système d'aide utilisable via IRC inclus de base. Il permet d'avoir une référence rapide pour les commandes et les modes utilisateur et de salon. Il est configurable via le bloc Help.

Par exemple, lorsque vous envoyez /HELPOP CHMODES sur IRC, vous aurez un aperçu de tous les modes de salon d'UnrealIRCd. Pour voir un index de toutes les commandes d'aide, tapez /HELPOP sans argument.


Contrôle d'accès des IRCOps

Other languages:
English • ‎français • ‎中文(台灣)‎

Dans UnrealIRCd 4, nous avons complètement changé la façon dont les permissions opérateur sont assignées. Vous pouvez désormais très précisément configurer quels droits vous voulez accorder à un opérateur. Vous pouvez le faire en combinant les blocs Operclass et les blocs Oper.


Commandes des IRCOps

Other languages:
English • ‎français • ‎中文(台灣)‎

UnrealIRCd est fourni avec un grand nombre de commandes pour que les IRCOps puissent luter contre les menaces et les utilisateurs abusifs et puissent gérer le réseau. Ces commandes sont listées dans la page Commandes utilisateur & opérateur sur ce wiki ou via le système Helpop en utilisant /HELPOP OPERCMDS.


SSL/TLS

Other languages:
English • ‎français • ‎中文(台灣)‎

SSL signifie Secure Socket Layer. Il a été renommé plus tard en TLS (Transport Layer Security), mais SSL est souvent utilisé.

UnrealIRCd has a long history of supporting and encouraging SSL/TLS, going all the way back to the year 2000.

Pourquoi utiliser SSL/TLS ?

Lorsque vous utilisez SSL/TLS pour une connexion, tout le trafic entre les deux correspondants est chiffré. Personne ne peut voir ou modifier les données (du moins, théoriquement). C'est important car le trafic IRC contient souvent des informations sensibles comme des mots de passe.

When you use SSL/TLS on a connection then all the traffic between the two hosts is encrypted. Nobody can see/sniff/snoop the data. This is important as IRC traffic often includes things like passwords and other sensitive information.

Vous voyez sans doute des sites en https:// tout le temps sur internet. HTTPS est simplement HTTP avec SSL/TLS et est utilisé par les banques, les sites de e-commerce et un grand nombre d'autres sites web. La même technologie (SSL/TLS) peut être utilisée pour IRC.

How to use SSL/TLS

Nearly all IRC clients support SSL/TLS. To use it you need to connect to a port which has listen::options::tls enabled, by default this is port 6697 (not 6667!).

In your IRC client you need to connect to the SSL-only port in a special way:

  • mIRC: /server name.of.server.net +6697. The + (plus sign) instructs mIRC to use SSL/TLS.
  • irssi: /connect -tls name.of.server 6697. The -tls option says to use SSL/TLS

On other clients it is usually a matter of using a plus sign before the port (+6697) or adding a SSL or TLS option or ticking such a box in the graphical interface.

Be sure to read next section on SSL certificates, especially if your client refuses to connect or complains about an untrusted or invalid certificate.

SSL certificate

By default, UnrealIRCd has created a self-signed certificate for you. However, most clients (rightfully) complain that this cannot be trusted. Some clients will give you a popup or option to accept the certificate (yes/no). Other clients will refuse to connect at all.

We recommend you to get a real certificate for free by Using Let's Encrypt with UnrealIRCd. Note that this does mean you have some labor to do. But after that, your server is really fully setup for SSL/TLS and your users can use IRC in a more secure manner!

Configuration

Global settings

Global SSL/TLS settings can be configured via set::ssl. For most users the defaults are fine.

Per-port settings

If you want port-specific SSL setting then these can be configured in the Listen block.
NOTE: Doing so is very rare, most people would not change these at all or change the global ssl options in set::ssl instead.

SNI

UnrealIRCd also support SNI, multiple certificates with different names, which you configure using the Sni block. This is not used much.

Strict Transport Security

"Strict Transport Security" is an IRCv3 specification. If you use it it will:

  1. redirect users with capable clients to the appropriate SSL/TLS port automatically
  2. ensure that these users won't use insecure connections for a specified period of time

To enable this you need to configure two important things:

Step 1: Get a real certificate

You need a 'real' SSL/TLS certificate, not the default / self-signed certificate that many people use. So: get one for free via Let's Encrypt (tutorial) or buy one.

IMPORTANT: Your users must connect to the server with the same hostname as the hostname in the certificate. So if users use /SERVER irc.example.com then your server shouldn't serve a certificate for irc2.example.com. Possible solutions for this are wildcard certificates (this too is possible via Let's Encrypt) or using multiple certificates with a Sni block (rarely used).

It is important for the certificate (and naming) to be correct. Without STS such a misconfiguration will 'only' trigger a certificate warning on the client but with STS the clients will be unable to connect. It is a hard error that clients cannot easily bypass.

Step 2: Configure the set::ssl::sts-policy block

The following will configure a STS policy, redirecting capable clients to port 6697 (which must be SSL):

set {
    ssl {
        sts-policy {
            port 6697;
            duration 5m; /* you can always increase this later */
        };
    };
};

Note that while you can remove the set::ssl::sts-policy block at any time, clients will cache the setting for up to set::ssl::sts-policy::duration time. So when deploying sts-policy, and when picking a (final) setting, be sure to provide SSL/TLS support for an extended amount of time. This shouldn't be any problem with UnrealIRCd but just to reiterate: only deploy STS if you are serious about offering SSL/TLS to your clients!

You should gradually raise the set::ssl::sts-policy::duration time. This to prevent you inadvertently locking users out due to a misconfiguration:

  • Begin with 5 minutes (5m) during testing.
  • After a week, consider raising it to a day (1d).
  • After a month, consider raising it to it's final setting, such as half a year (180d)

Be sure to enforce the same STS policy on all servers on your network (unless you are only testing).


IPv6

Other languages:
English • ‎français • ‎中文(台灣)‎

IPv6 is Internet Protocol version 6. It is the successor to version 4 (IPv4). Currently the Internet consists of a mix of IPv4 and IPv6. For more information in general, see the Wikipedia article on IPv6.

UnrealIRCd 4 est toujours compilé avec le support IPv6. UnrealIRCd utilise la double pile IP (« dual IP stack ») de votre système d'exploitation, ce qui veut dire qu'il peut écouter à la fois en IPv4 et en IPv6. Pour vraiment utiliser IPv6, vous aurez besoin d'une adresse IPv6 sur votre machine.


Fonctionnalités anti-flood

Other languages:
English • ‎français • ‎中文(台灣)‎

Paramètres de configuration

Il existe plusieurs paramètres disponibles pour le bloc set::anti-flood, comme par exemple set::anti-flood::connect-flood qui autorise seulement X connexions par YY secondes depuis la même IP. UnrealIRCd est fourni avec de bonnes valeurs par défaut, mais vous pouvez les changer si vous voulez.

There are many settings available in the set::anti-flood block. For example, set::anti-flood::connect-flood to only allow X connections per YY seconds from the same IP. Other X per Y time settings are: nick-flood, join-flood, away-flood, invite-flood and knock-flood.

The option set::anti-flood::unknown-flood-amount is used to limit the amount of data in the handshake (rarely changed, default is a few KB's).

set::anti-flood::max-concurrent-conversations limits the number of concurrent conversions a user can have, which is another anti-flood feature so a user cannot /MSG tens of users at the same time.

set::max-targets-per-command limits the number of targets the user can specify in a command (eg: JOIN 3 channels at the same time via JOIN #a,#b,#c).

Again, the default settings are probably fine for you already, as we focus on security and do our best to have tight but good defaults.

DNS Blacklists

While technically not an anti-flood feature, it definitely helps against unwanted bots/drones/users. By using one or more blacklist blocks you can have UnrealIRCd check a DNSBL service to see if an IP was blacklisted due to abuse. This is highly recommended for a server on the internet. See the example section there.

Connthrottle

This module is highly effective against bot/drone attacks. It will reject most "bad" connections, while still allowing most of your regular users in.

When the connthrottle module in UnrealIRCd detects a high number of users connecting from IP addresses that have not been seen before, then connections from new IP's are rejected above the set rate. For example at 10:60 only 10 users per minute can connect that have not been seen before. Known IP addresses (so: your regular users) can always get in, regardless of the set rate. Same for users who login using SASL.

AntiRandom

With the antirandom module you can block random nicks like 'fhdshfdhf'.This module is not enabled by default because it may catch innocent users for non-English languages, especially for non-Western-European languages.

Modes de salon

Il y a aussi quelques modes de salon qui peuvent être très efficaces contre le flood. En voici quelques uns :

  • N : pas de changement de nick
  • C : CTCP interdit
  • M : seuls les utilisateurs enregistrés peuvent parler
  • K : /KNOCK interdit

Il y a aussi un mode de salon très avancé : +f.

Mode de salon f

À la place d'utiliser des scripts ou des bots pour vous protéger contre le flood d'un salon, vous pouvez désormais utiliser une fonctionnalité de l'ircd. Un exemple du mode +f :

*** Blabla ajoute le mode : +f [10j]:15

Ceci signifie que maximum 10 joins par 15 secondes sont autorisés sur le salon, et que si la limite est atteinte, le mode +i (sur invitation seulement) sera ajouté automatiquement au salon.

Les types de flood suivant sont gérés :

Type Nom Action par défaut Autres actions Commentaires
c CTCP Ajoute le mode +C au salon (bloquer tous les CTCP) m, M
j joins Ajoute le mode +i au salon (sur invitation seulement) R
k knocks Ajoute le mode +K au salon (pas de /KNOCK) Compté uniquement pour les clients locaux
m messages/notices Ajoute le mode +m au salon (les utilisateurs normaux ne peuvent plus parler) M
n changements de nick Ajoute le mode +N au salon (changements de nick interdits)
t text Kick l'utilisateur b Contrairement à tous les autres, celui-ci est une limite de messages/notices par utilisateur. L'action est de kicker/bannir l'utilisateur.

Exemple :

*** ChanOp ajoute le mode : +f [20j,50m,7n]:15
<ChanOp> lalala
*** Evil1 (~fdsdsfddf@Clk-17B4D84B.blah.net) a rejoint #test
*** Evil2 (~jcvibhcih@Clk-3472A942.xx.someispcom) a rejoint #test
*** Evil3 (~toijhlihs@Clk-38D374A3.aol.com) a rejoint #test
*** Evil4 (~eihjifihi@Clk-5387B42F.dfdfd.blablalba.be) a rejoint #test
-- XX lignes supplémentaires --
*** Evil21 (~jiovoihew@Clk-48D826C3.e.something.org) a rejoint #test
-server1.test.net:#test *** Channel joinflood detected (limit is 20 per 15 seconds), putting +i
*** server1.test.net ajoute le mode : +i
<Evil2> fsdjfdshfdkjfdkjfdsgdskjgsdjgsdsdfsfdujsflkhsfdl
<Evil12> fsdjfdshfdkjfdkjfdsgdskjgsdjgsdsdfsfdujsflkhsfdl
<Evil15> fsdjfdshfdkjfdkjfdsgdskjgsdjgsdsdfsfdujsflkhsfdl
<Evil10> fsdjfdshfdkjfdkjfdsgdskjgsdjgsdsdfsfdujsflkhsfdl
<Evil8> fsdjfdshfdkjfdkjfdsgdskjgsdjgsdsdfsfdujsflkhsfdl
-- XX lignes supplémentaires --
-server1.test.net:#test *** Channel msg/noticeflood detected (limit is 50 per 15 seconds), putting +m
*** server1.test.net ajoute le mode : +m
*** Evil1 s'appelle maintenant Hmmm1
*** Evil2 s'appelle maintenant Hmmm2
*** Evil3 s'appelle maintenant Hmmm3
*** Evil4 s'appelle maintenant Hmmm4
*** Evil5 s'appelle maintenant Hmmm5
*** Evil6 s'appelle maintenant Hmmm6
*** Evil7 s'appelle maintenant Hmmm7
*** Evil8 s'appelle maintenant Hmmm8
-server1.test.net:#test *** Channel nickflood detected (limit is 7 per 15 seconds), putting +N
*** server1.test.net ajoute le mode : +N

En fait, ça peut même être encore plus avancé/complexe :
À la place de l'action par défaut, vous pouvez en indiquer une autre pour certains types de flood, par exemple : +f [20j#R,50m#M]:15
Ceci ajoutera le mode +R au salon si la limite de joins est atteinte (>20 joins en 15 secondes) et ajoutera le mode +M si la limite de messages est atteinte (>50 messages en 15 secondes).

Il y a aussi une fonctionnalité qui permet d'enlever le mode après X minutes : +f [20j#R5]:15 ajoutera le mode +R au salon si la limite est atteinte et l'enlèvera après 5 minutes.
Un serveur peut avoir une durée par défaut (set::modef-default-unsettime), et donc +f [20j]:15 peut être transformé en +f [20j#i10]:15. Comme il s'agit d'une valeur par défaut, vous pouvez toujours faire [20j#i2]:15 explicitement, et vous pouvez forcer le mode à rester avec +f [20j#i0]:15 (un 0 explicite).

Les meilleurs paramètres pour le mode +f dépend du salon : combien d'utilisateurs il a ? y a-t-il un jeu qui fait que les utilisateurs envoient beaucoup de messages (ex : un quiz) ? est-ce un salon officiel du réseau ou avec un auto-join ? etc ...

Un mode +f parfait pour tous les salons n'existe pas, mais vous pouvez vous baser sur l'exemple suivant et l'adapter à vos besoins :
+f [30j#i10,40m#m10,7c#C15,10n#N15,30k#K10]:15

  • 30 joins en 15 secondes, sinon le salon passe en +i pour 10 minutes
  • 40 messages en 15 secondes, sinon le salon passe en +m pour 10 minutes
  • 7 CTCP en 15 secondes, sinon le salon passe en +C pour 15 minutes
  • 10 changements de nick en 15 secondes, sinon le salon passe en +N pour 15 minutes
  • 30 /KNOCK en 15 secondes, sinon le salon passe en +K pour 10 minutes

S'il s'agit d'un gros salon (>75 utilisateurs ?), vous voudrez sans doute augmenter la limite de joins (à 50 par exemple) et la limite de messages (à 60 ou 75 par exemple).
En particulier, le temps avant que les modes soient retirés est une question de préférences personnelles. Il faut vous poser la question : et si aucun op n'est disponible pour gérer la situation, est-ce que je veux que le salon soit verrouillé pour 15 minutes (= pas très sympa pour les utilisateurs) ou plutôt 5 minutes (= mais dans ce cas, les floodeurs n'auront qu'à attendre 5 minutes pour recommencer) ? Ça dépend aussi du type de flood : empêcher les utilisateurs de join le salon (+i) ou de parler (+m) est pire que les empêcher de changer de nick (+N) ou d'envoyer des CTCP au salon (+C), donc vous voudrez sans doute ajuster les durées en fonction.


Bans étendus

Other languages:
English • ‎français • ‎中文(台灣)‎

Les bans étendus sont un type spécial de bans (+b), d'exceptions (+e) et d'invitations (+I) qui fournissent des fonctionnalités avancées.

Ces bans commencent par un tilde (~) suivi par une lettre indiquant le type de ban étendu. Par exemple, +b ~q indique un ban étendu silencieux. UnrealIRCd est fourni avec un certain nombre de bans étendus (activés par des Modules). Des modules fournis par d'autres développeurs peuvent ajouter encore d'autres types.

The following ban type can be used in front of any (ext)ban:

Extban Module Explanation Example
t extbans/timedban Timed ban that will make a ban unset after the specified number of minutes. +b ~t:3:*!*@hostname

Les types de bans suivant indiquent quelles actions (join, changement de nick ou messages) sont affectées par un ban :

Ban étendu Module Explication Exemple
q extbans/quiet Les utilisateurs correspondants peuvent joindre mais ne peuvent pas parler, sauf si ils sont +v ou plus. +b ~q:*!*@*.blabla.com
n extbans/nickchange Les utilisateurs correspondants ne peuvent pas changer de nick, sauf s'ils sont +v ou plus. +b ~n:*!*@*.aol.com
j extbans/join Les utilisateurs correspondants ne peuvent pas rejoindre le salon, mais s'ils sont déjà dessus, alors toutes les activités (comme parler, changer de nick etc) sont autorisées. Ce ban est très utile pour bannir un FAI en entier, et inviter manuellement quelques personnes sur le salon et leur permettre de tout faire normalement après. +b ~j:*!*@*.aol.com

Ces types de bans introduisent de nouveaux critères utilisables :

Ban étendu Module Explication Exemple
a extbans/account Si un utilisateur est connecté aux services avec ce compte, alors il correspondra à ce ban. Ce ban est légèrement différent de ~R, car un utilisateur avec le nick ABC peut être connecté au compte XYZ. Ceci dépend du logiciel de Services utilisé, car tous ne le supportent pas et vous devrez utiliser ~R dans ce cas. +e ~a:UnCompte

+I ~a:UnCompte

c extbans/inchannel Si l'utilisateur est sur le salon indiqué, alors il ne peut pas join. Un préfixe peut être indiqué (+/%/@/&/~), pour que l'utilisateur soit concerné que si il a le niveau indiqué ou supérieur sur le salon concerné. +b ~c:#lamers

+e ~c:@#trustedops

O extbans/operclass Si l'utilisateur est un IRCOp et que son oper::operclass correspond à cet extban, alors l'utilisateur correspondra à ce ban. Vous pouvez utiliser ceci pour faire un salon restreint aux *admin* uniquement. +iI ~O:*admin*
r extbans/realname Si le realname (gecos) d'un utilisateur correspond, alors il ne peut pas join. Comme le realname peut contenir des espaces, vous pouvez utiliser des tirets bas (_) pour indiquer un espace (ou un tiret bas) +b ~r:*Stupid_bot_script*
R extbans/regnick Si un utilisateur est connecté aux services avec ce nick, alors il correspondra à ce ban. Ainsi, ce ban est surtout utile pour les exceptions (+e) et les invitations (+I). +e ~R:Nick

+I ~R:Nick

S extbans/certfp Lorsqu'un utilisateur utilise SSL/TLS avec un certificat client, alors vous pouvez utiliser l'empreinte de son certificat SSL/TLS (celle indiquée dans le /WHOIS). Ce ban est utile pour les exceptions de ban (+e) ou d'invite (+I). +e ~S:0000000etc

+I ~S:0000000etc


Vous pouvez aussi combiner les bans étendus du premier groupe avec ceux du second. Par exemple, +b ~q:~c:#lamers rendra silencieux tous les utilisateurs qui sont aussi sur #lamers.

Les types de ban du second groupe peuvent être utilisés dans les exceptions d'invitation (+I). Par exemple, vous pouvez ajouter le mode +i au salon et utiliser +I ~c:#trusted et/ou +I ~a:uncompte.


Modes utilisateur

Other languages:
English • ‎français • ‎中文(台灣)‎

This is the list of all user modes that can be set on a user. You can only set user modes on yourself and not on other users. Use the command: MODE yournick +modeshere.

Mode utilisateur Module Description Restrictions
B usermodes/bot Vous marque comme étant un bot. Ceci ajoutera une ligne dans votre /WHOIS pour que les utilisateurs puissent facilement reconnaître les bots.
d de base Fait en sorte que vous ne receviez plus les PRIVMSG des salons, sauf s'ils sont préfixés par le caractère indiqué par set::channel-command-prefix. Peut être utilisé par les bots pour réduire le trafic et qu'ils ne voient que les messages du type !unecommande
G usermodes/censor Filtre de grossiertés : censure les "gros mots" configurés dans le bloc Badword
H de base Cache le statut d'IRCOp. Les utilisateurs normaux utilisant /WHOIS ou d'autres commandes ne verront pas que vous êtes un Opérateur IRC. IRCOp seulement
I de base Cache le temps passé en ligne dans le /WHOIS. IRCOp seulement
i de base Vous rend 'invisible'. C'est un terme qui porte à confusion, car ce mode ne vous cache que si un utilisateur fait /WHO ou /NAMES alors qu'il n'est pas sur le salon. Généralement ajouté par défaut avec set::modes-on-connect (et aussi par les client IRC).
o de base Opérateur IRC. Ajouté par le serveur
p usermodes/privacy Cache vos salons dans les /WHOIS, pour plus de vie privée.
q usermodes/nokick Non-kickable (seulement par les U:lines, par exemple les Services) IRCOp seulement (mais pas tous les IRCOps)
r de base Indique un "nick enregistré" Ajoutés par les Services
R usermodes/regonlymsg Ne reçoit de messages privés que des utilisateurs enregistrés (connectés aux Services)
S usermodes/servicebot L'utilisateur est un bot des Services (fournit plus de protection) Uniquement pour les Services
s de base Reçoit les notices des serveurs, voir les Snomasks Surtout pour les IRCOps
T usermodes/noctcp Vous empêche de recevoir les CTCP.
t de base Indique que vous utilisez un /VHOST Ajouté par le serveur lors d'un /VHOST, /OPER, /*HOST, ...
W usermodes/showwhois Vous avertit lorsque quequ'un fait un /WHOIS sur vous. IRCOp seulement
w de base Reçoit les messages wallops (/WALLOPS par les IRCOps)
x de base Cache votre nom d'hôte (cloaking).
Z usermodes/secureonlymsg .......
z de base Indique que vous êtes connectés via SSL/TLS Ajouté par le serveur


Modes de salon

Other languages:
English • ‎français • ‎中文(台灣)‎

These are all channel modes that can be set. Use the command: MODE #channel +modeshere.

Normally you need channel operator status (+o, or some other level such as +h/+a/+q) if you want to change channel modes. However, IRCOp's with OperOverride privileges may bypass these restrictions. And similarly for IRCOps with access to the SAMODE command.

Niveau d'accès

Ces modes donnent un certain « niveau d'accès » à un utilisateur.

Modes de salon Module Description Restrictions
v de base Voice. Ceci permet à l'utilisateur de parler dans les salons avec +m/+M. L'utilisateur peut aussi parler même banni. Peut être ajouté par les utilisateurs +hoaq
h de base Demi-opérateur (Half-Op). Donne quelques pouvoirs d'opérateur de salon, mais pas tous. Ce sont une version limitée d'opérateurs de salon. Peut être ajouté par les utilisateurs +oaq
o de base Opérateur de salon (Channel Op). Il s'agit du privilège d'opérateur que tout le monde connaît, et permet à l'utilisateur d'effectuer la plupart des opérations de gestion d'un salon (/KICK, /MODE, etc ...). Peut être ajouté par les utilisateurs +oaq
a de base Administrateur de salon (Channel Admin). Un cran au dessus des opérateurs, mais sans privilège supplémentaire à part un : les niveaux inférieurs (+o/+h) ne peuvent pas kicker un admin (+a). Peut être ajouté par les utilisateurs +q
q de base Propriétaire du salon (Channel Owner). Le plus haut niveau. Ils ne peuvent pas être kickés par les niveaux inférieurs (+a/+o/+h). Habituellement, il n'y a qu'un seul utilisateur +q par salon, et le mode est géré par les services. Les utilisateurs normaux ne peuvent pas ajouter ce mode

Notez que souvent, les modes +vhoaq sont gérés par les Services dans des « liste d'accès » (ou AOP/HOP/etc). Consultez la documentation de vos Services pour plus d'informations.

Modes de liste

Voici les modes de liste.

Mode de salon Module Description Restrictions
b de base Ban. Empêche un utilisateur de joindre un salon. Nécessite +h ou supérieur
e de base Exception de ban. Lorsqu'un utilisateur est banni (avec +b) mais qu'il est sur la liste +e, alors il peut quand même joindre le salon. Nécessite +h ou supérieur
I de base Exception d'invite. Lorsque le salon est en +i (sur invitation seulement), alors les utilisateurs sur cette liste peuvent quand même joindre le salon. Nécessite +h ou supérieur

Tous ces modes nécessitent un paramètre de la forme nick!user@host, comme par exemple : "+b *!*@*.fai.fr". Voir aussi les bans étendus pour d'autres formats (ex. : "+e ~c:@#salon")

Paramètres de salon

Ces modes de salon permettent de configurer un salon.

Mode de salon Module Description Restrictions
c modules/chanmodes/nocolor Les couleurs sont interdites sur le salon. Ceci bloquera les codes couleurs ANSI et mIRC. Nécessite +o ou supérieur
C modules/chanmodes/noctcp Les CTCP sont interdits sur le salon. Nécessite +o ou supérieur
f modules/chanmodes/floodprot Protection anti-flood. Fonctionnalité avancée, voir la page dédiée Nécessite +o ou supérieur
G modules/chanmodes/censor Censure les mots grossiers configurés dans le bloc Badword Nécessite +o ou supérieur
i de base Sur invitation seulement. Le sutilisateurs doivent être invités (/INVITE) ou être sur la liste +I (exceptions d'invite) (voir ci-dessus) Nécessite +o ou supérieur
k de base Les utilisateurs doivent indiquer un mot de passe pour joindre (/JOIN #chan motdepasse). Exemple : +k secret Nécessite +h ou supérieur
K modules/chanmodes/noknock La commande /KNOCK est interdite. Nécessite +o ou supérieur
L de base Lien entre salon. Si la limite d'utilisateur (+l) est atteinte, alors les nouveaux arrivants seront automatiquement redirigés vers ce salon. Exemple : +L #ailleurs Nécessite +h ou supérieur
l de base Limite le nombre d'utilisateurs dans le salon. Si la limite est atteinte, les nouveaux JOIN seront rejetés (voir aussi +L). Nécessite +o ou supérieur
m de base Salon modéré. Seuls les utilisateurs avec +v ou plus (+hoaq) peuvent parler. Nécessite +h ou supérieur
M modules/chanmodes/regonlyspeak Les utilisateurs doivent être connectés au services ou être +v ou plus (+hoaq) pour parler. Nécessite +o ou supérieur
N modules/chanmodes/nonickchange Les changements de nick sont interdits. Généralement non-utilisé, sauf en cas d'attaque de flood par changement de nick. Nécessite +o ou supérieur
n de base Pas de message externe. Si vous n'ajoutez pas +n, alors les utilisateurs qui ne sont pas sur le salon peuvent quand même envoyer des messages dessus. Par conséquent, presque tout le monde utilise +n sur son salon. Nécessite +h ou supérieur
O modules/chanmodes/operonly Salon réservé aux Opérateurs IRC Réservé aux IRCOps
P modules/chanmodes/permanent Salon permanent. Lorsque tous les utilisateurs quittent un salon, celui-ci est normalement supprimé. Avec ce mode, le salon et tous ses paramètres seront gardés.. Réservé aux IRCOp
p de base Salon privé Nécessite +o ou supérieur
Q modules/chanmodes/nokick /KICK interdit. Peut être utilisé pour obliger les opérateurs à passer par les Services pour kicker. Rarement utilisé. Nécessite +o ou supérieur
R modules/chanmodes/regonly Seuls les utilisateurs connectés aux Services peuvent joindre le salon. Nécessite +o ou supérieur
r de base Le salon est enregistré dans les Services. Ajouté par les Services
s de base Salon secret. Ce salon ne s'affichera ni dans /LIST ni dans les /WHOIS (sauf si vous êtes dans le même salon, ou que vous êtes un IRCOp) Nécessite +o ou supérieur
S modules/chanmodes/stripcolor Supprime les codes couleur. Ceci supprimera tous les codes couleurs ANSI ou mIRC en les remplaçant par du texte normal. Nécessite +o ou supérieur
T modules/chanmodes/nonotice Notices interdites (/NOTICE #chan Bonjour !). Dans beaucoup de client, une notice produit un bip d'alerte et donc ce mode est parfois ajouté. Nécessite +o ou supérieur
t de base Limite /TOPIC aux utilisateurs +h ou supérieur. Sans +t, tout le monde dans un salon peut modifier le sujet. La plupart des salons utilisent +t. Nécessite +h ou supérieur
V modules/chanmodes/noinvite /INVITE est interdit. Nécessite +o ou supérieur
z modules/chanmodes/secureonly Seuls les clients connectés via SSL/TLS peuvent joindre le salon Nécessite +o ou supérieur
Z modules/chanmodes/issecure Indique que tout le monde sur le salon utilise SSL/TLS. Ce mode est ajouté par le serveur uniquement lorsque le salon est aussi +z et que tout le monde sur le salon est connecté via SSL/TLS. Ajouté par le serveur


Spamfilter

Other languages:
English • ‎français • ‎中文(台灣)‎

Spamfilter est un système avancé de lutte contre le spam, les bots publicitaires, les worms et autres menaces sur IRC. Les filtres de Spamfilter peuvent être ajoutés via la commande /SPAMFILTER ou dans des blocs spamfilter { } dans le fichier de configuration.

Commande SPAMFILTER

Les filtres Spamfilter peuvent être ajoutés depuis IRC avec la commande /SPAMFILTER, qui utilise la syntaxe suivante :
/spamfilter [add|del] [match-type] [target] [action] [tkltime] [reason] [match string]

Élément Explication et options disponibles
add / del Indique si vous voulez ajouter (add) ou supprimer (del) un filtre
match-type Le type de correspondance ("matching") que vous voulez utiliser (voir les exemples ci-dessous). Pour le moment, vous avez deux ou trois choix :
  • simple indique un matching simple, avec le suport des jokers ? et *
  • regex utilise les expressions régulières (voir ci-dessous)
  • posix est l'ancienne méthode d'expression régulière utilisée par la version 3.2.x, et n'est incluse que pour conserver la compatibilité.
target Indique quelles cibles seront considérées par ce filter :
Caractère Élément de configuration Description
c channel Message sur un salon
p private Message privé (entre deux utilisateurs)
n private-notice Notice privée (entre deux utilisateurs)
N channel-notice Notice sur un salon
P part Message de /PART
q quit Message de /QUIT
d dcc Nom de fichier DCC
a away Message de /AWAY
t topic Sujet d'un salon (/TOPIC)
u user Ban utilisateur. Le filtre sera appliqué sur nick!user@host:realname

Vous pouvez indiquer plusieurs cibles : par exemple, cpNn

action Indique l'action à effectuer, comme par exemple une kline. Voir Actions pour la liste des actions possibles.
tkltime La durée des *line/shun ajoutés par le filtre. Utilisez '-' pour utiliser la valeur par défaut ou pour passr le paramètre (par exemple, pour l'action 'block')
reason Raison pour le blocage/*line/shun ... Vous ne pouvez pa utiliser des espaces dans la raison, mais les tirets bas ('_') seront remplacés par des espaces à l'affichage et les doubles tirets bas ('__') par des tirets bas ('_'). De même, utilisez '-' pour garder la raison par défaut.
match-string Ceci est la chaîne de caractères qui doit être bloquée ou déclencher une action. La syntaxe de cette chaîne dépend du 'match-type' utilisé. Voir les exemples ci-dessous.

Scroll down for examples of the /SPAMFILTER command.

Blocs Spamfilter

Vous pouvez aussi ajouter des filtres Spamfilter dans le fichier de configuration, voir la page sur les blocs Spamfilter. Pour plus d'information sur la signification des champs, voir le tableau ci-dessus.

Exemples

Bloquer des spams simples

Prenons l'exemple d'un utilisateur qui spamme sur de nombreux salons et en messages privés. Dans tous les cas, cet utilisateur dit : "Bonjour <Pseudo>, viens me voir sur ma webcam ! Connecte-toi via http://1.2.3.4:80/". Le message ressemble toujours à ça, mais l'IP ou l'URL peuvent changer. Vous voulez que n'importe quel utilisateur disant ça soit GLINE pour 1 jour.

En commande IRC :

/SPAMFILTER add -simple pc gline 1d Vous_spammez_ou_vous_avez_un_virus_! *Bonjour*viens me voir sur ma webcam*

Ou dans le fichier de configuration :

spamfilter {
        match-type simple;
        target { private; channel; };
        action gline;
        ban-time 1d;
        reason "Vous spammez ou vous avez un virus !";
        match "*Bonjour*viens me voir sur ma webcam*";
}

Expression régulière pour bloquer les exploits mIRC

Les expressions régulières (regex) sont bien plus puissantes que la méthode "simple". Il y a quelques années, mIRC avait un bug : il était possible de faire crasher n'importe quel client mIRC v6.12 en lui envoyant un message DCC SEND avec un nom de fichier d'au moins 255 caractères. Avec la méthode "simple", vous ne pouvez pas bloquer ceci, mais avec les regex, vous le pouvez. Et c'est même facile.

En commande IRC :

/SPAMFILTER add -regex pc kill - Possible_tentative_d'exploit_mIRC \x01DCC (SEND|RESUME).{225}

Ou dans le fichier de configuration :

spamfilter {
        match-type regex;
        target { private; channel; };
        action kill;
        reason "Possible tentative d'exploit mIRC";
        match "\x01DCC (SEND|RESUME).{225}";
};

Pour en savoir plus sur les regex, lisez l'introduction aux regex (PCRE).

Slow Spamfilter Detection

Spamfilters often consist of complex regular expressions. There is a very small chance that if a regular expression is too complex that it would slow down the IRCd too much, causing issues with responsiveness.

Slow spamfilters are very exceptional but they are possible, so UnrealIRCd has a safety mechanism for this. They are set::spamfilter::detect-slow-warn and set::spamfilter::detect-slow-fatal. If a single spamfilter takes longer than detect-slow-warn then the IRC Server will warn about this spamfilter to IRCOps. If it takes longer than detect-slow-fatal it will remove the spamfilter. The default values for these are 250ms and 500ms respectively (so a quarter of a second and half a second).

Target of spamfilter bans

When a spamfilter is hit by a user, it will by default place ban on *@ip if the ban type is a *LINE (of course not for other actions such as warn). This should be fine for most people. You can, however, change this via the set::automatic-ban-target setting.

Exempting users from spamfilters

IRCOps will not trigger spamfilters by default (they are exempt). That is, if they use an operclass with the immune:server-ban:spamfilter permission.

You can also exempt specific targets by name, such as channels or nicks, via set::spamfilter::except.


CIDR

Other languages:
English • ‎français • ‎中文(台灣)‎

UnrealIRCd supporte la notation CIDR pour autoriser ou bloquer des IPs. Cette notation peut être utilisée pour les bans, les blocs Allow, les oper::mask, etc ... Si vous préférez utiliser les CIDR, vous pouvez.

Un exemple de notation CIDR est "127.0.0.0/8" qui correspond à toutes les adresses entre "127.0.0.0" et "127.255.255.255". Dans cet exemple, on aurait tout aussi bien pu utiliser "127.*".

Pour plus d'informations, allez voir la page Wikipédia sur les CIDR.


Jeux de caractères pour les pseudos

Other languages:
English • ‎français • ‎中文(台灣)‎

Dans UnrealIRCd, vous pouvez indiquer quels jeux de caractères ("character sets") ou langages sont autorisés pour les nicks. Pour ce faire, il faut utiliser l'option set::allowed-nickchars.

Available UTF8 character sets

UnrealIRCd 4.0.17 adds experimental support for UTF8 character encoding.

Note that many Services packages do not permit registration with such characters. See also #Important notes.

The following languages are available:

Name Description Script/Alphabet Allowed extra characters (other than the default)
hebrew-utf8 hebrew characters Hebrew script אבגדהוזחטיךכלםמןנסעףפץצקרשת
latin-utf8 latin characters Latin script ÀÁÂÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÖØÙÚÛÜÝÞßàáâäåæçèéêëìíîïðñòóôöøùúûüýþÿĂ㥹ĆćČčĎďĘęĚěĹ弾ŁłŃńŇňŐőŔŕŘřŚśŞşŠšŢţŤťŮůŰűŹźŻżŽž
french-utf8 french characters Latin script ÀÂÇÈÉÊËÎÏÔÙÛÜàâçèéêëîïôùûüÿ
slovak-utf8 slovak characters Latin script ÁÄÉÍáäéíóôúýČčĎďĹ弾ňŔ੹ŤťŽž
icelandic-utf8 icelandic characters Latin script ÁÆÍÐÓÖÚÝÞáæíðóöúýþ
danish-utf8 danish characters Latin script ÅÆØåæø
swedish-utf8 swedish characters Latin script ÄÅÖäåö
catalan-utf8 catalan characters Latin script ÀÇÈÉÍÏÒÓÚÜàçèéíïòóú
italian-utf8 italian characters Latin script ÀÈÉÌÍÒÓÙÚàèéìíòóùú
spanish-utf8 spanish characters Latin script ÁÉÍÑÓÚÜáéíñóúü
hungarian-utf8 hungarian characters Latin script ÁÉÍÓÖÚÜáéíóöúüŐőŰű
czech-utf8 czech characters Latin script ÁÉÍÓÚÝáéíóúýČčĎďĚěŇňŘřŠšŤťŮůŽž
romanian-utf8 romanian characters Latin script ÂÎâîĂ㪺Ţţ
swiss-german-utf8 swiss-german characters Latin script ÄÖÜäöü
german-utf8 german characters Latin script ÄÖÜßäöü
turkish-utf8 turkish characters Latin script ÇÖÜçöüĞğıŞş
dutch-utf8 dutch characters Latin script èéëïöü
polish-utf8 polish characters Latin script ÓóĄąĆćĘꣳŃńŚśŹźŻż
latvian-utf8 latvian characters (5.0.7+) Latin script
estonian-utf8 estonian characters (5.0.7+) Latin script
lithuanian-utf8 lithuanian characters (5.0.7+) Latin script
greek-utf8 greek characters Greek script ΆΈΉΊΌΎΏΐΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩΪΫάέήίΰαβγδεζηθικλμνξοπρςστ
ukrainian-utf8 ukrainian characters Cyrillic script ЄІЇАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЬЮЯабвгдежзийклмнопрстуфхцчшщьюяєіїҐґ
russian-utf8 russian characters Cyrillic script ЁАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюяё
cyrillic-utf8 cyrillic characters Cyrillic script ЁЄІЇЎАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюяёєіїўҐґ
belarussian-utf8 belarussian characters Cyrillic script ЁІЎАБВГДЕЖЗЙКЛМНОПРСТУФХЦЧШЫЬЭЮЯабвгдежзйклмнопрстуфхцчшыьэюяёіў

Jeux de caractères disponibles

Tableau de tous les choix possibles :

Nom Description Jeu de caractère / encodage
catalan Catalan characters iso8859-1 (latin1)
danish Danish characters iso8859-1 (latin1)
dutch Dutch characters iso8859-1 (latin1)
french French characters iso8859-1 (latin1)
german German characters iso8859-1 (latin1)
swiss-german Swiss-German characters (no es-zett) iso8859-1 (latin1)
icelandic Icelandic characters iso8859-1 (latin1)
italian Italian characters iso8859-1 (latin1)
spanish Spanish characters iso8859-1 (latin1)
swedish Swedish characters iso8859-1 (latin1)
latin1 catalan, danish, dutch, french, german, swiss-german, spanish, icelandic, italian, swedish iso8859-1 (latin1)
hungarian Hungarian characters iso8859-2 (latin2), windows-1250
polish-iso Polish characters (note that polish-w1250 is more common!) iso8859-2 (latin2)
romanian Romanian characters iso8859-2 (latin2), windows-1250, iso8859-16
latin2 hungarian, polish-iso, romanian iso8859-2 (latin2)
polish-w1250 Polish characters, windows variant windows-1250
slovak-w1250 Slovak characters, windows variant windows-1250
czech-w1250 Czech characters, windows variant windows-1250
windows-1250 polish-w1250, slovak-w1250, czech-w1250, hungarian, romanian windows-1250
greek Greek characters iso8859-7
turkish Turkish characters iso8859-9
russian-w1251 Russian characters windows-1251
belarussian-w1251 Belarussian characters windows-1251
ukrainian-w1251 Ukrainian characters windows-1251
windows-1251 russian-w1251, belarussian-w1251, ukrainian-w1251 windows-1251
hebrew Hebrew characters iso8859-8-I/windows-1255
chinese-simp Simplified Chinese Multibyte: GBK/GB2312
chinese-trad Tradditional Chinese Multibyte: GBK
chinese-ja Japanese Hiragana/Pinyin Multibyte: GBK
chinese chinese-* Multibyte: GBK
gbk chinese-* Multibyte: GBK

Quelques précisions :

  • Les caractères de base suivants sont toujours autorisés : a-z A-Z 0-9 [ \ ] ^ _ - { | }
  • Certaines combinaisons peuvent poser problème et seront signalées par une erreur. Par exemple, l'IRCd ne peut pas gérer correctement le mélange de latin* et chinese-* et UnrealIRCd le refusera. Mélanger certains autres jeux de caractères peut aussi provoquer des problèmes d'affichage. UnrealIRCd affichera un avertissement si vous essayez de mélanger des groupes incompatibles comme latin1/latin2/greek/autre.
  • Le respect de la case (la correspondance entre caractères majuscules et minuscules) est fait en fonction de US-ASCII, ce qui veut dire que des caractères comme ö et Ö sont considérés comme différents et deux utilisateurs peuvent avoir le nick álpha et Ápha en même temps. Il s'agit d'une limitation du système actuel et des standards IRC qui est difficile à résoudre. Les utilisateurs doivent en être conscient, et noter que la même limitation existe aussi pour les noms de salons (pour lesquels presque tous les caractères sont autorisés, et la case a toujours été effectuée en respectant US-ASCII).

Examples

Exemple 1: Europe de l'Ouest

Pour les utilisateurs habitant en Europe de l'Ouest :

set { allowed-nickchars { latin1; }; };

Or, to use the old latin1 characters in western europe:

set { allowed-nickchars { latin1; }; };

Example 2: Chinois

Ce réglage permet d'utiliser des nicks avec des caractères du chinois simplifié et du chinois traditionnel :

set { allowed-nickchars { chinese-simp; chinese-trad; }; };


WebSocket Support

UnrealIRCd 4.0.10 and later support the WebSocket protocol (ws:// and wss://). This allows Javascript (internet browsers) to connect directly to IRC, without the need of intermediate 'gateways'. (Read more)

Support WebIRC

Other languages:
English • ‎français • ‎中文(台灣)‎

UnrealIRCd supports the WEBIRC / CGIIRC protocol. This allows users to use a browser rather than a (real) IRC client and still make them show up on IRC with their real IP.

NOTE: Do not confuse this with WebSockets, which is more modern, also allows users to chat from their browser (and show their real IP) and does not use WEBIRC.

How it works

Take this example:

User (IP: 1.2.3.4) <--browser connection--> WebIRC software (IP: 5.5.5.5) <--IRC connection--> UnrealIRCd (IP: 6.6.6.6)

User

The user only needs a web browser, nothing else. Normally any Firefox, Google Chrome, Internet Explorer or Safari version will do.

WebIRC software

You need to install a web irc client. Which one you choose is up to you. This could be installed on the same machine as the IRC Server is on, but it's also perfectly fine if it's installed on a different machine.

Examples:

UnrealIRCd

Your Web IRC may already work, but all your users will show up with the same IP when they come online. Why? Take a look at the example at the beginning: all IRC connections originate from your WebIRC machine (5.5.5.5 in our example), so all your users will show up with the IP 5.5.5.5. UnrealIRCd has no way of knowing that the actual user 'behind it' actually has IP 1.2.3.4.

This is a real problem if you ban a user from a channel (+b *@5.5.5.5), or /KLINE *@5.5.5.5, as it will affect all the (many) clients that use the WebIRC software. But there's a solution, see next.

Configuring WEBIRC

This is where the WEBIRC protocol comes to the rescue. With WEBIRC you allow a specific IP (your WebIRC machine) with a specific password to "spoof" the host, that is: to change/set the IP of the user on IRC.

  1. On UnrealIRCd: you create a WebIRC block where you specify your webirc machine IP and a secret password
  2. In the WebIRC software: configure it to use WEBIRC and specify the same password. See also the WebIRC block for an example for KiwiIRC.

Then, when all is good your clients will no longer end up with the WebIRC machine's IP but with their real IP instead (1.2.3.4 in our example).

Note that spoofing of the IP is really something powerful, so you should only add webirc blocks for machines you trust.

Types d'authentification

Other languages:
English • ‎français • ‎中文(台灣)‎

At various places in the configuration file, for example the Oper block, Vhost block, Link block and Allow block you can authenticate clients by password or other means. You can specify the password as plaintext, but you can also specify an "authentication type".

Available auth-types

The following auth-types are available:

Auth-type Description Security level How to generate
none Plaintext / cleartext password Bad Plaintext password directly in the config. Not recommended.
md5 MD5 with salt Deprecated Deprecated. Do not use.
sha1 SHA1 with salt Deprecated Deprecated. Do not use.
ripemd160 RIPEMD160 with salt Deprecated Deprecated. Do not use.
crypt UNIX crypt. The exact hashing algorithm depends on the type of crypt, therefore the security can range from bad to reasonable. Bad or reasonable Not recommended.
bcrypt Blowfish crypt with salt and many rounds [1] Reasonable On IRC: /MKPASSWD bcrypt <password>

On *NIX shell: ./unrealircd mkpasswd bcrypt

argon2 Argon2 hashing algorithm. Many rounds, anti-GPU cracking measures, etc. [2]
Good On IRC: /MKPASSWD argon2 <password>

On *NIX shell: /unrealircd mkpasswd argon2

cert SSL/TLS Client certificate

Note that most people use certfp or spkifp instead.

Excellent Path to a public SSL/TLS certificate (.pem file)
certfp SSL/TLS Client certificate fingerprint (SHA256) Excellent For a given SSL/TLS certificate such as client.pem, run:

openssl x509 -in client.pem -sha256 -noout -fingerprint
and copy the AA:BB:CC:DD:etc... fingerprint.

spkifp SPKI Fingerprint. This is similar to an SSL/TLS Client certificate fingerprint but is usually only used for server linking.

The benefit of spkifp over certfp is that the spkifp stays the same as long as the key stays the same.

Excellent For a given SSL/TLS certificate:

./unrealircd spkifp conf/ssl/server.cert.pem
Or, alternatively, these openssl commands

The auth-type argon2 is the best one if you want to authenticate using a password. It's slow to crack.

The types cert and certfp require a bit more work and expertise, as the user must generate their own SSL/TLS Certificate and then use it to connect to the server via SSL/TLS. We suggest to use this auth-type for /OPER (in the Oper block), see the 2nd example below. Finally the type spkifp is usually only used for linking servers.

Example 1: argon2 password in vhost block

Say, you want to use the password test and want to use argon2 hashed passwords (the best password hashing method available).

  • As IRCOp run:
/MKPASSWD argon2 test

or on the *NIX command line run:

irc@system:~/unrealircd$ ./unrealircd mkpasswd
Enter password to hash:
Encrypted password is: $argon2id$v=19$m=8192,t=3,p=2$hDpgvcBOUVAJMQcJITTLnQ$fL5lg/3tZ0VgTXn61EQ6Rnxhl5j+MvESBBGpg1mZqWM
  • You should get back a string that starts with $ followed by a lot of characters.
  • Put this string in your vhost block (or any other block) like this:
vhost {
    vhost I.love.Tux;
    mask *@*;
    login Tux;
    password "$argon2id$v=19$m=8192,t=3,p=2$hDpgvcBOUVAJMQcJITTLnQ$fL5lg/3tZ0VgTXn61EQ6Rnxhl5j+MvESBBGpg1mZqWM";
};
  • /REHASH your IRCd server configuration (Execute /REHASH as an IRCop on IRC)
  • Try to use the new vhost by typing /VHOST Tux test

Example 2: Oper by SSL/TLS Client certificates

cert and certfp are exceptional auth-types which can be used to authenticate SSL/TLS users by their client certificate. With these authentication methods you can be sure the user is using SSL/TLS and is using the specified client certificate. It's very secure but is a slightly advanced feature.

Here's an example of how to use it for the oper block:

  • Create an SSL/TLS client certificate if you don't have one already. Search the web for irc client certificate if you don't know how to do this.
  • Connect to IRC with your client, using your client certificate (consult your IRC client documentation)
  • On IRC simply /WHOIS yourself and you will see a line like:
FriendlyOper has client certificate fingerprint e74d46f19ff468f5e8e349cc285df96585ba4f16b64902e334e6e76afe76a798

If you do not see a line stating a "client certificate fingerprint", then your IRC client is not configured correctly to use the SSL/TLS client certificate. Consult your IRC client documentation.

  • In the server configuration file (eg: unrealircd.conf), set the password to the certificate fingerprint you saw on IRC. For example:
oper test {
     password "e74d46f19ff468f5e8e349cc285df96585ba4f16b64902e334e6e76afe76a798" { certfp; };
[..]
};
  • Rehash your server
  • Now oper up through /OPER test. When you try this, make sure that you are not already an IRCOp.
  • You should now have IRC Operator rights.
  • Congratulations, you are now using the most secure authentication method available in UnrealIRCd!

Example 3: SSL/TLS Client certificates when linking servers

When you are linking servers via the Link block we highly suggest you follow the Tutorial: Linking servers as it uses the SSL/TLS client certificate fingerprint authentication type.