diff options
Diffstat (limited to 'kioslave/fish/fish.h')
-rw-r--r-- | kioslave/fish/fish.h | 211 |
1 files changed, 0 insertions, 211 deletions
diff --git a/kioslave/fish/fish.h b/kioslave/fish/fish.h deleted file mode 100644 index 8a85a9bd2..000000000 --- a/kioslave/fish/fish.h +++ /dev/null @@ -1,211 +0,0 @@ -/*************************************************************************** - fish.h - a FISH kioslave - ------------------- - begin : Thu Oct 4 17:09:14 CEST 2001 - copyright : (C) 2001 by Jörg Walter - email : trouble@garni.ch - ***************************************************************************/ - -/*************************************************************************** - * * - * 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, version 2 of the License * - * * - ***************************************************************************/ -#ifndef __fish_h__ -#define __fish_h__ - -#include <tqstring.h> -#include <tqcstring.h> - - -#include <kurl.h> -#include <kio/global.h> -#include <kio/slavebase.h> -#include <kprocess.h> -#include <kio/authinfo.h> -#include <time.h> - -#define FISH_EXEC_CMD 'X' - -class fishProtocol : public TDEIO::SlaveBase -{ -public: - fishProtocol(const TQCString &pool_socket, const TQCString &app_socket); - virtual ~fishProtocol(); - - /** -Connects to a server and logs us in via SSH. Then starts FISH protocol. -@ref isConnected is set to true if logging on was successful. -It is set to false if the connection becomes closed. - - */ - void openConnection(); - - /** - Clean up connection - */ - void shutdownConnection(bool forced=false); - /** sets connection information for subsequent commands */ - void setHost(const TQString & host, int port, const TQString & user, const TQString & pass); - /** Forced close of the connection */ - void closeConnection(); - /** get a file */ - void get(const KURL& url); - /** put a file */ - void put(const KURL& url, int permissions, bool overwrite, bool resume); - /** aborts command sequence and calls error() */ - void error(int type, const TQString &detail); - /** executes next command in sequence or calls finished() if all is done */ - void finished(); - /** stat a file */ - void stat(const KURL& url); - /** find mimetype for a file */ - void mimetype(const KURL& url); - /** list a directory */ - void listDir(const KURL& url); - /** create a directory */ - void mkdir(const KURL&url, int permissions); - /** rename a file */ - void rename(const KURL& src, const KURL& dest, bool overwrite); - /** create a symlink */ - void symlink(const TQString& target, const KURL& dest, bool overwrite); - /** change file permissions */ - void chmod(const KURL& url, int permissions); - /** copies a file */ - void copy(const KURL &src, const KURL &dest, int permissions, bool overwrite); - /** report status */ - void slave_status(); - /** removes a file or directory */ - void del(const KURL &u, bool isfile); - /** special like background execute */ - void special( const TQByteArray &data ); - -private: // Private attributes - /** the SSH process used to communicate with the remote end */ - pid_t childPid; - /** fd for reading and writing to the process */ - int childFd; - /** buffer for data to be written */ - const char *outBuf; - /** current write position in buffer */ - TDEIO::fileoffset_t outBufPos; - /** length of buffer */ - TDEIO::fileoffset_t outBufLen; - /** use su if true else use ssh */ - bool local; - /** // FIXME: just a workaround for konq deficiencies */ - bool isStat; - /** // FIXME: just a workaround for konq deficiencies */ - TQString redirectUser, redirectPass; - -protected: // Protected attributes - /** for LIST/STAT */ - TDEIO::UDSEntry udsEntry; - /** for LIST/STAT */ - TDEIO::UDSEntry udsStatEntry; - /** for LIST/STAT */ - TDEIO::UDSAtom typeAtom; - /** for LIST/STAT */ - TDEIO::UDSAtom mimeAtom; - /** for LIST/STAT */ - TQString thisFn; - /** for STAT */ - TQString wantedFn; - TQString statPath; - /** url of current request */ - KURL url; - /** true if connection is logged in successfully */ - bool isLoggedIn; - /** host name of current connection */ - TQString connectionHost; - /** user name of current connection */ - TQString connectionUser; - /** port of current connection */ - int connectionPort; - /** password of current connection */ - TQString connectionPassword; - /** AuthInfo object used for logging in */ - TDEIO::AuthInfo connectionAuth; - /** number of lines received, == 0 -> everything went ok */ - int errorCount; - /** queue for lines to be sent */ - TQStringList qlist; - /** queue for commands to be sent */ - TQStringList commandList; - /** queue for commands to be sent */ - TQValueList<int> commandCodes; - /** bytes still to be read in raw mode */ - TDEIO::fileoffset_t rawRead; - /** bytes still to be written in raw mode */ - TDEIO::fileoffset_t rawWrite; - /** data bytes to read in next read command */ - TDEIO::fileoffset_t recvLen; - /** data bytes to write in next write command */ - TDEIO::fileoffset_t sendLen; - /** true if the last write operation was finished */ - bool writeReady; - /** true if a command stack is currently executing */ - bool isRunning; - /** reason of LIST command */ - enum { CHECK, LIST } listReason; - /** true if FISH server understands APPEND command */ - bool hasAppend; - /** permission of created file */ - int putPerm; - /** true if file may be overwritten */ - bool checkOverwrite; - /** current position of write */ - TDEIO::fileoffset_t putPos; - /** true if file already existed */ - bool checkExist; - /** true if this is the first login attempt (== use cached password) */ - bool firstLogin; - /** write buffer */ - TQByteArray rawData; - /** buffer for storing bytes used for MimeMagic */ - TQByteArray mimeBuffer; - /** whther the mimetype has been sent already */ - bool mimeTypeSent; - /** number of bytes read so far */ - TDEIO::fileoffset_t dataRead; - /** details about each fishCommand */ - static const struct fish_info { - const char *command; - int params; - const char *alt; - int lines; - } fishInfo[]; - /** last FISH command sent to server */ - enum fish_command_type { FISH_FISH, FISH_VER, FISH_PWD, FISH_LIST, FISH_STAT, - FISH_RETR, FISH_STOR, - FISH_CWD, FISH_CHMOD, FISH_DELE, FISH_MKD, FISH_RMD, - FISH_RENAME, FISH_LINK, FISH_SYMLINK, FISH_CHOWN, - FISH_CHGRP, FISH_READ, FISH_WRITE, FISH_COPY, FISH_APPEND, FISH_EXEC } fishCommand; - int fishCodeLen; -protected: // Protected methods - /** manages initial communication setup including password queries */ - int establishConnection(char *buffer, TDEIO::fileoffset_t buflen); - int received(const char *buffer, TDEIO::fileoffset_t buflen); - void sent(); - /** builds each FISH request and sets the error counter */ - bool sendCommand(fish_command_type cmd, ...); - /** checks response string for result code, converting 000 and 001 appropriately */ - int handleResponse(const TQString &str); - /** parses a ls -l time spec */ - int makeTimeFromLs(const TQString &dayStr, const TQString &monthStr, const TQString &timeyearStr); - /** executes a chain of commands */ - void run(); - /** creates the subprocess */ - bool connectionStart(); - /** writes one chunk of data to stdin of child process */ - void writeChild(const char *buf, TDEIO::fileoffset_t len); - /** parses response from server and acts accordingly */ - void manageConnection(const TQString &line); - /** writes to process */ - void writeStdin(const TQString &line); -}; - - -#endif |