[kde-doc-english] [kdepimlibs] kioslave: Forgot to remove it
Montel Laurent
montel at kde.org
Tue Apr 5 04:46:54 UTC 2016
Git commit a86db8844e9438760e6488ff0b344f626f32aa7b by Montel Laurent.
Committed on 05/04/2016 at 04:46.
Pushed by mlaurent into branch 'master'.
Forgot to remove it
M +0 -1 kioslave/docs/CMakeLists.txt
D +0 -3 kioslave/docs/ldap/CMakeLists.txt
D +0 -30 kioslave/docs/ldap/index.docbook
M +0 -1 kioslave/src/CMakeLists.txt
D +0 -14 kioslave/src/ldap/CMakeLists.txt
D +0 -2 kioslave/src/ldap/Messages.sh
D +0 -819 kioslave/src/ldap/kio_ldap.cpp
D +0 -70 kioslave/src/ldap/kio_ldap.h
D +0 -17 kioslave/src/ldap/ldap.protocol
D +0 -17 kioslave/src/ldap/ldaps.protocol
http://commits.kde.org/kdepimlibs/a86db8844e9438760e6488ff0b344f626f32aa7b
diff --git a/kioslave/docs/CMakeLists.txt b/kioslave/docs/CMakeLists.txt
index 3b660ba..c07ae11 100644
--- a/kioslave/docs/CMakeLists.txt
+++ b/kioslave/docs/CMakeLists.txt
@@ -1,3 +1,2 @@
-add_subdirectory(ldap)
add_subdirectory(pop3)
add_subdirectory(sieve)
diff --git a/kioslave/docs/ldap/CMakeLists.txt b/kioslave/docs/ldap/CMakeLists.txt
deleted file mode 100644
index d77d09f..0000000
--- a/kioslave/docs/ldap/CMakeLists.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-########### install files ###############
-kdoctools_create_handbook(index.docbook INSTALL_DESTINATION ${KDE_INSTALL_DOCBUNDLEDIR}/en SUBDIR kioslave5/ldap)
-
diff --git a/kioslave/docs/ldap/index.docbook b/kioslave/docs/ldap/index.docbook
deleted file mode 100644
index 2cd0aac..0000000
--- a/kioslave/docs/ldap/index.docbook
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" ?>
-<!DOCTYPE article PUBLIC "-//KDE//DTD DocBook XML V4.5-Based Variant V1.1//EN"
-"dtd/kdedbx45.dtd" [
-<!ENTITY % addindex "IGNORE">
-<!ENTITY % English "INCLUDE" > <!-- change language only here -->
-]>
-
-<article lang="&language;" id="ldap">
-<title>ldap</title>
-<articleinfo>
-<authorgroup>
-<author>&Lauri.Watts; &Lauri.Watts.mail;</author>
-<!-- TRANS:ROLES_OF_TRANSLATORS -->
-</authorgroup>
-</articleinfo>
-
-<para><acronym>ldap</acronym> is the lightweight directory access
-protocol. It provides access to an X.500 directory, or to a stand-alone
-<acronym>LDAP</acronym> server.</para>
-
-<para>You can use the ldap kioslave as follows:</para>
-
-<para><userinput>ldap://host:port/ou=People,o=where,c=de??sub</userinput>
-for a subtree-query</para>
-
-<para>or
-<userinput>ldap://host:port/cn=MM,ou=People,o=where,c=de??base</userinput>
-for a complete branch.</para>
-
-</article>
diff --git a/kioslave/src/CMakeLists.txt b/kioslave/src/CMakeLists.txt
index 7811950..ac476a3 100644
--- a/kioslave/src/CMakeLists.txt
+++ b/kioslave/src/CMakeLists.txt
@@ -1,6 +1,5 @@
#remove it
remove_definitions(-DQT_NO_CAST_FROM_BYTEARRAY)
-add_subdirectory(ldap)
add_subdirectory(sieve)
add_subdirectory( pop3 )
diff --git a/kioslave/src/ldap/CMakeLists.txt b/kioslave/src/ldap/CMakeLists.txt
deleted file mode 100644
index 29a0380..0000000
--- a/kioslave/src/ldap/CMakeLists.txt
+++ /dev/null
@@ -1,14 +0,0 @@
-
-set(kio_ldap_PART_SRCS kio_ldap.cpp)
-ecm_qt_declare_logging_category(kio_ldap_PART_SRCS HEADER kldap_debug.h IDENTIFIER KLDAP_LOG CATEGORY_NAME log_kldap)
-
-add_library(kio_ldap MODULE ${kio_ldap_PART_SRCS})
-
-target_link_libraries(kio_ldap KF5::KIOCore KF5::I18n KF5::Ldap KF5::Mbox)
-set_target_properties(kio_ldap PROPERTIES OUTPUT_NAME "ldap")
-install(TARGETS kio_ldap DESTINATION ${KDE_INSTALL_PLUGINDIR}/kf5/kio)
-
-
-########### install files ###############
-
-install( FILES ldap.protocol ldaps.protocol DESTINATION ${KDE_INSTALL_KSERVICES5DIR} )
diff --git a/kioslave/src/ldap/Messages.sh b/kioslave/src/ldap/Messages.sh
deleted file mode 100644
index bb14723..0000000
--- a/kioslave/src/ldap/Messages.sh
+++ /dev/null
@@ -1,2 +0,0 @@
-#! /usr/bin/env bash
-$XGETTEXT *.cpp -o $podir/kio_ldap.pot
diff --git a/kioslave/src/ldap/kio_ldap.cpp b/kioslave/src/ldap/kio_ldap.cpp
deleted file mode 100644
index 4ab7285..0000000
--- a/kioslave/src/ldap/kio_ldap.cpp
+++ /dev/null
@@ -1,819 +0,0 @@
-/*
- Copyright (c) 2004-2007 Szombathelyi György <gyurco at freemail.hu>
-
- Permission is hereby granted, free of charge, to any person obtaining a copy
- of this software and associated documentation files (the "Software"), to deal
- in the Software without restriction, including without limitation the rights
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- copies of the Software, and to permit persons to whom the Software is
- furnished to do so, subject to the following conditions:
-
- The above copyright notice and this permission notice shall be included in
- all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
- AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-*/
-
-#include "kio_ldap.h"
-#include "kldap_debug.h"
-
-#include <kldap/ldif.h>
-#include <kldap/ldapcontrol.h>
-
-#include <qdebug.h>
-#include <KLocalizedString>
-#include <QCoreApplication>
-
-#include <netdb.h>
-#include <netinet/in.h>
-#include <sys/stat.h>
-
-using namespace KIO;
-using namespace KLDAP;
-
-extern "C" {
- int Q_DECL_EXPORT kdemain(int argc, char **argv);
-}
-
-/**
- * The main program.
- */
-int kdemain(int argc, char **argv)
-{
- QCoreApplication app(argc, argv); // needed for QSocketNotifier
- app.setApplicationName(QStringLiteral("kio_ldap"));
-
- qCDebug(KLDAP_LOG) << "Starting kio_ldap instance";
-
- if (argc != 4) {
- qCritical() << "Usage kio_ldap protocol pool app" << endl;
- return -1;
- }
-
- // let the protocol class do its work
- LDAPProtocol slave(argv[1], argv[2], argv[3]);
- slave.dispatchLoop();
-
- qCDebug(KLDAP_LOG) << "Done";
- return 0;
-}
-
-/**
- * Initialize the ldap slave
- */
-LDAPProtocol::LDAPProtocol(const QByteArray &protocol, const QByteArray &pool,
- const QByteArray &app)
- : SlaveBase(protocol, pool, app)
-{
- mConnected = false;
- mOp.setConnection(mConn);
- qCDebug(KLDAP_LOG) << "LDAPProtocol::LDAPProtocol (" << protocol << ")";
-}
-
-LDAPProtocol::~LDAPProtocol()
-{
- closeConnection();
-}
-
-void LDAPProtocol::LDAPErr(int err)
-{
-
- QString extramsg;
- if (mConnected) {
- if (err == KLDAP_SUCCESS) {
- err = mConn.ldapErrorCode();
- }
- if (err != KLDAP_SUCCESS) {
- extramsg = i18n("\nAdditional info: ") + mConn.ldapErrorString();
- }
- }
- if (err == KLDAP_SUCCESS) {
- return;
- }
-
- qDebug() << "error code: " << err << " msg: " << LdapConnection::errorString(err) <<
- extramsg << "'" << endl;
- QString msg;
- msg = mServer.url().toDisplayString();
- if (!extramsg.isEmpty()) {
- msg += extramsg;
- }
-
- /* FIXME: No need to close on all errors */
- closeConnection();
-
- switch (err) {
- /* FIXME: is it worth mapping the following error codes to kio errors?
-
- LDAP_OPERATIONS_ERROR
- LDAP_STRONG_AUTH_REQUIRED
- LDAP_PROTOCOL_ERROR
- LDAP_TIMELIMIT_EXCEEDED
- LDAP_SIZELIMIT_EXCEEDED
- LDAP_COMPARE_FALSE
- LDAP_COMPARE_TRUE
- LDAP_PARTIAL_RESULTS
- LDAP_NO_SUCH_ATTRIBUTE
- LDAP_UNDEFINED_TYPE
- LDAP_INAPPROPRIATE_MATCHING
- LDAP_CONSTRAINT_VIOLATION
- LDAP_INVALID_SYNTAX
- LDAP_NO_SUCH_OBJECT
- LDAP_ALIAS_PROBLEM
- LDAP_INVALID_DN_SYNTAX
- LDAP_IS_LEAF
- LDAP_ALIAS_DEREF_PROBLEM
- LDAP_INAPPROPRIATE_AUTH
- LDAP_BUSY
- LDAP_UNAVAILABLE
- LDAP_UNWILLING_TO_PERFORM
- LDAP_LOOP_DETECT
- LDAP_NAMING_VIOLATION
- LDAP_OBJECT_CLASS_VIOLATION
- LDAP_NOT_ALLOWED_ON_NONLEAF
- LDAP_NOT_ALLOWED_ON_RDN
- LDAP_NO_OBJECT_CLASS_MODS
- LDAP_OTHER
- LDAP_LOCAL_ERROR
- LDAP_ENCODING_ERROR
- LDAP_DECODING_ERROR
- LDAP_FILTER_ERROR
- */
- case KLDAP_AUTH_UNKNOWN:
- case KLDAP_INVALID_CREDENTIALS:
- case KLDAP_STRONG_AUTH_NOT_SUPPORTED:
- error(ERR_COULD_NOT_AUTHENTICATE, msg);
- break;
- case KLDAP_ALREADY_EXISTS:
- error(ERR_FILE_ALREADY_EXIST, msg);
- break;
- case KLDAP_INSUFFICIENT_ACCESS:
- error(ERR_ACCESS_DENIED, msg);
- break;
- case KLDAP_CONNECT_ERROR:
- case KLDAP_SERVER_DOWN:
- error(ERR_COULD_NOT_CONNECT, msg);
- break;
- case KLDAP_TIMEOUT:
- error(ERR_SERVER_TIMEOUT, msg);
- break;
- case KLDAP_PARAM_ERROR:
- error(ERR_INTERNAL, msg);
- break;
- case KLDAP_NO_MEMORY:
- error(ERR_OUT_OF_MEMORY, msg);
- break;
-
- default:
- error(ERR_SLAVE_DEFINED,
- i18n("LDAP server returned the error: %1 %2\nThe LDAP URL was: %3",
- LdapConnection::errorString(err), extramsg, mServer.url().toDisplayString()));
- }
-}
-
-void LDAPProtocol::controlsFromMetaData(LdapControls &serverctrls,
- LdapControls &clientctrls)
-{
- QString oid;
- bool critical;
- QByteArray value;
- int i = 0;
- while (hasMetaData(QStringLiteral("SERVER_CTRL%1").arg(i))) {
- QByteArray val = metaData(QStringLiteral("SERVER_CTRL%1").arg(i)).toUtf8();
- Ldif::splitControl(val, oid, critical, value);
- qCDebug(KLDAP_LOG) << "server ctrl #" << i << " value: " << val <<
- " oid: " << oid << " critical: " << critical << " value: " <<
- QString::fromUtf8(value, value.size()) << endl;
- LdapControl ctrl(oid, val, critical);
- serverctrls.append(ctrl);
- i++;
- }
- i = 0;
- while (hasMetaData(QStringLiteral("CLIENT_CTRL%1").arg(i))) {
- QByteArray val = metaData(QStringLiteral("CLIENT_CTRL%1").arg(i)).toUtf8();
- Ldif::splitControl(val, oid, critical, value);
- qCDebug(KLDAP_LOG) << "client ctrl #" << i << " value: " << val <<
- " oid: " << oid << " critical: " << critical << " value: " <<
- QString::fromUtf8(value, value.size()) << endl;
- LdapControl ctrl(oid, val, critical);
- clientctrls.append(ctrl);
- i++;
- }
-
-}
-
-void LDAPProtocol::LDAPEntry2UDSEntry(const LdapDN &dn, UDSEntry &entry,
- const LdapUrl &usrc, bool dir)
-{
- int pos;
- entry.clear();
- QString name = dn.toString();
- if ((pos = name.indexOf(QLatin1Char(','))) > 0) {
- name = name.left(pos);
- }
- if ((pos = name.indexOf(QLatin1Char('='))) > 0) {
- name.remove(0, pos + 1);
- }
- name.replace(QLatin1Char(' '), QLatin1String("_"));
- if (!dir) {
- name += QLatin1String(".ldif");
- }
- entry.insert(KIO::UDSEntry::UDS_NAME, name);
-
- // the file type
- entry.insert(KIO::UDSEntry::UDS_FILE_TYPE, dir ? S_IFDIR : S_IFREG);
-
- // the mimetype
- if (!dir) {
- entry.insert(KIO::UDSEntry::UDS_MIME_TYPE, QStringLiteral("text/plain"));
- }
-
- entry.insert(KIO::UDSEntry::UDS_ACCESS, dir ? 0500 : 0400);
-
- // the url
- LdapUrl url = usrc;
- url.setPath(QLatin1Char('/') + dn.toString());
- url.setScope(dir ? LdapUrl::One : LdapUrl::Base);
- entry.insert(KIO::UDSEntry::UDS_URL, url.toDisplayString());
-}
-
-void LDAPProtocol::changeCheck(const LdapUrl &url)
-{
- LdapServer server;
- server.setUrl(url);
-
- if (mConnected) {
- if (server.host() != mServer.host() ||
- server.port() != mServer.port() ||
- server.baseDn() != mServer.baseDn() ||
- server.user() != mServer.user() ||
- server.bindDn() != mServer.bindDn() ||
- server.realm() != mServer.realm() ||
- server.password() != mServer.password() ||
- server.timeLimit() != mServer.timeLimit() ||
- server.sizeLimit() != mServer.sizeLimit() ||
- server.version() != mServer.version() ||
- server.security() != mServer.security() ||
- server.auth() != mServer.auth() ||
- server.mech() != mServer.mech()) {
-
- closeConnection();
- mServer = server;
- openConnection();
- }
- } else {
- mServer = server;
- openConnection();
- }
-}
-
-void LDAPProtocol::setHost(const QString &host, quint16 port,
- const QString &user, const QString &password)
-{
- if (mServer.host() != host ||
- mServer.port() != port ||
- mServer.user() != user ||
- mServer.password() != password) {
- closeConnection();
- }
-
- mServer.host() = host;
- if (port > 0) {
- mServer.setPort(port);
- } else {
- struct servent *pse;
- if ((pse = getservbyname(mProtocol, "tcp")) == NULL) {
- if (mProtocol == "ldaps") {
- mServer.setPort(636);
- } else {
- mServer.setPort(389);
- }
- } else {
- mServer.setPort(ntohs(pse->s_port));
- }
- }
- mServer.setUser(user);
- mServer.setPassword(password);
-
- qCDebug(KLDAP_LOG) << "setHost: " << host << " port: " << port << " user: " <<
- user << " pass: [protected]" << endl;
-}
-
-void LDAPProtocol::openConnection()
-{
- if (mConnected) {
- return;
- }
-
- mConn.setServer(mServer);
- if (mConn.connect() != 0) {
- error(ERR_COULD_NOT_CONNECT, mConn.connectionError());
- return;
- }
-
- mConnected = true;
-
- AuthInfo info;
- info.url.setScheme(QLatin1String(mProtocol));
- info.url.setHost(mServer.host());
- info.url.setPort(mServer.port());
- info.url.setUserName(mServer.user());
- info.caption = i18n("LDAP Login");
- info.comment = QString::fromLatin1(mProtocol) + QLatin1String("://") + mServer.host() + QLatin1Char(':') +
- QString::number(mServer.port());
- info.commentLabel = i18n("site:");
- info.username = mServer.auth() == LdapServer::SASL ? mServer.user() : mServer.bindDn();
- info.password = mServer.password();
- info.keepPassword = true;
- bool cached = checkCachedAuthentication(info);
-
- bool firstauth = true;
- int retval;
-
- while (true) {
- retval = mOp.bind_s();
- if (retval == 0) {
- qCDebug(KLDAP_LOG) << "connected!";
- connected();
- return;
- }
- if (retval == KLDAP_INVALID_CREDENTIALS ||
- retval == KLDAP_INSUFFICIENT_ACCESS ||
- retval == KLDAP_INAPPROPRIATE_AUTH ||
- retval == KLDAP_UNWILLING_TO_PERFORM) {
-
- if (firstauth && cached) {
- if (mServer.auth() == LdapServer::SASL) {
- mServer.setUser(info.username);
- } else {
- mServer.setBindDn(info.username);
- }
- mServer.setPassword(info.password);
- mConn.setServer(mServer);
- cached = false;
- } else {
- bool ok = firstauth ?
- openPasswordDialog(info) :
- openPasswordDialog(info, i18n("Invalid authorization information."));
- if (!ok) {
- error(ERR_USER_CANCELED, i18n("LDAP connection canceled."));
- closeConnection();
- return;
- }
- if (mServer.auth() == LdapServer::SASL) {
- mServer.setUser(info.username);
- } else {
- mServer.setBindDn(info.username);
- }
- mServer.setPassword(info.password);
- firstauth = false;
- mConn.setServer(mServer);
- }
-
- } else {
- LDAPErr(retval);
- closeConnection();
- return;
- }
- }
-}
-
-void LDAPProtocol::closeConnection()
-{
- if (mConnected) {
- mConn.close();
- }
- mConnected = false;
-
- qCDebug(KLDAP_LOG) << "connection closed!";
-}
-
-/**
- * Get the information contained in the URL.
- */
-void LDAPProtocol::get(const QUrl &_url)
-{
- qCDebug(KLDAP_LOG) << "get(" << _url << ")";
-
- LdapUrl usrc(_url);
- int ret, id;
-
- changeCheck(usrc);
- if (!mConnected) {
- finished();
- return;
- }
-
- LdapControls serverctrls, clientctrls;
- controlsFromMetaData(serverctrls, clientctrls);
- if (mServer.pageSize()) {
- LdapControls ctrls = serverctrls;
- ctrls.append(LdapControl::createPageControl(mServer.pageSize()));
- qCDebug(KLDAP_LOG) << "page size: " << mServer.pageSize();
- mOp.setServerControls(ctrls);
- } else {
- mOp.setServerControls(serverctrls);
- }
- mOp.setClientControls(clientctrls);
-
- if ((id = mOp.search(usrc.dn(), usrc.scope(), usrc.filter(), usrc.attributes())) == -1) {
- LDAPErr();
- return;
- }
-
- // tell the mimetype
- mimeType(QStringLiteral("text/plain"));
- // collect the result
- //QByteArray result;
- filesize_t processed_size = 0;
-
- while (true) {
- ret = mOp.waitForResult(id, -1);
- if (ret == -1 || mConn.ldapErrorCode() != KLDAP_SUCCESS) {
- LDAPErr();
- return;
- }
- qCDebug(KLDAP_LOG) << " ldap_result: " << ret;
- if (ret == LdapOperation::RES_SEARCH_RESULT) {
-
- if (mServer.pageSize()) {
- QByteArray cookie;
- int estsize = -1;
- for (int i = 0; i < mOp.controls().count(); ++i) {
- qCDebug(KLDAP_LOG) << " control oid: " << mOp.controls().at(i).oid();
- estsize = mOp.controls().at(i).parsePageControl(cookie);
- if (estsize != -1) {
- break;
- }
- }
- qCDebug(KLDAP_LOG) << " estimated size: " << estsize;
- if (estsize != -1 && !cookie.isEmpty()) {
- LdapControls ctrls;
- ctrls = serverctrls;
- qCDebug(KLDAP_LOG) << "page size: " << mServer.pageSize() << " estimated size: " << estsize;
- ctrls.append(LdapControl::createPageControl(mServer.pageSize(), cookie));
- mOp.setServerControls(ctrls);
- if ((id = mOp.search(usrc.dn(), usrc.scope(), usrc.filter(), usrc.attributes())) == -1) {
- LDAPErr();
- return;
- }
- continue;
- }
- }
- break;
- }
- if (ret != LdapOperation::RES_SEARCH_ENTRY) {
- continue;
- }
-
- QByteArray entry = mOp.object().toString().toUtf8() + '\n';
- processed_size += entry.size();
- data(entry);
- processedSize(processed_size);
- }
-
- totalSize(processed_size);
-
- // tell we are finished
- data(QByteArray());
- finished();
-}
-
-/**
- * Test if the url contains a directory or a file.
- */
-void LDAPProtocol::stat(const QUrl &_url)
-{
- qCDebug(KLDAP_LOG) << "stat(" << _url << ")";
-
- QStringList att, saveatt;
- LdapUrl usrc(_url);
- int ret, id;
-
- changeCheck(usrc);
- if (!mConnected) {
- finished();
- return;
- }
-
- // look how many entries match
- saveatt = usrc.attributes();
- att.append(QStringLiteral("dn"));
-
- if ((id = mOp.search(usrc.dn(), usrc.scope(), usrc.filter(), att)) == -1) {
- LDAPErr();
- return;
- }
-
- qCDebug(KLDAP_LOG) << "stat() getting result";
- do {
- ret = mOp.waitForResult(id, -1);
- if (ret == -1 || mConn.ldapErrorCode() != KLDAP_SUCCESS) {
- LDAPErr();
- return;
- }
- if (ret == LdapOperation::RES_SEARCH_RESULT) {
- error(ERR_DOES_NOT_EXIST, _url.toDisplayString());
- return;
- }
- } while (ret != LdapOperation::RES_SEARCH_ENTRY);
-
- mOp.abandon(id);
-
- usrc.setAttributes(saveatt);
-
- UDSEntry uds;
- bool critical;
- LDAPEntry2UDSEntry(usrc.dn(), uds, usrc, usrc.extension(QStringLiteral("x-dir"), critical) != QLatin1String("base"));
-
- statEntry(uds);
- // we are done
- finished();
-}
-
-/**
- * Deletes one entry;
- */
-void LDAPProtocol::del(const QUrl &_url, bool)
-{
- qCDebug(KLDAP_LOG) << "del(" << _url << ")";
-
- LdapUrl usrc(_url);
- int id, ret;
-
- changeCheck(usrc);
- if (!mConnected) {
- finished();
- return;
- }
-
- LdapControls serverctrls, clientctrls;
- controlsFromMetaData(serverctrls, clientctrls);
- mOp.setServerControls(serverctrls);
- mOp.setClientControls(clientctrls);
-
- qCDebug(KLDAP_LOG) << " del: " << usrc.dn().toString().toUtf8();
-
- if ((id = mOp.del(usrc.dn())) == -1) {
- LDAPErr();
- return;
- }
- ret = mOp.waitForResult(id, -1);
- if (ret == -1 || mConn.ldapErrorCode() != KLDAP_SUCCESS) {
- LDAPErr();
- return;
- }
-
- finished();
-}
-
-void LDAPProtocol::put(const QUrl &_url, int, KIO::JobFlags flags)
-{
- qCDebug(KLDAP_LOG) << "put(" << _url << ")";
-
- LdapUrl usrc(_url);
-
- changeCheck(usrc);
- if (!mConnected) {
- finished();
- return;
- }
-
- LdapControls serverctrls, clientctrls;
- controlsFromMetaData(serverctrls, clientctrls);
- mOp.setServerControls(serverctrls);
- mOp.setClientControls(clientctrls);
-
- LdapObject addObject;
- LdapOperation::ModOps modops;
- QByteArray buffer;
- int result = 0;
- Ldif::ParseValue ret;
- Ldif ldif;
- ret = Ldif::MoreData;
- int ldaperr;
-
- do {
- if (ret == Ldif::MoreData) {
- dataReq(); // Request for data
- result = readData(buffer);
- ldif.setLdif(buffer);
- }
- if (result < 0) {
- //error
- return;
- }
- if (result == 0) {
- qCDebug(KLDAP_LOG) << "EOF!";
- ldif.endLdif();
- }
- do {
-
- ret = ldif.nextItem();
- qCDebug(KLDAP_LOG) << "nextitem: " << ret;
-
- switch (ret) {
- case Ldif::None:
- case Ldif::NewEntry:
- case Ldif::MoreData:
- break;
- case Ldif::EndEntry:
- ldaperr = KLDAP_SUCCESS;
- switch (ldif.entryType()) {
- case Ldif::Entry_None:
- error(ERR_INTERNAL, i18n("The Ldif parser failed."));
- return;
- case Ldif::Entry_Del:
- qCDebug(KLDAP_LOG) << "kio_ldap_del";
- ldaperr = mOp.del_s(ldif.dn());
- break;
- case Ldif::Entry_Modrdn:
- qCDebug(KLDAP_LOG) << "kio_ldap_modrdn olddn:" << ldif.dn().toString() <<
- " newRdn: " << ldif.newRdn() <<
- " newSuperior: " << ldif.newSuperior() <<
- " deloldrdn: " << ldif.delOldRdn() << endl;
- ldaperr = mOp.rename_s(ldif.dn(), ldif.newRdn(),
- ldif.newSuperior(), ldif.delOldRdn());
- break;
- case Ldif::Entry_Mod:
- qCDebug(KLDAP_LOG) << "kio_ldap_mod";
- ldaperr = mOp.modify_s(ldif.dn(), modops);
- modops.clear();
- break;
- case Ldif::Entry_Add:
- qCDebug(KLDAP_LOG) << "kio_ldap_add " << ldif.dn().toString();
- addObject.setDn(ldif.dn());
- ldaperr = mOp.add_s(addObject);
- if (ldaperr == KLDAP_ALREADY_EXISTS && (flags & KIO::Overwrite)) {
- qCDebug(KLDAP_LOG) << ldif.dn().toString() << " already exists, delete first";
- ldaperr = mOp.del_s(ldif.dn());
- if (ldaperr == KLDAP_SUCCESS) {
- ldaperr = mOp.add_s(addObject);
- }
- }
- addObject.clear();
- break;
- }
- if (ldaperr != KLDAP_SUCCESS) {
- qCDebug(KLDAP_LOG) << "put ldap error: " << ldaperr;
- LDAPErr(ldaperr);
- return;
- }
- break;
- case Ldif::Item:
- switch (ldif.entryType()) {
- case Ldif::Entry_Mod: {
- LdapOperation::ModOp op;
- op.type = LdapOperation::Mod_None;
- switch (ldif.modType()) {
- case Ldif::Mod_None:
- op.type = LdapOperation::Mod_None;
- break;
- case Ldif::Mod_Add:
- op.type = LdapOperation::Mod_Add;
- break;
- case Ldif::Mod_Replace:
- op.type = LdapOperation::Mod_Replace;
- break;
- case Ldif::Mod_Del:
- op.type = LdapOperation::Mod_Del;
- break;
- }
- op.attr = ldif.attr();
- if (!ldif.value().isNull()) {
- op.values.append(ldif.value());
- }
- modops.append(op);
- break;
- }
- case Ldif::Entry_Add:
- if (ldif.value().size() > 0) {
- addObject.addValue(ldif.attr(), ldif.value());
- }
- break;
- default:
- error(ERR_INTERNAL, i18n("The Ldif parser failed."));
- return;
- }
- break;
- case Ldif::Control: {
- LdapControl control;
- control.setControl(ldif.oid(), ldif.value(), ldif.isCritical());
- serverctrls.append(control);
- mOp.setServerControls(serverctrls);
- break;
- }
- case Ldif::Err:
- error(ERR_SLAVE_DEFINED,
- i18n("Invalid Ldif file in line %1.", ldif.lineNumber()));
- return;
- }
- } while (ret != Ldif::MoreData);
- } while (result > 0);
-
- finished();
-}
-
-/**
- * List the contents of a directory.
- */
-void LDAPProtocol::listDir(const QUrl &_url)
-{
- int ret, ret2, id, id2;
- unsigned long total = 0;
- QStringList att, saveatt;
- LdapUrl usrc(_url), usrc2;
- bool critical = true;
- bool isSub = (usrc.extension(QStringLiteral("x-dir"), critical) == QLatin1String("sub"));
-
-//Reactivate it
- //qCDebug(KLDAP_LOG) << "listDir(" << _url << ")";
-
- changeCheck(usrc);
- if (!mConnected) {
- finished();
- return;
- }
- usrc2 = usrc;
-
- saveatt = usrc.attributes();
- // look up the entries
- if (isSub) {
- att.append(QStringLiteral("dn"));
- usrc.setAttributes(att);
- }
- if (_url.query().isEmpty()) {
- usrc.setScope(LdapUrl::One);
- }
-
- if ((id = mOp.search(usrc.dn(), usrc.scope(), usrc.filter(), usrc.attributes())) == -1) {
- LDAPErr();
- return;
- }
-
- usrc.setAttributes(QStringList() << QLatin1String(""));
- usrc.setExtension(QStringLiteral("x-dir"), QStringLiteral("base"));
- // publish the results
- UDSEntry uds;
-
- while (true) {
- ret = mOp.waitForResult(id, -1);
- if (ret == -1 || mConn.ldapErrorCode() != KLDAP_SUCCESS) {
- LDAPErr();
- return;
- }
- if (ret == LdapOperation::RES_SEARCH_RESULT) {
- break;
- }
- if (ret != LdapOperation::RES_SEARCH_ENTRY) {
- continue;
- }
- qCDebug(KLDAP_LOG) << " ldap_result: " << ret;
-
- total++;
- uds.clear();
-
- LDAPEntry2UDSEntry(mOp.object().dn(), uds, usrc);
- listEntry(uds);
-// processedSize( total );
- qCDebug(KLDAP_LOG) << " total: " << total << " " << usrc.toDisplayString();
-
- // publish the sub-directories (if dirmode==sub)
- if (isSub) {
- LdapDN dn = mOp.object().dn();
- usrc2.setDn(dn);
- usrc2.setScope(LdapUrl::One);
- usrc2.setAttributes(saveatt);
- usrc2.setFilter(usrc.filter());
- qCDebug(KLDAP_LOG) << "search2 " << dn.toString();
- if ((id2 = mOp.search(dn, LdapUrl::One, QString(), att)) != -1) {
- while (true) {
- qCDebug(KLDAP_LOG) << " next result ";
- ret2 = mOp.waitForResult(id2, -1);
- if (ret2 == -1 || ret2 == LdapOperation::RES_SEARCH_RESULT) {
- break;
- }
- if (ret2 == LdapOperation::RES_SEARCH_ENTRY) {
- LDAPEntry2UDSEntry(dn, uds, usrc2, true);
- listEntry(uds);
- total++;
- mOp.abandon(id2);
- break;
- }
- }
- }
- }
- }
-
-// totalSize( total );
-
- uds.clear();
- // we are done
- finished();
-}
diff --git a/kioslave/src/ldap/kio_ldap.h b/kioslave/src/ldap/kio_ldap.h
deleted file mode 100644
index 3e877fa..0000000
--- a/kioslave/src/ldap/kio_ldap.h
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- Copyright (c) 2004-2007 Szombathelyi György <gyurco at freemail.hu>
-
- Permission is hereby granted, free of charge, to any person obtaining a copy
- of this software and associated documentation files (the "Software"), to deal
- in the Software without restriction, including without limitation the rights
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- copies of the Software, and to permit persons to whom the Software is
- furnished to do so, subject to the following conditions:
-
- The above copyright notice and this permission notice shall be included in
- all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
- AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-*/
-
-#ifndef __LDAP_H__
-#define __LDAP_H__
-
-#include <kio/slavebase.h>
-#include <kio/authinfo.h>
-
-#include <kldap/ldapdefs.h>
-#include <kldap/ldapurl.h>
-#include <kldap/ldapcontrol.h>
-#include <kldap/ldapconnection.h>
-#include <kldap/ldapdn.h>
-#include <kldap/ldapoperation.h>
-
-class LDAPProtocol : public KIO::SlaveBase
-{
-public:
- LDAPProtocol(const QByteArray &protocol, const QByteArray &pool, const QByteArray &app);
- virtual ~LDAPProtocol();
-
- virtual void setHost(const QString &host, quint16 port,
- const QString &user, const QString &pass) Q_DECL_OVERRIDE;
-
- void openConnection() Q_DECL_OVERRIDE;
- void closeConnection() Q_DECL_OVERRIDE;
-
- void get(const QUrl &url) Q_DECL_OVERRIDE;
- void stat(const QUrl &url) Q_DECL_OVERRIDE;
- void listDir(const QUrl &url) Q_DECL_OVERRIDE;
- void del(const QUrl &url, bool isfile) Q_DECL_OVERRIDE;
- void put(const QUrl &url, int permissions, KIO::JobFlags flags) Q_DECL_OVERRIDE;
-
-private:
-
- KLDAP::LdapConnection mConn;
- KLDAP::LdapOperation mOp;
- KLDAP::LdapServer mServer;
- bool mConnected;
-
- void controlsFromMetaData(KLDAP::LdapControls &serverctrls,
- KLDAP::LdapControls &clientctrls);
- void LDAPEntry2UDSEntry(const KLDAP::LdapDN &dn, KIO::UDSEntry &entry,
- const KLDAP::LdapUrl &usrc, bool dir = false);
- int asyncSearch(KLDAP::LdapUrl &usrc, const QByteArray &cookie = "");
-
- void LDAPErr(int err = KLDAP_SUCCESS);
- void changeCheck(const KLDAP::LdapUrl &url);
-};
-
-#endif
diff --git a/kioslave/src/ldap/ldap.protocol b/kioslave/src/ldap/ldap.protocol
deleted file mode 100644
index 670ef7d..0000000
--- a/kioslave/src/ldap/ldap.protocol
+++ /dev/null
@@ -1,17 +0,0 @@
-[Protocol]
-exec=kf5/kio/ldap
-protocol=ldap
-input=none
-output=filesystem
-listing=Name,
-reading=true
-source=true
-writing=true
-#makedir=true
-deleting=true
-#linking=true
-#moving=true
-mimetype=text/plain
-determineMimetypeFromExtension=false
-X-DocPath=kioslave5/ldap/index.html
-Icon=office-address-book
diff --git a/kioslave/src/ldap/ldaps.protocol b/kioslave/src/ldap/ldaps.protocol
deleted file mode 100644
index 1952e81..0000000
--- a/kioslave/src/ldap/ldaps.protocol
+++ /dev/null
@@ -1,17 +0,0 @@
-[Protocol]
-exec=kf5/kio/ldap
-protocol=ldaps
-input=none
-output=filesystem
-listing=Name,
-reading=true
-source=true
-writing=true
-#makedir=true
-deleting=true
-#linking=true
-#moving=true
-mimetype=text/plain
-determineMimetypeFromExtension=false
-X-DocPath=kioslave5/ldap/index.html
-Icon=office-address-book
More information about the kde-doc-english
mailing list