diff --git a/User.cpp b/User.cpp index 4bcc44e9..ec39937f 100644 --- a/User.cpp +++ b/User.cpp @@ -338,7 +338,6 @@ bool CUser::ParseConfig(CConfig* pConfig, CString& sError) { } if (pNetwork) { - CZNC::Get().BackupConfigOnce(); CUtils::PrintMessage("NOTICE: Found deprecated config, upgrading to a network"); if (!pNetwork->ParseConfig(pConfig, sError, true)) { diff --git a/znc.cpp b/znc.cpp index c8775cb4..c81f2524 100644 --- a/znc.cpp +++ b/znc.cpp @@ -433,6 +433,7 @@ bool CZNC::WriteConfig() { config.AddKeyValuePair("MaxBufferSize", CString(m_uiMaxBufferSize)); config.AddKeyValuePair("SSLCertFile", CString(m_sSSLCertFile)); config.AddKeyValuePair("ProtectWebSessions", CString(m_bProtectWebSessions)); + config.AddKeyValuePair("Version", CString(VERSION, 3)); for (size_t l = 0; l < m_vpListeners.size(); l++) { CListener* pListener = m_vpListeners[l]; @@ -984,8 +985,7 @@ size_t CZNC::FilterUncommonModules(set& ssModules) { return uNrRemoved; } -void CZNC::BackupConfigOnce() -{ +void CZNC::BackupConfigOnce(const CString& sSuffix) { static bool didBackup = false; if (didBackup) return; @@ -993,7 +993,7 @@ void CZNC::BackupConfigOnce() CUtils::PrintAction("Creating a config backup"); - CString sBackup = CDir::ChangeDir(m_sConfigFile, "../znc.conf.backup"); + CString sBackup = CDir::ChangeDir(m_sConfigFile, "../znc.conf." + sSuffix); if (CFile::Copy(m_sConfigFile, sBackup)) CUtils::PrintStatus(true, sBackup); else @@ -1085,6 +1085,17 @@ bool CZNC::DoRehash(CString& sError) } CUtils::PrintStatus(true); + CString sSavedVersion; + config.FindStringEntry("version", sSavedVersion); + double fSavedVersion = sSavedVersion.ToDouble(); + if (fSavedVersion < VERSION) { + if (sSavedVersion.empty()) { + sSavedVersion = "< 0.203"; + } + CUtils::PrintMessage("Found old config from ZNC " + sSavedVersion + ". Saving a backup of it."); + BackupConfigOnce("pre-" + CString(VERSION, 3)); + } + m_vsBindHosts.clear(); m_vsMotd.clear(); diff --git a/znc.h b/znc.h index c1b5a30d..5a98300a 100644 --- a/znc.h +++ b/znc.h @@ -51,7 +51,7 @@ public: bool WriteConfig(); bool ParseConfig(const CString& sConfig); bool RehashConfig(CString& sError); - void BackupConfigOnce(); + void BackupConfigOnce(const CString& sSuffix); static CString GetVersion(); static CString GetTag(bool bIncludeVersion = true); CString GetUptime() const;