1) ; if (($errstr = SaveConfig($configFileName, $tmpcfg)) || ($errstr = (@include $configFileName) ? '' : "Can not include $configFileName")) { echo $errstr ; exit ; } } if (isset($hCfg) && !isset($cfgPars)) $cfgPars = $hCfg ; # compatibility with the version 1.00 $cfgPars['InstallDir'] = $installDir ; # Get the urls $cfgPars = $cfgPars + Urls(); $cfgPars['ProgNameHtml'] = 'asRep MySQL Version '. MYVERSION .' Administration' ; # Get the cgi inputs $cgiPars = getInputs(); # Check for the admin name if (!strlen($cfgPars['AdminName']) || !strlen($cfgPars['AdminPassEnc'])) { if (isset($cgiPars['state']) && $cgiPars['state'] == 'adminname') { $errstr = SaveAdminName($configFileName, $cfgPars, $cgiPars) ; $errstr ? DispAdminName($cfgPars, $errstr) : header("Location: $cfgPars[Url]") ; }else { DispAdminName($cfgPars, '') ; } exit ; } # verify the user if(!VerifyUserLogin($cfgPars, $cgiPars)) exit() ; # Test mysql connection $dbh = DBConnect($cfgPars['DbHost'], $cfgPars['DbPort'], $cfgPars['DbUser'], $cfgPars['DbPass'], true) ; if (!$dbh || !DBSelect($dbh, $cfgPars['DbName'], true)) { if (isset($cgiPars['state']) && $cgiPars['state'] == 'dbsettings') { $errstr = SaveDBSettings($configFileName, $cfgPars, $cgiPars) ; strlen($errstr) ? DispDBSettings($cfgPars, $errstr) : header("Location: $cfgPars[Url]") ; }else { DispDBSettings($cfgPars, mysql_error()) ; } exit ; } # Create tables if (empty($cgiPars['VersionUpgrade'])){ list ($tables) = DBQueryInArrays($dbh, "SHOW TABLES"); $tfields = TableFields() ; while (list($k,$v) = each($cfgPars['Tbl'])) { $isin = in_array($v, $tables) ; if (!$isin) { $isin = in_array(strtolower($v), $tables) ; if (!$isin) DBQuery($dbh, "CREATE TABLE $v ($tfields[$k])") ; } } } # Version upgrade if ($cfgPars['Version'] < MYVERSION) { if ($cfgPars['Version'] == '1.25'){ $errstr = version125Upgrade($dbh, $configFileName, $cfgPars, $cgiPars) ; }elseif ($cfgPars['Version'] == '1.30'){ $errstr = version130Upgrade($dbh, $configFileName, $cfgPars, $cgiPars) ; }else{ $errstr = "This version of asRep (v." . MYVERSION . ") is not compatible with your version (v." . $cfgPars['Version'] . ")" . "

Still you can make a fresh installation by deleting the 'settings.php' file from the install directory.". " However this will forget your current tracking data since it will open new database tables." . "

To upgrade your data tables also, you need a previous version of asRep." . " For this, please contact us via" . " this form.". " Do not forget to mention your registration key, your current version number and your script type (PHP or Perl)" ; } if (strlen($errstr)) { echo ($errstr) ; }else{ $url = SelfUrl($cfgPars, $cgiPars) ; header("Location: $url") ; } exit ; } # do tasks $errorstr = '' ; if(!isset($cgiPars['state'])) $cgiPars['state']='' ; if (empty($cgiPars['state']) || $cgiPars['state'] == 'login') DispSetup($cfgPars, $cgiPars, $errorstr) ; if ($cgiPars['state'] == 'dbBackup') $errorstr = DbBackup($dbh, $cfgPars, $cgiPars) ; if ($cgiPars['state'] == 'dbRestore') $errorstr = DbRestore($dbh, $cfgPars, $cgiPars) ; if ($cgiPars['state'] == 'dbRepair') $errorstr = DbRepair($dbh, $cfgPars, $cgiPars) ; if ($cgiPars['state'] == 'dbOptimize') $errorstr = DbOptimize($dbh, $cfgPars, $cgiPars) ; if ($cgiPars['state'] == 'timezone') $errorstr = SaveTimeZone($configFileName, $cfgPars, $cgiPars) ; if ($cgiPars['state'] == 'email') $errorstr = SaveEmail($configFileName, $cfgPars, $cgiPars) ; if ($cgiPars['state'] == 'ipcc' && $cgiPars['update']) $errorstr = GetIpCc($dbh, $cfgPars, $cgiPars) ; if ($cgiPars['state'] == 'mapip2cc') $errorstr = MapIp2Cc($dbh, $cfgPars, $cgiPars) ; if ($cgiPars['state'] == 'cnotify') $errorstr = SaveClickNotify($configFileName, $cfgPars, $cgiPars) ; if ($cgiPars['state'] == 'blockIPrange') $errorstr = SaveBlockedIPs($configFileName, $cfgPars, $cgiPars) ; if ($cgiPars['state'] == 'regkey') $errorstr = SaveRegKey($configFileName, $cfgPars, $cgiPars) ; if ($cgiPars['state'] == 'dbmaintenance' || $cgiPars['state'] == 'dbBackup' || $cgiPars['state'] == 'dbRestore' || $cgiPars['state'] == 'dbRepair' || $cgiPars['state'] == 'dbOptimize') DispDbMaintenance($dbh, $cfgPars, $cgiPars, $errorstr) ; if ($cgiPars['state'] == 'vtimezone' || $cgiPars['state'] == 'timezone') DispTimeZone($cfgPars, $cgiPars, $errorstr) ; if ($cgiPars['state'] == 'vemail' || $cgiPars['state'] == 'email') DispEmail($cfgPars, $cgiPars, $errorstr) ; if ($cgiPars['state'] == 'vipcc' || $cgiPars['state'] == 'ipcc' || $cgiPars['state'] == 'mapip2cc') DispIp2Country($cfgPars, $cgiPars, $errorstr) ; if ($cgiPars['state'] == 'vcnotify' || $cgiPars['state'] == 'cnotify') DispClickNotify($cfgPars, $cgiPars, $errorstr) ; if ($cgiPars['state'] == 'vtrackcode' || $cgiPars['state'] == 'trackcode') DispTrackCode($cfgPars, $cgiPars, $errorstr) ; if ($cgiPars['state'] == 'vblocktracking' || $cgiPars['state'] == 'blockIPrange' || $cgiPars['state'] == 'blocksetcookie' || $cgiPars['state'] == 'blockdelcookie') DispBlockTracking($cfgPars, $cgiPars, $errorstr) ; if ($cgiPars['state'] == 'vupdate' || $cgiPars['state'] == 'regkey') DispUpdate($cfgPars, $cgiPars, $errorstr) ; if ($cgiPars['state'] == 'update') DispDownloadUpdates($cfgPars, $cgiPars) ; if ($cgiPars['state'] == 'fview') DispFileView($cfgPars, $cgiPars); if ($cgiPars['state'] == 'factivate') DispFileAct($cfgPars, $cgiPars) ; if ($cgiPars['state'] == 'vlogout') Logout($cfgPars); mysql_close($dbh) ; ###################################################### function SelfUrl(&$cfg, &$pars){ $url = $cfg['Url'] ; $sep = '?' ; foreach ($pars as $k => $v){ $url .= $sep . $k . '=' . urlencode($v) ; $sep = '&' ; } return $url ; } #--------- Escape the string for single quotation mark -------------- function Esc ($str){ return addcslashes($str, '\'\\') ; } ###################################################### #--------- Table fields -------------- function TableFields() { return array( 'Logs' => ' vTime INT UNSIGNED NOT NULL' . ', Id TINYINT UNSIGNED NOT NULL' . ', cTime TINYINT UNSIGNED NOT NULL' . ', auInfo1 TINYINT UNSIGNED NOT NULL' . ', auInfo2 TINYINT UNSIGNED NOT NULL' . ', Ip INT UNSIGNED NOT NULL' . ', cCode CHAR(2) BINARY NOT NULL' . ', piId INT UNSIGNED NOT NULL' . ', rpagId INT UNSIGNED NOT NULL' . ', adId INT UNSIGNED NOT NULL' . ', PRIMARY KEY (vTime, Id)' , 'PageInfo' => 'Id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY' . ', pagId INT UNSIGNED NOT NULL' . ', domId SMALLINT UNSIGNED NOT NULL' . ', asId0 MEDIUMINT UNSIGNED NOT NULL DEFAULT 0' . ', asId1 MEDIUMINT UNSIGNED NOT NULL DEFAULT 0' . ', asId2 MEDIUMINT UNSIGNED NOT NULL DEFAULT 0' . ', asId3 MEDIUMINT UNSIGNED NOT NULL DEFAULT 0' . # for Ad Link ', wsChId0 SMALLINT UNSIGNED NOT NULL DEFAULT 0' . ', wsChId1 SMALLINT UNSIGNED NOT NULL DEFAULT 0' . ', INDEX (pagId)' , 'Domains' => 'Id SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY' . ', FP SMALLINT UNSIGNED NOT NULL' . ', Value VARCHAR(255) NOT NULL' . ', INDEX (FP)' , 'Pages' => 'Id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY' . ', FP SMALLINT UNSIGNED NOT NULL' . ', Value BLOB NOT NULL' . ', INDEX (FP)' , 'Dirs' => ' pagId INT UNSIGNED NOT NULL' . ', offset TINYINT UNSIGNED NOT NULL' . ', leaf CHAR(0)' . ', INDEX (pagId)' , 'AdSense' => 'Id MEDIUMINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY' . ', FP SMALLINT UNSIGNED NOT NULL' . ', chId SMALLINT UNSIGNED NOT NULL' . ', format CHAR(16) NOT NULL' . ', fb CHAR(1) NOT NULL' . ', color_bg CHAR(6) NOT NULL' . ', color_text CHAR(6) NOT NULL' . ', color_link CHAR(6) NOT NULL' . ', color_url CHAR(6) NOT NULL' . ', color_border CHAR(6) NOT NULL' . ', color_line CHAR(6) NOT NULL' . ', INDEX (FP)' , 'Channels' => 'Id SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY' . ', ws CHAR(0) DEFAULT NULL' . ', channel CHAR(12) NOT NULL' . ', name CHAR(32) NOT NULL' . ', INDEX (channel)', 'rDomains' => 'Id MEDIUMINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY' . ', FP SMALLINT UNSIGNED NOT NULL' . ', Value VARCHAR(255) NOT NULL' . ', INDEX (FP)' , 'rPages' => 'Id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY' . ', rdomId MEDIUMINT UNSIGNED NOT NULL' . ', FP SMALLINT UNSIGNED NOT NULL' . ', Value BLOB NOT NULL' . ', INDEX (FP)' , 'AdUrls' => 'Id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY' . ', FP SMALLINT UNSIGNED NOT NULL' . ', Value VARCHAR(255) NOT NULL' . ', INDEX (FP)' , 'IpRangeNames' => 'Code CHAR(2) BINARY NOT NULL PRIMARY KEY' . ', Name VARCHAR(64) NOT NULL' , 'IpRanges' => 'Type TINYINT UNSIGNED NOT NULL' . ', Code CHAR(2) BINARY NOT NULL' . ', IpSeg SMALLINT UNSIGNED NOT NULL' . ', StartIp INT UNSIGNED NOT NULL' . ', EndIp INT UNSIGNED NOT NULL' . ', INDEX (IpSeg)' , ) ; } #--------- version upgrade tasks -------------- function vuRedir(&$cfg, &$pars) { if (empty($pars['VersionUpgrade'])) { $pars['VersionUpgrade'] = 0; if ($filedesc = @fopen(FullPath("vustep.txt", $cfg['InstallDir']), 'rb')) { $pars['VersionUpgrade'] = 0+fread($filedesc,1024) ; fclose($filedesc) ; } $pars['VersionUpgrade']++ ; $url = SelfUrl($cfg, $pars) ; echo "" . "asRep is going to start a database upgrade procedure (from v.".$cfg['Version']." to v.".MYVERSION.").
" . "This may take several minutes.
" . "

Please do NOT interrupt the upgrade process since it may cause loss of data." . "

If this task fails (displays an error), " . "please note the URL in the browser's address bar and contact www.asrep.com for assistance." . "

Click here once to start the database upgrade.
" . "" ; }elseif ($pars['VersionUpgrade'] == 'end') { $fname = FullPath("vustep.txt", $cfg['InstallDir']) ; if (file_exists($fname)) unlink($fname) ; }else{ if ($filedesc = @fopen(FullPath("vustep.txt", $cfg['InstallDir']), 'wb')) { fwrite($filedesc, $pars['VersionUpgrade']) ; fclose($filedesc) ; } $pars['VersionUpgrade']++; $url = SelfUrl($cfg, $pars) ; echo "" . "". "" . "asRep database upgrade is in progress.
" . "Finished task# " . ($pars['VersionUpgrade']-1) . ".
" . "Requesting task# " . $pars['VersionUpgrade'] . ".
" . "

Some tasks may take long time to complete. Please do not interrupt the upgrade process since it may cause loss of data." . "

If this task fails (displays an error), " . "please note the URL in the browser's address bar and contact www.asrep.com for assistance." . "" ; } } #--------- version upgrade tasks -------------- function version125Upgrade($dbh, $fname, $ocfg, &$pars) { eval(getConfigStr($ocfg)) ; $ncfg = $cfgPars ; $tfields = TableFields() ; if (empty($pars['VersionUpgrade'])) { vuRedir($ocfg, $pars) ; exit(); } if ($pars['VersionUpgrade'] == 1){ # change name of the db tables. DBQuery($dbh, "REPAIR TABLE" . " {$ocfg['Tbl']['Logs']}" . ", {$ocfg['Tbl']['PageInfo']}" . ", {$ocfg['Tbl']['Domains']}" . ", {$ocfg['Tbl']['Pages']}" . ", {$ocfg['Tbl']['Dirs']}" . ", {$ocfg['Tbl']['rDomains']}" . ", {$ocfg['Tbl']['rPages']}" . ", {$ocfg['Tbl']['AdUrls']}" . ", {$ocfg['Tbl']['AdSense']}" . ", {$ocfg['Tbl']['ChannelDef']}" . ", {$ocfg['Tbl']['IpRangeNames']}" . ", {$ocfg['Tbl']['IpRanges']}" ) ; DBQuery($dbh, "RENAME TABLE" . " {$ocfg['Tbl']['Logs']} TO {$ncfg['Tbl']['Logs']}" . ", {$ocfg['Tbl']['PageInfo']} TO {$ncfg['Tbl']['PageInfo']}" . ", {$ocfg['Tbl']['Domains']} TO {$ncfg['Tbl']['Domains']}" . ", {$ocfg['Tbl']['Pages']} TO {$ncfg['Tbl']['Pages']}" . ", {$ocfg['Tbl']['Dirs']} TO {$ncfg['Tbl']['Dirs']}" . ", {$ocfg['Tbl']['rDomains']} TO {$ncfg['Tbl']['rDomains']}" . ", {$ocfg['Tbl']['rPages']} TO {$ncfg['Tbl']['rPages']}" . ", {$ocfg['Tbl']['AdUrls']} TO {$ncfg['Tbl']['AdUrls']}" . ", {$ocfg['Tbl']['AdSense']} TO {$ncfg['Tbl']['AdSense']}" . ", {$ocfg['Tbl']['ChannelDef']} TO {$ncfg['Tbl']['Channels']}" . ", {$ocfg['Tbl']['IpRangeNames']} TO {$ncfg['Tbl']['IpRangeNames']}" # ", {$ocfg['Tbl']['IpRanges']} TO {$ncfg['Tbl']['IpRanges']}" ) ; DBQuery($dbh, "DROP TABLE {$ocfg['Tbl']['Logs']}", true) ; DBQuery($dbh, "DROP TABLE {$ocfg['Tbl']['PageInfo']}", true) ; DBQuery($dbh, "DROP TABLE {$ocfg['Tbl']['Domains']}", true) ; DBQuery($dbh, "DROP TABLE {$ocfg['Tbl']['Pages']}", true) ; DBQuery($dbh, "DROP TABLE {$ocfg['Tbl']['Dirs']}", true) ; DBQuery($dbh, "DROP TABLE {$ocfg['Tbl']['rDomains']}", true) ; DBQuery($dbh, "DROP TABLE {$ocfg['Tbl']['rPages']}", true) ; DBQuery($dbh, "DROP TABLE {$ocfg['Tbl']['AdUrls']}", true) ; DBQuery($dbh, "DROP TABLE {$ocfg['Tbl']['AdSense']}", true) ; DBQuery($dbh, "DROP TABLE {$ocfg['Tbl']['ChannelDef']}", true) ; DBQuery($dbh, "DROP TABLE {$ocfg['Tbl']['IpRangeNames']}", true) ; # DBQuery($dbh, "DROP TABLE {$ocfg['Tbl']['IpRanges']}", true) ; vuRedir($ocfg, $pars) ; exit(); } if ($pars['VersionUpgrade'] == 2){ # Change The Channels table DBQuery($dbh, "ALTER TABLE {$ncfg['Tbl']['Channels']} DROP PRIMARY KEY") ; DBQuery($dbh, "ALTER TABLE {$ncfg['Tbl']['Channels']} ADD Id SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY") ; DBQuery($dbh, "ALTER TABLE {$ncfg['Tbl']['Channels']} ADD ws CHAR(0) DEFAULT NULL") ; DBQuery($dbh, "ALTER TABLE {$ncfg['Tbl']['Channels']} ADD INDEX (channel)") ; vuRedir($ocfg, $pars) ; exit(); } if ($pars['VersionUpgrade'] == 3){ # Insert the channels into Channels table from AdSense table $sth = DBQuery($dbh, "SELECT ast.channel" . " FROM {$ncfg['Tbl']['AdSense']} AS ast LEFT JOIN {$ncfg['Tbl']['Channels']} AS cdt ON ast.channel=cdt.channel" . " WHERE ISNULL(cdt.channel)>0" . " GROUP BY ast.channel") ; while($rec_r = mysql_fetch_row($sth)) { DBQuery($dbh, "INSERT INTO {$ncfg['Tbl']['Channels']} (Id,ws,channel,name) VALUES(NULL,NULL,". DBQuote($rec_r[0]).",'')") ; } mysql_free_result($sth); vuRedir($ocfg, $pars) ; exit(); } if ($pars['VersionUpgrade'] == 4){ # Insert the Id's of the channels into AdSense table DBQuery($dbh, "ALTER TABLE {$ncfg['Tbl']['AdSense']} ADD chId SMALLINT UNSIGNED NOT NULL") ; $sth = DBQuery($dbh, "SELECT Id,channel FROM {$ncfg['Tbl']['Channels']}") ; while($rec_r = mysql_fetch_row($sth)) { DBQuery($dbh, "UPDATE {$ncfg['Tbl']['AdSense']} SET chId=".DBQuote($rec_r[0])." WHERE channel=". DBQuote($rec_r[1])) ; } mysql_free_result($sth); DBQuery($dbh, "ALTER TABLE {$ncfg['Tbl']['AdSense']} DROP INDEX channel") ; DBQuery($dbh, "ALTER TABLE {$ncfg['Tbl']['AdSense']} DROP channel") ; DBQuery($dbh, "ALTER TABLE {$ncfg['Tbl']['AdSense']} DROP hl") ; DBQuery($dbh, "ALTER TABLE {$ncfg['Tbl']['AdSense']} ADD color_line CHAR(6) NOT NULL") ; vuRedir($ocfg, $pars) ; exit(); } if ($pars['VersionUpgrade'] == 5){ # update the FP field $sth = DBQuery($dbh, "SELECT Id,chId,format,fb,color_bg,color_text,color_link,color_url,color_border,color_line". " FROM {$ncfg['Tbl']['AdSense']}") ; while($rec_r = mysql_fetch_row($sth)) { $fp = FingerPrint($rec_r[1].$rec_r[2].$rec_r[3].$rec_r[4].$rec_r[5].$rec_r[6].$rec_r[7].$rec_r[8].$rec_r[9], 2); DBQuery($dbh, "UPDATE {$ncfg['Tbl']['AdSense']} SET FP=$fp WHERE Id=$rec_r[0]") ; } mysql_free_result($sth); vuRedir($ocfg, $pars) ; exit(); } if ($pars['VersionUpgrade'] == 6){ # Add websearch channels to PageInfo DBQuery($dbh, "ALTER TABLE {$ncfg['Tbl']['PageInfo']} CHANGE asId0 asId0 MEDIUMINT UNSIGNED NOT NULL DEFAULT 0") ; DBQuery($dbh, "ALTER TABLE {$ncfg['Tbl']['PageInfo']} CHANGE asId1 asId1 MEDIUMINT UNSIGNED NOT NULL DEFAULT 0") ; DBQuery($dbh, "ALTER TABLE {$ncfg['Tbl']['PageInfo']} CHANGE asId2 asId2 MEDIUMINT UNSIGNED NOT NULL DEFAULT 0") ; DBQuery($dbh, "ALTER TABLE {$ncfg['Tbl']['PageInfo']} ADD wsChId0 SMALLINT UNSIGNED NOT NULL DEFAULT 0") ; DBQuery($dbh, "ALTER TABLE {$ncfg['Tbl']['PageInfo']} ADD wsChId1 SMALLINT UNSIGNED NOT NULL DEFAULT 0") ; vuRedir($ocfg, $pars) ; exit(); } if ($pars['VersionUpgrade'] == 7){ # remove '-' from AdUrls table and set adId in Logs table to 0 for non-clicked records DBQuery($dbh, "UPDATE {$ncfg['Tbl']['Logs']} SET adId=0 WHERE cTime=0") ; vuRedir($ocfg, $pars) ; exit(); } if ($pars['VersionUpgrade'] == 8){ # Insert an Ip Segment into IpRange table DBQuery($dbh, "CREATE TABLE {$ncfg['Tbl']['IpRanges']} ({$tfields['IpRanges']})") ; $sth = DBQuery($dbh, "SELECT Type, Code, StartIp, EndIp FROM {$ocfg['Tbl']['IpRanges']}") ; while($rec_r = mysql_fetch_row($sth)) { $sseg = (int)($rec_r[2] / 65536) ; $eseg = (int)($rec_r[3] / 65536) ; while($sseg <= $eseg) { DBQuery($dbh, "INSERT INTO {$ncfg['Tbl']['IpRanges']} (Type,Code,IpSeg,StartIp,EndIp)". " VALUES($rec_r[0],". DBQuote($rec_r[1]).",$sseg, $rec_r[2], $rec_r[3])") ; $sseg ++ ; } } mysql_free_result($sth); DBQuery($dbh, "DROP TABLE {$ocfg['Tbl']['IpRanges']}", true) ; vuRedir($ocfg, $pars) ; exit(); } if ($pars['VersionUpgrade'] == 9){ # v.1.30 # add a new field for AdLinks into PageInfo table DBQuery($dbh, "ALTER TABLE {$ncfg['Tbl']['PageInfo']} ADD asId3 MEDIUMINT UNSIGNED NOT NULL DEFAULT 0") ; vuRedir($ocfg, $pars) ; exit(); } $errstr = SaveConfig($fname, $ocfg) ; $pars['VersionUpgrade'] = 'end' ; vuRedir($ocfg, $pars) ; return $errstr ; } #--------- version upgrade tasks -------------- function version130Upgrade($dbh, $fname, $ocfg, &$pars) { eval(getConfigStr($ocfg)) ; $ncfg = $cfgPars ; $tfields = TableFields() ; if (empty($pars['VersionUpgrade'])) { vuRedir($ocfg, $pars) ; exit(); } if ($pars['VersionUpgrade'] == 1){ DBQuery($dbh, "REPAIR TABLE" . " {$ocfg['Tbl']['Logs']}" . ", {$ocfg['Tbl']['PageInfo']}" . ", {$ocfg['Tbl']['Domains']}" . ", {$ocfg['Tbl']['Pages']}" . ", {$ocfg['Tbl']['Dirs']}" . ", {$ocfg['Tbl']['rDomains']}" . ", {$ocfg['Tbl']['rPages']}" . ", {$ocfg['Tbl']['AdUrls']}" . ", {$ocfg['Tbl']['AdSense']}" . ", {$ocfg['Tbl']['Channels']}" . ", {$ocfg['Tbl']['IpRangeNames']}" . ", {$ocfg['Tbl']['IpRanges']}" ) ; # change name of the db tables. DBQuery($dbh, "RENAME TABLE" . " {$ocfg['Tbl']['Logs']} TO {$ncfg['Tbl']['Logs']}" . ", {$ocfg['Tbl']['PageInfo']} TO {$ncfg['Tbl']['PageInfo']}" . ", {$ocfg['Tbl']['Domains']} TO {$ncfg['Tbl']['Domains']}" . ", {$ocfg['Tbl']['Pages']} TO {$ncfg['Tbl']['Pages']}" . ", {$ocfg['Tbl']['Dirs']} TO {$ncfg['Tbl']['Dirs']}" . ", {$ocfg['Tbl']['rDomains']} TO {$ncfg['Tbl']['rDomains']}" . ", {$ocfg['Tbl']['rPages']} TO {$ncfg['Tbl']['rPages']}" . ", {$ocfg['Tbl']['AdUrls']} TO {$ncfg['Tbl']['AdUrls']}" . ", {$ocfg['Tbl']['AdSense']} TO {$ncfg['Tbl']['AdSense']}" . ", {$ocfg['Tbl']['Channels']} TO {$ncfg['Tbl']['Channels']}" . ", {$ocfg['Tbl']['IpRangeNames']} TO {$ncfg['Tbl']['IpRangeNames']}" . ", {$ocfg['Tbl']['IpRanges']} TO {$ncfg['Tbl']['IpRanges']}" ) ; DBQuery($dbh, "DROP TABLE {$ocfg['Tbl']['Logs']}", true) ; DBQuery($dbh, "DROP TABLE {$ocfg['Tbl']['PageInfo']}", true) ; DBQuery($dbh, "DROP TABLE {$ocfg['Tbl']['Domains']}", true) ; DBQuery($dbh, "DROP TABLE {$ocfg['Tbl']['Pages']}", true) ; DBQuery($dbh, "DROP TABLE {$ocfg['Tbl']['Dirs']}", true) ; DBQuery($dbh, "DROP TABLE {$ocfg['Tbl']['rDomains']}", true) ; DBQuery($dbh, "DROP TABLE {$ocfg['Tbl']['rPages']}", true) ; DBQuery($dbh, "DROP TABLE {$ocfg['Tbl']['AdUrls']}", true) ; DBQuery($dbh, "DROP TABLE {$ocfg['Tbl']['AdSense']}", true) ; DBQuery($dbh, "DROP TABLE {$ocfg['Tbl']['ChannelDef']}", true) ; DBQuery($dbh, "DROP TABLE {$ocfg['Tbl']['IpRangeNames']}", true) ; DBQuery($dbh, "DROP TABLE {$ocfg['Tbl']['IpRanges']}", true) ; vuRedir($ocfg, $pars) ; exit(); } if ($pars['VersionUpgrade'] == 2){ # add a new field for AdLinks into PageInfo table DBQuery($dbh, "ALTER TABLE {$ncfg['Tbl']['PageInfo']} ADD asId3 MEDIUMINT UNSIGNED NOT NULL DEFAULT 0") ; vuRedir($ocfg, $pars) ; exit(); } if ($pars['VersionUpgrade'] == 3){ # do we need to shrink Channels table? $sth = DBQuery($dbh, "SELECT COUNT(DISTINCT ISNULL(ws)>0, channel) FROM {$ncfg['Tbl']['Channels']}") ; list($dcc) = mysql_fetch_row($sth) ; mysql_free_result($sth); $sth = DBQuery($dbh, "SELECT COUNT(*) FROM {$ncfg['Tbl']['Channels']}") ; list($cc) = mysql_fetch_row($sth) ; mysql_free_result($sth); if ($cc>$dcc) { # Oops! DBQuery($dbh, "CREATE TABLE {$ncfg['Tbl']['Channels']}tmp ({$tfields['Channels']})") ; DBQuery($dbh, "INSERT INTO {$ncfg['Tbl']['Channels']}tmp (Id,ws,channel,name)" . " SELECT NULL,ws,channel,'' FROM {$ncfg['Tbl']['Channels']}". " GROUP BY IFNULL(ws,1),channel") ; DBQuery($dbh, "REPAIR TABLE {$ncfg['Tbl']['Channels']}, {$ncfg['Tbl']['Channels']}tmp" ) ; DBQuery($dbh, "RENAME TABLE {$ncfg['Tbl']['Channels']} TO orichannels" . ", {$ncfg['Tbl']['Channels']}tmp TO {$ncfg['Tbl']['Channels']}" ) ; $sth = DBQuery($dbh, "SELECT cht.Id, ocht.Id, ISNULL(cht.ws)>0" . " FROM {$ncfg['Tbl']['Channels']} AS cht, orichannels AS ocht". " WHERE cht.channel=ocht.channel AND IFNULL(cht.ws,1)=IFNULL(ocht.ws,1)") ; while($rec = mysql_fetch_row($sth)) { if ($rec[2]) { DBQuery($dbh, "UPDATE {$ncfg['Tbl']['AdSense']} SET chId=$rec[0] WHERE chId=$rec[1]") ; }else{ DBQuery($dbh, "UPDATE {$ncfg['Tbl']['PageInfo']} SET wsChId0=$rec[0] WHERE wsChId0=$rec[1]") ; DBQuery($dbh, "UPDATE {$ncfg['Tbl']['PageInfo']} SET wsChId1=$rec[0] WHERE wsChId1=$rec[1]") ; } } mysql_free_result($sth); DBQuery($dbh, "DROP TABLE orichannels", true) ; vuRedir($ocfg, $pars) ; exit(); } } if ($pars['VersionUpgrade'] == 4){ # shrink AdSense table DBQuery($dbh, "CREATE TABLE {$ncfg['Tbl']['AdSense']}tmp ({$tfields['AdSense']})") ; DBQuery($dbh, "INSERT INTO {$ncfg['Tbl']['AdSense']}tmp (Id,FP,chId,format,fb,color_bg,color_text,color_link,color_url,color_border,color_line)" . " SELECT NULL,FP,chId,format,fb,color_bg,color_text,color_link,color_url,color_border,color_line" . " FROM {$ncfg['Tbl']['AdSense']}". " GROUP BY chId,format,fb,color_bg,color_text,color_link,color_url,color_border,color_line") ; $sth = DBQuery($dbh, " SELECT Id, CONCAT(chId,format,fb,color_bg,color_text,color_link,color_url,color_border,color_line)" . " FROM {$ncfg['Tbl']['AdSense']}tmp") ; while($rec = mysql_fetch_row($sth)) { $fp = FingerPrint($rec[1], 2) ; DBQuery($dbh, "UPDATE {$ncfg['Tbl']['AdSense']}tmp SET FP=$fp WHERE Id=$rec[0]") ; } mysql_free_result($sth); DBQuery($dbh, "REPAIR TABLE {$ncfg['Tbl']['AdSense']}, {$ncfg['Tbl']['AdSense']}tmp" ) ; DBQuery($dbh, "RENAME TABLE {$ncfg['Tbl']['AdSense']} TO oriadsense" . ", {$ncfg['Tbl']['AdSense']}tmp TO {$ncfg['Tbl']['AdSense']}" ) ; $sth = DBQuery($dbh, "SELECT ast.Id, oast.Id" . " FROM {$ncfg['Tbl']['AdSense']} AS ast, oriadsense AS oast". " WHERE ast.chId=oast.chId AND ast.format=oast.format AND ast.fb=oast.fb AND ast.color_bg=oast.color_bg" . " AND ast.color_text=oast.color_text AND ast.color_link=oast.color_link AND ast.color_url=oast.color_url" . " AND ast.color_border=oast.color_border AND ast.color_line=oast.color_line" ) ; while($rec = mysql_fetch_row($sth)) { DBQuery($dbh, "UPDATE {$ncfg['Tbl']['PageInfo']} SET asId0=$rec[0] WHERE asId0=$rec[1]") ; DBQuery($dbh, "UPDATE {$ncfg['Tbl']['PageInfo']} SET asId1=$rec[0] WHERE asId1=$rec[1]") ; DBQuery($dbh, "UPDATE {$ncfg['Tbl']['PageInfo']} SET asId2=$rec[0] WHERE asId2=$rec[1]") ; } mysql_free_result($sth); DBQuery($dbh, "DROP TABLE oriadsense", true) ; vuRedir($ocfg, $pars) ; exit(); } if ($pars['VersionUpgrade'] == 5){ # shrink PageInfo table DBQuery($dbh, "CREATE TABLE {$ncfg['Tbl']['PageInfo']}tmp ({$tfields['PageInfo']})") ; DBQuery($dbh, "INSERT INTO {$ncfg['Tbl']['PageInfo']}tmp (Id,pagId,domId,asId0,asId1,asId2,asId3,wsChId0,wsChId1)" . " SELECT NULL,pagId,domId,asId0,asId1,asId2,asId3,wsChId0,wsChId1" . " FROM {$ncfg['Tbl']['PageInfo']}". " GROUP BY pagId,domId,asId0,asId1,asId2,asId3,wsChId0,wsChId1") ; DBQuery($dbh, "REPAIR TABLE {$ncfg['Tbl']['PageInfo']}, {$ncfg['Tbl']['PageInfo']}tmp" ) ; DBQuery($dbh, "RENAME TABLE {$ncfg['Tbl']['PageInfo']} TO oripageinfo" . ", {$ncfg['Tbl']['PageInfo']}tmp TO {$ncfg['Tbl']['PageInfo']}" ) ; $sth = DBQuery($dbh, "SELECT pit.Id, opit.Id" . " FROM {$ncfg['Tbl']['PageInfo']} AS pit, oripageinfo AS opit". " WHERE pit.pagId=opit.pagId AND pit.domId=opit.domId AND pit.asId0=opit.asId0 AND pit.asId1=opit.asId1" . " AND pit.asId2=opit.asId2 AND pit.asId3=opit.asId3 AND pit.wsChId0=opit.wsChId0 AND pit.wsChId1=opit.wsChId1" ) ; while($rec = mysql_fetch_row($sth)) { DBQuery($dbh, "UPDATE {$ncfg['Tbl']['Logs']} SET piId=$rec[0] WHERE piId=$rec[1]") ; } mysql_free_result($sth); DBQuery($dbh, "DROP TABLE oripageinfo", true) ; vuRedir($ocfg, $pars) ; exit(); } $errstr = SaveConfig($fname, $ocfg) ; $pars['VersionUpgrade'] = 'end' ; vuRedir($ocfg, $pars) ; return $errstr ; } #--------- get Configuration Data -------------- function getConfigStr (&$cfg){ ob_start() ; ?> # Please make all changes to configuration variables via admin program. $cfgPars = array( 'Version' => '', 'rKey' => '', 'DbHost' => '', 'DbPort' => '', 'DbUser' => '', 'DbPass' => '', 'DbName' => '', 'AdminName' => '', 'AdminPassEnc' => '', 'UTZone' => , 'UTName' => '', 'EMailTo' => '', 'EMailFrom' => '', 'crImg' => , 'crPop' => , 'crCookie' => , 'crCookieDur' => , 'Tbl' => array( 'Logs' => 'asrep140Logs', 'PageInfo'=> 'asrep140PageInfo', 'Domains' => 'asrep140Domains', 'Pages' => 'asrep140Pages', 'Dirs' => 'asrep140Dirs', 'rDomains' => 'asrep140rDomains', 'rPages' => 'asrep140rPages', 'AdUrls' => 'asrep140AdUrls', 'AdSense' => 'asrep140AdSense', 'Channels' => 'asrep140Channels', 'IpRangeNames' => 'asrep140IpRangeNames', 'IpRanges' => 'asrep140IpRanges', ), 'blockedIps' => array( array(,), ), ) ; " ; if ($filedesc = @fopen($fname, 'wb')) { fwrite($filedesc, $configstr) ; fclose($filedesc) ; if ($filedesc = @fopen($fname, 'rb')) { $readstr = '' ; while(strlen($line = fread($filedesc,1024))) $readstr .= $line ; fclose($filedesc) ; if ($configstr != $readstr) { return "Can not read just created configuration file $fname" ; } }else{ return "Can not open the just created configuration file $fname" ; } }else{ return "Can not create configuration file $fname" ; } return '' ; } #--------- Save Admin name password -------------- function SaveAdminName ($fname, &$cfg, &$pars){ $cfg['AdminName'] = $pars['name'] ; $cfg['AdminPass'] = $pars['pass'] ; $cfg['AdminPassEnc'] = EncryptPassword($pars['pass']) ; return SaveConfig($fname, $cfg) ; } #------------------------------------ function SaveDBSettings ($fname, &$cfg, &$pars){ $cfg['DbHost'] = $pars['host'] ; $cfg['DbPort'] = $pars['port'] ; $cfg['DbUser'] = $pars['user'] ; $cfg['DbPass'] = $pars['pass'] ; $cfg['DbName'] = $pars['name'] ; return SaveConfig($fname, $cfg) ; } #------------------------------------ function SaveTimeZone ($fname, &$cfg, &$pars){ $cfg['UTZone'] = $pars['UTZone'] * 60*60 ; $cfg['UTName'] = $pars['UTName'] ; return SaveConfig($fname, $cfg) ; } #------------------------------------ function SaveEmail ($fname, &$cfg, &$pars){ $cfg['EMailTo'] = $pars['EMailTo'] ; $cfg['EMailFrom'] = $pars['EMailFrom'] ; $errstr = SaveConfig($fname, $cfg) ; if (!$errstr && isset($pars['EMailTest'])) { if (IsValidEMail($pars['EMailTo'])) { $from = empty($cfg['EMailFrom']) ? 'asrep@asrep.com':$cfg['EMailFrom'] ; $msg = 'If you read this message, then the e-mail interface is working properly.' ; @SendEMail($pars['EMailTo'], $from, 'asRep e-mail Interface Test Message', 0, $msg) ? ($errstr = 'Test message has been sent to '.$pars['EMailTo'].'') : ($errstr = 'function mail did not accept the message for delivery') ; }else { $errstr = 'You must enter a valid e-mail address to send the test message' ; } } return $errstr ; } #------------------------------------ function GetIpCc ($dbh, &$cfg, &$pars){ if (!empty($pars['forceAll'])) { $updates = array() ; WriteRirUpdates($updates, $cfg['InstallDir']) ; } $errstr = UpdateIpCc($dbh, $cfg, $pars) ; return $errstr ? $errstr : "Ip-to-Country database updated" ; } #------------------------------------ function SaveClickNotify ($fname, &$cfg, &$pars){ @$cfg['crImg'] = $pars['crImg'] ; @$cfg['crPop'] = $pars['crPop'] ; @$cfg['crCookie'] = $pars['crCookie'] ; @$cfg['crCookieDur'] = 0+$pars['crCookieDur'] ; return SaveConfig($fname, $cfg) ; } #------------------------------------ function SaveBlockedIPs ($fname, &$cfg, &$pars){ $cfg['blockedIps'] = array() ; $i=0 ; while (isset($pars["blockedIpsStart$i"]) && isset($pars["blockedIpsCount$i"])){ if (strlen($pars["blockedIpsStart$i"]) && strpos($pars["blockedIpsStart$i"],'.')!==false && $pars["blockedIpsCount$i"]>0) { $cfg['blockedIps'][] = array(0+IPstr2num($pars["blockedIpsStart$i"]), 0+$pars["blockedIpsCount$i"]) ; } $i++ ; } return SaveConfig($fname, $cfg) ; } #------------------------------------ function SaveRegKey ($fname, &$cfg, &$pars){ $cfg['rKey'] = $pars['rKey'] ; return SaveConfig($fname, $cfg) ; } #------------------------------------ function VerifyUserLogin (&$cfg, &$pars){ if (isset($pars['state']) && $pars['state'] == 'login') { if (EncryptPassword($pars['pass'], $cfg['AdminPassEnc']) == $cfg['AdminPassEnc'] && $pars['name'] == $cfg['AdminName']) {# True login setcookie ('UserNameEnc', EncryptPassword($cfg['AdminName']), 0, $cfg['PathUrl']) ; return 1 ; }else { DispLogin($cfg, $pars['name'], "Invalid name or password. Please try again.") ; } }else { $une = isset($_COOKIE['UserNameEnc']) ? $_COOKIE['UserNameEnc'] : '' ; if (EncryptPassword($cfg['AdminName'], $une) == $une) { # Yes you are still login return 1 ; }else { DispLogin($cfg, '', "Please enter your user name and password.") ; } } return 0 ; } #------------------------------------ function Logout(&$cfg) { setcookie ('UserNameEnc', 0, 0, $cfg['PathUrl']) ; DispLogin($cfg, '', "Please enter your user name and password.") ; } #--------- Display User settings -------------- function DispAdminName (&$cfg, $msg){ ?> asRep Admin: User Name and Pass

User Name and Password

Please assign a name and password for the user.

Name of the User:
Password of the User:

Please enter a name and password that you can remember later. Both admin and report scripts will ask for the name and password.

If you can not remember your admin name or password, you can reset it by editing the file settings.php in the installation directory. You must assign an empty string to AdminName. Then admin program will display this screen again.


You can re-start the setup process, by deleting the file settings.php in the installation directory. asRep Admin: Login
Login
User Name:
Password:

Login information is stored in a session cookie in your browser. Please enable cookies.

asRep Admin: Database Settings

Database Connectivity Settings

Status: '.$msg : '')?>

Please enter the info about the MySql database to be used.

MySQL Server (Host) Name: Enter the name or IP of the database host server. Leave blank for the default server name, 'localhost'.
MySQL Server Port: Enter the port number of the database server. Leave blank for the default server port, '3306'.
MySQL Database Name: Enter the name of the MySQL database where the tables will reside. You must create this database by using the database administration program provided by your hosting provider such as via your hosting control panel. Consult to your hosting provider if you do not know how to do it.
MySQL Database User Name: Enter the name of the user having access right to the database server.
MySQL Database User Password: Enter the password of the user accessing the database server

If you see this screen repeatedly, this means that the script can not connect to the database. Please enter correct settings.


You can re-start the setup process, by deleting the file settings.php in the installation directory. Database  |  IP to Country  |  Time Zone  |  E-Mail  |  Click Reporting  |  Tracking Code  |  Block Tracking  |  Updates  |  Reports  |  Exit END_OF_MENU; } #--------- Display Setup Screen -------------- function DispSetup (&$cfg, &$pars, $msg){ ?> asRep Admin: Other Settings
Status: '.$msg : '')?>

Select the option from the menu.

















You can re-start the setup process, by deleting the file settings.php in the installation directory. \n" ; } if ($sth2) mysql_free_result($sth2); } mysql_free_result($sth); return $str ; } #--------- Optimize Database Tables -------------- function DbOptimize($dbh, &$cfg, &$pars){ $str = "" ; $sth = DBQuery($dbh, "SHOW TABLE STATUS") ; while($rec = mysql_fetch_assoc($sth)) { $sth2 = DBQuery($dbh, "OPTIMIZE TABLE {$rec['Name']}", true) ; while($sth2 && ($rec = mysql_fetch_row($sth2))) { $str .= implode(' : ', $rec) . "
\n" ; } if ($sth2) mysql_free_result($sth2); } mysql_free_result($sth); return $str ; } #--------- Display DB Maintenance Screen -------------- function DispDbMaintenance($dbh, &$cfg, &$pars, $msg){ ?> asRep Admin: Database Maintenance Settings
Status: '.$msg : '')?>

Database Maintenance

List of tables in the database
TableNumber of RowsAvg. Row SizeData SizeIndex Size

Make a backup of the database in the script directory.
> Create compressed backups to save disk space. (You must have Zlib compression library enabled in your PHP configuration as described here)
This operation takes time! Please click to the button only once.

Restore database from a backup:

This operation takes time! Please click to the button only once.
Any database backup was not found.
Optimize the tables in the database: This feature will execute "OPTIMIZE TABLE xxx" on the tables to gain free space etc.
This operation takes time! Please click to the button only once.

Repair the tables in the database: It will execute "REPAIR TABLE xxx" on the tables to attempt to fix corrupted tables. Use this feature only if you encounter table errors.
This operation takes time! Please click to the button only once.


You can re-start the setup process, by deleting the file settings.php in the installation directory. asRep Admin: Time Zone Settings
Status: '.$msg : '')?>

Time Zone Settings

Specify the time zone you prefer the reports should use. The specified time zone is only used when displaying (retrieving) time values to (from) the user. The actual times are always stored in the database as universal GMT time.

Date/Time in GMT:
Date/Time in user time zone:
Time Zone in hours: This value is the time difference between your local time and the Greenwich Mean Time (GMT or UTC). The software saves and uses all time values in terms of GMT. This setting will be used to convert the saved time values into your preferred time zone (and vice versa) while displaying time values. Some sample values are:
Sydney-Australia...+10, Tokyo-Japan...+9, Hong Kong...+8, Moskow-Russia...+3, Istanbul-Turkey...+2, Paris-France...+1, London-England...0, Buenos Aires-Argentina...-3, Atlantic Time-Canada...-4, Eastern Time-US...-5, Central Time-US...-6, Mountain Time-US...-7, Pacific Time-US...-8
Time Zone Name: Please enter a descriptive name for the time zone you entered. This value is displayed on some reports and on admin panel.



You can re-start the setup process, by deleting the file settings.php in the installation directory. asRep Admin: E-Mail Settings
Status: '.$msg : '')?>

E-Mail Settings

Set the e-mail interface available on your system. The scipt will use these settings to send report e-mails

To e-mail address: Enter the e-mail address that will receive the report or test e-mails sent by the script.
From e-mail address: Enter the e-mail address that will appear on the From field of the emails sent by the script.
This script uses PHP mail function to send e-mails. If it is not configured properly on your system, plase see your PHP documentation or ask to your hosting provider to configure mail properly.



You can re-start the setup process, by deleting the file settings.php in the installation directory. asRep Admin: IP to Country Database Download
Status: '.$msg : '')?>

IP to Country Management

Download IP to Country mapping database. This database is used in reports to identify the country of visitors from IP address.

No database download has been done yet

$val) { if ($key != 'country' && $val[0]+0 > 0) { ?>
Downloaded ItemLast updateNumber of Lines
Country List
Region Countries
> Force download of all data


This operation may take time! Please click to the button only once.

Map the IPs to Countries in report database. IP-to-Country mapping is done while saving the records. If you have records saved before downloading the IP-to-Country database, or you simply want to refresh the IP-to-Country associations, you can remap the IPs in the database.

Map only the IPs that are not already assigned a country.
Map all IPs again.


This operation may take time! Please click to the button only once.



You can re-start the setup process, by deleting the file settings.php in the installation directory. asRep Admin: Click/Search Reporting Settings
Status: '.$msg : '')?>

Click/Search Reporting

Please specify how the clicks and searches will be reported. You can specify multiple methods in order to increase the chance the click/search is reported. Since every click/search is given a unique id, multiple reporting of the same click/search is recorded only once. If you un-check all methods, then there will be no click/search tracking. Impression tracking is not affected from these settings.

> Report clicks/searches via an invisible IMG tag element just before loading the new page.

This method is transparent to the visitor. After a click/search is detected, the image is activated to notify the server about the click/search.

> Report clicks/searches via a hidden pop-under window. The window closes itself automatically.

This method opens a pop-under window to notify the server about the click/search. The pop-under window is closed automatically once the click/search is reported. The window is invisible on some browsers like Internet Explorer. Only an icon in the task bar is displayed.

> Report clicks/searches via cookies. Store the cookies for days.

The click/search information is stored in a cookie on the visitor's browser. Next time the visitor comes to your site, the previous click/search info is reported.





You can re-start the setup process, by deleting the file settings.php in the installation directory. asRep Admin: Tracking Code
Status: '.$msg : '')?>

AdSense Tracking Code

Copy and paste the following tracking code to your web pages.




You can re-start the setup process, by deleting the file settings.php in the installation directory. asRep Admin: Tracking Exceptions
Status: '.$msg : '')?>

Block Tracking

Some webmasters request that asRep should not track the impressions, clicks and searches during certain cases. For example, a webmaster visiting his/her site a lot may want that the tracking be blocked for his/her activity on the site, since the extra impressions he/she creates mess up the results in asRep reports by increasing the views and decreasing the CTR.

Block tracking via a cookie

By setting a cookie in your browser, you can block tracking of impressions, clicks and searches from this browser.

A cookie is set in this browser to block tracking. Any activity on your web sites with this browser will not be tracked by asRep.

Erase the cookie to allow tracking from this browser.

No cookie is currently set in this browser to block tracking. All activity with this browser will be tracked by asRep.

Set a cookie to block tracking from this browser.

Block tracking via IP list

By entering a list of IP address ranges, you can block tracking of impressions, clicks and searches from these IPs.

Blocked IP Ranges
Starting IPNumber of IPs
 

Example-1: to ban IP 165.146.254.233, enter 165.146.254.233 into Starting IP and 1 into Number of IPs.
Example-2: to ban all IPs in the range (165.146.254.0, 165.146.254.255) inclusive, enter 165.146.254.0 into Starting IP and 256 into Number of IPs.

To remove an IP range from the list, either delete the Starting IP box or enter 0 (zero) into the corresponding Number of IPs box.



You can re-start the setup process, by deleting the file settings.php in the installation directory. asRep Admin: Upgrading
Status: '.$msg : '')?>

Registration Key

Obtain your registration key and enter it here

Available Updates

ERROR: Can not verify the integrity of data from asRep update server!

$v) { if (!(isset($su_r[$f]) && ($u_r[$f]['date'] <= $su_r[$f]['date']))) { if (!$anyupdate) { ?>
File NameDescription

When you download the files, they will be saved in the installation directory with a new_ prefix added to the file names.
No file or code will be executed without your control.

No new update is available




You can re-start the setup process, by deleting the file settings.php in the installation directory. $u_r[$f]['desc'], 'date'=>$u_r[$f]['date']) ; $du[$f] = array('desc'=>$u_r[$f]['desc'], 'date'=>$u_r[$f]['date'], 'tf'=>"new_$f") ; } } } WriteUpdates($su_r, $cfg['InstallDir']) ; ?> asRep Admin: Upgrading

Downloaded Updates

No update has been done

has been downloaded as

You must click to the Activate the Downloaded Files button in order to make the new files active. After the activation, the old script files are still available with a .back appended to the file name.
You can inspect the file contents before activating them.

If you like, you can rename the downloaded files by yourself via your shell access client or FTP client.


You can re-start the setup process, by deleting the file settings.php in the installation directory. asRep Admin: Content of <?php echo $pars['file']?>


asRep Admin: file activation

Activated Downloads

The file was renamed as and the old was renamed as .

The file was not found.

Return to the Updates page

gangbangs maryland

gangbangs maryland

product mens ful body thongs

mens ful body thongs

do homer kissed marege

homer kissed marege

connect pump cock swinging

pump cock swinging

point big tits lesbian videos

big tits lesbian videos

won't sensual ware

sensual ware

difficult substitute convicted for porn

substitute convicted for porn

trade gay passed out handjob

gay passed out handjob

nine shanadreams nude

shanadreams nude

same teen hitchhikers aidan

teen hitchhikers aidan

turn animae sex free pics

animae sex free pics

big naked girl pitchers

naked girl pitchers

cool kinky mas download

kinky mas download

nation dating a friend s ex

dating a friend s ex

vary convert mpg swf

convert mpg swf

pose brunette big labia porn

brunette big labia porn

also temporary tattoos nude

temporary tattoos nude

back teaching offering to teen

teaching offering to teen

vowel ginger lee milf

ginger lee milf

meet ebay sex aid

ebay sex aid

chair hottest love songs sexiest

hottest love songs sexiest

mine color codes for gays

color codes for gays

drive isla fisher nude clips

isla fisher nude clips

whether anell pornstar

anell pornstar

band sissy femdom stories

sissy femdom stories

earth black book escorts sydney

black book escorts sydney

hard teens halloween crafts

teens halloween crafts

week pics of wet pussies

pics of wet pussies

proper blondes tpg

blondes tpg

felt drawn sex tor

drawn sex tor

direct pleasure fource

pleasure fource

had fifi porn

fifi porn

laugh love darla

love darla

place lesbian s licking cagina

lesbian s licking cagina

in biking naked

biking naked

law the lady loves me

the lady loves me

pull cameo intimates

cameo intimates

during cheatin black wives

cheatin black wives

clean big butt boobs

big butt boobs

hair naked wife instructions

naked wife instructions

most teen little tits masterbating

teen little tits masterbating

claim gay dude gets reamed

gay dude gets reamed

key trannies with little dicks

trannies with little dicks

east daughters fucks blacks

daughters fucks blacks

nothing mistress jo blackpool

mistress jo blackpool

out porn star lee

porn star lee

egg adult gay video sites

adult gay video sites

distant share images nude

share images nude

party pussycat tgp

pussycat tgp

again hawaiian baby drawer knobs

hawaiian baby drawer knobs

if independent escorts in sydney

independent escorts in sydney

river sperm and oxidative stress

sperm and oxidative stress

deal cruising squirt

cruising squirt

six hungary whores

hungary whores

too mens underwear see thru

mens underwear see thru

high dreamkelly having sex

dreamkelly having sex

hope filenes basement nude

filenes basement nude

wash beauty salon uniforms milwaukee

beauty salon uniforms milwaukee

whose breast cancer smiley

breast cancer smiley

ice alternative free porn

alternative free porn

instant chocolate fuck

chocolate fuck

under asian escort chicago

asian escort chicago

north elle macpherson tits

elle macpherson tits

feel gay jerk off stories

gay jerk off stories

table men in suits naked

men in suits naked

solution funny poems on love

funny poems on love

since word origin and fuck

word origin and fuck

corner sex dog girls xxx

sex dog girls xxx

edge gay black men gallery

gay black men gallery

round mistress kyla

mistress kyla

represent linda kozlowski sex

linda kozlowski sex

continue porn idian

porn idian

eight cassandra knight escort

cassandra knight escort

law breast kept secrets

breast kept secrets

most gay black xxx men

gay black xxx men

original ohio sex offender find

ohio sex offender find

better dancing men in underwear

dancing men in underwear

am im horny gay men

im horny gay men

atom brazilian facials porn

brazilian facials porn

lead sex in missionary position

sex in missionary position

example amaden gay agencies inc

amaden gay agencies inc

end gay buff white men

gay buff white men

stead drawn fuck

drawn fuck

night gay poser gallery

gay poser gallery

keep non nude bikini girls

non nude bikini girls

case chanel naked handbag

chanel naked handbag

meant asian free sex pictures

asian free sex pictures

stead kinky adult online personals

kinky adult online personals

mean girles fingering

girles fingering

to hoes naked

hoes naked

lady eve the rapper dildo

eve the rapper dildo

field hairy men butts

hairy men butts

eight teenie amateur videos

teenie amateur videos

love coffee nylon

coffee nylon

saw daisy duke undressing

daisy duke undressing

kind eros amsterdam escorts

eros amsterdam escorts

steel teen fingering dildo

teen fingering dildo

suffix big titted chinese

big titted chinese

total love and romance superstitions

love and romance superstitions

never large bottom gays

large bottom gays

spring halloween activities for teens

halloween activities for teens

difficult pro mia chatroom

pro mia chatroom

world miss nude fitness model

miss nude fitness model

person reverse cowgirl free

reverse cowgirl free

train 10d breast

10d breast

push find a transexual lover

find a transexual lover

up hairy pussy brunette

hairy pussy brunette

period samantha brown fake naked

samantha brown fake naked

baby dick gallagher

dick gallagher

quiet virgin thumbs

virgin thumbs

master busty wicks

busty wicks

against bdsm submissive women

bdsm submissive women

bear dick isotalo

dick isotalo

prepare milano gay guide

milano gay guide

at orgasm blackout

orgasm blackout

support mature wife pictures

mature wife pictures

place japanes nude photos

japanes nude photos

wing fatty acids breast milk

fatty acids breast milk

example erotic sec stories

erotic sec stories

major orgy xxx movies

orgy xxx movies

run neveda teen usa

neveda teen usa

until african sluts clips

african sluts clips

south romance movies by year

romance movies by year

in random boobs

random boobs

well government listing mpg

government listing mpg

want asian weman naked

asian weman naked

large power strip controller usb

power strip controller usb

table texas gay pride

texas gay pride

life cumshot in shorts

cumshot in shorts

dance nude rock

nude rock

west famous porn titles

famous porn titles

less juels london ontario webcam

juels london ontario webcam

pound vaginal irritaion no discharge

vaginal irritaion no discharge

desert great naked bike ride

great naked bike ride

danger art nude photos female

art nude photos female

broad lucious boobs

lucious boobs

throw online bdsm sex games

online bdsm sex games

sight thongs legs

thongs legs

farm femdom f m

femdom f m

warm orgasm continued

orgasm continued

lost ymca teen summer job

ymca teen summer job

house latinas milfs

latinas milfs

rather step family dysfunction

step family dysfunction

planet mother daughter relationships child

mother daughter relationships child

yet roadie sex

roadie sex

am dating want let go

dating want let go

prove hardcore interracial sex tgp

hardcore interracial sex tgp

size tity torture

tity torture

much jill wagner mercury chick

jill wagner mercury chick

had are beavers threatened

are beavers threatened

dollar anna nicole lesbian sceens

anna nicole lesbian sceens

moon sex in today s music

sex in today s music

crease australian schoolgirls netball team

australian schoolgirls netball team

slave adult amateur asian video

adult amateur asian video

hard naughty classroom game end

naughty classroom game end

over nude b cup

nude b cup

travel breasts and pussies

breasts and pussies

your teen muscle videos

teen muscle videos

move dogs screwing teens

dogs screwing teens

it gratis black sex vids

gratis black sex vids

way demi moore sex video

demi moore sex video

make regastered sex affenders

regastered sex affenders

me gay latino galleries

gay latino galleries

liquid nylon cellulose

nylon cellulose

least sore breasts not pregnant

sore breasts not pregnant

from hardcore gay sex tgp

hardcore gay sex tgp

stick cisco naked

cisco naked

need femal ejaculation

femal ejaculation

friend lovebird disease gagging

lovebird disease gagging

figure gay asian town september

gay asian town september

no amazing love newsboys

amazing love newsboys

wave foul mouth sluts cailey

foul mouth sluts cailey

ball skinny bitchs

skinny bitchs

noise minnesota nude clubs

minnesota nude clubs

distant beaver lake on line maps

beaver lake on line maps

come song lyric bye love

song lyric bye love

common in love necklace

in love necklace

ten huge boobs live cams

huge boobs live cams

paragraph illinois xxx dating

illinois xxx dating

help charmane star anal mpeg

charmane star anal mpeg

skill average cock sizes

average cock sizes

should christina ricci s breast

christina ricci s breast

tree forum hentai collection

forum hentai collection

hour lesbian 3gp vids

lesbian 3gp vids

most sexy teen clothes

sexy teen clothes

opposite kitchen cabinet hardware knobs

kitchen cabinet hardware knobs

tiny blondes smoochin

blondes smoochin

piece gambar sex indonesia

gambar sex indonesia

wrote newbies naked org

newbies naked org

allow homemade love swing

homemade love swing

mind cyanure hentai

cyanure hentai

father fantasia boobs

fantasia boobs

hold acquired beauty huang yi

acquired beauty huang yi

search black swinging dick

black swinging dick

prepare cradle of love lyrics

cradle of love lyrics

perhaps relationship voltage and charge

relationship voltage and charge

wave real sex doll video

real sex doll video

cook aurora breast lift

aurora breast lift

finger scarred vagina

scarred vagina

does panettiere nude

panettiere nude

copy saltpeter and impotence

saltpeter and impotence

camp huntley ritter gay

huntley ritter gay

trip adult spanking participation polls

adult spanking participation polls

ground cain wives bible

cain wives bible

office weird vagina facts

weird vagina facts

by jenna jameson pornstar

jenna jameson pornstar

high the playboy s mistress

the playboy s mistress

family reno webcam

reno webcam

wood valentine s day underwear

valentine s day underwear

yet david beckham armani underwear

david beckham armani underwear

lady naughty natia

naughty natia

a online dating conversations

online dating conversations

floor fake celeb blowjobs

fake celeb blowjobs

man voted singles

voted singles

one naked niece photos

naked niece photos

fear vintage shemale porn dvd

vintage shemale porn dvd

his lee bang seng

lee bang seng

settle sex simulaters

sex simulaters

river anna nicole nude photographs

anna nicole nude photographs

protect baby bedwetting

baby bedwetting

prepare gallery anal cum

gallery anal cum

old nurse doctor relationships

nurse doctor relationships

subtract al borda porn

al borda porn

salt da boobs

da boobs

I animal toes xxx

animal toes xxx

appear forced prostate stroking tgp

forced prostate stroking tgp

three nipple enlargement cream

nipple enlargement cream

mount sweater stretchers mpegs

sweater stretchers mpegs

song miyabi ozawa hardcore

miyabi ozawa hardcore

after bangbros secrets

bangbros secrets

pound horny aboriginal girls

horny aboriginal girls

wish uncut cocks xxx

uncut cocks xxx

letter kof angel hentai

kof angel hentai

morning black pussy booty

black pussy booty

young girls nextdoor nude photos

girls nextdoor nude photos

discuss nude guys youtube

nude guys youtube

size brace fetish

brace fetish

did hard naked dancer

hard naked dancer

few gay northern new jersey

gay northern new jersey

that unrequited love letters

unrequited love letters

seed amature gay guys

amature gay guys

trip lena headey naked pics

lena headey naked pics

distant laura spanks naughty girls

laura spanks naughty girls

live exchange love ep 9

exchange love ep 9

fall cosplay sith sluts

cosplay sith sluts

sight passion cove on dvd

passion cove on dvd

famous tallest teen alive

tallest teen alive

always hex files hentai

hex files hentai

village multipule creampie

multipule creampie

eat adult sex toys masturbators

adult sex toys masturbators

enough upward soccer cumming ga

upward soccer cumming ga

go triple fff boobs

triple fff boobs

our aries love today

aries love today

dollar amateur videos sexy

amateur videos sexy

match susanne somers naked

susanne somers naked

brother cock train

cock train

perhaps manipulative teens

manipulative teens

kind horny fat sluts

horny fat sluts

noon pussy pumpin

pussy pumpin

require orleans amateur fastball association

orleans amateur fastball association

stead escort yorkshire

escort yorkshire

there 108 wives

108 wives

among secretary and spanking

secretary and spanking

listen na chatroom

na chatroom

mouth download seymore butts

download seymore butts

season party sex thumbs

party sex thumbs

whose horny women bodybuilders

horny women bodybuilders

free ladyboy dominatrix

ladyboy dominatrix

process saggy huge mature tits

saggy huge mature tits

war lesbian psychologist new york

lesbian psychologist new york

least aurora breast lift

aurora breast lift

beauty gaping tips

gaping tips

sail christian dating online single

christian dating online single

show strap on ars fuck

strap on ars fuck

particular jade goodie porn

jade goodie porn

if young bald pussies

young bald pussies

loud dog girl sex stories

dog girl sex stories

experiment sailor moon lesbo

sailor moon lesbo

beat body heat sex scene

body heat sex scene

region wife made me strip

wife made me strip

syllable ex girlfriend sex pics

ex girlfriend sex pics

live bailey amateur allure

bailey amateur allure

syllable squirrel swing

squirrel swing

exact porn imageboard

porn imageboard

visit bikini beaver

bikini beaver

consonant dermalogical facials

dermalogical facials

equate used strip recorders

used strip recorders

my heterosexual hiv positive chat

heterosexual hiv positive chat

view teen theme rooms

teen theme rooms

speed girls geting fucked

girls geting fucked

liquid never shaved pussy

never shaved pussy

single lesbian bedtime stories

lesbian bedtime stories

pay bbw lingerie model gallery

bbw lingerie model gallery

hit latina nude models

latina nude models

read dolly bondage

dolly bondage

send blonde hardwood furniture

blonde hardwood furniture

press lesbian toy action

lesbian toy action

wide police free gay slaves

police free gay slaves

method gay college athlete pictures

gay college athlete pictures

three penis pleasure folding hard

penis pleasure folding hard

dead milf madness

milf madness

stay xxx porn thumb nails

xxx porn thumb nails

after mom got boobs

mom got boobs

lot kids drawings suck

kids drawings suck

equal dmk underwear over under

dmk underwear over under

million teen foreskin photos

teen foreskin photos

speech charmagne porn

charmagne porn

example dianne kruger pics nude

dianne kruger pics nude

that bangkok ladyboy hangouts

bangkok ladyboy hangouts

count hot collection escorts

hot collection escorts

one virgin phones sams club

virgin phones sams club

edge fatty tisue

fatty tisue

fire transgender boutiques nj

transgender boutiques nj

silver viet cong booby traps

viet cong booby traps

fair photo nude bbw

photo nude bbw

floor transsexual diaries

transsexual diaries

metal asshole card game rules

asshole card game rules

women suck nipples wet

suck nipples wet

often jenna haze nude vids

jenna haze nude vids

skin sexfriends hentai

sexfriends hentai

life brunette sex video clips

brunette sex video clips

wide xxx podcast

xxx podcast

arm nylon dildo videos

nylon dildo videos

complete sex with brazilizn women

sex with brazilizn women

gold atlanta european strip club

atlanta european strip club

symbol teen japan idol u15

teen japan idol u15

stone pussy and horses

pussy and horses

self make your own masturbation

make your own masturbation

for facial reconstruction surgeon

facial reconstruction surgeon

though pro sex education

pro sex education

reason synthetic underwear

synthetic underwear

side hair color ash blonde

hair color ash blonde

under new zealand cock

new zealand cock

wood couples resorts miramar fl

couples resorts miramar fl

surprise prevention of monkeys love

prevention of monkeys love

throw must love dogs cusak

must love dogs cusak

vowel asscam tgp

asscam tgp

class submisive boys porn

submisive boys porn

develop black penis vibrators

black penis vibrators

chick kate ceberano breasts pictures

kate ceberano breasts pictures

vowel dianne cannon nude

dianne cannon nude

object casey cumshot

casey cumshot

soon pinkmonkey nude

pinkmonkey nude

coast bdsm christian

bdsm christian

top hot blonde pussy upskirt

hot blonde pussy upskirt

planet group sex thumb

group sex thumb

industry ethnic porns

ethnic porns

spoke trendy girls porn

trendy girls porn

only gay fleshbot

gay fleshbot

solution anal escort amsterdam

anal escort amsterdam

tall kleenex blonde moment

kleenex blonde moment

camp wv singles

wv singles

speech discreet sluts

discreet sluts

morning asshole signs

asshole signs

effect women licking shemales assholes

women licking shemales assholes

carry japanese sex swimsuits

japanese sex swimsuits

has antigua pussy

antigua pussy

took anal cum queen

anal cum queen

glad real naked amateur

real naked amateur

hand breast implants auburn california

breast implants auburn california

sugar vibrator saxophone mouthpiece

vibrator saxophone mouthpiece

cloud sex toys gold coast

sex toys gold coast

test thin puny tits

thin puny tits

iron breast cancer ribbon charms

breast cancer ribbon charms

speak muscular gay men photos

muscular gay men photos

off andrea s big tits

andrea s big tits

each
Daily crossword puzzle web gadget.MOM website containing information pertaining to labour Mom.Autos - Find used bmw 325.Offers new and used jdm.Now in its third generation, themx5.Gadizmo is your news source for the latest gadgets gizmos.The Best Web Monitor for Logging mom.Welcome to the all new and improved car dealers.All rights are reserved by new suzuki.Web gadgets and applications from Smart web gadgets.The Official site for all new 2009 chevy trucks.Thousands of new and used motorcycles.Topics Related to stages of pregnancy.Honda recalls 200000 quads.Information on fitness man s health.In the United States, an antique cars.Jeep classifieds including Jeep parts used jeeps for sale.The Ford 2001 thunderbird.Click on any new bmw.A discussion forum dedicated to all generations of the Honda prelude.Welcome to Airport travel agency.The official bmw.In the mid-1990s the mercurys.Search a large range of new & used bikes.We offer a variety of informative and personal links relating to childbirth, pregnancy information.Find cheap airline travel tickets.Chrysler introduced the Dodge caravan.Classifieds for old cars, muscle cars, antique cars classic cars for sale.The Mazda mx6.The CJ-5 was influenced by new corporate owne cj5.Honda VTX custom chopper parts vtx.Description of the 2002 thunderbird.The 2006 BMW 3-Series will be offered as the 2006 bmw 325i.Find new Nissan cars and 2009 2010 nissan cars.Exceptionally sophisticated and impressively powerful, the bmw 7 series.Even in markets where the car is sold as a hyundai tuscani.Nissan Maxima Enthusiasts Site nissan maxima.Intelligent Spy Electronic gadget store

New York

community organizing

people like

ascorbic acid

real estate

become acquainted with

ice cube

graduate students

levels as they go unresolved

having sex

philosophy had

good way

television programs

ice cream

shortly before

looked over

credit card

Greenwich Village

eye makeup

home based

The names of none

and guided

electoral college

online gambling

the entire population was evacuated

hunt probable bed

fiber optics

potential buyers

real estate

Kath replied

Cape Cod

pretty good

ice cream

Western Europe

online casinos

both Christian

Britney Spears

over again

cricket games

great gift

recent decades

business plan

which means

such cases

Pavane pour

New Guinea

little ass

wide variety

speech nature range

those looking

different types

needs always

online gambling

race car

directory service

web site

Paris Hilton

radio stations

million visitors

James went on

freelance writer

told him

and surgeons

web site

Indigenous Australian

black bra

citys population

of the times

Marco Polo

wide range

told him

median age

finger around

such as lenses

cum covered

dry food

pretty little

home based

for the death

cock off

good idea

high marking

search engine

female body

Shih Tzu

cry dark machine note

However medicine often

once again

Abraham Lincoln

serial killer

little bit

bright light
For an alternate route to Journal of Emerging finance market.There are affordable cars, and then there are cars that offer thrilling performance. Rarely do the two ever converge, but Japanese automake mazada.new impreza 2008 Impreza Photos | Subaru News, Articles, Road Tests, Test Drives, Comparisons, Concepts.manhattan beach toyota Los Angeles Toyota Dealer, is a New & Pre-Owned Toyota dealership, with OEM Toyota parts and professional Toyota service.fashions like you need it: make fashion trends work for you, get fashion on a budget, dress for your body and look great for special occasions.How to treat a fragile man without health insurance man.gadget store buy drinking games, gadgets & boys toys. Shop online for fun gifts, presents, gizmos and games.Review and road test of the Ford mondeo.Discover new cars from hyndai.Find new kia.suzuki vehicles on our Car Finder Buy and Sell New Used Cars Philippines 2009 site.Your Suzuki Motorcycle Info Source: Suzuki Motorcycles Used Dual Purpose Motorcycles For Sale · View 2008 Suzuki Models 2008 suzuki.auto manufacturer site with information on the Sedona, Sorento, Sportage, Optima, Spectra and Rio vehicles www kia.Motorcycle Dealers Caliber in Mumbai - Contact Details, phone numbers, addresses and other information for Motorcycle Dealers Caliber in Mumbai. dealerships caliber.Electronics and gadgets are two words that fit very well together. The electronic gadget.2001 excursion highlights from Consumer Guide Automotive. Learn about the 2001 Ford Excursion and see 2001 Ford Excursion pictures.ford Motor Company maker of cars, trucks, SUVs and other vehicles. View our vehicle showroom, get genuine Ford parts and accessories, find dealers.The soul of Formula M: reloaded. Combining motorsport capabilities with everyday driving. The bmw coupe.Vintage and Classic Car Club of India vintage car.Welcome - Feel Good Natural health stores.Welcome to mazdas global website.Locate the nearest Chevrolet Car chevy dealer

brandt furniture hagerstown maryland

home seller

svens place bbs gateway

music videos

aurora h107 tires

weight gain

hollister drift cologne

World Wide

printable saduko

A key text is Jeff

hibiscus resort margarita island

Kingdom extended

winners cynthia mercati

makes sense

searay light sport aircraft

integral part

play boy pic

left breast

priya rey

blonde hair

matt talbot retreat blackwood

fruit juices

margerita drink recipe

Kingdom extended

pokemon shiny gold version rom download

six months

calvin klein chunky ring

weight loss

neopets buried treasure cheats

regular basis

michael s surnow

lemon juice

la promesa corporation telephony

Real Estate

priscilla where fun and fantasy meet

Google Yahoo

sierra chicken recipe

expedient in human existence

fun facts about cupid

social anxiety

two guys one girl

insurance companies

nathan kress s dick

new condo

venezuela foods

hard shaft

vintage mclaren m6b parts

that one's response

troll s cock

used cars

aerolineas cubanas

hard nipples

doujin moe wall of

auto parts

special christmas foods from france

middle school

captain chris close combat training

ask him

hairy vag

female body

farting reindeer jingle bell

combining elements

nvidia geforce 6150le drive

The is an acronym for Light

meals for people with ulcers

Las Vegas

chinese soups papaya

remain so in every

recipe for samosas

didnt think

dune buddy steering wheels

New York

hinari breadmaker recipes

dog training

atv trails cullman alabama

fuck him

negative resident behavior in nursing home

social networking

remove scandisk u3 software

top quality

fuckmom

who had preceded

sylva public invasion

good quality

ntb store locations ohio

floor lamp

cataplana recipe

Salt Lake

remington 1100 intercepter latch problems

get rid

gaymassage videos

feel better

globus throat problems globus syndrome

healthy weight

somona plant

having sex

me wanking in satin shorts

blue object decide

monster chinese 5 3 with 5 2 sip

wide variety

dinner dash games

into favor with his essay

monica leigh s pussy

third party

pictures of custom kenworths

came across

remote car starters ct installers

Los Angeles

tatuajes tribales brazo

anti virus

spirogyra cells

I think that

green leaf apartments bolingbrook il

baby boy

gangster disciple creed

dairy products

cooking swai

World War

download hp6540 drivers

came off
>16)=irt.IpSeg AND lgt.Ip>=irt.StartIp AND lgt.Ip<=irt.EndIp" ; DBQuery($dbh, $qstr) ; DBQuery($dbh, "REPAIR TABLE {$cfg['Tbl']['Logs']}, $tmpTable") ; DBQuery($dbh, "RENAME TABLE {$cfg['Tbl']['Logs']} TO orilogs, $tmpTable TO {$cfg['Tbl']['Logs']}") ; DBQuery($dbh, "DROP TABLE orilogs", true) ; return "IP-to-Country remapping was done" ; } ###################################################### #--------- function UpdateIpCc ($dbh, &$cfg, &$pars){ # $IpCcServ = "http://www.robusthost.com/cgi-bin/dapipcc/ipccserv.pl" ; $dt = getdate(time()) ; $date = sprintf('%04u/%02u/%02u %02u:%02u:%02u', $dt['year'],$dt['mon'],$dt['mday'],$dt['hours'],$dt['minutes'],$dt['seconds']); $anyupdatedone = 0 ; $lupdates = ReadRirUpdates($cfg['InstallDir']) ; $rupdates = GetRirUpdates($IpCcServ, $cfg['Url']) ; $rkey = 'country' ; if (!isset($lupdates[$rkey]) || $lupdates[$rkey][1] < $rupdates[$rkey][1]) { $lcnt = GetCountry($dbh, $cfg, $IpCcServ, $cfg['Url']) ; if ($lcnt) { $lupdates[$rkey][0] = $rupdates[$rkey][0]+0 ; $lupdates[$rkey][1] = ($date < $rupdates[$rkey][1]) ? $rupdates[$rkey][1] : $date ; $lupdates[$rkey][2] = $lcnt ; $anyupdatedone = 1 ; } } foreach ($rupdates as $rkey => $rval) { if (!isset($lupdates[$rkey]) || $lupdates[$rkey][1] < $rupdates[$rkey][1]) { if ($rkey != 'country' && $rupdates[$rkey][0]+0 > 0) { $lcnt = GetRir($dbh, $cfg, $IpCcServ, $rkey, $rupdates[$rkey][0], $cfg['Url']) ; if ($lcnt) { $lupdates[$rkey][0] = $rupdates[$rkey][0]+0 ; $lupdates[$rkey][1] = ($date < $rupdates[$rkey][1]) ? $rupdates[$rkey][1] : $date ; $lupdates[$rkey][2] = $lcnt ; $anyupdatedone = 1 ; } } } if ($anyupdatedone) break ; } if (!isset($pars['prevupdate'])) $pars['prevupdate'] = 0 ; if ($anyupdatedone) { WriteRirUpdates($lupdates, $cfg['InstallDir']) ; if ($pars['prevupdate'] < 15) { header("Location: " . $cfg['Url'] . "?state=ipcc&update=t&prevupdate=" . (1+$pars['prevupdate'])) ; exit ; } } return $pars['prevupdate'] ? '' : "No new IP-to-Country update found" ; } #--------- function GetRir ($dbh, &$cfg, $ipccserv, $rir, $rirtype, $ldom){ $url = $ipccserv . "?get=$rir&dom=$ldom" ; list($content) = GetHttpPage($url) ; $qstr = "LOCK TABLES {$cfg['Tbl']['IpRanges']} WRITE" ; DBQuery($dbh, $qstr, true) ; $linecount = 0 ; for ($i=0 ; $i < strlen($content) ; $i+=10) { $line = substr($content, $i, 10) ; $fields = unpack("A2cc/N2ip", $line) ; if ($fields['ip1'] < 0) $fields['ip1'] = 0xFFFFFFFF + $fields['ip1'] + 1 ; if ($fields['ip2'] < 0) $fields['ip2'] = 0xFFFFFFFF + $fields['ip2'] + 1 ; # Here do the database store thing if ($linecount == 0) { $qstr = "DELETE FROM {$cfg['Tbl']['IpRanges']} WHERE Type=" . DBQuote($rirtype) ; DBQuery($dbh, $qstr) ; } $sseg = (int)($fields['ip1'] / 65536) ; $eseg = (int)($fields['ip2'] / 65536) ; while($sseg <= $eseg) { $qstr = "INSERT INTO {$cfg['Tbl']['IpRanges']} (Type, Code, IpSeg, StartIp, EndIp)" . " VALUES(" . DBQuote($rirtype) . "," . DBQuote($fields['cc']) . "," . DBQuote($sseg) . "," . DBQuote($fields['ip1']) . "," . DBQuote($fields['ip2']) . ")" ; DBQuery($dbh, $qstr) ; $linecount ++ ; $sseg ++ ; } } $qstr = "UNLOCK TABLES" ; DBQuery($dbh, $qstr, true) ; if ($linecount) { $qstr = "OPTIMIZE TABLE {$cfg['Tbl']['IpRanges']}" ; DBQuery($dbh, $qstr) ; } return $linecount ; } #--------- function GetCountry ($dbh, &$cfg, $ipccserv, $ldom){ $url = $ipccserv . "?get=country&dom=$ldom" ; list($content) = GetHttpPage($url) ; $qstr = "LOCK TABLES {$cfg['Tbl']['IpRangeNames']} WRITE" ; DBQuery($dbh, $qstr, true) ; $linecount = 0 ; foreach (explode("\n", $content) as $line) { $fields = explode ("|", $line) ; if ($fields[0] == '***Translate***') break ; if (count($fields)<2 || strlen($fields[0]) != 2) continue ; # Here do the database store thing if ($linecount == 0) { $qstr = "DELETE FROM {$cfg['Tbl']['IpRangeNames']}" . " WHERE STRCMP(Code,'AA')>=0 AND STRCMP(Code,'ZZ')<=0" ; DBQuery($dbh, $qstr) ; } list($cname) = explode(",", $fields[1]) ; $qstr = "INSERT INTO {$cfg['Tbl']['IpRangeNames']} (Code, Name)" . " VALUES(" . DBQuote(strtoupper($fields[0])) . "," . DBQuote($cname) . ")" ; DBQuery($dbh, $qstr) ; $linecount ++ ; } $qstr = "UNLOCK TABLES" ; DBQuery($dbh, $qstr, true) ; if ($linecount) { $qstr = "OPTIMIZE TABLE {$cfg['Tbl']['IpRangeNames']}" ; DBQuery($dbh, $qstr) ; } return $linecount ; } #--------- function GetRirUpdates ($ipccserv, $ldom){ $url = $ipccserv . "?get=items&dom=$ldom" ; list($content) = GetHttpPage($url) ; $updates = array() ; foreach (explode("\n", $content) as $val) { $fields = explode("|", $val) ; if (count($fields) >= 3) $updates[$fields[0]] = array($fields[1], $fields[2], 0) ; } return $updates ; } #--------- function ReadRirUpdates ($instdir){ $updates = array() ; $fname = FullPath('rirupdates.txt', $instdir) ; if ($fdesc = @fopen($fname, 'rt')) { while($line = fgets($fdesc,1024)) { $line = rtrim($line) ; $fields = explode("|", $line) ; if (count($fields) >= 3) $updates[$fields[0]] = array($fields[1], $fields[2], $fields[3]) ; } fclose($fdesc) ; } return $updates ; } #--------- function WriteRirUpdates (&$updates, $instdir){ $fname = FullPath('rirupdates.txt', $instdir) ; if ($fdesc = @fopen($fname, 'wt') ) { foreach ($updates as $key => $value) { fwrite($fdesc, "$key|$value[0]|$value[1]|$value[2]\n") ; } fclose($fdesc) ; } } #--------- function ReadUpdates ($instdir){ $fchunk = '' ; $fname = FullPath('updates.txt', $instdir) ; if ($fdesc = @fopen($fname, 'rb')) { while(strlen($line = fread($fdesc,1024))) $fchunk .= $line ; fclose($fdesc) ; } return parseUpdateChunk ($fchunk) ; } #--------- function WriteUpdates (&$updates, $instdir){ $update_field_sep = '#%' ; $update_rec_sep = '%#' ; $fname = FullPath('updates.txt', $instdir) ; if ($fdesc = @fopen($fname, 'wt') ) { foreach ($updates as $key => $value) { fwrite($fdesc, implode($update_field_sep, array($key, $value['desc'], $value['date']))) ; fwrite($fdesc, $update_rec_sep) ; } fclose($fdesc) ; } } #--------- function parseUpdateChunk ($ustr){ $update_field_sep = '#%' ; $update_rec_sep = '%#' ; if (strpos($ustr, $update_rec_sep) === false) { return array() ; }else { $updates = array() ; foreach (explode($update_rec_sep, $ustr) as $urec ) { $fields = explode($update_field_sep, $urec) ; if (count($fields)>=3) $updates[$fields[0]] = array('desc' => $fields[1] , 'date' => $fields[2]) ; } return $updates ; } } #--------- function getAsrepUpdate ($url) { $i=0 ; do{ list($resp, $respheader) = GetHttpPage($url) ; $asrep_md5h = '' ; $asrep_satus = '' ; if (isset($respheader) && is_array($respheader)){ foreach ($respheader as $h) { if (substr(strtolower($h), 0, 21) == 'asrep-update-status: ') $asrep_satus = substr(strtolower($h), 21) ; if (substr(strtolower($h), 0, 18) == 'asrep-update-md5: ') $asrep_md5h = substr(strtolower($h), 18) ; } } $md5h = strtolower(md5($resp)) ; } while ((strlen($asrep_satus)==0 || $md5h != $asrep_md5h) && ++$i < 5) ; return array($resp, $asrep_satus, $md5h == $asrep_md5h) ; } #--------- function updateURL ($k, $d, $v, $f=NULL){ return "http://www.asrep.com/cgi-bin/s/updateserv.pl" . "?k=" . urlencode($k) . "&d=" . urlencode($d) . "&v=" . urlencode($v) . "&s=php" . ($f ? "&f=" . urlencode($f) : '') ; } #--------- End of admin.php -------------- ?>