From dcd259778af1098b9d1a2c07d2a3890175493bfa Mon Sep 17 00:00:00 2001 From: Dylan Lloyd Date: Mon, 23 Nov 2015 20:32:06 -0800 Subject: [PATCH] support separate SSLKeyFile & SSLDHParamFile configuration --- include/znc/znc.h | 4 ++++ src/Listener.cpp | 2 ++ src/znc.cpp | 18 +++++++++++++++++- third_party/Csocket | 2 +- 4 files changed, 24 insertions(+), 2 deletions(-) diff --git a/include/znc/znc.h b/include/znc/znc.h index 468bddb4..190b6194 100644 --- a/include/znc/znc.h +++ b/include/znc/znc.h @@ -128,6 +128,8 @@ public: CString GetUserPath() const; CString GetModPath() const; CString GetPemLocation() const; + CString GetKeyLocation() const; + CString GetDHParamLocation() const; const CString& GetConfigFile() const { return m_sConfigFile; } bool WritePemFile(); /** @deprecated Since 1.7.0. List of allowed bind hosts was a flawed design. */ @@ -233,6 +235,8 @@ protected: CString m_sStatusPrefix; CString m_sPidFile; CString m_sSSLCertFile; + CString m_sSSLKeyFile; + CString m_sSSLDHParamFile; CString m_sSSLCiphers; CString m_sSSLProtocols; VCString m_vsBindHosts; // TODO: remove (deprecated in 1.7.0) diff --git a/src/Listener.cpp b/src/Listener.cpp index 0cd2a374..b55916ec 100644 --- a/src/Listener.cpp +++ b/src/Listener.cpp @@ -35,6 +35,8 @@ bool CListener::Listen() { if (IsSSL()) { bSSL = true; m_pListener->SetPemLocation(CZNC::Get().GetPemLocation()); + m_pListener->SetKeyLocation(CZNC::Get().GetKeyLocation()); + m_pListener->SetDHParamLocation(CZNC::Get().GetDHParamLocation()); } #endif diff --git a/src/znc.cpp b/src/znc.cpp index 7c277323..146f8fbe 100644 --- a/src/znc.cpp +++ b/src/znc.cpp @@ -53,6 +53,8 @@ CZNC::CZNC() m_sStatusPrefix(""), m_sPidFile(""), m_sSSLCertFile(""), + m_sSSLKeyFile(""), + m_sSSLDHParamFile(""), m_sSSLCiphers(""), m_sSSLProtocols(""), m_vsBindHosts(), @@ -364,7 +366,7 @@ void CZNC::InitDirs(const CString& sArgvPath, const CString& sDataDir) { m_sZNCPath = sDataDir; } - m_sSSLCertFile = m_sZNCPath + "/znc.pem"; + m_sSSLCertFile = m_sSSLKeyFile = m_sSSLDHParamFile = m_sZNCPath + "/znc.pem"; } CString CZNC::GetConfPath(bool bAllowMkDir) const { @@ -413,6 +415,14 @@ CString CZNC::GetPemLocation() const { return CDir::ChangeDir("", m_sSSLCertFile); } +CString CZNC::GetKeyLocation() const { + return CDir::ChangeDir("", m_sSSLKeyFile); +} + +CString CZNC::GetDHParamLocation() const { + return CDir::ChangeDir("", m_sSSLDHParamFile); +} + CString CZNC::ExpandConfigPath(const CString& sConfigFile, bool bAllowMkDir) { CString sRetPath; @@ -462,6 +472,8 @@ bool CZNC::WriteConfig() { config.AddKeyValuePair("AnonIPLimit", CString(m_uiAnonIPLimit)); config.AddKeyValuePair("MaxBufferSize", CString(m_uiMaxBufferSize)); config.AddKeyValuePair("SSLCertFile", CString(m_sSSLCertFile)); + config.AddKeyValuePair("SSLKeyFile", CString(m_sSSLKeyFile)); + config.AddKeyValuePair("SSLDHParamFile", CString(m_sSSLDHParamFile)); config.AddKeyValuePair("ProtectWebSessions", CString(m_bProtectWebSessions)); config.AddKeyValuePair("HideVersion", CString(m_bHideVersion)); config.AddKeyValuePair("Version", CString(VERSION_STR)); @@ -1099,6 +1111,10 @@ bool CZNC::LoadGlobal(CConfig& config, CString& sError) { m_sStatusPrefix = sVal; if (config.FindStringEntry("sslcertfile", sVal)) m_sSSLCertFile = sVal; + if (config.FindStringEntry("sslkeyfile", sVal)) + m_sSSLKeyFile = sVal; + if (config.FindStringEntry("ssldhparamfile", sVal)) + m_sSSLDHParamFile = sVal; if (config.FindStringEntry("sslciphers", sVal)) m_sSSLCiphers = sVal; if (config.FindStringEntry("skin", sVal)) diff --git a/third_party/Csocket b/third_party/Csocket index 8d720c94..2852fc36 160000 --- a/third_party/Csocket +++ b/third_party/Csocket @@ -1 +1 @@ -Subproject commit 8d720c94977947ac73dce6901b92a13ee16aa2a9 +Subproject commit 2852fc364542c0635058f90d8a3dbad0455e9e7c