/**
 * Minified by jsDelivr using Terser v5.39.0.
 * Original file: /npm/dora-anyproxy@3.9.4/proxy.js
 *
 * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files
 */
try{global.util=require("./lib/util")}catch(e){}var http=require("http"),https=require("https"),fs=require("fs"),async=require("async"),url=require("url"),color=require("colorful"),certMgr=require("./lib/certMgr"),requestHandler=require("./lib/requestHandler"),Recorder=require("./lib/recorder"),logUtil=require("./lib/log"),util=require("./lib/util"),path=require("path"),events=require("events"),ip=require("ip"),ThrottleGroup=require("stream-throttle").ThrottleGroup,T_TYPE_HTTP=0,T_TYPE_HTTPS=1,DEFAULT_PORT=8001,DEFAULT_WEB_PORT=8002,DEFAULT_WEBSOCKET_PORT=8003,DEFAULT_CONFIG_PORT=8088,DEFAULT_HOST="localhost",DEFAULT_TYPE=T_TYPE_HTTP,default_rule=require("./lib/rule_default");function proxyServer(e){var r=this,t=/https/i.test((e=e||{}).type||DEFAULT_TYPE)?T_TYPE_HTTPS:T_TYPE_HTTP,o=e.port||DEFAULT_PORT,i=e.hostname||DEFAULT_HOST,l=e.rule||default_rule,n=(e.webPort,e.socketPort,e.webConfigPort,e.disableWebInterface,!!e.silent),u=!1!==e.generateRootCA,s=!!e.autoTrust;(this.cacheDirName="cache_"+Date.now(),n&&logUtil.setPrintStatus(!1),e.interceptHttps)&&(default_rule.setInterceptFlag(!0),Number(process.version.match(/^v(\d+\.\d+)/)[1])<.12&&logUtil.printLog(color.red("node >= v0.12 is required when trying to intercept HTTPS requests :("),logUtil.T_ERR));e.throttle&&(logUtil.printLog("throttle :"+e.throttle+"kb/s"),global._throttle=new ThrottleGroup({rate:1024*parseInt(e.throttle)})),requestHandler.setRules(l),r.httpProxyServer=null;var c={cacheDirName:r.cacheDirName};e.dbFile&&(c.filename=e.dbFile),global.recorder=new Recorder(c),async.series([function(e){t==T_TYPE_HTTPS?certMgr.getCertificate(i,(function(t,o,i){t?e(t):(r.httpProxyServer=https.createServer({key:o,cert:i},requestHandler.userRequestHandler),e(null))})):(r.httpProxyServer=http.createServer(requestHandler.userRequestHandler),e(null))},function(e){u&&!certMgr.isRootCAFileExists()?certMgr.generateRootCA(e):e(null)},function(e){if(!s)return logUtil.printLog(color.green(color.bold("please trust the rootCA.crt in "+certMgr.certDir))),void e(null);certMgr.isRootCATrusted((function(r){r?e(null):certMgr.trustRootCA((function(r){e(null)}))}))},function(e){r.httpProxyServer.on("connect",requestHandler.connectReqHandler),e(null)},function(e){r.httpProxyServer.listen(o),e(null)},function(e){"win32"===process.platform&&require("readline").createInterface({input:process.stdin,output:process.stdout}).on("SIGINT",(function(){process.emit("SIGINT")}));process.on("SIGINT",(function(){logUtil.printLog("\nAnyProxy is about to exit"),util.clearCacheDir(r.cacheDirName,(function(){process.exit()}))})),process.on("exit",(function(){process.exit()})),process.on("uncaughtException",(function(e){logUtil.printLog("Caught exception: "+(e.stack||e),logUtil.T_ERR),util.clearCacheDir(r.cacheDirName,(function(){process.exit()}))})),e(null)}],(function(e,o){r.emit("finish",e,{isHTTP:t===T_TYPE_HTTP})})),r.close=function(){r.httpProxyServer&&r.httpProxyServer.close(),logUtil.printLog("server closed :"+i+":"+o)}}require("util").inherits(proxyServer,require("events")),module.exports.proxyServer=proxyServer,module.exports.trustRootCA=certMgr.trustRootCA,module.exports.isRootCATrusted=certMgr.isRootCATrusted,module.exports.generateRootCA=certMgr.generateRootCA,module.exports.isRootCAFileExists=certMgr.isRootCAFileExists,module.exports.setRules=requestHandler.setRules;
//# sourceMappingURL=/sm/345ad790b20a77bd62f29149121ea788bda4d8766f9a781bcd0da04de50a087a.map