[pan2/new_master: 266/266] reimplemented remove/add cert



commit 413126597d93d0ba61f4d3b4c4bd5b444440ca6d
Author: Heinrich MÃller <henmull src gnome org>
Date:   Mon Jan 2 15:03:54 2012 +0100

    reimplemented remove/add cert

 pan/data/cert-store.cc |   14 +++++++++-----
 pan/data/cert-store.h  |    8 ++------
 pan/gui/actions.cc     |    5 ++++-
 pan/gui/gui.cc         |    8 +-------
 4 files changed, 16 insertions(+), 19 deletions(-)
---
diff --git a/pan/data/cert-store.cc b/pan/data/cert-store.cc
index 4d98d8d..e160f6c 100644
--- a/pan/data/cert-store.cc
+++ b/pan/data/cert-store.cc
@@ -178,6 +178,8 @@ namespace pan
     FILE * fp = fopen(filename, "rb");
     if (!fp) return false;
 
+    std::cerr<<"importing cert for server "<<server<<" "<<(filename ? filename : "empty")<<"\n";
+
     fseek (fp, 0, SEEK_END);
     filelen = ftell (fp);
     fseek (fp, 0, SEEK_SET);
@@ -197,7 +199,6 @@ namespace pan
 
     if (ret < 0) goto fail;
 
-    _certs.insert(server);
     _cert_to_server[server] = cert;
 
     return true;
@@ -226,7 +227,8 @@ namespace pan
       if (import_from_file(*it)) ++cnt;
 
     // get certs from ssl certs directory
-    const char * ssldir = getenv("SSL_CERT_DIR");
+    char * ssldir(0);
+    ssldir = getenv("SSL_CERT_DIR");
     if (!ssldir) ssldir = getenv("SSL_DIR");
     if (!ssldir) return cnt;
 
@@ -273,8 +275,9 @@ namespace pan
   CertStore :: remove_hard(const Quark& server)
   {
     char buf[2048];
-    g_snprintf (buf, sizeof(buf), "%s%c%s.pem", _path.c_str(), G_DIR_SEPARATOR, server.c_str());
-    unlink(buf);
+    std::string fn = _data.get_server_cert(server);
+    std::cerr<<"unlink "<<fn<<"\n";
+    unlink(fn.c_str());
   }
 
   void
@@ -317,9 +320,10 @@ namespace pan
     debug("adding server cert "<<server<<" "<<cert);
     if (!cert || server.empty()) return false;
 
+    std::cerr<<"adding cert for server "<<server<<"\n";
+
     std::string addr; int port;
     _data.get_server_addr(server, addr, port);
-    _certs.insert(server);
     _cert_to_server[server] = cert;
 
     const char* buf(build_cert_name(addr).c_str());
diff --git a/pan/data/cert-store.h b/pan/data/cert-store.h
index 918f6fb..7e5abfd 100644
--- a/pan/data/cert-store.h
+++ b/pan/data/cert-store.h
@@ -52,7 +52,6 @@ namespace pan
 
     private:
       typedef std::set<Quark> certs_t;
-      certs_t _certs;
       certs_t _blacklist;
       typedef std::map<Quark,gnutls_x509_crt_t> certs_m;
       typedef std::pair<Quark,gnutls_x509_crt_t> certs_p;
@@ -86,20 +85,17 @@ namespace pan
       {
         if (_cert_to_server.count(s) > 0)
           return _cert_to_server[s];
-        std::cerr<<"server "<<s<<" cert to server "<<_cert_to_server.count(s)<<"\n";
-        foreach (certs_m, _cert_to_server, it)
-          std::cerr<<it->first<<" "<<it->second<<"\n";
         return 0;
       }
 
     private:
-      void remove_hard(const Quark&);
+      void remove_hard(const Quark& server);
 
     public:
 
       bool add (gnutls_x509_crt_t, const Quark&) ;
       void remove (const Quark&);
-      bool exist (const Quark& q) { return (_certs.count(q) > 0); }
+      bool exist (const Quark& q) { return (_cert_to_server.count(q) > 0); }
 
       static std::string build_cert_name(std::string& host);
 
diff --git a/pan/gui/actions.cc b/pan/gui/actions.cc
index 7470f75..f11a6e6 100644
--- a/pan/gui/actions.cc
+++ b/pan/gui/actions.cc
@@ -427,11 +427,14 @@ namespace
       NULL,
       G_CALLBACK(do_show_servers_dialog) },
 
+#ifdef HAVE_GNUTLS
     { "show-sec-dialog", GTK_STOCK_DIALOG_AUTHENTICATION,
       N_("Edit _SSL Certificates"), NULL,
       NULL,
       G_CALLBACK(do_show_sec_dialog) },
-
+#else
+    { "show-sec-dialog", NULL, NULL, NULL, NULL, NULL},
+#endif
     { "jump-to-group-tab", GTK_STOCK_JUMP_TO,
       N_("Jump to _Group Tab"), "1",
       NULL,
diff --git a/pan/gui/gui.cc b/pan/gui/gui.cc
index 958104b..cf64dc1 100644
--- a/pan/gui/gui.cc
+++ b/pan/gui/gui.cc
@@ -1039,13 +1039,7 @@ void GUI :: server_list_dialog_destroyed (GtkWidget *)
 
 void GUI :: sec_dialog_destroyed (GtkWidget * w)
 {
-//  quarks_t empty_servers, all_servers (_data.get_servers());
-//  foreach_const (quarks_t, all_servers, it) {
-//    quarks_t tmp;
-//    _data.server_get_groups (*it, tmp);
-//    if (tmp.empty() && _data.get_server_limits(*it))
-//      _queue.add_task (new TaskGroups (_data, *it));
-//  }
+  // NOTE : unused for now
 }
 
 void GUI ::  prefs_dialog_destroyed_cb (GtkWidget * w, gpointer self)



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]