/**
* check if root CA exists and installed
* will prompt to generate when needed
*/

const thunkify = require('thunkify');
const AnyProxy = require('../proxy');
const logUtil = require('../lib/log');

const certMgr = AnyProxy.utils.certMgr;

function checkRootCAExists() {
  return certMgr.isRootCAFileExists();
}

module.exports = function *() {
  try {
    if (!checkRootCAExists()) {
      logUtil.warn('Missing root CA, generating now');
      yield thunkify(certMgr.generateRootCA)();
      yield certMgr.trustRootCA();
    } else {
      const isCATrusted = yield thunkify(certMgr.ifRootCATrusted)();
      if (!isCATrusted) {
        logUtil.warn('ROOT CA NOT INSTALLED YET');
        yield certMgr.trustRootCA();
      }
    }
  } catch (e) {
    console.error(e);
  }
};