improve https support on Windows

This commit is contained in:
Otto Mao
2015-03-30 17:39:23 +08:00
parent 68478cd162
commit d807c805dc
4 changed files with 53 additions and 6 deletions

View File

@@ -9,16 +9,16 @@ var exec = require('child_process').exec,
logUtil = require("./log"),
asyncTask = require("async-task-mgr");
//TODO : unstable in windows
var certDir = path.join(util.getUserHome(),"/.anyproxy_certs/"),
var isWin = /^win/.test(process.platform);
certDir = path.join(util.getUserHome(),"/.anyproxy_certs/"),
cmdDir = path.join(__dirname,"..","./cert/"),
cmd_genRoot = path.join(cmdDir,"./gen-rootCA"),
cmd_genCert = path.join(cmdDir,"./gen-cer"),
cmd_genRoot = isWin ? path.join(cmdDir,"./gen-rootCA.cmd") : path.join(cmdDir,"./gen-rootCA"),
cmd_genCert = isWin ? path.join(cmdDir,"./gen-cer.cmd") : path.join(cmdDir,"./gen-cer"),
createCertTaskMgr = new asyncTask();
if(!fs.existsSync(certDir)){
try{
fs.mkdirSync(certDir,0777); //may fail in windows
fs.mkdirSync(certDir,0777);
}catch(e){
logUtil.printLog("===========", logUtil.T_ERR);
logUtil.printLog("failed to create cert dir ,please create one by yourself - " + certDir, logUtil.T_ERR);
@@ -70,9 +70,14 @@ function createCert(hostname,callback){
}
function clearCerts(cb){
exec("rm *.key *.csr *.crt",{cwd : certDir},cb);
if(isWin){
exec("del * /q",{cwd : certDir},cb);
}else{
exec("rm *.key *.csr *.crt",{cwd : certDir},cb);
}
}
function isRootCAFileExists(){
var crtFile = path.join(certDir,"rootCA.crt"),
keyFile = path.join(certDir,"rootCA.key");
@@ -119,7 +124,9 @@ function generateRootCA(){
logUtil.printLog(color.green("temp certs cleared"));
var spawnSteam = spawn(cmd_genRoot,['.'],{cwd:certDir,stdio: 'inherit'});
spawnSteam.on('close', function (code) {
if(code == 0){
logUtil.printLog(color.green("rootCA generated"));
logUtil.printLog(color.green(color.bold("please trust the rootCA.crt in " + certDir)));