34 lines
979 B
PHP
34 lines
979 B
PHP
|
<?php
|
||
|
$appsDir = "/home/surillya/.apps/";
|
||
|
$symlinkPath = "/usr/thos/apps";
|
||
|
$apps = [];
|
||
|
|
||
|
if (!file_exists($appsDir)) {
|
||
|
mkdir($appsDir, 0755, true);
|
||
|
}
|
||
|
|
||
|
// Very dirty hack to get the apps exposed to the browser
|
||
|
if (!is_link($symlinkPath) || readlink($symlinkPath) !== $appsDir) {
|
||
|
@unlink($symlinkPath);
|
||
|
symlink($appsDir, $symlinkPath);
|
||
|
}
|
||
|
|
||
|
foreach (glob($appsDir . '*', GLOB_ONLYDIR) as $appPath) {
|
||
|
$id = basename($appPath);
|
||
|
$manifestFile = $appPath . '/manifest.json';
|
||
|
if (file_exists($manifestFile)) {
|
||
|
$data = json_decode(file_get_contents($manifestFile), true);
|
||
|
if ($data && isset($data['name'], $data['entry'])) {
|
||
|
$apps[] = [
|
||
|
'id' => $id,
|
||
|
'name' => $data['name'],
|
||
|
'icon' => 'apps/' . $id . '/' . $data['icon'],
|
||
|
'path' => 'apps/' . $id . '/app/' . $data['entry']
|
||
|
];
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
header('Content-Type: application/json');
|
||
|
echo json_encode($apps);
|