From 05527bf227b7d6d02d67d99b0c2a631dd21c4fa0 Mon Sep 17 00:00:00 2001 From: Stream Date: Mon, 11 May 2026 14:10:02 +0300 Subject: [PATCH] auto-sync: 2026-05-11 14:10:01 --- tasks/enduro-trails/prototype/check_zoom.js | 25 +++++++++ .../prototype/debug_nginx_terrain.js | 53 +++++++++++++++++++ 2 files changed, 78 insertions(+) create mode 100644 tasks/enduro-trails/prototype/check_zoom.js create mode 100644 tasks/enduro-trails/prototype/debug_nginx_terrain.js diff --git a/tasks/enduro-trails/prototype/check_zoom.js b/tasks/enduro-trails/prototype/check_zoom.js new file mode 100644 index 0000000..74414d2 --- /dev/null +++ b/tasks/enduro-trails/prototype/check_zoom.js @@ -0,0 +1,25 @@ +const { Client } = require('ssh2'); +const conn = new Client(); +function exec(conn, cmd) { + return new Promise((resolve, reject) => { + conn.exec(cmd, (err, stream) => { + if (err) return reject(err); + let out = ''; + stream.on('data', d => out += d); + stream.stderr.on('data', d => out += d); + stream.on('close', () => resolve(out.trim())); + }); + }); +} +conn.on('ready', async () => { + const r = await exec(conn, 'ls /home/slin/enduro-trails/data/terrain/hypso/ 2>/dev/null'); + console.log('Зумы в hypso:', r); + const r2 = await exec(conn, 'find /home/slin/enduro-trails/data/terrain/hypso -name "*.png" | wc -l'); + console.log('PNG тайлов:', r2); + const r3 = await exec(conn, 'pgrep -a gdal2tiles 2>/dev/null | wc -l'); + console.log('gdal2tiles процессов:', r3); + const r4 = await exec(conn, 'du -sh /home/slin/enduro-trails/data/terrain/'); + console.log('Размер terrain:', r4); + conn.end(); +}); +conn.connect({ host: '82.22.50.71', username: 'slin', password: 'motoZ@yaz2010', readyTimeout: 15000 }); diff --git a/tasks/enduro-trails/prototype/debug_nginx_terrain.js b/tasks/enduro-trails/prototype/debug_nginx_terrain.js new file mode 100644 index 0000000..ee3dee2 --- /dev/null +++ b/tasks/enduro-trails/prototype/debug_nginx_terrain.js @@ -0,0 +1,53 @@ +const { Client } = require('ssh2'); + +const conn = new Client(); + +const config = { + host: '82.22.50.71', + username: 'slin', + password: 'motoZ@yaz2010', + readyTimeout: 30000 +}; + +function exec(conn, cmd) { + return new Promise((resolve, reject) => { + conn.exec(cmd, (err, stream) => { + if (err) return reject(err); + let out = '', err2 = ''; + stream.on('data', d => out += d); + stream.stderr.on('data', d => err2 += d); + stream.on('close', () => resolve({ out: out.trim(), err: err2.trim() })); + }); + }); +} + +conn.on('ready', async () => { + console.log('✅ Connected\n'); + + // Диагностика 404 + const checks = [ + ['nginx terrain location', 'grep -A5 "terrain" /etc/nginx/sites-enabled/openclaw.mva154.duckdns.org'], + ['права на terrain dir', 'ls -la /home/slin/enduro-trails/data/terrain/'], + ['права на hypso dir', 'ls -la /home/slin/enduro-trails/data/terrain/hypso/ | head -5'], + ['nginx user', 'ps aux | grep nginx | grep -v grep | head -2'], + ['тайл z8 существует', 'ls /home/slin/enduro-trails/data/terrain/hypso/8/ 2>/dev/null | head -5 || echo "нет директории z8"'], + ['nginx error log', 'tail -5 /var/log/nginx/error.log 2>/dev/null || echo "нет доступа"'], + ['nginx access log terrain', 'tail -5 /var/log/nginx/access.log 2>/dev/null | grep terrain || echo "нет terrain запросов"'], + ['curl verbose', 'curl -sv "https://openclaw.mva154.duckdns.org/enduro/terrain/hypso/8/75/42.png" 2>&1 | grep -E "< HTTP|Location|< location" | head -5'], + ]; + + for (const [label, cmd] of checks) { + const r = await exec(conn, cmd); + console.log(`\n=== ${label} ===`); + console.log(r.out || r.err || '(empty)'); + } + + conn.end(); +}); + +conn.on('error', err => { + console.error('❌ Connection error:', err.message); + process.exit(1); +}); + +conn.connect(config);