viernes, 21 de febrero de 2014

IRSSIPROXY configuración full!





Mis apunte...
El irssi es desde mi punto de vista el mejor y más potente cliente IRC que hay despues de BitchX; en su día fue el cliente numero 1, ahora lo están volviendo a resucitar... Mola!  
Bueno, al grano!

Para configurar nuestro IRSSIPROXY lo primero que necesitamos es una shell remota o una VPS. Una vez ahí procederemos alojar nuestro irssi. La ventaja que tiene esto son:

1. Nuestro cliente siempre estará rulando en segundo plano gracias a screen o tmux que son 2 potentes programas.

2. Podemos salvar nuestras secciones utilizando cualquier cliente IRC. (Y)

3. En ocasiones resulta tedioso y lento pilotar nuestro irssi entrando por ssh a nuestra shell o servidor. Con IRSSIPROXY va mucho más fluido, ¿porque? ya lo veremos:

Entramos a la shell remota, lanzamos screen/tmux posteriormente el irssi (libre de configuraciones, vamos hacerlo desde cero).
Crearemos las redes y configuraremos los server's a los que solemos entrar.

Ejemplo:
/network add freenode
/network add redirc
/network add chathispano
 procedemos con los server's:
/server add -auto -ssl -network freenode irc.freenode.net 6697 password-nick
/server add -auto -ssl -network redirc irc.redirc.org 6697 password-nick
/server add -auto -network chathispano irc.chathispano.com 6667 password-nick
Acto seguido a cargar el modulo proxy:
/load proxy
       podemos crear un archivo de texto en el ~/.irssi con el nombre
       de startup y añadiremos load proxy guardamos y cerramos, así no tendrán
       que cargarlo siempre que reinicien el irssi.
/set irssiproxy_password 1234567890   "nos creamos una contraseña"
/set irssiproxy_port  freenode=1111 redirc=1112 chathispano=1113 
        "añadimos un puerto por cada red" tener que ir buscando que puertos
          pueden estar disponibles; es posible que a la primera BINGO!! o puede
          que no.

guardamos todo y conectamos:
/save
/connect freenode
/connect redirc
/connect chathispano
Y ya está!
Dejamos rulando nuestro IRSSIPROXY; salimos de tmux/screen y posteriormente de la shell remota.

Ahora nos vamos a nuestro equipo y lanzamos nuestro querido irssi O CUALQUIER OTRO CLIENTE!!!
Lanzamos nuestro querido irssi (libre de configuraciones,
desde cero)
/network add freenode
/network add redirc
/network add chathispano
/server add -auto -network freenode shell_remota 1111 1234567890
/server add -auto -network redirc shell_remota 1112 1234567890
/server add -auto -network chathispano shell_remota 1113 1234567890
añadiremos los respectivos canales de cada red para que se conecten automaticamente:
ejemplo:
/channel add -auto #archlinux-es freenode.
scripts:

Hay 2 scripts a tener encuenta:

1. fnotify.pl La función de este script es mencionarte por medio de correo electrónico quien te está solicitando en el IRSSI y aparte de eso se crea un documento .txt en el ~/.irssi y lo salva. Para esto debemos tener instalado y configurado nuestro SSMTP y lo debemos hacer como root en nuestro shell remota o hablar con el administrador del server para que haga los respetivos ajustes.
Este es el script con algunos cambios para que rule cómo Dios manda en el IRSSI. Lo cargaremos en el irssi remoto ~/.irssi/scripts/autorun.

# todo: grap topic changes

use strict;
use vars qw($VERSION %IRSSI);

use Irssi;
$VERSION = '0.0.3';
%IRSSI = (
        authors     => 'Thorsten Leemhuis',
        contact     => 'fedora@leemhuis.info',
        name        => 'fnotify',
        description => 'Write a notification to a file that shows who is talking to you in which channel.',
        url         => 'http://www.leemhuis.info/files/fnotify/',
        license     => 'GNU General Public License',
        changed     => '$Date: 2007-01-13 12:00:00 +0100 (Sat, 13 Jan 2007) $'
);

#--------------------------------------------------------------------
# In parts based on knotify.pl 0.1.1 by Hugo Haas
# http://larve.net/people/hugo/2005/01/knotify.pl
# which is based on osd.pl 0.3.3 by Jeroen Coekaerts, Koenraad Heijlen
# http://www.irssi.org/scripts/scripts/osd.pl
#
# Other parts based on notify.pl from Luke Macken
# http://fedora.feedjack.org/user/918/
#
#--------------------------------------------------------------------

# Please set the variables (don't forget to escape "\" the "@" symbol like the example)
my $EMAIL = "tu_correo_electronico\@xxxxx.com";
my $SSMTP = "/usr/sbin/ssmtp";

#--------------------------------------------------------------------
# Private message parsing
#--------------------------------------------------------------------

sub priv_msg {
        my ($server,$msg,$nick,$address,$target) = @_;
        filewrite($nick." " .$msg );
}

#--------------------------------------------------------------------
# Printing hilight's
#--------------------------------------------------------------------

sub hilight {
    my ($dest, $text, $stripped) = @_;
    if ($dest->{level} & MSGLEVEL_HILIGHT) {
        filewrite($dest->{target}. " " .$stripped );
    }
}
#--------------------------------------------------------------------
# The actual printing
#--------------------------------------------------------------------

sub filewrite {
        my ($text) = @_;
        # FIXME: there is probably a better way to get the irssi-dir...
        open(FILE,">>$ENV{HOME}/.irssi/fnotify");
        print FILE "\n" . $text . "\n";
        close (FILE);
        my $mail=`echo "Subject: IRSSI"|cat - $ENV{HOME}/.irssi/fnotify|$SSMTP $EMAIL`;
}

#--------------------------------------------------------------------
# Irssi::signal_add_last / Irssi::command_bind
#--------------------------------------------------------------------

Irssi::signal_add_last("message private", "priv_msg");
Irssi::signal_add_last("print text", "hilight");

#- end

y está es mi configuración /etc/ssmtp/ssmtp.conf

#
# Config file for sSMTP sendmail
#
# The person who gets all mail for userids < 1000
# Make this empty to disable rewriting.
root=xxxxxxxxxxxxxx@gmail.com
fzeta=xxxxxxxxxxxxx@gmail.com

# The place where the mail goes. The actual machine name is required no
# MX records are consulted. Commonly mailhosts are named mail.domain.com
mailhub=smtp.gmail.com:587

AuthUser=xxxxxxxxxx@gmail.com
AuthPass=xxxxxxxxxxxxxxxxx
UseSTARTTLS=YES
UseTLS=YES

# Where will the mail seem to come from?
rewriteDomain=

# The full hostname
hostname=xxxxxxxx.xxxxx.xxxx.com

# Are users allowed to set their own From: address?
# YES - Allow the user to specify their own From: address
# NO - Use the system generated From: address
FromLineOverride=YES

Estas configuraciones me costaron pero a la final lo conseguí (Y)

2. proxy_backlog.pl La función de esté script es salvar el buffer cuándo lancemos el irssi en nuestra máquina local.
Lo cargaremos previamente en el ~/.irssi/scripts/autorun en el irssi remoto y cuándo estemos en el irssi local sólo queda lanzar el comando:
/ctcp -proxy- IRSSIPROXY BACKLOG SEND
o añadir -autosendcmd para que rule de forma automática en cada red.
Quedaría así:
ejemplo:
/network add -autosendcmd "/ctcp -proxy- IRSSIPROXY BACKLOG SEND" freenode
Obviamente hay más scripts interesantes por ahí pero estos 2 son los más importantes para que nuestro IRSSIPROXY rule cómo Dios manda.

Guardamos todo esté tinglado y listo:
/save
MI CONFIG LOCAL


servers = (
  {
    address = "SHELLREMOTA";
    chatnet = "server1";
    port = "XXXXXX";
    password = "XXXXXXXXXX";
    use_ssl = "no";
    ssl_verify = "no";
    autoconnect = "yes";
  },
  {
    address = "SHELLREMOTA";
    chatnet = "server2";
    port = "XXXXXX";
    password = "XXXXXXXXX";
    use_ssl = "no";
    ssl_verify = "no";
    autoconnect = "yes";
  },
  {
    address = "SHELLREMOTA";
    chatnet = "server3";
    port = "XXXXXXX";
    password = "XXXXXXXXX";
    use_ssl = "no";
    ssl_verify = "no";
    autoconnect = "yes";
  },
  {
    address = "SHELLREMOTA";
    chatnet = "server4";
    port = "XXXXXXX";
    password = "XXXXXXXXX";
    use_ssl = "no";
    ssl_verify = "no";
    autoconnect = "yes";
  },
  {
    address = "SHELLREMOTA";
    chatnet = "server5";
    port = "XXXXXXX";
    password = "XXXXXXXXXX";
    use_ssl = "no";
    ssl_verify = "no";
    autoconnect = "yes";
  }
    address = "SHELLREMOTA";
    chatnet = "server6";
    port = "XXXXXXX";
    password = "XXXXXXXXXX";
    use_ssl = "no";
    ssl_verify = "no";
    autoconnect = "yes";
  }
);

chatnets = {
  SILC = { type = "SILC"; };
  server1 = {
    type = "IRC";
    autosendcmd = "/ctcp -proxy- IRSSIPROXY BACKLOG SEND";
  };
  server2 = {
    type = "IRC";
    autosendcmd = "/ctcp -proxy- IRSSIPROXY BACKLOG SEND";
  };
  server3 = {
    type = "IRC";
    autosendcmd = "/ctcp -proxy- IRSSIPROXY BACKLOG SEND";
  };
  server4 = {
    type = "IRC";
    autosendcmd = "/ctcp -proxy- IRSSIPROXY BACKLOG SEND";
  };
   server5 = {
    type = "IRC";
    autosendcmd = "/ctcp -proxy- IRSSIPROXY BACKLOG SEND";
  };
   server6 = {
    type = "IRC";
    autosendcmd = "/ctcp -proxy- IRSSIPROXY BACKLOG SEND";
  };
};

channels = ( );
aliases = {
  J = "join";
  WJOIN = "join -window";
  WQUERY = "query -window";
  LEAVE = "part";
  BYE = "quit";
  EXIT = "quit";
  SIGNOFF = "quit";
  DESCRIBE = "action";
  DATE = "time";
  HOST = "userhost";
  LAST = "lastlog";
  SAY = "msg *";
  WI = "whois";
  WII = "whois $0 $0";
  WW = "whowas";
  W = "who";
  N = "names";
  M = "msg";
  T = "topic";
  C = "clear";
  CL = "clear";
  K = "kick";
  KB = "kickban";
  KN = "knockout";
  BANS = "ban";
  B = "ban";
  MUB = "unban *";
  UB = "unban";
  IG = "ignore";
  UNIG = "unignore";
  SB = "scrollback";
  UMODE = "mode $N";
  WC = "window close";
  WN = "window new hide";
  SV = "say Irssi $J ($V) - http://irssi.org/";
  GOTO = "sb goto";
  CHAT = "dcc chat";
  RUN = "SCRIPT LOAD";
  CALC = "exec - if command -v bc >/dev/null 2>&1\\; then printf '%s=' '$*'\\; echo '$*' | bc -l\\; else echo bc was not found\\; fi";
  SBAR = "STATUSBAR";
  INVITELIST = "mode $C +I";
  Q = "QUERY";
  "MANUAL-WINDOWS" = "set use_status_window off;set autocreate_windows off;set autocreate_query_level none;set autoclose_windows off;set reuse_unused_windows on;save";
  EXEMPTLIST = "mode $C +e";
  ATAG = "WINDOW SERVER";
  UNSET = "set -clear";
  RESET = "set -default";
  kickban = "ban $0 ; kick $0 $1- ;";
  ame = "foreach channel";
  onotice = "notice @$C (ops:#) $0-";
  deopme = "say fzeta@$C~# exit ; /mode $C +v-o fzeta fzeta;";
  deofme = "say fzeta~$C~# exit ; /mode $C -qo+v fzeta fzeta;";
  aop = "msg chan op $C fzeta";
  autoop = "msg chanserv op $C fzeta";
};

statusbar = {
  # formats:
  # when using {templates}, the template is shown only if it's argument isn't
  # empty unless no argument is given. for example {sb} is printed always,
  # but {sb $T} is printed only if $T isn't empty.

  items = {
    # start/end text in statusbars
    barstart = "{sbstart}";
    barend = "{sbend}";

    topicbarstart = "{topicsbstart}";
    topicbarend = "{topicsbend}";

    # treated "normally", you could change the time/user name to whatever
    time = "{sb $Z}";
    user = "{sb {sbnickmode $cumode}$N{sbmode $usermode}{sbaway $A}}";

    # treated specially .. window is printed with non-empty windows,
    # window_empty is printed with empty windows
    window = "{sb $winref:$tag/$itemname{sbmode $M}}";
    window_empty = "{sb $winref{sbservertag $tag}}";
    prompt = "{prompt $[.15]itemname}";
    prompt_empty = "{prompt $winname}";
    topic = " $topic";
    topic_empty = " Irssi v$J - http://www.irssi.org";

    # all of these treated specially, they're only displayed when needed
    lag = "{sb Lag: $0-}";
    act = "{sb Act: $0-}";
    more = "-- more --";
  };

  # there's two type of statusbars. root statusbars are either at the top
  # of the screen or at the bottom of the screen. window statusbars are at
  # the top/bottom of each split window in screen.
  default = {
    # the "default statusbar" to be displayed at the bottom of the window.
    # contains all the normal items.

    # statusbar to use in inactive split windows
    window_inact = {
      type = "window";
      placement = "bottom";
      position = "1";
      visible = "inactive";
      items = {
        barstart = { priority = "100"; };
        window = { };
        window_empty = { };
        more = { priority = "-1"; alignment = "right"; };
        barend = { priority = "100"; alignment = "right"; };
      };
    };
    # we treat input line as yet another statusbar :) It's possible to
    # add other items before or after the input line item.
    prompt = {
      type = "root";
      placement = "bottom";
      # we want to be at the bottom always
      position = "100";
      visible = "always";
      items = {
        prompt = { priority = "-1"; };
        prompt_empty = { priority = "-1"; };
        # treated specially, this is the real input line.
        input = { priority = "10"; };
      };
    };

    # topicbar
    topic = {
      type = "root";
      placement = "top";
      position = "1";
      visible = "always";
      items = {
        topicbarstart = { priority = "100"; };
        topic = { };
        topic_empty = { };
        topicbarend = { priority = "100"; alignment = "right"; };
      };
    };
    awl_0 = {
      items = {
        barstart = { priority = "100"; };
        awl_0 = { };
        barend = { priority = "100"; alignment = "right"; };
      };
    };
    awl_1 = {
      items = {
        barstart = { priority = "100"; };
        awl_1 = { };
        barend = { priority = "100"; alignment = "right"; };
      };
    };
  };
};
settings = {
  core = {
    real_name = "fzeta";
    user_name = "fzeta";
    nick = "fzeta";
    recode_out_default_charset = "ISO-8859-15";
    recode_autodetect_utf8 = "yes";
    recode_fallback = "CP1252";
    timestamp_format = "%H:%M:%S";
  };
  "fe-text" = { actlist_sort = "refnum"; };
  "fe-common/core" = {
    term_charset = "UTF-8";
    theme = "defacto.theme";
    beep_msg_level = "MSGS NOTICES INVITES DCC DCCMSGS HILIGHT";
    bell_beeps = "yes";
  };
  "perl/core/scripts" = {
    awl_shared_sbar = "OFF";
    awl_block = "-20";
    spell_dict = "es_ES";
    beep_cmd = "play -q ~/.irssi/scripts/beep-08b.wav -t alsa &";
  };
  "irc/core" = {
    ctcp_userinfo_reply = "Vete a la mierda!! Quieres joderme no? comete está 8=========D";
  };
};
hilights = (
  { text = "fzeta"; nick = "yes"; word = "yes"; }
);
keyboard = (
  { key = "meta2-P"; id = "command"; data = "nicklist scroll -1"; },
  { key = "meta2-Q"; id = "command"; data = "nicklist scroll +1"; },
  { key = "meta-p"; id = "change_window"; data = "20"; },
  { key = "meta-s"; id = "change_window"; data = "21"; },
  { key = "meta-d"; id = "change_window"; data = "22"; },
  { key = "meta-f"; id = "change_window"; data = "23"; },
  { key = "meta-g"; id = "change_window"; data = "24"; },
  { key = "meta-h"; id = "change_window"; data = "25"; },
  { key = "meta-j"; id = "change_window"; data = "26"; },
  { key = "meta-k"; id = "change_window"; data = "27"; },
  { key = "meta-l"; id = "change_window"; data = "28"; },
  { key = "meta-ñ"; id = "change_window"; data = "29"; },
  { key = "meta-z"; id = "change_window"; data = "30"; }
);
logs = { };
ignores = (
  { mask = "fractal"; level = "ALL"; },
  { level = "ALL"; channels = ( "#USA" ); }
);

Mis scripts locales                                     Mis scripts remotos
aspell_complete.pl                                        proxy_backlog.pl
awl.pl                                                               fnotify.pl
beep_beep.pl                                                 awayproxy.pl
hilightwin.pl                                                     screen_away.pl
showhilight.pl                                              
trackbar.pl                                                  

MI CONFIG REMOTO

servers = (
  {
    address = "server1";
    chatnet = "xxxxxxxxx";
    port = "xxxxxx";
    password = "xxxxxxx";
    use_ssl = "yes";
    ssl_verify = "no";
    autoconnect = "yes";
  },
  {
    address = "server2";
    chatnet = "xxxxxxx";
    port = "xxxxxx";
    password = "xxxxxxx";
    use_ssl = "yes";
    ssl_verify = "no";
    autoconnect = "yes";
  },
  {
    address = "server3";
    chatnet = "xxxxxxxx";
    port = "xxxxxxx";
    password = "xxxxxxxxxxx";
    use_ssl = "no";
    ssl_verify = "no";
    autoconnect = "yes";
  },
  {
    address = "server4";
    chatnet = "xxxxxxxxx";
    port = "xxxxxx";
    password = "xxxxxxxxxx";
    use_ssl = "yes";
    ssl_verify = "no";
    autoconnect = "yes";
  },
  {
    address = "server5";
    chatnet = "xxxxxxxxx";
    port = "xxxxxx";
    password = "xxxxxxxxxx";
    use_ssl = "no";
    ssl_verify = "no";
    autoconnect = "yes";
   },
  {
    address = "server6";
    chatnet = "xxxxxxxxx";
    port = "xxxxxx";
    password = "xxxxxxxxxx";
    use_ssl = "no";
    ssl_verify = "no";
    autoconnect = "yes";
  }
);

chatnets = {
  SILC = { type = "SILC"; };
  server1 = {
    type = "IRC";
    autosendcmd = "/msg NickServ IDENTIFY xxxxxxxxxx ;wait 2000";
  };
  server2 = {
    type = "IRC";
    autosendcmd = "/msg NickServ IDENTIFY xxxxxxxxxx ;wait 2000";
  };
  server3 = {
    type = "IRC";
    autosendcmd = "/msg NickServ IDENTIFY xxxxxxxxx ;wait 2000";
  };
  server4 = { type = "IRC"; };
  };
  server5 = { type = "IRC"; };
  };
  server6 = { type = "IRC"; };
};

channels = ( );

aliases = {
  J = "join";
  WJOIN = "join -window";
  WQUERY = "query -window";
  LEAVE = "part";
  BYE = "quit";
  EXIT = "quit";
  SIGNOFF = "quit";
  DESCRIBE = "action";
  DATE = "time";
  HOST = "userhost";
  LAST = "lastlog";
  SAY = "msg *";
  WI = "whois";
  WII = "whois $0 $0";
  WW = "whowas";
  W = "who";
  N = "names";
  M = "msg";
  T = "topic";
  C = "clear";
  CL = "clear";
  K = "kick";
  KB = "kickban";
  KN = "knockout";
  BANS = "ban";
  B = "ban";
  MUB = "unban *";
  UB = "unban";
  IG = "ignore";
  UNIG = "unignore";
  SB = "scrollback";
  UMODE = "mode $N";
  WC = "window close";
  WN = "window new hide";
  SV = "say Irssi $J ($V) - http://irssi.org/";
  GOTO = "sb goto";
  CHAT = "dcc chat";
  RUN = "SCRIPT LOAD";
  CALC = "exec - if command -v bc >/dev/null 2>&1\\; then printf '%s=' '$*'\\; echo '$*' | bc -l\\; else echo bc was not found\\; fi";
  SBAR = "STATUSBAR";
  INVITELIST = "mode $C +I";
  Q = "QUERY";
  "MANUAL-WINDOWS" = "set use_status_window off;set autocreate_windows off;set autocreate_query_level none;set autoclose_windows off;set reuse_unused_windows on;save";
  EXEMPTLIST = "mode $C +e";
  ATAG = "WINDOW SERVER";
  UNSET = "set -clear";
  RESET = "set -default";
  kickban = "ban $0 ; kick $0 $1- ;";
  ame = "foreach channel";
  onotice = "notice @$C (ops:#) $0-";
  deopme = "say fzeta@$C~# exit ; /mode $C +v-o fzeta fzeta;";
  deofme = "say fzeta~$C~# exit ; /mode $C -qo+v fzeta fzeta;";
  aop = "msg chan op $C fzeta";
  autoop = "msg chanserv op $C fzeta";
};

statusbar = {
  # formats:
  # when using {templates}, the template is shown only if it's argument isn't
  # empty unless no argument is given. for example {sb} is printed always,
  # but {sb $T} is printed only if $T isn't empty.

  items = {
    # start/end text in statusbars
    barstart = "{sbstart}";
    barend = "{sbend}";

    topicbarstart = "{topicsbstart}";
    topicbarend = "{topicsbend}";

    # treated "normally", you could change the time/user name to whatever
    time = "{sb $Z}";
    user = "{sb {sbnickmode $cumode}$N{sbmode $usermode}{sbaway $A}}";

    # treated specially .. window is printed with non-empty windows,
    # window_empty is printed with empty windows
    window = "{sb $winref:$tag/$itemname{sbmode $M}}";
    window_empty = "{sb $winref{sbservertag $tag}}";
    prompt = "{prompt $[.15]itemname}";
    prompt_empty = "{prompt $winname}";
    topic = " $topic";
    topic_empty = " Irssi v$J - http://www.irssi.org";

    # all of these treated specially, they're only displayed when needed
    lag = "{sb Lag: $0-}";
    act = "{sb Act: $0-}";
    more = "-- more --";
  };

  # there's two type of statusbars. root statusbars are either at the top
  # of the screen or at the bottom of the screen. window statusbars are at
  # the top/bottom of each split window in screen.
  default = {
    # the "default statusbar" to be displayed at the bottom of the window.
    # contains all the normal items.
    window = {
      disabled = "no";

      # window, root
      type = "window";
      # top, bottom
      placement = "bottom";
      # number
      position = "1";
      # active, inactive, always
      visible = "active";

      # list of items in statusbar in the display order
      items = {
        barstart = { priority = "100"; };
        time = { };
        user = { };
        window = { };
        window_empty = { };
        lag = { priority = "-1"; };
        act = { priority = "10"; };
        more = { priority = "-1"; alignment = "right"; };
        barend = { priority = "100"; alignment = "right"; };
      };
    };

    # statusbar to use in inactive split windows
    window_inact = {
      type = "window";
      placement = "bottom";
      position = "1";
      visible = "inactive";
      items = {
        barstart = { priority = "100"; };
        window = { };
        window_empty = { };
        more = { priority = "-1"; alignment = "right"; };
        barend = { priority = "100"; alignment = "right"; };
      };
    };

    # we treat input line as yet another statusbar :) It's possible to
    # add other items before or after the input line item.
    prompt = {
      type = "root";
      placement = "bottom";
      # we want to be at the bottom always
      position = "100";
      visible = "always";
      items = {
        prompt = { priority = "-1"; };
        prompt_empty = { priority = "-1"; };
        # treated specially, this is the real input line.
        input = { priority = "10"; };
      };
    };

    # topicbar
    topic = {
      type = "root";
      placement = "top";
      position = "1";
      visible = "always";
      items = {
        topicbarstart = { priority = "100"; };
        topic = { };
        topic_empty = { };
        topicbarend = { priority = "100"; alignment = "right"; };
      };
    };
  };
};
settings = {
  core = {
    real_name = "fzeta";
    user_name = "fzeta";
    nick = "fzeta";
    recode_fallback = "CP1252";
    recode_out_default_charset = "ISO-8859-15";
  };
  "fe-text" = { actlist_sort = "refnum"; };
  "irc/core" = { alternate_nick = "fzeta"; };
  "perl/core/scripts" = { spell_dict = "es_ES"; };
  "fe-common/core" = {
    theme = "defacto.theme";
    bell_beeps = "no";
    beep_msg_level = "MSGS DCC DCCMSGS HILIGHT NOTICES";
  };
  proxy = {
    irssiproxy_password = "XXXXXXXXXXX";
    irssiproxy_ports = "server1=xxxxxxxx server2=xxxxxxx server3=xxxxxxx server4=xxxxxxxx server5=xxxxxxxx server6=xxxxxxxx";
  };
};
keyboard = (
  { key = "meta2-P"; id = "command"; data = "nicklist scroll -1"; },
  { key = "meta2-Q"; id = "command"; data = "nicklist scroll +1"; },
  { key = "meta-p"; id = "change_window"; data = "20"; },
  { key = "meta-s"; id = "change_window"; data = "21"; },
  { key = "meta-d"; id = "change_window"; data = "22"; },
  { key = "meta-f"; id = "change_window"; data = "23"; },
  { key = "meta-g"; id = "change_window"; data = "24"; },
  { key = "meta-h"; id = "change_window"; data = "25"; },
  { key = "meta-j"; id = "change_window"; data = "26"; },
  { key = "meta-k"; id = "change_window"; data = "27"; },
  { key = "meta-l"; id = "change_window"; data = "28"; },
  { key = "meta-ñ"; id = "change_window"; data = "29"; },
  { key = "meta-z"; id = "change_window"; data = "30"; }
);
logs = { };
hilights = ( { text = "fzeta"; nick = "yes"; word = "yes"; } );
ignores = (
  { mask = "fractal"; level = "ALL"; },
  { level = "ALL"; channels = ( "#USA" ); }
);

Estupendo!
A partir de ahora ya podemos entrar desde nuestro querido (irssi-local) al nuestro (irssi-remoto).
O como ya había dicho antes, lo podemos hacer desde cualquier otro cliente IRC. (Y)

DESDE ANDRIOD USANDO ANDCHAT


See you later!













2 comentarios:

  1. Genial! Sabes lo que pasa? Es que explicas muy bien colega! Es un gran aporte.

    ResponderEliminar