UNPKG

aulaaprende

Version:
148 lines (135 loc) 4.89 kB
#!/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); } }