Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/perl -W
- use IO::Socket;
- #variables
- $server = "deep.space";
- $serveremoto = "irc.gcrew.es";
- $serverdesc = "RoBoTservice";
- $key = "openaccess";
- $numeric = 200;
- ## NICK de los bots de servicios
- $nick_chan = "CHaN";
- $nick_nick = "NiCK";
- $nick_creg = "CReG";
- $chan_dias = 15;
- #NO MODIFICAR NADA
- $numero = 9999;
- $envia = IO::Socket::INET->new(
- Proto=>"tcp" ,
- PeerAddr=> $serveremoto ,
- PeerPort=>"4400"
- )
- or die "No se pudo lograr la conexion con $serveremoto .\n";
- print "Conectado a $serveremoto\n";
- print $envia "PASS $key\n";
- print $envia "SERVER $server 1 :U0-*-$numeric $serverdesc\n";
- print $envia "NICK $nick_chan 1 1475205493 $nick_chan Local $server 0 +oiSq local :$nick_chan\n";
- print $envia "NICK $nick_nick 1 1475205494 $nick_nick Local $server 0 +oiSq local :$nick_nick\n";
- print $envia "NICK $nick_creg 1 1475205495 $nick_creg Local $server 0 +oiSq local :$nick_creg\n";
- #While comprueba cada vez que el socket recive o envia informacion y almacena los datos en variables temporarmente para su uso
- while (<$envia>)
- {
- @space = split(" ",$_);
- @dots = split (":",$_);
- @snick = split(" ",$dots[1]);
- @dice = split(" ",$dots[2]);
- print "<-" . $_;
- #PING responde a los ping del servidor
- if ($space[0] eq "PING")
- {
- print $envia "PONG" . $dots[1] . "\n";
- }
- #NICK mira cuando conecta un nick, y comprueba si esta registrado, de estarlo, pide que se identifique
- if ($space[0] eq "NICK")
- {
- &lee_nick("$space[1]");
- if($nick_leenick[0] eq $space[1])
- {
- my $rango = 9999;
- my $otrorango = 963086439;
- my $rando = int(rand($otrorango));
- my $random_number = int(rand($rango));
- print $envia ":$nick_nick PRIVMSG $space[1] :El nick esta registrado.Si el nick le pertenese, identifiquese de este modo\n";
- print $envia ":$nick_nick PRIVMSG $space[1] :/msg $nick_nick IDENTIFICA $space[1] contraseña \n";
- print $envia "SVSNICK $space[1] invi-$random_number $rando\n";
- }
- }
- if ($space[1] eq "JOIN")
- {
- my($levejoin);
- my(@lee_joinlee);
- my($datos_joinlee_temp);
- my(@separa_joinlee);
- open(joinlee,"<$space[2].txt");
- @lee_joinlee =<joinlee>;
- foreach $datos_joinlee_temp(@lee_joinlee)
- {
- @separa_joinlee = split(" ",$datos_joinlee_temp);
- if ($separa_joinlee[0] eq $snick[0])
- {
- $levejoin = $separa_joinlee[1];
- }
- }
- close(joinlee);
- if ($levejoin >= 300)
- {
- print $envia ":$nick_chan MODE $space[2] +o $snick[0] \n";
- }
- elsif ($levejoin <= 299 && $levejoin >= 150)
- {
- print $envia ":$nick_chan MODE $space[2] +v $snick[0] \n";
- }
- my(@lee_joincanal);
- my($datos_joincanal);
- my(@separa_joincanal);
- open(joincanal,"<$space[2].txt");
- @lee_joincanal=<joincanal>;
- foreach $datos_joincanal(@lee_joincanal)
- {
- @separa_joincanal = split(" ",$datos_joincanal);
- if ($separa_joincanal[0] eq "MODO")
- {
- print $envia ":$nick_chan MODE $space[2] +$separa_joincanal[1] \n";
- }
- if ($separa_joincanal[0] eq "TOPIC")
- {
- print $envia ":$nick_chan TOPIC $space[2] $separa_joincanal[1] \n";
- }
- }
- close(joincanal);
- }
- #SENDSNO comprueba cuando algien se logea como Administrador , Ircop , Operador...
- if ($space[1] eq "SENDSNO")
- {
- if ($dice[7] eq "administrator")
- {
- open(leead,"<ircop.txt");
- @lee_ircop =<leead>;
- my($stircop);
- foreach $lee_datos_ircop(@lee_ircop)
- {
- @separa_temp = split(" ",$lee_datos_ircop);
- if ($separa_temp[0] eq $dice[0])
- {
- $ircop{$dice[0]}="2";
- close(leead);
- }
- }
- $stircop = exists $ircop{$dice[0]};
- if ($stircop == 0)
- {
- open(leead,">>ircop.txt");
- print leead "$dice[0] 2\n";
- close(leead);
- $ircop{$dice[0]}="2";
- }
- }
- }
- #PRIVMSG comprueba si el mensaje va a algun bot de servicio
- if ($space[1] eq "PRIVMSG")
- {
- if("\u".$space[2]."\l" eq "\u$nick_chan\l")
- {
- &chan("$snick[0]","$dice[0]","$dice[1]","$dice[2]","$dice[3]","$dice[4]");
- }
- elsif("\u".$space[2]."\l" eq "\u$nick_creg\l")
- {
- &creg("$snick[0]","$dice[0]","$dice[1]","$dice[2]","$dice[3]");
- }
- elsif("\u".$space[2]."\l" eq "\u$nick_nick\l")
- {
- &nick("$snick[0]","$dice[0]","$dice[1]","$dice[2]");
- }
- }
- }
- sub lee_canal
- {
- my($chan);
- my($passchan);
- my($funder);
- my($describe);
- my($topic);
- my(@canal_text);
- my(@separa_lee_canal);
- my($datos_canal);
- open(canaltext,"<$_[0].txt");
- @canal_text=<canaltext>;
- foreach $datos_canal(@canal_text)
- {
- @separa_lee_canal = split(" ",$datos_canal);
- if ($separa_lee_canal[0] eq "CANAL")
- {
- $chan = $separa_lee_canal[1];
- }
- if ($separa_lee_canal[0] eq "PASS")
- {
- $passchan = $separa_lee_canal[1];
- }
- if ($separa_lee_canal[0] eq "FUNDER")
- {
- $funder = $separa_lee_canal[1];
- }
- if ($separa_lee_canal[0] eq "DESCRIPCION")
- {
- $describe = $separa_lee_canal[1];
- }
- if ($separa_lee_canal[0] eq "TOPIC")
- {
- $topic = $separa_lee_canal[1];
- }
- if ($separa_lee_canal[0] eq "MODO")
- {
- $modos = $separa_lee_canal[1];
- }
- }
- close(canaltext);
- @chan_temp =("$chan","$passchan","$funder","$describe","$topic","$modos");
- }
- #Nick toda las funciones
- sub nick
- {
- if ($_[1] eq "REGISTER")
- {
- my $email = $_[2];
- my $nick_register = $_[0];
- &nick_register("$nick_register","$email");
- }
- elsif ($_[1] eq "HELP")
- {
- &nick_help("$_[0]","$_[2]");
- }
- elsif ($_[1] eq "IDENTIFICA")
- {
- my $nick_identifica_envia = $_[0];
- my $nick_identifica_pass = $_[3];
- my $nick_identifica_nick = $_[2];
- &nick_identifica("$nick_identifica_envia","$nick_identifica_nick","$nick_identifica_pass");
- }
- }
- sub lee_nick
- {
- my(@lee_nick);
- my($datos_leenick);
- my(@separa_leenick);
- my($lee_nick_user);
- my($lee_nick_pass);
- my($lee_nick_email);
- open(leenick,"<$_[0].txt");
- @lee_nick=<leenick>;
- foreach $datos_leenick(@lee_nick)
- {
- @separa_leenick = split(" ",$datos_leenick);
- if ($separa_leenick[0] eq "NICK")
- {
- $lee_nick_user = $separa_leenick[1];
- }
- if ($separa_leenick[0] eq "PASS")
- {
- $lee_nick_pass = $separa_leenick[1];
- }
- if ($separa_leenick[0] eq "EMAIL")
- {
- $lee_nick_email = $separa_leenick[1];
- }
- }
- @nick_leenick =("$lee_nick_user","$lee_nick_pass","$lee_nick_email");
- close(leenick);
- }
- sub nick_identifica
- {
- &lee_nick("$_[1]");
- my $nick_user_iden = $nick_leenick[0];
- my $nick_pass_iden = $nick_leenick[1];
- if ($nick_user_iden eq $_[1] && $nick_pass_iden eq $_[2])
- {
- my $randis = int(rand(963086432));
- print $envia "SVSNICK $_[0] $_[1] $randis \n";
- print $envia ":$nick_chan SVSMODE $_[1] +r \n";
- print $envia ":$nick_nick PRIVMSG $_[1] :Contraseña aceptada, Bienvenido a casa ;) \n";
- }
- }
- sub nick_register
- {
- my($lee_register_nick);
- my(@register_mira_nick);
- my($comprueba_nick);
- my(@nick_register);
- open(leenick,">>$_[0].txt");
- $pass_rand = int(rand($numero));
- $rand_num = rand($numero);
- print leenick "NICK $_[0] \n";
- print leenick "PASS $pass_rand \n";
- print leenick "EMAIL $_[1] \n";
- print leenick "AKICK \n";
- close(leenick);
- my $randiss = int(rand(963086432));
- my $numran = int(rand(9999));
- print $envia ":$nick_nick PRIVMSG $_[0] :Su nick fue registrado , para identificarse escriba /msg $nick_nick IDENTIFICA $_[0] $pass_rand \n";
- print $envia ":$nick_nick PRIVMSG $_[0] :para cambiar su contraseña escriba (debe tener el nick IDENTIFICADO para poder usar este comando \n";
- print $envia ":$nick_nick PRIVMSG $_[0] :/msg $nick_nick PASSMODIFI antiguacontraseña nuevacontraseña \n";
- print $envia "SVSNICK $_[0] invi-$numran $randiss \n";
- }
- #chan toda las funciones
- sub chan
- {
- if($_[1] eq "HELP")
- {
- &chan_help("$_[0]","$_[1]","$_[2]");
- }
- if($_[1] eq "OP")
- {
- &chan_op("$_[0]","$_[2]","$_[3]");
- }
- if($_[1] eq "ACCESS")
- {
- my $elnickmanda = $_[0];
- my $canalmanda = $_[2];
- my $opcionmanda = $_[3];
- my $esenickmanda = $_[4];
- my $nivelmanda = $_[5];
- &chan_access("$elnickmanda","$canalmanda","$opcionmanda","$esenickmanda","$nivelmanda");
- }
- if($_[1] eq "IDENTIFICA")
- {
- &chan_identifica("$_[0]","$_[2]","$_[3]");
- }
- if ($_[1] eq "INFO")
- {
- &chan_info("$_[0]","$_[2]");
- }
- }
- sub chan_info
- {
- &lee_canal("$_[1]");
- if ($chan_temp[0] eq "$_[1]")
- {
- my $canal_info = $chan_temp[0];
- my $fundador_info = $chan_temp[2];
- my $descrip_info = $chan_temp[3];
- my $topic_info = $chan_temp[4];
- my $modos_info = $chan_temp[5];
- print $envia ":$nick_chan PRIVMSG $_[0] :Informacion del canal $canal_info \n";
- print $envia ":$nick_chan PRIVMSG $_[0] : \n";
- print $envia ":$nick_chan PRIVMSG $_[0] :Fundador : $fundador_info \n";
- print $envia ":$nick_chan PRIVMSG $_[0] :TOPIC :$topic_info \n";
- print $envia ":$nick_chan PRIVMSG $_[0] :Usa Los modos $modos_info \n";
- }
- }
- sub chan_identifica
- {
- if (!$nicks{$_[0]})
- {
- &lee_canal("$_[1]");
- if ($chan_temp[0] eq "$_[1]")
- {
- my $chan_canal_identifica = $chan_temp[0];
- my $chan_pass_identifica = $chan_temp[1];
- my $chan_funder_identifica = $chan_temp[2];
- if ($chan_canal_identifica eq $_[1] && $chan_pass_identifica eq $_[2] && $chan_funder_identifica eq $_[0])
- {
- print $envia ":$nick_chan PRIVMSG $_[0] :Se a identificado correctamente como Fundador de $_[1] \n";
- print $envia ":$nick_chan MODE $_[1] +q $_[0]\n";
- $nicks{$_[0]}="$_[1]";
- }
- }
- }
- }
- sub chan_access
- {
- my($nivel);
- my($founder);
- if ($_[2] eq "ADD")
- {
- open(leechanaccess,"<$_[1].txt");
- my @lee_chan_access =<leechanaccess>;
- foreach $chan_access_datos_temp(@lee_chan_access)
- {
- @datos_lee_chan_access = split(" ",$chan_access_datos_temp);
- if ($datos_lee_chan_access[0] eq $_[0])
- {
- $nivel = $datos_lee_chan_access[1];
- }
- }
- }
- close(leechanaccess);
- if($_[4] <= $nivel)
- {
- open(miranickaccess,"<$_[3].txt");
- @mira_nickaccess =<miranickaccess>;
- my($registrado_nick);
- foreach $datos_miranickaccess_temp(@mira_nickaccess)
- {
- @separo_datosaccess = split(" ",$datos_miranickaccess_temp);
- if ($separo_datosaccess[1] eq $_[3])
- {
- open(anadeaccess,">>$_[1].txt");
- print anadeaccess "$_[3] $_[4]\n";
- close(anadeaccess);
- print $envia ":$nick_chan NOTICE $_[1] :$_[0] Añade a la lista de ACCESS a $_[3] con nivel $_[4] \n";
- $registrado_nick = "si";
- }
- }
- if (!$registrado_nick)
- {
- print $envia ":$nick_chan PRIVMSG $_[0] :Lo sentimos,el nick $_[3] , parece no tener el nick registrado \n";
- }
- }
- }
- sub creg_help
- {
- if (!$_[2])
- {
- print $envia ":$nick_creg PRIVMSG $_[0] :Comando de ayuda para $nick_creg \n";
- print $envia ":$nick_creg PRIVMSG $_[0] :Sintaxis /msg $nick_creg REGISTER <canal> <contraseña> <descripcion> \n";
- }
- }
- sub chan_op
- {
- my($levels);
- open(chanop,"<$_[1].txt");
- @lee_chanop=<chanop>;
- foreach $datos_chanop_temp(@lee_chanop)
- {
- @separa_chanop = split(" ",$datos_chanop_temp);
- if($separa_chanop[0] eq $_[0])
- {
- $levels = $separa_chanop[1];
- if($levels >= 150)
- {
- print $envia ":$nick_chan MODE $_[1] +o $_[2] \n";
- close(chanop);
- }
- elsif($levels < 150)
- {
- print $envia ":$nick_chan PRIVMSG $_[0] :Lo siento, no tiene suficiente nivel \n";
- close(chanop);
- }
- }
- }
- close(chanop);
- }
- sub chan_help
- {
- if (!$_[2])
- {
- print $envia ":$nick_chan PRIVMSG $_[0] :Comando ayuda para $nick_chan \n";
- print $envia ":$nick_chan PRIVMSG $_[0] : \n";
- print $envia ":$nick_chan PRIVMSG $_[0] :COMANDOS :Comentario \n";
- print $envia ":$nick_chan PRIVMSG $_[0] : \n";
- print $envia ":$nick_chan PRIVMSG $_[0] :REGISTER :Para registrar un canal \n";
- print $envia ":$nick_chan PRIVMSG $_[0] :NICK :Nick Help para mas informacion \n";
- print $envia ":$nick_chan PRIVMSG $_[0] :SET :Fija opciones e informacion del canal \n";
- print $envia ":$nick_chan PRIVMSG $_[0] :ACCESS :Modifica la lista de usuarios con privilegios \n";
- print $envia ":$nick_chan PRIVMSG $_[0] :LEVELS :Redefine los niveles de acceso \n";
- print $envia ":$nick_chan PRIVMSG $_[0] :AKICK :Mantiene la lista de Auto-Kick \n";
- print $envia ":$nick_chan PRIVMSG $_[0] :DROP :Cancela la registracion de un canal \n";
- print $envia ":$nick_chan PRIVMSG $_[0] :INFO :Muestra informacion de un canal \n";
- print $envia ":$nick_chan PRIVMSG $_[0] :LIST :Lista los canales registrados \n";
- print $envia ":$nick_chan PRIVMSG $_[0] :INVITE :Te invita a un canal \n";
- print $envia ":$nick_chan PRIVMSG $_[0] :VOICE :Da voz en un canal \n";
- print $envia ":$nick_chan PRIVMSG $_[0] :DEVOICE :Quita voz en un canal \n";
- print $envia ":$nick_chan PRIVMSG $_[0] :OP :Da OP en un canal \n";
- print $envia ":$nick_chan PRIVMSG $_[0] :KICK :Kickea a un usuario de un canal \n";
- print $envia ":$nick_chan PRIVMSG $_[0] :BAN :Poner un BAN en un canal \n";
- print $envia ":$nick_chan PRIVMSG $_[0] :UNBAN :Quita un BAN en un canal \n";
- print $envia ":$nick_chan PRIVMSG $_[0] :CLEAR :Reinicia los modos de un canal \n";
- print $envia ":$nick_chan PRIVMSG $_[0] :RESET :Resetea el canal \n";
- print $envia ":$nick_chan PRIVMSG $_[0] :DELACCESS :Elimina nuestro registro de un canal \n";
- print $envia ":$nick_chan PRIVMSG $_[0] : \n";
- print $envia ":$nick_chan PRIVMSG $_[0] :Note que si un canal no es utilizado por $chan_dias días ( es decir \n";
- print $envia ":$nick_chan PRIVMSG $_[0] :qué ningún usuario en la lista de acceso del canal entra en \n";
- print $envia ":$nick_chan PRIVMSG $_[0] :ese periodo de tiempo) será automaticamente cancelado. \n";
- }
- if($_[2] eq "SET")
- {
- print $envia ":$nick_chan PRIVMSG $_[0] :Sintaxis: SET canal opción parámetros\n";
- print $envia ":$nick_chan PRIVMSG $_[0] : \n";
- print $envia ":$nick_chan PRIVMSG $_[0] :Uso: Habilita al fundador del canal a definir varias opciones y\n";
- print $envia ":$nick_chan PRIVMSG $_[0] :otra información. El fundador, debe identificarse vía\n";
- print $envia ":$nick_chan PRIVMSG $_[0] :comando IDENTIFY antes de utilizar SET.\n";
- print $envia ":$nick_chan PRIVMSG $_[0] : \n";
- print $envia ":$nick_chan PRIVMSG $_[0] :Opciones disponibles:\n";
- print $envia ":$nick_chan PRIVMSG $_[0] : \n";
- print $envia ":$nick_chan PRIVMSG $_[0] :Opciones informativas \n";
- print $envia ":$nick_chan PRIVMSG $_[0] : DESC Cambia la descripción del canal \n";
- print $envia ":$nick_chan PRIVMSG $_[0] : URL Asocia una URL al canal \n";
- print $envia ":$nick_chan PRIVMSG $_[0] : EMAIL Asocia una dirección de correo al canal \n";
- print $envia ":$nick_chan PRIVMSG $_[0] : ENTRYMSG Fija un mensaje que será mostrado a los usuarios cuando entren al canal\n";
- print $envia ":$nick_chan PRIVMSG $_[0] : TOPIC Cambia el Tema del canal \n";
- print $envia ":$nick_chan PRIVMSG $_[0] : \n";
- print $envia ":$nick_chan PRIVMSG $_[0] :Opciones de seguridad \n";
- print $envia ":$nick_chan PRIVMSG $_[0] : KEEPTOPIC Retiene el tema (topic) cuando el canal no está en uso \n";
- print $envia ":$nick_chan PRIVMSG $_[0] : TOPICLOCK El Tema SOLO podrá ser cambiado vía SET TOPIC \n";
- print $envia ":$nick_chan PRIVMSG $_[0] : DEBUG Activa/desactiva la opción de que CHaN muestre determinadas \n";
- print $envia ":$nick_chan PRIVMSG $_[0] : acciones sobre un canal. \n";
- print $envia ":$nick_chan PRIVMSG $_[0] : MLOCK Fija los modos del canal en 'ON' u 'OFF' \n";
- print $envia ":$nick_chan PRIVMSG $_[0] : PRIVATE Oculta el canal (no se ve cuando se utiliza el comando LIST)\n";
- print $envia ":$nick_chan PRIVMSG $_[0] : RESTRICTED Restringe el acceso al canal\n";
- print $envia ":$nick_chan PRIVMSG $_[0] : SECURE Activa los rasgos de seguridad de CHaN \n";
- print $envia ":$nick_chan PRIVMSG $_[0] : SECUREOPS Control estricto de Status de operador \n";
- print $envia ":$nick_chan PRIVMSG $_[0] : AUTOLIMIT Evita los ataques por MassJoin (clones) variando de forma automática y dinámica\n";
- print $envia ":$nick_chan PRIVMSG $_[0] : el limite de usuarios de un canal (+l). \n";
- print $envia ":$nick_chan PRIVMSG $_[0] : \n";
- print $envia ":$nick_chan PRIVMSG $_[0] :Opciones administrativas (solo fundadores)\n";
- print $envia ":$nick_chan PRIVMSG $_[0] : NAME Ajusta el nombre del canal intercambiando mayúsculas y minúsculas\n";
- print $envia ":$nick_chan PRIVMSG $_[0] : FOUNDER Cambia el fundador del canal \n";
- print $envia ":$nick_chan PRIVMSG $_[0] : SUCCESSOR Cambia el sucesor del canal\n";
- print $envia ":$nick_chan PRIVMSG $_[0] : PASSWORD Cambia la contraseña del fundador\n";
- print $envia ":$nick_chan PRIVMSG $_[0] : \n";
- print $envia ":$nick_chan PRIVMSG $_[0] :Escriba /msg CHaN HELP <opción> para obtener mas \n";
- print $envia ":$nick_chan PRIVMSG $_[0] :información de una opción en particular. \n";
- }
- if($_[2] eq "REGISTER")
- {
- print $envia ":$nick_chan PRIVMSG $_[0] :Sintaxis: /msg $nick REGISTER <email> <contraseña> \n";
- }
- if($_[2] eq "ACCESS")
- {
- print $envia ":$nick_chan PRIVMSG $_[0] :Sintaxis: \n";
- print $envia ":$nick_chan PRIVMSG $_[0] :ACCESS canal ADD nick nivel \n";
- print $envia ":$nick_chan PRIVMSG $_[0] :ACCESS canal DEL {nick | posición-numero} \n";
- print $envia ":$nick_chan PRIVMSG $_[0] :ACCESS canal LIST [máscara]Levels relacionados: \n";
- print $envia ":$nick_chan PRIVMSG $_[0] :ACC-CHANGE ACC-LIST \n";
- print $envia ":$nick_chan PRIVMSG $_[0] :Nivel por defecto: 450 y 0 respectivamente. \n";
- print $envia ":$nick_chan PRIVMSG $_[0] :Uso: Mantiene la lista de accesos del canal. La lista de accesos \n";
- print $envia ":$nick_chan PRIVMSG $_[0] :establece qué usuarios están habilitados a ser operadores \n";
- print $envia ":$nick_chan PRIVMSG $_[0] :del canal o acceder a comandos de CHaN en el canal. Se pueden \n";
- print $envia ":$nick_chan PRIVMSG $_[0] :establecer diferentes niveles de usuarios para acceder a\n";
- print $envia ":$nick_chan PRIVMSG $_[0] :diferentes privilegios; utilice /msg CHaN HELP ACCESS LEVELS\n";
- print $envia ":$nick_chan PRIVMSG $_[0] :para obtener información mas específica. Cualquier nick que\n";
- print $envia ":$nick_chan PRIVMSG $_[0] :no esté en la lista de acceso tiene nivel de usuario 0\n";
- print $envia ":$nick_chan PRIVMSG $_[0] :(cero).\n";
- print $envia ":$nick_chan PRIVMSG $_[0] : \n";
- print $envia ":$nick_chan PRIVMSG $_[0] :El comando ACCESS ADD agrega al nick con el nivel dado a la\n";
- print $envia ":$nick_chan PRIVMSG $_[0] :lista de acceso; si el usuario ya existe en la lista, se\n";
- print $envia ":$nick_chan PRIVMSG $_[0] :reemplazará su nivel. El nivel especificado debe ser menor\n";
- print $envia ":$nick_chan PRIVMSG $_[0] :que el que tiene el usuario que está ingresando el comando,\n";
- print $envia ":$nick_chan PRIVMSG $_[0] :y si el nick está actualmente en la lista, el nivel actual\n";
- print $envia ":$nick_chan PRIVMSG $_[0] :de dicho nick debe ser menor que el nivel del usuario que\n";
- print $envia ":$nick_chan PRIVMSG $_[0] :está ingresando el comando.\n";
- print $envia ":$nick_chan PRIVMSG $_[0] : \n";
- print $envia ":$nick_chan PRIVMSG $_[0] :El comando ACCESS DEL elimina un usuario de la lista de\n";
- print $envia ":$nick_chan PRIVMSG $_[0] :accesos. Se puede eliminar un usuario ingresando el nick o\n";
- print $envia ":$nick_chan PRIVMSG $_[0] :ingresando el número que ocupa en la lista de accesos.\n";
- print $envia ":$nick_chan PRIVMSG $_[0] :\n";
- print $envia ":$nick_chan PRIVMSG $_[0] :El comando ACCESS LIST muestra la lista de accesos al canal;\n";
- print $envia ":$nick_chan PRIVMSG $_[0] :se pueden utilizar caracteres comodines o máscaras, en cuyo\n";
- print $envia ":$nick_chan PRIVMSG $_[0] :caso sólo las coincidencias concurrentes serán listadas.\n";
- print $envia ":$nick_chan PRIVMSG $_[0] : \n";
- print $envia ":$nick_chan PRIVMSG $_[0] :Nota: Una máscara es el sistema que utiliza el IRC para identificar a\n";
- print $envia ":$nick_chan PRIVMSG $_[0] :un usuario, esta compuesta de nick!ident\@host, donde nick es el \n";
- print $envia ":$nick_chan PRIVMSG $_[0] :nick del usuario, ident es el ident y host es la ip virtual. \n";
- print $envia ":$nick_chan PRIVMSG $_[0] :Los caracteres ! y @ son los separadores de los respectivos campos. \n";
- print $envia ":$nick_chan PRIVMSG $_[0] :Una máscara acepta caracteres \"comodín\" que son el * que sustituye \n";
- print $envia ":$nick_chan PRIVMSG $_[0] :cualquier numero de caracteres en su posición y ? que sustituye un único carácter.:\n";
- }
- if ($_[2] eq "LEVELS")
- {
- print $envia ":$nick_chan PRIVMSG $_[0] :Sintaxis: \n";
- print $envia ":$nick_chan PRIVMSG $_[0] : LEVELS canal SET tipo nivel\n";
- print $envia ":$nick_chan PRIVMSG $_[0] : LEVELS canal {DIS | DISABLE} tipo\n";
- print $envia ":$nick_chan PRIVMSG $_[0] : LEVELS canal LIST\n";
- print $envia ":$nick_chan PRIVMSG $_[0] : LEVELS canal RESET\n";
- print $envia ":$nick_chan PRIVMSG $_[0] : \n";
- print $envia ":$nick_chan PRIVMSG $_[0] :Uso: El comando LEVELS permite un control fino sobre los accesos\n";
- print $envia ":$nick_chan PRIVMSG $_[0] :numéricos utilizados por los canales. Con este comando,\n";
- print $envia ":$nick_chan PRIVMSG $_[0] :usted puede definir los niveles requeridos para muchas de\n";
- print $envia ":$nick_chan PRIVMSG $_[0] :las funciones de CHaN. Los comandos SET FOUNDER,\n";
- print $envia ":$nick_chan PRIVMSG $_[0] :SET PASSWORD, así como éste comando están siempre\n";
- print $envia ":$nick_chan PRIVMSG $_[0] :restringidos al fundador.\n";
- print $envia ":$nick_chan PRIVMSG $_[0] :LEVELS SET habilita el acceso para una función o grupo de\n";
- print $envia ":$nick_chan PRIVMSG $_[0] :funciones a ser modificadas.\n";
- print $envia ":$nick_chan PRIVMSG $_[0] :LEVELS DISABLE (o DIS en forma abreviada) deshabilita un\n";
- print $envia ":$nick_chan PRIVMSG $_[0] :privilegio automático, o deshabilita el acceso para\n";
- print $envia ":$nick_chan PRIVMSG $_[0] :cualquier otro que no sea el fundador del canal.\n";
- print $envia ":$nick_chan PRIVMSG $_[0] :LEVELS LIST muestra los niveles actuales para cada función o\n";
- print $envia ":$nick_chan PRIVMSG $_[0] :grupo de funciones.\n";
- print $envia ":$nick_chan PRIVMSG $_[0] :LEVELS RESET vuelve todos los niveles a sus valores por\n";
- print $envia ":$nick_chan PRIVMSG $_[0] :defecto, los mismos que cuando se registra por primera vez\n";
- print $envia ":$nick_chan PRIVMSG $_[0] :un canal (vea HELP ACCESS LEVELS).\n";
- print $envia ":$nick_chan PRIVMSG $_[0] : \n";
- print $envia ":$nick_chan PRIVMSG $_[0] :Para una lista de las funciones que pueden ser establecidas,\n";
- print $envia ":$nick_chan PRIVMSG $_[0] :utilice el comando HELP LEVELS DESC.\n";
- }
- if ($_[2] eq "AKICK")
- {
- print $envia ":$nick_chan PRIVMSG $_[0] :Sintaxis:\n";
- print $envia ":$nick_chan PRIVMSG $_[0] : AKICK canal ADD máscara [razón]\n";
- print $envia ":$nick_chan PRIVMSG $_[0] : AKICK canal DEL máscara\n";
- print $envia ":$nick_chan PRIVMSG $_[0] : AKICK canal LIST [máscara]\n";
- print $envia ":$nick_chan PRIVMSG $_[0] : \n";
- print $envia ":$nick_chan PRIVMSG $_[0] :Uso: \n";
- print $envia ":$nick_chan PRIVMSG $_[0] :Definimos AKICK como \"Expulsión automática\".\n";
- print $envia ":$nick_chan PRIVMSG $_[0] :Definimos BAN como \"Entrada prohibida\".\n";
- print $envia ":$nick_chan PRIVMSG $_[0] : \n";
- print $envia ":$nick_chan PRIVMSG $_[0] :Este comando, mantiene la lista de AKICK del canal. Si un\n";
- print $envia ":$nick_chan PRIVMSG $_[0] :usuario está en la lista de AKICK e intenta entrar al canal,\n";
- print $envia ":$nick_chan PRIVMSG $_[0] :CHaN automáticamente agrega dicho usuario a la lista BAN\n";
- print $envia ":$nick_chan PRIVMSG $_[0] :del canal, y luego lo expulsa del canal.\n";
- print $envia ":$nick_chan PRIVMSG $_[0] : \n";
- print $envia ":$nick_chan PRIVMSG $_[0] :El comando AKICK ADD agrega un usuario a la lista de AKICK.\n";
- print $envia ":$nick_chan PRIVMSG $_[0] :Si una razón es dada con el comando, entonces la razón será\n";
- print $envia ":$nick_chan PRIVMSG $_[0] :utilizada por CHaN cuando expulse a dicho usuario; si\n";
- print $envia ":$nick_chan PRIVMSG $_[0] :no, el mensaje que se utilizará por defecto, es \n";
- print $envia ":$nick_chan PRIVMSG $_[0] :\"No te quiero en el canal\".\n";
- print $envia ":$nick_chan PRIVMSG $_[0] : \n";
- print $envia ":$nick_chan PRIVMSG $_[0] :El comando AKICK DEL elimina al usuario de la lista de\n";
- print $envia ":$nick_chan PRIVMSG $_[0] :AKICK. Este comando no remueve el BAN que pueda existir en\n";
- print $envia ":$nick_chan PRIVMSG $_[0] :el canal, el cual deberá ser removido manualmente.\n";
- print $envia ":$nick_chan PRIVMSG $_[0] :\n";
- print $envia ":$nick_chan PRIVMSG $_[0] :El comando AKICK LIST muestra la lista de usuarios en la\n";
- print $envia ":$nick_chan PRIVMSG $_[0] :lista de AKICK. Opcionalmente, sólo lista aquellos\n";
- print $envia ":$nick_chan PRIVMSG $_[0] :suministrados con la máscara dada.\n";
- print $envia ":$nick_chan PRIVMSG $_[0] : \n";
- print $envia ":$nick_chan PRIVMSG $_[0] :Nota: Una máscara es el sistema que utiliza el IRC para identificar a \n";
- print $envia ":$nick_chan PRIVMSG $_[0] :un usuario, esta compuesta de nick!ident\@host, donde nick es el \n";
- print $envia ":$nick_chan PRIVMSG $_[0] :nick del usuario, ident es el ident y host es la ip virtual. \n";
- print $envia ":$nick_chan PRIVMSG $_[0] :Los caracteres ! y @ son los separadores de los respectivos campos. \n";
- print $envia ":$nick_chan PRIVMSG $_[0] :Una máscara acepta caracteres \"comodín\" que son el * que sustituye \n";
- print $envia ":$nick_chan PRIVMSG $_[0] :cualquier número de caracteres en su posición y ? que sustituye un único carácter. \n";
- }
- if ($_[2] eq "INFO")
- {
- print $envia ":$nick_chan PRIVMSG $_[0] :Sintaxis: INFO canal\n";
- print $envia ":$nick_chan PRIVMSG $_[0] : \n";
- print $envia ":$nick_chan PRIVMSG $_[0] :Uso: Provee información acerca del canal (o informa que no está\n";
- print $envia ":$nick_chan PRIVMSG $_[0] :registrado). Lista el fundador, hora y fecha de\n";
- print $envia ":$nick_chan PRIVMSG $_[0] :registro, última vez que se utilizó, descripción, opciones y\n";
- print $envia ":$nick_chan PRIVMSG $_[0] :modos del canal (si los hubiese).\n";
- }
- if ($_[2] eq "INVITE")
- {
- print $envia ":$nick_chan PRIVMSG $_[0] :Sintaxis: INVITE canal\n";
- print $envia ":$nick_chan PRIVMSG $_[0] : \n";
- print $envia ":$nick_chan PRIVMSG $_[0] :Uso: Le dice a CHaN que lo invite a usted al canal indicado.\n";
- print $envia ":$nick_chan PRIVMSG $_[0] :Por defecto, solo funciona si su nivel de acceso en dicho\n";
- print $envia ":$nick_chan PRIVMSG $_[0] :canal es mayor que 0 (cero).\n";
- }
- if ($_[2] eq "OP")
- {
- print $envia ":$nick_chan PRIVMSG $_[0] :Sintaxis: OP #canal nick\n";
- print $envia ":$nick_chan PRIVMSG $_[0] : \n";
- print $envia ":$nick_chan PRIVMSG $_[0] :Uso: Convierte en Operador al usuario indicado en el canal indicado. \n";
- print $envia ":$nick_chan PRIVMSG $_[0] :Por defecto, está limitado a quienes posean nivel 5 o mayor en el canal.\n";
- }
- if ($_[2] eq "DEOP")
- {
- print $envia ":$nick_chan PRIVMSG $_[0] :Sintaxis: DEOP #canal nick\n";
- print $envia ":$nick_chan PRIVMSG $_[0] :Uso: Quita el estado de Operador (@) al usuario indicado en el canal indicado. \n";
- print $envia ":$nick_chan PRIVMSG $_[0] :Tan solo puede usarse sobre nicks con un nivel en el canal inferior al del nick \n";
- print $envia ":$nick_chan PRIVMSG $_[0] :que ejecuta el comando.\n";
- }
- }
- #creg todas las funciones
- sub creg
- {
- if ($_[1] eq "REGISTER")
- {
- my $canal = $_[2];
- my $pass = $_[3];
- my $descripcion = $_[4];
- my $nick_register_creg = $_[0];
- &creg_register("$nick_register_creg","$_[1]","$canal","$pass","$descripcion");
- }
- elsif ($_[1] eq "HELP")
- {
- &creg_help("$_[0]","$_[2]");
- }
- elsif ($_[1] eq "LIST")
- {
- &creg_list("$_[0]","$_[2]");
- }
- elsif ($_[1] eq "ACEPTA")
- {
- &creg_acepta("$_[0]","$_[2]");
- }
- }
- sub creg_acepta
- {
- my($elnick);
- my($elcanal);
- $elnick = $_[0];
- $elcanal = $_[1];
- my($mira_cregacepta);
- my(@mira_creglist);
- my($mira_datos_creglist);
- my(@cregacepta_separa);
- my ($com_cregacepta);
- $com_cregacepta = "no";
- $mira_cregacepta = exists($ircop{$elnick});
- if ($mira_cregacepta == 1)
- {
- open(cregmira,"<register.txt");
- @mira_creglist =<cregmira>;
- foreach $mira_datos_creglist(@mira_creglist)
- {
- @cregacepta_separa = split(" ",$mira_datos_creglist);
- if ($cregacepta_separa[0] eq $elcanal)
- {
- close(cregmira);
- open(cregacepta,">$elcanal.txt");
- print cregacepta "CANAL $elcanal \n";
- print cregacepta "PASS $cregacepta_separa[1] \n";
- print cregacepta "FUNDER $cregacepta_separa[2] \n";
- print cregacepta "DESCRIPCION $cregacepta_separa[3]\n";
- print cregacepta "TOPIC $cregacepta_separa[3] \n";
- print cregacepta "MODO rnt \n";
- print cregacepta "\n";
- print cregacepta "AKICK \n";
- print cregacepta "\n";
- print cregacepta "ACCESS \n";
- print cregacepta "$elnick 501\n";
- close(cregacepta);
- $com_cregacepta = "si";
- print $envia ":$nick_creg PRIVMSG $elnick :Canal registrado con exito \n";
- print $envia ":$nick_creg JOIN $elcanal \n";
- print $envia ":$nick_creg MODE $elcanal +rnt \n";
- print $envia ":$nick_creg PART $elcanal \n";
- }
- }
- &creg_borra_register($elcanal);
- if ($com_cregacepta ne "si")
- {
- &error("$elnick","error_creg_acepta","$elcanal")
- }
- }
- }
- sub creg_borra_register
- {
- my (@registros,@new_registros);
- open (DATABASE, "<register.txt") || &error('abrir','archivo');
- flock (DATABASE,1)||&error('lock','file');
- @registros = <DATABASE>;
- close (DATABASE) || &error('cerrar','archivo');
- foreach $registro (@registros)
- {
- $registro =~ s/\n//g;
- my(@borra_datos_register) = split(" ",$registro);
- if ($borra_datos_register[0] != $_[0])
- {
- push (@new_registros,$registro);
- }
- }
- open (DATABASE, ">register.txt") || &error('abrir','archivo');
- flock (DATABASE,2)||&error('lock','file');
- foreach $new_registro (@new_registros)
- {
- print DATABASE "$new_registro\n";
- }
- close (DATABASE) || &error('cerrar','archivo');
- }
- sub creg_list
- {
- my($mira_list);
- my(@creg_list);
- my ($datos_creg_list);
- $mira_list = exists($ircop{$_[0]});
- if ($mira_list == 1)
- {
- open(creglist,"<register.txt");
- @creg_list =<creglist>;
- foreach $datos_creg_list(@creg_list)
- {
- @separa_list_creg = split(" ",$datos_creg_list);
- print $envia ":$nick_creg PRIVMSG $_[0] :Lista de canales a la espera de aceptar registro : \n";
- print $envia ":$nick_creg PRIVMSG $_[0] : \n";
- print $envia ":$nick_creg PRIVMSG $_[0] :Nombre del canal: $separa_list_creg[0] \n";
- print $envia ":$nick_creg PRIVMSG $_[0] :Descripcion: $separa_list_creg[3]\n";
- print $envia ":$nick_creg PRIVMSG $_[0] :Nick que lo registra: $separa_list_creg[2]\n";
- }
- }
- close(creglist);
- }
- sub creg_register
- {
- my($lee_register_temp);
- my(@register_mira);
- my($comprueba);
- $comprueba = "no";
- my(@creg_register);
- open(leecreg,"<register.txt");
- @creg_register =<leecreg>;
- foreach $lee_register_temp(@creg_register)
- {
- @register_mira = split(" ",$lee_register_temp);
- if ($register_mira[0] eq $_[2])
- {
- &error("$_[0]","error_canal_registrado","$_[2]");
- $comprueba = "si";
- close(leecreg);
- }
- }
- if ($comprueba eq "no")
- {
- open(leecreg,">>register.txt");
- print leecreg "$_[2] $_[3] $_[0] $_[4] \n";
- close(leecreg);
- print $envia ":$nick_creg PRIVMSG $_[0] :El canal $_[2] esta a la espera de ser aceptado,bajo el nick de $_[0] y la contraseña $_[3] ,gracias \n"
- }
- }
- #funciones de error
- sub error
- {
- if ($_[1] eq "error_canal_registrado")
- {
- print $envia ":$nick_creg PRIVMSG $_[0] :Lo sentimos, el canal $_[2] ya estaba registrado \n"
- }
- if ($_[1] eq "error_creg_acepta")
- {
- print $envia ":$nick_creg PRIVMSG $_[0] :ERROR: El canal $_[2] no esta a la espera de ser aceptado \n";
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement