112 lines
4.3 KiB
JavaScript
112 lines
4.3 KiB
JavaScript
|
const mongoose = require('mongoose');
|
||
|
const fsp = require("fs/promises");
|
||
|
const fs = require("fs");
|
||
|
const path = require("path");
|
||
|
const service = require('../config/services');
|
||
|
const { type } = require('os');
|
||
|
const log = require('../middlewares/log');
|
||
|
|
||
|
|
||
|
/*function plantillaUsuarios(usuario, listUsuarios){
|
||
|
if(usuario != ""){
|
||
|
this.usuario = usuario;
|
||
|
}
|
||
|
if(listUsuarios != ""){
|
||
|
this.listUsuarios = listUsuarios;
|
||
|
}
|
||
|
}*/
|
||
|
|
||
|
var compartidosController = {};
|
||
|
|
||
|
compartidosController.listaUsuarios = async function (req, res) {
|
||
|
let usuarios = {usuarios: []};
|
||
|
fs.readdirSync(path.join(__dirname, '../UsuariosRegistrados/')).forEach(file => {
|
||
|
usuarios.usuarios.push(file);
|
||
|
});
|
||
|
log.serverActionInfo(req,"Listar los usuarios de la aplicación");
|
||
|
return res.status(200).send(usuarios);
|
||
|
};
|
||
|
|
||
|
compartidosController.listaCompartidos = async function (req, res) {
|
||
|
//let nombre = req.query.usuario;
|
||
|
let nombre = req.usuario;
|
||
|
let ficheros = {ficheros: []};
|
||
|
fs.readdirSync(path.join(__dirname, '../ArchivosCompartidos/Usuarios/' + nombre + '/')).forEach(file => {
|
||
|
if(file.split('-')[1].split('.')[0] === nombre){
|
||
|
ficheros.ficheros.push(file);
|
||
|
}
|
||
|
});
|
||
|
log.serverActionInfo(req,"Listar los archivos compartidos");
|
||
|
return res.status(200).send(ficheros);
|
||
|
};
|
||
|
|
||
|
compartidosController.listaCompartidosConmigo = async function (req, res) {
|
||
|
//let nombre = req.query.usuario;
|
||
|
let nombre = req.usuario;
|
||
|
let ficheros = {ficheros: []};
|
||
|
fs.readdirSync(path.join(__dirname, '../ArchivosCompartidos/Usuarios/' + nombre + '/')).forEach(file => {
|
||
|
if(file.split('-')[1].split('.')[0] !== nombre){
|
||
|
ficheros.ficheros.push(file);
|
||
|
}
|
||
|
});
|
||
|
log.serverActionInfo(req,"Listar los archivos compartidos conmigo");
|
||
|
return res.status(200).send(ficheros);
|
||
|
};
|
||
|
|
||
|
compartidosController.guardarArchivoCompartido = async function (req, res) {
|
||
|
let ficheroCompartido=req.body.ficheroCompartido;
|
||
|
let objetoContraseñas=req.body.contraseñas;
|
||
|
//let usuario=req.body.usuario;
|
||
|
let usuario = req.usuario;
|
||
|
|
||
|
|
||
|
if(!fs.existsSync(path.join(__dirname, '../ArchivosCompartidos/Usuarios/' + usuario))){
|
||
|
log.errorMensaje(req,"No existe la carpeta archivos compartidos del usuario");
|
||
|
return res.status(200).send({result:null,error:"No existe la carpeta archivos compartidos del usuario"});
|
||
|
}
|
||
|
try{
|
||
|
let id = fs.readFileSync('ArchivosCompartidos/id.txt', 'utf-8');
|
||
|
let idNuevo = parseInt(id);
|
||
|
idNuevo ++;
|
||
|
await fsp.writeFile('ArchivosCompartidos/id.txt', idNuevo.toString());
|
||
|
await fsp.writeFile('ArchivosCompartidos/Ficheros/' + id + '-' + usuario + '.enc', ficheroCompartido);
|
||
|
|
||
|
for (const propiedad in objetoContraseñas) {
|
||
|
await fsp.writeFile('ArchivosCompartidos/Usuarios/' + propiedad + '/' + id + '-' + usuario + '.enc', objetoContraseñas[propiedad]);
|
||
|
}
|
||
|
log.serverActionInfo(req,"Archivo compartido guardado");
|
||
|
res.status(200).send({result:{status:'Archivo compartido correctamente'},error:null});
|
||
|
}catch (err){
|
||
|
console.log(err);
|
||
|
log.errorMensaje(req,"Error al compartir archivo");
|
||
|
res.status(200).send({result:null,error:"Error al compartir archivo"});
|
||
|
}
|
||
|
};
|
||
|
|
||
|
|
||
|
compartidosController.obtenerPublicas = async function (req, res) {
|
||
|
let publicas = {};
|
||
|
for(let i = 0; i<req.body.usuarios.length; i++){
|
||
|
let publica = fs.readFileSync('UsuariosRegistrados/' + req.body.usuarios[i] + '/clavePublica.enc', 'utf-8');
|
||
|
publicas[req.body.usuarios[i]] = publica;
|
||
|
}
|
||
|
log.serverActionInfo(req,"Listado claves públicas devuelto");
|
||
|
res.status(200).send({result:publicas,error:null});
|
||
|
};
|
||
|
|
||
|
|
||
|
compartidosController.recuperarFicheroCompartido = async function (req, res) {
|
||
|
let fichero = req.query.fichero;
|
||
|
let usuario = req.usuario;
|
||
|
let privada = fs.readFileSync('UsuariosRegistrados/' + usuario + '/clavePrivada.enc', 'utf-8');
|
||
|
let claveRandom = fs.readFileSync('ArchivosCompartidos/Usuarios/' + usuario + '/' + fichero , 'utf-8');
|
||
|
let ficheroA = fs.readFileSync('ArchivosCompartidos/Ficheros/' + fichero , 'utf-8');
|
||
|
|
||
|
log.serverActionInfo(req,"Fichero compartido y claves devueltas");
|
||
|
res.status(200).send({privada:privada,claveRandom:claveRandom, fichero: ficheroA });
|
||
|
};
|
||
|
/*
|
||
|
* Other actions
|
||
|
*/
|
||
|
|
||
|
module.exports = compartidosController;
|