, license GNU/GPL, www.gnu.org // v0.3.34 // Tags gérés par le wiki, à modifier si besoin $tags = array( "{{{"=>"

","}}}"=>"

","{{"=>"","}}"=>"","{"=>"","}"=>"","----"=>'
', '[url="'=>'',"[/url]"=>"","[u]"=>"","[/u]"=>"", "[img]"=>''" border="0" alt="" />','[img|right]'=>'
Nom du wiki:


Type de wiki:
Libre (possibilité de protéger certaines pages contre l'édition)
Privé (toutes les pages sont protégées sauf quelques unes)

Authentification du wiki pour l'administration:
Sur cette adresse IP:
Avec un mot de passe:
Aide de WikiKubbe
END; else $t = '
'.$t.'
 
'; echo << Installation de WikiKubbe

Installation de WikiKubbe

{$t} EOF; exit; } // Installation en elle-même function do_inst() { $p = $GLOBALS[fichier].".pages"; // Création du répertoire ou seront stockés la config et les pages if(!mkdir($p,0777) && !file_exists($p)) inst("Impossible de créer le répertoire '{$p}'."); // Création du .htaccess du rép $fp = @fopen($p."/.htaccess","w"); if(!$fp) inst("Impossible de créer un fichier dans le répertoire '{$p}', pour que le Wiki fonctionne mettez les permissions (chmod) sur ce répertoire à 777."); else { fputs($fp,"Allow from none\nDeny from All\n"); fclose($fp); } // Création de la config $fp = fopen($p."/config.inc.php","w"); $cont = ""; fputs($fp,$cont); fclose($fp); inst("Installation du wiki réussie. Rechargez cette page pour y entrer."); } // Filtre sur le texte function filtre($texte) { $texte = htmlentities(stripslashes($texte)); $texte = eregi_replace("[\n\r\t]+\[code\]","[code]",$texte); $texte = eregi_replace("\[/code\][\n\r\t]+","[/code]",$texte); $i=1; $pos = strpos($texte,"[code]"); while(is_numeric($pos)) { $code[$i] = substr($texte,$pos+6,strpos($texte,"[/code]") - ($pos+6)); $texte = str_replace("[code]".$code[$i]."[/code]","",$texte); $pos = strpos($texte,"[code]"); $i++; } $texte = eregi_replace("(^|[ \t\r\n])((ftp|http|https|gopher|mailto|news|nntp|telnet|wais|file|prospero):[A-Za-z0-9/](([A-Za-z0-9$_.+!*(),;/?:@&~=-])|%[A-Fa-f0-9]{2})+)","\\0",$texte); $texte = eregi_replace("(^|[ \t\r\n])([_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)+)", "\\0", $texte); $texte = ereg_replace("(^|[ \t\r\n])(([A-Z]+[a-z]+){2,})","\\1\\2",$texte); $texte = strtr($texte,$GLOBALS[tags]); for($i=1;$i <= count($code); $i++) { $code[$i] = ereg_replace("(\n| ) ","\\1  ",$code[$i]); $texte = str_replace("",'

'.trim($code[$i]).'

',$texte); } $texte = str_replace("@","@",$texte); return nl2br($texte); } function parser_page($a) { global $chemin; $p = $a.".kub"; $fp = @fopen($chemin.$p,"r"); if(!$fp) return FALSE; $out = fread($fp,4096*1024); fclose($fp); $rec[date] = filemtime($chemin.$p); if(file_exists($chemin.$a.".mod")) { $rec[modif] = filemtime($chemin.$a.".mod"); $tmp = @file($chemin.$a.".mod"); $rec[ip] = $tmp[0]; } else $rec[modif] = "1"; $rec[texte] = $out; return $rec; } function sauve_page($p,$txt) { $fp = @fopen($GLOBALS[chemin].$p.".kub","w"); if(!$fp) return FALSE; fputs($fp,$txt); fclose($fp); return TRUE; } function afficher($page,$err="") { $template = << #TITRE

#TITRE

#TEXTE
Dernière mise à jour le #DATE
ENDOFFILE; if(file_exists($chemin."page.html")) { $f = file($chemin."page.html"); $template = implode($f); } if($page == "MotDePasse") { $rec[date] = time(); $rec[texte] = '
Mot de passe:
'; } else $rec = parser_page($page); if($rec === FALSE) { $rec[texte] = "Décrivez ".$page." en appuyant sur le bouton éditer."; $rec[date] = time(); } $template = str_replace("#TITRE",$page,$template); $template = str_replace("#DATE",date("d/m/Y H:i",$rec[date]),$template); if($page != "MotDePasse") $rec[texte] = filtre($rec[texte]); if(!empty($err)) $rec[texte] = '

'.htmlentities(stripslashes(urldecode($err)))."

".$rec[texte]; $template = str_replace("#TEXTE",$rec[texte],$template); $template = str_replace("#NOM_WIKI",$GLOBALS[nom_wiki],$template); echo $template; } function editer($page) { if(!ereg("^([A-Z]+[a-z]+){2,}$",$page)) header("location: ./PageDaccueil"); if(file_exists($GLOBALS[chemin].$page.".lock")) $lock=1; if(file_exists($GLOBALS[chemin].$page.".unlock")) $unlock=1; if(($GLOBALS[type] == "prive" || $lock) && (AUTHENTIFICATION != "oui") && !$unlock) { header("location: ./{$page}+Erreur=".urlencode("Cette page est protégée contre l'édition.")); exit; } $template = << #TITRE

Edition de #TITRE


#PROTECTION

ENDOFFILE; if(file_exists($chemin."edition.html")) { $f = file($chemin."edition.html"); $template = implode($f); } $rec = parser_page($page); if($rec === FALSE) $rec[texte] = "Décrivez ".$page." ici."; if(($rec[modif] > 1) && ($rec[modif] > time()-3600) && ($_SERVER[REMOTE_ADDR] != $rec[ip])) header("location: ./{$page}+Erreur=".urlencode("Cette page est déjà en train d'être modifiée par une autre personne.")); if($rec !== FALSE) { $fp = fopen($GLOBALS[chemin].$page.".mod","w"); if($fp) { fputs($fp,$_SERVER[REMOTE_ADDR]); fclose($fp); } } if(AUTHENTIFICATION == "oui") { if($GLOBALS[type] == "libre") { $protec = ' "/") header("location: ".$fichier."/"); $chemin = substr($_SERVER[SCRIPT_NAME],1).".pages/"; if(!is_dir($chemin) || !file_exists($chemin."config.inc.php")) { if($_POST) do_inst(); else inst(); } require_once($chemin."config.inc.php"); if(($_COOKIE[kubpass] == $pass && ($ip == $_SERVER[REMOTE_ADDR] || !$ip)) || (!$pass && ($ip == $_SERVER[REMOTE_ADDR]))) define("AUTHENTIFICATION","oui"); if(strpos($path,"editer~")) editer(substr($path,8)); elseif(strpos($path,"raz~")) raz(substr($path,5)); elseif($_POST[enregistrer] && !empty($_POST[texte])) enregistrer($_POST[enregistrer],$_POST[texte]); elseif($_POST[password]) { if((!$ip || $ip == $_SERVER[REMOTE_ADDR]) && $_POST[password] == $pass) { setcookie("kubpass",$pass,0,"/"); header("location: ./"); } else header("location: ./PageDaccueil+Erreur=".urlencode("Mauvais mot de passe.")); } else { if(empty($_GET[page])) $page = substr($path,1); if(empty($page)) header("location: ./PageDaccueil"); if($p=strpos($page,"+Erreur=")) { $err = substr($page,$p+8); $page = substr($page,0,$p); } if(!ereg("^([A-Z]+[a-z]+){2,}$",$page) && !empty($page)) header("location: ./PageDaccueil"); afficher($page,$err); } ?>