From: <chr...@us...> - 2018-02-23 10:24:03
|
Revision: 13340 http://sourceforge.net/p/xoops/svn/13340 Author: chronolabscoop Date: 2018-02-23 10:24:00 +0000 (Fri, 23 Feb 2018) Log Message: ----------- Fonts Repository Services REST API v2.7.7! Modified Paths: -------------- *.xoops.org (Subdomain APIs & Sites)/fonty.xoops.org/README.md *.xoops.org (Subdomain APIs & Sites)/fonty.xoops.org/constants.php *.xoops.org (Subdomain APIs & Sites)/fonty.xoops.org/crons/uploading-fonts.php *.xoops.org (Subdomain APIs & Sites)/fonty.xoops.org/help.php *.xoops.org (Subdomain APIs & Sites)/fonty.xoops.org/include/common.php *.xoops.org (Subdomain APIs & Sites)/fonty.xoops.org/include/data/convert-fonts-upload.pe *.xoops.org (Subdomain APIs & Sites)/fonty.xoops.org/include/data/packs-extracting.diz *.xoops.org (Subdomain APIs & Sites)/fonty.xoops.org/include/data/uploads.json *.xoops.org (Subdomain APIs & Sites)/fonty.xoops.org/include/functions.php *.xoops.org (Subdomain APIs & Sites)/fonty.xoops.org/include/version.php *.xoops.org (Subdomain APIs & Sites)/fonty.xoops.org/install/include/config.php *.xoops.org (Subdomain APIs & Sites)/fonty.xoops.org/install/include/license.dist.php *.xoops.org (Subdomain APIs & Sites)/fonty.xoops.org/install/include/page.php *.xoops.org (Subdomain APIs & Sites)/fonty.xoops.org/install/language/english/install.php *.xoops.org (Subdomain APIs & Sites)/fonty.xoops.org/install/page_configsave.php *.xoops.org (Subdomain APIs & Sites)/fonty.xoops.org/install/sql/dbreport.html Modified: *.xoops.org (Subdomain APIs & Sites)/fonty.xoops.org/README.md =================================================================== --- *.xoops.org (Subdomain APIs & Sites)/fonty.xoops.org/README.md 2018-02-10 14:30:09 UTC (rev 13339) +++ *.xoops.org (Subdomain APIs & Sites)/fonty.xoops.org/README.md 2018-02-23 10:24:00 UTC (rev 13340) @@ -1,5 +1,7 @@ ## Chronolabs Cooperative presents -# Fonting Repository Services API - http://fonty.snails.email - +# Fonting Repository Services API +## Version 2.7.7 +### Demo: http://fonty.snails.email - # BASIC INSTALLATION MANUAL ## by. Simon Antony Roberts (Sydney) Modified: *.xoops.org (Subdomain APIs & Sites)/fonty.xoops.org/constants.php =================================================================== --- *.xoops.org (Subdomain APIs & Sites)/fonty.xoops.org/constants.php 2018-02-10 14:30:09 UTC (rev 13339) +++ *.xoops.org (Subdomain APIs & Sites)/fonty.xoops.org/constants.php 2018-02-23 10:24:00 UTC (rev 13340) @@ -85,7 +85,7 @@ define('FONT_RESOURCES_SORTING', API_PATH . '/Fonts/Sorting'); define('FONT_RESOURCES_CONVERTING', API_PATH . '/Fonts/Converting'); define('FONT_RESOURCES_RESOURCE', API_PATH . '/Fonts/Repository'); - define('FONT_RESOURCES_CACHE', API_VAR_PATH . '/FontsCache'); + define('FONT_RESOURCES_CACHE', API_VAR_PATH . '/FontsAPI/Cache'); define('FONT_RESOURCES_STORE', 'https://sourceforge.net/p/chronolabsapis/Fonting/HEAD/tree/%s?format=raw'); define('FONT_RESOURCES_PEERS', 'https://sourceforge.net/p/chronolabsapis/Fonting/HEAD/tree/peers.json?format=raw'); define('FONT_RESOURCES_REPOMAP', 'https://sourceforge.net/p/chronolabsapis/Fonting/HEAD/tree/%s/%s--repository-mapping.json?format=raw'); @@ -92,7 +92,7 @@ define('FONT_RESOURCES_STORE_GIT', 'https://github.com/Chronolabs-Cooperative/Fonting-Repository/raw/master/%s'); define('FONT_RESOURCES_PEERS_GIT', 'https://github.com/Chronolabs-Cooperative/Fonting-Repository/raw/master/peers.json'); define('FONT_RESOURCES_REPOMAP_GIT', 'https://github.com/Chronolabs-Cooperative/Fonting-Repository/raw/master/%s/%s--repository-mapping.json'); - define('FONT_UPLOAD_PATH', API_VAR_PATH . '/FontsUploads'); + define('FONT_UPLOAD_PATH', API_VAR_PATH . '/FontsAPI/Uploads'); define('FONTS_CACHE', FONT_RESOURCES_CACHE . DIRECTORY_SEPARATOR . '--dumps--'); if (!is_dir(FONT_RESOURCES_UNPACKING)) Modified: *.xoops.org (Subdomain APIs & Sites)/fonty.xoops.org/crons/uploading-fonts.php =================================================================== --- *.xoops.org (Subdomain APIs & Sites)/fonty.xoops.org/crons/uploading-fonts.php 2018-02-10 14:30:09 UTC (rev 13339) +++ *.xoops.org (Subdomain APIs & Sites)/fonty.xoops.org/crons/uploading-fonts.php 2018-02-23 10:24:00 UTC (rev 13340) @@ -222,12 +222,23 @@ if (file_exists($uploadfile = $copypath . DIRECTORY_SEPARATOR . strtolower(basename($fontfile)))) { @exec("cd $copypath", $out, $return); - @exec($exe = sprintf(DIRECTORY_SEPARATOR . "usr" . DIRECTORY_SEPARATOR . "bin" . DIRECTORY_SEPARATOR . "fontforge -script \"%s\" \"%s\"", dirname(__DIR__ ) . DIRECTORY_SEPARATOR . "data" . DIRECTORY_SEPARATOR . "convert-fonts-upload.pe", $uploadfile), $out, $return); - deleteFilesNotListedByArray($copypath, array(API_BASE=>API_BASE)); + @exec($exe = sprintf(DIRECTORY_SEPARATOR . "usr" . DIRECTORY_SEPARATOR . "bin" . DIRECTORY_SEPARATOR . "fontforge -script \"%s\" \"%s\"", dirname(__DIR__ ) . DIRECTORY_SEPARATOR . "include" . DIRECTORY_SEPARATOR . "data" . DIRECTORY_SEPARATOR . "convert-fonts-upload.pe", $uploadfile), $out, $return); + deleteFilesNotListedByArray($copypath, array(API_BASE=>API_BASE, 'ufo'=>'ufo')); unlink($fontfile); + $glyphsfingerprint = ''; foreach(getFontsListAsArray($copypath) as $file) if ($file['type']==API_BASE) $uploadfile = $copypath . DIRECTORY_SEPARATOR . $file['file']; + elseif($file['type']=='ufo') { + $glyphs = array(); + $fileglyphs = getFileListAsArray($copypath . DIRECTORY_SEPARATOR . $file['file'] . DIRECTORY_SEPARATOR . 'glyphs'); + sort($fileglyphs); + foreach($fileglyphs as $glyph) + { + $glyphs[] = md5_file($copypath . DIRECTORY_SEPARATOR . $file['file'] . DIRECTORY_SEPARATOR . 'glyphs' . DIRECTORY_SEPARATOR . $glyph); + } + $glyphsfingerprint = md5(implode('', $glyphs)); + } $fontdata = getBaseFontValueStore($uploadfile); if (isset($fontdata['version'])) $fontdata['version'] = $fontdata['version'] + 1.001; @@ -246,9 +257,15 @@ $found = true; } $fingerprint = md5(implode("", $data)); + + if (!empty($glyphsfingerprint)) + { + $sql = "SELECT count(*) FROM `" . $GLOBALS['APIDB']->prefix('fonts_fingering') . "` WHERE `fingerprint` LIKE '" . $glyphsfingerprint . "'"; + list($gfingers) = $GLOBALS['APIDB']->fetchRow($GLOBALS['APIDB']->queryF($sql)); + } $sql = "SELECT count(*) FROM `" . $GLOBALS['APIDB']->prefix('fonts_fingering') . "` WHERE `fingerprint` LIKE '" . $fingerprint . "'"; list($fingers) = $GLOBALS['APIDB']->fetchRow($GLOBALS['APIDB']->queryF($sql)); - if ($fingers==0) + if ($fingers==0 && $gfingers == 0) { $ffile++; $data['process'] = microtime(true); @@ -284,6 +301,9 @@ $GLOBALS['APIDB']->queryF($sql); } echo "\nCreated Upload Identity: ".$uploadid; + $sql = "INSERT INTO `" . $GLOBALS['APIDB']->prefix('fonts_fingering') . "` (`type`, `upload_id`, `fingerprint`) VALUES ('" . $GLOBALS['APIDB']->escape(API_BASE) . "','" . $GLOBALS['APIDB']->escape($uploadid) . "','" . $GLOBALS['APIDB']->escape($glyphsfingerprint) . "')"; + if (!$GLOBALS['APIDB']->queryF($sql)) + echo "SQL Failed: $sql;\n"; $sql = "INSERT INTO `" . $GLOBALS['APIDB']->prefix('fonts_fingering') . "` (`type`, `upload_id`, `fingerprint`) VALUES ('" . $GLOBALS['APIDB']->escape(API_BASE) . "','" . $GLOBALS['APIDB']->escape($uploadid) . "','" . $GLOBALS['APIDB']->escape($fingerprint) . "')"; if (!$GLOBALS['APIDB']->queryF($sql)) echo "SQL Failed: $sql;\n"; Modified: *.xoops.org (Subdomain APIs & Sites)/fonty.xoops.org/help.php =================================================================== --- *.xoops.org (Subdomain APIs & Sites)/fonty.xoops.org/help.php 2018-02-10 14:30:09 UTC (rev 13339) +++ *.xoops.org (Subdomain APIs & Sites)/fonty.xoops.org/help.php 2018-02-23 10:24:00 UTC (rev 13340) @@ -269,29 +269,61 @@ * @author Simon Roberts (labs.coop) wis...@us... * @return string */ - function getURIData($uri = '', $timeout = 25, $connectout = 25, $post_data = array()) - { - if (!function_exists("curl_init")) - { - return file_get_contents($uri); - } - if (!$btt = curl_init($uri)) { - return false; - } - curl_setopt($btt, CURLOPT_HEADER, 0); - curl_setopt($btt, CURLOPT_POST, (count($posts)==0?false:true)); - if (count($posts)!=0) - curl_setopt($btt, CURLOPT_POSTFIELDS, http_build_query($post_data)); - curl_setopt($btt, CURLOPT_CONNECTTIMEOUT, $connectout); - curl_setopt($btt, CURLOPT_TIMEOUT, $timeout); - curl_setopt($btt, CURLOPT_RETURNTRANSFER, true); - curl_setopt($btt, CURLOPT_VERBOSE, false); - curl_setopt($btt, CURLOPT_SSL_VERIFYHOST, false); - curl_setopt($btt, CURLOPT_SSL_VERIFYPEER, false); - $data = curl_exec($btt); - curl_close($btt); - return $data; - } + function getURIData($uri = '', $timeout = 25, $connectout = 25, $post = array(), $headers = array()) + { + if (!function_exists("curl_init")) + { + die("Install PHP Curl Extension ie: $ sudo apt-get install php-curl -y"); + } + $GLOBALS['php-curl'][md5($uri)] = array(); + if (!$btt = curl_init($uri)) { + return false; + } + if (count($post)==0 || empty($post)) + curl_setopt($btt, CURLOPT_POST, false); + else { + $uploadfile = false; + foreach($post as $field => $value) + if (substr($value , 0, 1) == '@' && !file_exists(substr($value , 1, strlen($value) - 1))) + unset($post[$field]); + else + $uploadfile = true; + curl_setopt($btt, CURLOPT_POST, true); + curl_setopt($btt, CURLOPT_POSTFIELDS, http_build_query($post)); + + if (!empty($headers)) + foreach($headers as $key => $value) + if ($uploadfile==true && substr($value, 0, strlen('Content-Type:')) == 'Content-Type:') + unset($headers[$key]); + if ($uploadfile==true) + $headers[] = 'Content-Type: multipart/form-data'; + } + if (count($headers)==0 || empty($headers)) + curl_setopt($btt, CURLOPT_HEADER, false); + else { + curl_setopt($btt, CURLOPT_HEADER, true); + curl_setopt($btt, CURLOPT_HTTPHEADER, $headers); + } + curl_setopt($btt, CURLOPT_CONNECTTIMEOUT, $connectout); + curl_setopt($btt, CURLOPT_TIMEOUT, $timeout); + curl_setopt($btt, CURLOPT_RETURNTRANSFER, true); + curl_setopt($btt, CURLOPT_VERBOSE, false); + curl_setopt($btt, CURLOPT_SSL_VERIFYHOST, false); + curl_setopt($btt, CURLOPT_SSL_VERIFYPEER, false); + $data = curl_exec($btt); + $GLOBALS['php-curl'][md5($uri)]['http']['posts'] = $post; + $GLOBALS['php-curl'][md5($uri)]['http']['headers'] = $headers; + $GLOBALS['php-curl'][md5($uri)]['http']['code'] = curl_getinfo($btt, CURLINFO_HTTP_CODE); + $GLOBALS['php-curl'][md5($uri)]['header']['size'] = curl_getinfo($btt, CURLINFO_HEADER_SIZE); + $GLOBALS['php-curl'][md5($uri)]['header']['value'] = curl_getinfo($btt, CURLINFO_HEADER_OUT); + $GLOBALS['php-curl'][md5($uri)]['size']['download'] = curl_getinfo($btt, CURLINFO_SIZE_DOWNLOAD); + $GLOBALS['php-curl'][md5($uri)]['size']['upload'] = curl_getinfo($btt, CURLINFO_SIZE_UPLOAD); + $GLOBALS['php-curl'][md5($uri)]['content']['length']['download'] = curl_getinfo($btt, CURLINFO_CONTENT_LENGTH_DOWNLOAD); + $GLOBALS['php-curl'][md5($uri)]['content']['length']['upload'] = curl_getinfo($btt, CURLINFO_CONTENT_LENGTH_UPLOAD); + $GLOBALS['php-curl'][md5($uri)]['content']['type'] = curl_getinfo($btt, CURLINFO_CONTENT_TYPE); + curl_close($btt); + return $data; + } } ?> Modified: *.xoops.org (Subdomain APIs & Sites)/fonty.xoops.org/include/common.php =================================================================== --- *.xoops.org (Subdomain APIs & Sites)/fonty.xoops.org/include/common.php 2018-02-10 14:30:09 UTC (rev 13339) +++ *.xoops.org (Subdomain APIs & Sites)/fonty.xoops.org/include/common.php 2018-02-23 10:24:00 UTC (rev 13340) @@ -24,6 +24,7 @@ * Include files with definitions */ include_once dirname(__DIR__) . DS . 'mainfile.php'; +include_once __DIR__ . DS . 'constants.php'; include_once __DIR__ . DS . 'functions.php'; include_once __DIR__ . DS . 'version.php'; include_once __DIR__ . DS . 'license.php'; @@ -60,6 +61,7 @@ * Get database for making it global * Requires APILogger, API_DB_PROXY; */ -require_once API_ROOT_PATH . DS . 'include' . DS . 'dbconfig.php'; -require_once API_ROOT_PATH . DS . 'class' . DS . 'database' . DS . 'databasefactory.php'; -$GLOBALS['APIDB'] = APIDatabaseFactory::getDatabaseConnection(); +if (include_once API_ROOT_PATH . DS . 'include' . DS . 'dbconfig.php') { + include_once API_ROOT_PATH . DS . 'class' . DS . 'database' . DS . 'databasefactory.php'; + $GLOBALS['APIDB'] = APIDatabaseFactory::getDatabaseConnection(); +} Modified: *.xoops.org (Subdomain APIs & Sites)/fonty.xoops.org/include/data/convert-fonts-upload.pe =================================================================== --- *.xoops.org (Subdomain APIs & Sites)/fonty.xoops.org/include/data/convert-fonts-upload.pe 2018-02-10 14:30:09 UTC (rev 13339) +++ *.xoops.org (Subdomain APIs & Sites)/fonty.xoops.org/include/data/convert-fonts-upload.pe 2018-02-23 10:24:00 UTC (rev 13340) @@ -1,2 +1,3 @@ Open($1) -Generate($1:r + ".eot") \ No newline at end of file +Generate($1:r + ".eot") +Generate($1:r + ".ufo") \ No newline at end of file Modified: *.xoops.org (Subdomain APIs & Sites)/fonty.xoops.org/include/data/packs-extracting.diz =================================================================== --- *.xoops.org (Subdomain APIs & Sites)/fonty.xoops.org/include/data/packs-extracting.diz 2018-02-10 14:30:09 UTC (rev 13339) +++ *.xoops.org (Subdomain APIs & Sites)/fonty.xoops.org/include/data/packs-extracting.diz 2018-02-23 10:24:00 UTC (rev 13340) @@ -1,4 +1,4 @@ -7z||7z x -y -q -o"%path" "%pack" +7z||7z x -y -o"%path" "%pack" tar||#tar -xf --directory="%path" "%pack" tar.7z||#tar -xf --directory="%path" "%pack" tar.Z||#tar -xf --directory="%path" "%pack" Modified: *.xoops.org (Subdomain APIs & Sites)/fonty.xoops.org/include/data/uploads.json =================================================================== --- *.xoops.org (Subdomain APIs & Sites)/fonty.xoops.org/include/data/uploads.json 2018-02-10 14:30:09 UTC (rev 13339) +++ *.xoops.org (Subdomain APIs & Sites)/fonty.xoops.org/include/data/uploads.json 2018-02-23 10:24:00 UTC (rev 13340) @@ -1 +1 @@ -{"":{"1512978637":{"type":"pack","pack":"u.zip","packtype":"zip","files":[["\/home\/mynamesnot\/eclipse-workspace\/fonts.localhost\/data\/Fonts\/Unpacking\/simon@snails.email\/1512978637.6466\/u.zip"]],"form":{"email":"simon@snails.email","name":"Dr. Simon Antony Roberts","bizo":"Chronolabs Cooperative","prefix":"snailsemail:","email-cc":"","email-bcc":"","return":"http:\/\/fonty.localhost","callback":"","field":"5e6b4b0d3","submit":"Upload File"},"path":"\/simon@snails.email\/1512978637.6466","success":[],"start":[1512978721.754254],"ipid":"","time":1512978721,"process":1512978721.817317,"mode":"unpacking","current":null}}} \ No newline at end of file +[] \ No newline at end of file Modified: *.xoops.org (Subdomain APIs & Sites)/fonty.xoops.org/include/functions.php =================================================================== --- *.xoops.org (Subdomain APIs & Sites)/fonty.xoops.org/include/functions.php 2018-02-10 14:30:09 UTC (rev 13339) +++ *.xoops.org (Subdomain APIs & Sites)/fonty.xoops.org/include/functions.php 2018-02-23 10:24:00 UTC (rev 13340) @@ -36,17 +36,41 @@ * * @return float() */ - function getURIData($uri = '', $timeout = 25, $connectout = 25) + function getURIData($uri = '', $timeout = 25, $connectout = 25, $post = array(), $headers = array()) { if (!function_exists("curl_init")) { - return file_get_contents($uri); + die("Install PHP Curl Extension ie: $ sudo apt-get install php-curl -y"); } + $GLOBALS['php-curl'][md5($uri)] = array(); if (!$btt = curl_init($uri)) { return false; } - curl_setopt($btt, CURLOPT_HEADER, 0); - curl_setopt($btt, CURLOPT_POST, 0); + if (count($post)==0 || empty($post)) + curl_setopt($btt, CURLOPT_POST, false); + else { + $uploadfile = false; + foreach($post as $field => $value) + if (substr($value , 0, 1) == '@' && !file_exists(substr($value , 1, strlen($value) - 1))) + unset($post[$field]); + else + $uploadfile = true; + curl_setopt($btt, CURLOPT_POST, true); + curl_setopt($btt, CURLOPT_POSTFIELDS, http_build_query($post)); + + if (!empty($headers)) + foreach($headers as $key => $value) + if ($uploadfile==true && substr($value, 0, strlen('Content-Type:')) == 'Content-Type:') + unset($headers[$key]); + if ($uploadfile==true) + $headers[] = 'Content-Type: multipart/form-data'; + } + if (count($headers)==0 || empty($headers)) + curl_setopt($btt, CURLOPT_HEADER, false); + else { + curl_setopt($btt, CURLOPT_HEADER, true); + curl_setopt($btt, CURLOPT_HTTPHEADER, $headers); + } curl_setopt($btt, CURLOPT_CONNECTTIMEOUT, $connectout); curl_setopt($btt, CURLOPT_TIMEOUT, $timeout); curl_setopt($btt, CURLOPT_RETURNTRANSFER, true); @@ -54,6 +78,16 @@ curl_setopt($btt, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($btt, CURLOPT_SSL_VERIFYPEER, false); $data = curl_exec($btt); + $GLOBALS['php-curl'][md5($uri)]['http']['posts'] = $post; + $GLOBALS['php-curl'][md5($uri)]['http']['headers'] = $headers; + $GLOBALS['php-curl'][md5($uri)]['http']['code'] = curl_getinfo($btt, CURLINFO_HTTP_CODE); + $GLOBALS['php-curl'][md5($uri)]['header']['size'] = curl_getinfo($btt, CURLINFO_HEADER_SIZE); + $GLOBALS['php-curl'][md5($uri)]['header']['value'] = curl_getinfo($btt, CURLINFO_HEADER_OUT); + $GLOBALS['php-curl'][md5($uri)]['size']['download'] = curl_getinfo($btt, CURLINFO_SIZE_DOWNLOAD); + $GLOBALS['php-curl'][md5($uri)]['size']['upload'] = curl_getinfo($btt, CURLINFO_SIZE_UPLOAD); + $GLOBALS['php-curl'][md5($uri)]['content']['length']['download'] = curl_getinfo($btt, CURLINFO_CONTENT_LENGTH_DOWNLOAD); + $GLOBALS['php-curl'][md5($uri)]['content']['length']['upload'] = curl_getinfo($btt, CURLINFO_CONTENT_LENGTH_UPLOAD); + $GLOBALS['php-curl'][md5($uri)]['content']['type'] = curl_getinfo($btt, CURLINFO_CONTENT_TYPE); curl_close($btt); return $data; } @@ -1971,26 +2005,18 @@ $_SESSION['locality'] = array(); if (API_NETWORK_LOGISTICS==true) { - $uris = cleanWhitespaces(file($file = __DIR__ . DIRECTORY_SEPARATOR . "data" . DIRECTORY_SEPARATOR . "lookups.diz")); - shuffle($uris); shuffle($uris); shuffle($uris); shuffle($uris); if (filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE || FILTER_FLAG_NO_RES_RANGE) === false || substr($ip,3,0)=="10." || substr($ip,4,0)=="127.") { $data = array(); - foreach($uris as $uri) - { - if ($_SESSION['locality']['ip']==$ip || $_SESSION['locality']['country']['iso'] == "-" || empty($_SESSION['locality'])) - $_SESSION['locality'] = json_decode(getURIData(sprintf($uri, 'myself', 'json'), 5, 10), true); - if (count($_SESSION['locality']) > 1 && $_SESSION['locality']['country']['iso'] != "-") - continue; - } + if ($_SESSION['locality']['ip']==$ip || $_SESSION['locality']['country']['iso'] == "-" || empty($_SESSION['locality'])) + $_SESSION['locality'] = json_decode(getURIData(sprintf(API_LOOKUPS_URL."/v2/country/%s/%s.api", 'myself', 'json'), 5, 10), true); + if (count($_SESSION['locality']) > 1 && $_SESSION['locality']['country']['iso'] != "-") + continue; } else{ - foreach($uris as $uri) - { - if ($_SESSION['locality']['ip']!=$ip || $_SESSION['locality']['country']['iso'] == "-" || empty($_SESSION['locality'])) - $_SESSION['locality'] = json_decode(getURIData(sprintf($uri, $ip, 'json'), 5, 10), true); - if (count($_SESSION['locality']) > 1 && $_SESSION['locality']['country']['iso'] != "-") - continue; - } + if ($_SESSION['locality']['ip']!=$ip || $_SESSION['locality']['country']['iso'] == "-" || empty($_SESSION['locality'])) + $_SESSION['locality'] = json_decode(getURIData(sprintf(API_LOOKUPS_URL."/v2/country/%s/%s.api", $ip, 'json'), 5, 10), true); + if (count($_SESSION['locality']) > 1 && $_SESSION['locality']['country']['iso'] != "-") + continue; } } if (!isset($_SESSION['locality']['ip'])) @@ -2068,19 +2094,14 @@ if (API_NETWORK_LOGISTICS==true) { $whois = array(); - $whoisuris = cleanWhitespaces(file(__DIR__ . DIRECTORY_SEPARATOR . "data" . DIRECTORY_SEPARATOR . "whois.diz")); - shuffle($whoisuris); shuffle($whoisuris); shuffle($whoisuris); shuffle($whoisuris); - foreach($whoisuris as $uri) + if (empty($whois[$_SESSION['ipdata'][$ip]['type']]) || !isset($whois[$_SESSION['ipdata'][$ip]['type']])) { - if (empty($whois[$_SESSION['ipdata'][$ip]['type']]) || !isset($whois[$_SESSION['ipdata'][$ip]['type']])) - { - $whois[$_SESSION['ipdata'][$ip]['type']] = json_decode(getURIData(sprintf($uri, $_SESSION['ipdata'][$ip]['ipaddy'], 'json'), 5, 10), true); - } elseif (empty($whois['domain']) || !isset($whois['domain'])) - { - $whois['domain'] = json_decode(getURIData(sprintf($uri, $_SESSION['ipdata'][$ip]['domain'], 'json'), 5, 10), true); - } else - continue; - } + $whois[$_SESSION['ipdata'][$ip]['type']] = json_decode(getURIData(sprintf(API_WHOIS_URL."/v2/%s/%s.api", $_SESSION['ipdata'][$ip]['ipaddy'], 'json'), 5, 10), true); + } elseif (empty($whois['domain']) || !isset($whois['domain'])) + { + $whois['domain'] = json_decode(getURIData(sprintf(API_WHOIS_URL."/v2/%s/%s.api", $_SESSION['ipdata'][$ip]['domain'], 'json'), 5, 10), true); + } else + continue; $sql = "SELECT count(*) FROM `whois` WHERE `id` = '".$wsid = md5(json_encode($whois))."'"; list($countb) = $GLOBALS['APIDB']->fetchRow($GLOBALS['APIDB']->queryF($sql)); if ($countb == 0) @@ -2148,31 +2169,15 @@ { if (empty($classes)) { - if (empty($stratauris)) { - $stratauris = cleanWhitespaces(file(__DIR__ . DIRECTORY_SEPARATOR . "data" . DIRECTORY_SEPARATOR . "stratas.diz")); - shuffle($stratauris); shuffle($stratauris); shuffle($stratauris); shuffle($stratauris); - } - shuffle($stratauris); + $attempts = 0; - while(empty($classes) || $attempts <= (count($stratauris) * 1.65)) - { - $attempts++; - $classes = array_keys(json_decode(getURIData($stratauris[mt_rand(0, count($stratauris)-1)] ."/v1/strata/serial.api", 15, 10), true)); - } + $attempts++; + $classes = array_keys(json_decode(getURIData(API_STRATA_URL ."/v1/strata/serial.api", 15, 10), true)); + } if (empty($fallout)) { - if (empty($stratauris)) { - $stratauris = cleanWhitespaces(file(__DIR__ . DIRECTORY_SEPARATOR . "data" . DIRECTORY_SEPARATOR . "stratas.diz")); - shuffle($stratauris); shuffle($stratauris); shuffle($stratauris); shuffle($stratauris); - } - shuffle($stratauris); - $attempts = 0; - while(empty($fallout) || $attempts <= (count($stratauris) * 1.65)) - { - $attempts++; - $fallout = array_keys(json_decode(getURIData($stratauris[mt_rand(0, count($stratauris)-1)] ."/v1/fallout/serial.api", 15, 10), true)); - } + $fallout = array_keys(json_decode(getURIData(API_STRATA_URL ."/v1/fallout/serial.api", 15, 10), true)); } // Get Full Hostname Modified: *.xoops.org (Subdomain APIs & Sites)/fonty.xoops.org/include/version.php =================================================================== --- *.xoops.org (Subdomain APIs & Sites)/fonty.xoops.org/include/version.php 2018-02-10 14:30:09 UTC (rev 13339) +++ *.xoops.org (Subdomain APIs & Sites)/fonty.xoops.org/include/version.php 2018-02-23 10:24:00 UTC (rev 13340) @@ -29,5 +29,5 @@ /** * Define API version */ -define('API_VERSION', 'Fonts Repository Services (Rest API) 2.7.5'); -define('API_TYPE', 'fonty'); +define('API_VERSION', 'Fonts Repository Services (Rest API) 2.7.7'); +define('API_TYPE', 'fonty-api'); Modified: *.xoops.org (Subdomain APIs & Sites)/fonty.xoops.org/install/include/config.php =================================================================== --- *.xoops.org (Subdomain APIs & Sites)/fonty.xoops.org/install/include/config.php 2018-02-10 14:30:09 UTC (rev 13339) +++ *.xoops.org (Subdomain APIs & Sites)/fonty.xoops.org/install/include/config.php 2018-02-23 10:24:00 UTC (rev 13340) @@ -33,23 +33,22 @@ // extension_loaded $configs['extensions'] = array( - 'mbstring' => array('MBString', sprintf(PHP_EXTENSION, CHAR_ENCODING)), - 'intl' => array('Intl', sprintf(PHP_EXTENSION, INTL_SUPPORT)), -// 'iconv' => array('Iconv', sprintf(PHP_EXTENSION, ICONV_CONVERSION)), - 'xml' => array('XML', sprintf(PHP_EXTENSION, XML_PARSING)), - 'zlib' => array('Zlib', sprintf(PHP_EXTENSION, ZLIB_COMPRESSION)), - 'gd' => array( - (function_exists('gd_info') && $gdlib = @gd_info()) ? 'GD ' . $gdlib['GD Version'] : '', - sprintf(PHP_EXTENSION, IMAGE_FUNCTIONS)), - 'exif' => array('Exif', sprintf(PHP_EXTENSION, IMAGE_METAS)), 'curl' => array('Curl', sprintf(PHP_EXTENSION, CURL_HTTP)), ); + +$configs['apiurl'] = array( + 'lookups' => 'http://lookups.snails.email', + 'strata' => 'http://strata.snails.email', + 'whois' => 'http://whois.snails.email' +); + // Writable files and directories $configs['writable'] = array( 'uploads/', 'data/', 'include/', + 'include/data/', 'mainfile.php', 'include/license.php', 'include/dbconfig.php', Modified: *.xoops.org (Subdomain APIs & Sites)/fonty.xoops.org/install/include/license.dist.php =================================================================== --- *.xoops.org (Subdomain APIs & Sites)/fonty.xoops.org/install/include/license.dist.php 2018-02-10 14:30:09 UTC (rev 13339) +++ *.xoops.org (Subdomain APIs & Sites)/fonty.xoops.org/install/include/license.dist.php 2018-02-23 10:24:00 UTC (rev 13340) @@ -22,7 +22,7 @@ defined('API_ROOT_PATH') || exit('Restricted access'); define('API_LICENSE_CODE', 'GPL'); -define('API_LICENSE_TEXT', 'General Public License (GPL) (v. 3.0)'); +define('API_LICENSE_TEXT', 'GPL General Public License (GPL) (v. 2.0)'); define('API_LICENSE_KEY', '000000-000000-000000-000000-0000000'); define('API_LICENSE_COMPANY', ''); define('API_LICENSE_UNAME', ''); @@ -31,4 +31,4 @@ define('API_LICENSE_PROTOCOL', ''); define('API_LICENSE_REALM', ''); define('API_LICENSE_PATH', ''); -define('API_LICENSE_TYPE', ''); +define('API_LICENSE_TYPE', ''); \ No newline at end of file Modified: *.xoops.org (Subdomain APIs & Sites)/fonty.xoops.org/install/include/page.php =================================================================== --- *.xoops.org (Subdomain APIs & Sites)/fonty.xoops.org/install/include/page.php 2018-02-10 14:30:09 UTC (rev 13339) +++ *.xoops.org (Subdomain APIs & Sites)/fonty.xoops.org/install/include/page.php 2018-02-23 10:24:00 UTC (rev 13340) @@ -43,6 +43,11 @@ 'title' => PATHS_SETTINGS_TITLE, 'icon' => 'fa fa-fw fa-folder-open' ), + 'extrasettings' => array( + 'name' => PATHS_EXTRA, + 'title' => PATHS_EXTRA_TITLE, + 'icon' => 'fa fa-fw fa-folder-open' + ), 'dbconnection' => array( 'name' => DATABASE_CONNECTION, 'title' => DATABASE_CONNECTION_TITLE, Modified: *.xoops.org (Subdomain APIs & Sites)/fonty.xoops.org/install/language/english/install.php =================================================================== --- *.xoops.org (Subdomain APIs & Sites)/fonty.xoops.org/install/language/english/install.php 2018-02-10 14:30:09 UTC (rev 13339) +++ *.xoops.org (Subdomain APIs & Sites)/fonty.xoops.org/install/language/english/install.php 2018-02-23 10:24:00 UTC (rev 13340) @@ -15,6 +15,15 @@ // _LANGCODE: en // _CHARSET : UTF-8 // Translator: API Translation Team +define('API_LOOKUPS_API_URL_LABEL', 'IP Lookups API (see: <a href="https://github.com/Chronolabs-Cooperative/Lookups-API-PHP" target="_blank">github.com</a>)'); +define('API_LOOKUPS_API_URL_HELP', 'IP Lookups API (see: <a href="https://github.com/Chronolabs-Cooperative/Lookups-API-PHP" target="_blank">github.com</a>)'); +define('API_STRATA_API_URL_LABEL', 'Domain/Realms Strata+Fallouts API (see: <a href="https://github.com/Chronolabs-Cooperative/Strata-API-PHP" target="_blank">github.com</a>)'); +define('API_STRATA_API_URL_HELP', 'Domain/Realms Strata+Fallouts API (see: <a href="https://github.com/Chronolabs-Cooperative/Strata-API-PHP" target="_blank">github.com</a>)'); +define('API_WHOIS_API_URL_LABEL', 'IP+Domain WhoIS API (see: <a href="https://github.com/Chronolabs-Cooperative/WhoIS-API-PHP" target="_blank">github.com</a>)'); +define('API_WHOIS_API_URL_HELP', 'IP+Domain WhoIS API (see: <a href="https://github.com/Chronolabs-Cooperative/WhoIS-API-PHP" target="_blank">github.com</a>)'); +define('PATHS_EXTRA', 'Extra Settings'); +define('PATHS_EXTRA_TITLE', 'Extra Settings Configurations'); + define('SHOW_HIDE_HELP', 'Show/hide help text'); // License define('LICENSE_NOT_WRITEABLE', 'License file "%s" is NOT writable!'); Modified: *.xoops.org (Subdomain APIs & Sites)/fonty.xoops.org/install/page_configsave.php =================================================================== --- *.xoops.org (Subdomain APIs & Sites)/fonty.xoops.org/install/page_configsave.php 2018-02-10 14:30:09 UTC (rev 13339) +++ *.xoops.org (Subdomain APIs & Sites)/fonty.xoops.org/install/page_configsave.php 2018-02-23 10:24:00 UTC (rev 13340) @@ -65,7 +65,22 @@ $GLOBALS['error'] = !($result === true); } + $constants = file(__DIR__ . DIRECTORY_SEPARATOR . 'include' . DIRECTORY_SEPARATOR . 'constants.dist.php'); + foreach($constants as $line => $code) + { + foreach($_SESSION['constants'] as $key => $values) + { + if (is_array($values)) { + foreach($values as $field => $value) + if (strpos($code, "API_".strtoupper($key)."_".strtoupper($field))) + $constants[$line] = "define('API_".strtoupper($key)."_".strtoupper($field)."','$value');\n"; + } elseif (strpos($code, "API_".strtoupper($key))) + $constants[$line] = "define('API_".strtoupper($key)."','$values');\n"; + } + } + $GLOBALS['error'] = !file_put_contents(dirname(__DIR__) . DIRECTORY_SEPARATOR . 'include' . DIRECTORY_SEPARATOR . 'constants.php' , implode($constants)); $_SESSION['settings']['authorized'] = false; + if ($result === true) { $_SESSION['UserLogin'] = true; Modified: *.xoops.org (Subdomain APIs & Sites)/fonty.xoops.org/install/sql/dbreport.html =================================================================== --- *.xoops.org (Subdomain APIs & Sites)/fonty.xoops.org/install/sql/dbreport.html 2018-02-10 14:30:09 UTC (rev 13339) +++ *.xoops.org (Subdomain APIs & Sites)/fonty.xoops.org/install/sql/dbreport.html 2018-02-23 10:24:00 UTC (rev 13340) @@ -1,49 +1,49 @@ -<ul class="prestige" style="list-style-bullet: none; float: left; width: 32%; padding: 4px; margin: 3px; font-size: 0.78764em;"><il><h3 style="font-size: 1.44812em;">mysql.callbacks.sql</h3></li><ul class="log"><li class="success prestige">Table fonts__callbacks created.</li> +<ul class="prestige" style="list-style-bullet: none; float: left; width: 32%; padding: 4px; margin: 3px; font-size: 0.78764em;"><il><h3 style="font-size: 1.44812em;">mysql.callbacks.sql</h3></li><ul class="log"><li class="success prestige">Table xc49__callbacks created.</li> </ul></ul> -<ul class="prestige" style="list-style-bullet: none; float: left; width: 32%; padding: 4px; margin: 3px; font-size: 0.78764em;"><il><h3 style="font-size: 1.44812em;">mysql.emails.sql</h3></li><ul class="log"><li class="success prestige">Table fonts__emails created.</li> +<ul class="prestige" style="list-style-bullet: none; float: left; width: 32%; padding: 4px; margin: 3px; font-size: 0.78764em;"><il><h3 style="font-size: 1.44812em;">mysql.emails.sql</h3></li><ul class="log"><li class="success prestige">Table xc49__emails created.</li> </ul></ul> -<ul class="prestige" style="list-style-bullet: none; float: left; width: 32%; padding: 4px; margin: 3px; font-size: 0.78764em;"><il><h3 style="font-size: 1.44812em;">mysql.flows.sql</h3></li><ul class="log"><li class="success prestige">Table fonts__flows created.</li> +<ul class="prestige" style="list-style-bullet: none; float: left; width: 32%; padding: 4px; margin: 3px; font-size: 0.78764em;"><il><h3 style="font-size: 1.44812em;">mysql.flows.sql</h3></li><ul class="log"><li class="success prestige">Table xc49__flows created.</li> </ul></ul> -<ul class="prestige" style="list-style-bullet: none; float: left; width: 32%; padding: 4px; margin: 3px; font-size: 0.78764em;"><il><h3 style="font-size: 1.44812em;">mysql.flows_history.sql</h3></li><ul class="log"><li class="success prestige">Table fonts__flows_history created.</li> +<ul class="prestige" style="list-style-bullet: none; float: left; width: 32%; padding: 4px; margin: 3px; font-size: 0.78764em;"><il><h3 style="font-size: 1.44812em;">mysql.flows_history.sql</h3></li><ul class="log"><li class="success prestige">Table xc49__flows_history created.</li> </ul></ul> -<ul class="prestige" style="list-style-bullet: none; float: left; width: 32%; padding: 4px; margin: 3px; font-size: 0.78764em;"><il><h3 style="font-size: 1.44812em;">mysql.fonts.sql</h3></li><ul class="log"><li class="success prestige">Table fonts__fonts created.</li> +<ul class="prestige" style="list-style-bullet: none; float: left; width: 32%; padding: 4px; margin: 3px; font-size: 0.78764em;"><il><h3 style="font-size: 1.44812em;">mysql.fonts.sql</h3></li><ul class="log"><li class="success prestige">Table xc49__fonts created.</li> </ul></ul> -<ul class="prestige" style="list-style-bullet: none; float: left; width: 32%; padding: 4px; margin: 3px; font-size: 0.78764em;"><il><h3 style="font-size: 1.44812em;">mysql.fonts_archiving.sql</h3></li><ul class="log"><li class="success prestige">Table fonts__fonts_archiving created.</li> +<ul class="prestige" style="list-style-bullet: none; float: left; width: 32%; padding: 4px; margin: 3px; font-size: 0.78764em;"><il><h3 style="font-size: 1.44812em;">mysql.fonts_archiving.sql</h3></li><ul class="log"><li class="success prestige">Table xc49__fonts_archiving created.</li> </ul></ul> -<ul class="prestige" style="list-style-bullet: none; float: left; width: 32%; padding: 4px; margin: 3px; font-size: 0.78764em;"><il><h3 style="font-size: 1.44812em;">mysql.fonts_callbacks.sql</h3></li><ul class="log"><li class="success prestige">Table fonts__fonts_callbacks created.</li> +<ul class="prestige" style="list-style-bullet: none; float: left; width: 32%; padding: 4px; margin: 3px; font-size: 0.78764em;"><il><h3 style="font-size: 1.44812em;">mysql.fonts_callbacks.sql</h3></li><ul class="log"><li class="success prestige">Table xc49__fonts_callbacks created.</li> </ul></ul> -<ul class="prestige" style="list-style-bullet: none; float: left; width: 32%; padding: 4px; margin: 3px; font-size: 0.78764em;"><il><h3 style="font-size: 1.44812em;">mysql.fonts_contributors.sql</h3></li><ul class="log"><li class="success prestige">Table fonts__fonts_contributors created.</li> +<ul class="prestige" style="list-style-bullet: none; float: left; width: 32%; padding: 4px; margin: 3px; font-size: 0.78764em;"><il><h3 style="font-size: 1.44812em;">mysql.fonts_contributors.sql</h3></li><ul class="log"><li class="success prestige">Table xc49__fonts_contributors created.</li> </ul></ul> -<ul class="prestige" style="list-style-bullet: none; float: left; width: 32%; padding: 4px; margin: 3px; font-size: 0.78764em;"><il><h3 style="font-size: 1.44812em;">mysql.fonts_downloads.sql</h3></li><ul class="log"><li class="success prestige">Table fonts__fonts_downloads created.</li> +<ul class="prestige" style="list-style-bullet: none; float: left; width: 32%; padding: 4px; margin: 3px; font-size: 0.78764em;"><il><h3 style="font-size: 1.44812em;">mysql.fonts_downloads.sql</h3></li><ul class="log"><li class="success prestige">Table xc49__fonts_downloads created.</li> </ul></ul> -<ul class="prestige" style="list-style-bullet: none; float: left; width: 32%; padding: 4px; margin: 3px; font-size: 0.78764em;"><il><h3 style="font-size: 1.44812em;">mysql.fonts_files.sql</h3></li><ul class="log"><li class="success prestige">Table fonts__fonts_files created.</li> +<ul class="prestige" style="list-style-bullet: none; float: left; width: 32%; padding: 4px; margin: 3px; font-size: 0.78764em;"><il><h3 style="font-size: 1.44812em;">mysql.fonts_files.sql</h3></li><ul class="log"><li class="success prestige">Table xc49__fonts_files created.</li> </ul></ul> -<ul class="prestige" style="list-style-bullet: none; float: left; width: 32%; padding: 4px; margin: 3px; font-size: 0.78764em;"><il><h3 style="font-size: 1.44812em;">mysql.fonts_fingering.sql</h3></li><ul class="log"><li class="success prestige">Table fonts__fonts_fingering created.</li> +<ul class="prestige" style="list-style-bullet: none; float: left; width: 32%; padding: 4px; margin: 3px; font-size: 0.78764em;"><il><h3 style="font-size: 1.44812em;">mysql.fonts_fingering.sql</h3></li><ul class="log"><li class="success prestige">Table xc49__fonts_fingering created.</li> </ul></ul> -<ul class="prestige" style="list-style-bullet: none; float: left; width: 32%; padding: 4px; margin: 3px; font-size: 0.78764em;"><il><h3 style="font-size: 1.44812em;">mysql.fonts_glyphs.sql</h3></li><ul class="log"><li class="success prestige">Table fonts__fonts_glyphs created.</li> +<ul class="prestige" style="list-style-bullet: none; float: left; width: 32%; padding: 4px; margin: 3px; font-size: 0.78764em;"><il><h3 style="font-size: 1.44812em;">mysql.fonts_glyphs.sql</h3></li><ul class="log"><li class="success prestige">Table xc49__fonts_glyphs created.</li> </ul></ul> -<ul class="prestige" style="list-style-bullet: none; float: left; width: 32%; padding: 4px; margin: 3px; font-size: 0.78764em;"><il><h3 style="font-size: 1.44812em;">mysql.fonts_glyphs_contours.sql</h3></li><ul class="log"><li class="success prestige">Table fonts__fonts_glyphs_contours created.</li> +<ul class="prestige" style="list-style-bullet: none; float: left; width: 32%; padding: 4px; margin: 3px; font-size: 0.78764em;"><il><h3 style="font-size: 1.44812em;">mysql.fonts_glyphs_contours.sql</h3></li><ul class="log"><li class="success prestige">Table xc49__fonts_glyphs_contours created.</li> </ul></ul> -<ul class="prestige" style="list-style-bullet: none; float: left; width: 32%; padding: 4px; margin: 3px; font-size: 0.78764em;"><il><h3 style="font-size: 1.44812em;">mysql.fonts_names.sql</h3></li><ul class="log"><li class="success prestige">Table fonts__fonts_names created.</li> +<ul class="prestige" style="list-style-bullet: none; float: left; width: 32%; padding: 4px; margin: 3px; font-size: 0.78764em;"><il><h3 style="font-size: 1.44812em;">mysql.fonts_names.sql</h3></li><ul class="log"><li class="success prestige">Table xc49__fonts_names created.</li> </ul></ul> -<ul class="prestige" style="list-style-bullet: none; float: left; width: 32%; padding: 4px; margin: 3px; font-size: 0.78764em;"><il><h3 style="font-size: 1.44812em;">mysql.networking.sql</h3></li><ul class="log"><li class="success prestige">Table fonts__networking created.</li> +<ul class="prestige" style="list-style-bullet: none; float: left; width: 32%; padding: 4px; margin: 3px; font-size: 0.78764em;"><il><h3 style="font-size: 1.44812em;">mysql.networking.sql</h3></li><ul class="log"><li class="success prestige">Table xc49__networking created.</li> </ul></ul> -<ul class="prestige" style="list-style-bullet: none; float: left; width: 32%; padding: 4px; margin: 3px; font-size: 0.78764em;"><il><h3 style="font-size: 1.44812em;">mysql.nodes.sql</h3></li><ul class="log"><li class="success prestige">Table fonts__nodes created.</li> +<ul class="prestige" style="list-style-bullet: none; float: left; width: 32%; padding: 4px; margin: 3px; font-size: 0.78764em;"><il><h3 style="font-size: 1.44812em;">mysql.nodes.sql</h3></li><ul class="log"><li class="success prestige">Table xc49__nodes created.</li> </ul></ul> -<ul class="prestige" style="list-style-bullet: none; float: left; width: 32%; padding: 4px; margin: 3px; font-size: 0.78764em;"><il><h3 style="font-size: 1.44812em;">mysql.nodes_linking.sql</h3></li><ul class="log"><li class="success prestige">Table fonts__nodes_linking created.</li> +<ul class="prestige" style="list-style-bullet: none; float: left; width: 32%; padding: 4px; margin: 3px; font-size: 0.78764em;"><il><h3 style="font-size: 1.44812em;">mysql.nodes_linking.sql</h3></li><ul class="log"><li class="success prestige">Table xc49__nodes_linking created.</li> </ul></ul> -<ul class="prestige" style="list-style-bullet: none; float: left; width: 32%; padding: 4px; margin: 3px; font-size: 0.78764em;"><il><h3 style="font-size: 1.44812em;">mysql.peers.sql</h3></li><ul class="log"><li class="success prestige">Table fonts__peers created.</li> +<ul class="prestige" style="list-style-bullet: none; float: left; width: 32%; padding: 4px; margin: 3px; font-size: 0.78764em;"><il><h3 style="font-size: 1.44812em;">mysql.peers.sql</h3></li><ul class="log"><li class="success prestige">Table xc49__peers created.</li> </ul></ul> -<ul class="prestige" style="list-style-bullet: none; float: left; width: 32%; padding: 4px; margin: 3px; font-size: 0.78764em;"><il><h3 style="font-size: 1.44812em;">mysql.releases.sql</h3></li><ul class="log"><li class="success prestige">Table fonts__releases created.</li> +<ul class="prestige" style="list-style-bullet: none; float: left; width: 32%; padding: 4px; margin: 3px; font-size: 0.78764em;"><il><h3 style="font-size: 1.44812em;">mysql.releases.sql</h3></li><ul class="log"><li class="success prestige">Table xc49__releases created.</li> </ul></ul> -<ul class="prestige" style="list-style-bullet: none; float: left; width: 32%; padding: 4px; margin: 3px; font-size: 0.78764em;"><il><h3 style="font-size: 1.44812em;">mysql.reserves.sql</h3></li><ul class="log"><li class="failure prestige">Unable to create table fonts__reserves</li> -<li class="failure prestige">Failed inserting -1 entries to table fonts__reserves.</li> +<ul class="prestige" style="list-style-bullet: none; float: left; width: 32%; padding: 4px; margin: 3px; font-size: 0.78764em;"><il><h3 style="font-size: 1.44812em;">mysql.reserves.sql</h3></li><ul class="log"><li class="failure prestige">Unable to create table xc49__reserves</li> +<li class="failure prestige">Failed inserting -1 entries to table xc49__reserves.</li> </ul></ul> <ul class="prestige" style="list-style-bullet: none; float: left; width: 32%; padding: 4px; margin: 3px; font-size: 0.78764em;"><il><h3 style="font-size: 1.44812em;">mysql.routines.sql</h3></li><ul class="log"></ul></ul> -<ul class="prestige" style="list-style-bullet: none; float: left; width: 32%; padding: 4px; margin: 3px; font-size: 0.78764em;"><il><h3 style="font-size: 1.44812em;">mysql.structure.sql</h3></li><ul class="log"><li class="success prestige">Table fonts__users created.</li> -<li class="failure prestige">Unable to create table fonts__peers</li> +<ul class="prestige" style="list-style-bullet: none; float: left; width: 32%; padding: 4px; margin: 3px; font-size: 0.78764em;"><il><h3 style="font-size: 1.44812em;">mysql.structure.sql</h3></li><ul class="log"><li class="success prestige">Table xc49__users created.</li> +<li class="failure prestige">Unable to create table xc49__peers</li> </ul></ul> -<ul class="prestige" style="list-style-bullet: none; float: left; width: 32%; padding: 4px; margin: 3px; font-size: 0.78764em;"><il><h3 style="font-size: 1.44812em;">mysql.uploads.sql</h3></li><ul class="log"><li class="success prestige">Table fonts__uploads created.</li> +<ul class="prestige" style="list-style-bullet: none; float: left; width: 32%; padding: 4px; margin: 3px; font-size: 0.78764em;"><il><h3 style="font-size: 1.44812em;">mysql.uploads.sql</h3></li><ul class="log"><li class="success prestige">Table xc49__uploads created.</li> </ul></ul> -<ul class="prestige" style="list-style-bullet: none; float: left; width: 32%; padding: 4px; margin: 3px; font-size: 0.78764em;"><il><h3 style="font-size: 1.44812em;">mysql.whois.sql</h3></li><ul class="log"><li class="success prestige">Table fonts__whois created.</li> +<ul class="prestige" style="list-style-bullet: none; float: left; width: 32%; padding: 4px; margin: 3px; font-size: 0.78764em;"><il><h3 style="font-size: 1.44812em;">mysql.whois.sql</h3></li><ul class="log"><li class="success prestige">Table xc49__whois created.</li> </ul></ul> |