Exemplo n.º 1
0
  @Override
  public void replicate(ConfigManager manager, ConfigRequest request) throws IOException {
    if (!request.applies(CertificateManager.FEATURE)) {
      return;
    }

    boolean chainCertificate = false;
    boolean caCertificate = false;
    File dir = manager.getGlobalDataDirectory();
    String sipCert = m_certificateManager.getCommunicationsCertificate();
    FileUtils.writeStringToFile(new File(dir, "ssl.crt"), sipCert);
    String sipKey = m_certificateManager.getCommunicationsPrivateKey();
    FileUtils.writeStringToFile(new File(dir, "ssl.key"), sipKey);
    String webCert = m_certificateManager.getWebCertificate();
    FileUtils.writeStringToFile(new File(dir, "ssl-web.crt"), webCert);
    String webKey = m_certificateManager.getWebPrivateKey();
    FileUtils.writeStringToFile(new File(dir, "ssl-web.key"), webKey);

    String chainCert = m_certificateManager.getChainCertificate();
    if (chainCert != null) {
      FileUtils.writeStringToFile(new File(dir, "server-chain.crt"), chainCert);
      chainCertificate = true;
    }
    String caCert = m_certificateManager.getCACertificate();
    if (caCert != null) {
      FileUtils.writeStringToFile(new File(dir, "ca-bundle.crt"), caCert);
      caCertificate = true;
    }
    Writer writer = new FileWriter(new File(dir, "ssl.conf"));
    try {
      write(writer, chainCertificate, caCertificate);
    } finally {
      IOUtils.closeQuietly(writer);
    }

    String domain = Domain.getDomain().getName();

    JavaKeyStore sslSip = new JavaKeyStore();
    sslSip.addKey(domain, sipCert, sipKey);
    sslSip.storeIfDifferent(new File(dir, "ssl.keystore"));

    JavaKeyStore sslWeb = new JavaKeyStore();
    sslWeb.addKey(domain, webCert, webKey);
    sslWeb.storeIfDifferent(new File(dir, "ssl-web.keystore"));

    File authDir = new File(dir, "authorities");
    authDir.mkdir();
    JavaKeyStore store = new JavaKeyStore();
    for (String authority : m_certificateManager.getAuthorities()) {
      String authCert = m_certificateManager.getAuthorityCertificate(authority);
      FileUtils.writeStringToFile(new File(authDir, authority + ".crt"), authCert);
      store.addAuthority(authority, authCert);
    }
    OutputStream authoritiesStore = null;
    try {
      store.storeIfDifferent(new File(dir, "authorities.jks"));
    } finally {
      IOUtils.closeQuietly(authoritiesStore);
    }
  }
Exemplo n.º 2
0
  void write(
      Writer wtr,
      IvrSettings settings,
      Domain domain,
      Location location,
      String mwiAddresses,
      int mwiPort,
      Address restApi,
      Address adminApi,
      Address apacheApi,
      Address imApi,
      Address imbotApi,
      Address fsEvent)
      throws IOException {
    KeyValueConfiguration config = KeyValueConfiguration.equalsSeparated(wtr);
    config.writeSettings(settings.getSettings());
    config.write("freeswitch.eventSocketPort", fsEvent.getPort());

    // potential bug: name "operator" could be changed by admin. this should be configurable
    // and linked with vm dialing rule
    config.write("ivr.operatorAddr", "sip:operator@" + domain.getName());

    // required services
    if (mwiAddresses == null) {
      throw new ConfigException("MWI feature needs to be enabled. No addresses found.");
    }
    config.write("ivr.mwiAddresses", mwiAddresses);
    config.write("ivr.mwiPort", mwiPort);
    if (adminApi == null) {
      throw new ConfigException("Admin feature needs to be enabled. No addresses found.");
    }
    config.write("ivr.configUrl", adminApi.toString());
    if (apacheApi != null) {
      config.write("ivr.emailAddressUrl", apacheApi.toString());
    }

    // optional services
    if (restApi != null) {
      config.write("ivr.3pccSecureUrl", restApi.toString());
      config.write("ivr.callHistoryUrl", restApi.toString() + "/cdr/");
    }
    if (imApi != null) {
      config.write("ivr.openfireHost", imApi.getAddress());
      config.write("ivr.openfireXmlRpcPort", imApi.getPort());
    }
    if (imbotApi != null) {
      config.write("ivr.sendIMUrl", imbotApi.toString());
    }
  }