% ============================================================== % TRUCS DE VIEUX \chapter{Trucs de dino} \label{chap:dino} Je vais, dans ce chapitre, parler de choses que les moins de vingt ans ne peuvent pas connaitre. Des choses qui existaient \textsl{bien avant} le Web\index{www}, et pour lesquelles on peut facilement imaginer des usages alternatifs et amusants ! % ============================================================== \section{inetd} \index{inetd}\label{inetd} Aussi connu sous le nom de « superserveur Internet », ce démon a fait ses premiers pas dans l'Unix 4.3BSD et depuis est maintenant remplacé par \texttt{xinetd}\index{xinetd}, décrit en page \pageref{xinetd}, lequel a peut-être été déja supplanté par un truc qui est \textit{plus nouveau}. % --> https://0pointer.de/blog/projects/inetd.html Inetd a pour but de gérer l'accès à des services réseaux, qui peuvent être internes ou externes. Un service interne est entièrement géré par Inetd : on y trouve par exemple \textsl{daytime} qui permet de connaitre l'heure qu'il est à l'autre bout du monde : \begin{verbatim} tth@plop:~$ grep daytime /etc/inetd.conf daytime stream tcp nowait root internal tth@plop:~$ nc uind.cispeo.fr daytime 29 JUL 2014 21:10:30 CEST \end{verbatim} Dans ce cas, c'est directement Inetd qui répond. Mais il sait faire une autre chose, bien plus constructive : toujours répondre à un appel venant du grand Ternet, mais maintenanr nous allons déléguer le traitement de la demande à un autre participant. Il ne reste plus qu'à le mettre en œuvre, en réutilisant un exemple très ancien\footnote{Août 1998, lors d'une réunion du CULTe, à Toulouse}, et très simple à comprendre. Dans notre cas, inetd sera à l'écoute sur un port tcp. Dès qu'une demande de connection arrive, il accepte la connection, lance le process configuré, puis connecte ce qui vient du socket au \textsl{stdin} de ce process, et le \textsl{stdout} de celui-ci à la sortie vers l'extérieur. % Voir aussi : tcpserver\index{tcpserver}\dots % --------------------------------------------------------- \subsection{qotd} \index{qotd} \label{qotd} Le protocole « Quote Of The Day » (\texttt{qotd}) a été normalise dans le \texttt{rfc865}, écrit en 1983 par John Postel. Une rapide implémentation du moteur de quote peut être codée avec quelques lignes de shell~: \index{fortune} \lstinputlisting[language=sh]{code/inet/qotd.sh} Maintenant, il nous faut dire à Inetd d'appeler ce moteur chaque fois qu'une connection tcp entrante arrive sur le port 17 (ce numéro du service est défini dans le fichier \texttt{/etc/services}). XXX\index{XXX} Et pour les modernistes qui utilisent \texttt{xinetd}\index{xinetd} les explications sont en page \pageref{xinetd:qotd}. % ============================================================== % % https://www.bortzmeyer.org/1288.html % \section{Finger} \index{finger} \label{finger} \textbf{finger} — user information lookup program Sur le port 79/tcp. https://tools.ietf.org/html/rfc1288 https://www.bortzmeyer.org/1288.html % ============================================================== \section{Gopher} \index{gopher} Sur le port 70/tcp. \begin{quote} The Internet Gopher(tm) software and documentation is copyright (c) 1991, 1992, 1993, 1994 by the University of Minnesota. \end{quote} % ==============================================================