Gestion de programmes

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>
<?
}
?>

Laisser un commentaire