Прокси на внутренний IP: анализ и скачивания через REST-эндпоинты WordPress (режим proxy/direct, настройки)

This commit is contained in:
apuc committed 2026-09-14 16:41:44 +03:00
1 parent b3ac9491f6
commit 867fe7bc66
3 files changed
+191 -15

No files matched your search

+19 -5
View File
@@ -3,6 +3,9 @@
'use strict';
var API_URL = (window.MED_DIAG && MED_DIAG.apiUrl) || 'https://med.my-dpr.ru';
var PROXY_URL = (window.MED_DIAG && MED_DIAG.proxyUrl) || '';
var MODE = (window.MED_DIAG && MED_DIAG.mode) || 'proxy';
var USE_PROXY = (MODE === 'proxy') && !!PROXY_URL;
// Абсолютный URL: если ссылка относительная — добавляем домен API
function absUrl(url) {
@@ -10,6 +13,13 @@
return url.indexOf('http') === 0 ? url : API_URL + url;
}
// URL для скачивания: в режиме прокси — через этот же WordPress (PHP → внутренний IP)
function downloadUrl(path) {
if (!path) return path;
if (path.indexOf('http') === 0) return path;
return USE_PROXY ? PROXY_URL + path : API_URL + path;
}
var uploadArea = document.getElementById('uploadArea');
var fileInput = document.getElementById('fileInput');
var analyzeBtn = document.getElementById('analyzeBtn');
@@ -61,11 +71,15 @@
var formData = new FormData();
formData.append('video', blob, filename);
// В режиме прокси шлём на этот же WordPress (PHP перешлёт на внутренний IP бэкенда),
// иначе — напрямую на публичный URL API.
var analyzeUrl = USE_PROXY ? PROXY_URL + '/analyze' : API_URL + '/analyze';
// Автоповтор при обрыве соединения (нестабильная мобильная сеть)
var MAX_ATTEMPTS = 3;
for (var attempt = 1; attempt <= MAX_ATTEMPTS; attempt++) {
try {
var response = await fetch(API_URL + '/analyze', {
var response = await fetch(analyzeUrl, {
method: 'POST',
body: formData
});
@@ -119,7 +133,7 @@
var html = '<div class="med-error-box"><strong>Ошибка:</strong> ' + msg + '</div>';
if (videoUrl) {
html += '<div style="text-align:center; margin-top:15px">' +
'<a class="med-btn-download" href="' + absUrl(videoUrl) + '">🎬 Скачать записанное видео</a>' +
'<a class="med-btn-download" href="' + downloadUrl(videoUrl) + '">🎬 Скачать записанное видео</a>' +
'</div>';
}
resultContent.innerHTML = html;
@@ -134,10 +148,10 @@
// Кнопки скачивания (вверху блока результатов)
if (data.share_id) {
html += '<div class="med-download-buttons">' +
'<a class="med-btn-download" href="' + API_URL + '/download/' + data.share_id + '/pdf">📄 Скачать PDF</a>' +
'<a class="med-btn-download" href="' + API_URL + '/download/' + data.share_id + '/docx">📝 Скачать DOCX</a>';
'<a class="med-btn-download" href="' + downloadUrl('/download/' + data.share_id + '/pdf') + '">📄 Скачать PDF</a>' +
'<a class="med-btn-download" href="' + downloadUrl('/download/' + data.share_id + '/docx') + '">📝 Скачать DOCX</a>';
if (data.video_url) {
html += '<a class="med-btn-download" href="' + absUrl(data.video_url) + '">🎬 Скачать видео</a>';
html += '<a class="med-btn-download" href="' + downloadUrl(data.video_url) + '">🎬 Скачать видео</a>';
}
html += '<a class="med-btn-download" href="https://max.ru/miac_dnr_bot" target="_blank" rel="noopener">🏥 Запись на диспанцеризацию</a>' +
'</div>';