diff --git a/modules/data/webadmin/tmpl/add_edit_network.tmpl b/modules/data/webadmin/tmpl/add_edit_network.tmpl
index 7cbf345c..44a7509b 100644
--- a/modules/data/webadmin/tmpl/add_edit_network.tmpl
+++ b/modules/data/webadmin/tmpl/add_edit_network.tmpl
@@ -80,6 +80,14 @@
One server per line, "host [[+]port] [password]", + means SSL
+
+
Trusted SSL fingerprints of this IRC network:
+
+
When these certificates are encountered, checks for hostname, expiration date, CA are skipped
+
+
Flood protection:
diff --git a/modules/webadmin.cpp b/modules/webadmin.cpp
index c1f4af87..ea75d50c 100644
--- a/modules/webadmin.cpp
+++ b/modules/webadmin.cpp
@@ -871,6 +871,10 @@ public:
l["InConfig"] = "true";
}
}
+ for (const CString& sFP : pNetwork->GetTrustedFingerprints()) {
+ CTemplate& l = Tmpl.AddRow("TrustedFingerprints");
+ l["FP"] = sFP;
+ }
} else {
if (!spSession->IsAdmin() && !pUser->HasSpaceForNewNetwork()) {
WebSock.PrintErrorPage("Network number limit reached. Ask an admin to increase the limit for you, or delete unneeded networks from Your Settings.");
@@ -1018,6 +1022,14 @@ public:
pNetwork->AddServer(vsArgs[a].Trim_n());
}
+ WebSock.GetRawParam("fingerprints").Split("\n", vsArgs);
+ while (!pNetwork->GetTrustedFingerprints().empty()) {
+ pNetwork->DelTrustedFingerprint(*pNetwork->GetTrustedFingerprints().begin());
+ }
+ for (const CString& sFP : vsArgs) {
+ pNetwork->AddTrustedFingerprint(sFP);
+ }
+
WebSock.GetParamValues("channel", vsArgs);
for (unsigned int a = 0; a < vsArgs.size(); a++) {
const CString& sChan = vsArgs[a];