Lors des expériences, il est apparut qu’il était assez facile de diffuser des programmes, dans notre cas des pages web en php, comme des objets à part entière.
Il faut deux choses.
La première c’est qu’il faut une page web de bootstrap (marche pied). C’est cette page qui va déterminer si il existe une page à afficher dans les objets, et la lancer. La page en question doit être un dérivé (lien F) de l’objet « nebule/objet/entite/webaccess/firstofall », et être de mime-type « application/x-php ».
Et il faut que le programme en question puisse se mettre à jour. Ce peut être fait en suivant les liens de mise à jour d’objet (lien U) du programme en question. On peut aussi suivre les nouveaux liens de l’objet « nebule/objet/entite/webaccess/firstofall » d’une autre entité. Ne reste plus qu’à téléchager le nouvel objet et mettre à jour sont propre objet « nebule/objet/entite/webaccess/firstofall ».
Exemple de page de bootstrap, la page index.php des entités :
<?
/*
Bootstrap page web sur nebule
Licence GNU GPL
Projet nebule - www.nebule.org - Stephane DENDIEVEL
*/
$hashmimetype = hash("sha256", "mime-type");
$hashphptype = hash("sha256", "application/x-php");
$hashfirstdesc = hash("sha256", "nebule/objet/entite/webaccess/firstofall");
$hashfirst = "";
if (file_exists("$hashfirstdesc/l"))
{ $lines = file("$hashfirstdesc/l");
 foreach ( $lines as $line_num => $line )
 { $i = 1;
   $count = substr_count(rtrim($line), "-");
   $loopelem = strtok(rtrim($line), "-");
   while ($loopelem !== false)
   { if ( $i == 5 ) { $hashsrc = $loopelem; }
     if ( $i == 6 ) { $hashdst = $loopelem; }
     $i += 1;
     $loopelem = strtok("-");
   }
   if (file_exists("$hashdst/l"))
   { $lines2 = file("$hashdst/l");
     foreach ( $lines2 as $line_num2 => $line2 )
     { $j = 1;
       $count2 = substr_count(rtrim($line2), "-");
       $loopelem2 = strtok(rtrim($line2), "-");
       while ($loopelem2 !== false)
       { if ( $j == 5 ) { $hashcsrc = $loopelem2; }
         if ( $j == 6 ) { $hashcdst = $loopelem2; }
         if ( $j == 7 ) { $hashcmet = $loopelem2; }
         $j += 1;
         $loopelem2 = strtok("-");
       }
       if ( ( $hashsrc == $hashfirstdesc ) && ( $hashdst != "" ) && ( $hashcdst == $hashphptype ) && ( $hashcmet == $hashmimetype ) )
{ $hashfirst = $hashdst;
 }
     }
   }
 }
}
if ( $hashfirst != "" && file_exists("$hashfirst/o") )
{ include("$hashfirst/o");
}
else
{
?>
<html>
 <head>
 <meta http-equiv="content-type" content="text/html; charset=utf-8" />
 <title>nebule</title>
 </head>
 <body bgcolor="#454545" text="#ababab" style="font: normal 15px monospace;">
 <center>
 <br /><br /><br />
 <img src="nebule_256_ababab.png" alt="nebule" border=0 />
 <br /><br />
 | nebule |
 <br /><br />
 <img src="CC_BY-SA.png" alt="(CC) BY-SA" border=0 /><br />
 <font size=1>nebule.org 2012</font>
 </center>
 </body>
</html>
<?
}
?>