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 = '', e = '';
      stream.on('data', d => out += d);
      stream.stderr.on('data', d => e += d);
      stream.on('close', () => resolve({ out: out.trim(), err: e.trim() }));
    });
  });
}
conn.on('ready', async () => {
  // Проверить что реально есть в hypso/8/75/
  const r1 = await exec(conn, 'ls /home/slin/enduro-trails/data/terrain/hypso/8/75/ 2>/dev/null | head -10');
  console.log('hypso/8/75/ files:', r1.out || '(empty)');

  // Найти любой существующий тайл z8
  const r2 = await exec(conn, 'find /home/slin/enduro-trails/data/terrain/hypso/8/ -name "*.png" | head -5');
  console.log('sample z8 tiles:', r2.out || '(none)');

  // Проверить структуру — TMS vs XYZ (y может быть перевёрнутым)
  const r3 = await exec(conn, 'ls /home/slin/enduro-trails/data/terrain/hypso/8/ | sort -n | head -10');
  console.log('z8 x-dirs:', r3.out);

  // Попробовать curl на реальный тайл
  const r4 = await exec(conn, 'find /home/slin/enduro-trails/data/terrain/hypso/8/ -name "*.png" | head -1');
  const tile = r4.out;
  console.log('first tile path:', tile);

  if (tile) {
    // Извлечь z/x/y из пути
    const parts = tile.split('/');
    const y = parts[parts.length-1].replace('.png','');
    const x = parts[parts.length-2];
    const z = parts[parts.length-3];
    const url = `http://localhost:5558/terrain/hypso/${z}/${x}/${y}.png`;
    console.log('test URL:', url);
    const r5 = await exec(conn, `curl -o /dev/null -s -w "%{http_code}" "${url}"`);
    console.log('HTTP:', r5.out);
  }

  conn.end();
});
conn.on('error', err => { console.error('error:', err.message); process.exit(1); });
conn.connect({ host: '82.22.50.71', username: 'slin', password: 'motoZ@yaz2010', readyTimeout: 15000 });
