From 75c67fd1d19b4ab2dee1e94777936dd3fbbe287a Mon Sep 17 00:00:00 2001 From: coderaiser Date: Mon, 4 Mar 2013 07:03:26 -0500 Subject: [PATCH] added SSL suport --- ChangeLog | 6 ++++++ cloudcmd.js | 12 ++++++++++-- json/config.json | 1 + lib/client.js | 13 +++++++++++++ lib/client/menu.js | 22 +++++++++++----------- lib/client/storage/_filepicker.js | 28 +++++++++++++++++++++++++++- lib/server.js | 8 +++++++- lib/server/main.js | 1 + ssl/certificate.pem | 17 +++++++++++++++++ ssl/privatekey.pem | 15 +++++++++++++++ 10 files changed, 108 insertions(+), 15 deletions(-) create mode 100644 ssl/certificate.pem create mode 100644 ssl/privatekey.pem diff --git a/ChangeLog b/ChangeLog index eb160aad..ce85f937 100644 --- a/ChangeLog +++ b/ChangeLog @@ -8,6 +8,12 @@ * Added filepicker. +* Added ability to load files to cloud +and get them out to file system. + +* Added SSL suport. + + 2012.03.01, Version 0.1.9 * Changed the way of getting github application id diff --git a/cloudcmd.js b/cloudcmd.js index 37ce4d7d..8a4df337 100644 --- a/cloudcmd.js +++ b/cloudcmd.js @@ -175,12 +175,20 @@ }, 1000); }); - server.start({ + var lParams = { appcache : appCacheProcessing, minimize : minimize, rest : rest, route : route - }); + }; + + if(Config.ssl) + lParams.ssl = { + key : fs.readFileSync(__dirname + '/privatekey.pem'), + cert : fs.readFileSync(__dirname + '/certificate.pem') + }; + + server.start(lParams); } function readConfig(pCallBack){ diff --git a/json/config.json b/json/config.json index 1a9077d5..60b68ddd 100644 --- a/json/config.json +++ b/json/config.json @@ -14,5 +14,6 @@ "socket" : true, "port" : 80, "ip" : null, + "ssl" : false, "rest" : true } \ No newline at end of file diff --git a/lib/client.js b/lib/client.js index dbc57c3d..ccfb3cb7 100644 --- a/lib/client.js +++ b/lib/client.js @@ -399,6 +399,19 @@ CloudCmd.getModules = function(pCallBack){ }); }; +CloudCmd.execFromModule = function(pModuleName, pFuncName, pParams){ + var lObject = CloudCmd[pModuleName]; + Util.ifExec('init' in lObject, + function(){ + var lObj = CloudCmd[pModuleName]; + Util.exec( lObj[pFuncName], pParams); + }, + + function(pCallBack){ + Util.exec(lObject, pCallBack); + }); +}; + /* функция меняет ссыки на ajax-овые */ CloudCmd._changeLinks = function(pPanelID){ diff --git a/lib/client/menu.js b/lib/client/menu.js index 6d8402b6..b622a5e1 100644 --- a/lib/client/menu.js +++ b/lib/client/menu.js @@ -46,6 +46,7 @@ var CloudCommander, Util, DOM, CloudFunc, $; }); } + /** * function get menu item object for Upload To */ @@ -62,16 +63,7 @@ var CloudCommander, Util, DOM, CloudFunc, $; else if( Util.isString(pObjectName) ){ lObj = function(key, opt){ DOM.getCurrentData(function(pParams){ - var lObject = CloudCmd[pObjectName]; - - Util.ifExec('init' in lObject, - function(){ - CloudCmd[pObjectName].uploadFile(pParams); - }, - - function(pCallBack){ - Util.exec(lObject, pCallBack); - }); + CloudCmd.execFromModule(pObjectName, 'uploadFile', pParams); }); Util.log('Uploading to ' + pObjectName+ '...'); @@ -179,7 +171,15 @@ var CloudCommander, Util, DOM, CloudFunc, $; Util.log('New->File'); }, - 'Dir' : DOM.promptNewFolder + 'Dir' : DOM.promptNewFolder, + + 'From cloud...' : function(){ + CloudCmd.execFromModule('FilePicker', 'saveFile', function(pName, pData){ + var lPath = DOM.getCurrentDirPath() + pName; + + DOM.RESTfull.save(lPath, pData, CloudCmd.refresh); + }); + } }; lRet = { diff --git a/lib/client/storage/_filepicker.js b/lib/client/storage/_filepicker.js index bffa3e94..d90149f9 100644 --- a/lib/client/storage/_filepicker.js +++ b/lib/client/storage/_filepicker.js @@ -13,7 +13,20 @@ var CloudCommander, Util, DOM, $, filepicker; }; - this.uploadFile = function(pCallBack){ + this.uploadFile = function(pParams, pCallBack){ + var lContent = pParams.data, + lName = pParams.name; + + filepicker.store(lContent, {filename: lName}, + function(new_fpfile){ + console.log(JSON.stringify(new_fpfile)); + filepicker.exportFile( + 'https://drpyjw32lhcoa.cloudfront.net/0d6afe9/img/success.png', + function(FPFile){ + console.log(FPFile.url); + }); + } + ); filepicker.pick(function(FPFile){ console.log(FPFile.url); @@ -21,6 +34,19 @@ var CloudCommander, Util, DOM, $, filepicker; }); }; + this.saveFile = function(pCallBack){ + filepicker.pick(function(FPFile){ + console.log(FPFile); + + DOM.ajax({ + url : FPFile.url, + success : function(pData){ + Util.exec(pCallBack, FPFile.filename, pData); + } + }); + }); + }; + function load(pCallBack){ console.time('filepicker load'); var lHTTP = "https:"===document.location.protocol? "https:" : "http:"; diff --git a/lib/server.js b/lib/server.js index 313f31c6..2850c698 100644 --- a/lib/server.js +++ b/lib/server.js @@ -24,6 +24,7 @@ Socket = main.socket, http = main.http, + https = main.https, Util = main.util, Server, Rest, Route, Minimize, Port, IP; @@ -62,6 +63,8 @@ Route = pProcessing.route; Minimize = pProcessing.minimize; + var lSSL = pProcessing.ssl; + init(pProcessing.appcache); Port = process.env.PORT || /* c9 */ @@ -76,7 +79,10 @@ /* server mode or testing mode */ if (lConfig.server) { var lError = Util.tryCatchLog(function(){ - Server = http.createServer( controller ); + if(!lSSL) + Server = http.createServer( controller ); + else + Server = https.createServer( lSSL, controller ); Server.listen(Port, IP); var lListen; diff --git a/lib/server/main.js b/lib/server/main.js index 246ae04d..fdb96a56 100644 --- a/lib/server/main.js +++ b/lib/server/main.js @@ -189,6 +189,7 @@ lRet = { + 'Access-Control-Allow-Origin': '*', 'Content-Type': lType + lContentEncoding, 'last-modified': new Date().toString(), 'Vary': 'Accept-Encoding' diff --git a/ssl/certificate.pem b/ssl/certificate.pem new file mode 100644 index 00000000..89b4774e --- /dev/null +++ b/ssl/certificate.pem @@ -0,0 +1,17 @@ +-----BEGIN CERTIFICATE----- +MIICtzCCAiACCQCCiuC5c+uyqzANBgkqhkiG9w0BAQUFADCBnzELMAkGA1UEBhMC +WFgxWzBZBgNVBAgMUm9wZW5zc2wgeDUwOSAtcmVxIC1pbiBjZXJ0cmVxdWVzdC5j +c3IgLXNpZ25rZXkgcHJpdmF0ZWtleS5wZW0gLW91dCBjZXJ0aWZpY2F0ZS5wZW0x +FTATBgNVBAcMDERlZmF1bHQgQ2l0eTEcMBoGA1UECgwTRGVmYXVsdCBDb21wYW55 +IEx0ZDAeFw0xMzAzMDQxMTA1NDdaFw0xMzA0MDMxMTA1NDdaMIGfMQswCQYDVQQG +EwJYWDFbMFkGA1UECAxSb3BlbnNzbCB4NTA5IC1yZXEgLWluIGNlcnRyZXF1ZXN0 +LmNzciAtc2lnbmtleSBwcml2YXRla2V5LnBlbSAtb3V0IGNlcnRpZmljYXRlLnBl +bTEVMBMGA1UEBwwMRGVmYXVsdCBDaXR5MRwwGgYDVQQKDBNEZWZhdWx0IENvbXBh +bnkgTHRkMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCtM0N5vaWCtx8Wp5IN +8VW62Hm2RSxIZougZ9qQbm8xLNNDZok8qGoNXZguNYSazuB3O0JcVUwI81OeMVB+ +j/uAIIXJK/t4npmR8Cak2MjquShy2dyC6DW42ikwXeRU26vOxH6fzfaOrDahNVwD +hPsXAqdgpsjRWvr17qW77ycWAwIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAJxlSiFF ++f8KJSootodifS0KNTUWKZl7Ajh+unpfRpevZFHhSMjK5xAERGGylvZy+b2GYjXq +J61jIITSlo4r43jOafmpqsbEOE85Ctm5Fv+7jnzNT6C8wFcc5L4JLuFREP2oCtTZ +oTYTEFxW0NzIiQChSn9SB4RKfn85OUWzNyKE +-----END CERTIFICATE----- diff --git a/ssl/privatekey.pem b/ssl/privatekey.pem new file mode 100644 index 00000000..d4124307 --- /dev/null +++ b/ssl/privatekey.pem @@ -0,0 +1,15 @@ +-----BEGIN RSA PRIVATE KEY----- +MIICXQIBAAKBgQCtM0N5vaWCtx8Wp5IN8VW62Hm2RSxIZougZ9qQbm8xLNNDZok8 +qGoNXZguNYSazuB3O0JcVUwI81OeMVB+j/uAIIXJK/t4npmR8Cak2MjquShy2dyC +6DW42ikwXeRU26vOxH6fzfaOrDahNVwDhPsXAqdgpsjRWvr17qW77ycWAwIDAQAB +AoGBAJGOhIV6WO9awDjEyR0Ildi59se0qHuMGonK3ccF2FKGbmG1eV5N1xq2bp9f +ALstYz0wwxtf38+h1sMahKBolp38Pc11FDIwaH50jxd3fIDFes6xrO1urgmVn2jF +rCQglumltLtriYjlj2IgjIY1bI/11qKED0zTT8AFyrnB3jYBAkEA1f2/5X04+YC9 +2EPtzxFkVHyTp4wV2UTb0hNAXGjppI95WNjaHO6wYwFEea2K85TAZR1epQQGCxks +mL0oAKtZAwJBAM8zintppbL2q7JryRfIMQ9bzJ7odUvoMY7H/iPdMiStJsiqvrtu +6c2pi8pJi2p/KpeKVODR0+wI6E6+DhfcPwECQQCDcnCrBmW2FZgIPYnZ1WQc5b1J +gSp2oO6qt3qkiSlkFWHD6sjoVtJwrnmiiLC++VPJiOX3VWZk8NzNIfxtlNODAkAU +KVa7RX9rF5eDZ/uMRd2IOg2CFOp89V4FH665/KcJbJPOiNbAVD2J1oqUp21acn9J +eZtiuOgfGorIRrQGXFcBAkBEyev6ZY28qMhinLAP2n/YXRC3IuOy/amyK5OArRYx +pcI3E2qLpARicb6YuWUAslcUb5ZohfP60DlDa0BhcYiG +-----END RSA PRIVATE KEY-----