diff options
Diffstat (limited to 'kdesu/ssh.h')
-rw-r--r-- | kdesu/ssh.h | 90 |
1 files changed, 90 insertions, 0 deletions
diff --git a/kdesu/ssh.h b/kdesu/ssh.h new file mode 100644 index 000000000..23308fd64 --- /dev/null +++ b/kdesu/ssh.h @@ -0,0 +1,90 @@ +/* vi: ts=8 sts=4 sw=4 + * + * $Id$ + * + * This file is part of the KDE project, module kdesu. + * Copyright (C) 2000 Geert Jansen <jansen@kde.org> + * + * This is free software; you can use this library under the GNU Library + * General Public License, version 2. See the file "COPYING.LIB" for the + * exact licensing terms. + */ + +#ifndef __SSH_h_Included__ +#define __SSH_h_Included__ + +#include <qcstring.h> + +#include "stub.h" + +#include <kdelibs_export.h> + +/** + * Executes a remote command, using ssh. + */ + +class KDESU_EXPORT SshProcess: public StubProcess +{ +public: + SshProcess(const QCString &host=0, const QCString &user=0, const QCString &command=0); + ~SshProcess(); + + enum Errors { SshNotFound=1, SshNeedsPassword, SshIncorrectPassword }; + + /** + * Sets the target host. + */ + void setHost(const QCString &host) { m_Host = host; } + + /** + * Sets the localtion of the remote stub. + */ + void setStub(const QCString &stub); + + /** + * Checks if the current user\@host needs a password. + * @return The prompt for the password if a password is required. A null + * string otherwise. + * + * @todo The return doc is so obviously wrong that the C code needs to be checked. + */ + int checkNeedPassword(); + + /** + * Checks if the stub is installed and if the password is correct. + * @return Zero if everything is correct, nonzero otherwise. + */ + int checkInstall(const char *password); + + /** + * Executes the command. + */ + int exec(const char *password, int check=0); + + QCString prompt() { return m_Prompt; } + QCString error() { return m_Error; } + +protected: + virtual QCString display(); + virtual QCString displayAuth(); + virtual QCString dcopServer(); + +private: + QCString dcopForward(); + int ConverseSsh(const char *password, int check); + + int m_dcopPort; + int m_dcopSrv; + QCString m_Prompt; + QCString m_Host; + QCString m_Error; + QCString m_Stub; + +protected: + virtual void virtual_hook( int id, void* data ); +private: + class SshProcessPrivate; + SshProcessPrivate *d; +}; + +#endif |