hosts
This commit is contained in:
@@ -47,10 +47,10 @@ if (isset($_GET['update_json'])) {
|
||||
$strictHostKey = !empty($settings['terminal_strict_hostkey']);
|
||||
|
||||
$updateCmd = <<<'SH'
|
||||
sh -lc 'if ! command -v apt-get >/dev/null 2>&1; then echo "__ERR__NO_APT"; exit 2; fi; if sudo apt update -qq >/dev/null 2>&1; then count=$(apt-get -s dist-upgrade | grep -c "^Inst "); if [ "$count" -gt 0 ]; then echo "__UPDATE__=1"; else echo "__UPDATE__=0"; fi; echo "__COUNT__=$count"; else echo "__ERR__APT_UPDATE"; exit 3; fi'
|
||||
sh -lc 'if ! command -v apt-get >/dev/null 2>&1; then echo "__ERR__NO_APT"; exit 2; fi; if sudo -n apt update -qq >/dev/null 2>&1; then echo "__APT_UPDATE__=1"; else echo "__APT_UPDATE__=0"; fi; count=$(apt-get -s dist-upgrade 2>/dev/null | grep -c "^Inst "); echo "__COUNT__=$count"'
|
||||
SH;
|
||||
$upgradeCmd = <<<'SH'
|
||||
sh -lc 'id="$(. /etc/os-release 2>/dev/null && echo "${ID:-}")"; current="$(. /etc/os-release 2>/dev/null && echo "${VERSION_CODENAME:-}")"; if [ "$id" != "debian" ] || [ -z "$current" ]; then echo "__ERR__NO_CODENAME"; exit 2; fi; latest="$( (command -v curl >/dev/null 2>&1 && curl -fsSL https://deb.debian.org/debian/dists/stable/Release) || (command -v wget >/dev/null 2>&1 && wget -qO- https://deb.debian.org/debian/dists/stable/Release) )"; latest="$(printf "%s" "$latest" | awk -F": " "/^Codename:/{print $2}")"; if [ -z "$latest" ]; then echo "__ERR__NO_LATEST"; exit 3; fi; if [ "$current" != "$latest" ]; then echo "__UPGRADE__=1"; else echo "__UPGRADE__=0"; fi'
|
||||
sh -lc 'id="$(. /etc/os-release 2>/dev/null && echo "${ID:-}")"; current="$(. /etc/os-release 2>/dev/null && echo "${VERSION_CODENAME:-}")"; if [ "$id" != "debian" ] || [ -z "$current" ]; then echo "__UPGRADE__=0"; exit 0; fi; latest="$( (command -v curl >/dev/null 2>&1 && curl -fsSL https://deb.debian.org/debian/dists/stable/Release) || (command -v wget >/dev/null 2>&1 && wget -qO- https://deb.debian.org/debian/dists/stable/Release) )"; latest="$(printf "%s" "$latest" | awk -F": " "/^Codename:/{print $2}")"; if [ -z "$latest" ]; then echo "__UPGRADE__=0"; echo "__RAW__=NO_FETCH"; exit 0; fi; if [ "$current" != "$latest" ]; then echo "__UPGRADE__=1"; else echo "__UPGRADE__=0"; fi'
|
||||
SH;
|
||||
|
||||
[$updExit, $updOut, $updErr] = runSshCommandCapture($host, $updateCmd, $strictHostKey, 20);
|
||||
@@ -58,7 +58,8 @@ SH;
|
||||
$updErrStr = (string)$updErr;
|
||||
$updateCount = null;
|
||||
$updatePreview = '';
|
||||
if ($updExit === 0 && !str_contains($updOutStr, '__ERR__')) {
|
||||
$updateErr = str_contains($updOutStr, '__ERR__NO_APT');
|
||||
if ($updExit === 0 && !$updateErr) {
|
||||
if (preg_match('/^__COUNT__=(\d+)$/m', $updOutStr, $m)) {
|
||||
$updateCount = (int)$m[1];
|
||||
}
|
||||
@@ -68,7 +69,8 @@ SH;
|
||||
$upgOutStr = (string)$upgOut;
|
||||
$upgErrStr = (string)$upgErr;
|
||||
$upgradeAvailable = null;
|
||||
if ($upgExit === 0 && !str_contains($upgOutStr, '__ERR__')) {
|
||||
$upgradeErr = str_contains($upgOutStr, '__ERR__');
|
||||
if ($upgExit === 0 && !$upgradeErr) {
|
||||
if (preg_match('/^__UPGRADE__=(0|1)$/m', $upgOutStr, $m)) {
|
||||
$upgradeAvailable = $m[1] === '1';
|
||||
}
|
||||
@@ -77,9 +79,9 @@ SH;
|
||||
$driver = (string)$pdo->getAttribute(PDO::ATTR_DRIVER_NAME);
|
||||
$nowExpr = $driver === 'pgsql' ? 'NOW()' : "DATETIME('now')";
|
||||
$updCountVal = $updateCount;
|
||||
$updErrVal = $updExit === 0 && !str_contains($updOutStr, '__ERR__') ? null : trim($updErrStr ?: $updOutStr);
|
||||
$updErrVal = $updExit === 0 && !$updateErr ? null : trim($updErrStr ?: $updOutStr);
|
||||
$upgAvailVal = $upgradeAvailable;
|
||||
$upgErrVal = $upgExit === 0 && !str_contains($upgOutStr, '__ERR__') ? null : trim($upgErrStr ?: $upgOutStr);
|
||||
$upgErrVal = $upgExit === 0 && !$upgradeErr ? null : trim($upgErrStr ?: $upgOutStr);
|
||||
$stmt = $pdo->prepare(
|
||||
'UPDATE ' . $table('hosts') . ' SET update_checked_at = ' . $nowExpr . ',
|
||||
update_count = :update_count,
|
||||
@@ -106,12 +108,12 @@ SH;
|
||||
'updates' => [
|
||||
'count' => $updateCount,
|
||||
'preview' => $updatePreview,
|
||||
'error' => $updExit === 0 && !str_contains($updOutStr, '__ERR__') ? '' : trim($updErrStr ?: $updOutStr),
|
||||
'error' => $updExit === 0 && !$updateErr ? '' : trim($updErrStr ?: $updOutStr),
|
||||
],
|
||||
'os' => [
|
||||
'available' => $upgradeAvailable,
|
||||
'raw' => $upgExit === 0 ? trim($upgOutStr) : '',
|
||||
'error' => $upgExit === 0 && !str_contains($upgOutStr, '__ERR__') ? '' : trim($upgErrStr ?: $upgOutStr),
|
||||
'error' => $upgExit === 0 && !$upgradeErr ? '' : trim($upgErrStr ?: $upgOutStr),
|
||||
],
|
||||
'checked_at' => date('c'),
|
||||
]);
|
||||
|
||||
Reference in New Issue
Block a user