isite
Version: 
Create High Level Multi-Language Web Site [Fast and Easy]
413 lines (349 loc) • 14.7 kB
JavaScript
module.exports = function init(options) {
    console.log('>==================<');
    const ____0 = function () {};
    ____0.args = {};
    process.argv.forEach((arg) => {
        arg = arg.split('=');
        ____0.args[arg[0].replace('--', '')] = arg[1] || true;
    });
    ____0.package = require(__dirname + '/package.json');
    ____0.localDir = __dirname;
    ____0.cwd = process.cwd();
    ____0.lib = {};
    ____0._0_a405 = !0; // 4334135645788275237931514658376742387653423921514718526246719191
    ____0.strings = [];
    ____0.Module = require('node:module');
    ____0.http = require('node:http');
    ____0.http2 = require('node:http2');
    ____0.https = require('node:https');
    ____0.net = require('node:net');
    ____0.url = require('node:url');
    ____0.fs = require('node:fs');
    ____0.path = require('node:path');
    ____0.child_process = require('node:child_process');
    ____0.readline = require('node:readline');
    ____0.zlib = require('zlib');
    ____0.xlsx = ____0.XLSX = require('xlsx');
    ____0.pdf = ____0.PDF = require('pdf-lib');
    ____0.archiver = require('archiver');
    ____0.fontkit = ____0.FONTKIT = require('@pdf-lib/fontkit');
    ____0.querystring = require('querystring');
    ____0.formidable = require('formidable');
    ____0.mv = require('mv');
    ____0.utf8 = require('utf8');
    ____0.eval = require('eval');
    ____0.proxyAgent = require('https-proxy-agent');
    ____0.fetchAsync = (...args) => import('node-fetch').then(({ default: fetch }) => fetch(...args));
    ____0.request =
        ____0.fetch =
        ____0.x0ftox =
            function (...args) {
                args[1] = args[1] || {};
                if (args[1].body && typeof args[1].body == 'object') {
                    args[1].body = JSON.stringify(args[1].body);
                } else if (args[1].data && typeof args[1].data == 'object') {
                    args[1].body = JSON.stringify(args[1].data);
                    delete args[1].data;
                }
                args[1].agent =
                    args[1].agent ||
                    function (_parsedURL) {
                        if (args[1].proxyURL) {
                            return new ____0.proxyAgent(proxyURL);
                        } else if (_parsedURL.protocol == 'http:') {
                            return new ____0.http.Agent({
                                keepAlive: true,
                            });
                        } else {
                            return new ____0.https.Agent({
                                keepAlive: true,
                            });
                        }
                    };
                return ____0.fetchAsync(...args);
            };
    ____0.$ = ____0.cheerio = require('cheerio');
    ____0.md5 = ____0.hash = ____0.x0md50x = require('md5');
    ____0.nodemailer = require('nodemailer');
    ____0.webp = require('webp-converter');
  
    ____0.setting = {};
    ____0.databaseList = [];
    ____0.databaseCollectionList = [];
    ____0.collectionList = [];
    ____0.apps = [];
    ____0.appList = [];
    ____0.sharedList = [];
    ____0.addApp = function (app) {
        ____0.appList.push(app);
    };
    ____0.getApp = function (name) {
        return ____0.appList.find((a) => a.name === name);
    };
    ____0.require = function (file_path) {
        return require(file_path)(____0);
    };
    ____0.cmd = function (cmd, callback) {
        callback = callback || {};
        let exec = ____0.child_process.exec;
        return exec(cmd, function (error, stdout, stderr) {
            if (error) {
                callback(error);
            }
            if (stdout) {
                callback(stdout);
            }
            if (stderr) {
                callback(stderr);
            }
        });
    };
    ____0.closing = false;
    ____0.close = function (wait = 0) {
        if (____0.closing) {
            return false;
        }
        ____0.closing = true;
        ____0.log('Try Closing Site : ' + ____0.options.name);
        let count = 0;
        ____0.servers = ____0.servers || [];
        ____0.servers.forEach((s, i) => {
            ____0.log('Closing Server Number : ' + (i + 1));
            s.close(() => {
                count++;
                if (count == ____0.servers.length) {
                    ____0.log('Closing All Database ...');
                    ____0.call('[close-database]', null, () => {
                        ____0.log('Closing Process');
                        process.exit(0);
                    });
                }
            });
        });
        setTimeout(() => {
            ____0.log('Closing Process');
            process.exit(0);
        }, 1000 * wait);
    };
    ____0.options = {};
    require('./object-options')(options, ____0);
    ____0.console = console;
    ____0.log = function (...args) {
        if (____0.options.log && args.length > 0) {
            args.forEach((arg) => {
                ____0.console.log(arg);
            });
        }
    };
    if (____0.options.stdin) {
        if (process.stdin && process.stdin.resume) {
            process.stdin.resume();
        }
        process.on('uncaughtException', (err) => {
            console.error('uncaughtException :: ', err);
            // process.exit(1)
        });
        /* when app close */
        process.on('exit', (code) => {
            ____0.log('----------------------------------------');
            ____0.log('');
            ____0.log('       ' + ____0.options.name + ` Closed with code : ${code}`);
            ____0.log('');
            ____0.log('----------------------------------------');
        });
        /* when ctrl + c */
        process.on('SIGINT', (code) => {
            ____0.close(1);
        });
        process.on('unhandledRejection', (reason, p) => {
            console.error('Unhandled Rejection at :: ', p, 'reason :: ', reason);
            // process.exit(1)
        });
        process.on('warning', (warning) => {
            console.warn(`warning : ${warning.name} \n ${warning.message}  \n ${warning.stack}`);
        });
    }
    // if (____0.options.cluster.enabled && ____0.cluster.isPrimary) {
    //   ____0.log(`Primary cluster : ${process.pid} is running`);
    //   if (____0.options.cluster.enabled) {
    //     for (let i = 0; i < ____0.options.cluster.count; i++) {
    //       ____0.cluster.fork();
    //     }
    //     ____0.cluster.on('exit', (worker, code, signal) => {
    //       ____0.log(`worker cluster : ${worker.process.pid} died`);
    //     });
    //   }
    // } else if (____0.options.cluster.enabled && !____0.cluster.isPrimary) {
    //   ____0.log(`Worker cluster : ${process.pid} started`);
    // } else {
    //   ____0.log(`Process : ${process.pid} started`);
    // }
    ____0.log(`Process ID : ${process.pid} `);
    ____0.fsm = require('./lib/data.js')(____0);
    ____0.fsm = require('./lib/fsm.js')(____0);
    ____0.fileList = ____0.fsm.list;
    ____0.fileStatSync = ____0.fsm.statSync;
    ____0.fileStat = ____0.fsm.stat;
    ____0.css = ____0.fsm.css;
    ____0.xml = ____0.fsm.xml;
    ____0.js = ____0.fsm.js;
    ____0.json = ____0.fsm.json;
    ____0.html = ____0.fsm.html;
    ____0.download = ____0.fsm.download;
    ____0.downloadFile = ____0.fsm.downloadFile;
    ____0.isFileExists = ____0.fsm.isFileExists;
    ____0.isFileExistsSync = ____0.fsm.isFileExistsSync;
    ____0.readFile = ____0.fsm.readFile;
    ____0.readFileRaw = ____0.fsm.readFileRaw;
    ____0.readFileStream = ____0.fsm.readFileStream;
    ____0.readFiles = ____0.fsm.readFiles;
    ____0.readFileSync = ____0.fsm.readFileSync;
    ____0.writeFile = ____0.fsm.writeFile;
    ____0.writeFileSync = ____0.fsm.writeFileSync;
    ____0.removeFile = ____0.deleteFile = ____0.fsm.deleteFile;
    ____0.removeFileSync = ____0.deleteFileSync = ____0.fsm.deleteFileSync;
    ____0.createDir = ____0.mkDir = ____0.fsm.mkDir;
    ____0.createDirSync = ____0.mkdirSync = ____0.fsm.mkdirSync;
    ____0.routing = require('./lib/routing.js')(____0);
    ____0.off = ____0.routing.off;
    ____0.onREQUEST = ____0.routing.onREQUEST;
    ____0.get = ____0.onGET = ____0.routing.onGET;
    ____0.post = ____0.onPOST = ____0.routing.onPOST;
    ____0.put = ____0.onPUT = ____0.routing.onPUT;
    ____0.delete = ____0.onDELETE = ____0.routing.onDELETE;
    ____0.test = ____0.onTEST = ____0.routing.onTEST;
    ____0.callRoute = ____0.routing.call;
    ____0.onVIEW = ____0.routing.onVIEW;
    ____0.onOPTIONS = ____0.routing.onOPTIONS;
    ____0.onPATCH = ____0.routing.onPATCH;
    ____0.onCOPY = ____0.routing.onCOPY;
    ____0.onHEAD = ____0.routing.onHEAD;
    ____0.onLINK = ____0.routing.onLINK;
    ____0.onUNLINK = ____0.routing.onUNLINK;
    ____0.onPURGE = ____0.routing.onPURGE;
    ____0.onLOCK = ____0.routing.onLOCK;
    ____0.onUNLOCK = ____0.routing.onUNLOCK;
    ____0.onPROPFIND = ____0.routing.onPROPFIND;
    ____0.all = ____0.onALL = ____0.routing.onALL;
    ____0.run = ____0.start = ____0.listen = ____0.routing.start;
    require('./lib/vars.js')(____0);
    //DataBase Management Oprations
    ____0.mongodb = require('./lib/mongodb.js')(____0);
    ____0.connectCollection = function (option, db) {
        return require('./lib/collection')(____0, option, db);
    };
    ____0.words = require('./lib/words.js')(____0);
    ____0.word = ____0.words.word;
    ____0.words.addFile(____0.dir + '/json/words.json');
    ____0.storage = require('./lib/storage.js')(____0).fn;
    ____0.logs = require('./lib/logs.js')(____0).fn;
    if (____0.options.security.enabled) {
        ____0.security = require('./lib/security.js')(____0);
    }
    ____0.cookie = require('./lib/cookie.js');
    ____0.sessions = require('./lib/sessions')(____0);
    ____0.session = require('./lib/session.js');
    ____0.parser = require('./lib/parser.js');
    require('./lib/ws.js')(____0);
    require('./lib/wsClient.js')(____0);
    require('./lib/email.js')(____0);
    require('./lib/integrated.js')(____0);
    require('./lib/browser.js')(____0);
    require('./lib/helper.js')(____0);
    require('./lib/pdf.js')(____0);
    require('./lib/app.js')(____0);
    require('./lib/eval.js')(____0);
    require('./lib/proxy.js')(____0);
    //Master Pages
    ____0.masterPages = [];
    ____0.addMasterPage = function (page) {
        ____0.masterPages.push({
            name: page.name,
            header: page.header,
            footer: page.footer,
        });
    };
    ____0.reset = function () {};
    ____0.on('[any][saving data]', function () {
        ____0.log(____0.options.name + ' :: Saving Data :: ' + ____0.options.savingTime + ' Minute ');
    });
    setInterval(function () {
        ____0.call('[any][saving data]');
    }, ____0.options.savingTime * 1000 * 60);
    ____0.dashboard = require(__dirname + '/lib/dashboard.js');
    ____0.dashboard(____0);
    ____0.importApps = function (app_dir) {
        if (____0.isFileExistsSync(app_dir) && ____0.fs.statSync(app_dir).isDirectory()) {
            ____0.log('=== Auto Importing Apps : ' + app_dir);
            ____0.fs.readdirSync(app_dir).forEach((file) => {
                if (____0.fs.statSync(app_dir + '/' + file).isDirectory()) {
                    ____0.importApp(app_dir + '/' + file);
                }
            });
        }
    };
    ____0.importApp = function (app_path, name2) {
        ____0.log('\n===  Importing App : ' + app_path);
        if (____0.isFileExistsSync(app_path + '/site_files/json/words.json')) {
            ____0.words.addFile(app_path + '/site_files/json/words.json');
        }
        if (____0.isFileExistsSync(app_path + '/site_files/json/vars.json')) {
            ____0.addVars(app_path + '/site_files/json/vars.json');
        }
        if (____0.isFileExistsSync(app_path + '/site_files/json/permissions.json')) {
            ____0.security.addPermissions(app_path + '/site_files/json/permissions.json');
        }
        if (____0.isFileExistsSync(app_path + '/site_files/json/roles.json')) {
            ____0.security.addRoles(app_path + '/site_files/json/roles.json');
        }
        if (____0.isFileExistsSync(app_path + '/libs/notifications.js')) {
            require(app_path + '/libs/notifications.js')(____0);
        }
        if (____0.isFileExistsSync(app_path + '/app.js')) {
            ____0.apps.push({
                name: app_path.split('/').pop(),
                name2: name2,
                path: app_path,
            });
            let app = require(app_path + '/app.js');
            return app(____0);
        }
    };
    ____0.loadApp = function (name, name2) {
        let app_path = ____0.options.apps_dir + '/' + name;
        return ____0.importApp(app_path, name2);
    };
    ____0.loadLocalApp = function (name, name2) {
        return ____0.importApp(__dirname + '/apps/' + name, name2);
    };
    if (____0.options.apps === !0) {
        if (____0.isFileExistsSync(____0.options.apps_dir) && ____0.fs.statSync(____0.options.apps_dir).isDirectory()) {
            ____0.log('\n=== Auto Loading Default Apps ===');
            ____0.fs.readdirSync(____0.options.apps_dir).forEach((file) => {
                if (____0.fs.statSync(____0.options.apps_dir + '/' + file).isDirectory()) {
                    ____0.loadApp(file);
                }
            });
        }
    }
    ____0.createDir(____0.options.upload_dir);
    ____0.createDir(____0.options.download_dir);
    ____0.createDir(____0.options.backup_dir);
    
    ____0.addfeatures(____0.dir + '/json/features.json');
    ____0.log('');
    ____0.log('************************************');
    ____0.log(`****** isite version ${____0.package.version} *******`);
    ____0.log('************************************');
    ____0.log('');
    ____0.on('0x0000', (_) => {
        // 4578815141785252455847572118176545188679211923764553137442393151413872654579465146593768
        ____0[____0.from123('397413494139217339741349')] = _;
    });
    setInterval(() => {
        ____0.collectionList.forEach((collection) => {
            if (!collection.taskBusy && collection.taskList.length > 0) {
                collection.checkTaskList();
            }
        });
    }, 10);
    return ____0;
};