업데이트 오류 수정

This commit is contained in:
Macbook
2026-06-17 10:21:58 +09:00
parent f56a958c57
commit 05d33bb410
6 changed files with 29 additions and 6 deletions
+1 -1
View File
@@ -36,9 +36,9 @@
"identifier": "http:default", "identifier": "http:default",
"allow": [ "allow": [
{ "url": "https://stock.exdev.co.kr/**" }, { "url": "https://stock.exdev.co.kr/**" },
{ "url": "https://exdev.co.kr/**" },
{ "url": "http://localhost:8080/**" }, { "url": "http://localhost:8080/**" },
{ "url": "http://127.0.0.1:8080/**" }, { "url": "http://127.0.0.1:8080/**" },
{ "url": "https://stock.exdev.co.kr/**" },
{ "url": "https://api.upbit.com/**" } { "url": "https://api.upbit.com/**" }
] ]
} }
+4 -2
View File
@@ -162,8 +162,10 @@ async function formatUpdateError(e: unknown): Promise<string> {
? '서버 업데이트 정보(latest.json) 형식 오류입니다. PC 프로그램 탭에서 dmg를 받아 주세요.' ? '서버 업데이트 정보(latest.json) 형식 오류입니다. PC 프로그램 탭에서 dmg를 받아 주세요.'
: '서버 업데이트 정보(latest.json) 형식 오류입니다. PC 프로그램 탭에서 exe를 받아 주세요.'; : '서버 업데이트 정보(latest.json) 형식 오류입니다. PC 프로그램 탭에서 exe를 받아 주세요.';
} }
if (/insecuretransport|insecure transport|http url|https/.test(lower)) { if (/insecuretransport|insecure transport|http url(?!s)/.test(lower)) {
return '업데이트 URL 보안(HTTPS) 설정 오류입니다. 잠시 후 다시 시도해 주세요.'; return onWin
? '업데이트 URL 보안(HTTPS) 설정 오류입니다. PC 프로그램 탭에서 exe를 받아 다시 설치해 주세요.'
: '업데이트 URL 보안(HTTPS) 설정 오류입니다. PC 프로그램 탭에서 dmg를 받아 다시 설치해 주세요.';
} }
if (/signature|pubkey|verify|minisign|invalid key/.test(lower)) { if (/signature|pubkey|verify|minisign|invalid key/.test(lower)) {
return onMac return onMac
@@ -11,6 +11,8 @@ BUILD_INFO="${WORK_TREE}/dist-desktop/build-info.json"
RELEASE_DIR="${GC_DESKTOP_APP_RELEASE_DIR:-$WORK_TREE/data/desktop-releases}" RELEASE_DIR="${GC_DESKTOP_APP_RELEASE_DIR:-$WORK_TREE/data/desktop-releases}"
PUBLISHED_LATEST_URL="${DESKTOP_PUBLISHED_LATEST_URL:-${DESKTOP_UPDATE_BASE_URL:-https://stock.exdev.co.kr/desktop/updates}/latest.json}" PUBLISHED_LATEST_URL="${DESKTOP_PUBLISHED_LATEST_URL:-${DESKTOP_UPDATE_BASE_URL:-https://stock.exdev.co.kr/desktop/updates}/latest.json}"
PUBLISHED_LATEST_URL="${PUBLISHED_LATEST_URL/http:\/\/exdev.co.kr/https://stock.exdev.co.kr}"
PUBLISHED_LATEST_URL="${PUBLISHED_LATEST_URL/https:\/\/exdev.co.kr/https://stock.exdev.co.kr}"
REMOTE_PUB_VER="" REMOTE_PUB_VER=""
if REMOTE_JSON="$(curl -sf --connect-timeout 5 --max-time 12 "$PUBLISHED_LATEST_URL" 2>/dev/null)"; then if REMOTE_JSON="$(curl -sf --connect-timeout 5 --max-time 12 "$PUBLISHED_LATEST_URL" 2>/dev/null)"; then
REMOTE_PUB_VER="$(printf '%s' "$REMOTE_JSON" | node -e " REMOTE_PUB_VER="$(printf '%s' "$REMOTE_JSON" | node -e "
+4 -1
View File
@@ -86,7 +86,10 @@ function addPlatform(platformKey, bundleName) {
} }
} }
platforms[platformKey] = { platforms[platformKey] = {
url: `${baseUrl}/${encodeURIComponent(bundleName)}`, url: `${baseUrl}/${encodeURIComponent(bundleName)}`.replace(
/^https:\/\/exdev\.co\.kr/i,
'https://stock.exdev.co.kr',
),
signature, signature,
bundleVersion: effectiveVersion, bundleVersion: effectiveVersion,
}; };
+3 -1
View File
@@ -27,7 +27,9 @@ conf.bundle.createUpdaterArtifacts = enable;
conf.plugins = conf.plugins || {}; conf.plugins = conf.plugins || {};
conf.plugins.updater = conf.plugins.updater || {}; conf.plugins.updater = conf.plugins.updater || {};
conf.plugins.updater.endpoints = (conf.plugins.updater.endpoints || []) conf.plugins.updater.endpoints = (conf.plugins.updater.endpoints || [])
.map((u) => String(u).replace(/^http:\\/\\/exdev\\.co\\.kr\\//, 'https://stock.exdev.co.kr/')); .map((u) => String(u)
.replace(/^http:\\/\\/exdev\\.co\\.kr\\//, 'https://stock.exdev.co.kr/')
.replace(/^https:\\/\\/exdev\\.co\\.kr\\//, 'https://stock.exdev.co.kr/'));
if (!conf.plugins.updater.endpoints.length) { if (!conf.plugins.updater.endpoints.length) {
conf.plugins.updater.endpoints = ['https://stock.exdev.co.kr/desktop/updates/latest.json']; conf.plugins.updater.endpoints = ['https://stock.exdev.co.kr/desktop/updates/latest.json'];
} }
+15 -1
View File
@@ -10,6 +10,7 @@ UPDATES_DIR="${UPDATES_DIR:-$WORK_TREE/frontend/public/desktop/updates}"
WEB_STATIC_DIR="${WEB_STATIC_DIR:-$UPDATES_DIR}" WEB_STATIC_DIR="${WEB_STATIC_DIR:-$UPDATES_DIR}"
BASE_URL="${DESKTOP_UPDATE_BASE_URL:-https://stock.exdev.co.kr/desktop/updates}" BASE_URL="${DESKTOP_UPDATE_BASE_URL:-https://stock.exdev.co.kr/desktop/updates}"
BASE_URL="${BASE_URL/http:\/\//https:\/\/}" BASE_URL="${BASE_URL/http:\/\//https:\/\/}"
BASE_URL="${BASE_URL/https:\/\/exdev.co.kr/https:\/\/stock.exdev.co.kr}"
DESKTOP_RELEASE_DIR="${GC_DESKTOP_APP_RELEASE_DIR:-$WORK_TREE/data/desktop-releases}" DESKTOP_RELEASE_DIR="${GC_DESKTOP_APP_RELEASE_DIR:-$WORK_TREE/data/desktop-releases}"
KEY_PATH="${TAURI_SIGNER_KEY:-$HOME/.tauri/goldenchart.key}" KEY_PATH="${TAURI_SIGNER_KEY:-$HOME/.tauri/goldenchart.key}"
DESKTOP_DIR="$WORK_TREE/desktop" DESKTOP_DIR="$WORK_TREE/desktop"
@@ -186,7 +187,20 @@ node "$WORK_TREE/scripts/ensure-desktop-latest-json.mjs" \
exit 1 exit 1
} }
LATEST_SIZE="$(wc -c < "$PUBLISH_UPDATES/latest.json" | tr -d ' ')" LATEST_PATH="$PUBLISH_UPDATES/latest.json"
node -e "
const fs=require('fs'); const p=process.argv[1];
const j=JSON.parse(fs.readFileSync(p,'utf8'));
for (const k of Object.keys(j.platforms||{})) {
const u=j.platforms[k]?.url;
if (typeof u==='string' && /exdev\\.co\\.kr/i.test(u)) {
j.platforms[k].url=u.replace(/^https:\\/\\/exdev\\.co\\.kr/i,'https://stock.exdev.co.kr');
}
}
fs.writeFileSync(p, JSON.stringify(j,null,2)+'\\n');
" "$LATEST_PATH"
LATEST_SIZE="$(wc -c < "$LATEST_PATH" | tr -d ' ')"
if [[ "${LATEST_SIZE:-0}" -lt 8 ]]; then if [[ "${LATEST_SIZE:-0}" -lt 8 ]]; then
log "ERROR: latest.json is empty (${LATEST_SIZE} bytes)" >&2 log "ERROR: latest.json is empty (${LATEST_SIZE} bytes)" >&2
exit 1 exit 1