%PDF- %PDF-
| Direktori : /www/old2/_music/loot/ |
| Current File : //www/old2/_music/loot/func.php |
<?php
// downloads a binary file using curl/fopen/fsockopen
function download_file($file_source, $file_target)
{
if (function_exists('curl_init'))
{
// curl available
if (($ch = curl_init($file_source)) === FALSE) { return false; }
if (($fp = fopen($file_target, 'wb')) === FALSE) { return false; }
curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_HEADER, 0);
// Begin transfer
if (!curl_exec($ch)) {
curl_close($ch);
fclose($fp);
return false;
};
curl_close($ch);
fclose($fp);
return true;
} else if (ini_get('allow_url_fopen') == 1) {
// curl unavailable, fopen is
$file_source = str_replace(' ', '%20', html_entity_decode($file_source)); // fix url format
if (file_exists($file_target)) { chmod($file_target, 0777); } // add write permission
// Begin transfer
if (($rh = fopen($file_source, 'rb')) === FALSE) { return false; } // fopen() handles
if (($wh = fopen($file_target, 'wb')) === FALSE) { return false; } // error messages.
while (!feof($rh))
{
// unable to write to file, possibly because the harddrive has filled up
if (fwrite($wh, fread($rh, 1024)) === FALSE) {
fclose($rh);
fclose($wh);
return false;
}
}
// Finished without errors
fclose($rh);
fclose($wh);
return true;
} else {
// curl and fopen unavailable, try fsockopen
$url_array = parse_url($file_source);
$fp = fsockopen($url_array['host'], 80, $errno, $errstr, 5);
if (!fp) {
die("cURL isn't installed, 'allow_url_fopen' isn't set and socket opening failed. Socket failed because: <br /><br /> $errstr ($errno)");
} else {
if (file_exists($file_target)) { chmod($file_target, 0777); } // add write permission
if (($wh = fopen($file_target, 'wb')) === FALSE) { return false; }
// send the request for the file
$out = "GET " . $url_array[path] . "?" . $url_array[query] ." HTTP/1.0\r\n";
$out .= "Host: " . $url_array[host] . " \r\n";
$out .= "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; cs; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11\r\n";
$out .= "Accept-Encoding: gzip\r\n";
$out .= "Connection: Close\r\n\r\n";
fwrite($fp, $out);
// Begin transfer
$gzip = false;
$head_end = false;
while (!feof($fp))
{
// unable to write to file, possibly because the harddrive has filled up
$tmp_w = fgets($fp, 2048);
if(trim($tmp_w) == "Content-Encoding: gzip")
{
$gzip = true;
}
if(!$head_end && trim($tmp_w) == "")
{
$head_end = true;
continue;
}
if($head_end)
{
if (fwrite($wh, $tmp_w) === FALSE)
{
fclose($fp);
fclose($wh);
return false;
}
}
}
// Finished without errors
fclose($fp);
fclose($wh);
return true;
}
}
return false;
}
$queries = 0;
/**
* Wrapper function so that you can parse a file instead of an array.
* @author six
*/
function ParseLuaFile( $file_name , $file_type=null )
{
if( file_exists($file_name) && is_readable($file_name) )
{
if( $file_type == 'gz' )
{
$file_as_array = gzfile($file_name);
}
else
{
$file_as_array = file($file_name);
}
return(ParseLuaArray($file_as_array));
}
return(false);
}
/**
* Main LUA parsing function
* @author six, originally mordon
*/
function ParseLuaArray( &$file_as_array )
{
if( !is_array($file_as_array) )
{
// return false if not presented with an array
return(false);
}
else
{
// Parse the contents of the array
$stack = array( array( '', array() ) );
$stack_pos = 0;
$last_line = '';
foreach( $file_as_array as $line )
{
// join lines ending in \\ together
if( substr( $line, -2, 1 ) == '\\' )
{
$last_line .= substr($line, 0, -2) . "\n";
continue;
}
if($last_line!='')
{
$line = trim($last_line . $line);
$last_line = '';
}
else
{
$line = trim($line);
}
// Look for end of an array
if( $line[0] == '}' )
{
$hash = $stack[$stack_pos];
unset($stack[$stack_pos]);
$stack_pos--;
$stack[$stack_pos][1][$hash[0]] = $hash[1];
unset($hash);
}
// Handle other cases
else
{
// Check if the key is given
if( strpos($line,'=') )
{
list($name, $value) = explode( '=', $line, 2 );
$name = trim($name);
$value = trim($value,', ');
if($name[0]=='[')
{
$name = trim($name, '[]"');
}
}
// Otherwise we'll have to make one up for ourselves
else
{
$value = $line;
if( empty($stack[$stack_pos][1]) )
{
$name = 1;
}
else
{
$name = max(array_keys($stack[$stack_pos][1]))+1;
}
if( strpos($line,'-- [') )
{
$value = explode('-- [',$value);
array_pop($value);
$value = implode('-- [',$value);
}
$value = trim($value,', ');
}
if( $value == '{' )
{
$stack_pos++;
$stack[$stack_pos] = array($name, array());
}
else
{
if($value[0]=='"')
{
$value = substr($value,1,-1);
}
else if($value == 'true')
{
$value = true;
}
else if($value == 'false')
{
$value = false;
}
else if($value == 'nil')
{
$value = NULL;
}
$stack[$stack_pos][1][$name] = $value;
}
}
}
return($stack[0][1]);
}
}
function q($query,$assoc=0)
{
global $queries;
//echo $query."\n";
$r = @pg_query($query);
if( pg_result_error($r) ) {
$error = 'PGSQL ERROR : <small>' . pg_result_error($r). "</small><br><VAR>$query</VAR>";
echo($error); return FALSE;
}
$queries++;
if( strtolower(substr($query,0,6)) != 'select' ) return pg_affected_rows($r);
$count = @pg_num_rows($r);
if( !$count ) return 0;
if( $count == 1 ) {
if( $assoc ) $f = pg_fetch_assoc($r);
else $f = pg_fetch_row($r);
pg_free_result($r);
if( count($f) == 1 ) {
list($key) = array_keys($f);
return $f[$key];
} else {
$all = array();
$all[] = $f;
return $all;
}
} else {
$all = array();
for( $i = 0; $i < $count; $i++ ) {
if( $assoc ) $f = pg_fetch_assoc($r);
else $f = pg_fetch_row($r);
$all[] = $f;
}
pg_free_result($r);
return $all;
}
}
function getmicrotime()
{
list($usec,$sec)=explode(" ",microtime());
return ((float)$usec+(float)$sec);
}
?>