refactor: dns设置

pull/180/head
xiaojunnuo 2020-10-29 16:14:12 +08:00
parent 651a509069
commit 2be957968e
6 changed files with 106 additions and 53 deletions

View File

@ -6,5 +6,7 @@
"lerna": "^3.22.1" "lerna": "^3.22.1"
}, },
"dependencies": { "dependencies": {
"d2-crud-x": "^2.12.0",
"sqlite3": "^5.0.0"
} }
} }

View File

@ -1,6 +1,7 @@
const Shell = require('./shell') const Shell = require('./shell')
const lodash = require('lodash') const lodash = require('lodash')
const defConfig = require('./config/index.js') const defConfig = require('./config/index.js')
const proxyConfig = require('./lib/proxy/common/config')
let configTarget = lodash.cloneDeep(defConfig) let configTarget = lodash.cloneDeep(defConfig)
function _deleteDisabledItem (target, objKey) { function _deleteDisabledItem (target, objKey) {
const obj = lodash.get(target, objKey) const obj = lodash.get(target, objKey)
@ -55,6 +56,16 @@ const configApi = {
return !item.exists return !item.exists
}) })
if (list.length > 0) { if (list.length > 0) {
const context = {
ca_cert_path: proxyConfig.getDefaultCACertPath()
}
for (const item of noSetList) {
if (item.value.indexOf('${') >= 0) {
for (const key in context) {
item.value = item.value.replcace(new RegExp('${' + key + '}', 'g'), context[key])
}
}
}
const method = type === 'npm' ? Shell.setNpmEnv : Shell.setSystemEnv const method = type === 'npm' ? Shell.setNpmEnv : Shell.setSystemEnv
return method({ list: noSetList }) return method({ list: noSetList })
} }

View File

@ -10,73 +10,78 @@ module.exports = {
'/.*/.*/releases/download/', '/.*/.*/releases/download/',
'/.*/.*/archive/' '/.*/.*/archive/'
], ],
redirect: 'https://download.fastgit.org' redirect: 'download.fastgit.org'
}, },
{ {
regexp: [ regexp: [
'/.*/.*/raw/', '/.*/.*/raw/',
'/.*/.*/blame/' '/.*/.*/blame/'
], ],
redirect: 'https://hub.fastgit.org' redirect: 'hub.fastgit.org'
} }
], ],
// 'codeload.github.com': [ // 'codeload.github.com': [
// { // {
// regexp: '.*', // regexp: '.*',
// redirect:"https://download.fastgit.org" // redirect:"download.fastgit.org"
// } // }
// ], // ],
'raw.githubusercontent.com': [ 'raw.githubusercontent.com': [{ proxy: 'raw.fastgit.org' }],
{
proxy: 'https://raw.fastgit.org'
}
],
'github.githubassets.com': [ 'github.githubassets.com': [
{ {
proxy: 'https://assets.fastgit.org' proxy: 'assets.fastgit.org'
} }
], ],
'customer-stories-feed.github.com': [ 'customer-stories-feed.github.com': [
{ {
proxy: 'https://customer-stories-feed.fastgit.org' proxy: 'customer-stories-feed.fastgit.org'
} }
], ],
// google cdn // google cdn
// https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js
'ajax.googleapis.com': [ 'ajax.googleapis.com': [
{ {
proxy: 'https://ajax.proxy.ustclug.org' proxy: 'ajax.loli.net',
backup: ['ajax.proxy.ustclug.org'],
case: 'ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js'
} }
], ],
'fonts.googleapis.com': [ 'fonts.googleapis.com': [
{ {
proxy: 'https://fonts.proxy.ustclug.org' proxy: 'fonts.loli.net',
backup: ['fonts.proxy.ustclug.org'],
case: 'https://fonts.googleapis.com/css?family=Oswald'
} }
], ],
'themes.googleapis.com': [ 'themes.googleapis.com': [
{ {
proxy: 'https://themes.loli.net' proxy: 'themes.loli.net',
backup: ['themes.proxy.ustclug.org']
} }
], ],
'fonts.gstatic.com': [ 'themes.googleusercontent.com': [
{ { proxy: 'google-themes.proxy.ustclug.org' }
proxy: 'https://fonts-gstatic.proxy.ustclug.org'
}
], ],
'www.google.com': [ 'www.google.com': [
{ {
regexp: '/recaptcha/.*', regexp: '/recaptcha/.*',
proxy: 'https://www.recaptcha.net' proxy: 'www.recaptcha.net'
}
],
'fonts.gstatic.com': [
{
proxy: 'fonts-gstatic.proxy.ustclug.org',
backup: ['gstatic.loli.net']
} }
], ],
'clients*.google.com': [{ abort: true }], 'clients*.google.com': [{ abort: true }],
'www.googleapis.com': [{ abort: true }], 'www.googleapis.com': [{ abort: true }],
'lh*.googleusercontent.com': [{ abort: true }], 'lh*.googleusercontent.com': [{ abort: true }],
// https://mapbox-node-binary.s3.amazonaws.com/sqlite3/v5.0.0/napi-v3-win32-x64.tar.gz // mapbox-node-binary.s3.amazonaws.com/sqlite3/v5.0.0/napi-v3-win32-x64.tar.gz
'*.s3.amazonaws.com': [ '*.s3.amazonaws.com': [
{ {
regexp: '/sqlite3/.*', regexp: '/sqlite3/.*',
redirect: 'http://npm.taobao.org/mirrors' redirect: 'npm.taobao.org/mirrors'
} }
], ],
'registry-1.docker.io': [{ proxy: 'docker.mirrors.ustc.edu.cn' }], 'registry-1.docker.io': [{ proxy: 'docker.mirrors.ustc.edu.cn' }],
@ -85,19 +90,18 @@ module.exports = {
'archive.cloudera.com': [{ regexp: '/cdh5/.*', proxy: 'cloudera.proxy.ustclug.org' }], 'archive.cloudera.com': [{ regexp: '/cdh5/.*', proxy: 'cloudera.proxy.ustclug.org' }],
'downloads.lede-project.org': [{ proxy: 'lede.proxy.ustclug.org' }], 'downloads.lede-project.org': [{ proxy: 'lede.proxy.ustclug.org' }],
'downloads.openwrt.org': [{ proxy: 'openwrt.proxy.ustclug.org' }], 'downloads.openwrt.org': [{ proxy: 'openwrt.proxy.ustclug.org' }],
'themes.googleusercontent.com': [{ proxy: 'google-themes.proxy.ustclug.org' }],
'secure.gravatar.com': [{ proxy: 'gravatar.proxy.ustclug.org' }] 'secure.gravatar.com': [{ proxy: 'gravatar.proxy.ustclug.org' }]
}, },
dns: { dns: {
providers: { providers: {
aliyun: { aliyun: {
type: 'https', type: 'https',
server: 'https://dns.alidns.com/dns-query', server: 'dns.alidns.com/dns-query',
cacheSize: 1000 cacheSize: 1000
}, },
usa: { usa: {
type: 'https', type: 'https',
server: 'https://cloudflare-dns.com/dns-query', server: 'cloudflare-dns.com/dns-query',
cacheSize: 1000 cacheSize: 1000
} }
}, },
@ -114,11 +118,15 @@ module.exports = {
PHANTOMJS_CDNURL: 'https://npm.taobao.org/mirrors/phantomjs/', PHANTOMJS_CDNURL: 'https://npm.taobao.org/mirrors/phantomjs/',
ELECTRON_MIRROR: 'https://npm.taobao.org/mirrors/electron/', ELECTRON_MIRROR: 'https://npm.taobao.org/mirrors/electron/',
CYPRESS_DOWNLOAD_MIRROR: 'https://cdn.cypress.io', CYPRESS_DOWNLOAD_MIRROR: 'https://cdn.cypress.io',
NVM_NODEJS_ORG_MIRROR: 'http://npm.taobao.org/mirrors/node', NVM_NODEJS_ORG_MIRROR: 'https://npm.taobao.org/mirrors/node',
CHROMEDRIVER_CDNURL: 'http://npm.taobao.org/mirrors/chromedriver', CHROMEDRIVER_CDNURL: 'https://npm.taobao.org/mirrors/chromedriver',
OPERADRIVER: 'http://npm.taobao.org/mirrors/operadriver', OPERADRIVER: 'https://npm.taobao.org/mirrors/operadriver',
ELECTRON_BUILDER_BINARIES_MIRROR: 'http://npm.taobao.org/mirrors/electron-builder-binaries/', ELECTRON_BUILDER_BINARIES_MIRROR: 'https://npm.taobao.org/mirrors/electron-builder-binaries/',
PYTHON_MIRROR: 'http://npm.taobao.org/mirrors/python' PYTHON_MIRROR: 'https://npm.taobao.org/mirrors/python'
},
system: {
// eslint-disable-next-line no-template-curly-in-string
NODE_EXTRA_CA_CERTS: '${ca_cert_path}'
} }
}, },
setting: { setting: {

View File

@ -16,8 +16,7 @@ module.exports = {
if (target.indexOf('*') < 0) { if (target.indexOf('*') < 0) {
continue continue
} }
const regexp = target.replace('.', '\\.') const regexp = target.replace(/\./g, '\\.').replace(/\*/g, '.*')
.replace('*', '.*')
if (hostname.match(regexp)) { if (hostname.match(regexp)) {
providerName = dnsConfig.mapping[target] providerName = dnsConfig.mapping[target]
} }

View File

@ -3,7 +3,7 @@ module.exports = {
const url = req.url const url = req.url
let redirect let redirect
if (typeof interceptOpt.redirect === 'string') { if (typeof interceptOpt.redirect === 'string') {
redirect = interceptOpt.redirect + url redirect = rOptions.protocol + '//' + interceptOpt.redirect + url
} else { } else {
redirect = interceptOpt.redirect(url) redirect = interceptOpt.redirect(url)
} }

View File

@ -19,25 +19,58 @@
// console.log('stderr:' + stderr) // console.log('stderr:' + stderr)
// }) // })
// var HttpsProxyAgent = require('https-proxy-agent')
// var proxy = 'http://127.0.0.1:1181'
// var agent = new HttpsProxyAgent(proxy)
// console.log('111',process.env.NODE_EXTRA_CA_CERTS)
// const https = require('https')
// https_options = {
// "agent": agent,
// };
// https.get('https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js', https_options,(res) => {
// console.log('状态码:', res.statusCode)
// console.log('请求头:', res.headers)
//
// res.on('data', (d) => {
// process.stdout.write(d)
// })
// }).on('error', (e) => {
// console.error(e)
// })
const fs = require('fs') // const fs = require('fs')
const content = fs.readFileSync('C:\\Users\\Administrator\\.dev-sidecar\\dev-sidecar.ca.crt') // const content = fs.readFileSync('C:\\Users\\Administrator\\.dev-sidecar\\dev-sidecar.ca.crt')
console.log('content:',JSON.stringify(content.toString().replace(new RegExp('\r\n','g'),'\n'))); // console.log('content:',JSON.stringify(content.toString().replace(new RegExp('\r\n','g'),'\n')));
function testCa() {
const https = require('https')
const fs = require('fs')
const content = fs.readFileSync('C:\\Users\\Administrator\\.dev-sidecar\\dev-sidecar.ca.crt')
process.env.NODE_EXTRA_CA_CERTS = 'C:\\Users\\Administrator\\.dev-sidecar\\dev-sidecar.ca.crt'
process.env.GLOBAL_AGENT_HTTP_PROXY = "http://127.0.0.1:1181"
process.env.GLOBAL_AGENT_HTTPS_PROXY = "http://127.0.0.1:1181"
console.log('111', process.env.NODE_EXTRA_CA_CERTS)
const options = {
agent : new https.Agent({
proxy: "http://127.0.0.1:1181"
})
}
console.log('options', options)
https.get('https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js',options, (res) => {
console.log('状态码:', res.statusCode)
console.log('请求头:', res.headers)
res.on('data', (d) => {
process.stdout.write(d)
})
}).on('error', (e) => {
console.error(e)
})
}
function testRequest(){
// process.env.NODE_EXTRA_CA_CERTS='C:\\Users\\Administrator\\.dev-sidecar\\dev-sidecar.ca.crt'
console.log(process.env.NODE_EXTRA_CA_CERTS)
const request = require("request").defaults({
proxy: "http://127.0.0.1:1181"
})
request("https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js",(error, response, body)=>{
if(error){
console.error(error)
}else{
console.log(body)
}
})
}
// testCa()
testRequest()