X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Fwx%2Fdoremi_certificate_dialog.cc;h=ffb2a0f99c05f07917cbadd28ac8df970ea48481;hb=ffa5a512112809e2256cae7a01afcd14c99c83a6;hp=b0840a83fa23f9831f7f47734957b3ce95dddcdc;hpb=854f2e5bbb7ffb9758b823af87034033033f3cb8;p=dcpomatic.git diff --git a/src/wx/doremi_certificate_dialog.cc b/src/wx/doremi_certificate_dialog.cc index b0840a83f..ffb2a0f99 100644 --- a/src/wx/doremi_certificate_dialog.cc +++ b/src/wx/doremi_certificate_dialog.cc @@ -1,5 +1,5 @@ /* - Copyright (C) 2014 Carl Hetherington + Copyright (C) 2014-2015 Carl Hetherington This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -21,11 +21,14 @@ #include #include "lib/compose.hpp" #include "lib/util.h" +#include "lib/signal_manager.h" #include "lib/internet.h" #include "doremi_certificate_dialog.h" #include "wx_util.h" +#include using std::string; +using std::cout; using boost::function; using boost::optional; @@ -49,8 +52,19 @@ DoremiCertificateDialog::download () return; } + downloaded (false); _message->SetLabel (_("Downloading certificate")); - run_gui_loop (); + + /* Hack: without this the SetLabel() above has no visible effect */ + wxMilliSleep (200); + + signal_manager->when_idle (boost::bind (&DoremiCertificateDialog::finish_download, this, serial)); +} + +void +DoremiCertificateDialog::finish_download (string serial) +{ + /* Try dcp2000, imb and ims prefixes (see mantis #375) */ optional error = get_from_zip_url ( String::compose ( @@ -62,9 +76,33 @@ DoremiCertificateDialog::download () ); if (error) { + error = get_from_zip_url ( + String::compose ( + "ftp://service:t3chn1c1an@ftp.doremilabs.com/Certificates/%1xxx/imb-%2.dcicerts.zip", + serial.substr(0, 3), serial + ), + String::compose ("imb-%1.cert.sha256.pem", serial), + _load + ); + } + + if (error) { + error = get_from_zip_url ( + String::compose ( + "ftp://service:t3chn1c1an@ftp.doremilabs.com/Certificates/%1xxx/ims-%2.dcicerts.zip", + serial.substr(0, 3), serial + ), + String::compose ("ims-%1.cert.sha256.pem", serial), + _load + ); + } + + if (error) { + _message->SetLabel (wxT ("")); error_dialog (this, std_to_wx (error.get ())); } else { _message->SetLabel (_("Certificate downloaded")); + downloaded (true); } } @@ -73,4 +111,3 @@ DoremiCertificateDialog::set_sensitivity () { _download->Enable (!_serial->IsEmpty ()); } -