/**
 * Minified by jsDelivr using Terser v5.39.0.
 * Original file: /npm/scullog@0.2.0/server/index.js
 *
 * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files
 */
#!/usr/bin/env node
var koa=require("koa"),cors=require("koa-cors"),morgan=require("koa-morgan"),mount=require("koa-mount"),koaStatic=require("koa-static"),compress=require("koa-compress"),path=require("path"),socketio=require("socket.io"),tracer=require("tracer"),crypto=require("crypto"),co=require("co"),fs=require("fs"),stream=require("logrotate-stream"),utils=require("./utils"),fsExtra=require("fs-extra"),Routes=require("./routes"),Tools=require("./tools"),service=require("./selfService"),NodeFileManager=require("./fileManager/NodeFileManager"),LinuxService=require("./fileManager/service/linuxService"),serviceOps=["install","uninstall","start","stop","restart"],argv=require("yargs").usage("USAGE: scullog [-s <service>] [-p <port>] [-d <directory>] [-c <config>]").options({s:{alias:"service",describe:"install/uninstall/start/stop/restart as service",choices:serviceOps},p:{alias:"port",describe:"Server Port",type:"number"},d:{alias:"directory",describe:"Root Files Directory",type:"array"},c:{alias:"config",describe:"Local/Remote Config file"}}).showHelpOnFail(!0,"Specify --help for available options").help("h").alias("h","help").version().alias("v","version").argv;class Scullog{constructor(e){(e=e||{}).base=e.base||__dirname,this.paths={},this.paths.config=`${e.base}/config`,this.paths.log=`${e.base}/logs`,this.paths.temp=`${e.base}/tmp`,fsExtra.ensureDirSync(this.paths.temp),fsExtra.ensureDirSync(this.paths.log),this.__$init=new Promise(((r,i)=>{var s=this;this.__initLogger(),co((function*(){var i,t,o,a=e.id;a||(a=argv.service||e.service?"scullog-service":"scullog-default"),fsExtra.ensureDirSync(`${s.paths.config}/${a}`),i=yield[utils.read(`${s.paths.config}/default.json`),utils.read(`${s.paths.config}/${a}/main.json`)],t=Object.assign(i[0],i[1]),o=yield utils.read(argv.config||e.config||t.config),(t=Object.assign(t,o)).port=argv.port||e.port||t.port,t.directory=argv.directory||e.directory||t.directory||[path.dirname(".")],t.config=argv.config||e.config||t.config,t.id=a;var n=e.fileManager||t.fileManager;"string"==typeof n&&(t.fileManager=n),yield utils.write(`${s.paths.config}/${a}/main.json`,t),s.conf=Object.assign(t),s.fileManager=n?"string"==typeof n?require(n)():n:new NodeFileManager(s),argv.service?s.__initService():s.__initServer(r)}))}))}__initService(){service?-1!=serviceOps.indexOf(argv.service)&&service[argv.service]?service[argv.service]():(global.C.logger.info("Valid value are install/uninstall/start/stop/restart"),process.exit(0)):(global.C.logger.info("Not supported platform. Currently, we support only windows, linux and Mac"),process.exit(0))}__initServer(e){var r=koa(),i=new Tools(this),s=null;s=this.conf.ssl&&this.conf.ssl.key&&this.conf.ssl.certificate?require("https").createServer({key:fs.readFileSync(this.conf.ssl.key),cert:fs.readFileSync(this.conf.ssl.certificate)},r.callback()):require("http").createServer(r.callback());var t=stream({file:this.paths.log+"/access.log",size:"1m",keep:5});r.proxy=!0,r.use(compress()),r.use(morgan.middleware("combined",{stream:t})),r.use(cors()),r.use(i.handelError),r.use(i.checkAccessCookie),r.use(i.realIp),r.use(mount("/",new Routes(this))),r.use(koaStatic(path.join(__dirname,"../client/"))),r.use(koaStatic(path.join(__dirname,"../node_modules/"))),global.C.logger.info("listening on *."+this.conf.port+" on "+(this.conf.ssl?"https":"http")),s.listen(this.conf.port,"127.0.0.1",(()=>{e(this.conf.port)})),this.io=socketio.listen(s,{log:!1})}__initLogger(){var e=stream({file:this.paths.log+"/app.log",size:"1m",keep:5});global.C={logger:require("tracer").console({transport:function(r){console.log(r.output),e.write(r.output+"\n")}})}}initialized(){return this.__$init}getConfiguration(){return this.conf}getSocketServer(){return this.io}getFileManager(){return this.fileManager}exitHandler(e,r){r&&C.logger.error(`Error occured ${this.conf.id} -- ${r.stack}`),e.cleanup&&(C.logger.info(`Cleanup ${this.conf.id}`),fsExtra.removeSync(`${this.paths.config}/${this.conf.id}`)),e.exit&&(C.logger.info(`Exit called ${this.conf.id}`),process.exit())}}if(Scullog.NodeFileManager=NodeFileManager,Scullog.LinuxService=LinuxService,require.main===module){let e=new Scullog;argv.service||e.initialized().then((function(){process.stdin.resume(),process.on("exit",e.exitHandler.bind(e,{cleanup:!0})),process.on("SIGINT",e.exitHandler.bind(e,{exit:!0})),process.on("SIGHUP",e.exitHandler.bind(e,{exit:!0})),process.on("SIGQUIT",e.exitHandler.bind(e,{exit:!0})),process.on("SIGTERM",e.exitHandler.bind(e,{exit:!0})),process.on("SIGUSR1",e.exitHandler.bind(e,{exit:!0})),process.on("SIGUSR2",e.exitHandler.bind(e,{exit:!0})),process.on("uncaughtException",e.exitHandler.bind(e,{exit:!0}))}))}else module.exports=Scullog;
//# sourceMappingURL=/sm/3ecaf6902aceb6ce5a4b5abce9f3ad0d97509c47b06e287dbed14e09a3180f74.map