• # Non !

    Posté par  . Évalué à 2.

    Enfin presque.
    Je crois savoir que c'est faisable avec du javascript signé, à la condition que la seule application exécutée après le login dans kdm soit justement firefox, et qu'il soit appelé dans un script-shell qui se déconnecte juste après l'exécution de firefox. Ce qui a pour conséquence que le simple fait de quitter firefox quitte l'environnement graphique.
    Autrement, pour le coup du javascript signé, je laisse le soin à ceux qui connaissent mieux que moi le système de t'expliquer comment procéder. Je n'en ai pour ma part qu'une idée très vague.
    Je pense que c'est une question de sécurité. A faire confirmer donc, mais tu as probablement la moitié du problème de résolue.
    • [^] # Re: Non !

      Posté par  . Évalué à 1.

      on peut voir le probleme d'une autre façon en fait!

      aprés la connexion KDM, firefox se lance avec la page HTML en question. aucune autre appli n'est disponible ni par menu ou autre.

      on peut faire un lien web pour quitter firefox et creer un script qui "ecoute" firefox et lorsque firefox se ferme, il lance une commande qui deconnecte l'utilisateur de KDE.


      en ce qui concerne la commande qui deconnecte kde, je sais faire!

      mais quel script faut-il faire pour "ecouter" une appli et un lien web qui ferme firefox je sais pas faire?!


      merci encore
      • [^] # Re: Non !

        Posté par  . Évalué à 4.

        Pourquoi faire compliqué quand on peut faire simple.

        Édite simplement ton .xsession ou .xinitrc en mettant
        #!/bin/sh
        firefox http://ma.page.oueb/(...)

        Et voilà. Lorsque firefox quittera, la session X se terminera et ce sera ton gestionnaire de connexion (KDM en l'occurence) qui s'appercevra de la déconnexion. Un petit coup de javascript pour mettre firefox en plein écran et hop autant de RAM en plus pour naviguer.

        Sinon, pour lancer une commande externe en JavaScript, même signé, je ne pense pas que ça soit possible. En tous les cas, j'avais cherché à faire un truc dans le genre, mais j'ai laissé tombé, vu que je n'ai absolument rien trouvé. La signature, il me semble, sert juste à accéder à certaine partie critique du navigateur. Ça serait de toute façon un tel nid potentiel de trou de sécurité, que c'est pas plus mal que ça n'existe pas.
        • [^] # Re: Non !

          Posté par  . Évalué à 1.

          >pourquoi faire compliqué quand on peut faire simple.

          >Édite simplement ton .xsession ou .xinitrc en mettant
          >#!/bin/sh
          >firefox http://ma.page.oueb/(...)(...)

          >Et voilà. Lorsque firefox quittera

          là est le probleme, firefox se lance en plein ecran(par defaut) avec rien pour le quitter d'où le lien qui permet de le quitter. ce lien doit ressembler à quoi?

          pas possibilité d'installer un serveur apache pour cette manip, merci quand même pour cette piste


          merci encore.
      • [^] # Re: Non !

        Posté par  (site web personnel) . Évalué à 4.

        De mémoire en mettant dans un lien suivant dans ton source html:

        <a href="javascript:window.close"> Quitter </a>

        Il y a aussi une propriété dans firefox à fixer dans le about:config. Il faut mettre "dom.allow_scripts_to_close_windows" à true. Elle permet la fermeture d'une page qui n'a pas été ouverte par un script.

        Pour le reste, je sais pas, je suis sous GNOME :-) ...
        • [^] # Re: Non !

          Posté par  (site web personnel) . Évalué à 1.

          arf, c'est window.close() et ça fermera que l'onglet courant... mais je m'y connais pas trop en javascript, il y a sans doute un objet pour désigner le navigateur plutôt que la fenêtre active ?
    • [^] # Re: Plein de moyen, mais via html+javascript je vois pas...

      Posté par  (site web personnel) . Évalué à 0.

      Heu tu peux pas vraiment faire ça en javascript...

      Le plus simple est de faire le gros gorret en faisant ceci :
      (Attention RIEN de la session ne sera sauvegardé!!!!)

      quitter.php:
      <?php
      system("/usr/bin/sudo /etc/init.d/dm restart");
      ?>

      et ajouter dans /etc/sudoers (en faisant visudo en root)
      /etc/sudoers:
      apache ALL=(root) NOPASSWD: /etc/init.d/dm restart
      #apache est le nom de l'utilisateur faisant tourner ton serveur web sur la machine où la session graphique dois être éteinte...

      Quand tu va aller sur cette page ça va violement relancer l'interface graphique...
      (et ce que tu lance la page du net ou depuis ta session graphique...)

      Sinon tu peux regarder du côté de dcop pour faire un truc moins violent...
      A ce moment là c'est un peu plus complexe car il faudra que tu passe sous le bon utilisateur.
      Un truc comme ça devrais marcher (résultat non garanti j'ai pas envie de faire trop de tests sur ma session...):

      quitter.php:
      <?php
      //devrais sauvegarder la session
      system("/usr/bin/sudo -u Nom_utilisateur_a_delogger dcop ksmserver ksmserver saveCurrentSession");
      //devrais la quitter, fais un test sur ta session en faisant dans une console
      //dcop ksmserver ksmserver logout
      //si ça te déloggue c'est que c'est bon, sinon faut revoir les arguments,
      //mais comme dcop de kde pas de doc (j'en ai pas trouvé) va falloir triffouiller...
      system("/usr/bin/sudo -u login_utilisateur_a_delogger dcop ksmserver ksmserver logout");
      ?>

      et ajouter dans /etc/sudoers (en faisant visudo en root)
      /etc/sudoers:
      apache ALL=(login_utilisateur_a_delogger) NOPASSWD: dcop ksmserver ksmserver saveCurrentSession, \
      dcop ksmserver ksmserver logout
      #ou alors si tu veux pouvoir le faire pour tous les login, et il te faudra un
      #formulaire pour la partie php pour choisir login_utilisateur_a_delogger
      apache ALL=(ALL) NOPASSWD: dcop ksmserver ksmserver saveCurrentSession, \
      dcop ksmserver ksmserver logout

      Je connais pas d'autre solution a part le faire via ssh en ligne de commande ou via un cron qui le fait a interval régulier ou via at qui le fera une fois a un instant précis.

      Si c'est simplement pour délogger tes users dans la session courante y a moyen de faire un racourcis avec les commandes dcop ci-dessus, ce sera plus simple...

      Si tu veux te manager un ensemble de pc et éteindre les sessions le soir regarde du côté de php qui sait gérer des session ssh, a ce moment là tu fait un batch qui se connecte sur tous les pc et qui recup l'user qui a une session et qui quitte cette session... (Dans ce cas là tu aurra pas besoin d'un serveur apache+php sur chaque pc)

      Rappel toi que le javascript est juste un truc permettant un ensemble de fonctions ultra-basique et qui se veut léger et non dangereux comme l'activeX sous win!!!
      Donc ils n'implémenteront surement jamais (et heureusement!) ce genre de fonctionalités suicidaire...
      Quand au html c'est juste du texte avec quelques options de mise en page basique donc pas la peine de cherche de ce côté...

      Bon la solution que je t'ai donné est "raisonablement" sécurisée, mais ne la considère pas comme fiable!!! Un trou de secu dans sudo, une possibilité d'inclure du code php et une personne qui connais comment ça marche et il peux avoir un accès a tout ton système...

      Bon après si c'est pour cloturer ta session chez les parent quand tu est dans ta piole étudiante ça suffit largement. Pense a sécuriser ça via une règle htaccess a mettre dans le fichier de conf de apache (les .htaccess sont désactivé sur les distributions récentes pour raison de perf)

      Tout ce que je t'ai mis marche pour mandrake/mandriva.
      Pour de la debian faut remplacer apache par www-data
      Pour les autres distributions lance apache et cherche l'utilisateur a qui apartient le processus (en général apache,www-data,httpd et peut-être nobody(mais ce serais pas une bonne idée)) via : ps aux | grep -e ".*\(www\|apache\|http\)\+.*"
      Il suffit de regarder le nom de l'utilisateur a gauche

      En espérant que ça t'aidera...
      • [^] # Re: Plein de moyen, mais via html+javascript je vois pas...

        Posté par  (site web personnel) . Évalué à 2.

        >Rappel toi que le javascript est juste un truc permettant un ensemble
        >de fonctions ultra-basique et qui se veut léger et non dangereux
        >comme l'activeX sous win!!!

        Pas du tout

        J'ai écris dans mon enfance (je n'avais pas encore gouté à Linux), un activeX pour une page WEB.
        J'arriver à lire, écrire et parcourir le disque dure de l'utilisateur à souait.

        Si l'utilisateur accepte le certificat, un activeX peut te formater un disque ou faire n'importe quoi sur ta machine.

        Le javascript, lui, ne sait acceder qu'au champs de la page HTML (et quelques paramêtre de l'utilisateur)
      • [^] # Re: Plein de moyen, mais via html+javascript je vois pas...

        Posté par  (site web personnel) . Évalué à 2.

        pourquoi php ?

        tu fais un cgi simple, ca suffit

        quit.cgi
        #bin/bash
        /usr/bin/sudo /etc/init.d/dm restart

        ne pas oublier de charger le module cgi dans le httpd
        • [^] # Re: Plein de moyen, mais via html+javascript je vois pas...

          Posté par  (site web personnel) . Évalué à 2.

          un peu hardcore comme méthode : n'importe qui visite ce lien sur ta machine te déconnecte... et un serveur web, juste pour ça... c'est limite
          • [^] # Re: Plein de moyen, mais via html+javascript je vois pas...

            Posté par  (site web personnel) . Évalué à 3.

            un petit .htaccess qui va bien

            <LIMIT GET POST>

            order deny,allow

            deny from all

            allow from 127.0.0.1

            < /LIMIT>
            • [^] # Re: Plein de moyen, mais via html+javascript je vois pas...

              Posté par  (site web personnel) . Évalué à 2.

              Tite précision le logout semble marcher avec cette commande :
              dcop ksmserver default logout 0 0 0

              Pour le truc hardcore, bon je savais pas trop ce que voulais faire le gonz, mais si il veux se bricoler un intranet/extranet pour gérer son pc a distance ben je lui ai passé une solution, certe un peu lourde, mais bon vu comme je me sert de mon serveur apache chez moi je trouve ça pas mal.

              Bon après au niveau sécu j'ai essayé de lui faire un truc simple sans prise de tête...
              Dans mon optique de page intranet il me semblait évident qu'il allais faire une sécurisation comme bon lui semble.
              En plus la méthode des communication par dcop l'oblige a choisir l'utilisateur a déconnecter avec un formulaire et donc rajouter un champ pass tout bête avec une comparaison variable = chaine suffit.
              Si il y pas de sélection d'utilisateur il devrais utiliser un truc dans ce style en root:
              dcop --all-users ksmserver ksmserver logout 0 0 0

              ps : sous la mandriva 2006.0 les htaccess seront désactivé pour raison de perf (et surement que d'autre distrib suivront)
              donc pour la potabilité rajouter dans le /etc/httpd/httpd.conf :
              <Directory "/la_où_tu_a_ton_script">
              #option qui va bien ici
              <LIMIT GET POST>
              order deny,allow
              deny from all
              allow from 127.0.0.1
              </LIMIT>
              </Directory>

              Sous debian c'est le fichier /etc/apache/httpd.conf (mais les .htaccess ne sont pas désactivés par défaut)

              En espérant que ça l'aide, si il veux plus d'info, suffit de préciser...

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.