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