Aller au contenu

Irssi + Screen


Mikaoioi

Messages recommandés

Bonjour tt le monde.

Je vais essayer de vous décrire l'installation et la configuration du couple IRSSI / SCREEN.

- IRSSI est un client IRC en CLI pour Linux. Il dispose d'une communauté très active, et d'une prise en charge de scripts afin d'y inclure de nouvelles possibilités que ce soit pour son utilisation, configuration, nouvelles fonctionnalités ou apparence.

- SCREEN permet quant à lui de pouvoir ouvrir plusieurs terminaux dans une même console, de switch de l'un à l'autre, de les faire tourner en fond pour ensuite les récupérer, voire même de partager un terminal avec un autre user.

  • Utilité :

Vous me direz : "Installer un client irc sur un syno... mais pourquoi faire ?"

Alors, si vous êtes un habitué d'irc, vous avez certainement votre petite idée la dessus.
Sinon, pour faire simple, cela permet d'avoir un client irc à portée de main sans pour autant en avoir un sur votre PC.
De pouvoir y accéder de n'importe où (si vous syno est ouvert sur l'extérieur).
De pouvoir rester connecté sans interruption.

Mais le plus intéressant et le réel but de cette manœuvre, c'est d'utiliser la fonction proxy de IRSSI.
Lorsque que je me reconnecte la fois d'après, il peut même me faire parvenir les messages que j'ai eu (via un script, on verra cela plus tard).
Cela permet de se connecter, via un autre client irc, à tous vos réseaux et chans par le biais de IRSSI, qui fait alors proxy.

Pour exemple dans mon cas :

IRSSI tourne sur le syno, et est connecté à mes réseaux et chans souhaités.
Depuis mon client irc windows, mIrc par exemple, je peux me connecter au syno via un port spécifique, et tous mes réseaux et chans s'ouvrent automatiquement ;)
Si je ferme mIrc, IRSSI reste connecté, de facon transparente (il agira à la manière d'un bouncer pour les connaisseurs).
Ce proxy peut aussi me permettre de multiplier les connexions, je pourrai très bien avoir mon client mIrc d'ouvert à la maison et en même être au boulot, connecté sur IRSSI via une console SSH sur mon syno ou via un autre client graphique.


==========================================================================================

Niveau : Débutant - Connaissances de base côté console Linux
Difficulté : Facile
Risque : aucun connu...
(pensez à désactiver l'hibernation des disques si IRSSI doit tourner en permanence)
Testé sur DS107+ R2 / Firmware 942

==========================================================================================

  • Prérequis :

- Accès console

- bootstrap - IPKG

- Editeur de texte (vi, nano)

- PERL (à installer via IPKG)

Il faut se connecter en root sur votre syno, puis :

Commencons par mettre à jour IPKG :

ipkg update
Important : Je vais rester connecté en ROOT pour faire tout le reste. Tout ce qui va suivre se fera dans le répertoire de l'utilisateur connecté : ~/user . Pour root cela sera donc /root ==========================================================================================
  • Installation :
SCREEN :
ipkg install screen
IRSSI :
ipkg install irssi
Et PERL si ce n'est déjà fait :
ipkg install perl
Avant de ne lancer quoi que ce soit, on va se faciliter la vie pour l'utilisation du couple irssi + screen. On va utiliser un alias et le script suivant, afin de lancer automatiquement irssi dans un screen. Déplacez-vous dans le dossier /root. Tout sera fait dans ce dossier là. Créez un fichier nommé "irssiscr" :
nano irssiscr
Et insérez le code suivant :
#!/bin/sh

# Run/Load IRC Script

# This script runs irssi in screen if it has not already been done.

# If irssi in screen is already running, it will then attach to

# the irc screen session for you.

if screen -ls | egrep '^[[:space:]]+[^[:space:]]' | awk '{print $1}' | egrep '.irc$'

then # running

screen -x irc

else # not running

screen -c ~/.screenrc.irc -S irc -t irssi irssi

fi
Il faut lui donner les droits d'exécution :
chmod 0754 irssiscr
Puis on va configurer un screen spécial pour IRSSI : Créez un fichier ".screenrc.irc" :
nano .screenrc.irc
et insérez ceci :
# detach on hangup

autodetach on

# multiusers

multiuser on

# no copyright notice during startup

startup_message off

# remove some bad bindings

bind k #kill

bind ^k #kill

bind . # dump termcap

bind ^h # hardcopy

bind h # hardcopy

bind A # title (clashes with vim's increment)


# don't use the hardstatus line for system messages, use reverse video instead

# # (we'll be using it for the list of tab windows - see hardstatus alwayslastline

# # below)

hardstatus off

hardstatus alwayslastline "%{= bW} %-Lw%{=b BR} %n%f %t %{-}%+Lw %-024=%{+b} %c %D %d %M %Y%=%{= dd}"
Il nous ne reste plus qu'à faire notre alias.
nano /etc/profile
et ajoutez la ligne suivante à la fin :
alias irc=~/irssiscr
Validez, sauvegardez. Grâce à tout cela, on aura plus qu'à taper "irc" (sans les guillemets) pour que se lance irssi dans un screen. L'astuce va un poil plus loin : si on oublie qu'on avait déjà un screen de lancé, en tapant "irc" nous allons rattacher ce screen, et continuer notre session ;) ==========================================================================================
  • Utilisation et configuration de irssi :
Pour commencer, des infos : tout ce qui concerne irssi se trouve dans le dossier ~/.irssi (ou /root/.irssi si vous préférez, c'est la même chose) Fichier de conf, thèmes, logs, script, etc.
  • On va créer deux dossiers qui nous servirons par la suite :
cd .irssi/

mkdir scripts

mkdir scripts/autorun
Nous pouvons tester le bon fonctionnement de l'installation en lançant IRSSI, avec la commande "irc". Si tout est ok, il va falloir passer à la configuration ! Je vais vous décrire les étapes importantes, à vous ensuite d'aller voir les docs et aides sur le site officiel de IRSSI pour paufiner le tout ;)
  • Vous attribuez un nick (un pseudo), définir les real name, user name et alternate nick :
/set nick mikaoioi

/set real_name mikaoioi

/set user_name mikaoioi

/set alternate_nick mikaoioi2
Note : seuls les nick et alternate_nick sont importants, les autres sont facultatifs. Ils n'apparaitront que si qq'un vous whois (demande d'info d'un user).
  • On va ensuite ajouter le réseau à joindre :
/server add -network exemple irc.exemple.org 6667 
Note : L'argument "-network nom_du_réseau_qu'on_veut" est important, veillez à ne pas l'oublier. Vous pouvez vous connecter au serveur, s'il le supporte, en SSL, en changeant le port et en rajoutant l'argument -ssl. Si vous avez un nick d'enregistré sur le serveur, vous le rajouterez à la fin de la ligne. Si vous voulez joindre le serveur automatiquement au lancement de IRSSI, ajoutez l'argument -auto. Par exemple, pour joindre en auto le réseau ou se trouve le channel de nas-forum et avec un nick enregistré, la commande serait :
/server add -auto -network recycled irc.recycled-irc.net 6667 super_mot_de_passe
  • Enfin, pour joindre un channel en auto à la connection au serveur irc :
/channel add -auto #exemple exemple
Pour le channel de nas-forum, cela donnerait :
/channel add -auto #nas-forum recycled
Sinon un simple « /join #nas-forum » suffira une fois connecté au serveur... ... Vous pouvez désormais vous connecter ! Deux méthodes : - en quittant (avec /quit ou /bye) et relançant irssi. - en utilisant la commande :
/connect exemple

Vous pouvez, avec IRSSI, joindre autant de serveurs irc et de channels que vous voulez, ils s'ouvriront à chaque fois dans une "sous-fenêtre" différente.

Cad que vous resterez dans la même instance de screen, mais aurez plusieurs fenêtre à l'intérieur même de IRSSI ;)

Pour switcher d'une fenêtre à l'autre, utilisez ALT+droite ou ALT+gauche (les fleches de votre clavier), ou ALT+n et ALT+p (next/previous)

Si vous souhaitez détacher votre screen, afin qu'il continue de tourner en tâche de fond, faites CTRL+A-D (CTRL et A en mm temps maintenus puis D).

Vous verrez sur votre console [detached].

Vous verrez également qq chose au-dessus, du style 23852.irc : il s'agit du PID du screen lancé (utile si jamais ca plante, pour le kill sans avoir à chercher par exemple...)

==========================================================================================

Voilà, la première partie s'arrête là !

A savoir que même si j'ai détaillé pas mal d'étapes, il manque beaucoup de choses.

Mais si cela vous intéresse, c'est que vous en avez l'utilité, et que peut-être vous avez des bases la dedans !

Donc je ne me fais pas de souci pour vous, vous trouverez très bien ce qu'il vous faut pour personnaliser tout ca :)

La prochaine étape : utilisation du proxy de IRSSI :)

(la je suis trop fatigué d'écrire pour m'y mettre de suite :P)

==========================================================================================

Sources :

http://irssi.org/ (site officiel)

http://quadpoint.org/articles/irssi (Excellent guide sur l'utilisation (basique) du couple IRSSI/SCREEN)

http://germ.wordpres...si-load-script/

Remerciements :

Nas-Forum pour cet excellent espace d'échanges !

Phi pour les corrections.

Lien vers le commentaire
Partager sur d’autres sites

Fonction proxy : IRSSI-Proxy

  • Rappel des faits :

IRSSI tourne sur le syno, et est connecté à mes réseaux et chans souhaités.
Depuis mon client irc windows, mIrc par exemple, je peux me connecter au syno via un port spécifique, et tous mes réseaux et chans s'ouvrent automatiquement ;)
Si je ferme mIrc, IRSSI reste connecté, de facon transparente.
Ce proxy peut aussi me permettre de multiplier les connexions, je pourrai très bien avoir mon client mIrc d'ouvert à la maison et en même être au boulot, connecté sur IRSSI via une console SSH sur mon syno ou via un autre client graphique.

Grâce aux manips décrites ci-dessous, votre syno, non content d'être un relais grâce auquel vous aurez accès à un client IRC de n'importe où, sans en avoir un sous la main, il va aussi se comporter comme un véritable bouncer :)


  • Pour la mise en place, c'est assez simple.

IRSSI est lancé, et nous sommes dessus en console.

On charge le module proxy :

/load proxy
Vous verrez alors s'afficher les mises en garde suivantes :
Warning!! Password not specified, everyone can use this proxy! Use /set irssiproxy_password <password> to set it

Warning: No proxy ports specified. Use /SET irssiproxy_ports <ircnet>=<port> <ircnet2>=<port2> ... to set them.
Comme indiqué, il faut spécifier un mot de passe d'accès au proxy ainsi qu'un port :
/set irssiproxy_password super_MDP

/set irssiproxy_ports exemple=2650
Vous pouvez spécifier le port que vous voulez pour le serveur. L'obligation à respecter est de garder le nom du "network" que l'on a défini. Comme dit dans l'avertissement, vous pouvez définir plusieurs ports, un pour chaque réseau. Votre proxy est désormais opérationnel :) Pour pousser un peu plus loin la configuration, c'est facultatif mais fortement recommandé, voilà quelques étapes supplémentaires. Important : Vous pourrez indiquer à IRSSI l'interface à écouter. Si vous souhaitez que tout soit absolument verrouillé, vous pouvez définir la valeur (pertinente) suivante :
/set irssiproxy_bind 127.0.0.1
Ainsi, le proxy n'écoutera que sur l'interface locale. Le seul moyen d'y accéder sera alors d'être comme présent sur la machine, en utilisant un tunnel SSH par exemple. Pour ma part je n'ai pas défini cette fonction, car je m'y connecte depuis une autre machine, et mon syno n'est pour le moment pas accessible de l'exterieur. J'ai bien essayé de définir une valeur sous la forme "/set irssiproxy_bind 192.168.x.x", mais pour une raison inconnue ca ne fonctionne pas... peut-être côté pare feu de ma machine cliente... Je n'ai pas réellement approfondi pour autant, donc si chez vous ca fonctionne sous cette forme, merci de m'en faire part :P
  • Parlons un peu de scripts maintenant :
Comme je vous le disais, beaucoup de scripts sont dispo pour ajouter de nouvelles fonctionnalités à IRSSI, et notamment au proxy. Je vous recommande chaudement l'utilisation du script awayproxy. Il vous permettra, maintenant qu'IRSSI tourne en continu sur votre syno, d'effectuer un certain nombre de choses pour vous : - Vous mettre automatiquement "away" quand personne n'est connecté au proxy, et enlève ce status "away" dès lors que vous vous y reconnectez (je précise, sans balancer de message à tout va sur les channels pour dire que vous êtes parti... agaçant.) - Indiquer aux personnes qui vous parle en privé que vous n'êtes pas là (via notice). - Vous remontez les messages privés qu'on laisse ou si on vous "highlight", sous différentes formes : sur votre client IRC quand vous vous reconnectez, et/ou par mail. Usefull ! ;)
  • Les étapes de mises en place :
- Récupérer le script :
cd /root/.irssi/scripts/autorun/

wget http://scripts.irssi.org/scripts/awayproxy.pl
- Modifier le script pour choisir le type de notification :
nano awayproxy.pl
Et chercher "script_mode" (ligne 94) pour le définir : 0 pour message + mail, 1 pour mail seulement, 2 pour messages IRC seulement, 3 pour désactiver la notification. Si vous choisissez par mail, n'oubliez pas de définir les valeurs des suivantes (pas testé, pas d'infos !) Je vous dirige vers ce paramètre car par défaut il est sur 1, assez embêtant comme choix mais bon... --> Vous pouvez approfondir quelque peu la configuration, tout ce passe des lignes 71 à 106, et tout y est expliqué ! On va désormais voir si le script se lance bien. Note : pour que le script fonctionne, il faut bien sûr que le proxy soit lancé ! Retournez dans IRSSI pour cela (avec la commande "irc" je vous le rappelle ;)) et chargez le module :
/script load autorun/awayproxy.pl
Si vous n'avez pas d'erreurs, il vous indiquera simplement qu'il a chargé le module :) Si vous avez une erreur du type :
-!- Irssi: Error in script awayproxy:


Can't locate Irssi.pm in @INC (@INC contains: /root/.irssi/scripts (...)
Alors c'est que vous n'avez peut-être pas installé PERL... regardez de ce côté là.
  • Pour finir,
il est nécessaire de préciser que ce script, s'il est dans le dossier autorun/, sera lancé automatiquement au démarrage de IRSSI. Si c'est ce que vous voulez, il faut aussi faire en sorte de lancer le proxy automatiquement... Pour cela, il faut créer un fichier de démarrage nommé "startup" :
cd /root/.irssi/

nano startup
Et y indiquer la valeur suivante dedans :
/load proxy

Bingo, si vous fermez et relancez IRSSI, le proxy ainsi que le script awayproxy se chargeront bien gentiment ^^

Vous êtes désormais parés pour l'aventure !

(faut le dire vite :P)

==========================================================================================

Sources :

http://irssi.org/documentation/proxy

http://scripts.irssi.org/html/awayproxy.pl.html

Lien vers le commentaire
Partager sur d’autres sites

  • FAQ :

- Faire des modifications de configuration.

Si vous faites des modifications de configuration dans IRSSI, ces modifications seront inscrites dans le fichier ~/.irssi/config

Bien que ces modifs soient actives de suite, elles ne sont pas pour autant sauvegarder dans le fichier de conf imm

Lien vers le commentaire
Partager sur d’autres sites

  • 1 mois après...
  • 3 mois après...

Génial ca semble bien fonctionner :)

quelques petites questions :

- niveau proxy,quand on met l'option pour les messages à 0 (mail + retour), comment parametre-t-on lenvoie de mail ? Apparement le script utilise sendmail mais sendmail n'est pas sur le NAS, je vois pas bien comment ca peut fonctionner

- niveau NAS, si il rédemarre, il faut se relogguer en ssh, et relancer irc, ou il va se relancer automatiquement ?

- niveau NAS tjs, vu que je ne peux pas faire un bind (je vais utiliser le proxy au moins depuis des PC chez moi, et depuis le boulot), je pensais jouer avec le firewall intégré

Quand je vais sur la partie gestion des regles, tout en bas apparait Si aucune règle n'est remplie: Autorisé

Pour l'instant ok logique, j'ai pas de regles. Si je crée une regle par exemple : ip source <ip externe de mon taf> vers port de mon proxy irc, autorisé, cela veut il dire que toutes les autres ip vers ce port seront automatiquement refusé ? Sinon comment faut il faire ?

- derniere question, niveau irssi tjs, j'avais cru comprendre qu'il y avait un moyen, dans le client avec lequel on se reconnecte au proxy, de recevoir tous les messages qui ont été echangé pendant que nous n'etions pas connecté. J'ai revé ? On est obligé de recuperer le screen du nas pour les lire ?

Merci de votre aide

Lien vers le commentaire
Partager sur d’autres sites

J'ai également un probleme pour me connecter depuis le boulot

J'ai rajouté le port sur la freebox, paramétré le serveur sur le pc au taf

Je lance la connexion, il me deconnecte instantanément

Coté irssi je vois bien la connexion arriver :

17:29 -!- Irssi: Proxy: Client connected from x.x.x.x

17:29 -!- Irssi: Proxy: Client disconnected from x.x.x.x

EDIT: en fait ca ne marche que depuis le mac (avec Colloquy), mIRC sur windows ne veut rien savoir, tant sur le PC du boulot, que sur un ordi portable sur le meme reseau que le mac (et donc derriere la freebox)

je comprends pas

Lien vers le commentaire
Partager sur d’autres sites

Triple post, sympa :lol:

Bon on t'en voudras pas, même si un edit de ton premier post aurait suffit :P

- niveau proxy,quand on met l'option pour les messages à 0 (mail + retour), comment parametre-t-on lenvoie de mail ? Apparement le script utilise sendmail mais sendmail n'est pas sur le NAS, je vois pas bien comment ca peut fonctionner

Sendmail est, je pense, sur le NAS. Pour utiliser cette fonction, il faut que ton serveur soit aussi serveur de messagerie.

C'est possible sur nos NAS grâce à mailstation (installé, paramétré et actif bien sûr).

Si tu l'as installé, il faudra changer le chemin de sendmail, en indiquant le chemin /usr/syno/mailstation/sbin/sendmail (ou qq chose comme ca, je n'ai pas le chemin exact et je n'ai jamais essayé à dire vrai) dans le script awayproxy, ligne "# sendmail location".

- niveau NAS, si il rédemarre, il faut se relogguer en ssh, et relancer irc, ou il va se relancer automatiquement ?

Si ton NAS redémarre, irssi ne se relancera pas automatiquement que je sache.

A mon avis il faudra rajouter qq chose dans /usr/syno/etc.defaults/rc.d/ afin que ce soit le cas.

Jamais testé non plus, à tes risques et périls (même si ca ne risque pas grd chose d'essayer à mon avis :P)

- derniere question, niveau irssi tjs, j'avais cru comprendre qu'il y avait un moyen, dans le client avec lequel on se reconnecte au proxy, de recevoir tous les messages qui ont été echangé pendant que nous n'etions pas connecté. J'ai revé ? On est obligé de recuperer le screen du nas pour les lire ?

Non, c'est possible. Comme je l'ai expliqué dans le tuto, il faut le faire avec le script awayproxy.

C'est d'ailleurs ce dont tu parles dans ta première question.

Si tu choisis un paramètre à 0 (email + notice) ou 2 (notice seulement), alors tu auras les "messages" qui t'étaient destinés en notice quand tu te reconnecteras au proxy avec ton client irc.

Regardes dans le script c'est détaillé ;)

J'espère avoir répondu à tes questions.

Lien vers le commentaire
Partager sur d’autres sites

Alors deja merci de ton aide ;)

Triple post, sympa :lol:

Bon on t'en voudras pas, même si un edit de ton premier post aurait suffit :P

C'est pour faire grossir ce topic et son tuto au combien génial :D

Ouais exact j'aurai pu éditer pardon

Sendmail est, je pense, sur le NAS. Pour utiliser cette fonction, il faut que ton serveur soit aussi serveur de messagerie.

C'est possible sur nos NAS grâce à mailstation (installé, paramétré et actif bien sûr).

Si tu l'as installé, il faudra changer le chemin de sendmail, en indiquant le chemin /usr/syno/mailstation/sbin/sendmail (ou qq chose comme ca, je n'ai pas le chemin exact et je n'ai jamais essayé à dire vrai) dans le script awayproxy, ligne "# sendmail location".

non apriori sendmail n'est pas d'origine sur le nas. En tout cas je ne l'ai trouvé nul part

Ok donc pour faire ca obligé d'installer mailstation, que je ne compte pas trop utilisé :/

Je pense a un truc, le NAS sait envoyé des mails deja (ex : les mails d'alerte en cas de panne disque). Pour cela on parametre son smtp (exemple dans mon cas, gmail)

Ce n'est pas possible de faire pareil pour les mails de awayproxy.pl ?

EDIT: apres mes premieres recherches, on peut installer via ipkg sendmail, mini-sendmail, nail ou esmtp pour faire ca

Si ton NAS redémarre, irssi ne se relancera pas automatiquement que je sache.

A mon avis il faudra rajouter qq chose dans /usr/syno/etc.defaults/rc.d/ afin que ce soit le cas.

Jamais testé non plus, à tes risques et périls (même si ca ne risque pas grd chose d'essayer à mon avis :P)

Ok

Non, c'est possible. Comme je l'ai expliqué dans le tuto, il faut le faire avec le script awayproxy.

C'est d'ailleurs ce dont tu parles dans ta première question.

Si tu choisis un paramètre à 0 (email + notice) ou 2 (notice seulement), alors tu auras les "messages" qui t'étaient destinés en notice quand tu te reconnecteras au proxy avec ton client irc.

Regardes dans le script c'est détaillé ;)

J'espère avoir répondu à tes questions.

ok je vais tester ca

Par contre ca ne concerne que les mails du type :

doumhfr: t'es la ?

Il n'est pas possible que le client irc récupere tous les echanges passés sur le chan pendant le temps ou aucun client n'etait connecté ?

Enfin ca claque sinon :D Je suis ravi de mon nouveau jouet. Reste 2-3 points a paufiner, et voir ce qu'on peut faire d'autres avec

Lien vers le commentaire
Partager sur d’autres sites

  • 1 mois après...

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer.