Toon posts:

[php/cs] Kill de server

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hoi.,

Ik ben bezig met een Bookings systeem voor een Counter-Strike server.
De server draaid op LINUX.
Met php wil ik de server kunnen killen, en kunnen starten.
Iemand enig idee hoe ik zo'n commando, en welk commando uit voer?
Dat ie de CS server killt, en weer start, zodat hij de config.cfg weer opnieuw inleest, want hij moet ook de spelers kicken, en dat kan met een kill,

Wie helpt mij?

Verwijderd

probeer de dedicated server console in te komen of prbeer hier een bericht naar te sturen..

Verwijderd

Topicstarter
Op vrijdag 11 januari 2002 20:14 schreef GDOG het volgende:
probeer de dedicated server console in te komen of prbeer hier een bericht naar te sturen..
jah, hehe hoe ? :P:P thanks voor je reactie

  • Glimi
  • Registratie: Augustus 2000
  • Niet online

Glimi

Designer Drugs

(overleden)
Begrijp ik het goed? Wil je dat iemand door het aanspreken van een PHP pagina bij uwer server, het programma CS-server op dezelfde server killt??

Als dit waar is dat moet PHP (cq apache) dus de rechten krijgen om dat programma te killen (cq het script aan roepen dat de boel netjes kilt). Ik weet niet als wat die CS-server draait, maar je wilt toch niet echt dat hij gewone userrights krijgt.

Wil je dit toch, en ben je bereid hiervoor extra risico te nemen, kijk dan eens naar het commando exec() of het commando system(). Deze kunnen systeemaanroepen uitvoeren.

BTW als je voor de hard kill gaat (dus dmv kill pid) moet je het pid waarsch ff uitlezen, voordat je weet onder wel pid de CS-server draait. De voorkeur gaat toch uit naar een exitscript

Verwijderd

Topicstarter
Op vrijdag 11 januari 2002 20:26 schreef Glimi_ie het volgende:
Begrijp ik het goed? Wil je dat iemand door het aanspreken van een PHP pagina bij uwer server, het programma CS-server op dezelfde server killt??

Als dit waar is dat moet PHP (cq apache) dus de rechten krijgen om dat programma te killen (cq het script aan roepen dat de boel netjes kilt). Ik weet niet als wat die CS-server draait, maar je wilt toch niet echt dat hij gewone userrights krijgt.

Wil je dit toch, en ben je bereid hiervoor extra risico te nemen, kijk dan eens naar het commando exec() of het commando system(). Deze kunnen systeemaanroepen uitvoeren.

BTW als je voor de hard kill gaat (dus dmv kill pid) moet je het pid waarsch ff uitlezen, voordat je weet onder wel pid de CS-server draait. De voorkeur gaat toch uit naar een exitscript
het draaid op de eigen server, er draaien op de eigen server 4 dedicated servers, en 1 webserver, en verder heeft er niemand access, dus waarom risico?

  • Glimi
  • Registratie: Augustus 2000
  • Niet online

Glimi

Designer Drugs

(overleden)
Ik neem aan dat er een internetverbinding zit aan die server, en dus andere mensen hem kunnen opvragen. Verder zul je waarschijnlijk om dit te bereiken apache meer rechten gaan geven.

Owkay, stel je gaat nu exec() gebruiken en als iemand de pagina oproept, dat mag hij één van de 4 dedicated servers kiezen met een html form. Dit wordt bijv meegegeven door de variable $keuze.

Dan doet het systeem dus mooi exec("kill $keuze"). Stel ik kom hierachter, door bijv de header te bekijken die mijn browser verstuurt. Dan schijf ik een eigen header die bijv random pids mee gaat geven, of geef ik de volgende commando's mee $keuze = " 2213; rm -rf *"; Wat zou er dan kunnen gebeuren :P

Dit kun je btw wel goed beschermen hoor, is alleen maar een waarschuwingutje

Verwijderd

Topicstarter
Op vrijdag 11 januari 2002 21:02 schreef Glimi_ie het volgende:
Ik neem aan dat er een internetverbinding zit aan die server, en dus andere mensen hem kunnen opvragen. Verder zul je waarschijnlijk om dit te bereiken apache meer rechten gaan geven.

Owkay, stel je gaat nu exec() gebruiken en als iemand de pagina oproept, dat mag hij één van de 4 dedicated servers kiezen met een html form. Dit wordt bijv meegegeven door de variable $keuze.

Dan doet het systeem dus mooi exec("kill $keuze"). Stel ik kom hierachter, door bijv de header te bekijken die mijn browser verstuurt. Dan schijf ik een eigen header die bijv random pids mee gaat geven, of geef ik de volgende commando's mee $keuze = " 2213; rm -rf *"; Wat zou er dan kunnen gebeuren :P

Dit kun je btw wel goed beschermen hoor, is alleen maar een waarschuwingutje
Hij komt waarschijnlijk als cronjob buiten de apache WWW dir.
Dus dat ik hem wel via cronjobs kan starten maar niet via het web, snappie? met moet een cronjob worden, maar ik moet dus het commando weten, en hoe geef ik apache meer rechten, dus commando voor de kill, en rechten:?

  • Glimi
  • Registratie: Augustus 2000
  • Niet online

Glimi

Designer Drugs

(overleden)
Apache rechten :
zie httpd.conf

Kill commando:
exec() in php die 'kill <process_id_van_de_CS_server>' aanroept

Verwijderd

Topicstarter
Op vrijdag 11 januari 2002 21:40 schreef Glimi_ie het volgende:
Apache rechten :
zie httpd.conf

Kill commando:
exec() in php die 'kill <process_id_van_de_CS_server>' aanroept
hmm, ik bouw alleen het systeeem, ik ben dus geen linux expert, hoe kom ik achter het process id, en is dat altijd het zelfde?

Maar ik wil juist dat CS word gekillt, en restart word, dus dat alle users worden gedisconnected, en dan is de server weer vrij, en word het wachtwoord gelezen uit config.cfg

Kan dit ook dna, dan ie meteen weer start?

Verwijderd

Topicstarter
Want ik kan het nergens vinden..

Verwijderd

probeer met "ps -al" de processen op te vragen, vis je pid (process id) er uit en voer het commando "kill pid" uti waar pid het uitgeviste process id is

  • pimlie
  • Registratie: November 2000
  • Laatst online: 15-09 18:06
ik heb hetzelfde geklust voor een rtcw server, hier onder mijn code. Tis wel lelijke code en het zal vast mooier kunnen, maar het werkt. En das het belangrijkste >:)
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
<?
// zoeken naar PID, je weet dat "wolfded" de executable is voor RTCW, voor cs moet je ff kijken naar wat daar de executable is
exec("ps uh -C wolfded", $var);
exec("ps uh -C wolfded.x86", $varr);

if(sizeof($var) != 0 OR sizeof($varr) != 0) { // alleen als ie iets gevonden heeft gaat ie dit doen
    // van 2 arrays er eentje maken
    while(list($key, $value) = each($varr)) {
        $var[] = $value; 
    }
    $i=0;
    $approved = "true";
// wat dingen uit elkaar halen enzo. Hierna blijft alleen de Owner, de PID en de volledige procesnaam over
    while(list($key, $value) = each($var)) {
        $value2 = explode(" ", $value);
        $value4 = "";
        while(list($key, $value3) = each($value2)) {
            if(trim($value3) != "") {
                if(substr($value3,0,1) == "/" OR substr($value3,1,1) == "/") {
                    $temp = $value3;
                }else if(!empty($temp)) {
                    $temp.= " ".$value3;
                }else{
                    $value4[] = $value3;
                }
            }
        }
        $v[$i][] = $value4[0];
        $v[$i][] = $value4[1];
        $v[$i][] = $temp;
        $temp = "";
        $i++;
    }
}
// in $v[] zitten alle gevonden processen en in $v[][] zitten de variabelen van het proces
if($kill == "true" AND $approved == "true") {
// je kan alleen killen als er een proces gevonden is
    while(list($key, $value) = each($v)) {
        $k = "/bin/kill -s HUP $value[1]";
        system($k, $ll); // kill!
        if($ll != 0) { // als alles goed gaat is $ll "0", zo niet is het proces niet gekillt
            $error = "true";
            echo "Failed to kill process: $value[1]<br>";
        }
    }
    if($error == "true") {
        echo "<h3>Please try.h3>";
        echo "<a href=\"rtcw.php\">Click here to go back</a>";
    }else{
        header("Location: rtcw.php");
    }
}else if($start == "true" AND $approved != "true") {
// hier wordt het proces gestart, de server dus
    $k = "/var/rtcw/wolfded +exec server.cfg >/dev/null 2>>/var/rtcw/log/rtcw.err &amp;amp;";
    exec($k);
    header("Location: rtcw.php");
}else if($approved == "true") {
// hier laat ie alle processen zien, ALS de server draait
    echo "<h3>Processes found for RTCW Dedicated Server</h3>";
    echo "<table width=350 border=0 cellpadding=0 cellspacing=0>";
    echo "<tr><td align=\"center\"><b>Owner</td><td align=\"center\"><b>PID</td><td align=\"center\"><b>Process &amp;amp;amp;amp;amp;amp;&amp;amp;amp;amp;amp;amp; variables</td></tr>";
    while(list($key, $value) = each($v)) {
        $user = $value[0];
        $pid = $value[1];
        $process = $value[2];
        echo "<tr><td align=\"center\">$user</td><td align=\"center\">$pid</td><td align=\"center\">$process</td></tr>";
    }
    echo "</table><br><br>";
    echo "Before you can start a new process, you must kill the ones above. Click below to do so.<br><br>";
    echo "<a href=\"rtcw.php?kill=true\">KILL PROCESSES</a>";
}else{
// de server draait niet en als je op die link klikt wordt de server gestart
    echo "<h3>RTCW is not running</h3>";
    echo "<a href=\"rtcw.php?start=true\">Start RTCW</a>";
}
?>

Verwijderd

Topicstarter
Op zaterdag 12 januari 2002 15:44 schreef pimlie het volgende:
ik heb hetzelfde geklust voor een rtcw server, hier onder mijn code. Tis wel lelijke code en het zal vast mooier kunnen, maar het werkt. En das het belangrijkste >:)
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
<?
exec("ps uh -C wolfded", $var);
exec("ps uh -C wolfded.x86", $varr);

if(sizeof($var) != 0 OR sizeof($varr) != 0) {
    while(list($key, $value) = each($varr)) {
        $var[] = $value;
    }
    $i=0;
    $approved = "true";
    while(list($key, $value) = each($var)) {
        $value2 = explode(" ", $value);
        $value4 = "";
        while(list($key, $value3) = each($value2)) {
            if(trim($value3) != "") {
                if(substr($value3,0,1) == "/" OR substr($value3,1,1) == "/") {
                    $temp = $value3;
                }else if(!empty($temp)) {
                    $temp.= " ".$value3;
                }else{
                    $value4[] = $value3;
                }
            }
        }
        $v[$i][] = $value4[0];
        $v[$i][] = $value4[1];
        $v[$i][] = $temp;
        $temp = "";
        $i++;
    }
}
if($kill == "true" AND $approved == "true") {
    while(list($key, $value) = each($v)) {
        $k = "/bin/kill -s HUP $value[1]";
        system($k, $ll);
        if($ll != 0) {
            $error = "true";
            echo "Failed to kill process: $value[1]<br>";
        }
    }
    if($error == "true") {
        echo "<h3>Please try.h3>";
        echo "<a href=\"rtcw.php\">Click here to go back</a>";
    }else{
        header("Location: rtcw.php");
    }
}else if($start == "true" AND $approved != "true") {
    $k = "/var/rtcw/wolfded +exec server.cfg >/dev/null 2>>/var/rtcw/log/rtcw.err &amp;amp;amp;amp;amp;";
    exec($k);
    header("Location: rtcw.php");
}else if($approved == "true") {
    echo "<h3>Processes found for RTCW Dedicated Server</h3>";
    echo "<table width=350 border=0 cellpadding=0 cellspacing=0>";
    echo "<tr><td align=\"center\"><b>Owner</td><td align=\"center\"><b>PID</td><td align=\"center\"><b>Process &amp;amp;amp;amp;amp;&amp;amp;amp;amp;amp; variables</td></tr>";
    while(list($key, $value) = each($v)) {
        $user = $value[0];
        $pid = $value[1];
        $process = $value[2];
        echo "<tr><td align=\"center\">$user</td><td align=\"center\">$pid</td><td align=\"center\">$process</td></tr>";
    }
    echo "</table><br><br>";
    echo "Before you can start a new process, you must kill the ones above. Click below to do so.<br><br>";
    echo "<a href=\"rtcw.php?kill=true\">KILL PROCESSES</a>";
}else{
    echo "<h3>RTCW is not running</h3>";
    echo "<a href=\"rtcw.php?start=true\">Start RTCW</a>";
}
?>
Hmm ik ben linux n00b, hoe krijg ik dit werkend met COUNTER-STRIKE DEDICATED SERVER? Want ik zou niet weten wat dit script doed, :)

  • pimlie
  • Registratie: November 2000
  • Laatst online: 15-09 18:06
heb er wat comments bij geplaatst. Als je het nog niet snapt, contact me anders ff op ICQ ofzo

Verwijderd

Topicstarter
sorry dat ik deze oude topic weer omhoog haal, maar er draaien dus 4 dedicated servers op, waarvan ik er maar 1 wil killen? Is dit mogelijk?

Verwijderd

ja want iedere server heeft een eigen pid

  • Grum
  • Registratie: Juni 2001
  • Niet online
en toch kan het veel simpler :P
stuur gewoon een rcon quit :) et voila .. klaar ;)

  • aKra
  • Registratie: Mei 2000
  • Laatst online: 02:33

aKra

Intentionally left blank.

Het probleem is, het moet door PHP gevonden worden, en dat het specifiek de warserver (1 of 2) killed, en niet allemaal...

Intentionally left blank.


  • aKra
  • Registratie: Mei 2000
  • Laatst online: 02:33

aKra

Intentionally left blank.

Op zondag 20 januari 2002 14:50 schreef Grum_ het volgende:
en toch kan het veel simpler :P
stuur gewoon een rcon quit :) et voila .. klaar ;)
En het moet door 'n script gebeuren zonder dat er mensen bij zijn.

Intentionally left blank.


Verwijderd

Topicstarter
hoe doen ze het bij barrysworld en gamepoint dan?? zijn er bestaande scripts??
Pagina: 1