$b) {
$key = pack("H*",md5($key));
}
$key = str_pad($key, $b, chr(0x00));
$ipad = str_pad('', $b, chr(0x36));
$opad = str_pad('', $b, chr(0x5c));
$k_ipad = $key ^ $ipad ;
$k_opad = $key ^ $opad;
return md5($k_opad . pack("H*",md5($k_ipad . $data)));
}
// -----------------------------------------
function formatTimestamp($time) {
global $datetime, $locale;
setlocale (LC_TIME, $locale);
preg_match("/([0-9]{4})-([0-9]{1,2})-([0-9]{1,2}) ([0-9]{1,2}):([0-9]{1,2}):([0-9]{1,2})/", $time, $datetime);
$datetime = strftime(""._DATESTRING."", mktime($datetime[4],$datetime[5],$datetime[6],$datetime[2],$datetime[3],$datetime[1]));
$datetime = ucfirst($datetime);
return($datetime);
}
// -----------------------------------------
function FixQuotes ($what = "") {
$what = preg_replace("/'/","'",$what);
while (preg_match("/\\\\/i'", $what)) {
$what = preg_replace("/\\\\/'","'",$what);
}
return $what;
}
// -----------------------------------------
function StripQuotes ($what = "") {
$what = preg_replace("/'/","",$what);
while (preg_match("/\\\\/i'", $what)) {
$what = preg_replace("/\\\\'/","",$what);
}
return $what;
}
// -----------------------------------------
function check_html ($str, $strip="") {
/* The core of this code has been lifted from phpslash */
/* which is licenced under the GPL. */
if ($strip == "nohtml")
global $AllowableHTML;
if (!is_array($AllowableHTML)) $AllowableHTML =array('');
$str = stripslashes($str);
$str = preg_replace("/<[[:space:]]*([^>]*)[[:space:]]*>/i",'<\\1>', $str);
// Delete all spaces from html tags .
$str = preg_replace("/]*href[[:space:]]*=[[:space:]]*\"?[[:space:]]*([^\" >]*)[[:space:]]*\"?[^>]*>/i",'', $str);
// Delete all attribs from Anchor, except an href, double quoted.
$str = preg_replace("/<[[:space:]]* img[[:space:]]*([^>]*)[[:space:]]*>/i", '', $str);
// Delete all img tags
$str = preg_replace("/]*href[[:space:]]*=[[:space:]]*\"?javascript[[:punct:]]*\"?[^>]*>/i", '', $str);
// Delete javascript code from a href tags -- Zhen-Xjell @ http://nukecops.com
$tmp = "";
while (preg_match("@<(/?[[:alpha:]]*)[[:space:]]*([^>]*)>@",$str,$reg)) {
$i = strpos($str,$reg[0]);
$l = strlen($reg[0]);
if ($reg[1][0] == "/") $tag = strtolower(substr($reg[1],1));
else $tag = strtolower($reg[1]);
if ($a = $AllowableHTML[$tag])
if ($reg[1][0] == "/") $tag = "$tag>";
elseif (($a == 1) || ($reg[2] == "")) $tag = "<$tag>";
else {
# Place here the double quote fix function.
$attrb_list=delQuotes($reg[2]);
// A VER
$attrb_list = preg_replace("/&/","&",$attrb_list);
$tag = "<$tag" . $attrb_list . ">";
} # Attribs in tag allowed
else $tag = "";
$tmp .= substr($str,0,$i) . $tag;
$str = substr($str,$i+$l);
}
$str = $tmp . $str;
return $str;
exit;
/* Squash PHP tags unconditionally */
$str = preg_replace("/<\?/","",$str);
return $str;
}
// -----------------------------------------
function rat($such,$string) {
$rtlen = strlen($string);
$slen = strlen($such);
$rtpos = 0;
for ($j=$rtlen; $j > 0; $j--) {
$rtchr = substr($string,$j,$slen);
if ($rtchr==$such) {
if ($rtpos==0) {
$rtpos = $j;
$j = 0;
}
}
}
return $rtpos;
}
// -----------------------------------------
function at($such,$string) {
$slen = strlen($such);
$rtlen = strlen($string);
$rtpos = 0;
for ($j=0; $j < $rtlen; $j++) {
$rtchr = substr($string,$j,$slen);
if ($rtchr==$such) {
if ($rtpos==0) {
$rtpos = $j;
$j = $rtlen;
}
}
}
return $rtpos;
}
// -----------------------------------------
function len($t) {
return strlen($t);
}
// -----------------------------------------
function alltrim($s) {
return ltrim(rtrim($s));
}
// -----------------------------------------
// perl port of perl function chomp
function chomp($p) {
$p = str_replace(chr(10),"",$p);
$p = str_replace(chr(13),"",$p);
return $p;
}
// -----------------------------------------
// add a trailing slash
function trailslash($p="") {
if ((substr($p,strlen($p)-1,1)!=chr(47)) and (substr($p,strlen($p)-1,1)!=chr(92))) {
$p = $p.chr(47);
}
return $p;
}
// -----------------------------------------
function removechar($such,$string) {
$slen = strlen($such);
if ($slen==1) {
$rtlen = strlen($string);
$rtxt = "";
for ($j=0; $j < $rtlen; $j++) {
$rtchr = substr($string,$j,$slen);
if ($rtchr==$such) {
// skip
} else {
$rtxt = $rtxt.$rtchr;
}
}
} else {
$rtxt = $string;
}
return $rtxt;
}
// -----------------------------------------
function right($string,$len) {
// len=12
// 12345678.TIC
// 000000000011
// 012345678901
// 4321
// ab 8,4
$rtstr = substr($string,strlen($string)-$len,$len);
return $rtstr;
}
// -----------------------------------------
function checkaka($ct) {
$rfnd = 0;
$lct = len($ct);
$jx = 0;
while ($jx < $lct) {
// check 3d or 4d aka 2:244/1120, 2:244/1120.0
if (preg_match("/([0-9]{1})/",substr($ct,$jx,1))) {
// num found, test aka
$jy = $jx;
while (preg_match("/([0-9]{1})/",substr($ct,$jy,1))) {
$jy++;
}
if (preg_match("/([:]{1})/",substr($ct,$jy,1))) {
$jy++;
while (preg_match("/([0-9]{1})/",substr($ct,$jy,1))) {
$jy++;
}
if (preg_match("@([/]{1})@",substr($ct,$jy,1))) {
$jy++;
while (preg_match("/([0-9]{1})/",substr($ct,$jy,1))) {
$jy++;
}
if (preg_match("/([.]{1})/",substr($ct,$jy,1))) {
$jy++;
while (preg_match("/([0-9]{1})/",substr($ct,$jy,1))) {
$jy++;
}
$rfnd = $jx+1;
$jx = $lct;
} else {
$rfnd = $jx+1;
$jx = $lct;
}
}
}
}
$jx++;
}
if ($rfnd == 0) {
// check 2d aka 244/1120 or 244/1120.0
$jx = 0;
while ($jx < $lct) {
if (preg_match("/([0-9]{1})/",substr($ct,$jx,1))) {
// num found, test aka
$jy = $jx;
while (preg_match("/([0-9]{1})/",substr($ct,$jy,1))) {
$jy++;
}
if (preg_match("@([/]{1})@",substr($ct,$jy,1))) {
$jy++;
while (preg_match("/([0-9]{1})/",substr($ct,$jy,1))) {
$jy++;
}
if (preg_match("/([.]{1})/",substr($ct,$jy,1))) {
$jy++;
while (preg_match("/([0-9]{1})/",substr($ct,$jy,1))) {
$jy++;
}
$rfnd = $jx+1;
$jx = $lct;
} else {
$rfnd = $jx+1;
$jx = $lct;
}
}
}
$jx++;
}
}
return $rfnd;
}
// -----------------------------------------
function removeaka($ct) {
$rfnd = 0;
$lct = len($ct);
$jx = 0;
while ($jx < $lct) {
// check 3d or 4d aka 2:244/1120, 2:244/1120.0
if (preg("/([0-9]{1})/",substr($ct,$jx,1))) {
// num found, test aka
$jy = $jx;
while (preg_match("/([0-9]{1})/",substr($ct,$jy,1))) {
$jy++;
}
if (preg_match("/([:]{1})/",substr($ct,$jy,1))) {
$jy++;
while (preg_match("/([0-9]{1})/",substr($ct,$jy,1))) {
$jy++;
}
if (preg_match("@([/]{1})@",substr($ct,$jy,1))) {
$jy++;
while (preg_match("/([0-9]{1})/",substr($ct,$jy,1))) {
$jy++;
}
if (preg_match("/([.]{1})/",substr($ct,$jy,1))) {
$jy++;
while (preg_match("/([0-9]{1})/",substr($ct,$jy,1))) {
$jy++;
}
$ct = substr($ct,0,$jx-1)." ".substr($ct,$jy);
$rfnd = $jx+1;
$jx = $lct;
} else {
$ct = substr($ct,0,$jx-1)." ".substr($ct,$jy);
$rfnd = $jx+1;
$jx = $lct;
}
}
}
}
$jx++;
}
if ($rfnd == 0) {
// check 2d aka 244/1120 or 244/1120.0
$jx = 0;
while ($jx < $lct) {
if (preg_match("/([0-9]{1})/",substr($ct,$jx,1))) {
// num found, test aka
$jy = $jx;
while (preg_match("/([0-9]{1})/",substr($ct,$jy,1))) {
$jy++;
}
if (preg_match("@([/]{1})@",substr($ct,$jy,1))) {
$jy++;
while (preg_match("/([0-9]{1})/",substr($ct,$jy,1))) {
$jy++;
}
if (preg_match("/([.]{1})/",substr($ct,$jy,1))) {
$jy++;
while (preg_match("/([0-9]{1})/",substr($ct,$jy,1))) {
$jy++;
}
$ct = substr($ct,0,$jx-1)." ".substr($ct,$jy);
$rfnd = $jx+1;
$jx = $lct;
} else {
$ct = substr($ct,0,$jx-1)." ".substr($ct,$jy);
$rfnd = $jx+1;
$jx = $lct;
}
}
}
$jx++;
}
}
return $ct;
}
// -----------------------------------------
// * Function Check Drive + Path + Files.BBS
// -----------------------------------------
function chkdpf($p) {
global $vlddrive,$vldpath,$vldfbbs,$cddrive;
$vlddrive = 0;
$vldpath = 0;
$vldfbbs = 0;
$cddrive = 0;
// prevent CDROM identification for Groups definitions
if ($p!="") {
$drive= substr($p,0,3);
if (is_dir($drive)) {
$vlddrive = 1;
}
$df = disk_free_space($drive);
if ($df==0) {
$cddrive = 1;
}
$file = trim($p);
if (is_dir($file)) {
$vldpath = 1;
}
// if (file_exists($file)) {
$file = trim($p)."FILES.BBS";
if (file_exists($file)) {
$vldfbbs = 1;
}
}
if (DEBUG!=0) {
echo "Path: ".$p." Drive: ".$drive." Diskfree: ".$df."\n";
echo "Drive:Path:Files.Bbs:CD :: ".$vlddrive.":".$vldpath.":".$vldfbbs.":".$cddrive."\n";
}
// returns sum
return $vlddrive+$vldpath+$vldfbbs+$cddrive;
}
// -----------------------------------------
//
// logfile(logtype, text)
//
// logtypes: L regular log
// E error log
// D debug log
// Q close all 'used' logs
// -----------------------------------------
// for init:
// $actpath = str_replace(chr(92),chr(47),getcwd());
// $logfile = $actpath."/nlimport.log";
// $logfile_debug = $actpath."/nlimport_debug.log";
// $logfile_error = $actpath."/nlimport.err";
function logfile($ltyp='0',$ltext='') {
// $logfile = "nlimport.log";
// $logfile_debug = "nlimport_debug.log";
// $logfile_error = "nlimport.err";
// $ltyp: E error, D debug, L regular log, Q program termination, close logs
global $logfile,$logfile_debug,$logfile_error,$crlf,$sid;
$prtxt = "";
// $today = date("D j M y"); // Sat Mar 10 15:16:08 MST 2001
if (isset($sid)) {
$ldat = $crlf."---------- ".date("D j M y",time())." [".$sid."], ".PROG."; Import".$crlf;
$ltim = "# ".date("H:i:s",time())." [".$sid."] ";
} else {
$ldat = $crlf."---------- ".date("D j M y",time()).", ".PROG."; Import".$crlf;
$ltim = "# ".date("H:i:s",time())." ";
}
if (strtoupper($ltyp)=="Q") {
$fin = $ltim.PROG." finished.".$crlf;
// close all opened logs
if (defined('_LDEFLOG')) {
$llf = $logfile;
$fp = fopen($llf, "a");
fputs($fp,$fin);
fclose($fp);
}
if (defined('_LDEFDBG')) {
$llf = $logfile_debug;
$fp = fopen($llf, "a");
fputs($fp,$fin);
fclose($fp);
}
if (defined('_LDEFERR')) {
$llf = $logfile_error;
$fp = fopen($llf, "a");
fputs($fp,$fin);
fclose($fp);
}
} else {
// Header? ---------- Fri 28 Dec 07, Z2PNTHDR 1.00; Build
// Entry # 12:05:41 Total Regions found in Config: 25
if (strtoupper($ltyp)=="E") {
$llf = $logfile_error;
// $fp = fopen($llf, "a");
if (!defined('_LDEFERR')) {
define('_LDEFERR',True);
$prtxt = $ldat;
}
// fclose($fp);
} else {
if (strtoupper($ltyp)=="D") {
$llf = $logfile_debug;
if (!defined('_LDEFDBG')) {
define('_LDEFDBG',True);
$prtxt = $ldat;
}
} else {
$llf = $logfile;
if (!defined('_LDEFLOG')) {
define('_LDEFLOG',True);
$prtxt = $ldat;
}
}
}
$fp = fopen($llf, "a");
fputs($fp,$prtxt.$ltim.$ltext.$crlf);
fclose($fp);
}
return True;
}
// -----------------------------------------
// Packer Support
// -----------------------------------------
// for init:
// require_once 'includes/configurator2.php';
// $compresscfg = Configurator::open('includes/compress.cfg');
// $compresscfg->parse();
// $pck = array();
// $pck = $compresscfg->getDirectives();
// // print_r($compresscfg->getDirectives());
function packeridentifier($test) {
global $pck;
$xi = count($pck);
$htest = "";
for ($i=0;$i<6;$i++) {
$htest .= sprintf("%02x",ord(substr($test,$i,1)));
}
// $htest = sprintf("%07x",$test);
if (DEBUG) {
echo "[".$htest."]\r\n";
}
$i = 0;
//for ($i=0;$i<$xi;$i++) {
foreach ($pck as $p1) {
$i++;
//$p1 = current($pck);
if (DEBUG) {
echo "(".$i.") ";
print_r($p1);
}
// 0,526172211a0700
// 0 1 2 3 4 5 6
//$cmpcmd = explode(",",$pck[$i]['Ident']);
//echo "[".str_repeat(" ",$cmpcmd[0]).$cmpcmd[1]."]".$pck[$i]['Ident']."\r\n";
// echo "[".$i."] ".$p1['Ident']."\r\n";
$cmpcmd = explode(",",alltrim($p1['Ident']));
// echo $cmpcmd[0]." => ".$cmpcmd[1]." => ".key($pck)."\r\n";
if (substr($htest,$cmpcmd[0]*2,strlen($cmpcmd[1]))==$cmpcmd[1]) {
// echo "[".substr($htest,$cmpcmd[0]*2,strlen($cmpcmd[1]))."] in [".$htest."]\r\n";
// return key($pck);
return $p1['Extension'];
}
//next($pck);
}
return False;
}
// -----------------------------------------
//
// Temp Dir support
//
// -----------------------------------------
// for init:
// // our $tmpdir = tempdir(CLEANUP => 1);
// $tmpdir = tempnam("", "tmp");
// if (is_file($tmpdir)) {
// unlink($tmpdir);
// }
// $tmp2dir = $actpath."/".basename($tmpdir);
// if (is_dir($tmp2dir)) {
// // use existing path?
// } else {
// mkdir($tmp2dir, 0700);
// if (is_dir($tmp2dir)) {
// // ok
// } else {
// logfile("E","Tempdir ".$tmp2dir." couldn't be created.");
// die("Tempdir couldn't be created.");
// }
// }
// // remove temp dir
// if (is_dir($tmp2dir)) {
// // remove temp path
// chdir($actpath);
// full_rmdir(basename($tmpdir));
// }
function unpackndl2tmp($archiv,$packer) {
global $tmp2dir,$pck;
$actualdir = getcwd();
chdir($tmp2dir);
$cmdstring = $pck[$packer]['Extract'];
$cmdshl = str_replace(" %f", "", $cmdstring);
$cmdshl = str_replace("%a", $archiv, $cmdshl);
echo $cmdshl."\r\n";
// to directory ".getcwd()."\r\n";
logfile('D',$cmdshl);
passthru($cmdshl,$rw);
// echo $rw."\r\n";
chdir($actualdir);
return True;
}
// -----------------------------------------
function full_rmdir( $dir ) {
if ( !is_writable( $dir ) ) {
if ( !@chmod( $dir, 0777 ) ) {
return FALSE;
}
}
$d = dir( $dir );
while ( FALSE !== ( $entry = $d->read() ) ) {
if ( $entry == '.' || $entry == '..' ) {
continue;
}
$entry = $dir . '/' . $entry;
if ( is_dir( $entry ) ) {
if ( !$this->full_rmdir( $entry ) ) {
return FALSE;
}
continue;
}
if ( !@unlink( $entry ) ) {
$d->close();
return FALSE;
}
}
$d->close();
rmdir( $dir );
return TRUE;
}
// -----------------------------------------
function cleantmpdir() {
global $tmp2dir;
$actualdir = getcwd();
chdir($tmp2dir);
$workdir = $tmp2dir."\\";
$blockslist = array();
$blocksdir = dir($workdir);
while($func=$blocksdir->read()) {
$blockslist .= "$func ";
// echo $sourcepath.$func."\r\n";
if (strtoupper($func)<>".") {
if (strtoupper($func)<>"..") {
if (is_dir($workdir.$func)) {
// name is a subdir
// recursivly handle paths
full_rmdir($workdir.$func);
} else {
// no path, is file
// $input = file_get_contents($areapath.$func);
// $fbbs = $input;
if (file_exists($workdir.$func)) {
unlink($workdir.$func);
}
}
}
}
}
chdir($actualdir);
return True;
}
/* --------- CRC16 (Xmodem, FTSC) ----------------------- */
function crc16dt1() {
define('_CRC16Tab',True);
logfile('D', "Build CRC16 table.");
global $CRC16Tab;
$i = 0;
for ($i = 0; $i < 256; $i++) {
$CRC16Tab[$i] = crc16dt2($i);
}
}
// -----------------------------------------
function crc16dt2($index) {
$i=0;
$a = 0;
$index <<= 8;
for ($i=8; $i>0; $i--) {
if (( $index ^ $a ) & 0x8000 ) {
$a = ($a << 1) ^ 0x1021;
} else {
$a <<= 1;
}
$index <<= 1;
}
return ($a & 0xFFFF);
}
// -----------------------------------------
function crc16dtf($fstr) {
if (!defined('_CRC16Tab')) {
// Build CRC16 table
crc16dt1();
}
global $CRC16Tab;
$lfcrc = 0;
// $lfcrc = crc16dti($lfcrc);
$lfcrc = crc16dtp($lfcrc,$fstr,strlen($fstr));
return $lfcrc;
}
// -----------------------------------------
function crc16dtp($crcptr,$buffer,$length) {
if (!defined('_CRC16Tab')) {
// Build CRC16 table
crc16dt1();
}
global $CRC16Tab;
// const unsigned char *ptr = buffer;
// $ptr = 0;
// size_t ctr;
$ctr = 0;
for ($ctr = 0; $ctr < $length; $ctr++) {
$ptr = ord(substr($buffer,$ctr,1));
$crcptr = (((($crcptr) << 8) ^
$CRC16Tab [ (((($crcptr) >> 8) ^ ($ptr)) & 0xFF) ])
& 0xFFFF);
}
return $crcptr;
}
// -----------------------------------------
function doy2date($y,$dno) {
// date("M-d-Y", mktime(0, 0, 0, 1, 1, 98));
$i = 0;
$j = 0;
while ($dno>0) {
$i++;
$lastday = mktime(0, 0, 0, $i+1, 0, $y);
if ($lastday < $dno) {
$dno = $dno - $lastday;
} else {
$j = $dno;
$dno = 0;
}
}
$dat = date("Y-m-d",mktime(0,0,0,$i, $j, $y));
return $dat;
}
/* --------- end funtions ------------------------------ */
?>