FAQ |
Kalender |
![]() |
#1 | ||
|
|||
Klarade millennium-buggen
|
Gomorron vänner,
skulle behöva köra ett cgi från en wrapper, som gör vissa checks och modifierar request parametrar, för att sedan skicka ut resultatet till klienten. Istället för en request som ser ut så här: http://example.com/cgi-bin/mincgi?re...quest_param2=y Så vill jag att det ser ut så här: http://example.com/cgiwrapper.php?re...quest_param2=y cgiwrapper.php har följande pseudokod: Citat:
Alternativet är naturligtvis att göra ändringarna i cgi-n och kompilera om den, men jag är inte så bra på C. Tack på förhand Senast redigerad av Magnus_A den 2011-09-20 klockan 07:24 Anledning: Språk tillagt |
||
![]() |
![]() |
![]() |
#2 | ||
|
|||
Banned
|
Kod:
<?php $vars = array(); //gör lite checks if($_GET['request_param1'] == x) { $vars['param1'] = $_GET['request_param1']; // lägg till en tredje parameter // $_GET['request_param3'] = z; $vars['request_param3'] = z; } //Kolla något helt annat , till exempel ingående ip: if($_SERVER['REMOTE_ADDR'] == '1.2.3.4'){ //gör något } $param = ''; foreach($vars as $k => $v) { $param .= ' --' . $k . '='. $v; } // kalla på mitt ursprungliga cgi och returnera resultatet till browsern: // Här vet jag inte riktigt hur jag ska göra... kanske så här: echo shell_exec('/usr/lib/cgi-bin/mincgi ' . $param); Något sånt här? |
||
![]() |
![]() |
![]() |
#3 | ||
|
|||
Klarade millennium-buggen
|
Citat:
Nu var det inte så enkelt för just detta CGI, som inte gillar att initieras annat än från en httpd-server. Som tur tar cgi:t emot miljövariabler så jag får skriva ett litet bashscript som sätter miljövariabler så att det fungerar. Först ett phpscript som kallar ett wrapper bashscript som körs som cgi. Vet inte om jag krånglat till det men det fungerar i alla fall och jag slipper visa upp onödigt mycket variabler i den ursprungliga requesten. |
||
![]() |
![]() |
![]() |
#4 | ||
|
|||
Banned
|
Ok.
Kan ju vara bra o veta. |
||
![]() |
![]() |
![]() |
#5 | ||
|
|||
Klarade millennium-buggen
|
|||
![]() |
![]() |
![]() |
#6 | ||
|
|||
Klarade millennium-buggen
|
Tänkte publicera lösningen här för alla som legat sömnlösa
![]() Eftersom cgi:n inte vill låta sig kallas från skalet så skapade jag ett wrapper som gör checks, lägger till och drar ifrån, och sedan kallar på cgi:n med curl. Sen skickar jag iväg resultatet genom att sätta en lämplig header, för png i detta fall, samt ekar ut curl-resultatets body. På det viset kan jag öka säkerheten genom att bara tillåta anrop till cgi:n från localhost, om jag nu är rädd för säkerhetsbrister i cgi:n Slutet gott, allting gott. |
||
![]() |
![]() |
Svara |
|
|