mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-08-06 03:30:21 +03:00
fix(web-publish): auto-detect Apache download URL from apachelounge.com
Replace hardcoded Apache zip URL with dynamic parsing of the Apache Lounge download page. Finds the latest Win64 build automatically, so the script won't break when new versions are published. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.6
parent
90ff1d53b6
commit
d574320849
@@ -1,4 +1,4 @@
|
||||
# web-publish v1.1 — Publish 1C infobase via Apache
|
||||
# web-publish v1.2 — Publish 1C infobase via Apache
|
||||
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
|
||||
<#
|
||||
.SYNOPSIS
|
||||
@@ -137,14 +137,35 @@ if (-not (Test-Path $httpdExe)) {
|
||||
}
|
||||
|
||||
Write-Host "Apache не найден. Скачиваю..." -ForegroundColor Cyan
|
||||
$zipUrl = "https://www.apachelounge.com/download/VS18/binaries/httpd-2.4.66-260131-Win64-VS18.zip"
|
||||
$tmpZip = Join-Path $env:TEMP "apache24.zip"
|
||||
$tmpDir = Join-Path $env:TEMP "apache24_extract"
|
||||
|
||||
try {
|
||||
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
|
||||
# WebClient works better than Invoke-WebRequest in PS 5.1 (handles redirects)
|
||||
$wc = New-Object System.Net.WebClient
|
||||
|
||||
# Parse Apache Lounge download page for latest Win64 zip URL
|
||||
$downloadPage = "https://www.apachelounge.com/download/"
|
||||
Write-Host "Определяю актуальную версию с $downloadPage ..."
|
||||
$html = $wc.DownloadString($downloadPage)
|
||||
# Links are typically relative (/download/...), try that first
|
||||
$match = [regex]::Match($html, '(?i)href="(/download/[^"]*?httpd-[^"]*?Win64[^"]*?\.zip)"')
|
||||
if (-not $match.Success) {
|
||||
$match = [regex]::Match($html, '(?i)href="(https://[^"]*?httpd-[^"]*?Win64[^"]*?\.zip)"')
|
||||
}
|
||||
|
||||
if ($match.Success) {
|
||||
$zipUrl = $match.Groups[1].Value
|
||||
if ($zipUrl.StartsWith('/')) {
|
||||
$zipUrl = "https://www.apachelounge.com$zipUrl"
|
||||
}
|
||||
Write-Host "Найдено: $zipUrl" -ForegroundColor Green
|
||||
} else {
|
||||
Write-Host "Не удалось определить ссылку автоматически." -ForegroundColor Yellow
|
||||
Write-Host "Скачайте вручную: $downloadPage" -ForegroundColor Yellow
|
||||
exit 1
|
||||
}
|
||||
|
||||
$wc.DownloadFile($zipUrl, $tmpZip)
|
||||
} catch {
|
||||
Write-Host "Error: не удалось скачать Apache: $_" -ForegroundColor Red
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#!/usr/bin/env python3
|
||||
# web-publish v1.1 — Publish 1C infobase via Apache
|
||||
# web-publish v1.2 — Publish 1C infobase via Apache
|
||||
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
|
||||
|
||||
"""
|
||||
@@ -125,12 +125,37 @@ def main():
|
||||
sys.exit(1)
|
||||
|
||||
print('Apache не найден. Скачиваю...')
|
||||
zip_url = 'https://www.apachelounge.com/download/VS18/binaries/httpd-2.4.66-260131-Win64-VS18.zip'
|
||||
tmp_zip = os.path.join(tempfile.gettempdir(), 'apache24.zip')
|
||||
tmp_dir = os.path.join(tempfile.gettempdir(), 'apache24_extract')
|
||||
|
||||
try:
|
||||
# Parse Apache Lounge download page for latest Win64 zip URL
|
||||
download_page = 'https://www.apachelounge.com/download/'
|
||||
print(f'Определяю актуальную версию с {download_page} ...')
|
||||
req = urllib.request.Request(download_page, headers={
|
||||
'User-Agent': 'Mozilla/5.0',
|
||||
})
|
||||
with urllib.request.urlopen(req, timeout=30) as resp:
|
||||
html = resp.read().decode('utf-8', errors='replace')
|
||||
|
||||
# Links are typically relative (/download/...), try that first
|
||||
m = re.search(r'(?i)href="(/download/[^"]*?httpd-[^"]*?Win64[^"]*?\.zip)"', html)
|
||||
if not m:
|
||||
m = re.search(r'(?i)href="(https://[^"]*?httpd-[^"]*?Win64[^"]*?\.zip)"', html)
|
||||
|
||||
if m:
|
||||
zip_url = m.group(1)
|
||||
if zip_url.startswith('/'):
|
||||
zip_url = f'https://www.apachelounge.com{zip_url}'
|
||||
print(f'Найдено: {zip_url}')
|
||||
else:
|
||||
print('Не удалось определить ссылку автоматически.', file=sys.stderr)
|
||||
print(f'Скачайте вручную: {download_page}')
|
||||
sys.exit(1)
|
||||
|
||||
urllib.request.urlretrieve(zip_url, tmp_zip)
|
||||
except SystemExit:
|
||||
raise
|
||||
except Exception as e:
|
||||
print(f'Error: не удалось скачать Apache: {e}', file=sys.stderr)
|
||||
print('Скачайте вручную: https://www.apachelounge.com/download/')
|
||||
|
||||
Reference in New Issue
Block a user