| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- {env} = require './env'
- fs = require 'fs'
- {make_esc} = require 'iced-error'
- {E} = require './err'
- log = require './log'
- #=========================================================================
- class ProxyCACert
- constructor : (@file) ->
- open : (cb) ->
- log.debug "| Load proxy CA: #{@file}"
- await fs.readFile @file, defer err, @raw
- cb err
- to_string : () -> @raw?.toString('utf8')
- #=========================================================================
- exports.ProxyCACerts = class ProxyCACerts
- constructor : () ->
- @_cas = []
- @_arr = []
- @_files = []
- #--------------------
- read_env : (cb) ->
- o = env().get_proxy_ca_certs()
- v = null
- err = null
- if not o? then # noop
- else if typeof(o) is 'string' then v = [ o ]
- else if typeof(o) is 'object' and Array.isArray(o) then v = o
- else
- err = new E.ArgsError "given CA list can't be parsed as list of files"
- if v?
- # Split each of the elements on ':' character
- # Then join all arrays into one array
- @_files = [].concat (e.split /:/ for e in v)...
- cb err
- #--------------------
- open_files : (cb) ->
- esc = make_esc cb, "CAs::open_files"
- @_cas = (new ProxyCACert(f) for f in @_files)
- for ca in @_cas
- await ca.open esc defer()
- cb null
- #--------------------
- load : (cb) ->
- log.debug "+ Load proxy CAs"
- esc = make_esc cb, "CAs::init"
- await @read_env esc defer()
- await @open_files esc defer()
- @_ca_arr = (c.to_string() for c in @_cas)
- log.debug "- Loaded proxy CAs"
- cb null, (@_cas.length > 0)
- #--------------------
- data : () -> @_ca_arr
- files : () -> @_files
- #=========================================================================
- _pcc = null
- exports.init = (cb) ->
- pcc = new ProxyCACerts()
- await pcc.load defer err, found
- if found and not err?
- _pcc = pcc
- cb err, _pcc
- #--------------
- exports.get = () -> _pcc
- #=========================================================================
|