Merge branch 'ssl'

This commit is contained in:
Alexey Sokolov
2014-12-02 21:24:49 +00:00
10 changed files with 657 additions and 2 deletions

View File

@@ -176,6 +176,7 @@ void CIRCNetwork::Clone(const CIRCNetwork& Network, bool bCloneName) {
SetBindHost(Network.GetBindHost());
SetEncoding(Network.GetEncoding());
SetQuitMsg(Network.GetQuitMsg());
m_ssTrustedFingerprints = Network.m_ssTrustedFingerprints;
// Servers
const vector<CServer*>& vServers = Network.GetServers();
@@ -441,6 +442,11 @@ bool CIRCNetwork::ParseConfig(CConfig *pConfig, CString& sError, bool bUpgrade)
CUtils::PrintStatus(AddServer(*vit));
}
pConfig->FindStringVector("trustedserverfingerprint", vsList);
for (const CString& sFP : vsList) {
m_ssTrustedFingerprints.insert(sFP);
}
pConfig->FindStringVector("chan", vsList);
for (vit = vsList.begin(); vit != vsList.end(); ++vit) {
AddChan(*vit, true);
@@ -529,6 +535,10 @@ CConfig CIRCNetwork::ToConfig() const {
config.AddKeyValuePair("Server", m_vServers[b]->GetString());
}
for (const CString& sFP : m_ssTrustedFingerprints) {
config.AddKeyValuePair("TrustedServerFingerprint", sFP);
}
// Chans
for (unsigned int c = 0; c < m_vChans.size(); c++) {
CChan* pChan = m_vChans[c];
@@ -1197,6 +1207,7 @@ bool CIRCNetwork::Connect() {
CIRCSock *pIRCSock = new CIRCSock(this);
pIRCSock->SetPass(pServer->GetPass());
pIRCSock->SetSSLTrustedPeerFingerprints(m_ssTrustedFingerprints);
DEBUG("Connecting user/network [" << m_pUser->GetUserName() << "/" << m_sName << "]");