Outils pour utilisateurs

Outils du site


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&eacute; qui r&eacute;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: 16pt;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>
			&rarr; <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.1355437593.txt.gz · Dernière modification : (modification externe)