tunnels.js 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. /**
  2. * Tunnels API client for SSH and Dashboard tunnel management.
  3. */
  4. import client from './client'
  5. const tunnelsApi = {
  6. /**
  7. * Enable tunnel for device and create session
  8. * @param {number} deviceId - Device numeric ID
  9. * @param {string} tunnelType - "ssh" or "dashboard"
  10. * @returns {Promise<{session_uuid: string, device_id: string, tunnel_type: string, status: string}>}
  11. */
  12. async enableTunnel(deviceId, tunnelType) {
  13. const { data } = await client.post(
  14. `/superadmin/tunnels/devices/${deviceId}/${tunnelType}`
  15. )
  16. return data
  17. },
  18. /**
  19. * Get tunnel session status
  20. * @param {string} sessionUuid - Session UUID
  21. * @returns {Promise<{session_uuid: string, status: string, device_tunnel_port?: number, ttyd_port?: number, tunnel_url?: string}>}
  22. */
  23. async getSessionStatus(sessionUuid) {
  24. const { data } = await client.get(
  25. `/superadmin/tunnels/sessions/${sessionUuid}/status`
  26. )
  27. return data
  28. },
  29. /**
  30. * Send heartbeat to keep session alive
  31. * @param {string} sessionUuid - Session UUID
  32. * @returns {Promise<{success: boolean}>}
  33. */
  34. async sendHeartbeat(sessionUuid) {
  35. const { data } = await client.post(
  36. `/superadmin/tunnels/sessions/${sessionUuid}/heartbeat`
  37. )
  38. return data
  39. }
  40. }
  41. export default tunnelsApi