Files
tononixOS_webservice_update…/libUpdateService.php

147 lines
6.1 KiB
PHP
Executable File

<?php
use Noodlehaus\Config;
use Noodlehaus\Parser\Xml;
use System\Diagnostics;
class RecoveryUpdateService {
function getBootloaderUpdateVersion()
{
$recoveryManifest = new Config(__DIR__."/manifests/recovery.xml", new Xml);
if(defined("PEACHPIE_VERSION"))
{
$recoveryManifest = $recoveryManifest->all();
\System\Diagnostics\Debug::WriteLine("Recovery Version: ".$recoveryManifest['version'], "RecoveryUpdateService");
}
return $recoveryManifest['version'];
}
function getBootloaderUpdateManifest()
{
$recoveryManifest = new Config(__DIR__."/manifests/recovery.xml", new Xml);
// Tweak to configuration to allow PeachPie to compile it as .NET
// We do this because if we do it the normal way using $conf->get() it fails to display anything.
$recoveryManifest = $recoveryManifest->all();
$buildDate = $recoveryManifest['build-date'];
$version = $recoveryManifest['version'];
$pinn_commit = $recoveryManifest['git']['pinn']['commit'];
$rpi_userland_branch = $recoveryManifest['git']['rpi-userland']['branch'];
$rpi_userland_commit = $recoveryManifest['git']['rpi-userland']['commit'];
$rpi_firmware_branch = $recoveryManifest['git']['rpi-firmware']['branch'];
$rpi_firmware_commit = $recoveryManifest['git']['rpi-firmware']['commit'];
$kernel_branch = $recoveryManifest['git']['rpi-linux']['branch'];
$kernel_commit = $recoveryManifest['git']['rpi-linux']['commit'];
$buildData = <<<EOF
Build-date: $buildDate
PINN Version: $version
PINN Git HEAD @ $pinn_commit
rpi-userland Git $rpi_userland_branch @ $rpi_userland_commit
rpi-firmware Git $rpi_firmware_branch @ $rpi_firmware_commit
rpi-linux Git $kernel_branch @ $kernel_commit
EOF;
return $buildData;
}
function getBootloaderUpdateOTA()
{
$recoveryManifest = new Config(__DIR__."/manifests/recovery.xml", new Xml);
// Tweak to allow PeachPie compiled version to read the manifest.
$recoveryManifest = $recoveryManifest->all();
$recoveryFile = "images/recovery/".$recoveryManifest['version'].".zip";
return $recoveryFile;
}
function getRecoveryInstallerRepository()
{
$repositoryConfig = new Config(__DIR__.'/repository.xml', new Xml);
$repositoryArray = array("os_list"=>[]);
$i = 0;
foreach($repositoryConfig['repository'] as $repository)
{
$repositoryArray['os_list'][$i] = [
'description' => $repository['@attributes']['description'],
'download_size' => $repository['download-size'],
'group' => $repository['@attributes']['group'],
'icon' => $repository['icon'],
'marketing_info' => $repository['url']['marketing-info'],
'nominal_size' => $repository['nominal-size'],
'os_info' => $repository['url']['os-info'],
'os_name' => $repository['@attributes']['name'],
'partition_setup' => $repository['url']['partition-setup'],
'partition_info' => $repository['url']['partition-info'],
'release_date' => $repository['release-date'],
'supported_models' => $repository['supported-model'],
'supports_backup' => $repository['supports-backup'],
'tarballs' => $repository['url']['tarball'],
'version' => $repository['version']
];
}
return json_encode($repositoryArray, JSON_PRETTY_PRINT+JSON_UNESCAPED_SLASHES);
}
function getRecoveryInstallerRepositoryList()
{
// Generate repo_list.json file.
}
}
class OSUpdateService {
function getLatestVersionInformation($operatingSystem)
{
$osManifest = new Config("manifests/os/".$operatingSystem.".xml", new Xml);
if(defined("PEACHPIE_VERSION"))
{
$osManifest = $osManifest->all();
\System\Diagnostics\Debug::write(json_encode($osManifest)."\r\n","OSUpdateService");
}
$osResponse = array(
"os-version" =>$osManifest['info']['version'],
"release-date" => $osManifest['info']['release-date']);
return $osResponse;
}
function getAvailableOSList()
{
$osmanifestlist = array();
$i = 0;
$flags = \FilesystemIterator::SKIP_DOTS;// some flags to filter . and .. and follow symlinks
$iterator = new \RecursiveDirectoryIterator(dirname('manifests/os/'), $flags);// create a simple recursive directory iterator
$iterator = new \RecursiveIteratorIterator($iterator, \RecursiveIteratorIterator::SELF_FIRST);// make it a truly recursive iterator
foreach($iterator as $fileinfo) {
if($fileinfo->getExtension() == "xml") {
if($fileinfo->getFilename() != "recovery") {
$osmanifest = new Config($fileinfo->__toString(), new Xml);
if(defined("PEACHPIE_VERSION")) {
$osmanifest = $osmanifest->all();
}
if(empty($osmanifest['info']['@attributes']['name'])) {
break;
}
$osmanifestlist[$i]['name'] = $osmanifest['info']['@attributes']['name'];
if(defined("PEACHPIE_VERSION")) \System\Diagnostics\Debug::writeLine($osmanifestlist[$i]['name']);
$osmanifestlist[$i]['version'] = $osmanifest['info']['version'];
$osmanifestlist[$i]['release-date'] = $osmanifest['info']['release-date'];
$i++;
}
}
}
return $osmanifestlist;
}
}