summaryrefslogtreecommitdiffstats
path: root/kioslave/fish/fish.h
diff options
context:
space:
mode:
Diffstat (limited to 'kioslave/fish/fish.h')
-rw-r--r--kioslave/fish/fish.h211
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