You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
330 lines
8.2 KiB
330 lines
8.2 KiB
// pm2 restart kplayer
|
|
// /srv/samba/daten/node
|
|
|
|
var express = require('express');
|
|
var fs = require("fs");
|
|
var path = require("path");
|
|
var queue = require('queue');
|
|
var wget = require('wget-improved');
|
|
|
|
var downloadUrl = function(url, dest) {
|
|
return function(cb) {
|
|
try {
|
|
// you can also change the mapping url to file here by changing the function
|
|
var download = wget.download(url, dest, {});
|
|
download.on('end', function() {
|
|
() => console.log("done downloading")
|
|
});
|
|
} catch (e) {
|
|
|
|
}
|
|
};
|
|
};
|
|
|
|
var q = queue();
|
|
//change this one as needed.
|
|
q.concurrency = 2;
|
|
|
|
//q.start();
|
|
|
|
const { exec } = require('child_process');
|
|
|
|
|
|
const bodyParser= require('body-parser')
|
|
const multer = require('multer');
|
|
|
|
var app = express();
|
|
app.use(bodyParser.urlencoded({extended: true}))
|
|
|
|
app.get('/', function(req, res) {
|
|
res.json({ message: 'WELCOME' });
|
|
});
|
|
|
|
function isVideoFolder(address) {
|
|
return getFiles(address).filter(dirent => dirent.name.endsWith(".mp4")).length > 0
|
|
}
|
|
|
|
function hasPics(address) {
|
|
return getFiles(address).filter(dirent => dirent.name.endsWith(".jpg")).length > 0
|
|
}
|
|
|
|
function getFiles(address) {
|
|
try {
|
|
return fs.readdirSync(address, {withFileTypes: true})
|
|
}
|
|
catch {
|
|
return []
|
|
}
|
|
// .filter(dirent => dirent.isDirectory())
|
|
// .map(dirent => dirent.name);
|
|
}
|
|
|
|
app.get('/listfiles/*', function (req, res) {
|
|
var address = req.path.substr(10)
|
|
console.log("listdirs " + address);
|
|
|
|
if (!req.path.startsWith("/listfiles/srv/samba/ren/")) {
|
|
res.end("Access denied")
|
|
return
|
|
}
|
|
var result = [];
|
|
|
|
try {
|
|
var files = getFiles(address)
|
|
|
|
files.forEach(function(file){
|
|
var filename = path.resolve(address, file.name)
|
|
|
|
console.log(filename)
|
|
|
|
result.push(filename)
|
|
})
|
|
}
|
|
catch {
|
|
|
|
}
|
|
|
|
res.end(JSON.stringify(result))
|
|
})
|
|
|
|
app.get('/listdirs/*', function (req, res) {
|
|
var address = req.path.substr(9)
|
|
console.log("listdirs " + address);
|
|
|
|
if (!req.path.startsWith("/listdirs/srv/samba/ren/")) {
|
|
res.end("Access denied")
|
|
return
|
|
}
|
|
|
|
var files = getFiles(address)
|
|
|
|
var leaf = true
|
|
|
|
var result = [];
|
|
|
|
files.forEach(function(file){
|
|
var filename = file.name
|
|
var filetype = "folder"
|
|
var pics = false
|
|
|
|
if ((file.isDirectory() || file.isSymbolicLink()) && !filename.startsWith(".")) {
|
|
var folders = getFiles(address + "/" + filename)
|
|
|
|
if (folders.filter(dirent => dirent.name.endsWith(".mp4")).length > 0) {
|
|
filetype = "video"
|
|
}
|
|
else if (folders.filter(dirent => dirent.name.endsWith(".html")).length > 0) {
|
|
filetype = "web"
|
|
}
|
|
// else if (folders.filter(dirent => dirent.name.endsWith(".jpg")).length > 0) {
|
|
else {
|
|
folders.forEach(function (f) {
|
|
if (f.isDirectory()) {
|
|
|
|
if (hasPics(address + "/" + filename + "/" + f.name)) {
|
|
filetype = "pictures"
|
|
}
|
|
}
|
|
})
|
|
}
|
|
|
|
console.log(filename)
|
|
|
|
result.push([filename, filetype])
|
|
}
|
|
})
|
|
|
|
res.end(JSON.stringify(result))
|
|
})
|
|
|
|
var storage = multer.diskStorage({
|
|
destination: function (req, file, cb) {
|
|
cb(null, 'uploads')
|
|
},
|
|
filename: function (req, file, cb) {
|
|
cb(null, file.fieldname + '-' + Date.now())
|
|
}
|
|
})
|
|
|
|
var upload = multer({ storage: storage })
|
|
|
|
app.get('/alive', function (req, res) {
|
|
let date = new Date()
|
|
var d = date.getHours() + ":" + date.getMinutes() + ":" + date.getSeconds() + "\n"
|
|
console.log(d)
|
|
var p = '/mnt/archive/ren/kink_archiv/alive.txt'
|
|
fs.writeFileSync(p, d, { mode: 0o755 });
|
|
// fs.unlinkSync(p);
|
|
p = '/mnt/backup/ren/alive.txt'
|
|
fs.writeFileSync(p, d, { mode: 0o755 });
|
|
// fs.unlinkSync(p);
|
|
p = '/mnt/work/ren/exotic/alive.txt'
|
|
fs.writeFileSync(p, d, { mode: 0o755 });
|
|
// fs.unlinkSync(p);
|
|
res.send("ok")
|
|
})
|
|
|
|
app.get('/ffmpeg', function (req, res) {
|
|
var p = req.query.url
|
|
var n = "/srv/samba/ren/webdl" + req.query.name + ".mp4"
|
|
|
|
var cmd = 'ffmpeg -i "'+p+'" -codec copy "'+n+'"'
|
|
console.log(cmd)
|
|
exec(cmd, (err, stdout, stderr) => {
|
|
if (err) {
|
|
console.log(err)
|
|
// node couldn't execute the command
|
|
return;
|
|
}
|
|
|
|
// the *entire* stdout and stderr (buffered)
|
|
console.log(`stdout: ${stdout}`);
|
|
console.log(`stderr: ${stderr}`);
|
|
});
|
|
res.send(p)
|
|
})
|
|
|
|
app.get('/wgetcount', function (req, res) {
|
|
var cmd = 'ps -fA | grep wget | wc -l'
|
|
console.log(cmd)
|
|
|
|
const execSync = require('child_process').execSync;
|
|
var code = execSync(cmd);
|
|
|
|
res.end(code)
|
|
})
|
|
|
|
app.get('/killffmpeg', function (req, res) {
|
|
var cmd = 'kill `pidof ffmpeg`'
|
|
console.log(cmd)
|
|
|
|
const execSync = require('child_process').execSync;
|
|
exec(cmd, (err, stdout, stderr) => {
|
|
// the *entire* stdout and stderr (buffered)
|
|
console.log(`stdout: ${stdout}`);
|
|
console.log(`stderr: ${stderr}`);
|
|
|
|
if (err) {
|
|
console.log(err)
|
|
// node couldn't execute the command
|
|
return;
|
|
}
|
|
|
|
});
|
|
res.end(cmd)
|
|
})
|
|
|
|
app.get('/webdl', function (req, res) {
|
|
var p = req.query.url
|
|
var n = "/srv/samba/ren/webdl/" + req.query.name
|
|
|
|
const lastSegment = n.split("/").pop();
|
|
|
|
console.log(lastSegment);
|
|
|
|
if (fs.existsSync(n)) {
|
|
res.send("exists")
|
|
return
|
|
}
|
|
|
|
if (fs.existsSync("/srv/samba/ren/work/facial2/"+lastSegment)) {
|
|
res.send("exists")
|
|
return
|
|
}
|
|
if (fs.existsSync("/srv/samba/ren/knk_archiv3/facial/"+lastSegment)) {
|
|
res.send("exists")
|
|
return
|
|
}
|
|
if (fs.existsSync("/srv/samba/ren/knk_archiv4/face/"+lastSegment)) {
|
|
res.send("exists")
|
|
return
|
|
}
|
|
if (fs.existsSync("/srv/samba/ren/knk_archiv4/sub/"+lastSegment)) {
|
|
res.send("exists")
|
|
return
|
|
}
|
|
if (fs.existsSync("/srv/samba/ren/knk_archiv4/sub2/"+lastSegment)) {
|
|
res.send("exists")
|
|
return
|
|
}
|
|
|
|
var cmd = 'wget -b -O "'+n+'" '
|
|
|
|
if (req.query.cookies) {
|
|
cmd = cmd + '--header="Cookie: ' + req.query.cookies + '" '
|
|
}
|
|
cmd = cmd + '"'+p+'"'
|
|
|
|
console.log(cmd)
|
|
exec(cmd, (err, stdout, stderr) => {
|
|
if (err) {
|
|
console.log(err)
|
|
// node couldn't execute the command
|
|
return;
|
|
}
|
|
|
|
// the *entire* stdout and stderr (buffered)
|
|
console.log(`stdout: ${stdout}`);
|
|
console.log(`stderr: ${stderr}`);
|
|
});
|
|
res.send(p)
|
|
})
|
|
|
|
app.get('/pushdl', function (req, res) {
|
|
var p = req.query.url
|
|
var n = "/srv/samba/ren/webdl/" + req.query.name
|
|
|
|
q.push(downloadUrl(p,n));
|
|
console.log("all urls pushed");
|
|
|
|
// q.start()
|
|
})
|
|
|
|
app.get('/queuelen', function (req, res) {
|
|
res.end("Len" + q.length)
|
|
})
|
|
|
|
app.get('/deleteThumb/*', function (req, res) {
|
|
if (req.path.startsWith("/deleteThumb/srv/samba/ren/thumb/")) {
|
|
var p = req.path.substr(12)
|
|
fs.unlinkSync(p)
|
|
console.log("removed " + p)
|
|
}
|
|
res.send("ok")
|
|
})
|
|
|
|
//createDirectories(pathname) {}
|
|
|
|
app.post('/upload', upload.any() , (req, res, next) => {
|
|
// const file = req.file
|
|
|
|
var files = req.files;
|
|
var newPath = req.body.name
|
|
console.log(newPath)
|
|
if(files){
|
|
files.forEach(function(file){
|
|
//Move file to the deployment folder.
|
|
const __dirname = path.resolve();
|
|
var pathname = newPath.substring(0, newPath.lastIndexOf('/'))
|
|
console.log(pathname);
|
|
fs.mkdir(path.resolve(__dirname, pathname), { recursive: true }, e => {
|
|
if (e) {
|
|
console.error(e);
|
|
} else {
|
|
console.log(pathname);
|
|
}
|
|
});
|
|
|
|
// createDirectories(newPath)
|
|
fs.renameSync(file.path, newPath);
|
|
console.log(file.path);
|
|
});
|
|
}
|
|
res.send("ok")
|
|
})
|
|
|
|
var server = app.listen(8081, function () {
|
|
var host = server.address().address
|
|
var port = server.address().port
|
|
console.log("Server listening at http://%s:%s", host, port)
|
|
})
|