(function(){ 'use strict'; var DIR = __dirname + '/', main = require(DIR + 'lib/server/main'), LIBDIR = main.LIBDIR, SRVDIR = main.SRVDIR, CLIENTDIR = LIBDIR + 'client', HTMLDIR = main.HTMLDIR, JSONDIR = main.JSONDIR, path = main.path, fs = main.fs, CloudFunc = main.cloudfunc, AppCache = main.appcache, Util = main.util, update = main.update, server = main.librequire('server'), Minify = main.minify, Config = main.config, INDEX = HTMLDIR + 'index.html', CONFIG_PATH = JSONDIR + 'config.json', 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(pData){ var lReplace_s, lData = pData.data, lAdditional = pData.additional; /* * если выбрана опция минимизировать скрипты * меняем в index.html обычные css на * минифицированый */ if(Minify.allowed.css){ var lPath = '/' + Util.removeStr(Minify.MinFolder, DIR); lReplace_s = ''; lData = Util.removeStr(lData, lReplace_s) .replace('/css/style.css', lPath + 'all.min.css'); } lData = Util.render(lData, { title : CloudFunc.getTitle(), fm : lAdditional }); if(!Config.appcache) lData = Util.removeStr(lData, ' manifest="/cloudcmd.appcache"'); if(!Config.show_keys_panel){ var lKeysPanel = '
' + p.name); pParams.name = main.HTMLDIR + p.name + '.html'; lRet = main.sendFile( pParams ); } else if( Util.isContainStrAtBegin(p.name, FS) || Util.strCmp( p.name, '/') ){ if( Util.isContainStrAtBegin(p.name, FS + 'no-js/') ){ var lURL = Util.removeStr(pParams.name, 'no-js/'); return main.redirect(pParams, lURL); } lRet = sendCommanderContent(p); } /* termporary redirect for old urls */ else lRet = false; } return lRet; } function sendCommanderContent(pParams){ var lRet = main.checkParams(pParams); if(lRet){ var p = pParams; p.name = Util.removeStrOneTime(p.name, CloudFunc.FS) || main.SLASH; fs.stat(p.name, function(pError, pStat){ if(!pError) if( pStat.isDirectory() ) processCommanderContent(pParams); else main.sendFile(p); else main.sendError(pParams, pError); }); } return lRet; } function processCommanderContent(pParams){ var lRet = main.checkParams(pParams); if(lRet){ var p = pParams; main.commander.getDirContent(p.name, function(pError, pJSON){ if(!pError){ var lQuery = main.getQuery(p.request); if( Util.isContainStr(lQuery, 'json') ){ p.data = Util.stringifyJSON(pJSON); p.name +='.json'; main.sendResponse(p); } else if(!lQuery){ /* get back html*/ p.name = Minify.allowed.html ? Minify.getName(INDEX) : INDEX; fs.readFile(p.name, function(pError, pData){ if(!pError){ var lPanel = CloudFunc.buildFromJSON(pJSON), lList = '' + ''; main.sendResponse(p, indexProcessing({ additional : lList, data : pData.toString(), })); } else main.sendError(pParams, pError); }); } } else main.sendError(pParams, pError); }); } } function readFiles(pFiles, pCallBack){ var lDone = [], lFiles, lErrors, lReadedFiles = {}, lDoneFunc = function (pParams){ var lRet = Util.checkObj(pParams, ['error', 'data', 'params']); if(lRet){ lDone.pop(); var p = pParams, lName = p.params; if(p.error){ if(!lErrors) lErrors = {}; lErrors[lName] = p.error; } else lReadedFiles[lName] = p.data; if( !lDone.length ) Util.exec(pCallBack, lErrors, lReadedFiles); } }; if( Util.isArray(pFiles) ) lFiles = pFiles; else lFiles = [pFiles]; for(var i = 0, n = lFiles.length; i < n; i++){ var lName = lFiles.pop(); lDone.push(lName); fs.readFile(lName, Util.call( lDoneFunc, lName )); } } /* function sets stdout to file log.txt */ function writeLogsToFile(){ var stdo = fs.createWriteStream('./log.txt'); process.stdout.write = (function(write) { return function(string, encoding, fd) { stdo.write(string); }; })(process.stdout.write); } })();