mirror of
https://github.com/coderaiser/cloudcmd.git
synced 2026-01-23 10:45:47 +00:00
added params to closure for minifing result code
This commit is contained in:
parent
c24a32c5f5
commit
660af5f50a
2 changed files with 933 additions and 938 deletions
1418
lib/client.js
1418
lib/client.js
File diff suppressed because it is too large
Load diff
|
|
@ -1,229 +1,224 @@
|
|||
(function(){
|
||||
'strict mode';
|
||||
|
||||
/* Global var accessible from any loaded module */
|
||||
global.cloudcmd = {};
|
||||
|
||||
var DIR,
|
||||
LIBDIR,
|
||||
SRVDIR,
|
||||
JSONDIR,
|
||||
Util,
|
||||
|
||||
SLASH,
|
||||
ISWIN32,
|
||||
ext,
|
||||
path,
|
||||
fs,
|
||||
zlib,
|
||||
|
||||
OK = 200,
|
||||
FILE_NOT_FOUND = 404;
|
||||
|
||||
/* Native Modules*/
|
||||
exports.crypto = require('crypto'),
|
||||
exports.child_process = require('child_process'),
|
||||
exports.fs = fs = require('fs'),
|
||||
exports.http = require('http'),
|
||||
exports.https = require('https'),
|
||||
exports.path = path = require('path'),
|
||||
exports.url = require('url'),
|
||||
exports.querystring = require('querystring'),
|
||||
|
||||
/* Constants */
|
||||
/* current dir + 2 levels up */
|
||||
exports.WIN32 = ISWIN32 = isWin32();
|
||||
exports.SLASH = SLASH = ISWIN32 ? '\\' : '/',
|
||||
|
||||
exports.SRVDIR = SRVDIR = __dirname + SLASH,
|
||||
exports.LIBDIR = LIBDIR = path.normalize(SRVDIR + '../'),
|
||||
exports.DIR = DIR = path.normalize(LIBDIR + '../'),
|
||||
exports.HTMLDIR = DIR + 'html/',
|
||||
exports.JSONDIR = JSONDIR = DIR + 'json/',
|
||||
|
||||
/* Functions */
|
||||
exports.require = mrequire,
|
||||
exports.librequire = librequire,
|
||||
exports.srvrequire = srvrequire,
|
||||
exports.rootrequire = rootrequire,
|
||||
exports.generateHeaders = generateHeaders,
|
||||
exports.sendFile = sendFile,
|
||||
|
||||
/* compitability with old versions of node */
|
||||
exports.fs.exists = exports.fs.exists || exports.path.exists;
|
||||
|
||||
/* Needed Modules */
|
||||
exports.util = Util = require(LIBDIR + 'util'),
|
||||
|
||||
exports.zlib = zlib = mrequire('zlib'),
|
||||
|
||||
/* Main Information */
|
||||
exports.config = jsonrequire('config');
|
||||
exports.modules = jsonrequire('modules');
|
||||
exports.ext = ext = jsonrequire('ext');
|
||||
exports.mainpackage = rootrequire('package');
|
||||
|
||||
|
||||
/*
|
||||
* Any of loaded below modules could work with global var so
|
||||
* it should be initialized first. Becouse of almost any of
|
||||
* moudles do not depends on each other all needed information
|
||||
* for all modules is initialized hear.
|
||||
*/
|
||||
global.cloudcmd.main = exports;
|
||||
|
||||
exports.VOLUMES = getVolumes(),
|
||||
|
||||
/* Additional Modules */
|
||||
exports.socket = srvrequire('socket'),
|
||||
exports.auth = srvrequire('auth').auth,
|
||||
exports.appcache = srvrequire('appcache'),
|
||||
exports.cache = srvrequire('cache').Cache,
|
||||
exports.cloudfunc = librequire('cloudfunc'),
|
||||
exports.rest = srvrequire('rest').api,
|
||||
exports.update = srvrequire('update'),
|
||||
exports.ischanged = srvrequire('ischanged');
|
||||
exports.commander = srvrequire('commander');
|
||||
exports.minify = srvrequire('minify').Minify;
|
||||
/*
|
||||
* second initializing after all modules load, so global var is
|
||||
* totally filled of all information that should know all modules
|
||||
*/
|
||||
global.cloudcmd.main = exports;
|
||||
/**
|
||||
* function do safe require of needed module
|
||||
* @param {Strin} pSrc
|
||||
*/
|
||||
function mrequire(pSrc){
|
||||
var lModule,
|
||||
lError = Util.tryCatchLog(function(){
|
||||
lModule = require(pSrc);
|
||||
});
|
||||
|
||||
if(lError)
|
||||
console.log(lError);
|
||||
|
||||
return lModule;
|
||||
}
|
||||
|
||||
function rootrequire(pSrc){ return mrequire(DIR + pSrc); }
|
||||
|
||||
function librequire(pSrc){ return mrequire(LIBDIR + pSrc); }
|
||||
|
||||
function srvrequire(pSrc){ return mrequire(SRVDIR + pSrc); }
|
||||
|
||||
function jsonrequire(pSrc){ return mrequire(JSONDIR + pSrc);}
|
||||
|
||||
/**
|
||||
* function check is current platform is win32
|
||||
*/
|
||||
function isWin32(){ return process.platform === 'win32'; }
|
||||
|
||||
/**
|
||||
* get volumes if win32 or get nothing if nix
|
||||
*/
|
||||
function getVolumes(){
|
||||
var lRet = ISWIN32 ? [] : '/';
|
||||
|
||||
if(ISWIN32)
|
||||
srvrequire('win').getVolumes(function(pVolumes){
|
||||
console.log(pVolumes);
|
||||
exports.VOLUMES = pVolumes;
|
||||
});
|
||||
|
||||
return lRet;
|
||||
}
|
||||
|
||||
/**
|
||||
* Функция создаёт заголовки файлов
|
||||
* в зависимости от расширения файла
|
||||
* перед отправкой их клиенту
|
||||
* @param pName - имя файла
|
||||
* @param pGzip - данные сжаты gzip'ом
|
||||
*/
|
||||
function generateHeaders(pName, pGzip, pQuery){
|
||||
var lRet,
|
||||
lType = '',
|
||||
lContentEncoding = '',
|
||||
lCacheControl = 0,
|
||||
|
||||
lExt = Util.getExtension(pName);
|
||||
|
||||
if( Util.strCmp(lExt, '.appcache') )
|
||||
lCacheControl = 1;
|
||||
|
||||
lType = ext[lExt] || 'text/plain';
|
||||
|
||||
if( !Util.isContainStr(lType, 'img') )
|
||||
lContentEncoding = '; charset=UTF-8';
|
||||
|
||||
if(Util.strCmp(pQuery, 'download') )
|
||||
lType = 'application/octet-stream';
|
||||
|
||||
|
||||
if(!lCacheControl)
|
||||
lCacheControl = 31337 * 21;
|
||||
|
||||
lRet = {
|
||||
/* if type of file any, but img -
|
||||
* then we shoud specify charset
|
||||
*/
|
||||
'Content-Type': lType + lContentEncoding,
|
||||
'cache-control': 'max-age=' + lCacheControl,
|
||||
'last-modified': new Date().toString(),
|
||||
/* https://developers.google.com/speed/docs/best-practices
|
||||
/caching?hl=ru#LeverageProxyCaching */
|
||||
'Vary': 'Accept-Encoding'
|
||||
};
|
||||
|
||||
if(pGzip)
|
||||
lRet['content-encoding'] = 'gzip';
|
||||
|
||||
return lRet;
|
||||
}
|
||||
|
||||
/**
|
||||
* send file to client thru pipe
|
||||
* and gzip it if client support
|
||||
*
|
||||
* @param pName - имя файла
|
||||
* @param pGzip - данные сжаты gzip'ом
|
||||
*/
|
||||
function sendFile(pParams){
|
||||
var lRet,
|
||||
lName, lReq, lRes;
|
||||
|
||||
if(pParams){
|
||||
lName = pParams.name,
|
||||
lReq = pParams.request,
|
||||
lRes = pParams.response;
|
||||
}
|
||||
|
||||
if(lName && lRes && lReq){
|
||||
var lEnc = lReq.headers['accept-encoding'] || '',
|
||||
lGzip = lEnc.match(/\bgzip\b/),
|
||||
|
||||
lReadStream = fs.createReadStream(lName, {
|
||||
'bufferSize': 4 * 1024
|
||||
});
|
||||
|
||||
lReadStream.on('error', function(pError){
|
||||
lRes.writeHead(FILE_NOT_FOUND, 'OK');
|
||||
lRes.end(String(pError));
|
||||
});
|
||||
|
||||
lRes.writeHead(OK, generateHeaders(lName, lGzip) );
|
||||
|
||||
if (lGzip)
|
||||
lReadStream = lReadStream.pipe( zlib.createGzip() );
|
||||
|
||||
lReadStream.pipe(lRes);
|
||||
|
||||
lRet = true;
|
||||
}
|
||||
|
||||
return lRet;
|
||||
}
|
||||
|
||||
|
||||
})();
|
||||
(function(){
|
||||
'strict mode';
|
||||
|
||||
/* Global var accessible from any loaded module */
|
||||
global.cloudcmd = {};
|
||||
|
||||
var DIR, LIBDIR, SRVDIR, JSONDIR,
|
||||
Util,
|
||||
|
||||
SLASH,
|
||||
ISWIN32,
|
||||
ext,
|
||||
path, fs, zlib,
|
||||
|
||||
OK = 200,
|
||||
FILE_NOT_FOUND = 404;
|
||||
|
||||
/* Native Modules*/
|
||||
exports.crypto = require('crypto'),
|
||||
exports.child_process = require('child_process'),
|
||||
exports.fs = fs = require('fs'),
|
||||
exports.http = require('http'),
|
||||
exports.https = require('https'),
|
||||
exports.path = path = require('path'),
|
||||
exports.url = require('url'),
|
||||
exports.querystring = require('querystring'),
|
||||
|
||||
/* Constants */
|
||||
/* current dir + 2 levels up */
|
||||
exports.WIN32 = ISWIN32 = isWin32();
|
||||
exports.SLASH = SLASH = ISWIN32 ? '\\' : '/',
|
||||
|
||||
exports.SRVDIR = SRVDIR = __dirname + SLASH,
|
||||
exports.LIBDIR = LIBDIR = path.normalize(SRVDIR + '../'),
|
||||
exports.DIR = DIR = path.normalize(LIBDIR + '../'),
|
||||
exports.HTMLDIR = DIR + 'html' + SLASH,
|
||||
exports.JSONDIR = JSONDIR = DIR + 'json' + SLASH,
|
||||
|
||||
/* Functions */
|
||||
exports.require = mrequire,
|
||||
exports.librequire = librequire,
|
||||
exports.srvrequire = srvrequire,
|
||||
exports.rootrequire = rootrequire,
|
||||
exports.generateHeaders = generateHeaders,
|
||||
exports.sendFile = sendFile,
|
||||
|
||||
/* compitability with old versions of node */
|
||||
exports.fs.exists = exports.fs.exists || exports.path.exists;
|
||||
|
||||
/* Needed Modules */
|
||||
exports.util = Util = require(LIBDIR + 'util'),
|
||||
|
||||
exports.zlib = zlib = mrequire('zlib'),
|
||||
|
||||
/* Main Information */
|
||||
exports.config = jsonrequire('config');
|
||||
exports.modules = jsonrequire('modules');
|
||||
exports.ext = ext = jsonrequire('ext');
|
||||
exports.mainpackage = rootrequire('package');
|
||||
|
||||
|
||||
/*
|
||||
* Any of loaded below modules could work with global var so
|
||||
* it should be initialized first. Becouse of almost any of
|
||||
* moudles do not depends on each other all needed information
|
||||
* for all modules is initialized hear.
|
||||
*/
|
||||
global.cloudcmd.main = exports;
|
||||
|
||||
exports.VOLUMES = getVolumes(),
|
||||
|
||||
/* Additional Modules */
|
||||
exports.socket = srvrequire('socket'),
|
||||
exports.auth = srvrequire('auth').auth,
|
||||
exports.appcache = srvrequire('appcache'),
|
||||
exports.cache = srvrequire('cache').Cache,
|
||||
exports.cloudfunc = librequire('cloudfunc'),
|
||||
exports.rest = srvrequire('rest').api,
|
||||
exports.update = srvrequire('update'),
|
||||
exports.ischanged = srvrequire('ischanged');
|
||||
exports.commander = srvrequire('commander');
|
||||
exports.minify = srvrequire('minify').Minify;
|
||||
/*
|
||||
* second initializing after all modules load, so global var is
|
||||
* totally filled of all information that should know all modules
|
||||
*/
|
||||
global.cloudcmd.main = exports;
|
||||
/**
|
||||
* function do safe require of needed module
|
||||
* @param {Strin} pSrc
|
||||
*/
|
||||
function mrequire(pSrc){
|
||||
var lModule,
|
||||
lError = Util.tryCatchLog(function(){
|
||||
lModule = require(pSrc);
|
||||
});
|
||||
|
||||
if(lError)
|
||||
console.log(lError);
|
||||
|
||||
return lModule;
|
||||
}
|
||||
|
||||
function rootrequire(pSrc){ return mrequire(DIR + pSrc); }
|
||||
|
||||
function librequire(pSrc){ return mrequire(LIBDIR + pSrc); }
|
||||
|
||||
function srvrequire(pSrc){ return mrequire(SRVDIR + pSrc); }
|
||||
|
||||
function jsonrequire(pSrc){ return mrequire(JSONDIR + pSrc);}
|
||||
|
||||
/**
|
||||
* function check is current platform is win32
|
||||
*/
|
||||
function isWin32(){ return process.platform === 'win32'; }
|
||||
|
||||
/**
|
||||
* get volumes if win32 or get nothing if nix
|
||||
*/
|
||||
function getVolumes(){
|
||||
var lRet = ISWIN32 ? [] : '/';
|
||||
|
||||
if(ISWIN32)
|
||||
srvrequire('win').getVolumes(function(pVolumes){
|
||||
console.log(pVolumes);
|
||||
exports.VOLUMES = pVolumes;
|
||||
});
|
||||
|
||||
return lRet;
|
||||
}
|
||||
|
||||
/**
|
||||
* Функция создаёт заголовки файлов
|
||||
* в зависимости от расширения файла
|
||||
* перед отправкой их клиенту
|
||||
* @param pName - имя файла
|
||||
* @param pGzip - данные сжаты gzip'ом
|
||||
*/
|
||||
function generateHeaders(pName, pGzip, pQuery){
|
||||
var lRet,
|
||||
lType = '',
|
||||
lContentEncoding = '',
|
||||
lCacheControl = 0,
|
||||
|
||||
lExt = Util.getExtension(pName);
|
||||
|
||||
if( Util.strCmp(lExt, '.appcache') )
|
||||
lCacheControl = 1;
|
||||
|
||||
lType = ext[lExt] || 'text/plain';
|
||||
|
||||
if( !Util.isContainStr(lType, 'img') )
|
||||
lContentEncoding = '; charset=UTF-8';
|
||||
|
||||
if(Util.strCmp(pQuery, 'download') )
|
||||
lType = 'application/octet-stream';
|
||||
|
||||
|
||||
if(!lCacheControl)
|
||||
lCacheControl = 31337 * 21;
|
||||
|
||||
lRet = {
|
||||
/* if type of file any, but img -
|
||||
* then we shoud specify charset
|
||||
*/
|
||||
'Content-Type': lType + lContentEncoding,
|
||||
'cache-control': 'max-age=' + lCacheControl,
|
||||
'last-modified': new Date().toString(),
|
||||
/* https://developers.google.com/speed/docs/best-practices
|
||||
/caching?hl=ru#LeverageProxyCaching */
|
||||
'Vary': 'Accept-Encoding'
|
||||
};
|
||||
|
||||
if(pGzip)
|
||||
lRet['content-encoding'] = 'gzip';
|
||||
|
||||
return lRet;
|
||||
}
|
||||
|
||||
/**
|
||||
* send file to client thru pipe
|
||||
* and gzip it if client support
|
||||
*
|
||||
* @param pName - имя файла
|
||||
* @param pGzip - данные сжаты gzip'ом
|
||||
*/
|
||||
function sendFile(pParams){
|
||||
var lRet,
|
||||
lName, lReq, lRes;
|
||||
|
||||
if(pParams){
|
||||
lName = pParams.name,
|
||||
lReq = pParams.request,
|
||||
lRes = pParams.response;
|
||||
}
|
||||
|
||||
if(lName && lRes && lReq){
|
||||
var lEnc = lReq.headers['accept-encoding'] || '',
|
||||
lGzip = lEnc.match(/\bgzip\b/),
|
||||
|
||||
lReadStream = fs.createReadStream(lName, {
|
||||
'bufferSize': 4 * 1024
|
||||
});
|
||||
|
||||
lReadStream.on('error', function(pError){
|
||||
lRes.writeHead(FILE_NOT_FOUND, 'OK');
|
||||
lRes.end(String(pError));
|
||||
});
|
||||
|
||||
lRes.writeHead(OK, generateHeaders(lName, lGzip) );
|
||||
|
||||
if (lGzip)
|
||||
lReadStream = lReadStream.pipe( zlib.createGzip() );
|
||||
|
||||
lReadStream.pipe(lRes);
|
||||
|
||||
lRet = true;
|
||||
}
|
||||
|
||||
return lRet;
|
||||
}
|
||||
|
||||
|
||||
})();
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue