parent
10386ff7f9
commit
45bfc1dc6e
@ -0,0 +1,10 @@
|
|||||||
|
INCLUDES= $(all_includes) $(KDE_INCLUDES)/tde
|
||||||
|
|
||||||
|
bin_PROGRAMS = tdeldapbonding
|
||||||
|
|
||||||
|
tdeldapbonding_SOURCES = main.cpp
|
||||||
|
|
||||||
|
tdeldapbonding_METASOURCES = AUTO
|
||||||
|
tdeldapbonding_LDFLAGS = $(all_libraries) $(KDE_RPATH) $(LIB_QT) -lDCOP $(LIB_TDECORE) $(LIB_TDEUI) -ltdefx $(LIB_KIO) -ltdetexteditor -ltdeldap
|
||||||
|
|
||||||
|
KDE_OPTIONS = nofinal
|
@ -0,0 +1,176 @@
|
|||||||
|
/***************************************************************************
|
||||||
|
* Copyright (C) 2013 by Timothy Pearson *
|
||||||
|
* kb9vqf@pearsoncomputing.net *
|
||||||
|
* *
|
||||||
|
* 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 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 General Public License for more details. *
|
||||||
|
* *
|
||||||
|
* You should have received a copy of the GNU General Public License *
|
||||||
|
* along with this program; if not, write to the *
|
||||||
|
* Free Software Foundation, Inc., *
|
||||||
|
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
|
||||||
|
***************************************************************************/
|
||||||
|
|
||||||
|
#include <cstdlib>
|
||||||
|
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <sys/socket.h>
|
||||||
|
#include <netdb.h>
|
||||||
|
#include <pwd.h>
|
||||||
|
|
||||||
|
#include <tdeapplication.h>
|
||||||
|
#include <tdestartupinfo.h>
|
||||||
|
#include <tdecmdlineargs.h>
|
||||||
|
#include <kuniqueapplication.h>
|
||||||
|
#include <tdeaboutdata.h>
|
||||||
|
#include <tdefileitem.h>
|
||||||
|
|
||||||
|
#include <ksimpleconfig.h>
|
||||||
|
|
||||||
|
#include <tqdatetime.h>
|
||||||
|
#include <tqfile.h>
|
||||||
|
|
||||||
|
#include <libtdeldap.h>
|
||||||
|
|
||||||
|
// FIXME
|
||||||
|
// Connect this to CMake/Automake
|
||||||
|
#define KDE_CONFDIR "/etc/trinity"
|
||||||
|
|
||||||
|
static const char description[] =
|
||||||
|
I18N_NOOP("TDE utility for managing workstations in a Kerberos realm");
|
||||||
|
|
||||||
|
static const char version[] = "v0.0.1";
|
||||||
|
|
||||||
|
static const TDECmdLineOptions options[] =
|
||||||
|
{
|
||||||
|
{ "adminusername <username>", I18N_NOOP("Specifies the username of the administrative user with permissions to perform the requested task"), 0 },
|
||||||
|
{ "adminpasswordfile <password file>", I18N_NOOP("Specifies the location of a file which contains the password of the administrative user"), 0 },
|
||||||
|
{ "!+command", I18N_NOOP("The command to execute on the Kerberos realm. Valid commands are: bond unbond disable"), 0 },
|
||||||
|
{ "!+realm", I18N_NOOP("The Kerberos realm on which to execute the specified command. Example: MY.REALM"), 0 },
|
||||||
|
{ "", I18N_NOOP("This utility requires an administrative user and password to be specified on the command line to function!"), 0 },
|
||||||
|
TDECmdLineLastOption // End of options.
|
||||||
|
};
|
||||||
|
|
||||||
|
int main(int argc, char *argv[])
|
||||||
|
{
|
||||||
|
TDEAboutData aboutData( "tdeldapbonding", I18N_NOOP("Kerberos Realm Bonding Manager"),
|
||||||
|
version, description, TDEAboutData::License_GPL,
|
||||||
|
"(c) 2013, Timothy Pearson");
|
||||||
|
aboutData.addAuthor("Timothy Pearson",0, "kb9vqf@pearsoncomputing.net");
|
||||||
|
TDECmdLineArgs::init(argc, argv, &aboutData);
|
||||||
|
TDECmdLineArgs::addCmdLineOptions(options);
|
||||||
|
KUniqueApplication::addCmdLineOptions();
|
||||||
|
TDEApplication::disableAutoDcopRegistration();
|
||||||
|
|
||||||
|
TDEApplication app(false, false);
|
||||||
|
|
||||||
|
TDEStartupInfo::appStarted();
|
||||||
|
|
||||||
|
KSimpleConfig systemconfig( TQString::fromLatin1( KDE_CONFDIR "/ldap/ldapconfigrc" ));
|
||||||
|
systemconfig.setFileWriteMode(S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH);
|
||||||
|
|
||||||
|
//======================================================================================================================================================
|
||||||
|
//
|
||||||
|
// Manager code follows
|
||||||
|
//
|
||||||
|
//======================================================================================================================================================
|
||||||
|
|
||||||
|
TDECmdLineArgs *args = TDECmdLineArgs::parsedArgs();
|
||||||
|
if (args->count() > 1) {
|
||||||
|
int retcode;
|
||||||
|
|
||||||
|
TQString command = TQString(args->arg(0));
|
||||||
|
TQString realm = TQString(args->arg(1));
|
||||||
|
|
||||||
|
systemconfig.setGroup("LDAPRealm-" + realm);
|
||||||
|
TQString host = systemconfig.readEntry("admin_server");
|
||||||
|
LDAPCredentials credentials;
|
||||||
|
if (args->isSet("adminusername") && args->isSet("adminpasswordfile")) {
|
||||||
|
TQString passFileName = args->getOption("adminpasswordfile");
|
||||||
|
TQFile passFile(passFileName);
|
||||||
|
if (!passFile.open(IO_ReadOnly)) {
|
||||||
|
printf("[ERROR] Unable to open specified password file '%s'\n\r", passFileName.ascii()); fflush(stdout);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
TQTextStream stream(&passFile);
|
||||||
|
credentials.username = args->getOption("adminusername");
|
||||||
|
credentials.password = stream.readLine();
|
||||||
|
passFile.close();
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
credentials.use_gssapi = true;
|
||||||
|
}
|
||||||
|
credentials.realm = realm;
|
||||||
|
LDAPManager ldapmanager(realm, host, &credentials);
|
||||||
|
|
||||||
|
// FIXME
|
||||||
|
// Move core bonding functionality from ldapbonding.cpp into libtdeldap, then ***properly*** activate this code!
|
||||||
|
// if (command == "bond") {
|
||||||
|
// // FIXME
|
||||||
|
// LDAPRealmConfig realmConfig;
|
||||||
|
// TQString errorString;
|
||||||
|
//
|
||||||
|
// realmConfig.name = realm;
|
||||||
|
// realmConfig.bonded = ;
|
||||||
|
// realmConfig.uid_offset;
|
||||||
|
// realmConfig.gid_offset;
|
||||||
|
// realmConfig.domain_mappings;
|
||||||
|
// realmConfig.kdc;
|
||||||
|
// realmConfig.kdc_port;
|
||||||
|
// realmConfig.admin_server;
|
||||||
|
// realmConfig.admin_server_port;
|
||||||
|
// realmConfig.pkinit_require_eku;
|
||||||
|
// realmConfig.pkinit_require_krbtgt_otherName;
|
||||||
|
// realmConfig.win2k_pkinit;
|
||||||
|
// realmConfig.win2k_pkinit_require_binding;
|
||||||
|
//
|
||||||
|
// if (LDAPManager::bondRealm(realmConfig, credentials.username, credentials.password, credentials.realm, &errorString) == 0) {
|
||||||
|
// // Success!
|
||||||
|
// }
|
||||||
|
// else {
|
||||||
|
// // Failure
|
||||||
|
// return -1;
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// else if (command == "unbond") {
|
||||||
|
// // FIXME
|
||||||
|
// TQString errorString;
|
||||||
|
//
|
||||||
|
// if (LDAPManager::unbondRealm(realm, credentials.username, credentials.password, credentials.realm, &errorString) == 0) {
|
||||||
|
// // Success!
|
||||||
|
// }
|
||||||
|
// else {
|
||||||
|
// // Failure
|
||||||
|
// return -1;
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// else if (command == "disable") {
|
||||||
|
// // FIXME
|
||||||
|
// }
|
||||||
|
// else {
|
||||||
|
TDECmdLineArgs::usage(i18n("An invalid command was specified"));
|
||||||
|
return -1;
|
||||||
|
// }
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
if (args->count() > 0) {
|
||||||
|
TDECmdLineArgs::usage(i18n("No Kerberos realm was specified"));
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
TDECmdLineArgs::usage(i18n("No command was specified"));
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//======================================================================================================================================================
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
Loading…
Reference in new issue