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 = '', 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');

  // Проверить sudoers файл напрямую
  const sudoers = await exec(conn, 'cat /etc/sudoers.d/* 2>/dev/null || echo "нет доступа"');
  console.log('sudoers.d:', sudoers.out || sudoers.err);

  // Проверить группы slin
  const groups = await exec(conn, 'id slin');
  console.log('groups:', groups.out);

  // Проверить есть ли у slin права на nginx конфиг
  const nginxConf = await exec(conn, 'ls -la /etc/nginx/sites-enabled/ && ls -la /etc/nginx/nginx.conf');
  console.log('nginx files:', nginxConf.out);

  // Попробовать через script -c
  const r = await exec(conn, 'script -q -c "echo motoZ@yaz2010 | sudo -S chmod o+x /home/slin" /dev/null 2>&1');
  console.log('script sudo:', r.out || r.err);

  // HTTP check
  const http = await exec(conn, 'curl -o /dev/null -s -w "%{http_code}" "https://openclaw.mva154.duckdns.org/enduro/terrain/hypso/8/75/42.png"');
  console.log('HTTP:', http.out);

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