Login   Register  
PHP Classes
elePHPant
Icontem

File: phpagi-fastagi.php

Recommend this page to a friend!
Stumble It! Stumble It! Bookmark in del.icio.us Bookmark in del.icio.us
  Classes of Matthew Asham  >  PHP AGI  >  phpagi-fastagi.php  >  Download  
File: phpagi-fastagi.php
Role: Example script
Content type: text/plain
Description: fastagi interface
Class: PHP AGI
Control an Asterisk VOIP instance
Author: By
Last change:
Date: 4 years ago
Size: 2,322 bytes
 

Contents

Class file image Download
#!/usr/local/bin/php -q
<?php
 
/**
  * phpagi-fastagi.php : PHP FastAGI bootstrap
  * Website: http://phpagi.sourceforge.net
  *
  * $Id: phpagi-fastagi.php,v 1.2 2005/05/25 18:43:48 pinhole Exp $
  *
  * Copyright (c) 2004, 2005 Matthew Asham <matthewa@bcwireless.net>, David Eder <david@eder.us>
  * All Rights Reserved.
  *
  * This software is released under the terms of the GNU Lesser General Public License v2.1
  * A copy of which is available from http://www.gnu.org/copyleft/lesser.html
  *
  * We would be happy to list your phpagi based application on the phpagi
  * website.  Drop me an Email if you'd like us to list your program.
  *
  * @package phpAGI
  * @version 2.0
  * @example docs/fastagi.xinetd Example xinetd config file
  */

 /**
  * Written for PHP 4.3.4, should work with older PHP 4.x versions.
  * Please submit bug reports, patches, etc to http://sourceforge.net/projects/phpagi/
  * Gracias. :)
  *
  */

  
require_once(dirname(__FILE__) . DIRECTORY_SEPARATOR 'phpagi.php');

  
$fastagi = new AGI();

  
$fastagi->verbose(print_r($fastagitrue));

  if(!isset(
$fastagi->config['fastagi']['basedir']))
    
$fastagi->config['fastagi']['basedir'] = dirname(__FILE__);

  
// perform some security checks

  
$script $fastagi->config['fastagi']['basedir'] . DIRECTORY_SEPARATOR $fastagi->request['agi_network_script'];

  
// in the same directory (or subdirectory)
  
$mydir dirname($fastagi->config['fastagi']['basedir']) . DIRECTORY_SEPARATOR;
  
$dir dirname($script) . DIRECTORY_SEPARATOR;
  if(
substr($dir0strlen($mydir)) != $mydir)
  {
    
$fastagi->conlog("$script is not allowed to execute.");
    exit;
  }

  
// make sure it exists
  
if(!file_exists($script))
  {
    
$fastagi->conlog("$script does not exist.");
    exit;
  }

  
// drop privileges
  
if(isset($fastagi->config['fastagi']['setuid']) && $fastagi->config['fastagi']['setuid'])
  {
    
$owner fileowner($script);
    
$group filegroup($script);
    if(!
posix_setgid($group) || !posix_setegid($group) || !posix_setuid($owner) || !posix_seteuid($owner))
    {
      
$fastagi->conlog("failed to lower privileges.");
      exit;      
    }
  }

  
// make sure script is still readable
  
if(!is_readable($script))
  {
    
$fastagi->conlog("$script is not readable.");
    exit;
  }

  require_once(
$script);
?>