Espace perso + fonction php pour script shell

WRInaute passionné
Voilà, je travaille actuellement à la création d'un espace perso pour des serveurs de jeux.

Le but de ce petit pannel est de pouvoir executer des scripts shell/bash depuis son pannel perso comme le reboot ou la réinstallation du serveur de jeu.

Donc pour l'instant la solution simplissime retenu est la création d'un répertoire pour chaque membre protégé par .htaccess/htpasswd dans leur /home/user/www, le serveur de jeux se situant dans /home/user/serv/

Ma question est avant tout niveau sécurité... La fonction php exec n'étant pas très sécure et le php doit être safe mode off il me semble

J'ai vaguement entendu parlé de la fonction php system.

Donc quelques questions concernant cette fonction si quelques uns d'entre vous l'utilise ou si vous avez une méthode plus pertinente...

Le but serait de donner des bonnes permissions aux fichiers contenant le fonction exec car suffirait que l'user mette un "reboot" dedans et pas seulement son serveur de jeu ne rebooterais...

Voilà, si vous avez des liens web intéressants, ou d'autres... Je prends.
 
WRInaute accro
Pour n'autoriser que certaines actions, tu peut parfaitement faire un système de whiteliste.
Tu interdit toutes les commandes, sauf certaines.

Après, exec() ne permettra pas à tes membres de rebooter la machine. A moins que Apache ne soit executé en root evidemment.

Tu peut aussi sécuriser les commandes passées avec escapesheelarg et escapeshellcmd.
 
WRInaute passionné
Hum, je suis en train de regarder aussi de la fonction system, elle permet pas mal de trucs...

Sinon pour tes fonctions, assez intéressante je trouve...
Je fouine je fouine...
 
WRInaute passionné
Bon j'ai trouvé un truc intéressant, mais bizarrement impossible d'éxécuter ce script, certainnement un problème de droits
Code:
<html>
        <head>
                <title>Membres</title>
                <script type='text/JavaScript'>

                        function getXhr(){
                                var xhr = null;
                                if(window.XMLHttpRequest) // Firefox et autres
                                   xhr = new XMLHttpRequest();
                                else if(window.ActiveXObject){ // Internet Explorer
                                   try {
                                        xhr = new ActiveXObject("Msxml2.XMLHTTP");
                                    } catch (e) {
                                        xhr = new ActiveXObject("Microsoft.XMLHTTP");
                                    }
                                }
                                else { // XMLHttpRequest non supporté par le navigateur
                                   alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
                                   xhr = false;
                                }
                                return xhr
                        }

                        /**
                        * Méthode qui sera appelée sur le click du bouton
                        */
                        function go(){
                                var xhr = getXhr()
                                // On défini ce qu'on va faire quand on aura la réponse
                                xhr.onreadystatechange = function(){
                                        // On ne fait quelque chose que si on a tout reçu et que le serveur est ok
                                        if(xhr.readyState == 4 && xhr.status == 200){
                                                alert(xhr.responseText);
                                        }
                                }
                                xhr.open("GET","reboot_serv.php",true);
                                xhr.send(null);
                        }
                </script>
        </head>
        <body>
                <input type='button' value='Redémarrer serveur' onclick='go()' />
        </body>
</html>

Et le fichier reboot_serv.php
Code:
<?php
        //echo "Votre serveur est en train de redémarrer";
        echo exec('/home/zepol/www/zepol.sh');

?>

Alors d'abord terster en safe mode on, puis en off

Fonction exec pour tester, car c'est la seule que j'arrive à faire marcher... très certainement un problème de permission

apache : www-data
script php : zepol
script zepol.sh : zepol
le fichier zepol.sh n'éxecute que des fichiers apartenant à lui même...
Peut-être le problème du www-data... Alors je pense à suphp par encore install, mais bon :p
 
WRInaute passionné
Huhu

Bon, désolé de ne pas utiliser la fonction éditer, mais ça représente plusieurs pas, et si quelqu'un recherche la solution, ça pourra peut-être l'aider...

Donc j'ai fini par trouver...

Un ptit crontab qui vient toutes les minutes vérifier la présence d'un fichier d'un nom user_cequejeveuxfaire.txt.
Si ce fichier est présent, le script crontab execute ce fichier...
Bon, on arrive pas à une réactivité énorme, mais elle est toujours inférieure à la minute, donc c'est plutot pas mal...
 
Nouveau WRInaute
Pas besoin de reboot completement le serveur pour reboot le serv de jeu...

Je suis en train de me lancer la dedans aussi...par contre toutes ces commandes je ne les maitrise pas encore tt a fait...

Le php je debute...

mais j ai trouve un script permettant d envoyer des commande RCON a un serv...

Logiquement tout peut se faire depuis la...

Pour le reboot il suffirait d envoyer la commande exit,et si l autoupdate a été lancé avec le serv de jeu..il redemarrera!!!

Et la plupart des options peuvent se faire via rcon..

La seul chose que je cherche maintenant est de crééer justement ces pages reservé a l utilisateur x seulement...l utlisateur y aura sa page a lui avec son serveur...

Ce que je cherche c un script php qui me permette de gerer un espace membre de ce genre...si quelqu un avait ca sous la main...

parce que si je me lance dedans et vu mes connaissance...j en ai pour 3 mois!!!

Merci
 
WRInaute passionné
Zam a dit:
Pas besoin de reboot completement le serveur pour reboot le serv de jeu...
Bah encore heureux que rebooter la machine ne soit pas nécessaire...
Je n'suis pas fan des reboots via exit. Un bon gros kill de tout ce qui concerne le serveur en question et une relance, tu gagnes pas mal de ram...

Pour le script php pour envoyer des RCON :
-http://www.kquery.com/forums/index.php?showtopic=1737
Marche très très bien...
Pour l'espace perso, bah tu envois tes commandes avec...
Mais dans ce cas là, HLSW est ptete un peu mieux si tu souhaites juste utiliser les commandes RCON... Moi j'ai fait des boutons pour lancer la compression des HLTVs... Si le serveur par en timeout, il te faudra bien le relancer, et par Rcon, tu n'risques pas d'avoir de réponses...
 
WRInaute passionné
c'est bien de voir l'aspect secu avant de developper ton script

si tu peux faire tourner php en safe mode c'est mieux

le plus safe c'est de faire ecrire tes commandes dans un fichier en passant bien sur par une table de corresponcance et de lancer un shell en cron qui scrutera le fichier

rog
 
Nouveau WRInaute
On vient de me filer une adresse:
http://php-info.info/demo/

pour l espace membre...apres a toi de creer tes pages..^^

Ca peut ne pas etre mal!!!

Par contre je n ai pas compris comment tu peut reboot lorsque le serv est dead...

Il faut utiliser une commande du genre exec???en php...pour l instan je ne sai pas du tt m en servir...

Mais il fau bien commencer^^
 
WRInaute passionné
Bah tu lances bien ton serveur CS via putty (SSH) via un script.
Donc si, dans ton idée de demander un reboot du serveur CS par un exit dans la console HLSW. Le problème est que si ton serveur part en timeout, en zombie ou un truc chiant, le exit ne risque pas de répondre...
Moi à l'origine c'était surtout pour le HLTV, tu loues un serveur CS + HLTV, le gars tappes stop au lieu de stop_recording, son HLTV est down, impossible de le relancer sans shell.
Donc voilou... Tout dépends si c'est pour un usage perso ou team ou location... Pour la location faut vraiment se mettre dans la peau d'un noob...
 
Nouveau WRInaute
ah exact...je commence petit a petit a comprendre...

As tu reussi a faire cette fameuse page de gestion toi qui te lance la dedans???

juste pour avoir une idée du genre de commande... :)
 
Nouveau WRInaute
Et bien y aurait il une possibilité de récupérer ce script???

As tu posé une liscence dessus??

Quel genre de commande finalement as tu utilisé?

EDIT>>> dsl j avais pas du tout...mais alors pas du tout vu le lien^^

1000 excuses^^
 
WRInaute passionné
On ne donne pas le script désolé, oui et non pour la license... Dans ce thread, tu as presque tout ce qu'il te faut pour la technique... Le code est lui sous licence "Julia" (tellement mal codé que le code est pas récupérable ^^)...

Nous l'installons quand nous fesons de l'infogérance sur les serveurs CS, c'est tout, après ces personnes ont donc le code, mais bon, c'est pas codé très très proprement hein ^^
 
Nouveau WRInaute
Julia...je viens d aller faire un tour sur ton site perso...tres joli au passage,simple et clair...

Pourrais tu me montrer une simple page d administration de serveur chez toi ou tu as utilisé tsadmin??

Pour voir comment tu l a incorporé...

Bien sur ne met aucun acces a aucun acces sur ce serveur!!!lol

Merci beaucoup!!!
 
Nouveau WRInaute
Julia41 a dit:
On ne donne pas le script désolé, oui et non pour la license... Dans ce thread, tu as presque tout ce qu'il te faut pour la technique... Le code est lui sous licence "Julia" (tellement mal codé que le code est pas récupérable ^^)...

Nous l'installons quand nous fesons de l'infogérance sur les serveurs CS, c'est tout, après ces personnes ont donc le code, mais bon, c'est pas codé très très proprement hein ^^

Mais finalement je ne comprends pas...ce panel admin tu le met a dispo de TES clients qui louent des serveur jeux chez toi???

Car sinon qu est ce que l infogerance?...une simple aide exterieure?

C est la que je ne comprends pas..Surtout au niveau du script ...tu parles du quel alors exactement?
 
WRInaute passionné
Zam a dit:
Mais finalement je ne comprends pas...ce panel admin tu le met a dispo de TES clients qui louent des serveur jeux chez toi???

Car sinon qu est ce que l infogerance?...une simple aide exterieure?

C est la que je ne comprends pas..Surtout au niveau du script ...tu parles du quel alors exactement?

Hum non, les personnes louant un serveur chez nous ont ce pannel, enfin une version de ce style, mais lorsque quelqu'un vient nous voir pour une installation de serveur CS, psychostats ou autre (donc infogérance), nous lui installons le pannel...
 
Discussions similaires
Haut