This commit is contained in:
2026-05-28 14:26:02 +07:00
parent b0443d5950
commit 991d6f5257
13 changed files with 464 additions and 22 deletions

View File

@@ -1415,6 +1415,7 @@ PACKAGE_BASE_URL="${baseUrl}"
AGENT_URL="${agentUrl}?arch=$ARCH"
AGENT_ENV="/etc/local-installer-agent/agent.env"
PACKAGE_HOST="$(printf '%s' "$PACKAGE_BASE_URL" | sed -E 's#^[a-zA-Z][a-zA-Z0-9+.-]*://([^/:]+).*$#\\1#')"
PACKAGE_REGISTRY="$(printf '%s' "$PACKAGE_BASE_URL" | sed -E 's#^[a-zA-Z][a-zA-Z0-9+.-]*://([^/]+).*$#\\1#')"
TMP_DEB="/tmp/local-installer-agent.deb"
set_agent_env() {
@@ -1440,6 +1441,9 @@ touch "$AGENT_ENV"
set_agent_env ROBOT_PACKAGE_BASE_URL "$PACKAGE_BASE_URL"
set_agent_env ALLOWED_ORIGINS "${escapeShellDoubleQuoted(agentAllowedOrigins)}"
set_agent_env ALLOWED_DOWNLOAD_HOSTS "$PACKAGE_HOST,localhost,127.0.0.1"
set_agent_env ALLOWED_DOCKER_REGISTRIES "$PACKAGE_REGISTRY,$PACKAGE_HOST,localhost,127.0.0.1,registry.robot.package,docker.io"
set_agent_env ALLOW_DOCKER true
set_agent_env AUTO_INSTALL_DOCKER true
echo "Starting Local Installer Agent..."
systemctl enable local-installer-agent

View File

@@ -372,6 +372,21 @@ function toAbsoluteUrl(baseUrl, filePath) {
return `${normalizedBaseUrl}${normalizedPath}`;
}
function inferDockerPortsFromOpenUrl(openUrl) {
if (!openUrl) return [];
try {
const parsed = new URL(openUrl);
if (!isLoopbackHost(parsed.hostname) || !parsed.port) {
return [];
}
return [`${parsed.port}:${parsed.port}`];
} catch {
return [];
}
}
async function getUserById(id) {
const pool = await getPool();
const result = await pool.request()
@@ -966,6 +981,9 @@ async function getApplicationManifest(appCode, version, baseUrl) {
ORDER BY ap.AddedAt ASC, p.PackageCode ASC;
`);
const dockerRows = componentResult.recordset.filter((row) => row.PackageType === 'docker');
const inferredDockerPorts = dockerRows.length === 1 ? inferDockerPortsFromOpenUrl(appRow.OpenUrl) : [];
const components = componentResult.recordset.map((row) => {
const installOrder = Number(row.InstallOrder || 10);
@@ -977,7 +995,8 @@ async function getApplicationManifest(appCode, version, baseUrl) {
required: true,
image: row.DockerImage || '',
tag: row.Version || 'latest',
containerName: row.PackageCode
containerName: row.PackageCode,
ports: inferredDockerPorts
};
}