[technique] Pb socket dans un cgi.

Albert ARIBAUD albert.aribaud at free.fr
Jeu 8 Avr 09:31:34 CEST 2021


Le jeudi 08 avril 2021 à 07:56 +0200, jlp via technique a écrit :
> Bonjour.
> Pb socket dans un cgi.
> Un programme (écrit en C) est exécuté comme service, on le sollicite
> via
> socket.
> Pour rendre ce service accessible par web, un cgi (écrit en C) ouvre
> une
> socket pour solliciter le service, reçoit les réponses, fait son taf
> de cgi.
> Si le service et le serveur web (lighttpd) sont sur deux machines
> différentes (des RPi), tout fonctionne bien.
> Si tout se passe sur la même machine (ce qui est le but) le service
> accepte bien la connexion socket mais aucune donnée n'est transmise.
> Sûrement un problème de droits d'écriture dans un tube nommé (socket
> en
> local) par le cgi tournant en www-data ?
> Je n'ai jamais (pas encore) utilisé le fast-cgi et ce n'est pas mon
> objectif ici, mais un expert en la chose devrait facilement me
> proposer
> une solution, non ?
> Merci pour vos retours, prenez soin de vous,
> JLP.

Bonjour,

Il faudrait plus de précision, mais déjà : si ça marche quand le
service et le serveur web sont sur des machines différentes, c'est
qu'on parles de sockets réseau, pas de pipes nommés, non ? À moins que
le service n'ouvre à la fois une écoute par socket réseau *et* par pipe
?

Et en supposant que ce n'est que du socket réseau, alors si ça marche
en "distanciel" et pas en "présentiel" (...) c'est peut-être simplement
une question de configs comparées serveur / client, et/ou de règles de
pare-feu réseau

Un des premiers essais que je ferais serait, dans la config
"présentielle", de lancer en tant que root un "ss -lntp" pour voir sur
quelle IP le service écoute.

Si c'est 0.0.0.0 => à part que c'est trop large vu que ça écoute sur
toutes les interfaces, ça devrait tout de même fonctionner et je
passerais au firewall.

Idem si c'est 127.0.0.1 *et* ::1 : ça doit fonctionner et je
regarderais le firewall.

Si c'est *seulement* 127.0.0.1 => je vérifierais si le serveur web
n'essaierait pas de joindre localhost, qui peut certes résoudre en
127.0.0.1 mais aussi en ::1, et dans ce second cas, ça ne
fonctionnerait pas.

Amicalement,
Albert.




Plus d'informations sur la liste de diffusion technique