Web Sémantique

RobotIRCVersWiki

PagePrincipale :: DerniersChangements :: DerniersCommentaires :: ParametresUtilisateur :: Vous êtes 38.103.63.18
Ce projet doit permettre de publier sur le wiki via IRC, grâce au robot quoibot (cf. ModeDEmploiDuCanalIRC).


Solutions

On verra les discussions sur WikiNi (WikiNi:AjoutDInformationViaLURL (interwiki)), proposant des solutions pour alimenter le wiki autrement que par une action directe d'un humain (Éditer cette page).
Pour mettre en oeuvre une solution j'ai besoin de savoir ce que le robot est capable de faire :
-- CharlesNepote

Ces deux robots sont écrits en Python. Ils ne gèrent pas cette fonctionnalité qui est donc à écrire et sont donc capables, virtuellement, de tout faire!
Je propose que nous commencions par "logger" qui est plus simple (historisation au fil de l'eau).
J'ai commencé à faire des essais sur BacAsableIrc et ai quelques problèmes avec le code que tu proposes.

C'est grave, docteur? -- EricVanDerVlist


Suggestions d'amélioration

Je pense qu'il serait intéressant d'ajouter une ancre à chaque phrase qui commence une nouvelle minute. Les ancres ne seraient pas répétées pour les phrases suivantes de la même minute. On aurrait par exemple :
<a name="[21:21]">[21:21]</a> <chn> Une petite revolution est passee inapercue dans le noyau Linux 2.6 :
<a name="[21:22]">[21:22]</a> <chn> http://freshmeat.net/projects/posixaclsforlinux/
[21:22] <chn> Il s'agit de la generalisation en standard, a tous les systemes de fichier, des Extended Attributes...
[21:22] <Ganf> j'avais une redhat qui gérait déjà les ACL
<a name="[21:22]">[21:23]</a> <chn> ... metadonnees libres pour chaque fichier
Je ne suis pas sûr que cela soit simple à réaliser...
-- CharlesNepote

Sécurité des ajouts

Attention, avec ce code il devient très facile d'engorger le wiki... C'est la raison pour laquelle je demandais s'il est possible de gérer les POST et/ou les cookies par les robots : on peut alors inclure des tests pour vérifier que n'importe qui ne publie pas n'importe quoi (voir WikiNi:AjoutDInformationViaLURL (interwiki)). -- CharlesNepote


Rotation des journeaux

En dehors de cela, il faudra voir comment gérer la rotation journaux. -- EricVanDerVlist


Code du handler append

Un deuxième petit jet de code à retravailler. (avec modifs pour gérer UTF-8 et invalider GET) -- EricVanDerVlist
<?php


// append.php version 0.03 (04/02/2004)
// par Charles Népote et Éric van der Vlist
// Licence GPL.



//vérification de sécurité
if (!eregi("wakka.php"$_SERVER['PHP_SELF'])) {
    die (
"acc&egrave;s direct interdit");
}



//  /append&submit=direct&content=khhjkhhjk

// Tests pour valider la demande
// Actions avant la publication
// Publication
// Action après la publication
// Si interactif : Redirect

// Tests pour valider la demande

// Alimente les variables 
if ($_POST["content"])
{
    
$content mb_convert_encoding($_POST["content"], "ISO-8859-15""UTF-8");
    
$submit $_POST["submit"];
}
//else if ($_GET["content"])
//{
//    $content = $_GET["content"];
//    $submit = $_GET["submit"];
//}
else break;

// 
if ($this->HasAccess("write") && $this->HasAccess("read"))
    {
    
//echo "UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU", $submit;
    
AppendContent($content$submit);
    }
else echo 
"<i>Vous n'avez pas accès en écriture à cette page !</i>\n";


//------------------------------------------------------------
function AppendContent($content$submit)
{
    global 
$wiki;
    
$page $wiki->LoadPage($wiki->tag);
    
$body $page["body"];
    
//echo "YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY";
    // only if saving:
    
if ($submit == "direct")
    {
        
//echo "Direct";
        
        // store
        
if (!$error)
        {
            
//echo "888888888888",$body,"9999999999999";
            
$body $body."\n".$content;

            
//echo "00000000000000000000000",$body;

            // add page (revisions)
                        
$wiki->SavePage($wiki->tag$body);

            
// now we render it internally so we can write the updated link table.
            
$wiki->ClearLinkTable();
            
$wiki->StartLinkTracking();
            
$dummy $wiki->Header();
            
$dummy .= $wiki->Format($body);
            
$dummy .= $wiki->Footer();
            
$wiki->StopLinkTracking();
            
$wiki->WriteLinkTable();
            
$wiki->ClearLinkTable();

            
// forward
            
$wiki->Redirect($wiki->href());
        }
    }
}


?>

-- CharlesNepote


Il n'y a pas de commentaire sur cette page. [Afficher commentaires/formulaire]