Outils pour utilisateurs

Outils du site


php:autoblog2

Ceci est une ancienne révision du document !


Autoblog Index 2

Autoblog listing (développement en cours avec Oros)

ToDo/idées

2013-01-16

index.php
<?php
 
function get_title_from_feed($url)
	{
	// get site title from feed
	$data = file_get_contents("$url");
	if($data === false) { die('url inaccessible');  }
	$dom = new DOMDocument;
	$dom->loadXML($data) or die('xml malformé');
	$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('n\'est pas un flux valide'); }
	$xml = new SimpleXmlElement($data);
	$channel['link'] = $xml->channel->link;
		if($channel['link'] === NULL)
			{
			$dom = new DOMDocument;
			$dom->loadXML($data) or die('xml malformé');
			$link = $dom->getElementsByTagName('uri');
			return $link->item(0)->nodeValue;
			}
		else
			{
			return $channel['link'];
			}
	}
 
function serverUrl()
{
    $https = (!empty($_SERVER['HTTPS']) && (strtolower($_SERVER['HTTPS'])=='on')) || $_SERVER["SERVER_PORT"]=='443'; // HTTPS detection.
    $serverport = ($_SERVER["SERVER_PORT"]=='80' || ($https && $_SERVER["SERVER_PORT"]=='443') ? '' : ':'.$_SERVER["SERVER_PORT"]);
    return 'http'.($https?'s':'').'://'.$_SERVER["SERVER_NAME"].$serverport;
}
 
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);
}
 
$form = '<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="Vérifier"></form>';
 
if(!empty($_GET['via_button']) && !empty($_GET['rssurl']) && $_GET['number'] === '17')
{
	if(isset($_GET['add']) && $_GET['add'] === '1' && !empty($_GET['siteurl']) && !empty($_GET['sitename']))
		{
		$rssurl = escape($_GET['rssurl']);$siteurl = escape($_GET['siteurl']);$foldername = sha1($siteurl);$sitename = escape($_GET['sitename']);
		$sitedomain1 = preg_split('/\//', $siteurl, 0);$sitedomain2=$sitedomain1[2];$sitedomain3=explode(".", $sitedomain2);$sitedomain3=array_reverse($sitedomain3);$sitedomain = $sitedomain3[1].'.'.$sitedomain3[0];
			if(file_exists($foldername)) { die('Erreur: l\'autoblog <a target="_blank" 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'; ?>") )
		{die("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) )
	{die("Impossible d'écrire le fichier vvb.ini");}
	fclose($fp);
	{die('<iframe width="1" height="1" frameborder="0" src="'.$foldername.'"></iframe><b style="color:darkgreen">autoblog crée avec succès.</b> &rarr; <a target="_blank" href="'.$foldername.'">afficher l\'autoblog</a>');}
	}
else 
	 {die("Impossible de créer le répertoire.");}
 
		}
	else
		{
		// checking procedure
		$rssurl = $_GET['rssurl'];$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(file_exists($foldername)) { die('Erreur: l\'autoblog <a href="./'.$foldername.'/">existe déjà</a>.'); }
		$form = '<html><head></head><body><span style="color:blue">Merci de vérifier les informations suivantes, corrigez si nécessaire.</span><br>
		<form method="GET">
		<input type="hidden" name="via_button" value="1"><input type="hidden" name="add" value="1"><input type="hidden" name="number" value="17">
		<input style="width:30em;" type="text" name="sitename" id="sitename" value="'.$sitename.'"><label for="sitename">&larr; titre du site (auto)</label><br>		
		<input style="width:30em;" placeholder="Adresse du site" type="text" name="siteurl" id="siteurl" value="'.$siteurl.'"><label for="siteurl">&larr; page d\'accueil (auto)</label><br>
        <input style="width:30em;" placeholder="Adresse du flux RSS/ATOM" type="text" name="rssurl" id="rssurl" value="'.$rssurl.'"><label for="rssurl">&larr; adresse du flux</label><br>
        <input type="submit" value="Créer"></form></body></html>';
		echo $form; die;
		}
}
 
 
if( !empty($_POST) ) {
    $error = array();
	if(empty($_POST['rssurl']))
		{$error[] = "Veuillez entrer l'adresse du flux.";}
	if(empty($_POST['number']))
		{$error[] = "Le chiffre. Écrivez le chiffre.";}
    if($_POST['number'] !== '17')
		{$error[] = "C'est pas le bon chiffre.";} 
 
	if(empty($error))
		{
		$rssurl = escape($_POST['rssurl']);
		if(!empty($_POST['siteurl']))
			{
			// check done, writing out
			$siteurl = escape($_POST['siteurl']);$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(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);
			$error[] = '<iframe width="1" height="1" frameborder="0" src="'.$foldername.'"></iframe><b style="color:darkgreen">autoblog crée avec succès.</b> &rarr; <a target="_blank" href="'.$foldername.'">afficher l\'autoblog</a>';
            }
            else 
                $error[] = "Impossible de créer le répertoire.";
 
 
			}
		else
			{
			// checking procedure
			$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(file_exists($foldername)) { die('Erreur: l\'autoblog <a href="./'.$foldername.'/">existe déjà</a>.'); }
			$form = '<span style="color:blue">Merci de vérifier les informations suivantes, corrigez si nécessaire.</span><br>
			<form method="POST"><input style="color:black" type="text" id="sitename" value="'.$sitename.'" disabled><label for="sitename">&larr; titre du site (auto)</label><br>		
			<input placeholder="Adresse du site" type="text" name="siteurl" id="siteurl" value="'.$siteurl.'"><label for="siteurl">&larr; page d\'accueil (auto)</label><br>
            <input placeholder="Adresse du flux RSS/ATOM" type="text" name="rssurl" id="rssurl" value="'.$rssurl.'"><label for="rssurl">&larr; adresse du flux</label><br>
            <input placeholder="Antibot: \'dix sept\' en chiffre" type="text" name="number" id="number" value="17"><label for="number">&larr; antibot</label><br><input type="submit" value="Créer"></form>';
			}
 
		}
}
?>
<!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;text-align:justify;box-shadow:0px 5px 7px #aaa;}
			input {width:30em;}
			.vignette { width:20em;height:2em;float:left;margin:0; padding:20px;background-color:#eee;border: 1px solid #888;}
			.vignette:hover { background-color:#fff;}
			.vignette .title { font-size: 14pt;text-shadow: #ccc 0px 5px 5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
			.vignette .title a:hover { color:darkred; text-decoration:none;}
			.vignette .source { font-size:x-small;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
			.vignette .source a:hover { color:darkred; text-decoration:none;}
			.clear {clear:both;text-align:right;font-size:small;}
			#logo {float: right;}
			.bouton{background: -moz-linear-gradient(center top , #EDEDED 5%, #DFDFDF 100%) repeat scroll 0 0 #EDEDED;border: 1px none;padding: 10px;border: 1px solid #7777777;border-radius: 8px 8px 8px 8px;box-shadow: 0 1px 0 0 #FFFFFF inset;display: inline-block;}
 
		</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,<br/>remplissez le formulaire suivant:<br><br>
		<?php echo $form; ?>
<br>Pour ajouter facillement un autoblog, glissez ce bouton dans votre barre de marque-pages =&gt; <a class="bouton" onclick="alert('Glissez ce lien dans votre barre de marque-pages ou clic-droit puis choisiez d\'ajouter ce lien aux marque-pages.');return false;" href="javascript:(function(){var%20autoblog_url=&quot;<?php echo serverUrl().$_SERVER["REQUEST_URI"]; ?>&quot;;var%20popup=window.open(&quot;&quot;,&quot;Add%20autoblog&quot;,'height=180,width=670');popup.document.writeln('<html><head></head><body><form%20action=&quot;'+autoblog_url+'&quot;%20method=&quot;GET&quot;>');popup.document.write('Url%20feed%20%20:%20<br/>');var%20feed_links=new%20Array();var%20links=document.getElementsByTagName('link');if(links.length>0){for(var%20i=0;i<links.length;i++){if(links[i].rel==&quot;alternate&quot;){popup.document.writeln('<label%20for=&quot;feed_'+i+'&quot;><input%20id=&quot;feed_'+i+'&quot;%20type=&quot;radio&quot;%20name=&quot;rssurl&quot;%20value=&quot;'+links[i].href+'&quot;/>'+links[i].title+&quot;%20(%20&quot;+links[i].href+&quot;%20)</label><br/>&quot;);}}}popup.document.writeln(&quot;<input%20id='number'%20type='hidden'%20name='number'%20value='17'>&quot;);popup.document.writeln(&quot;<input%20type='hidden'%20name='via_button'%20value='1'>&quot;);popup.document.writeln(&quot;<br/><input%20type='submit'%20value='Vérifier'%20name='Ajouter'%20>&quot;);popup.document.writeln(&quot;</form></body></html>&quot;);})();">Projet Autoblog</a>
</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 . "*");
$autoblogs = array();
foreach($subdirs as $unit)
{
	if(is_dir($unit))
	{
		$ini = parse_ini_file(ROOT_DIR . '/' . $unit . '/vvb.ini');
		if($ini)
		{
			$config = new stdClass;
			$unit=substr($unit, 2);
			foreach ($ini as $key=>$value)
		    {
		            $key = strtolower($key);
		            $config->$key = $value;
		    }
		    $autoblogs[$unit] = '
				<div class="vignette">
					<div class="title"><a title="'.escape($config->site_title).'" href="'.$unit.'/"><img width="15" height="15" alt="" src="siteicon.svg"> '.escape($config->site_title).'</a></div>
					<div class="source"><a href="'.$unit.'/vvb.ini">config</a> | source: <a href="'.escape($config->site_url).'">'.escape($config->site_url).'</a></div>
				</div>';
		        unset($ini);
		}
	}
}
if(!empty($autoblogs)){
	sort($autoblogs, SORT_STRING);
	foreach ($autoblogs as $autoblog) {
		echo $autoblog;
	}
}
?>
<div class="clear"></div>
<?php echo "<br/>".count($autoblogs)." autoblogs d'hébergés"; ?>
</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)
<iframe width="1" height="1" frameborder="0" src="xsaf2.php"></iframe>
</body>
</html>
php/autoblog2.1358374780.txt.gz · Dernière modification : (modification externe)