/* Arquivo de configuração para o UnrealIRCd 6
 * OBSERVAÇÃO: Este arquivo utiliza a tradução Português do Brasil (pt-br).
 *
 * Apenas copie este arquivo para seu diretório conf/ e renomeie-o para 'unrealircd.conf'
 *
 * Se você estiver com pressa, pode CTRL+F (localizar) pelo termo ALTERAR ISTO
 * Os pontos que obrigatoriamente devem ser alterados estão indicados por essas duas palavras.
 * No entanto, recomendamos que você revise este arquivo linha por linha
 * e o altere conforme necessário, para que possa ver todos os pontos básicos e seus valores.
 *
 * ANTES DE PROSSEGUIR:
 * Importante: Todas as linhas, exceto { e } terminam com ;
 * Isto é muito importante, visto que se você esquecer um ; em algum lugar,
 * a checagem do arquivo de configuração irá criticar e o arquivo não será processado!
 * Se esta é sua primeira experiência com o arquivo de configuração do UnrealIRCd
 * então nós recomendamos fortemente que você se dedique um pouco para ler sobre a sintaxe,
 * isto levará apenas alguns minutos e o ajudará consideravelmente:
 * https://www.unrealircd.org/docs/Configuration#Configuration_file_syntax
 *
 * Documentação completa do UnrealIRCd 6 (bem extensa!):
 * https://www.unrealircd.org/docs/UnrealIRCd_6_documentation
 *
 * Questões Frequentes:
 * https://www.unrealircd.org/docs/FAQ
 */

/* Este é um comentário, todo o texto aqui será ignorado (comentário de tipo #1) */
// Este também é um comentário, e esta linha será ignorada (comentário de tipo #2)
# Este também é um comentário, e novamente esta linha será ignorada (comentário de tipo #3)

/* O UnrealIRCd faz um intenso uso dos Módulos, que permitem que você personalize completamente
 * o conjunto de recursos que você deseja habilitar no UnrealIRCd.
 * Veja: https://www.unrealircd.org/docs/Modules
 *
 * Utilizando o include abaixo, nós instruímos o IRCd a ler o arquivo
 * 'modules.default.conf' que carregará mais de 150 módulos
 * que vem com o UnrealIRCd. Em outras palavras: Isso simplesmente irá carregar
 * todos os recursos disponíveis no UnrealIRCd.
 * Se você está configurando o UnrealIRCd pela primeira vez, nós sugerimos que você
 * o use. Então, quando tudo estiver configurado e rodando, você poderá retornar
 * e personalizar a lista (se você desejar).
 */
include "modules.default.conf";

/* Agora vamos incluir alguns outros arquivos de configuração também:
 * - help/help.conf para nosso sistema de ajuda /HELPOP
 * - badwords.conf para os modos de usuário e canal +G
 * - spamfilter.conf como um exemplo para filtragem de spam
 *   (comentado)
 * - operclass.default.conf contém algumas boas classes de operadores que
 *   você pode usar em seus blocos de operadores.
 */
include "help/help.conf";
include "badwords.conf";
//include "spamfilter.conf";
include "operclass.default.conf";
include "snomasks.default.conf";

/* Carrega por padrão o módulo de cloaking em SHA256 (implementado em 2021): */
loadmodule "cloak_sha256";
/* Ou carrega o antigo módulo de clocking em MD5 que veio do UnrealIRCd 3.2/4/5: */
//loadmodule "cloak_md5";

// ALTERAR ISTO (o 'name' e 'info')
/* Este é o bloco me { } que basicamente diz quem somos.
 * Ele define o nome do nosso servidor, algumas linhas informativas e um "sid" único.
 * O id do servidor (sid) precisa iniciar com um dígito numérico seguido por dois dígitos numéricos 
 * ou alfanuméricos de A à Z. O sid precisa ser único para a sua rede de IRC (cada servidor
 * deve ter seu próprio sid). É comum utilizar 001 para seu primeiro servidor.
 */
me {
	name "irc.exemplo.org";
	info "Servidor ExemploNET";
	sid "001";
}
// ALTERAR ISTO:
/* O bloco admin { } define quem os usuário verão quando eles digitarem /ADMIN.
 * Normalmente contém infomações de como eles podem contatar o administrador.
 */
admin {
	"Bob Smith";
	"bob";
	"email@exemplo.org";
}

/* Clientes e servidores são colocados no bloco class { }, e os definimos aqui.
 * Blocos Class consistem nos seguintes itens:
 * - pingfreq: com que frequência será efetuado ping em um usuário / servidor (em segundos)
 * - connfreq: quantas vezes tentamos nos conectar a este servidor (em segundos)
 * - sendq: o tamanho máximo da fila para uma conexão
 * - recvq: o recebimento máximo da fila para uma conexão (controle de flood)
 */

/* Classe Client padrão, com valores de limites aceitáveis */
class clients
{
	pingfreq 90;
	maxclients 1000;
	sendq 200k;
	recvq 8000;
}

/* Uma classe Especial para IRCOps com valores de limites mais altos */
class opers
{
	pingfreq 90;
	maxclients 50;
	sendq 1M;
	recvq 8000;
}

/* Classe Server padrão, com valores de limites aceitáveis */
class servers
{
	pingfreq 60;
	connfreq 15; /* tenta se conectar a cada 15 segundos */
	maxclients 10; /* máximo de servidores */
	sendq 20M;
}

/* Blocos allow definem quais classe clients podem se conectar a este servidor.
 * Isto permite que você adicione uma senha ao servidor ou restrinja o acesso ao servidor
 * apenas por IPs específicos. Você também pode configurar o máximo de conexões
 * permitidas por IP.
 * Veja também: https://www.unrealircd.org/docs/Allow_block
 */

/* Permite todos entrarem, mas apenas 3 conexões simultâneas por IP */
allow {
	mask *;
	class clients;
	maxperip 3;
}

/* Exemplo de um bloco especial allow em um IP específico:
 * Requer que usuários neste IP conectem por uma senha. Se a senha
 * estiver correta, então permite 20 conexões simultâneas deste IP.
 */
//allow {
//	mask 192.0.2.1;
//	class clients;
//	password "alguma_senha_secreta";
//	maxperip 20;
//}

/* Blocos oper definem os Operadores de IRC.
 * Operadores de IRC são pessoas com "privilégios extras" comparado a outros,
 * eles podem por exemplo dar /KILL (derrubar) outras pessoas, iniciar uma conexão com server,
 * dar /JOIN (entrar) em canais ainda que eles estejam banidos, etc.
 *
 * Para mais informações sobre como se tornar um IRCOp e como executar
 * tarefas administrativas, veja: https://www.unrealircd.org/docs/IRCOp_guide
 *
 * Para obter mais detalhes sobre o bloco oper { } , veja
 * https://www.unrealircd.org/docs/Oper_block
 */

/* Aqui está um exemplo de um bloco oper para o 'bobsmith'
 * VOCÊ DEVE ALTERAR ISTO!! (o nome do operador e a senha)
 */
oper bobsmith {
	class opers;
	mask *@*;

	/* Tecnicamente você pode deixar as senhas de oper em texto puro no arquivo de configuração, mas
	 * isto é ALTAMENTE DESENCORAJADO. No lugar disso, você deve gerar uma senha hasheada:
	 * No *NIX, execute: ./unrealircd mkpasswd
	 * No Windows, execute: "C:\Program Files\UnrealIRCd 6\bin\unrealircdctl" mkpasswd
	 * ... e então cole a senha no campo abaixo:
	 */
	password "$argon2id..etc..";
	/* Veja https://www.unrealircd.org/docs/Authentication_types para
	 * mais informações, incluindo formas melhores de autenticação
	 * como por exemplo o 'certfp', e como gerar hashes no Windows.
	 */

	/* Permissões de oper são definidos no bloco 'operclass'.
	 * Veja https://www.unrealircd.org/docs/Operclass_block
	 * O UnrealIRCd vem com um número padrão de blocos, leia
	 * o artigo acima para ver a lista completa. Nós escolhemos o 'netadmin' aqui.
	 */
	operclass netadmin;
	swhois "é o Administrador da Rede";
	vhost netadmin.exemplo.org;
}

/* Blocos listen definem as portas onde o servidor irá escutar.
 * Em outras palavras: as portas que os clientes e servidores podem usar
 * para se conectar a este servidor.
 * 
 * Sintaxe:
 * listen {
 *   ip <ip>;
 *   port <port>;
 *   options {
 *     <options....>;
 *   }
 * }
 */

/* Porta padrão 6667 do IRC
 * Insecure plaintext (NOT for production servers)
 * This listen block is here only for quick testing.
 * Delete or comment out this listen block on production servers
 * and use TLS on port 6697 instead.
 */
listen {
	ip *;
	port 6667;
}

/* Porta padrão 6697 do IRC sob tunel SSL/TLS */
listen {
	ip *;
	port 6697;
	options { tls; }
}

/* Porta especial padrão para uso de servidores sob tunel SSL/TLS para vincular a outros servidores */
listen {
	ip *;
	port 6900;
	options { tls; serversonly; }
}

/* OBSERVAÇÃO: Se você está em uma shell IRCd com múltiplos IPs e você usa
 *       os blocos listen { } acima, então você provavelmente receberá o erro
 *       'Address already in use' e o IRCd não iniciará.
 *       Isto significa que você DEVE colocar em escuta um IP específico no lugar do '*', como por exemplo:
 *       listen { ip 1.2.3.4; port 6667; }
 *       Claro, substituindo o IP pelo IP que foi fornecido a você.
 */

/*
 * Blocos link permitem que você vincule múltiplos servidores uns aos outros para formar uma rede.
 * Veja https://www.unrealircd.org/docs/Tutorial:_Linking_servers
 */
//link hub.exemplo.org
//{
//	incoming {
//		mask *@alguma_coisa;
//	}
//
//	outgoing {
//		bind-ip *; /* ou especificar um IP */
//		hostname hub.exemplo.org;
//		port 6900;
//		options { tls; }
//	}
//
//	/* Nós usamos a impressão digital SPKI do outro servidor para autenticação.
//	 * Abra uma shell no OUTRO SERVIDOR e execute o comando abaixo para obter a impressão digital:
//	 * No *NIX, execute: ./unrealircd spkifp
//	 * No Windows, execute: "C:\Program Files\UnrealIRCd 6\bin\unrealircdctl" spkifp
//	 */
//	password "AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUV=" { spkifp; }
//
//	class servers;
//}

/* O Bloco link para o services é muito mais simples.
 * Para mais informações sobre o que são o Services,
 * leia https://www.unrealircd.org/docs/Services
 */
//link services.exemplo.org
//{
//	incoming {
//		mask 127.0.0.1;
//	}
//
//	password "me_altere_por_favor";
//
//	class servers;
//}

/* U-lines dão a outros servidores (ainda) mais poderes/comandos.
 * Se você usa o services, você DEVE adicioná-los aqui. Você deve adicionar o
 * nome do servidor do services no bloco ulines { } no arquivo de configuração
 * em todo servidor UnrealIRCd da sua rede.
 * IMPORTANTE: Jamais insira o nome do servidor do UnrealIRCd aqui,
 * é apenas para o Services!
 */
//ulines {
//	services.exemplo.org;
//}

/* Aqui você pode adicionar uma senha (apenas para IRCOps) para os comandos /DIE e /RESTART.
 * Isto para que se tenha uma pouco mais de proteção contra reinicio acidental
 * do servidor e ele seja derrubado inadvertidante.
 */
drpass {
	restart "reiniciar";
	die "matar";
}

/* O bloco log define o que deve ser registrado (logado) e em qual arquivo.
 * Leia também https://www.unrealircd.org/docs/Log_block
 */

/* Este é um bom padrão, ele registra tudo, exceto
 * coisas de depuração e comandos join/part/kick.
 */
log {
	source {
		all;
		!debug;
		!join.LOCAL_CLIENT_JOIN;
		!join.REMOTE_CLIENT_JOIN;
		!part.LOCAL_CLIENT_PART;
		!part.REMOTE_CLIENT_PART;
		!kick.LOCAL_CLIENT_KICK;
		!kick.REMOTE_CLIENT_KICK;
	}
	destination {
		file "ircd.log" { maxsize 100M; }
	}
}

/* Além do log regular, também adicionamos um arquivo de log em JSON.
 * Isso inclui muitas informações sobre cada evento, sendo ótimo  
 * para fins de auditoria e legível por máquinas. No entanto,  
 * é menos legível para humanos.
 */  
log {
	source {
		all;
		!debug;
		!join.LOCAL_CLIENT_JOIN;
		!join.REMOTE_CLIENT_JOIN;
		!part.LOCAL_CLIENT_PART;
		!part.REMOTE_CLIENT_PART;
		!kick.LOCAL_CLIENT_KICK;
		!kick.REMOTE_CLIENT_KICK;
	}
	destination {
		file "ircd.json.log" { maxsize 250M; type json; }
	}
}

/* Com o "aliases" você pode criar um atalho como /ALGUMACOISA para enviar uma mensagem para
 * algum usuário ou bot. Eles são usados normalmente por services.
 *
 * Nós temos um arquivo com um número pré-definido de atalhos, confira o diretório alias/ .
 * Como exemplo, aqui nós incluímos todos os atalhos utilizados pelo services anope.
 */
include "aliases/anope.conf";

/* Bane nicks para que eles não sejam utilizados por usuários comuns */
//ban nick {
//	mask "*C*h*a*n*S*e*r*v*";
//	reason "Reservado para Services";
//}

/* Bane um IP
 * Observe que você normalmente usa /KLINE, /GLINE e /ZLINE para isto.
 */
//ban ip {
//	mask 195.86.232.81;
//	reason "Te odeio";
//}

/* Bane um servidor - se observarmos este servidor vinculado a alguém, então o expulsaremos */
//ban server {
//	mask pedro.usp.br;
//	reason "Caia fora daqui.";
//}

/* Bane um usuário - mas você normalmente usa /KLINE ou /GLINE para isso */
//ban user {
//	mask *usuariotroll@*.saturn.bbn.com;
//	reason "Idiota";
//}

/* Este tipo de banimento permite que clientes sejam banidos com base no seu nome real (realname)
 * ou campo 'gecos'.
 */
//ban realname {
//	mask "Time Swat";
//	reason "FORCAOSTENSIVA";
//}

//ban realname {
//	mask "sub7server";
//	reason "sub7";
//}

/* Exceções de banimento e TKL. Permite que você crie exceções a usuários/IPs a um
 * KLINE, GLINE, etc.
 * Se você é um IRCOp com IP estático (e não há ninguém não confiável utilizando este IP),
 * então nós sugerimos que você seja adicionado aqui. Desta forma, você sempre poderá entrar
 * mesmo se acidentalmente você colocar um *LINE em si mesmo.
 */

/* Exceções de banimento de tipo 'all' protegem você de GLINE, GZLINE, QLINE, SHUN */
//except ban {
//	mask *@192.0.2.1;
//	type all;
//}

/* Isto permite que clientes do IRCCloud não tenham restrição de IP por conexão
 * e também cria exceção a eles de flood por conexão.
 */
except ban {
	mask *.irccloud.com;
	type { maxperip; connect-flood; }
}

/* deny dcc permite você possa banir nomes de arquivos transferidos por DCC */
//deny dcc {
//	filename "*sub7*";
//	reason "Possível Virus Sub7";
//}

/* deny channel permite a você banir um canal (por máscara) */
//deny channel {
//	channel "*warez*";
//	reason "Warez é ilegal";
//	class "clients";
//}

/* VHosts (Hosts Virtuais) permite aos usuários adquirirem um vhost diferente.
 * Veja https://www.unrealircd.org/docs/Vhost_block
 */

/* Exemplo de vhost que você pode usar. No IRC digite: /VHOST teste teste
 * OBSERVAÇÃO: apenas pessoas com o host 'unrealircd.com' podem usá-lo, então
 *       tenha certeza de modificar o vhost::mask antes de seu teste.
 */
//vhost {
//	vhost eu.odeio.microsefrs.com;
//	mask *@unrealircd.com;
//	login "teste";
//	password "teste";
//}

/* Blocos blacklist irão consultar um serviço externo de blacklist
 * sempre que um usuário se conectar, para saber se seu endereço de IP é conhecido
 * por ataques de drone, como uma máquina hackeada, etc.
 * Documentação: https://www.unrealircd.org/docs/Blacklist_block
 * Ou apenas dê uma olhada nos blocos abaixo.
 */

/* DroneBL é provavelmente o serviço de blacklist mais popular usada por servidores de IRC.
 * Veja https://dronebl.org/ para ler a documentação e
 * o significado dos tipos de resposta. No momento em que este arquivo foi escrito, nós usamos os tipos:
 * 3: IRC Drone, 5: Flooder, 6: Drone ou bot de spam desconhecido,
 * 7: Drone de DDoS, 8: Proxy SOCKS, 9: Proxy HTTP, 10: ProxyChain,
 * 11: Proxy de página web, 12: Resolvedor de DNS aberto, 13: Atacantes de força bruta,
 * 14: Proxy Wingate público, 15: Roteador/Gateway comprometido,
 * 16: Virus que tentam conseguir root.
 */
blacklist dronebl {
        dns {
                name dnsbl.dronebl.org;
                type record;
                reply { 3; 5; 6; 7; 8; 9; 10; 11; 12; 13; 14; 15; 16; }
        }
        action gline;
        ban-time 24h;
        reason "Proxy/Drone detectado. Confira https://dronebl.org/lookup?ip=$ip para detalhes.";
}

/* EFnetRBL, veja https://rbl.efnetrbl.org/ para ler a documentação
 * e o significado dos tipos de resposta.
 * No momento em que este arquivo foi escrito: 1 é proxy público, 4 é TOR, 5 é drones/flooders.
 *
 * OBSERVAÇÃO: Se você deseja permitir proxies TOR no seu servidor, então
 *             você precisa remover o '4;' abaixo da seção reply.
 */
blacklist efnetrbl {
        dns {
                name rbl.efnetrbl.org;
                type record;
                reply { 1; 4; 5; }
        }
        action gline;
        ban-time 24h;
        reason "Proxy/Drone/TOR detectado. Confira https://rbl.efnetrbl.org/?i=$ip para detalhes.";
}

/* Você pode incluir outros arquivos de configuração */
/* include "klines.conf"; */

/* Configuração da Rede */
set {
	// ALTERAR ISTO, todos os 4 itens abaixo
	network-name 		"ExemploNET";
	default-server 		"irc.exemplo.org";
	services-server 	"services.exemplo.org";
	stats-server 		"stats.exemplo.org";

	/* Valores Padrão */
	help-channel 		"#ajuda";
	cloak-prefix		"Clk";
	prefix-quit 		"Saindo";

	/* Chaves cloak devem ser a mesma em todos os servidores da rede.
	 * Eles são usados para geração de hosts mascarados e devem ser mantidos em segredo.
	 * VOCÊ PRECISA ALTERAR ISTO!
	 * As chaves devem ser 3 strings (ou mais) de 80 caracteres randômicos
	 * e devem se constituir de letras minúsculas (a-z), maiúsculas (A-Z) e números (0-9).
	 * No *NIX, você pode executar './unrealircd gencloak' na sua shell para que o
	 * UnrealIRCd gere 3 strings randômicas para você.
	 * No Windows, você pode executar "C:\Program Files\UnrealIRCd 6\bin\unrealircdctl" gencloak
	 */
	cloak-keys {
		"Oozahho1raezoh0iMee4ohvegaifahv5xaepeitaich9tahdiquaid0geecipahdauVaij3zieph4ahi";
		"adicione a outra";
		"adicione a outra";
	}
}

/* Configurações específicas do servidor */
set {
	// POR ÚLTIMO, VOCÊ PRECISA ALTERAR ISTO:
	kline-address 'definir.seu.endereco.de.email'; /* e-mail ou URL exibido quando um usuário é banido */
	
	modes-on-connect "+ixw"; /* quando os usuários conectam, esses modos de usuário é atribuído a eles */
	modes-on-oper "+xws"; /* quado alguém se torna IRCOp, esses modos de usuário é atribuído a ele */
	modes-on-join "+nt"; /* modos de canal padrão, quando um novo canal é criado */
	oper-auto-join "#opers"; /* IRCOps entram automaticamente neste canal */
	options {
		hide-ulines; /* esconde U-lines do /MAP e /LINKS */
		show-connect-info; /* exibe a mensagem "looking up your hostname" ao se conectar */
	}

	maxchannelsperuser 10; /* número máximo de canais que um usuário pode entrar com /JOIN */

	/* O tempo mínimo que um usuário precisa estar conectado antes de ser permitido
	 * utilizar a mensagem de QUIT. Isto irá ajudar no combate a SPAM.
	 */
	anti-spam-quit-message-time 10s;

	/* Ou simplesmente defina um quit estático, de forma que qualquer motivo de /QUIT seja ignorado */
	/* static-quit "Cliente saindo";	*/

	/* static-part faz com que o mesmo acima aconteça ao comando /PART */
	/* static-part yes; */

	/* Proteção contra Flood:
	 * Há uma série de configurações para isso, e a maioria delas tem bons padrões.
	 * Veja https://www.unrealircd.org/docs/Set_block#set::anti-flood
	 */
	anti-flood {
	}

	/* Configurações para filtragem de SPAM */
	spamfilter {
		ban-time 1d; /* duração padrão de um ban *LINE definido pelo filtro de spam */
		ban-reason "Spam/Propaganda"; /* motivo padrão */
		virus-help-channel "#help"; /* canal utilizado para usar em uma ação de 'virus de canal' */
		/* except "#help"; exceção de canal ao filtro de spam */
	}

	/* Restringindo certos comandos
	 * Veja https://www.unrealircd.org/docs/Set_block#set::restrict-commands
	 */
	restrict-commands {
		list {
			except {
				connect-time 60; /* após 60 segundos, o usuário pode usar o comando /LIST */
				identified yes; /* ou imediatamente, se estiver identificado ao services */
				reputation-score 24; /* ou se tiver um score de reputação maior ou igual a 24 */
			}
		}
		invite {
			except {
				connect-time 120;
				identified yes;
				reputation-score 24;
			}
		}
		/* Somando a possibilidade de restringir qualquer comando,
		 * também existem 4 tipos especiais
		 * que você pode restringir. Eles são "private-message",
		 * "private-notice", "channel-message" e "channel-notice".
		 * Eles estão todos comentados neste exemplo:
		 */
		//private-message {
		//	except { connect-time 10; }
		//}
		//private-notice {
		//	except { connect-time 10; }
		//}
	}
}

/*
 * A seguir será configurado o limite de conexão para "unknown users".
 *
 * Quando o UnrealIRCd detecta um número elevado de usuários conectando de um endereço IP
 * que nunca viu antes, então conexões do novo IP são rejeitadas quando estiverem
 * acima da taxa abaixo especificada. Por exemplo, na taxa 10:60 apenas 10 usuários por minuto podem conectar
 * por este IP que nunca foi visto antes. Endereços de IP conhecidos sempre podem entrar,
 * independente da taxa definida. O mesmo para usuários que se conectam via SASL.
 *
 * Leia também https://www.unrealircd.org/docs/Connthrottle para detalhes.
 * Ou apenas continue lendo a configuração abaixo:
 */

set {
	connthrottle {
		/* Primeiro nós configuramos quais usuários serão excluídos
		 * das restrições. Estes usuários sempre conseguirão acessar.
		 * Por padrão, entra como exceção usuários identificados com o services
		 * com um score igual ou maior a 24. Um score 24 significa que
		 * este IP foi conectado a esta rede por pelo menos 2 horas em algum momento
		 * no mês passado (ou no mínimo por 1 hora se registrado).
		 * Nós também permitimos usuários que se identificaram através do services via
		 * SASL para passar por cima destas restrições.
		 */
		except {
			reputation-score 24;
			identified yes;
			/* Para mais informações, leia
			 * https://www.unrealircd.org/docs/Mask_item
			 */
		}

		/* Novos usuários são todos os usuários que não pertencem
		 * ao grupo known-users. Eles são considerados "novos" e no
		 * caso de um número elevado de novos usuários se conectando,
		 * eles serão sujeiros ao limite de taxa de conexão.
		 * Por padrão a taxa é 20 novos usuários locais por minuto
		 * e 30 novos usuários globais por minuto.
		 */
		new-users {
			local-throttle 20:60;
			global-throttle 30:60;
		}

		/* Esta seção configura quando este módulo não será ativado.
		 * As configurações padrão desabilitarão o módulo quando:
		 * - O módulo reputation esteja em execução a menos de
		 *   uma semana. Se estiver rodando há menos de 1 semana, então ainda temos
		 *   dados insuficientes para considerar quem é um "known user" (usuário conhecido).
		 * - O servidor acabou de ser inicializado (primeiros 3 minutos).
		 */
		disabled-when {
			reputation-gathering 1w;
			start-delay 3m;
		}
	}
}

/* HISTÓRICO DE CANAL:
 * UnrealIRCd possui modo de canal +H que pode ser usado pelos usuários para recuperar
 * o histórico do canal antes deles terem entrado. Para informações gerais
 * sobre esta funcionalidade, leia https://www.unrealircd.org/docs/Channel_history
 *
 * Os limites do histórico podem ser configurados pelo set::history. Os padrões são
 * provavelmente bons para você, mas se você estiver em um sistema com pouca memória
 * ou tem centenas de canais, então você pode querer verificar esses padrões novamente. Leia
 * https://www.unrealircd.org/docs/Set_block#set::history
 * para ver as opções disponíveis.
 *
 * Além disso, você pode definir um "histórico de canal persistente", o que
 * significa que o histórico do canal é armazenado de modo criptografado no disco e é preservado
 * entre os reinícios do servidor. Leia
 * https://www.unrealircd.org/docs/Set_block#Persistent_channel_history
 * A funcionalidade de histórico persistente NÃO é habilitado por padrão porque você
 * precisa configurar o Bloco secret { } para ele antes. A seguir um exemplo simples
 * de senhas armazenadas diretamente no arquivo de configuração:
 * Para obter uma melhor segurança, leia https://www.unrealircd.org/docs/Secret_block
 * como formas alternativas para não armazenar senhas diretamente no arquivo de configuração.
 */
//secret historydb { password "algumasenha"; }
//set { history { channel { persist yes; db-secret "historydb"; } } }

/* Finalmente, você pode querer ter um MOTD (Mensagem do Dia), isto pode ser
 * feito criando um arquivo de texto 'ircd.motd' no seu diretório conf/ .
 * O texto dentro deste arquivo será exibido aos usuários ao se conectarem.
 * Para mais informações, veja https://www.unrealircd.org/docs/MOTD_and_Rules
 */

/*
 * Problemas ou precisa de ajuda?
 * 1) https://www.unrealircd.org/docs/
 * 2) https://www.unrealircd.org/docs/FAQ <- responde a 80% das suas perguntas!
 * 3) Se ainda assim você está enfrentando problemas, você pode obter ajuda em:
 *    - Fóruns: https://forums.unrealircd.org/
 *    - IRC: irc.unrealircd.org (SSL na porta 6697) / #unreal-support
 *    Observe que pedimos que você leia a documentação e as perguntas frequentes (FAQ) primeiro!
 */
