Ouvrir côté serveur une popup, un message d'alerte

Bonsoir,
j’ai un pti souci donc, voici les bouts de code :
une document .php :

[code]<?php
function init() {
$ip = $_SERVER[“REMOTE_ADDR”];
exec("./test.sh ".$ip);
}

...................................................................................................... [/code] Alors, ce que je veux, c'est déclenché un message d'alerte au chargement de la page, mais pas interprété par le navigateur du visiteur, non, un bout de code exécuté chez moi, sur mon serveur, sur ma bécane. Alors, j'ai testé plusieurs solutions sans succés, je passe par un script sh mais là n'est pas le point je pense, contenu du script : [code]#!/bin/bash # echo 'noyeux joël' > /tmp/bûche #DISPLAY=:0.0 xmessage -center "$*"& java unficjava[/code] Donc j'ai essayé avec un fenetre - xmessage - et avec une classe java toute simple dont voici le code : [code]import javax.swing.*; public class unficjava { public static void main (String [] args) { JOptionPane.showMessageDialog(null, args); } } [/code]tout simple. Rien ne fonctionne au chargement ... pourquoi ? comment ? Aucuns messages d'erreurs. En user, dans une console, tout fonctionne, mais si je visite la page avec mon navigateur, rien de mon autre côté (serveur) n'apparaît ... que ne comprendeje donc pas ?

et un exec("/bin/sh /chemin/vers/ton/test.sh") ça donne quoi ?
tu as un suexec ou quelquechose comme ça sur ton apache ?

Le pbm est que la fenêtre du serveur X n’appartient pas à www-data ou apache qui exécute le script. Donc 2 solutions:

  1. Tu passes par un script en suid t’appartenant, ce script ne peut re un bash donc soit être en perl avec des règles assez précises pour pouvoir être en suid, soit être en C, Caml, etc…
    En Caml, c’est

#open "sys";; #open "unix";; setuid 1000; setgid 1000; system_command ("ta commande complète ici");;

Tu adaptes avec ton uid et ton gid et tu mets le script en suid/guid

  1. Tu autorises www-data à écrire chez toi sur ta fenêtre:
  • Tu as le mécanisme du xhost où tu autorises la machine locale à écrire et lire sur ton serveur:
    $ xhost +localhost
  • Tu as le mécanisme plus pénible mais plus sûr de xauth: Tu fais

[code]$ xauth nlist :0 > /tmp/ClefsX
$ su

su www-data

$ cat /tmp/ClefsX | xauth nmerge -
[/code]
ou encore (ça devrait marcher) tu autorises www-data à lire ton .Xauthority el le mettant dans ton groupe (addgroup www-data toi), tu donnes les droits de lecture de ton ~/.Xauthority à ceux de ton groupe et tu fais un

[code]$ su

su www-data

$ cd ~
$ ln /home/toi/.Xauthority
[/code]
Je n’ai pas essayé la dernière méthode mais ça devrait marcher.

Bonnes fêtes

[quote=“mattotop”]et un exec("/bin/sh /chemin/vers/ton/test.sh") ça donne quoi ?[/quote]En fait le test.sh est bien exécuté, pas de probléme. le fichier tmp est bien créé avec l’echo …

[quote=“mattotop”]tu as un suexec ou quelquechose comme ça sur ton apache ?[/quote]Je sais pas, vais regarder …

merci fran.b, je vais regarder tout ça …
bônnes fêtes :smiley:, à toi aussi MattOTop … à tous de toutes façons :stuck_out_tongue:

ben moi, plutot que de me prendre la tête avec les xhost et autres perturbations de X, j’ecrirais un fichier de log des visites de la page, et je suivrais ce log dans une fenètre.
Et quitte à faire un popup, je ferais un démon que je lance quand je veux dans mon interface, et qui m’ouvre un popup quand la taille du log change.

Ah, il n’a pas dit qu’il voulait faire simple :slightly_smiling: Bon :arrow_right: dodo
[je viens de réinstaller un Windows XP, que celui qui dit que Windows est plus facile à installer que Debian me fasse la démonstration: 4 heures et 10 reboutes pour avoir juste le système (et encore, il a déjà planté :frowning: et refuse le modem (ce qui m’indiffère complètement d’ailleurs)). Matt, fais attention à ton Lilo, à un anniversaire, on lui offrira un jour un jeu vidéo (XP only, quadruple processeurs 64 bits et carte Video 4G recommandés), là on te dira que l’info c’est ton truc et là commencera pour toi un chemin de croix (En plus il ne te laissera pas jouer :slightly_smiling: ]

[quote=“mattotop”]ben moi, plutot que de me prendre la tête avec les xhost et autres perturbations de X, j’ecrirais un fichier de log des visites de la page, et je suivrais ce log dans une fenètre.
Et quitte à faire un popup, je ferais un démon que je lance quand je veux dans mon interface, et qui m’ouvre un popup quand la taille du log change.[/quote]
:smiley: :smiley: ben ouaip … Matt … tu veux pas nous le faire , comme c’est noël ? justement je veux pas trop perturber X moi … :stuck_out_tongue:
Allez ponds nous le stp ?
ps: j’ai pas encore chercher à appliquer les idées de fran.b, mais c’est à l’ordre du jour de demain “normalement” … mais MattOTop, fais nous un truc bien cohérent si tu as le temps stp ?
Aprés en fait, je vais pondre un pti “tuto” sur comment montrer sa bouille sur son site web :smiley: … d’où mais petits tracas de sécurité … enfin, d’intimité …
En gros je veux que quand quelqu’un accède à telle page de mon site, je le sache scéance tenante (la belle affaire …). c’est simple non ? en théorie …

[quote=“mattotop”]ben moi, plutöt que de me prendre la tête avec les xhost et autres perturbations de X, j’ecrirais un fichier de log des visites de la page, et je suivrais ce log dans une fenètre.
Et quitte à faire un popup, je ferais un démon que je lance quand je veux dans mon interface, et qui m’ouvre un popup quand la taille du log change.[/quote]
Je ne me suis pas lancé encore dans la solution de fran.b, qui est l’explication du comment (en fait je m’en doutais, mais n’ayant pas les mots, difficile de savoir quoi trafficoter …).
Mais à propos de console pour surveiller des logs, je sais pas si vous connaissez , mais syslog-ng, c’est gravement bon, je me suis tâté pour le poster dans l’appli du jour, mais , bien que plutôt facile à configurer, je me suis pas senti le courage d’expliquer les subtilités … d’autant que, n’étant pas subtil, j’ai un peu de mal à les exprimer mdr…
Mais, franchement, quand on a un serveur apache, le php, le mysql tout bien, on se met syslong-ng, et là, on hallucine … quand on a fait le pipe() pour mysql, et c’est là que je recolle à ce que je voulais dire, il y a aussi un pipe à faire pour la xconsole si on veut, c’est tip-top.
On se place un icone sur le tableau de bord vers la xconsole, on l’ouvre, et on voit tout ce qu’on a bien voulu qu’il soit écrit là dedans.
ya un autre logiciel que j’ai découvert qui est grave de grave, c’est torrentflux … pareil … faut apache, php, mysql … et ça installe directe bittornado dans la foulée , pour les bittorent :wink:. Me suis fais carrément ch… avec azureus sans rien comprendre de comment on choppait des torrents, là, avec l’interface, fonction recherches sur les sites de torrents, c’est bien … Bon c’est pas un magasin de video, mais c’est bien cool. On peut chopper des bons taux de transferts … (style 100 ko mais c’est rare …ça dépend un peu de ce qu’on veut … clair que si c’est la starac 2005, on va downloader à 999 ko/s pour chopper un fichier vide … ouai … bide …heu vide … enfin plein, mais de daube).

Non bon … où en étais-je … non moi je veux :
woua ya des gens payé pour scruter l’activité d’un serveur,“moi” je compique, je fais autre chose pendant ce temps … je veux une poput à la aMSN quand quelqu’un se connecte sur une page …
J e vais creuser les pistes … mais je me dis que (si encore ça m’est accessible, que je ferai bien de voir le code d’aMSN, mais c’est du boulot, et en fait je pâlis … là …).
la solution de la xconsole est pas mal, mais pas parfaite, vu que si je l’ouvre pas manuellement, je sais rien … de plus, elle est déjà occupée par un processus … est ce qe dans ce cas ça sera possible ?

Bon ben c’est presque résolu, je vais devoir tester un peu plus en profondeur, mais ça à l’air de marcher. Je n’ai peut-être pas choisi l’option la meilleure, mais j’ai développé:

  • script php lançant un script bash
  • www-data -> script setuid mon user (est-ce bien utile, oui c’est mieux)
  • script lançant une appli java qui accède au display
  • le tout n’étant possible qu’en lançant à l’ouverture de session X la commande:

Où user est mon user habituel.
ps: j’attend d’éventuelles remarques avant de mettre en résolu.