summaryrefslogtreecommitdiffstats
path: root/src/ldapcontroller.h
blob: 9beb7c0f31279f31e9de93aa9a695b04ccfc64e8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
/***************************************************************************
 *   Copyright (C) 2012 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.             *
 ***************************************************************************/

#ifndef _LDAPCONTROLLER_H_
#define _LDAPCONTROLLER_H_

#include <tdecmodule.h>
#include <tdeaboutdata.h>
#include <kpushbutton.h>
#include <tdelistview.h>
#include <tdefileitem.h>
#include <tdeglobalsettings.h>
#include <tqpushbutton.h>
#include <tqcombobox.h>
#include <tqtimer.h>
#include <tdeio/jobclasses.h>

#include <libtdeldap.h>

class LDAPControllerConfigBase;

enum sc_command {
	SC_START,
	SC_STOP,
	SC_RESTART,
	SC_PURGE,
	SC_SETDBPERMS
};

class LDAPController: public TDECModule
{
	Q_OBJECT

	public:
		LDAPController( TQWidget *parent=0, const char *name=0, const TQStringList& = TQStringList() );
		~LDAPController();
		
		virtual void load();
		virtual void save();
		virtual void defaults();
		virtual int buttons();
		virtual TQString quickHelp() const;
		virtual const TDEAboutData *aboutData() const { return myAboutData; };

	public:
		int createNewLDAPRealm(TQWidget* dialogparent, LDAPRealmConfig realmconfig, TQString adminUserName, TQString adminGroupName, TQString machineAdminGroupName, TQString standardUserGroupName, const char * adminPassword, TQString rootUserName, const char * rootPassword, TQString adminRealm, LDAPCertConfig certinfo, TQString *errstr);
		int createNewSecondaryController(TQWidget* dialogparent, LDAPRealmConfig realmconfig, TQString adminUserName, const char * adminPassword, TQString adminRealm, TQString *errstr);

	private slots:
		void systemRoleChanged();
		void processLockouts();
		void updateCertDisplay();

		void btncaSetMaster();
		void btncaRegenerate();
		void btncaExportKey();
		void btncaExportCert();
		void btnkrbRegenerate();
		void btnkrbExportKey();
		void btnkrbExportCert();
		void btnldapRegenerate();
		void btnldapExportKey();
		void btnldapExportCert();
		void btncrlRegenerate();
		void slotCertCopyResult(TDEIO::Job*);

		void btnChangeLDAPRootPassword();
		void btnChangeRealmAdminPassword();

		void btnAddMultiMasterReplicationMapping();
		void btnEditMultiMasterReplicationMapping();
		void btnRemoveMultiMasterReplicationMapping();

		void multiMasterReplicationHighlighted();
		void modifySelectedMultiMasterReplication();

		void caCertExpiryChanged();
		void caCrlExpiryChanged();
		void kerberosCertExpiryChanged();
		void ldapCertExpiryChanged();

	private:
		int controlKAdminDaemon(sc_command command);
		int controlSASLServer(sc_command command);
		int controlHeimdalServer(sc_command command, uid_t userid=-1, gid_t groupid=-1);
		int controlLDAPServer(sc_command command, uid_t userid=-1, gid_t groupid=-1);
		int initializeNewKerberosRealm(TQString realmName, TQString *errstr);
		int addLDAPEntryToKerberosRealm(TQString ldapProcessOwnerName, TQString ldapHost, TQString *errstr);
		int addHostEntryToKerberosRealm(TQString kerberosHost, TQString *errstr);
		int setKerberosPasswordForUser(LDAPCredentials user, TQString *errstr);
		int createRealmCertificates(LDAPCertConfig certinfo, LDAPRealmConfig realmconfig, uid_t ldap_uid, gid_t ldap_gid);
		int uploadKerberosCAFileToLDAP(LDAPManager* ldap_mgr, TQString* errstr=0);
		int uploadKerberosCAKeyFileToLDAP(LDAPManager* ldap_mgr, TQString* errstr=0);

	private:
		TDEAboutData *myAboutData;

		LDAPControllerConfigBase *m_base;
		KSimpleConfig *m_systemconfig;

		TQString m_fqdn;
		int m_prevRole;
		bool m_roleFullyConfigured;
		TQString m_ldapUserName;
		TQString m_ldapGroupName;

		LDAPCertConfig m_certconfig;
		TQString m_defaultRealm;
		LDAPRealmConfigList m_realmconfig;

		TQTimer m_certRefreshTimer;
};

#endif // _LDAPCONTROLLER_H_