#include "BARANTMailConfig.h" #include "Exception.h" #include "JFile.h" namespace mail { BARANTMailConfig::BARANTMailConfig(const std::string &path) { file = new coreutils::JFile(coreutils::ZString(path.c_str(), path.length())); if (!file->exists("hostName")) throw coreutils::Exception("BARANTMailConfig: \"hostName\" is missing from " + path); if (!file->exists("mailPath")) throw coreutils::Exception("BARANTMailConfig: \"mailPath\" is missing from " + path); if (!file->exists("smtp.port")) throw coreutils::Exception("BARANTMailConfig: \"smtp.port\" is missing from " + path); bool needsTls = file->exists("smtpTLS.port") || file->exists("imap.port") || file->exists("pop3.port"); if (needsTls) { if (!file->exists("tls.certificate") || !file->exists("tls.key")) throw coreutils::Exception( "BARANTMailConfig: smtpTLS/imap/pop3 is configured but \"tls.certificate\"/\"tls.key\" " "is missing from " + path); certPath = file->getString("tls.certificate"); keyPath = file->getString("tls.key"); tlsInfo.certificate = certPath.c_str(); tlsInfo.key = keyPath.c_str(); if (file->exists("tls.caCertificate")) { caPath = file->getString("tls.caCertificate"); tlsInfo.cACertificate = caPath.c_str(); } hasTls = true; } } BARANTMailConfig::~BARANTMailConfig() { delete file; } std::string BARANTMailConfig::getHostName() { return file->getString("hostName"); } std::string BARANTMailConfig::getMailPath() { return file->getString("mailPath"); } int BARANTMailConfig::getSmtpPort() { return (int)file->getInt("smtp.port"); } bool BARANTMailConfig::hasSmtpTLS() { return file->exists("smtpTLS.port"); } int BARANTMailConfig::getSmtpTLSPort() { return (int)file->getInt("smtpTLS.port"); } bool BARANTMailConfig::hasImap() { return file->exists("imap.port"); } int BARANTMailConfig::getImapPort() { return (int)file->getInt("imap.port"); } bool BARANTMailConfig::hasPop3() { return file->exists("pop3.port"); } int BARANTMailConfig::getPop3Port() { return (int)file->getInt("pop3.port"); } core::TLSInfo *BARANTMailConfig::getTlsInfo() { return hasTls ? &tlsInfo : NULL; } bool BARANTMailConfig::hasDkim() { return file->exists("dkim.domain") && file->exists("dkim.selector") && file->exists("dkim.privateKey"); } std::string BARANTMailConfig::getDkimDomain() { return file->getString("dkim.domain"); } std::string BARANTMailConfig::getDkimSelector() { return file->getString("dkim.selector"); } std::string BARANTMailConfig::getDkimPrivateKeyPath() { return file->getString("dkim.privateKey"); } }