ws.js 1.1 KB

12345678910111213141516171819202122232425262728293031
  1. const chalk = require('chalk')
  2. const os = require('node:os')
  3. /* global WIKI */
  4. module.exports = () => {
  5. WIKI.servers.ws.on('connection', (socket) => {
  6. // TODO: Validate token + permissions
  7. const token = socket.handshake.auth.token
  8. console.info(token)
  9. const listeners = {}
  10. socket.on('server:logs', () => {
  11. socket.emit('server:log', chalk`{greenBright Streaming logs from {bold Wiki.js} instance {yellowBright.bold ${WIKI.INSTANCE_ID}} on host {yellowBright.bold ${os.hostname()}}...}`)
  12. listeners.serverLogs = (msg) => {
  13. socket.emit('server:log', msg)
  14. }
  15. WIKI.logger.ws.addListener('log', listeners.serverLogs)
  16. WIKI.logger.warn(`User XYZ is streaming server logs. ( Listeners: ${WIKI.logger.ws.listenerCount('log')} )`)
  17. })
  18. socket.on('disconnect', () => {
  19. if (listeners.serverLogs) {
  20. WIKI.logger.ws.removeListener('log', listeners.serverLogs)
  21. delete listeners.serverLogs
  22. }
  23. WIKI.logger.warn(`User XYZ has stopped streaming server logs. ( Listeners: ${WIKI.logger.ws.listenerCount('log')} )`)
  24. })
  25. })
  26. }