Files
yt-dlp-webui/server.js

65 lines
1.6 KiB
JavaScript

const Koa = require('koa'),
serve = require('koa-static'),
cors = require('@koa/cors'),
{ logger, splash } = require('./server/logger'),
{ join } = require('path'),
{ Server } = require('socket.io'),
{ createServer } = require('http'),
{ ytdlpUpdater } = require('./server/updater'),
{
download,
abortDownload,
retriveDownload,
abortAllDownloads,
} = require('./server/downloader'),
db = require('./server/db');
const app = new Koa()
const server = createServer(app.callback())
const io = new Server(server, {
cors: {
origin: "*",
methods: ["GET", "POST"]
}
})
/*
WebSocket listeners
*/
io.on('connection', socket => {
logger('ws', `${socket.handshake.address} connected!`)
socket.on('send-url', (args) => {
logger('ws', args?.url)
download(socket, args)
})
socket.on('abort', (args) => {
abortDownload(socket, args)
})
socket.on('abort-all', () => {
abortAllDownloads(socket)
})
socket.on('update-bin', () => {
ytdlpUpdater(socket)
})
socket.on('fetch-jobs', () => {
socket.emit('pending-jobs', db.retrieveAll())
})
socket.on('retrieve-jobs', () => {
retriveDownload(socket)
})
})
io.on('disconnect', (socket) => {
logger('ws', `${socket.handshake.address} disconnected`)
})
app
.use(cors())
.use(serve(join(__dirname, 'dist')))
splash()
logger('koa', `Server started on port ${process.env.PORT || 3022}`)
db.init()
.then(() => server.listen(process.env.PORT || 3022))