mirror of
https://github.com/torrentpier/torrentpier
synced 2025-07-06 04:51:43 -07:00
feat(updater): Added exceptions logging (#2026)
* feat(updater): Added exceptions logging * refactor(updater): Use `sha256` hash if available
This commit is contained in:
parent
fd46d3d04a
commit
51f2c70d81
5 changed files with 80 additions and 20 deletions
|
@ -90,7 +90,7 @@ if (isset($_GET['pane']) && $_GET['pane'] == 'left') {
|
||||||
'NEW_VERSION_SIZE' => $update_data['latest_version_size'],
|
'NEW_VERSION_SIZE' => $update_data['latest_version_size'],
|
||||||
'NEW_VERSION_DL_LINK' => $update_data['latest_version_dl_link'],
|
'NEW_VERSION_DL_LINK' => $update_data['latest_version_dl_link'],
|
||||||
'NEW_VERSION_LINK' => $update_data['latest_version_link'],
|
'NEW_VERSION_LINK' => $update_data['latest_version_link'],
|
||||||
'NEW_VERSION_MD5' => $update_data['latest_version_checksum']
|
'NEW_VERSION_HASH' => $update_data['latest_version_checksum']
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -16,9 +16,16 @@ if (!config()->get('tp_updater_settings.enabled')) {
|
||||||
}
|
}
|
||||||
|
|
||||||
$data = [];
|
$data = [];
|
||||||
|
$data[] = ['latest_check_timestamp' => TIMENOW];
|
||||||
|
|
||||||
$updaterDownloader = new \TorrentPier\Updater();
|
try {
|
||||||
$updaterDownloader = $updaterDownloader->getLastVersion(config()->get('tp_updater_settings.allow_pre_releases'));
|
$updaterDownloader = new \TorrentPier\Updater();
|
||||||
|
$updaterDownloader = $updaterDownloader->getLastVersion(config()->get('tp_updater_settings.allow_pre_releases'));
|
||||||
|
} catch (Exception $exception) {
|
||||||
|
bb_log('[Updater] Exception: ' . $exception->getMessage() . LOG_LF);
|
||||||
|
$this->store('check_updates', $data);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
$getVersion = \TorrentPier\Helpers\VersionHelper::removerPrefix($updaterDownloader['tag_name']);
|
$getVersion = \TorrentPier\Helpers\VersionHelper::removerPrefix($updaterDownloader['tag_name']);
|
||||||
$currentVersion = \TorrentPier\Helpers\VersionHelper::removerPrefix(config()->get('tp_version'));
|
$currentVersion = \TorrentPier\Helpers\VersionHelper::removerPrefix(config()->get('tp_version'));
|
||||||
|
@ -26,6 +33,7 @@ $currentVersion = \TorrentPier\Helpers\VersionHelper::removerPrefix(config()->ge
|
||||||
// Has update!
|
// Has update!
|
||||||
if (\z4kn4fein\SemVer\Version::greaterThan($getVersion, $currentVersion)) {
|
if (\z4kn4fein\SemVer\Version::greaterThan($getVersion, $currentVersion)) {
|
||||||
$latestBuildFileLink = $updaterDownloader['assets'][0]['browser_download_url'];
|
$latestBuildFileLink = $updaterDownloader['assets'][0]['browser_download_url'];
|
||||||
|
$SHAFileHash = $updaterDownloader['assets'][0]['digest'] ?? '';
|
||||||
|
|
||||||
// Check updater file
|
// Check updater file
|
||||||
$updaterFile = readUpdaterFile();
|
$updaterFile = readUpdaterFile();
|
||||||
|
@ -39,10 +47,12 @@ if (\z4kn4fein\SemVer\Version::greaterThan($getVersion, $currentVersion)) {
|
||||||
]), UPDATER_FILE, replace_content: true);
|
]), UPDATER_FILE, replace_content: true);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get MD5 checksum
|
// Get MD5 / sha256 checksum
|
||||||
$buildFileChecksum = '';
|
$buildFileChecksum = '';
|
||||||
if (isset($latestBuildFileLink)) {
|
if (!empty($SHAFileHash)) {
|
||||||
$buildFileChecksum = strtoupper(md5_file($latestBuildFileLink));
|
$buildFileChecksum = $SHAFileHash;
|
||||||
|
} else {
|
||||||
|
$buildFileChecksum = 'MD5: ' . strtoupper(md5_file($latestBuildFileLink));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Build data array
|
// Build data array
|
||||||
|
@ -56,5 +66,4 @@ if (\z4kn4fein\SemVer\Version::greaterThan($getVersion, $currentVersion)) {
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
$data[] = ['latest_check_timestamp' => TIMENOW];
|
|
||||||
$this->store('check_updates', $data);
|
$this->store('check_updates', $data);
|
||||||
|
|
|
@ -2212,10 +2212,10 @@ function infoByIP(string $ipAddress, int $port = 0): array
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
bb_log("[FreeIPAPI] Failed to get IP info for: $ipAddress");
|
bb_log("[FreeIPAPI] Failed to get IP info for: $ipAddress" . LOG_LF);
|
||||||
}
|
}
|
||||||
} catch (Exception $e) {
|
} catch (Exception $e) {
|
||||||
bb_log("[FreeIPAPI] " . $e->getMessage());
|
bb_log("[FreeIPAPI] " . $e->getMessage() . LOG_LF);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (empty($data)) {
|
if (empty($data)) {
|
||||||
|
|
|
@ -38,6 +38,13 @@ class Updater
|
||||||
*/
|
*/
|
||||||
public string $savePath;
|
public string $savePath;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* LTS version pattern (v2.8.*)
|
||||||
|
*
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
private const LTS_VERSION_PATTERN = '/^v2\.8\.\d+$/';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Stream context
|
* Stream context
|
||||||
*
|
*
|
||||||
|
@ -130,23 +137,67 @@ class Updater
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns information of latest TorrentPier version available
|
* Returns information of latest TorrentPier LTS version (v2.8.*) available
|
||||||
|
*
|
||||||
|
* @param bool $allowPreReleases
|
||||||
|
* @return array
|
||||||
|
* @throws Exception
|
||||||
|
*/
|
||||||
|
public function getLastVersion(bool $allowPreReleases = true): array
|
||||||
|
{
|
||||||
|
// Filter releases to get only LTS versions (v2.8.*)
|
||||||
|
$ltsVersions = array_filter($this->jsonResponse, function ($release) {
|
||||||
|
return preg_match(self::LTS_VERSION_PATTERN, $release['tag_name']);
|
||||||
|
});
|
||||||
|
|
||||||
|
if (empty($ltsVersions)) {
|
||||||
|
throw new Exception('No LTS versions (v2.8.*) found');
|
||||||
|
}
|
||||||
|
|
||||||
|
// Sort LTS versions by version number (descending)
|
||||||
|
usort($ltsVersions, function ($a, $b) {
|
||||||
|
return version_compare($b['tag_name'], $a['tag_name']);
|
||||||
|
});
|
||||||
|
|
||||||
|
if (!$allowPreReleases) {
|
||||||
|
foreach ($ltsVersions as $release) {
|
||||||
|
if (isset($release['prerelease']) && $release['prerelease']) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
return $release;
|
||||||
|
}
|
||||||
|
|
||||||
|
// If no stable LTS versions found
|
||||||
|
throw new Exception('No stable LTS versions (v2.8.*) found');
|
||||||
|
}
|
||||||
|
|
||||||
|
return $ltsVersions[0];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get all available LTS versions (v2.8.*)
|
||||||
*
|
*
|
||||||
* @param bool $allowPreReleases
|
* @param bool $allowPreReleases
|
||||||
* @return array
|
* @return array
|
||||||
*/
|
*/
|
||||||
public function getLastVersion(bool $allowPreReleases = true): array
|
public function getAllLTSVersions(bool $allowPreReleases = true): array
|
||||||
{
|
{
|
||||||
if (!$allowPreReleases) {
|
// Filter releases to get only LTS versions (v2.8.*)
|
||||||
foreach ($this->jsonResponse as $index) {
|
$ltsVersions = array_filter($this->jsonResponse, function ($release) use ($allowPreReleases) {
|
||||||
if (isset($index['prerelease']) && $index['prerelease']) {
|
$isLTSVersion = preg_match(self::LTS_VERSION_PATTERN, $release['tag_name']);
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
return $index;
|
if (!$allowPreReleases && isset($release['prerelease']) && $release['prerelease']) {
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
return $this->jsonResponse[0];
|
return $isLTSVersion;
|
||||||
|
});
|
||||||
|
|
||||||
|
// Sort LTS versions by version number (descending)
|
||||||
|
usort($ltsVersions, function ($a, $b) {
|
||||||
|
return version_compare($b['tag_name'], $a['tag_name']);
|
||||||
|
});
|
||||||
|
|
||||||
|
return array_values($ltsVersions);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -160,7 +160,7 @@
|
||||||
<!-- IF updater.UPDATE_AVAILABLE -->
|
<!-- IF updater.UPDATE_AVAILABLE -->
|
||||||
<tr>
|
<tr>
|
||||||
<td class="row1" nowrap="nowrap" width="25%"><b>{L_UPDATE_AVAILABLE}:</b></td>
|
<td class="row1" nowrap="nowrap" width="25%"><b>{L_UPDATE_AVAILABLE}:</b></td>
|
||||||
<td class="row2"><b>{updater.NEW_VERSION_NUMBER}</b><!-- IF updater.NEW_VERSION_SIZE --> ({L_SIZE}: {updater.NEW_VERSION_SIZE})<!-- ENDIF --> · <a target="_blank" href="{updater.NEW_VERSION_DL_LINK}">{L_DOWNLOAD}</a> · <a target="_blank" href="{updater.NEW_VERSION_LINK}">{L_CHANGELOG}</a><!-- IF updater.NEW_VERSION_MD5 --> · <span class="copyElement" data-clipboard-text="{updater.NEW_VERSION_MD5}" title="{L_COPY_TO_CLIPBOARD}">MD5: {updater.NEW_VERSION_MD5}</span><!-- ENDIF --></td>
|
<td class="row2"><b>{updater.NEW_VERSION_NUMBER}</b><!-- IF updater.NEW_VERSION_SIZE --> ({L_SIZE}: {updater.NEW_VERSION_SIZE})<!-- ENDIF --> · <a target="_blank" href="{updater.NEW_VERSION_DL_LINK}">{L_DOWNLOAD}</a> · <a target="_blank" href="{updater.NEW_VERSION_LINK}">{L_CHANGELOG}</a><!-- IF updater.NEW_VERSION_HASH --> · <span class="copyElement" data-clipboard-text="{updater.NEW_VERSION_HASH}" title="{L_COPY_TO_CLIPBOARD}">{updater.NEW_VERSION_HASH}</span><!-- ENDIF --></td>
|
||||||
</tr>
|
</tr>
|
||||||
<!-- ENDIF -->
|
<!-- ENDIF -->
|
||||||
<!-- END updater -->
|
<!-- END updater -->
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue