diff --git a/ChangeLog b/ChangeLog index e61e47e9..6b679ec2 100644 --- a/ChangeLog +++ b/ChangeLog @@ -41,6 +41,8 @@ writed root directory. * Changed the way file table building. From now templating used. +* Changed sync reading of certs to async. + 2012.03.01, Version 0.1.9 diff --git a/cloudcmd.js b/cloudcmd.js index 33fa7ae4..722ba0b8 100644 --- a/cloudcmd.js +++ b/cloudcmd.js @@ -28,7 +28,7 @@ /* reinit main dir os if we on * Win32 should be backslashes */ DIR = main.DIR; - + readConfig(init); @@ -181,14 +181,27 @@ route : route }; - if(Config.ssl) - lParams.ssl = { - ca : fs.readFileSync(DIR + 'ssl/sub.class1.server.ca.pem'), - key : fs.readFileSync(DIR + 'ssl/ssl.key'), - cert : fs.readFileSync(DIR + 'ssl/ssl.crt') - }; - - server.start(lParams); + if(Config.ssl){ + var CA = DIR + 'ssl/sub.class1.server.ca.pem', + KEY = DIR + 'ssl/ssl.key', + CERT = DIR + 'ssl/ssl.crt'; + + readFiles([ CA, KEY, CERT ], function(pErrors, pFiles){ + if(pErrors) + Util.log(pErrors); + else{ + lParams.ssl = { + ca : pFiles[CA], + key : pFiles[KEY], + cert : pFiles[CERT] + }; + + server.start(lParams); + } + }); + } + else + server.start(lParams); } else Util.log('read error: config.json'); @@ -308,6 +321,46 @@ } } + 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(){ diff --git a/lib/client/dom.js b/lib/client/dom.js index 063b5b1a..9f112aab 100644 --- a/lib/client/dom.js +++ b/lib/client/dom.js @@ -536,12 +536,12 @@ var CloudCommander, Util, */ DOM.anyLoadInParallel = function(pParams_a, pFunc){ var lRet = this, - done = [], + lDone = [], - doneFunc = function (pCallBack){ + lDoneFunc = function (pCallBack){ Util.exec(pCallBack); - if( !done.pop() ) + if( !lDone.pop() ) Util.exec(pFunc); }; @@ -553,13 +553,13 @@ var CloudCommander, Util, var lParam = pParams_a.pop(); if(lParam){ - done.push(i); + lDone.push(i); if(Util.isString(lParam) ) lParam = { src : lParam }; var lFunc = lParam.func; - lParam.func = Util.retExec(doneFunc, lFunc); + lParam.func = Util.retExec(lDoneFunc, lFunc); DOM.anyload(lParam); } diff --git a/lib/cloudfunc.js b/lib/cloudfunc.js index 2552bd08..2b3d786d 100644 --- a/lib/cloudfunc.js +++ b/lib/cloudfunc.js @@ -372,45 +372,57 @@ var CloudFunc, exports, Util; } for(var i = 1, n = files.length; i < n; i++){ - var lFile = files[i]; + var lFile = files[i], + lOwner = !lFile.uid ? 'root' : lFile.uid, + lMode = CloudFunc.getSymbolicPermissions(lFile.mode), + lType, lSize; + + if(lFile.size === 'dir'){ + lType = 'directory', + lSize = '<dir>'; + }else{ + lType = 'text-file'; + lSize = CloudFunc.getShortSize( lFile.size ); + } - lFileTable += '
  • '; - lFileTable += ''; - lFileTable += ''; - lFileTable += '' + - '' + lFile.name + - "" + - ''; - /* если папка - не выводим размер */ - lFileTable += '' + - (lFile.size === 'dir' ? - '<dir>' - /* если это файл - получаем - * короткий размер - */ - : CloudFunc.getShortSize( - lFile.size)); - lFileTable += '' + - '' + - (!lFile.uid ? 'root' : lFile.uid) + - '' + - '' + - CloudFunc.getSymbolicPermissions(lFile.mode)+ + if(pTemplate) + lFileTable += Util.render(pTemplate,{ + type : lType, + link : FS + lPath + lFile.name, + name : lFile.name, + size : '<dir>', + owner : lOwner, + mode : lMode + }); + else + { + lFileTable += '
  • '; + lFileTable += '' + + '' + + '' + + '' + lFile.name + + "" + ''; - lFileTable += '
  • '; + /* если папка - не выводим размер */ + lFileTable += '' + lSize + + '' + + '' + lOwner + + '' + + '' + lMode + + ''; + lFileTable += ''; + } } return lFileTable; diff --git a/lib/util.js b/lib/util.js index 5996c598..cc03f6fc 100644 --- a/lib/util.js +++ b/lib/util.js @@ -31,13 +31,13 @@ Util = exports || {}; * @param pParams */ Util.call = function(pFunc, pParams){ - var lFunc = function(pError, pData){ + function lFunc(pError, pData){ Util.exec(pFunc, { error : pError, data : pData, params : pParams }); - }; + } return lFunc; };