diff options
Diffstat (limited to 'src/kdesvnd/kdesvnd_dcop.cpp')
-rw-r--r-- | src/kdesvnd/kdesvnd_dcop.cpp | 461 |
1 files changed, 0 insertions, 461 deletions
diff --git a/src/kdesvnd/kdesvnd_dcop.cpp b/src/kdesvnd/kdesvnd_dcop.cpp deleted file mode 100644 index 67962de..0000000 --- a/src/kdesvnd/kdesvnd_dcop.cpp +++ /dev/null @@ -1,461 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2005-2007 by Rajko Albrecht * - * rajko.albrecht@tecways.com * - * * - * 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 * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the * - * Free Software Foundation, Inc., * - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * - ***************************************************************************/ - -#include "tdesvn-config.h" -#include "tdesvnd_dcop.h" -#include "src/ksvnwidgets/authdialogimpl.h" -#include "src/ksvnwidgets/ssltrustprompt_impl.h" -#include "src/ksvnwidgets/logmsg_impl.h" -#include "src/settings/tdesvnsettings.h" -#include "src/ksvnwidgets/pwstorage.h" -#include "src/svnqt/client.hpp" -#include "src/svnqt/revision.hpp" -#include "src/svnqt/status.hpp" -#include "src/svnqt/context_listener.hpp" -#include "src/svnqt/url.hpp" -#include "helpers/ktranslateurl.h" - -#include <kdebug.h> -#include <kapplication.h> -#include <kmessagebox.h> -#include <klocale.h> -#include <kglobal.h> -#include <kfiledialog.h> -#include <kpassdlg.h> - -#include <tqdir.h> - -extern "C" { - KDESVN_EXPORT KDEDModule *create_tdesvnd(const TQCString &name) - { - return new tdesvnd_dcop(name); - } -} - -class IListener:public svn::ContextListener -{ - friend class tdesvnd_dcop; - - tdesvnd_dcop*m_back; -public: - IListener(tdesvnd_dcop*p); - virtual ~IListener(); - /* context-listener methods */ - virtual bool contextGetLogin (const TQString & realm, - TQString & username, - TQString & password, - bool & maySave); - virtual bool contextGetSavedLogin (const TQString & realm,TQString & username,TQString & password); - virtual bool contextGetCachedLogin (const TQString & realm,TQString & username,TQString & password); - - virtual void contextNotify (const char *path, - svn_wc_notify_action_t action, - svn_node_kind_t kind, - const char *mime_type, - svn_wc_notify_state_t content_state, - svn_wc_notify_state_t prop_state, - svn_revnum_t revision); - virtual void contextNotify (const svn_wc_notify_t *action); - - virtual bool contextCancel(); - virtual bool contextGetLogMessage (TQString & msg,const svn::CommitItemList&); - virtual svn::ContextListener::SslServerTrustAnswer - contextSslServerTrustPrompt (const SslServerTrustData & data, - apr_uint32_t & acceptedFailures); - virtual bool contextSslClientCertPrompt (TQString & certFile); - virtual bool contextLoadSslClientCertPw(TQString&password,const TQString&realm); - virtual bool contextSslClientCertPwPrompt (TQString & password, - const TQString & realm, bool & maySave); - virtual void contextProgress(long long int current, long long int max); - - /* context listener virtuals end */ - -protected: - svn::Client* m_Svnclient; - svn::ContextP m_CurrentContext; -}; - -IListener::IListener(tdesvnd_dcop*p) - :svn::ContextListener() -{ - m_Svnclient = svn::Client::getobject(0,0); - m_back=p; - m_CurrentContext = new svn::Context(); - m_CurrentContext->setListener(this); - m_Svnclient->setContext(m_CurrentContext); -} - -IListener::~IListener() -{ -} - -tdesvnd_dcop::tdesvnd_dcop(const TQCString&name) : KDEDModule(name) -{ - KGlobal::locale()->insertCatalogue("tdesvn"); - m_Listener=new IListener(this); -} - -tdesvnd_dcop::~tdesvnd_dcop() -{ - delete m_Listener; -} - -TQStringList tdesvnd_dcop::getActionMenu (const KURL::List list) -{ - TQStringList result; - Kdesvnsettings::self()->readConfig(); - if (Kdesvnsettings::no_konqueror_contextmenu()||list.count()==0) { - return result; - } - TQString base; - - - bool parentIsWc = false; - bool itemIsWc = isWorkingCopy(list[0],base); - bool itemIsRepository = false; - - TQString _par = list[0].directory(true,true); - parentIsWc = isWorkingCopy(_par,base); - - if (!parentIsWc && !itemIsWc) { - itemIsRepository = isRepository(list[0]); - } - - if (!itemIsWc) { - if (itemIsRepository) { - result << "Export" - << "Checkout"; - } else { - result << "Exportto" - << "Checkoutto"; - } - } else { - result << "Update" - << "Commit"; - } - - if (!parentIsWc && !itemIsWc) { - if (itemIsRepository) { - result << "Log" - << "Info"; - if (isRepository(list[0].upURL())) { - result << "Blame" - << "Rename"; - } - result << "Tree"; - } - return result; - } - - if (!itemIsWc) { - result << "Add"; - return result; - } - - result << "Log" - << "Tree" - << "Info" - << "Diff" - << "Rename" - << "Revert"; - - KURL url = helpers::KTranslateUrl::translateSystemUrl(list[0]); - - TQFileInfo f(url.path()); - if (f.isFile()) { - result << "Blame"; - } - - if (f.isDir()) { - result << "Addnew"; - result << "Switch"; - } - - return result; -} - -TQStringList tdesvnd_dcop::getSingleActionMenu(TQCString what) -{ - KURL::List l; l.append(KURL(what)); - return getActionMenu(l); -} - -TQStringList tdesvnd_dcop::get_login(TQString realm,TQString user) -{ - AuthDialogImpl auth(realm,user); - TQStringList res; - if (auth.exec()==TQDialog::Accepted) { - res.append(auth.Username()); - res.append(auth.Password()); - if (auth.maySave()) { - res.append("true"); - } else { - res.append("false"); - } - } - return res; -} - -int tdesvnd_dcop::get_sslaccept(TQString hostname,TQString fingerprint,TQString validFrom,TQString validUntil,TQString issuerDName,TQString realm) -{ - bool ok,saveit; - if (!SslTrustPrompt_impl::sslTrust( - hostname, - fingerprint, - validFrom, - validUntil, - issuerDName, - realm, - TQStringList(), - &ok,&saveit)) { - return -1; - } - if (!saveit) { - return 0; - } - return 1; -} - -TQStringList tdesvnd_dcop::get_sslclientcertpw(TQString realm) -{ - TQStringList resList; - TQCString npass; - int keep = 1; - int res = KPasswordDialog::getPassword(npass,i18n("Enter password for realm %1").tqarg(realm),&keep); - if (res!=KPasswordDialog::Accepted) { - return resList; - } - resList.append(TQString(npass)); - if (keep) { - resList.append("true"); - } else { - resList.append("false"); - } - return resList; -} - -TQString tdesvnd_dcop::get_sslclientcertfile() -{ - TQString afile = KFileDialog::getOpenFileName(TQString(), - TQString(), - 0, - i18n("Open a file with a #PKCS12 certificate")); - return afile; -} - -TQStringList tdesvnd_dcop::get_logmsg() -{ - TQStringList res; - bool ok; - TQString logMessage = Logmsg_impl::getLogmessage(&ok,0,0,0,"logmsg_impl"); - if (!ok) { - return res; - } - res.append(logMessage); - return res; -} - -TQStringList tdesvnd_dcop::get_logmsg(TQMap<TQString,TQString> list) -{ - TQStringList res; - bool ok; - TQString logMessage = Logmsg_impl::getLogmessage(list,&ok,0,0,0,"logmsg_impl"); - if (!ok) { - return res; - } - res.append(logMessage); - return res; -} - -TQString tdesvnd_dcop::cleanUrl(const KURL&url) -{ - TQString cleanpath = url.path(); - while (cleanpath.endsWith("/")) { - cleanpath.truncate(cleanpath.length()-1); - } - return cleanpath; -} - -/* just simple name check of course - no network acess! */ -bool tdesvnd_dcop::isRepository(const KURL&url) -{ - kdDebug()<<"tdesvnd_dcop::isRepository Url zum repo check: "<<url<<endl; - TQString proto = svn::Url::transformProtokoll(url.protocol()); - kdDebug()<<"tdesvnd_dcop::isRepository Protokoll: " << proto << endl; - if (proto=="file") { - // local access - may a repository - svn::Revision where = svn::Revision::HEAD; - svn::StatusEntries dlist; - try { - m_Listener->m_Svnclient->status("file://"+cleanUrl(url),svn::DepthEmpty,false,false,false,where); - } catch (const svn::ClientException&e) { - kdDebug()<< e.msg()<<endl; - return false; - } - return true; - } else { - return svn::Url::isValid(proto); - } -} - -bool tdesvnd_dcop::isWorkingCopy(const KURL&_url,TQString&base) -{ - base = ""; - KURL url = _url; - url = helpers::KTranslateUrl::translateSystemUrl(url); - - if (url.isEmpty()||!url.isLocalFile()||url.protocol()!="file") return false; - svn::Revision peg(svn_opt_revision_unspecified); - svn::Revision rev(svn_opt_revision_unspecified); - svn::InfoEntries e; - try { - e = m_Listener->m_Svnclient->info(cleanUrl(url),svn::DepthEmpty,rev,peg); - } catch (const svn::ClientException&e) { - kdDebug()<< e.msg()<<endl; - return false; - } - base=e[0].url(); - return true; -} - -bool IListener::contextGetSavedLogin (const TQString & realm,TQString & username,TQString & password) -{ - PwStorage::self()->getLogin(realm,username,password); - return true; -} - -bool IListener::contextGetCachedLogin (const TQString & realm,TQString & username,TQString & password) -{ - return true; -} - -bool IListener::contextGetLogin (const TQString & realm, - TQString & username, - TQString & password, - bool & maySave) -{ - maySave=false; - TQStringList res = m_back->get_login(realm,username); - if (res.count()!=3) { - return false; - } - username = res[0]; - password = res[1]; - maySave = (res[2]=="true"); - if (maySave && Kdesvnsettings::passwords_in_wallet() ) { - PwStorage::self()->setLogin(realm,username,password); - maySave=false; - } - return true; -} - -void IListener::contextNotify(const char * /*path*/, - svn_wc_notify_action_t /*action*/, - svn_node_kind_t /*kind*/, - const char */*mime_type*/, - svn_wc_notify_state_t /*content_state*/, - svn_wc_notify_state_t /*prop_state*/, - svn_revnum_t /*revision*/) -{ -} - -void IListener::contextNotify(const svn_wc_notify_t * /*action*/) -{ -} - -bool IListener::contextCancel() -{ - return false; -} - -bool IListener::contextGetLogMessage (TQString & msg,const svn::CommitItemList&) -{ - TQStringList res = m_back->get_logmsg(); - if (res.count()==0) { - return false; - } - msg = res[1]; - return true; -} - -svn::ContextListener::SslServerTrustAnswer IListener::contextSslServerTrustPrompt (const SslServerTrustData & data, - apr_uint32_t & /*acceptedFailures*/) -{ - int res = m_back->get_sslaccept(data.hostname, - data.fingerprint, - data.validFrom, - data.validUntil, - data.issuerDName, - data.realm); - switch (res) { - case -1: - return DONT_ACCEPT; - break; - case 1: - return ACCEPT_PERMANENTLY; - break; - default: - case 0: - return ACCEPT_TEMPORARILY; - break; - } - /* avoid compiler warnings */ - return ACCEPT_TEMPORARILY; -} - -bool IListener::contextSslClientCertPrompt (TQString & certFile) -{ - certFile = m_back->get_sslclientcertfile(); - if (certFile.isEmpty()) { - return false; - } - return true; -} - -bool IListener::contextLoadSslClientCertPw(TQString&password,const TQString&realm) -{ - return PwStorage::self()->getCertPw(realm,password); -} - -bool IListener::contextSslClientCertPwPrompt (TQString & password, - const TQString & realm, bool & maySave) -{ - maySave=false; - if (PwStorage::self()->getCertPw(realm,password)) { - return true; - } - TQStringList res = m_back->get_sslclientcertpw(realm); - if (res.size()!=2) { - return false; - } - password=res[0]; - maySave=res[1]==TQString("true"); - - if (maySave && Kdesvnsettings::passwords_in_wallet() ) { - PwStorage::self()->setCertPw(realm,password); - maySave=false; - } - - return true; -} - -void IListener::contextProgress(long long int, long long int) -{ -} |