summaryrefslogtreecommitdiffstats
path: root/kioslave/smb
diff options
context:
space:
mode:
Diffstat (limited to 'kioslave/smb')
-rw-r--r--kioslave/smb/CMakeLists.txt43
-rw-r--r--kioslave/smb/ConfigureChecks.cmake26
-rw-r--r--kioslave/smb/Makefile.am37
-rw-r--r--kioslave/smb/configure.in.bot9
-rw-r--r--kioslave/smb/configure.in.in34
-rw-r--r--kioslave/smb/kio_smb.cpp77
-rw-r--r--kioslave/smb/kio_smb.h301
-rw-r--r--kioslave/smb/kio_smb_auth.cpp207
-rw-r--r--kioslave/smb/kio_smb_browse.cpp476
-rw-r--r--kioslave/smb/kio_smb_config.cpp66
-rw-r--r--kioslave/smb/kio_smb_dir.cpp345
-rw-r--r--kioslave/smb/kio_smb_file.cpp279
-rw-r--r--kioslave/smb/kio_smb_internal.cpp135
-rw-r--r--kioslave/smb/kio_smb_internal.h118
-rw-r--r--kioslave/smb/kio_smb_mount.cpp211
-rw-r--r--kioslave/smb/libsmbclient-HOWTO.txt11
-rw-r--r--kioslave/smb/smb-network.desktop80
-rw-r--r--kioslave/smb/smb.protocol12
-rw-r--r--kioslave/smb/x-smb-server.desktop76
-rw-r--r--kioslave/smb/x-smb-workgroup.desktop74
20 files changed, 0 insertions, 2617 deletions
diff --git a/kioslave/smb/CMakeLists.txt b/kioslave/smb/CMakeLists.txt
deleted file mode 100644
index 4591192c9..000000000
--- a/kioslave/smb/CMakeLists.txt
+++ /dev/null
@@ -1,43 +0,0 @@
-#################################################
-#
-# (C) 2010-2011 Serghei Amelian
-# serghei (DOT) amelian (AT) gmail.com
-#
-# Improvements and feedback are welcome
-#
-# This file is released under GPL >= 2
-#
-#################################################
-
-include( ConfigureChecks.cmake )
-
-include_directories(
- ${CMAKE_CURRENT_BINARY_DIR}
- ${CMAKE_BINARY_DIR}
- ${TDE_INCLUDE_DIR}
- ${TQT_INCLUDE_DIRS}
- ${SMBCLIENT_INCLUDE_DIRS}
-)
-
-link_directories(
- ${TQT_LIBRARY_DIRS}
-)
-
-
-##### other data ################################
-
-install( FILES smb.protocol DESTINATION ${SERVICES_INSTALL_DIR} )
-install( FILES smb-network.desktop DESTINATION ${DATA_INSTALL_DIR}/konqueror/dirtree/remote )
-install( FILES smb-network.desktop DESTINATION ${DATA_INSTALL_DIR}/remoteview )
-install( FILES x-smb-workgroup.desktop x-smb-server.desktop DESTINATION ${MIME_INSTALL_DIR}/application )
-
-
-##### kio_smb (module) ##########################
-
-tde_add_kpart( kio_smb AUTOMOC
- SOURCES
- kio_smb.cpp kio_smb_auth.cpp kio_smb_browse.cpp kio_smb_config.cpp
- kio_smb_dir.cpp kio_smb_file.cpp kio_smb_internal.cpp kio_smb_mount.cpp
- LINK kio-shared ${SMBCLIENT_LIBRARIES}
- DESTINATION ${PLUGIN_INSTALL_DIR}
-)
diff --git a/kioslave/smb/ConfigureChecks.cmake b/kioslave/smb/ConfigureChecks.cmake
deleted file mode 100644
index da4d1a942..000000000
--- a/kioslave/smb/ConfigureChecks.cmake
+++ /dev/null
@@ -1,26 +0,0 @@
-#################################################
-#
-# (C) 2010-2011 Serghei Amelian
-# serghei (DOT) amelian (AT) gmail.com
-#
-# Improvements and feedback are welcome
-#
-# This file is released under GPL >= 2
-#
-#################################################
-
-pkg_search_module ( SMBCLIENT smbclient )
-if( SMBCLIENT_FOUND )
- set( HAVE_LIBSMBCLIENT_H 1 )
-else( )
- check_include_file( libsmbclient.h HAVE_LIBSMBCLIENT_H )
-endif( )
-
-if( HAVE_LIBSMBCLIENT_H )
- set( SMBCLIENT_LIBRARIES smbclient )
- check_library_exists( ${SMBCLIENT_LIBRARIES} smbc_new_context "" HAVE_SMBCLIENT )
-endif( )
-
-if( NOT HAVE_LIBSMBCLIENT_H OR NOT HAVE_SMBCLIENT )
- tde_message_fatal( "smbclient is requested, but was not found on your system." )
-endif( )
diff --git a/kioslave/smb/Makefile.am b/kioslave/smb/Makefile.am
deleted file mode 100644
index 896897325..000000000
--- a/kioslave/smb/Makefile.am
+++ /dev/null
@@ -1,37 +0,0 @@
-## Makefile.am of tdebase/kioslave/man
-
-INCLUDES=$(all_includes)
-
-kde_module_LTLIBRARIES = kio_smb.la
-kio_smb_la_SOURCES = kio_smb.cpp \
- kio_smb_auth.cpp \
- kio_smb_browse.cpp \
- kio_smb_config.cpp \
- kio_smb_dir.cpp \
- kio_smb_file.cpp \
- kio_smb_internal.cpp \
- kio_smb_mount.cpp
-
-kio_smb_la_LIBADD = -lkio -lsmbclient $(SMBCLIENT_EXTRA_LIBS)
-
-kio_smb_la_LDFLAGS = $(all_libraries) -module $(KDE_PLUGIN)
-
-noinst_HEADERS = kio_smb.h kio_smb_internal.h
-
-kdelnk_DATA = smb.protocol
-
-kdelnkdir = $(kde_servicesdir)
-
-dirtree_DATA = smb-network.desktop
-dirtreedir = $(kde_datadir)/konqueror/dirtree/remote
-
-remote_DATA = smb-network.desktop
-remotedir = $(kde_datadir)/remoteview
-
-METASOURCES = AUTO
-
-mimetypedir = $(kde_mimedir)/application
-mimetype_DATA = x-smb-workgroup.desktop x-smb-server.desktop
-
-messages:
- $(XGETTEXT) *.cpp -o $(podir)/kio_smb.pot
diff --git a/kioslave/smb/configure.in.bot b/kioslave/smb/configure.in.bot
deleted file mode 100644
index 0d478c414..000000000
--- a/kioslave/smb/configure.in.bot
+++ /dev/null
@@ -1,9 +0,0 @@
-if test "x$with_samba" = xcheck && test "x$have_libsmbclient" = xno; then
- echo ""
- echo "You're missing libsmbclient from samba 3.0"
- echo "KDE will not be able to browse windows shares without it,"
- echo "consider installing it."
- echo "Look at kioslave/smb/libsmbclient-HOWTO.txt"
- echo ""
- all_tests=bad
-fi
diff --git a/kioslave/smb/configure.in.in b/kioslave/smb/configure.in.in
deleted file mode 100644
index 0a0cdcc86..000000000
--- a/kioslave/smb/configure.in.in
+++ /dev/null
@@ -1,34 +0,0 @@
-AC_DEFUN([SMB_CHECK],
-[
-AC_REQUIRE([KDE_CHECK_LARGEFILE])
-
-AC_ARG_WITH(samba,
- [AC_HELP_STRING(--with-samba,
- [enable the samba ioslave @<:@default=check@:>@])],
- [], with_samba=check)
-
-have_libsmbclient=no
-if test "x$with_samba" != xno; then
- have_libsmbclient=yes
- KDE_CHECK_HEADER(libsmbclient.h, [], [have_libsmbclient=no])
- KDE_CHECK_LIB(smbclient, smbc_new_context, [], [have_libsmbclient=no])
-
- SMBCLIENT_EXTRA_LIBS=""
- AC_CHECK_FUNC(yp_get_default_domain, [],
- [
- KDE_CHECK_LIB(nsl, yp_get_default_domain,
- [SMBCLIENT_EXTRA_LIBS="-lnsl"] )
- ])
-
- AC_SUBST(SMBCLIENT_EXTRA_LIBS)
-
- if test "x$with_samba" != xcheck && test "x$have_libsmbclient" = xno; then
- AC_MSG_ERROR([--with-samba was given, but test for libsmbclient failed])
- fi
-fi
-
-AM_CONDITIONAL(include_kioslave_smb, test "x$have_libsmbclient" = xyes)
-
-])
-
-SMB_CHECK
diff --git a/kioslave/smb/kio_smb.cpp b/kioslave/smb/kio_smb.cpp
deleted file mode 100644
index 8895588dd..000000000
--- a/kioslave/smb/kio_smb.cpp
+++ /dev/null
@@ -1,77 +0,0 @@
-/////////////////////////////////////////////////////////////////////////////
-//
-// Project: SMB kioslave for KDE2
-//
-// File: Top level implementation file for kio_smb.cpp
-//
-// Abstract: member function implementations for SMBSlave
-//
-// Author(s): Matthew Peterson <mpeterson@caldera.com>
-//
-//---------------------------------------------------------------------------
-//
-// Copyright (c) 2000 Caldera Systems, Inc.
-//
-// 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.1 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 Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; see the file COPYING. If not, please obtain
-// a copy from http://www.gnu.org/copyleft/gpl.html
-//
-/////////////////////////////////////////////////////////////////////////////
-
-#include "kio_smb.h"
-#include "kio_smb_internal.h"
-
-//===========================================================================
-SMBSlave::SMBSlave(const TQCString& pool, const TQCString& app)
- : SlaveBase( "smb", pool, app )
-{
- m_initialized_smbc = false;
-
- //read in the default workgroup info...
- reparseConfiguration();
-
- //initialize the library...
- auth_initialize_smbc();
-}
-
-
-//===========================================================================
-SMBSlave::~SMBSlave()
-{
-}
-
-
-//===========================================================================
-// pointer to the slave created in kdemain
-SMBSlave* G_TheSlave;
-
-//===========================================================================
-int KDE_EXPORT kdemain( int argc, char **argv )
-{
-
- TDEInstance instance( "kio_smb" );
- if( argc != 4 )
- {
- kdDebug(KIO_SMB) << "Usage: kio_smb protocol domain-socket1 domain-socket2"
- << endl;
- return -1;
- }
-
- SMBSlave slave( argv[2], argv[3] );
-
- G_TheSlave = &slave;
- slave.dispatchLoop();
-
- return 0;
-}
-
diff --git a/kioslave/smb/kio_smb.h b/kioslave/smb/kio_smb.h
deleted file mode 100644
index d111c7646..000000000
--- a/kioslave/smb/kio_smb.h
+++ /dev/null
@@ -1,301 +0,0 @@
-/////////////////////////////////////////////////////////////////////////////
-//
-// Project: SMB kioslave for KDE2
-//
-// File: kio_smb.h
-//
-// Abstract: The main kio slave class declaration. For convenience,
-// in concurrent devlopment, the implementation for this class
-// is separated into several .cpp files -- the file containing
-// the implementation should be noted in the comments for each
-// member function.
-//
-// Author(s): Matthew Peterson <mpeterson@caldera.com>
-//
-//---------------------------------------------------------------------------
-//
-// Copyright (c) 2000 Caldera Systems, Inc.
-//
-// 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.1 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 Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; see the file COPYING. If not, please obtain
-// a copy from http://www.gnu.org/copyleft/gpl.html
-//
-/////////////////////////////////////////////////////////////////////////////
-
-
-#ifndef KIO_SMB_H_INCLUDED
-#define KIO_SMB_H_INCLUDED
-
-//-------------
-// QT includes
-//-------------
-#include <tqstring.h>
-#include <tqptrlist.h>
-#include <tqstringlist.h>
-#include <tqtextstream.h>
-#include <tqstrlist.h>
-
-//--------------
-// KDE includes
-//--------------
-#include <kdebug.h>
-#include <kinstance.h>
-#include <kio/global.h>
-#include <kio/slavebase.h>
-#include <kurl.h>
-#include <klocale.h>
-
-//-----------------------------
-// Standard C library includes
-//-----------------------------
-#include <stdlib.h>
-#include <sys/stat.h>
-#include <sys/ioctl.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <net/if.h>
-#include <arpa/inet.h>
-#include <stdio.h>
-#include <errno.h>
-#include <time.h>
-#include <tqobject.h>
-
-//-------------------------------
-// Samba client library includes
-//-------------------------------
-extern "C"
-{
-#include <libsmbclient.h>
-}
-
-//---------------------------
-// kio_smb internal includes
-//---------------------------
-#include "kio_smb_internal.h"
-
-#define MAX_XFER_BUF_SIZE 16348
-#define KIO_SMB 7106
-
-using namespace TDEIO;
-class TDEProcess;
-
-//===========================================================================
-
-
-class SMBSlave : public TQObject, public TDEIO::SlaveBase
-{
- Q_OBJECT
-
-private:
- //---------------------------------------------------------------------
- // please make sure your private data does not duplicate existing data
- //---------------------------------------------------------------------
- bool m_initialized_smbc;
-
- /**
- * From Controlcenter
- */
- TQString m_default_user;
-// TQString m_default_workgroup; //currently unused, Alex <neundorf@kde.org>
- TQString m_default_password;
- TQString m_default_encoding;
-
- /**
- * we store the current url, it's needed for
- * callback authorisation method
- */
- SMBUrl m_current_url;
-
- /**
- * From Controlcenter, show SHARE$ or not
- */
-// bool m_showHiddenShares; //currently unused, Alex <neundorf@kde.org>
-
- /**
- * libsmbclient need global variables to store in,
- * else it crashes on exit next method after use cache_stat,
- * looks like gcc (C/C++) failure
- */
- struct stat st;
-protected:
- //---------------------------------------------
- // Authentication functions (kio_smb_auth.cpp)
- //---------------------------------------------
- // (please prefix functions with auth)
-
-
- /**
- * Description : Initilizes the libsmbclient
- * Return : true on success false with errno set on error
- */
- bool auth_initialize_smbc();
-
- bool checkPassword(SMBUrl &url);
-
-
- //---------------------------------------------
- // Cache functions (kio_smb_auth.cpp)
- //---------------------------------------------
-
- //Stat methods
-
- //-----------------------------------------
- // Browsing functions (kio_smb_browse.cpp)
- //-----------------------------------------
- // (please prefix functions with browse)
-
- /**
- * Description : Return a stat of given SMBUrl. Calls cache_stat and
- * pack it in UDSEntry. UDSEntry will not be cleared
- * Parameter : SMBUrl the url to stat
- * ignore_errors do not call error(), but warning()
- * Return : false if any error occoured (errno), else true
- */
- bool browse_stat_path(const SMBUrl& url, UDSEntry& udsentry, bool ignore_errors);
-
- /**
- * Description : call smbc_stat and return stats of the url
- * Parameter : SMBUrl the url to stat
- * Return : stat* of the url
- * Note : it has some problems with stat in method, looks like
- * something leave(or removed) on the stack. If your
- * method segfault on returning try to change the stat*
- * variable
- */
- int cache_stat( const SMBUrl& url, struct stat* st );
-
- //---------------------------------------------
- // Configuration functions (kio_smb_config.cpp)
- //---------------------------------------------
- // (please prefix functions with config)
-
-
- //---------------------------------------
- // Directory functions (kio_smb_dir.cpp)
- //---------------------------------------
- // (please prefix functions with dir)
-
-
- //--------------------------------------
- // File IO functions (kio_smb_file.cpp)
- //--------------------------------------
- // (please prefix functions with file)
-
- //----------------------------
- // Misc functions (this file)
- //----------------------------
-
-
- /**
- * Description : correct a given URL
- * valid URL's are
- *
- * smb://[[domain;]user[:password]@]server[:port][/share[/path[/file]]]
- * smb:/[[domain;]user[:password]@][group/[server[/share[/path[/file]]]]]
- * domain = workgroup(domain) of the user
- * user = username
- * password = password of useraccount
- * group = workgroup(domain) of server
- * server = host to connect
- * share = a share of the server (host)
- * path = a path of the share
- * Parameter : KURL the url to check
- * Return : new KURL if its corrected. else the same KURL
- */
- KURL checkURL(const KURL& kurl) const;
-
- void reportError(const SMBUrl &kurl);
-
-public:
-
- //-----------------------------------------------------------------------
- // smbclient authentication callback (note that this is called by the
- // global ::auth_smbc_get_data() call.
- void auth_smbc_get_data(const char *server,const char *share,
- char *workgroup, int wgmaxlen,
- char *username, int unmaxlen,
- char *password, int pwmaxlen);
-
-
- //-----------------------------------------------------------------------
- // Overwritten functions from the base class that define the operation of
- // this slave. (See the base class headerfile slavebase.h for more
- // details)
- //-----------------------------------------------------------------------
-
- // Functions overwritten in kio_smb.cpp
- SMBSlave(const TQCString& pool, const TQCString& app);
- virtual ~SMBSlave();
-
- // Functions overwritten in kio_smb_browse.cpp
- virtual void listDir( const KURL& url );
- virtual void stat( const KURL& url );
-
- // Functions overwritten in kio_smb_config.cpp
- virtual void reparseConfiguration();
-
- // Functions overwritten in kio_smb_dir.cpp
- virtual void copy( const KURL& src, const KURL &dest, int permissions, bool overwrite );
- virtual void del( const KURL& kurl, bool isfile);
- virtual void mkdir( const KURL& kurl, int permissions );
- virtual void rename( const KURL& src, const KURL& dest, bool overwrite );
-
- // Functions overwritten in kio_smb_file.cpp
- virtual void get( const KURL& kurl );
- virtual void put( const KURL& kurl, int permissions, bool overwrite, bool resume );
-
- // Functions not implemented (yet)
- //virtual void setHost(const TQString& host, int port, const TQString& user, const TQString& pass);
- //virtual void openConnection();
- //virtual void closeConnection();
- //virtual void slave_status();
- virtual void special( const TQByteArray & );
-
-private slots:
- void readOutput(TDEProcess *proc, char *buffer, int buflen);
- void readStdErr(TDEProcess *proc, char *buffer, int buflen);
-
-private:
- TQString mybuf, mystderr;
-
-};
-
-//===========================================================================
-// pointer to the slave created in kdemain
-extern SMBSlave* G_TheSlave;
-
-
-//==========================================================================
-// the global libsmbclient authentication callback function
-extern "C"
-{
-
-void auth_smbc_get_data(const char *server,const char *share,
- char *workgroup, int wgmaxlen,
- char *username, int unmaxlen,
- char *password, int pwmaxlen);
-
-}
-
-
-//===========================================================================
-// Main slave entrypoint (see kio_smb.cpp)
-extern "C"
-{
-
-int kdemain( int argc, char **argv );
-
-}
-
-
-#endif //#endif KIO_SMB_H_INCLUDED
diff --git a/kioslave/smb/kio_smb_auth.cpp b/kioslave/smb/kio_smb_auth.cpp
deleted file mode 100644
index b03e77420..000000000
--- a/kioslave/smb/kio_smb_auth.cpp
+++ /dev/null
@@ -1,207 +0,0 @@
-/////////////////////////////////////////////////////////////////////////////
-//
-// Project: SMB kioslave for KDE2
-//
-// File: kio_smb_auth.cpp
-//
-// Abstract: member function implementations for SMBSlave that deal with
-// SMB directory access
-//
-// Author(s): Matthew Peterson <mpeterson@caldera.com>
-//
-//---------------------------------------------------------------------------
-//
-// Copyright (c) 2000 Caldera Systems, Inc.
-//
-// 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.1 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 Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; see the file COPYING. If not, please obtain
-// a copy from http://www.gnu.org/copyleft/gpl.html
-//
-/////////////////////////////////////////////////////////////////////////////
-
-#include "kio_smb.h"
-#include "kio_smb_internal.h"
-
-#include <ksimpleconfig.h>
-#include <tqdir.h>
-#include <stdlib.h>
-
-// call for libsmbclient
-//==========================================================================
-void auth_smbc_get_data(const char *server,const char *share,
- char *workgroup, int wgmaxlen,
- char *username, int unmaxlen,
- char *password, int pwmaxlen)
-//==========================================================================
-{
- G_TheSlave->auth_smbc_get_data(server, share,
- workgroup,wgmaxlen,
- username, unmaxlen,
- password, pwmaxlen);
-}
-
-//--------------------------------------------------------------------------
-void SMBSlave::auth_smbc_get_data(const char *server,const char *share,
- char *workgroup, int wgmaxlen,
- char *username, int unmaxlen,
- char *password, int pwmaxlen)
-//--------------------------------------------------------------------------
-{
- //check this to see if we "really" need to authenticate...
- SMBUrlType t = m_current_url.getType();
- if( t == SMBURLTYPE_ENTIRE_NETWORK )
- {
- kdDebug(KIO_SMB) << "we don't really need to authenticate for this top level url, returning" << endl;
- return;
- }
- kdDebug(KIO_SMB) << "AAAAAAAAAAAAAA auth_smbc_get_dat: set user=" << username << ", workgroup=" << workgroup
- << " server=" << server << ", share=" << share << endl;
-
- TQString s_server = TQString::fromUtf8(server);
- TQString s_share = TQString::fromUtf8(share);
- workgroup[wgmaxlen - 1] = 0;
- TQString s_workgroup = TQString::fromUtf8(workgroup);
- username[unmaxlen - 1] = 0;
- TQString s_username = TQString::fromUtf8(username);
- password[pwmaxlen - 1] = 0;
- TQString s_password = TQString::fromUtf8(password);
-
- TDEIO::AuthInfo info;
- info.url = KURL("smb:///");
- info.url.setHost(s_server);
- info.url.setPath("/" + s_share);
-
- info.username = s_username;
- info.password = s_password;
- info.verifyPath = true;
-
- kdDebug(KIO_SMB) << "libsmb-auth-callback URL:" << info.url << endl;
-
- if ( !checkCachedAuthentication( info ) )
- {
- if ( m_default_user.isEmpty() )
- {
- // ok, we do not know the password. Let's try anonymous before we try for real
- info.username = "anonymous";
- info.password = TQString::null;
- }
- else
- {
- // user defined a default username/password in kcontrol; try this
- info.username = m_default_user;
- info.password = m_default_password;
- }
-
- } else
- kdDebug(KIO_SMB) << "got password through cache" << endl;
-
- strncpy(username, info.username.utf8(), unmaxlen - 1);
- strncpy(password, info.password.utf8(), pwmaxlen - 1);
-}
-
-bool SMBSlave::checkPassword(SMBUrl &url)
-{
- kdDebug(KIO_SMB) << "checkPassword for " << url << endl;
-
- TDEIO::AuthInfo info;
- info.url = KURL("smb:///");
- info.url.setHost(url.host());
-
- TQString share = url.path();
- int index = share.find('/', 1);
- if (index > 1)
- share = share.left(index);
- if (share.at(0) == '/')
- share = share.mid(1);
- info.url.setPath("/" + share);
- info.verifyPath = true;
-
- if ( share.isEmpty() )
- info.prompt = i18n(
- "<qt>Please enter authentication information for <b>%1</b></qt>" )
- .arg( url.host() );
- else
- info.prompt = i18n(
- "Please enter authentication information for:\n"
- "Server = %1\n"
- "Share = %2" )
- .arg( url.host() )
- .arg( share );
-
- info.username = url.user();
- kdDebug(KIO_SMB) << "call openPassDlg for " << info.url << endl;
-
- if ( openPassDlg(info) ) {
- kdDebug(KIO_SMB) << "openPassDlg returned " << info.username << endl;
- url.setUser(info.username);
- url.setPass(info.password);
- return true;
- }
- kdDebug(KIO_SMB) << "no value from openPassDlg\n";
- return false;
-}
-
-//--------------------------------------------------------------------------
-// Initalizes the smbclient library
-//
-// Returns: 0 on success -1 with errno set on error
-bool SMBSlave::auth_initialize_smbc()
-{
- SMBCCTX *smb_context = NULL;
-
- kdDebug(KIO_SMB) << "auth_initialize_smbc " << endl;
- if(m_initialized_smbc == false)
- {
- kdDebug(KIO_SMB) << "smbc_init call" << endl;
- KSimpleConfig cfg( "kioslaverc", true );
-
- cfg.setGroup( "SMB" );
- int debug_level = cfg.readNumEntry( "DebugLevel", 0 );
-
-#if 0
- /* old API initialisation routine does not allow to set flags */
-
- if(smbc_init(::auth_smbc_get_data,debug_level) == -1)
- {
- SlaveBase::error(ERR_INTERNAL, i18n("libsmbclient failed to initialize"));
- return false;
- }
-#endif
- smb_context = smbc_new_context();
- if (smb_context == NULL) {
- SlaveBase::error(ERR_INTERNAL, i18n("libsmbclient failed to create context"));
- return false;
- }
-
- smb_context->debug = debug_level;
- smb_context->callbacks.auth_fn = ::auth_smbc_get_data;
-
- if (!smbc_init_context(smb_context)) {
- smbc_free_context(smb_context, false);
- smb_context = NULL;
- SlaveBase::error(ERR_INTERNAL, i18n("libsmbclient failed to initialize context"));
- return false;
- }
-
-#if defined(SMB_CTX_FLAG_USE_KERBEROS) && defined(SMB_CTX_FLAG_FALLBACK_AFTER_KERBEROS)
- smb_context->flags |= SMB_CTX_FLAG_USE_KERBEROS | SMB_CTX_FLAG_FALLBACK_AFTER_KERBEROS;
-#endif
-
- smbc_set_context(smb_context);
-
- m_initialized_smbc = true;
- }
-
- return true;
-}
-
diff --git a/kioslave/smb/kio_smb_browse.cpp b/kioslave/smb/kio_smb_browse.cpp
deleted file mode 100644
index b8f237653..000000000
--- a/kioslave/smb/kio_smb_browse.cpp
+++ /dev/null
@@ -1,476 +0,0 @@
-
-/////////////////////////////////////////////////////////////////////////////
-//
-// Project: SMB kioslave for KDE2
-//
-// File: kio_smb_browse.cpp
-//
-// Abstract: member function implementations for SMBSlave that deal with
-// SMB browsing
-//
-// Author(s): Matthew Peterson <mpeterson@caldera.com>
-//
-//---------------------------------------------------------------------------
-//
-// Copyright (c) 2000 Caldera Systems, Inc.
-//
-// 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.1 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 Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; see the file COPYING. If not, please obtain
-// a copy from http://www.gnu.org/copyleft/gpl.html
-//
-/////////////////////////////////////////////////////////////////////////////
-
-#include <config.h>
-#include <pwd.h>
-#include <grp.h>
-
-#include <tqtextcodec.h>
-
-#include <kglobal.h>
-
-#include "kio_smb.h"
-#include "kio_smb_internal.h"
-
-using namespace TDEIO;
-
-int SMBSlave::cache_stat(const SMBUrl &url, struct stat* st )
-{
- int result = smbc_stat( url.toSmbcUrl(), st);
- kdDebug(KIO_SMB) << "smbc_stat " << url << " " << errno << " " << result << endl;
- kdDebug(KIO_SMB) << "size " << (TDEIO::filesize_t)st->st_size << endl;
- return result;
-}
-
-//---------------------------------------------------------------------------
-bool SMBSlave::browse_stat_path(const SMBUrl& _url, UDSEntry& udsentry, bool ignore_errors)
- // Returns: true on success, false on failure
-{
- UDSAtom udsatom;
-
- SMBUrl url = _url;
-
- if(cache_stat(url, &st) == 0)
- {
- if(!S_ISDIR(st.st_mode) && !S_ISREG(st.st_mode))
- {
- kdDebug(KIO_SMB)<<"SMBSlave::browse_stat_path mode: "<<st.st_mode<<endl;
- warning(i18n("%1:\n"
- "Unknown file type, neither directory or file.").arg(url.prettyURL()));
- return false;
- }
-
- udsatom.m_uds = TDEIO::UDS_FILE_TYPE;
- udsatom.m_long = st.st_mode & S_IFMT;
- udsentry.append(udsatom);
-
- udsatom.m_uds = TDEIO::UDS_SIZE;
- udsatom.m_long = st.st_size;
- udsentry.append(udsatom);
-
- udsatom.m_uds = TDEIO::UDS_USER;
- uid_t uid = st.st_uid;
- struct passwd *user = getpwuid( uid );
- if ( user )
- udsatom.m_str = user->pw_name;
- else
- udsatom.m_str = TQString::number( uid );
- udsentry.append(udsatom);
-
- udsatom.m_uds = TDEIO::UDS_GROUP;
- gid_t gid = st.st_gid;
- struct group *grp = getgrgid( gid );
- if ( grp )
- udsatom.m_str = grp->gr_name;
- else
- udsatom.m_str = TQString::number( gid );
- udsentry.append(udsatom);
-
- udsatom.m_uds = TDEIO::UDS_ACCESS;
- udsatom.m_long = st.st_mode & 07777;
- udsentry.append(udsatom);
-
- udsatom.m_uds = UDS_MODIFICATION_TIME;
- udsatom.m_long = st.st_mtime;
- udsentry.append(udsatom);
-
- udsatom.m_uds = UDS_ACCESS_TIME;
- udsatom.m_long = st.st_atime;
- udsentry.append(udsatom);
-
- udsatom.m_uds = UDS_CREATION_TIME;
- udsatom.m_long = st.st_ctime;
- udsentry.append(udsatom);
-
- }
- else
- {
- if (!ignore_errors) {
- if (errno == EPERM || errno == EACCES)
- if (checkPassword(url)) {
- redirection( url );
- return false;
- }
-
- reportError(url);
- } else if (errno == ENOENT || errno == ENOTDIR) {
- warning(i18n("File does not exist: %1").arg(url.url()));
- }
- kdDebug(KIO_SMB) << "SMBSlave::browse_stat_path ERROR!!"<< endl;
- return false;
- }
-
- return true;
-}
-
-//===========================================================================
-void SMBSlave::stat( const KURL& kurl )
-{
- kdDebug(KIO_SMB) << "SMBSlave::stat on "<< kurl << endl;
- // make a valid URL
- KURL url = checkURL(kurl);
-
- // if URL is not valid we have to redirect to correct URL
- if (url != kurl)
- {
- kdDebug() << "redirection " << url << endl;
- redirection(url);
- finished();
- return;
- }
-
- m_current_url = url;
-
- UDSAtom udsatom;
- UDSEntry udsentry;
- // Set name
- udsatom.m_uds = TDEIO::UDS_NAME;
- udsatom.m_str = kurl.fileName();
- udsentry.append( udsatom );
-
- switch(m_current_url.getType())
- {
- case SMBURLTYPE_UNKNOWN:
- error(ERR_MALFORMED_URL,m_current_url.prettyURL());
- finished();
- return;
-
- case SMBURLTYPE_ENTIRE_NETWORK:
- case SMBURLTYPE_WORKGROUP_OR_SERVER:
- udsatom.m_uds = TDEIO::UDS_FILE_TYPE;
- udsatom.m_long = S_IFDIR;
- udsentry.append(udsatom);
- break;
-
- case SMBURLTYPE_SHARE_OR_PATH:
- if (browse_stat_path(m_current_url, udsentry, false))
- break;
- else {
- kdDebug(KIO_SMB) << "SMBSlave::stat ERROR!!"<< endl;
- finished();
- return;
- }
- default:
- kdDebug(KIO_SMB) << "SMBSlave::stat UNKNOWN " << url << endl;
- finished();
- return;
- }
-
- statEntry(udsentry);
- finished();
-}
-
-//===========================================================================
-// TODO: complete checking
-KURL SMBSlave::checkURL(const KURL& kurl) const
-{
- kdDebug(KIO_SMB) << "checkURL " << kurl << endl;
- TQString surl = kurl.url();
- if (surl.startsWith("smb:/")) {
- if (surl.length() == 5) // just the above
- return kurl; // unchanged
-
- if (surl.at(5) != '/') {
- surl = "smb://" + surl.mid(5);
- kdDebug(KIO_SMB) << "checkURL return1 " << surl << " " << KURL(surl) << endl;
- return KURL(surl);
- }
- }
-
- // smb:/ normaly have no userinfo
- // we must redirect ourself to remove the username and password
- if (surl.contains('@') && !surl.contains("smb://")) {
- KURL url(kurl);
- url.setPath("/"+kurl.url().right( kurl.url().length()-kurl.url().find('@') -1));
- TQString userinfo = kurl.url().mid(5, kurl.url().find('@')-5);
- if(userinfo.contains(':')) {
- url.setUser(userinfo.left(userinfo.find(':')));
- url.setPass(userinfo.right(userinfo.length()-userinfo.find(':')-1));
- } else {
- url.setUser(userinfo);
- }
- kdDebug(KIO_SMB) << "checkURL return2 " << url << endl;
- return url;
- }
-
- // no emtpy path
- KURL url(kurl);
-
- if (url.path().isEmpty())
- url.setPath("/");
-
- kdDebug(KIO_SMB) << "checkURL return3 " << url << endl;
- return url;
-}
-
-void SMBSlave::reportError(const SMBUrl &url)
-{
- kdDebug(KIO_SMB) << "reportError " << url << " " << perror << endl;
- switch(errno)
- {
- case ENOENT:
- if (url.getType() == SMBURLTYPE_ENTIRE_NETWORK)
- error( ERR_SLAVE_DEFINED, i18n("Unable to find any workgroups in your local network. This might be caused by an enabled firewall."));
- else
- error( ERR_DOES_NOT_EXIST, url.prettyURL());
- break;
-#ifdef ENOMEDIUM
- case ENOMEDIUM:
- error( ERR_SLAVE_DEFINED,
- i18n( "No media in device for %1" ).arg( url.prettyURL() ) );
- break;
-#endif
-#ifdef EHOSTDOWN
- case EHOSTDOWN:
-#endif
- case ECONNREFUSED:
- error( ERR_SLAVE_DEFINED,
- i18n( "Could not connect to host for %1" ).arg( url.prettyURL() ) );
- break;
- case ENOTDIR:
- error( ERR_CANNOT_ENTER_DIRECTORY, url.prettyURL());
- break;
- case EFAULT:
- case EINVAL:
- error( ERR_DOES_NOT_EXIST, url.prettyURL());
- break;
- case EPERM:
- case EACCES:
- error( ERR_ACCESS_DENIED, url.prettyURL() );
- break;
- case EIO:
- case ENETUNREACH:
- if ( url.getType() == SMBURLTYPE_ENTIRE_NETWORK || url.getType() == SMBURLTYPE_WORKGROUP_OR_SERVER )
- error( ERR_SLAVE_DEFINED, i18n( "Error while connecting to server responsible for %1" ).arg( url.prettyURL() ) );
- else
- error( ERR_CONNECTION_BROKEN, url.prettyURL());
- break;
- case ENOMEM:
- error( ERR_OUT_OF_MEMORY, url.prettyURL() );
- break;
- case ENODEV:
- error( ERR_SLAVE_DEFINED, i18n("Share could not be found on given server"));
- break;
- case EBADF:
- error( ERR_INTERNAL, i18n("BAD File descriptor"));
- break;
- case ETIMEDOUT:
- error( ERR_SERVER_TIMEOUT, url.host() );
- break;
-#ifdef ENOTUNIQ
- case ENOTUNIQ:
- error( ERR_SLAVE_DEFINED, i18n( "The given name could not be resolved to a unique server. "
- "Make sure your network is setup without any name conflicts "
- "between names used by Windows and by UNIX name resolution." ) );
- break;
-#endif
- case 0: // success
- error( ERR_INTERNAL, i18n("libsmbclient reported an error, but did not specify "
- "what the problem is. This might indicate a severe problem "
- "with your network - but also might indicate a problem with "
- "libsmbclient.\n"
- "If you want to help us, please provide a tcpdump of the "
- "network interface while you try to browse (be aware that "
- "it might contain private data, so do not post it if you are "
- "unsure about that - you can send it privately to the developers "
- "if they ask for it)") );
- break;
- default:
- error( ERR_INTERNAL, i18n("Unknown error condition in stat: %1").arg(TQString::fromLocal8Bit( strerror(errno))) );
- }
-}
-
-//===========================================================================
-void SMBSlave::listDir( const KURL& kurl )
-{
- kdDebug(KIO_SMB) << "SMBSlave::listDir on " << kurl << endl;
-
- // check (correct) URL
- KURL url = checkURL(kurl);
- // if URL is not valid we have to redirect to correct URL
- if (url != kurl)
- {
- redirection(url);
- finished();
- return;
- }
-
- m_current_url = kurl;
-
- int dirfd;
- struct smbc_dirent *dirp = NULL;
- UDSEntry udsentry;
- UDSAtom atom;
-
- dirfd = smbc_opendir( m_current_url.toSmbcUrl() );
- kdDebug(KIO_SMB) << "SMBSlave::listDir open " << m_current_url.toSmbcUrl() << " " << m_current_url.getType() << " " << dirfd << endl;
- if(dirfd >= 0)
- {
- do {
- kdDebug(KIO_SMB) << "smbc_readdir " << endl;
- dirp = smbc_readdir(dirfd);
- if(dirp == 0)
- break;
-
- // Set name
- atom.m_uds = TDEIO::UDS_NAME;
- TQString dirpName = TQString::fromUtf8( dirp->name );
- // We cannot trust dirp->commentlen has it might be with or without the NUL character
- // See KDE bug #111430 and Samba bug #3030
- TQString comment = TQString::fromUtf8( dirp->comment );
- if ( dirp->smbc_type == SMBC_SERVER || dirp->smbc_type == SMBC_WORKGROUP ) {
- atom.m_str = dirpName.lower();
- atom.m_str.at( 0 ) = dirpName.at( 0 ).upper();
- if ( !comment.isEmpty() && dirp->smbc_type == SMBC_SERVER )
- atom.m_str += " (" + comment + ")";
- } else
- atom.m_str = dirpName;
-
- kdDebug(KIO_SMB) << "dirp->name " << dirp->name << " " << dirpName << " '" << comment << "'" << " " << dirp->smbc_type << endl;
-
- udsentry.append( atom );
- if (atom.m_str.upper()=="IPC$" || atom.m_str=="." || atom.m_str == ".." ||
- atom.m_str.upper() == "ADMIN$" || atom.m_str.lower() == "printer$" || atom.m_str.lower() == "print$" )
- {
-// fprintf(stderr,"----------- hide: -%s-\n",dirp->name);
- // do nothing and hide the hidden shares
- }
- else if(dirp->smbc_type == SMBC_FILE)
- {
- // Set stat information
- m_current_url.addPath(dirpName);
- browse_stat_path(m_current_url, udsentry, true);
- m_current_url.cd("..");
-
- // Call base class to list entry
- listEntry(udsentry, false);
- }
- else if(dirp->smbc_type == SMBC_DIR)
- {
- m_current_url.addPath(dirpName);
- browse_stat_path(m_current_url, udsentry, true);
- m_current_url.cd("..");
-
- // Call base class to list entry
- listEntry(udsentry, false);
- }
- else if(dirp->smbc_type == SMBC_SERVER ||
- dirp->smbc_type == SMBC_FILE_SHARE)
- {
- // Set type
- atom.m_uds = TDEIO::UDS_FILE_TYPE;
- atom.m_long = S_IFDIR;
- udsentry.append( atom );
-
- // Set permissions
- atom.m_uds = TDEIO::UDS_ACCESS;
- atom.m_long = (S_IRUSR | S_IRGRP | S_IROTH | S_IXUSR | S_IXGRP | S_IXOTH);
- udsentry.append(atom);
-
- if (dirp->smbc_type == SMBC_SERVER) {
- atom.m_uds = TDEIO::UDS_URL;
- // TQString workgroup = m_current_url.host().upper();
- KURL u("smb:/");
- u.setHost(dirpName);
- atom.m_str = u.url();
-
- // when libsmbclient knows
- // atom.m_str = TQString("smb://%1?WORKGROUP=%2").arg(dirpName).arg(workgroup.upper());
- kdDebug(KIO_SMB) << "list item " << atom.m_str << endl;
- udsentry.append(atom);
-
- atom.m_uds = TDEIO::UDS_MIME_TYPE;
- atom.m_str = TQString::fromLatin1("application/x-smb-server");
- udsentry.append(atom);
- }
-
- // Call base class to list entry
- listEntry(udsentry, false);
- }
- else if(dirp->smbc_type == SMBC_WORKGROUP)
- {
- // Set type
- atom.m_uds = TDEIO::UDS_FILE_TYPE;
- atom.m_long = S_IFDIR;
- udsentry.append( atom );
-
- // Set permissions
- atom.m_uds = TDEIO::UDS_ACCESS;
- atom.m_long = (S_IRUSR | S_IRGRP | S_IROTH | S_IXUSR | S_IXGRP | S_IXOTH);
- udsentry.append(atom);
-
- atom.m_uds = TDEIO::UDS_MIME_TYPE;
- atom.m_str = TQString::fromLatin1("application/x-smb-workgroup");
- udsentry.append(atom);
-
- atom.m_uds = TDEIO::UDS_URL;
- // TQString workgroup = m_current_url.host().upper();
- KURL u("smb:/");
- u.setHost(dirpName);
- atom.m_str = u.url();
- udsentry.append(atom);
-
- // Call base class to list entry
- listEntry(udsentry, false);
- }
- else
- {
- kdDebug(KIO_SMB) << "SMBSlave::listDir SMBC_UNKNOWN :" << dirpName << endl;
- // TODO: we don't handle SMBC_IPC_SHARE, SMBC_PRINTER_SHARE
- // SMBC_LINK, SMBC_COMMS_SHARE
- //SlaveBase::error(ERR_INTERNAL, TEXT_UNSUPPORTED_FILE_TYPE);
- // continue;
- }
- udsentry.clear();
- } while (dirp); // checked already in the head
-
- // clean up
- smbc_closedir(dirfd);
- }
- else
- {
- if (errno == EPERM || errno == EACCES)
- if (checkPassword(m_current_url)) {
- redirection( m_current_url );
- finished();
- return;
- }
-
- reportError(m_current_url);
- finished();
- return;
- }
-
- listEntry(udsentry, true);
- finished();
-}
-
diff --git a/kioslave/smb/kio_smb_config.cpp b/kioslave/smb/kio_smb_config.cpp
deleted file mode 100644
index 123462772..000000000
--- a/kioslave/smb/kio_smb_config.cpp
+++ /dev/null
@@ -1,66 +0,0 @@
-/////////////////////////////////////////////////////////////////////////////
-//
-// Project: SMB kioslave for KDE2
-//
-// File: kio_smb_config.cpp
-//
-// Abstract: member function implementations for SMBSlave that deal with
-// KDE/SMB slave configuration
-//
-// Author(s): Matthew Peterson <mpeterson@caldera.com>
-//
-//---------------------------------------------------------------------------
-//
-// Copyright (c) 2000 Caldera Systems, Inc.
-//
-// 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.1 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 Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; see the file COPYING. If not, please obtain
-// a copy from http://www.gnu.org/copyleft/gpl.html
-//
-/////////////////////////////////////////////////////////////////////////////
-
-#include "kio_smb.h"
-#include "kio_smb_internal.h"
-#include <kconfig.h>
-
-#include <tqtextcodec.h>
-//===========================================================================
-void SMBSlave::reparseConfiguration()
-{
- TDEConfig *cfg = new TDEConfig("kioslaverc", true);
- cfg->setGroup("Browser Settings/SMBro");
- m_default_user=cfg->readEntry("User");
-// m_default_workgroup=cfg->readEntry("Workgroup");
-// m_showHiddenShares=cfg->readBoolEntry("ShowHiddenShares",false);
-
- TQString m_encoding = TQTextCodec::codecForLocale()->name();
- m_default_encoding = cfg->readEntry( "Encoding", m_encoding.lower() );
-
- // unscramble, taken from Nicola Brodu's smb ioslave
- //not really secure, but better than storing the plain password
- TQString scrambled = cfg->readEntry( "Password" );
- m_default_password = "";
- for (uint i=0; i<scrambled.length()/3; i++)
- {
- TQChar qc1 = scrambled[i*3];
- TQChar qc2 = scrambled[i*3+1];
- TQChar qc3 = scrambled[i*3+2];
- unsigned int a1 = qc1.latin1() - '0';
- unsigned int a2 = qc2.latin1() - 'A';
- unsigned int a3 = qc3.latin1() - '0';
- unsigned int num = ((a1 & 0x3F) << 10) | ((a2& 0x1F) << 5) | (a3 & 0x1F);
- m_default_password[i] = TQChar((uchar)((num - 17) ^ 173)); // restore
- }
-
- delete cfg;
-}
diff --git a/kioslave/smb/kio_smb_dir.cpp b/kioslave/smb/kio_smb_dir.cpp
deleted file mode 100644
index 54c3b6cfb..000000000
--- a/kioslave/smb/kio_smb_dir.cpp
+++ /dev/null
@@ -1,345 +0,0 @@
-/////////////////////////////////////////////////////////////////////////////
-//
-// Project: SMB kioslave for KDE2
-//
-// File: kio_smb_dir.cpp
-//
-// Abstract: member function implementations for SMBSlave that deal with
-// SMB directory access
-//
-// Author(s): Matthew Peterson <mpeterson@caldera.com>
-//
-////---------------------------------------------------------------------------
-//
-// Copyright (c) 2000 Caldera Systems, Inc.
-//
-// 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.1 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 Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; see the file COPYING. If not, please obtain
-// a copy from http://www.gnu.org/copyleft/gpl.html
-//
-/////////////////////////////////////////////////////////////////////////////
-
-#include "kio_smb.h"
-#include "kio_smb_internal.h"
-
-
-//===========================================================================
-// TODO: add when libsmbclient supports it
-void SMBSlave::copy( const KURL& ksrc,
- const KURL& kdst,
- int permissions,
- bool overwrite)
-{
-
- SMBUrl src;
- SMBUrl dst;
- mode_t initialmode;
- int n;
- int dstflags;
- int srcfd = -1;
- int dstfd = -1;
- TDEIO::filesize_t processed_size = 0;
- unsigned char buf[MAX_XFER_BUF_SIZE];
-
- kdDebug(KIO_SMB) << "SMBSlave::copy with src = " << ksrc << "and dest = " << kdst << endl;
-
- // setup urls
- src = ksrc;
- dst = kdst;
-
- // Obtain information about source
- if(cache_stat(src, &st ) == -1)
- {
- if ( errno == EACCES )
- {
- error( TDEIO::ERR_ACCESS_DENIED, src.prettyURL());
- }
- else
- {
- error( TDEIO::ERR_DOES_NOT_EXIST, src.prettyURL());
- }
- return;
- }
- if ( S_ISDIR( st.st_mode ) )
- {
- error( TDEIO::ERR_IS_DIRECTORY, src.prettyURL() );
- return;
- }
- totalSize(st.st_size);
-
- // Check to se if the destination exists
- if(cache_stat(dst, &st) != -1)
- {
- if(S_ISDIR(st.st_mode))
- {
- error( TDEIO::ERR_DIR_ALREADY_EXIST, dst.prettyURL());
- return;
- }
- if(!overwrite)
- {
- error( TDEIO::ERR_FILE_ALREADY_EXIST, dst.prettyURL());
- return;
- }
- }
-
- // Open the source file
- srcfd = smbc_open(src.toSmbcUrl(), O_RDONLY, 0);
- if(srcfd < 0)
- {
- if(errno == EACCES)
- {
- error( TDEIO::ERR_ACCESS_DENIED, src.prettyURL() );
- }
- else
- {
- error( TDEIO::ERR_DOES_NOT_EXIST, src.prettyURL() );
- }
- return;
- }
-
- // Determine initial creation mode
- if(permissions != -1)
- {
- initialmode = permissions | S_IWUSR;
- }
- else
- {
- initialmode = 0 | S_IWUSR;//0666;
- }
-
-
- // Open the destination file
- dstflags = O_CREAT | O_TRUNC | O_WRONLY;
- if(!overwrite)
- {
- dstflags |= O_EXCL;
- }
- dstfd = smbc_open(dst.toSmbcUrl(), dstflags, initialmode);
- if(dstfd < 0)
- {
- if(errno == EACCES)
- {
- error(TDEIO::ERR_WRITE_ACCESS_DENIED, dst.prettyURL());
- }
- else
- {
- error(TDEIO::ERR_CANNOT_OPEN_FOR_READING, dst.prettyURL());
- }
- if(srcfd >= 0 )
- {
- smbc_close(srcfd);
- }
- return;
- }
-
-
- // Perform copy
- while(1)
- {
- n = smbc_read(srcfd, buf, MAX_XFER_BUF_SIZE );
- if(n > 0)
- {
- n = smbc_write(dstfd, buf, n);
- if(n == -1)
- {
- kdDebug(KIO_SMB) << "SMBSlave::copy copy now TDEIO::ERR_COULD_NOT_WRITE" << endl;
- error( TDEIO::ERR_COULD_NOT_WRITE, dst.prettyURL());
- break;
- }
-
- processed_size += n;
- processedSize(processed_size);
- }
- else if(n == 0)
- {
- break; // finished
- }
- else
- {
- error( TDEIO::ERR_COULD_NOT_READ, src.prettyURL());
- break;
- }
- }
-
-
- // FINISHED:
-
- if(srcfd >= 0 )
- {
- smbc_close(srcfd);
- }
-
- if(dstfd >= 0)
- {
- if(smbc_close(dstfd) == 0)
- {
-
- // TODO: set final permissions
- }
- else
- {
- error( TDEIO::ERR_COULD_NOT_WRITE, dst.prettyURL());
- return;
- }
- }
-
- finished();
-}
-
-//===========================================================================
-void SMBSlave::del( const KURL &kurl, bool isfile)
-{
- kdDebug(KIO_SMB) << "SMBSlave::del on " << kurl << endl;
- m_current_url = kurl;
-
- if(isfile)
- {
- // Delete file
- kdDebug(KIO_SMB) << "SMBSlave:: unlink " << kurl << endl;
- if(smbc_unlink(m_current_url.toSmbcUrl()) == -1)
- {
- switch(errno)
- {
- case EISDIR:
- error( TDEIO::ERR_IS_DIRECTORY, m_current_url.prettyURL());
- break;
- default:
- reportError(kurl);
- }
- }
- }
- else
- {
- kdDebug(KIO_SMB) << "SMBSlave:: rmdir " << kurl << endl;
- // Delete directory
- if(smbc_rmdir(m_current_url.toSmbcUrl()) == -1)
- {
- reportError(kurl);
- }
- }
-
- finished();
-}
-
-//===========================================================================
-void SMBSlave::mkdir( const KURL &kurl, int permissions )
-{
- kdDebug(KIO_SMB) << "SMBSlave::mkdir on " << kurl << endl;
- m_current_url = kurl;
-
- if(smbc_mkdir(m_current_url.toSmbcUrl(), 0777) != 0)
- {
- if (errno == EEXIST) {
- if(cache_stat(m_current_url, &st ) == 0)
- {
- if(S_ISDIR(st.st_mode ))
- {
- error( TDEIO::ERR_DIR_ALREADY_EXIST, m_current_url.prettyURL());
- }
- }
- else
- {
- error( TDEIO::ERR_FILE_ALREADY_EXIST, m_current_url.prettyURL());
- }
- } else
- reportError(kurl);
- kdDebug(KIO_SMB) << "SMBSlave::mkdir exit with error " << kurl << endl;
- }
- else
- {
- if(permissions != -1)
- {
- // TODO enable the following when complete
- //smbc_chmod( url.toSmbcUrl(), permissions );
- }
- }
-
- finished();
-}
-
-
-//===========================================================================
-void SMBSlave::rename( const KURL& ksrc, const KURL& kdest, bool overwrite )
-{
-
- SMBUrl src;
- SMBUrl dst;
-
- kdDebug(KIO_SMB) << "SMBSlave::rename, old name = " << ksrc << ", new name = " << kdest << endl;
-
- src = ksrc;
- dst = kdest;
-
- // Check to se if the destination exists
-
- kdDebug(KIO_SMB) << "SMBSlave::rename stat dst" << endl;
- if(cache_stat(dst, &st) != -1)
- {
- if(S_ISDIR(st.st_mode))
- {
- kdDebug(KIO_SMB) << "SMBSlave::rename TDEIO::ERR_DIR_ALREADY_EXIST" << endl;
- error( TDEIO::ERR_DIR_ALREADY_EXIST, dst.prettyURL());
- finished();
- return;
- }
- if(!overwrite)
- {
- kdDebug(KIO_SMB) << "SMBSlave::rename TDEIO::ERR_FILE_ALREADY_EXIST" << endl;
- error( TDEIO::ERR_FILE_ALREADY_EXIST, dst.prettyURL());
- finished();
- return;
- }
- }
- kdDebug(KIO_SMB ) << "smbc_rename " << src.toSmbcUrl() << " " << dst.toSmbcUrl() << endl;
- if(smbc_rename(src.toSmbcUrl(), dst.toSmbcUrl())!=0)
- {
- kdDebug(KIO_SMB ) << "failed " << perror << endl;
- switch(errno)
- {
- case ENOENT:
- if(cache_stat(src, &st) == -1)
- {
- if(errno == EACCES)
- {
- kdDebug(KIO_SMB) << "SMBSlave::rename TDEIO::ERR_ACCESS_DENIED" << endl;
- error(TDEIO::ERR_ACCESS_DENIED, src.prettyURL());
- }
- else
- {
- kdDebug(KIO_SMB) << "SMBSlave::rename TDEIO::ERR_DOES_NOT_EXIST" << endl;
- error(TDEIO::ERR_DOES_NOT_EXIST, src.prettyURL());
- }
- }
- break;
-
- case EACCES:
- case EPERM:
- kdDebug(KIO_SMB) << "SMBSlave::rename TDEIO::ERR_ACCESS_DENIED" << endl;
- error( TDEIO::ERR_ACCESS_DENIED, dst.prettyURL() );
- break;
-
- default:
- kdDebug(KIO_SMB) << "SMBSlave::rename TDEIO::ERR_CANNOT_RENAME" << endl;
- error( TDEIO::ERR_CANNOT_RENAME, src.prettyURL() );
-
- }
-
- kdDebug(KIO_SMB) << "SMBSlave::rename exit with error" << endl;
- return;
- }
-
- kdDebug(KIO_SMB ) << "everything fine\n";
- finished();
-}
-
-
diff --git a/kioslave/smb/kio_smb_file.cpp b/kioslave/smb/kio_smb_file.cpp
deleted file mode 100644
index 25137c8ce..000000000
--- a/kioslave/smb/kio_smb_file.cpp
+++ /dev/null
@@ -1,279 +0,0 @@
-////////////////////////////////////////////////////////////////////////////
-//
-// Project: SMB kioslave for KDE2
-//
-// File: kio_smb_file.cpp
-//
-// Abstract: member function implementations for SMBSlave that deal with
-// SMB file access
-//
-// Author(s): Matthew Peterson <mpeterson@caldera.com>
-//
-//---------------------------------------------------------------------------
-//
-// Copyright (c) 2000 Caldera Systems, Inc.
-//
-// 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.1 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 Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; see the file COPYING. If not, please obtain
-// a copy from http://www.gnu.org/copyleft/gpl.html
-//
-/////////////////////////////////////////////////////////////////////////////
-
-
-#include "kio_smb.h"
-#include "kio_smb_internal.h"
-
-#include <kmimetype.h>
-
-//===========================================================================
-void SMBSlave::get( const KURL& kurl )
-{
- char buf[MAX_XFER_BUF_SIZE];
- int filefd = 0;
- ssize_t bytesread = 0;
- // time_t curtime = 0;
- time_t lasttime = 0;
- time_t starttime = 0;
- TDEIO::filesize_t totalbytesread = 0;
- TQByteArray filedata;
- SMBUrl url;
-
- kdDebug(KIO_SMB) << "SMBSlave::get on " << kurl << endl;
-
- // check (correct) URL
- KURL kvurl = checkURL(kurl);
- // if URL is not valid we have to redirect to correct URL
- if (kvurl != kurl) {
- redirection(kvurl);
- finished();
- return;
- }
-
- if(!auth_initialize_smbc())
- return;
-
-
- // Stat
- url = kurl;
- if(cache_stat(url,&st) == -1 )
- {
- if ( errno == EACCES )
- error( TDEIO::ERR_ACCESS_DENIED, url.prettyURL());
- else
- error( TDEIO::ERR_DOES_NOT_EXIST, url.prettyURL());
- return;
- }
- if ( S_ISDIR( st.st_mode ) ) {
- error( TDEIO::ERR_IS_DIRECTORY, url.prettyURL());
- return;
- }
-
- // Set the total size
- totalSize( st.st_size );
-
- // Open and read the file
- filefd = smbc_open(url.toSmbcUrl(),O_RDONLY,0);
- if(filefd >= 0)
- {
- if(buf)
- {
- bool isFirstPacket = true;
- lasttime = starttime = time(NULL);
- while(1)
- {
- bytesread = smbc_read(filefd, buf, MAX_XFER_BUF_SIZE);
- if(bytesread == 0)
- {
- // All done reading
- break;
- }
- else if(bytesread < 0)
- {
- error( TDEIO::ERR_COULD_NOT_READ, url.prettyURL());
- return;
- }
-
- filedata.setRawData(buf,bytesread);
- if (isFirstPacket)
- {
- // We need a KMimeType::findByNameAndContent(filename,data)
- // For now we do: find by extension, and if not found (or extension not reliable)
- // then find by content.
- bool accurate = false;
- KMimeType::Ptr mime = KMimeType::findByURL( kurl, st.st_mode, false, true, &accurate );
- if ( !mime || mime->name() == KMimeType::defaultMimeType()
- || !accurate )
- {
- KMimeType::Ptr p_mimeType = KMimeType::findByContent(filedata);
- if ( p_mimeType && p_mimeType->name() != KMimeType::defaultMimeType() )
- mime = p_mimeType;
- }
- mimeType(mime->name());
- isFirstPacket = false;
- }
- data( filedata );
- filedata.resetRawData(buf,bytesread);
-
- // increment total bytes read
- totalbytesread += bytesread;
-
- processedSize(totalbytesread);
- }
- }
-
- smbc_close(filefd);
- data( TQByteArray() );
- processedSize(static_cast<TDEIO::filesize_t>(st.st_size));
-
- }
- else
- {
- error( TDEIO::ERR_CANNOT_OPEN_FOR_READING, url.prettyURL());
- return;
- }
-
- finished();
-}
-
-
-//===========================================================================
-void SMBSlave::put( const KURL& kurl,
- int permissions,
- bool overwrite,
- bool resume )
-{
-
- void *buf;
- size_t bufsize;
-
- m_current_url = kurl;
-
- int filefd;
- bool exists;
- mode_t mode;
- TQByteArray filedata;
-
- kdDebug(KIO_SMB) << "SMBSlave::put on " << kurl << endl;
-
-
- exists = (cache_stat(m_current_url, &st) != -1 );
- if ( exists && !overwrite && !resume)
- {
- if (S_ISDIR(st.st_mode))
- {
- kdDebug(KIO_SMB) << "SMBSlave::put on " << kurl <<" already isdir !!"<< endl;
- error( TDEIO::ERR_DIR_ALREADY_EXIST, m_current_url.prettyURL());
- }
- else
- {
- kdDebug(KIO_SMB) << "SMBSlave::put on " << kurl <<" already exist !!"<< endl;
- error( TDEIO::ERR_FILE_ALREADY_EXIST, m_current_url.prettyURL());
- }
- return;
- }
-
- if (exists && !resume && overwrite)
- {
- kdDebug(KIO_SMB) << "SMBSlave::put exists try to remove " << m_current_url.toSmbcUrl()<< endl;
- // remove(m_current_url.url().local8Bit());
- }
-
-
- if (resume)
- {
- // append if resuming
- kdDebug(KIO_SMB) << "SMBSlave::put resume " << m_current_url.toSmbcUrl()<< endl;
- filefd = smbc_open(m_current_url.toSmbcUrl(), O_RDWR, 0 );
- smbc_lseek(filefd, 0, SEEK_END);
- }
- else
- {
- if (permissions != -1)
- {
- mode = permissions | S_IWUSR | S_IRUSR;
- }
- else
- {
- mode = 600;//0666;
- }
-
- kdDebug(KIO_SMB) << "SMBSlave::put NO resume " << m_current_url.toSmbcUrl()<< endl;
- filefd = smbc_open(m_current_url.toSmbcUrl(), O_CREAT | O_TRUNC | O_WRONLY, mode);
- }
-
- if ( filefd < 0 )
- {
- if ( errno == EACCES )
- {
- kdDebug(KIO_SMB) << "SMBSlave::put error " << kurl <<" access denied !!"<< endl;
- error( TDEIO::ERR_WRITE_ACCESS_DENIED, m_current_url.prettyURL());
- }
- else
- {
- kdDebug(KIO_SMB) << "SMBSlave::put error " << kurl <<" can not open for writing !!"<< endl;
- error( TDEIO::ERR_CANNOT_OPEN_FOR_WRITING, m_current_url.prettyURL());
- }
- finished();
- return;
- }
-
- // Loop until we got 0 (end of data)
- while(1)
- {
- kdDebug(KIO_SMB) << "SMBSlave::put request data "<< endl;
- dataReq(); // Request for data
- kdDebug(KIO_SMB) << "SMBSlave::put write " << m_current_url.toSmbcUrl()<< endl;
-
- if (readData(filedata) <= 0)
- {
- kdDebug(KIO_SMB) << "readData <= 0" << endl;
- break;
- }
- kdDebug(KIO_SMB) << "SMBSlave::put write " << m_current_url.toSmbcUrl()<< endl;
- buf = filedata.data();
- bufsize = filedata.size();
- int size = smbc_write(filefd, buf, bufsize);
- if ( size < 0)
- {
- kdDebug(KIO_SMB) << "SMBSlave::put error " << kurl <<" could not write !!"<< endl;
- error( TDEIO::ERR_COULD_NOT_WRITE, m_current_url.prettyURL());
- finished();
- return;
- }
- kdDebug(KIO_SMB ) << "wrote " << size << endl;
- }
- kdDebug(KIO_SMB) << "SMBSlave::put close " << m_current_url.toSmbcUrl()<< endl;
-
- if(smbc_close(filefd))
- {
- kdDebug(KIO_SMB) << "SMBSlave::put on " << kurl <<" could not write !!"<< endl;
- error( TDEIO::ERR_COULD_NOT_WRITE, m_current_url.prettyURL());
- finished();
- return;
- }
-
- // set final permissions, if the file was just created
- if ( permissions != -1 && !exists )
- {
- // TODO: did the smbc_chmod fail?
- // TODO: put in call to chmod when it is working!
- // smbc_chmod(url.toSmbcUrl(),permissions);
- }
-
- // We have done our job => finish
- finished();
-}
-
-
-
-
diff --git a/kioslave/smb/kio_smb_internal.cpp b/kioslave/smb/kio_smb_internal.cpp
deleted file mode 100644
index 3660e3e8a..000000000
--- a/kioslave/smb/kio_smb_internal.cpp
+++ /dev/null
@@ -1,135 +0,0 @@
-/////////////////////////////////////////////////////////////////////////////
-//
-// Project: SMB kioslave for KDE2
-//
-// File: kio_smb_internal.cpp
-//
-// Abstract: Utility class implementation used by SMBSlave
-//
-// Author(s): Matthew Peterson <mpeterson@caldera.com>
-//
-//---------------------------------------------------------------------------
-//
-// Copyright (c) 2000 Caldera Systems, Inc.
-//
-// 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.1 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 Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; see the file COPYING. If not, please obtain
-// a copy from http://www.gnu.org/copyleft/gpl.html
-//
-/////////////////////////////////////////////////////////////////////////////
-
-#include "kio_smb.h"
-#include "kio_smb_internal.h"
-
-#include <tqtextcodec.h>
-
-#include <kconfig.h>
-#include <kglobal.h>
-
-
-//===========================================================================
-// SMBUrl Function Implementation
-//===========================================================================
-
-//-----------------------------------------------------------------------
-SMBUrl::SMBUrl()
-{
- m_type = SMBURLTYPE_UNKNOWN;
-}
-
-//-----------------------------------------------------------------------
-SMBUrl::SMBUrl(const KURL& kurl)
- : KURL(kurl)
- //-----------------------------------------------------------------------
-{
- updateCache();
-}
-
-
-//-----------------------------------------------------------------------
-void SMBUrl::addPath(const TQString &filedir)
-{
- KURL::addPath(filedir);
- updateCache();
-}
-
-//-----------------------------------------------------------------------
-bool SMBUrl::cd(const TQString &filedir)
-{
- if (!KURL::cd(filedir))
- return false;
- updateCache();
- return true;
-}
-
-//-----------------------------------------------------------------------
-void SMBUrl::updateCache()
- //-----------------------------------------------------------------------
-{
- cleanPath();
-
- // SMB URLs are UTF-8 encoded
- kdDebug(KIO_SMB) << "updateCache " << KURL::path() << endl;
- if (KURL::url() == "smb:/")
- m_surl = "smb://";
- else {
- TQString surl = "smb://";
- if (KURL::hasUser()) {
- surl += KURL::encode_string(KURL::user(), 106);
- if (KURL::hasPass()) {
- surl += ":" + KURL::encode_string(KURL::pass(), 106);
- }
- surl += "@";
- }
- surl += KURL::encode_string(KURL::host().upper(), 106);
- surl += KURL::encode_string(KURL::path(), 106);
- m_surl = surl.utf8();
- }
- m_type = SMBURLTYPE_UNKNOWN;
- // update m_type
- (void)getType();
-}
-
-//-----------------------------------------------------------------------
-SMBUrlType SMBUrl::getType() const
- // Returns the type of this SMBUrl:
- // SMBURLTYPE_UNKNOWN - Type could not be determined. Bad SMB Url.
- // SMBURLTYPE_ENTIRE_NETWORK - "smb:/" is entire network
- // SMBURLTYPE_WORKGROUP_OR_SERVER - "smb:/mygroup" or "smb:/myserver"
- // SMBURLTYPE_SHARE_OR_PATH - "smb:/mygroupe/mymachine/myshare/mydir"
- //-----------------------------------------------------------------------
-{
- if(m_type != SMBURLTYPE_UNKNOWN)
- return m_type;
-
- if (protocol() != "smb")
- {
- m_type = SMBURLTYPE_UNKNOWN;
- return m_type;
- }
-
- if (path(1) == "/")
- {
- if (host().isEmpty())
- m_type = SMBURLTYPE_ENTIRE_NETWORK;
- else
- m_type = SMBURLTYPE_WORKGROUP_OR_SERVER;
- return m_type;
- }
-
- // Check for the path if we get this far
- m_type = SMBURLTYPE_SHARE_OR_PATH;
-
- return m_type;
-}
-
diff --git a/kioslave/smb/kio_smb_internal.h b/kioslave/smb/kio_smb_internal.h
deleted file mode 100644
index b6da04e58..000000000
--- a/kioslave/smb/kio_smb_internal.h
+++ /dev/null
@@ -1,118 +0,0 @@
-/////////////////////////////////////////////////////////////////////////////
-//
-// Project: SMB kioslave for KDE2
-//
-// File: kio_smb_internal.h
-//
-// Abstract: Utility classes used by SMBSlave
-//
-// Author(s): Matthew Peterson <mpeterson@caldera.com>
-// Frank Schwanz <schwanz@fh-brandenburg.de>
-//---------------------------------------------------------------------------
-//
-// Copyright (c) 2000 Caldera Systems, Inc.
-//
-// 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.1 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 Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; see the file COPYING. If not, please obtain
-// a copy from http://www.gnu.org/copyleft/gpl.html
-//
-/////////////////////////////////////////////////////////////////////////////
-
-#ifndef KIO_SMB_INTERNAL_H_INCLUDED
-#define KIO_SMB_INTERNAL_H_INCLUDED
-
-#include <kio/authinfo.h>
-
-/**
- * Types of a SMBURL :
- * SMBURLTYPE_UNKNOWN - Type could not be determined. Bad SMB Url.
- * SMBURLTYPE_ENTIRE_NETWORK - "smb:/" is entire network
- * SMBURLTYPE_WORKGROUP_OR_SERVER - "smb:/mygroup" or "smb:/myserver"
- * URLTYPE_SHARE_OR_PATH - "smb:/mygroupe/mymachine/myshare/mydir"
- */
-enum SMBUrlType {
- SMBURLTYPE_UNKNOWN = 0, SMBURLTYPE_ENTIRE_NETWORK = 1,
- SMBURLTYPE_WORKGROUP_OR_SERVER = 2, SMBURLTYPE_SHARE_OR_PATH = 3
-};
-
-
-//===========================================================================
-/**
- * Class to handle URL's
- * it can convert KURL to smbUrl
- * and Handle UserInfo
- * it also check the correctness of the URL
- */
-class SMBUrl : public KURL
-{
-
-
-public:
- SMBUrl();
- SMBUrl(const KURL & kurl);
-
- /**
- * Appends the specified file and dir to this SMBUrl
- * "smb://server/share" --> "smb://server/share/filedir"
- */
- void addPath(const TQString &filedir);
-
- bool cd(const TQString &dir);
-
- /**
- * Returns the type of this SMBUrl:
- * SMBURLTYPE_UNKNOWN - Type could not be determined. Bad SMB Url.
- * SMBURLTYPE_ENTIRE_NETWORK - "smb:/" is entire network
- * SMBURLTYPE_WORKGROUP_OR_SERVER - "smb:/mygroup" or "smb:/myserver"
- * URLTYPE_SHARE_OR_PATH - "smb:/mygroupe/mymachine/myshare/mydir"
- */
- SMBUrlType getType() const;
-
- void setPass( const TQString& _txt ) { KURL::setPass(_txt); updateCache(); }
- void setUser( const TQString& _txt ) { KURL::setUser(_txt); updateCache(); }
- void setHost( const TQString& _txt ) { KURL::setHost(_txt); updateCache(); }
-
- /**
- * Returns the workgroup if it given in url
- */
-// TQString getWorkgroup() const;
-
- /**
- * Returns path after workgroup
- */
-// TQString getServerShareDir() const;
-
- /**
- * Return a URL that is suitable for libsmbclient
- */
- TQCString toSmbcUrl() const { return m_surl; }
-
-private:
- /**
- * Change from TQString to TQCString (MS Windows's character encoding)
- */
- TQCString fromUnicode( const TQString &_str ) const;
-
- void updateCache();
- TQCString m_surl;
-
- /**
- * Type of URL
- * @see _SMBUrlType
- */
- mutable SMBUrlType m_type;
-};
-
-
-#endif
-
diff --git a/kioslave/smb/kio_smb_mount.cpp b/kioslave/smb/kio_smb_mount.cpp
deleted file mode 100644
index ad421f631..000000000
--- a/kioslave/smb/kio_smb_mount.cpp
+++ /dev/null
@@ -1,211 +0,0 @@
-/* This file is part of the KDE project
-
- Copyright (C) 2000 Alexander Neundorf <neundorf@kde.org>
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Library General Public
- License as published by the Free Software Foundation; either
- version 2 of the License, or (at your option) any later version.
-
- This library 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
- Library General Public License for more details.
-
- You should have received a copy of the GNU Library General Public License
- along with this library; see the file COPYING.LIB. If not, write to
- the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- Boston, MA 02110-1301, USA.
-*/
-
-#include "kio_smb.h"
-#include <kstandarddirs.h>
-#include <tqcstring.h>
-#include <unistd.h>
-#include <tqdir.h>
-#include <kprocess.h>
-
-void SMBSlave::readOutput(TDEProcess *, char *buffer, int buflen)
-{
- mybuf += TQString::fromLocal8Bit(buffer, buflen);
-}
-
-void SMBSlave::readStdErr(TDEProcess *, char *buffer, int buflen)
-{
- mystderr += TQString::fromLocal8Bit(buffer, buflen);
-}
-
-void SMBSlave::special( const TQByteArray & data)
-{
- kdDebug(KIO_SMB)<<"Smb::special()"<<endl;
- int tmp;
- TQDataStream stream(data, IO_ReadOnly);
- stream >> tmp;
- //mounting and umounting are both blocking, "guarded" by a SIGALARM in the future
- switch (tmp)
- {
- case 1:
- case 3:
- {
- TQString remotePath, mountPoint, user;
- stream >> remotePath >> mountPoint;
-
- TQStringList sl=TQStringList::split("/",remotePath);
- TQString share,host;
- if (sl.count()>=2)
- {
- host=(*sl.at(0)).mid(2);
- share=(*sl.at(1));
- kdDebug(KIO_SMB)<<"special() host -"<< host <<"- share -" << share <<"-"<<endl;
- }
-
- remotePath.replace('\\', '/'); // smbmounterplugin sends \\host/share
-
- kdDebug(KIO_SMB) << "mounting: " << remotePath.local8Bit() << " to " << mountPoint.local8Bit() << endl;
-
- if (tmp==3) {
- if (!KStandardDirs::makeDir(mountPoint)) {
- error(TDEIO::ERR_COULD_NOT_MKDIR, mountPoint);
- return;
- }
- }
- mybuf.truncate(0);
- mystderr.truncate(0);
-
- SMBUrl smburl("smb:///");
- smburl.setHost(host);
- smburl.setPath("/" + share);
-
- if ( !checkPassword(smburl) )
- {
- finished();
- return;
- }
-
- // using smbmount instead of "mount -t smbfs", because mount does not allow a non-root
- // user to do a mount, but a suid smbmnt does allow this
-
- TDEProcess proc;
- proc.setUseShell(true); // to have the path to smbmnt (which is used by smbmount); see man smbmount
- proc << "smbmount";
-
- TQString options;
-
- if ( smburl.user().isEmpty() )
- {
- user = "guest";
- options = "-o guest";
- }
- else
- {
- options = "-o username=" + TDEProcess::quote(smburl.user());
- user = smburl.user();
-
- if ( ! smburl.pass().isEmpty() )
- options += ",password=" + TDEProcess::quote(smburl.pass());
- }
-
- // TODO: check why the control center uses encodings with a blank char, e.g. "cp 1250"
- //if ( ! m_default_encoding.isEmpty() )
- //options += ",codepage=" + TDEProcess::quote(m_default_encoding);
-
- proc << TDEProcess::quote(remotePath.local8Bit());
- proc << TDEProcess::quote(mountPoint.local8Bit());
- proc << options;
-
- connect(&proc, TQT_SIGNAL( receivedStdout(TDEProcess *, char *, int )),
- TQT_SLOT(readOutput(TDEProcess *, char *, int)));
-
- connect(&proc, TQT_SIGNAL( receivedStderr(TDEProcess *, char *, int )),
- TQT_SLOT(readStdErr(TDEProcess *, char *, int)));
-
- if (!proc.start( TDEProcess::Block, TDEProcess::AllOutput ))
- {
- error(TDEIO::ERR_CANNOT_LAUNCH_PROCESS,
- "smbmount"+i18n("\nMake sure that the samba package is installed properly on your system."));
- return;
- }
-
- kdDebug(KIO_SMB) << "mount exit " << proc.exitStatus() << endl
- << "stdout:" << mybuf << endl << "stderr:" << mystderr << endl;
-
- if (proc.exitStatus() != 0)
- {
- error( TDEIO::ERR_COULD_NOT_MOUNT,
- i18n("Mounting of share \"%1\" from host \"%2\" by user \"%3\" failed.\n%4")
- .arg(share).arg(host).arg(user).arg(mybuf + "\n" + mystderr));
- return;
- }
-
- finished();
- }
- break;
- case 2:
- case 4:
- {
- TQString mountPoint;
- stream >> mountPoint;
-
- TDEProcess proc;
- proc.setUseShell(true);
- proc << "smbumount";
- proc << TDEProcess::quote(mountPoint);
-
- mybuf.truncate(0);
- mystderr.truncate(0);
-
- connect(&proc, TQT_SIGNAL( receivedStdout(TDEProcess *, char *, int )),
- TQT_SLOT(readOutput(TDEProcess *, char *, int)));
-
- connect(&proc, TQT_SIGNAL( receivedStderr(TDEProcess *, char *, int )),
- TQT_SLOT(readStdErr(TDEProcess *, char *, int)));
-
- if ( !proc.start( TDEProcess::Block, TDEProcess::AllOutput ) )
- {
- error(TDEIO::ERR_CANNOT_LAUNCH_PROCESS,
- "smbumount"+i18n("\nMake sure that the samba package is installed properly on your system."));
- return;
- }
-
- kdDebug(KIO_SMB) << "smbumount exit " << proc.exitStatus() << endl
- << "stdout:" << mybuf << endl << "stderr:" << mystderr << endl;
-
- if (proc.exitStatus() != 0)
- {
- error(TDEIO::ERR_COULD_NOT_UNMOUNT,
- i18n("Unmounting of mountpoint \"%1\" failed.\n%2")
- .arg(mountPoint).arg(mybuf + "\n" + mystderr));
- return;
- }
-
- if ( tmp == 4 )
- {
- bool ok;
-
- TQDir dir(mountPoint);
- dir.cdUp();
- ok = dir.rmdir(mountPoint);
- if ( ok )
- {
- TQString p=dir.path();
- dir.cdUp();
- ok = dir.rmdir(p);
- }
-
- if ( !ok )
- {
- error(TDEIO::ERR_COULD_NOT_RMDIR, mountPoint);
- return;
- }
- }
-
- finished();
- }
- break;
- default:
- break;
- }
- finished();
-}
-
-#include "kio_smb.moc"
diff --git a/kioslave/smb/libsmbclient-HOWTO.txt b/kioslave/smb/libsmbclient-HOWTO.txt
deleted file mode 100644
index 65ed7d086..000000000
--- a/kioslave/smb/libsmbclient-HOWTO.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-HOWTO get the libsmbclient built, so that you can get the new smb ioslave built...
-
-1. Check out the samba sources from cvs with ( full directions are at: http://www.samba.org/samba/cvs.html
- cvs -d :pserver:cvs@pserver.samba.org:/cvsroot login
- use "cvs" as the password
- cvs -z5 -d :pserver:cvs@pserver.samba.org:/cvsroot co -r SAMBA_3_0 samba/source
-2. cd samba/source
-3. sh autogen.sh
-4. run ./configure && make
-5. when compiling is done- shouldn't take more than 5-15 minutes depending on your machine,
- you need to "make installclientlib installdat" - if you want all of samba, do "make install"
diff --git a/kioslave/smb/smb-network.desktop b/kioslave/smb/smb-network.desktop
deleted file mode 100644
index de5406775..000000000
--- a/kioslave/smb/smb-network.desktop
+++ /dev/null
@@ -1,80 +0,0 @@
-[Desktop Entry]
-Icon=network
-Name=Samba Shares
-Name[af]=Samba Hulpbronne
-Name[ar]=مشاركات Samba
-Name[az]=Samba Sahələri
-Name[be]=Агульныя тэчкі Samba
-Name[bg]=Ресурси на Samba
-Name[bn]=সাম্বা শেয়ার
-Name[br]=Rannadoù Samba
-Name[bs]=Samba dijeljenje
-Name[ca]=Recurs compartit de Samba
-Name[cs]=Sdílené disky Samby
-Name[csb]=Dostónczi Sambë
-Name[cy]=Cydranniad Samba
-Name[da]=Samba-shares
-Name[de]=Samba-Freigaben
-Name[el]=Κοινόχρηστοι πόροι Samba
-Name[eo]=Sambo-opuzaĵoj
-Name[es]=Comparticiones Samba
-Name[et]=SMB jagatud ressursid
-Name[eu]=Samba partekaketak
-Name[fa]=مشترکات Samba
-Name[fi]=Samba-jaot
-Name[fr]=Partages Samba
-Name[fy]=Sambanetwurk
-Name[ga]=Comhranna Samba
-Name[gl]=Comparticións de Samba
-Name[he]=שיתופי Samba
-Name[hi]=साम्बा साझेदारी
-Name[hr]=Samba dijeljenja
-Name[hu]=Samba-megosztások
-Name[is]=Samba sameignir
-Name[it]=Condivisioni Samba
-Name[ja]=Samba 共有
-Name[ka]=Samba-ს საზიაროები
-Name[kk]=Samba ресурстары
-Name[ko]=삼바 공유
-Name[lo]=ສັບພະຍາກອນທີ່ໃຊ້ຮ່ວມກັນຂອງ Samba
-Name[lt]=Samba bendri diskai
-Name[lv]=Samba Šāres
-Name[mk]=Samba-заеднички
-Name[mn]=Samba-Нөөцүүд
-Name[ms]=Perkongsian Samba
-Name[mt]=Riżorsi Samba
-Name[nb]=Samba-ressurser
-Name[nds]=Samba-Freegaven
-Name[ne]=साम्बा साझेदारी
-Name[nl]=Sambanetwerk
-Name[nn]=Samba-ressursar
-Name[nso]=Dikabagano tsa Samba
-Name[pa]=ਸਾਂਬਾ ਸਾਂਝ
-Name[pl]=Zasoby Samby
-Name[pt]=Partilhas de Samba
-Name[pt_BR]=Compartilhamentos do Samba
-Name[ro]=Partajări Samba
-Name[ru]=Ресурсы Samba
-Name[rw]=Imigabane Samba
-Name[se]=Samba-resurssat
-Name[sk]=Stav Samby
-Name[sl]=Souporabe Sambe
-Name[sr]=Samba дељења
-Name[sr@Latn]=Samba deljenja
-Name[sv]=Samba-utdelningar
-Name[ta]=சம்பா பங்குகள்
-Name[tg]=Иштирокоти Samba
-Name[th]=ทรัพยากร Samba ที่ใช้ร่วมกัน
-Name[tr]=Samba Payları
-Name[tt]=Samba Urtaqları
-Name[uk]=Спільні ресурси Samba
-Name[ven]=Mikovhe ya Samba
-Name[vi]=Chia sẻ Samba
-Name[wa]=Pårtaedjes Samba
-Name[xh]=Izahlulo ze Samba
-Name[zh_CN]=Samba 共享
-Name[zh_TW]=Samba 資源分享
-Name[zu]=Izabelo ze-Samba
-Open=false
-Type=Link
-URL=smb:/
diff --git a/kioslave/smb/smb.protocol b/kioslave/smb/smb.protocol
deleted file mode 100644
index dbfca9129..000000000
--- a/kioslave/smb/smb.protocol
+++ /dev/null
@@ -1,12 +0,0 @@
-[Protocol]
-exec=kio_smb
-protocol=smb
-input=none
-output=filesystem
-listing=Name,Type,Size,Date,Access,Owner,Group
-reading=true
-writing=true
-makedir=true
-deleting=true
-DocPath=kioslave/smb.html
-Icon=samba
diff --git a/kioslave/smb/x-smb-server.desktop b/kioslave/smb/x-smb-server.desktop
deleted file mode 100644
index 6990e1634..000000000
--- a/kioslave/smb/x-smb-server.desktop
+++ /dev/null
@@ -1,76 +0,0 @@
-[Desktop Entry]
-Comment=Windows Server
-Comment[af]=Windows Bediener
-Comment[ar]=خادم Windows
-Comment[be]=Сервер Windows
-Comment[bg]=Сървър Windows
-Comment[bn]=উইণ্ডোস সার্ভার
-Comment[br]=Servijer Windows
-Comment[bs]=Windows server
-Comment[ca]=Servidor Windows
-Comment[cs]=Windows server
-Comment[csb]=Serwera Windowsa
-Comment[cy]=Grŵp Gwaith Windows
-Comment[da]=Windows server
-Comment[de]=Windows-Server
-Comment[el]=Διακομιστής των Windows
-Comment[eo]=Vindoza servilo
-Comment[es]=Servidor Windows
-Comment[et]=Windowsi server
-Comment[eu]=Windows zerbitzaria
-Comment[fa]=کارساز ویندوز
-Comment[fi]=Windows-palvelin
-Comment[fr]=Serveur Windows
-Comment[fy]=Windows-tsjinner
-Comment[ga]=Freastalaí Windows
-Comment[he]=שרת Windows
-Comment[hi]=विंडोज़ सर्वर
-Comment[hr]=Windows poslužitelj
-Comment[hu]=Windows kiszolgáló
-Comment[is]=Windows þjónn
-Comment[it]=Server Windows
-Comment[ja]=Windows サーバ
-Comment[ka]=Windows სერვერი
-Comment[kk]=Windows сервері
-Comment[km]=ម៉ាស៊ីន​បម្រើ Windows
-Comment[ko]=윈도 공유
-Comment[lt]=Windows serveris
-Comment[lv]=Windows serveris
-Comment[mk]=Windows-сервер
-Comment[ms]=Pelayan Windows
-Comment[mt]=Server tal-Windows
-Comment[nb]=Windows-tjener
-Comment[nds]=Windows-Server
-Comment[ne]=सञ्झ्याल सर्भर
-Comment[nl]=Windows-server
-Comment[nn]=Windows-tenar
-Comment[pa]=ਵਿੰਡੋ ਸਰਵਰ
-Comment[pl]=Serwer Windows
-Comment[pt]=Servidor de Windows
-Comment[pt_BR]=Servidor Windows
-Comment[ro]=Servere Windows
-Comment[ru]=Сервер Windows
-Comment[rw]=Windows Seriveri
-Comment[se]=Windows-bálvá
-Comment[sk]=Server Windows
-Comment[sl]=Strežnik za Windows
-Comment[sr]=Windows сервер
-Comment[sr@Latn]=Windows server
-Comment[sv]=Windows server
-Comment[ta]=சாளர சேவகன்
-Comment[te]=విండొస్ సెర్వర్
-Comment[tg]=Хидматгоҳи Windows
-Comment[th]=เครื่องให้บริการวินโดว์ส
-Comment[tr]=Windows Sunucusu
-Comment[uk]=Сервер Windows
-Comment[uz]=Windows serveri
-Comment[uz@cyrillic]=Windows сервери
-Comment[vi]=Máy phục vụ Windows
-Comment[wa]=Sierveu Windows
-Comment[zh_CN]=Windows 服务器
-Comment[zh_TW]=視窗伺服器
-Icon=server
-Type=MimeType
-MimeType=application/x-smb-server
-X-TDE-AutoEmbed=true
-X-TDE-IsAlso=inode/directory
diff --git a/kioslave/smb/x-smb-workgroup.desktop b/kioslave/smb/x-smb-workgroup.desktop
deleted file mode 100644
index 2b6d571b9..000000000
--- a/kioslave/smb/x-smb-workgroup.desktop
+++ /dev/null
@@ -1,74 +0,0 @@
-[Desktop Entry]
-Comment=Windows Workgroup
-Comment[af]=Windows Werkgroep
-Comment[ar]=مجموعة عمل Windows
-Comment[be]=Працоўная група Windows
-Comment[bg]=Работна група на Windows
-Comment[bn]=উইণ্ডোস ওয়ার্কগ্রুপ
-Comment[br]=Strollad labour Windows
-Comment[bs]=Windows radna grupa
-Comment[ca]=Grup de treball de Windows
-Comment[cs]=Pracovní skupina Windows
-Comment[csb]=Robòczé karno Windowsa
-Comment[cy]=Gr?p Gwaith Windows
-Comment[de]=Windows-Arbeitsgruppe
-Comment[el]=Ομάδα εργασίας Windows
-Comment[eo]=Vindoza laborgrupo
-Comment[es]=Grupo de trabajo de Windows
-Comment[et]=Windowsi töögrupp
-Comment[eu]=Windows lan taldea
-Comment[fa]=گروه کاری ویندوز
-Comment[fi]=Windows-työryhmä
-Comment[fr]=Groupe de travail Windows
-Comment[fy]=Windows-wurkkeppel
-Comment[ga]=Grúpa Oibre Windows
-Comment[gl]=Grupo de Traballo de Windows
-Comment[he]=קבוצת עבודה של חלונות
-Comment[hi]=विंडोज़ वर्क बुक
-Comment[hr]=Windows radna grupa
-Comment[hu]=Windows-os munkacsoport
-Comment[is]=Windows vinnuhópur
-Comment[it]=Gruppo di lavoro di Windows
-Comment[ja]=Windows ワークグループ
-Comment[ka]=Windows სამუშაო გჯუფი
-Comment[kk]=Windows жұмыс тобы
-Comment[lt]=Windows darbo grupė
-Comment[lv]=Windows darba grupa
-Comment[mk]=Windows работна група
-Comment[mn]=Цонхтой ажиллах бүлэг
-Comment[ms]=Kumpulan Kerja Windows
-Comment[mt]=Workgroup tal-Windows
-Comment[nb]=Windows-arbeidsgruppe
-Comment[nds]=Windows-Arbeitkoppel
-Comment[ne]=सञ्झ्याल कार्य समूह
-Comment[nl]=Windows-werkgroep
-Comment[nn]=Windows-arbeidsgruppe
-Comment[pa]=ਵਿੰਡੋ ਵਰਕਗਰੁੱਪ
-Comment[pl]=Grupa robocza Windows
-Comment[pt]=Grupos de Trabalho do Windows
-Comment[pt_BR]=Grupo de trabalho do Windows
-Comment[ro]=Grupuri de lucru Windows
-Comment[ru]=Рабочая группа Windows
-Comment[rw]=Itsindaumurimo Windows
-Comment[se]=Windows-bargojoavku
-Comment[sk]=Pracovná skupina Windows
-Comment[sl]=Delovna skupina Windows
-Comment[sv]=Windows arbetsgrupp
-Comment[ta]=சாளரங்கள் பணிகுழு
-Comment[te]=విండొస్ వర్క్ గ్రూప్
-Comment[tg]=Гурӯҳи кори Windows
-Comment[th]=กลุ่มงานวินโดว์ส
-Comment[tr]=Windows Çalışma Grubu
-Comment[tt]=Windows Eştörkeme
-Comment[uk]=Робоча група Windows
-Comment[uz]=Windows ishchi guruhi
-Comment[uz@cyrillic]=Windows ишчи гуруҳи
-Comment[vi]=Nhóm làm việc Windows
-Comment[wa]=Groupe d' ovraedje Windows
-Comment[zh_CN]=Windows 工作组
-Comment[zh_TW]=視窗工作群組
-Icon=network_local
-Type=MimeType
-MimeType=application/x-smb-workgroup
-X-TDE-AutoEmbed=true
-X-TDE-IsAlso=inode/directory