(function() { 'use strict'; var DIR = __dirname + '/', main = require(DIR + 'lib/server/main'), HTMLDIR = main.HTMLDIR, JSONDIR = main.JSONDIR, path = main.path, fs = main.fs, files = main.files, CloudFunc = main.cloudfunc, AppCache = main.appcache, Util = main.util, update = main.update, dir = main.dir, server = main.librequire('server'), Minify = main.minify, Config = main.config, CONFIG_PATH = JSONDIR + 'config.json', KEY = DIR + 'ssl/ssl.key', CERT = DIR + 'ssl/ssl.crt', HTML_FS_DIR = HTMLDIR + 'fs/', INDEX_PATH = HTML_FS_DIR + 'index.html', FILE_TMPL = HTML_FS_DIR + 'file.html', PANEL_TMPL = HTML_FS_DIR + 'panel.html', PATH_TMPL = HTML_FS_DIR + 'path.html', LINK_TMPL = HTML_FS_DIR + 'link.html', FileTemplate, PanelTemplate, PathTemplate, LinkTemplate, FS = CloudFunc.FS; /* reinit main dir os if we on Win32 should be backslashes */ DIR = main.DIR; readConfig(init); /** * additional processing of index file */ function indexProcessing(options) { var keysPanel, left, right, LEFT = CloudFunc.PANEL_LEFT, RIGHT = CloudFunc.PANEL_RIGHT, data = options.data, panel = options.panel; if (!Config.appCache) data = Util.rmStr(data, [ /* min */ ' manifest=/cloudcmd.appcache', /* normal */ ' manifest="/cloudcmd.appcache"' ]); if (!Config.showKeysPanel) { keysPanel = '
' + name); p.name = main.HTMLDIR + name + '.html'; main.sendFile(p); } else if (isFS) { name = Util.rmStrOnce(name, CloudFunc.FS) || main.SLASH; getContent(name, function(error, data, isFile) { var json, NOT_LOG = true, query = main.getQuery(request), isJSON = Util.isContainStr(query, 'json'); if (error) main.sendError(p, error); else if (isFile) { p.name = name; main.sendFile(p); } else if (isJSON) { p.name +='.json'; p.query = query; json = Util.stringifyJSON(data); main.sendResponse(p, json, NOT_LOG); } else readIndex(data, function(error, data) { p.name = INDEX_PATH; if (error) main.sendError(error); else main.sendResponse(p, data, NOT_LOG); }); }); } } } function getContent(name, callback) { dir.isDir(name, function(error, isDir) { var getDirContent = main.commander.getDirContent, func = Util.retExec(callback); if (!error && isDir) getDirContent(name, callback); else func(error, null, !isDir); }); } function readIndex(json, callback) { Util.ifExec(!Minify, function(params) { var name = params && params.name; fs.readFile(name || INDEX_PATH, 'utf8', function(error, template) { var panel, data; if (!error) { panel = CloudFunc.buildFromJSON(json, FileTemplate, PathTemplate, LinkTemplate), data = indexProcessing({ panel : panel, data : template, }); } Util.exec(callback, error, data); }); }, function(callback) { Minify.optimize(INDEX_PATH, { callback : callback, returnName : true }); }); } /* function sets stdout to file log.txt */ function writeLogsToFile() { var stdout = process.stdout, writeFile = fs.createWriteStream('log.txt'), write = writeFile.write.bind(writeFile); stdout.write = write; } })();