Script bash CGI / piklab-prog

Bonjour à tous,

Sous Debian Squeeze j’ai créé une petite interface pour programmer une carte à base de PIC18 (pour plus de convivialité en fait).
L’interface est réalisée à partir de scripts CGI écrits en scripts Shell.

Problème: piklab-prog ne fonctionne pas depuis l’interface web avec l’utilisateur www-data (ps axu => www-data).
Je sais que piklab-prog fonctionne puisque je peux programmer le PIC depuis le terminal “en manuel”. Certes avec l’utilisateur “test” créé pour se logger sous Debian.
L’utilisateur www-data fait partie du groupe microchip qui a tous les droits sur le device USB ICD2.
J’ai créé un répertoire /home/www-data et j’ai modifié en conséquence le “home directory” dans /etc/password. Mais rien n’y fait.

Le log ci-dessous est retourné par piklab-prog lors de son appel:

trying to create local folder /.kde: Permission denied
trying to create local folder /.kde: Permission denied
piklab-prog(2128): Session bus not found 

KCrash: Application 'piklab-prog' crashing...
Warning: $HOME not set!
Unable to start Dr. Konqi

Version de piklab installée:

test@debian:~$ piklab-prog -v
Qt: 4.6.3
KDE Development Platform: 4.4.5 (KDE 4.4.5)
Piklab Programmer Utility: 0.16.2

Quelqu’un aurait-il déjà fait la même manip ?
Ou bien le message éclaire-t-il un gourou de piklab ?

La solution est peut-être idiote mais je patauge depuis une bonne semaine. :119
Merci d’avance pour votre aide.

Bonjour,

Je n’y connais rien, mais visiblement il ne trouve par le $HOME pour y créer un répertoire .kde.

Question bête : ton application marche depuis une vraie console (sans X) ? (ctrl+alt+F1 par exemple) Elle semble nécessiter des librairies kde/Qt.

Si oui, alors il faut que tu regardes comment gérer les variables d’environnement dans ton serveur web pour passer $HOME = /home/www-data ou équivalent, déjà pour voir.

Enfin, ce ne sont que quelques pistes, comme ça.

Usti

Merci pour ces premières pistes.
J’va y jeter un coup d’œil.

A première vue, je rencontre le même message d’erreur dans la console.
Cela donne l’impression que le script CGI sous apache s’exécute sans faire appel au serveur X11.

Curieux, curieux…

[quote=“mathur1”]A première vue, je rencontre le même message d’erreur dans la console.
Cela donne l’impression que le script CGI sous apache s’exécute sans faire appel au serveur X11.

Curieux, curieux…[/quote]
Ah ? Moi j’aurais plutôt trouvé curieux qu’apache arrive à faire fonctionner un logiciel nécessitant X11 :033

Essaie de résoudre le problème en console, pour voir si la solution peut se transposer à un script cgi apache.

Usti

Bon bah, j’ai bien l’impression que ce problème est insoluble.
piklab-prog, bien qu’étant un programme en ligne de commande, veut absolument utiliser kde un minimum (ou qt).

Donc en gros, à part faire un gros script shell comme celui existant et “l’exécuter à la mimine”, je ne sais pas comment faire. :think:

Du coup cela rejoins ton point de vue sur l’exécution d’applis X11 sous Apache (logique en même temps).

Pfff, misère…

Insoluble qu’est ce donc que cela ?

Je ne connais pas se programme.Tu en fait quoi ? Tu le lance avec des argument qui changent ? Tu récupère sa sortie ?

Rien empêche de faire en sorte de faire communiquer www-data avec un autre utilisateur de la machine, mais l’IPC approprié dépend de la communication que tu cherche à avoir.

Bonjour MisterFreez,

Moi j’ai dit insoluble ?? Roohhh :blush:

Les arguments du programme restent les mêmes (aussi bien dans le script bash que le script cgi).
Je récupère en effet le retour du programme avec les back-quotes ``

Le programme communique avec une sonde de programmation USB (ICD2). Cette sonde est accessible par les membres du groupe microchip créé pour l’occasion et qui contient les utilisateurs “test” et “www-data”.

Je ne connais pas trop le système des IPC.
Quelle serait ton idée en fait ?

Ce que je souhaites faire c’est que le user www-data puisse appeler le programme comme le ferait l’utilisateur “test” dans un terminal gnome. Mais il semblerait que je me heurte au fait que, bien que le programme piklab-prog soit la version en ligne de commande du GUI piklab, piklab-prog nécessite d’être exécuté sous X11.

Il y a deux solutions pour ça :
[ul]
[li]augmenter les privilèges de www-data pour qu’il puisse utiliser une session graphique, ce qui peut poser des problèmes de sécurité[/li]
[li]faire communiquer ton script avec un autre programme lancé en tant que test, pour avoir une séparation des privilèges[/li][/ul]

Tu peut lancer piklab avec l’utilisateur test depuis un TTY de la machine ?

La première solution (privilèges) me plairait assez. comme c’est pour un banc de test qui ne sera jamais connecté au réseau extérieur, il n’y a pas trop de risques pour la sécurité du système.
Par contre j’ai effectué quelques petites recherches sur google et j’avoue ne pas trop trouver mon bonheur.

Aurais-tu un petit indice ? (pas forcément la solution, faut quand même que je justifie mon salaire :wink: )