php:autoblog2
Ceci est une ancienne révision du document !
Autoblog Index 2
Autoblog listing 2012-12-13
- index.php
<?php function get_title_from_feed($url) { // get site title from feed $data = file_get_contents("$url"); if($data === false) { die('url error'); } $dom = new DOMDocument; $dom->loadXML($data) or die('not xml'); $title = $dom->getElementsByTagName('title'); return $title->item(0)->nodeValue; } function get_link_from_feed($url) { // get site link from feed $data = file_get_contents("$url"); $check = substr($data, 0, 5); if($check !== '<?xml') { die('not a feed'); } $xml = new SimpleXmlElement($data); $channel['link'] = $xml->channel->link; if($channel['link'] === NULL) { $dom = new DOMDocument; $dom->loadXML($data) or die('not xml'); $link = $dom->getElementsByTagName('uri'); return $link->item(0)->nodeValue; } else { return $channel['link']; } } if (isset($_GET['export'])) // autoblog exporting { header('Content-Type: application/json'); $directory = "./"; $subdirs = glob($directory . "*"); foreach($subdirs as $unit) { if(is_dir($unit)) { $unit=substr($unit, 2); $ini = parse_ini_file($unit.'/vvb.ini'); $config = new stdClass; foreach ($ini as $key=>$value) { $key = strtolower($key); $config->$key = $value; } unset($ini); $title=$config->site_title; $url=$config->site_url; $feed=$config->feed_url; $reponse[$unit] = array("$title", "$url", "$feed"); } } echo json_encode($reponse); die; } define('ROOT_DIR', __DIR__); function escape($str) { return htmlspecialchars($str, ENT_COMPAT, 'UTF-8', false); } if( !empty($_POST) ) { $error = array(); if( !empty($_POST['rssurl']) && !empty($_POST['number']) ) { $rssurl = escape($_POST['rssurl']); if( $_POST['number'] !== '17' ) { $error[] = "Le chiffre. Écrivez le chiffre."; } } else { $error[] = "Assurez vous de bien remplir tous les champs."; } if( empty($error) ) { $siteurl = get_link_from_feed($rssurl); $foldername = sha1($siteurl); $sitename = get_title_from_feed($rssurl); $sitedomain1 = preg_split('/\//', $siteurl, 0);$sitedomain2=$sitedomain1[2];$sitedomain3=explode(".", $sitedomain2);$sitedomain3=array_reverse($sitedomain3); $sitedomain = $sitedomain3[1].'.'.$sitedomain3[0]; if( !preg_match('#\.\.|/#', $foldername) ) { if(file_exists($foldername)) { die('Erreur: l\'autoblog <a href="./'.$foldername.'/">existe déjà</a>.'); } if ( mkdir('./'. $foldername, 0755, false) ) { $fp = fopen('./'. $foldername .'/index.php', 'w+'); if( !fwrite($fp, "<?php require_once dirname(__DIR__) . '/autoblog.php'; ?>") ) $error[] = "Impossible d'écrire le fichier index.php"; fclose($fp); $fp = fopen('./'. $foldername .'/vvb.ini', 'w+'); if( !fwrite($fp, '[VroumVroumBlogConfig] SITE_TITLE="'. $sitename .'" SITE_DESCRIPTION="Ce site n\'est pas le site officiel de '. $sitename .'<br>C\'est un blog automatisé qui réplique les articles de <a href="'. $siteurl .'">'. $sitename .'</a>" SITE_URL="'. $siteurl .'" FEED_URL="'. $rssurl .'" DOWNLOAD_MEDIA_FROM='.$sitedomain) ) $error[] = "Impossible d'écrire le fichier vvb.ini"; fclose($fp); } else $error[] = "Impossible de créer le répertoire."; } else $error[] = "Nom de site invalide."; } } ?> <!DOCTYPE html> <html lang="en" dir="ltr"> <head> <meta charset="utf-8"> <title>Le Projet Autoblog</title> <style type="text/css"> body {background-color:#efefef;text-align:center;color:#333;} a {color:black;text-decoration:none;font-weight:bold;} a:hover {color:darkred;} h1 { text-align:center;font-size:40pt;text-shadow: #ccc 0px 5px 5px; } h2 { text-align:center;font-size: 16pt;margin:0 0 1em 0;font-style:italic;text-shadow: #ccc 0px 5px 5px; } .pbloc {background-color:white;padding: 12px 10px 12px 10px;border:1px solid #aaa;max-width:70em;margin:1em auto;word-wrap:break-word;hyphens:auto;-webkit-hyphens:auto;-moz-hyphens:auto;text-align:justify;box-shadow:0px 5px 7px #aaa;} input {width:15em;} .vignette { width:20em;float:left;margin:0; padding:20px;background-color:#eee;border: 1px solid #888;} .vignette .title { font-size: 14pt;font-style:italic;text-shadow: #ccc 0px 5px 5px;} .vignette .title a:hover { color:darkred; text-decoration:none;} .vignette .source { font-style:italic;font-size:x-small;} .vignette .source a:hover { color:darkred; text-decoration:none;} .clear {clear:both;text-align:right;font-size:small;} #logo {float: right;} </style> </head> <body> <h1>Le Projet Autoblog</h1> <div class="pbloc"> <img id="logo" src="./logo.svg" alt=""> <b>Note</b><br> Voici une liste d'autoblogs hébergés sur <i><?php echo $_SERVER['SERVER_NAME']; ?></i> (<a href="http://sebsauvage.net/streisand.me/">plus d'infos sur le projet</a>).<br><br> <b>Autres fermes</b><br> → <a href="https://duckduckgo.com/?q=!g %22Voici une liste d'autoblogs hébergés%22">Rechercher</a><br><br> <b>Ajouter votre site</b><br> <?php if( !empty( $error )) { echo '<p>Erreur(s) :</p><ul>'; foreach ( $error AS $value ) { echo '<li>'. $value .'</li>'; } echo '</ul>'; } ?> Si vous souhaitez que <i><?php echo $_SERVER['SERVER_NAME']; ?></i> héberge un autoblog de votre site, remplissez le formulaire suivant:<br><br> <form method="POST"> <input placeholder="Adresse du flux RSS/ATOM" type="text" name="rssurl" id="rssurl"><br> <input placeholder="Antibot: 'dix sept' en chiffre" type="text" name="number" id="number"><br> <input type="submit" value="Créer"> </form> </div> <div class="pbloc"> <h2>Autoblogs hébergés</h2> <div class="clear"><a href="?export">export<sup> JSON</sup></a></div> <?php $directory = "./"; $subdirs = glob($directory . "*"); foreach($subdirs as $unit) { if(is_dir($unit)) { $ini = parse_ini_file(ROOT_DIR . '/' . $unit . '/vvb.ini'); $config = new stdClass; $unit=substr($unit, 2); foreach ($ini as $key=>$value) { $key = strtolower($key); $config->$key = $value; } unset($ini); echo ' <div class="vignette"> <div class="title"><a href="'.$unit.'/">'.escape($config->site_title).'</a></div> <div class="source">source: <a href="'.escape($config->site_url).'">'.escape($config->site_url).'</a></div> </div>'; } } ?> <div class="clear"></div> </div> Autoblogs propulsés par <a href="http://autoblog.kd2.org/source.txt">VroumVroumBlog 0.2.10</a> [SQLite] (Domaine Public)<br><a href="http://wiki.suumitsu.eu/doku.php?id=php:autoblog2">index 2</a> inspiré de <a href="http://wiki.hoa.ro/doku.php?id=web%3Aferme-autoblog">Ferme d'Autoblog</a> (Arthur Hoaro, Creative Commons by 3.0) </body> </html>
php/autoblog2.1355437791.txt.gz · Dernière modification : (modification externe)
