1
0
Fork 0
mirror of https://github.com/VueTorrent/VueTorrent.git synced 2025-04-02 14:55:12 +03:00
VueTorrent/server/server.js
2020-04-07 09:29:28 +02:00

127 lines
3 KiB
JavaScript

const express = require('express')
const multer = require('multer')
const fs = require('fs')
const path = require('path')
const dotenv = require('dotenv')
const qbit = require('./qbit')
dotenv.config()
const PORT = process.env.PORT || 3000
const newest_torrent = {
name: '',
path: '',
}
const upload = multer({
dest: './src/tmp/',
})
// init express
const app = express()
app.use(express.json())
app.use(express.static('dist'))
// requests
// login
app.post('/login', (req, res) => {
console.log(req.body)
if (req.body.username !== process.env.VUE_APP_WEB_USER) {
return res.send('No such user')
} if (
req.body.username === process.env.VUE_APP_WEB_USER
&& req.body.password !== process.env.VUE_APP_WEB_PASS
) {
return res.send('Wrong password!')
} if (
req.body.username === process.env.VUE_APP_WEB_USER
&& req.body.password === process.env.VUE_APP_WEB_PASS
) {
return res.send('SUCCES')
}
return res.send('Something went wrong')
})
// get all torrents
// AAAND sort torrents
app.post('/all', async (req, res) => {
const torrents = await qbit.get_all(req.body)
res.set('Content-Type', 'application/json')
res.send(torrents)
})
// get session stats
app.get('/session', async (req, res) => {
const stats = await qbit.get_session_stats()
res.set('Content-Type', 'application/json')
res.send(stats)
})
// pause selected torrents
app.post('/pause', async (req, res) => {
// console.log(req.body);
const msg = await qbit.pause_torrents(req.body)
return res.send(msg)
})
// pause all torrents
app.post('/pause_all', async (req, res) => {
const msg = await qbit.pause_all()
return res.send(msg)
})
// resume selected torrents
app.post('/resume', async (req, res) => {
// console.log(req.body);
const msg = await qbit.resume_torrents(req.body)
return res.send(msg)
})
// resume all torrents
app.post('/resume_all', async (req, res) => {
const msg = await qbit.resume_all()
return res.send(msg)
})
// remove selected torrents
app.post('/remove', async (req, res) => {
// console.log(req.body);
const msg = await qbit.remove_torrents(req.body)
return res.send(msg)
})
// upload files to server
app.post('/upload', upload.single('file'), (req, res) => {
newest_torrent.name = req.file.filename
newest_torrent.path = req.file.path
return res.send('succes')
})
// add a torrent
app.post('/add', async (req, res) => {
const msg = await qbit.add(newest_torrent)
fs.unlinkSync(newest_torrent.path)
return res.send(msg)
})
// delete last uploaded file
app.delete('/upload', upload.single('file'), (req, res) => {
fs.unlinkSync(newest_torrent.path)
return res.send('deleted file')
})
app.listen(PORT, () => console.log(`Server listening on port ${PORT}!`))
// clear the tmp directory on every boot
const directory = path.resolve(`${__dirname}/tmp`)
fs.readdir(directory, (err, files) => {
if (err) console.log(err)
for (const file of files) {
fs.unlink(path.join(directory, file), (err) => {
if (err) console.log(err)
})
}
})