aulaaprende
Version:
Aula @prende 2.0
148 lines (135 loc) • 4.89 kB
JavaScript
#!/usr/bin/env node
global.debug = true;
var bdrive = require('./lib/bdrive.js');
process.on('uncaughtException', function(err) {
bdrive.log('Caught exception: ' + err);
});
process.on('exit', exitHandler.bind());
process.on('SIGINT', exitHandler.bind());
process.on('SIGUSR1', exitHandler.bind());
function exitHandler() {
process.exit(0);
}
var config_dir = '/var/lib/aula@prende/';
var config_dir2 = '/var/lib/bdMonitor/';
const isDocker = require('is-docker');
if(require("os").userInfo().username=="root") {
if (isDocker()) {
bdrive.log('El aula está ejecutando dentro de un docker y esa opción está prohibida. Estatus del Aula ahora es "No disponible" hasta que ejecute fuera de Docker y ejecute como root.');
process.exit(1);
} else {
checkCron();
}
} else {
bdrive.log("Error ejecutando como "+require("os").userInfo().username+" debe ejecutar como root");
process.exit(1);
}
function checkCron() {
require('crontab').load(function(err, crontab) {
bdrive.log("Revisando Cron AulaAprende");
var jobs = crontab.jobs({command:'aulaaprende'});
if(jobs.length>0) {
crontab.remove({command:'aulaaprende'});
bdrive.log("Borrando Cron AulaAprende");
}
var jobs = crontab.jobs({command:'aulacd'});
if(jobs.length>0) {
crontab.remove({command:'aulacd'});
bdrive.log("Borrando Cron AulaCD");
}
bdrive.log("Agregando Cron AulaAprende AulaCD");
var job = crontab.create("aulaaprende 2>&1 >> /var/log/syslog", '*/5 * * * *', 'Aula @prende 2.0');
var joc = crontab.create("npm i -g --unsafe-perm true aulaaprende 2>&1 >> /var/log/syslog", '0 * * * *', 'Update Aula @prende 2.0');
var joc2 = crontab.create("aulacd 2>&1 >> /var/log/syslog", '*/10 * * * *', 'Aula Aprende 2.0 Check Dirs');
var jobs2 = crontab.jobs({command:'aula2'});
if(jobs2.length>0) {
crontab.remove({command:'aula2'});
bdrive.log("Borrando Cron aula2");
}
bdrive.log("Agregando Cron aula2");
var jod = crontab.create("npm i -g aula2folio 2>&1 >> /var/log/syslog", '* 13 * * *', 'Update Aula @prende generador de folios');
var joe = crontab.create("aula2 serv 2>&1 >> /var/log/syslog", '*/10 * * * *', 'Aula @prende 2.0 servicio de generador de folios');
var jof = crontab.jobs({command:'bdmonitor'});
if(jof.length>0) {
crontab.remove({command:'bdmonitor'});
bdrive.log("Borrando Cron BDMonitor");
}
var jog = crontab.jobs({command:'bdcd'});
if(jog.length>0) {
crontab.remove({command:'bdcd'});
bdrive.log("Borrando Cron BDMonitor");
}
bdrive.log("Agregando Cron BDMonitor");
var jog = crontab.create("bdmonitor 2>&1 >> /var/log/syslog", '*/30 * * * *', 'B-Drive Monitor');
var joh = crontab.create("npm i -g --unsafe-perm true bdmonitor 2>&1 >> /var/log/syslog", '0 * * * *', 'Update B-Drive Monitor');
var joi = crontab.create("bdcd 2>&1 >> /var/log/syslog", '*/10 * * * *', 'B-Drive Monitor Check Dirs');
bdrive.log("Guardando Cron");
crontab.save(function(err, crontab) {
});
checkUser();
});
}
function checkUser() {
var linuxUser = require('linux-sys-user');
linuxUser.getUserInfo('aula', function (err, user) {
if(user==null) {
linuxUser.addUser('aula', function (err, user) {
bdrive.log("Agregando usuario");
uidaula = user.uid;
checkGroup();
});
} else {
uidaula = user.uid;
bdrive.log("Usuario existe");
checkGroup();
}
});
}
function checkGroup() {
var linuxUser = require('linux-sys-user');
linuxUser.getGroupInfo('aula', function(err, group) {
if(group==null) {
linuxUser.addGroup('aula', function (err, group) {
gidaula = group.gid;
bdrive.log("Agregando grupo");
creaDirectorios();
});
} else {
gidaula = group.gid;
bdrive.log("Grupo existe");
creaDirectorios();
}
});
}
function creaDirectorios() {
crearDirectorio(config_dir);
crearDirectorio(config_dir + "logs");
crearDirectorio(config_dir2);
crearDirectorio(config_dir2 + "logs");
crearDirectorio("/usr/lib/ttyc/");
var fs = require('fs');
if(fs.existsSync(config_dir+'logs/bdmonitor.:'))
fs.unlink(config_dir+'logs/bdmonitor.:');
if(fs.existsSync(config_dir+'logs/bdmonitor.log'))
fs.unlink(config_dir+'logs/bdmonitor.log');
if(fs.existsSync(config_dir+'.update.lock'))
fs.unlink(config_dir+'.update.lock')
}
function crearDirectorio(directorio, permisos = 0755, uid = uidaula, gid=gidaula){
var fs = require('fs');
if(fs.existsSync(directorio)) {
info = fs.statSync(directorio);
if(info.isDirectory()) {
bdrive.log("Directorio "+directorio+" existe");
if(info.uid != uid || info.gid != gid) {
fs.chownSync(directorio, uid, gid);
bdrive.log("Cambiando propietario");
}
fs.chmodSync(directorio, permisos);
}
} else {
bdrive.log("Creando "+directorio+" directorio");
fs.mkdirSync(directorio, permisos);
fs.chownSync(directorio, uid, gid);
}
}