2 changed files with 183 additions and 0 deletions
@ -0,0 +1,171 @@ |
|||||
|
var express = require('express'); |
||||
|
var fs = require("fs"); |
||||
|
var path = require("path"); |
||||
|
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) { |
||||
|
return fs.readdirSync(address, {withFileTypes: true}) |
||||
|
// .filter(dirent => dirent.isDirectory())
|
||||
|
// .map(dirent => dirent.name);
|
||||
|
} |
||||
|
|
||||
|
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/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/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 |
||||
|
|
||||
|
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('/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) |
||||
|
}) |
||||
Write
Preview
Loading…
Cancel
Save
Reference in new issue