diff options
Diffstat (limited to 'src/libtdeldap.h')
-rw-r--r-- | src/libtdeldap.h | 224 |
1 files changed, 224 insertions, 0 deletions
diff --git a/src/libtdeldap.h b/src/libtdeldap.h new file mode 100644 index 0000000..a1369a1 --- /dev/null +++ b/src/libtdeldap.h @@ -0,0 +1,224 @@ +/*************************************************************************** + * 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 _LIBTDELDAP_H_ +#define _LIBTDELDAP_H_ + +#include <unistd.h> +#include <ldap.h> + +#include <tqobject.h> +#include <tqstring.h> +#include <tqdatetime.h> +#include <tqvaluelist.h> + +// Values from hdb.asn1 +enum LDAPKRB5Flags { + KRB5_INITIAL = 0x00000001, + KRB5_FORWARDABLE = 0x00000002, + KRB5_PROXIABLE = 0x00000004, + KRB5_RENEWABLE = 0x00000008, + KRB5_POSTDATE = 0x00000010, + KRB5_SERVER = 0x00000020, + KRB5_CLIENT = 0x00000040, + KRB5_INVALID = 0x00000080, + KRB5_REQUIRE_PREAUTH = 0x00000100, + KRB5_CHANGE_PW = 0x00000200, + KRB5_REQUIRE_HWAUTH = 0x00000400, + KRB5_OK_AS_DELEGATE = 0x00000800, + KRB5_USER_TO_USER = 0x00001000, + KRB5_IMMUTABLE = 0x00002000, + KRB5_TRUSTED_FOR_DELEGATION = 0x00004000, + KRB5_ALLOW_KERBEROS_4 = 0x00008000, + KRB5_ALLOW_DIGEST = 0x00010000, + KRB5_LOCKED_OUT = 0x00020000, + + KRB5_ACTIVE_DEFAULT = KRB5_FORWARDABLE | KRB5_RENEWABLE | KRB5_CLIENT | KRB5_CHANGE_PW, + KRB5_DISABLED_ACCOUNT = KRB5_FORWARDABLE | KRB5_SERVER | KRB5_INVALID | KRB5_REQUIRE_PREAUTH | KRB5_REQUIRE_HWAUTH | KRB5_OK_AS_DELEGATE | KRB5_USER_TO_USER, + KRB5_MACHINE_ACCOUNT_DEFAULT = KRB5_FORWARDABLE | KRB5_PROXIABLE | KRB5_RENEWABLE | KRB5_POSTDATE | KRB5_SERVER | KRB5_CLIENT, + KRB5_FLAG_MAX = 0x80000000 +}; + +typedef TQValueList<uid_t> UserList; +typedef TQValueList<gid_t> GroupList; + +class LDAPCredentials +{ + public: + TQString username; + TQCString password; + TQString realm; +}; + +class LDAPUserInfo +{ + public: + LDAPUserInfo(); + ~LDAPUserInfo(); + + public: + bool informationValid; + TQString distinguishedName; + TQString creatorsName; + + TQString name; + uid_t uid; + TQString shell; + TQString homedir; + gid_t primary_gid; + LDAPKRB5Flags status; // Default active user is 586 [KRB5_ACTIVE_DEFAULT] and locked out user is 7586 [KRB5_DISABLED_ACCOUNT] + TQCString new_password; + TQDateTime account_created; + TQDateTime account_modified; + TQDateTime password_last_changed; + bool password_expires; + TQDateTime password_expiration; + bool password_ages; + int new_password_interval; + int new_password_warn_interval; + int new_password_lockout_delay; + bool password_has_minimum_age; + int password_minimum_age; + int maximum_ticket_lifetime; + + // Page 1 + TQString commonName; + TQString givenName; + TQString surName; + TQString initials; + TQString title; + TQString email; + TQString description; + TQString locality; + TQString telephoneNumber; + TQString faxNumber; + TQString homePhone; + TQString mobilePhone; + TQString pagerNumber; + TQString website; + + // Page 2 + TQString poBox; + TQString street; + TQString address; + TQString state; + TQString postcode; + TQString registeredAddress; + TQString homeAddress; + + // Page 3 + TQString seeAlso; + TQString deliveryOffice; + TQString department; + TQString roomNumber; + TQString employeeType; + TQString employeeNumber; + TQString manager; + TQString secretary; + TQString isdnNumber; + TQString teletexID; + TQString telexNumber; + TQString preferredDelivery; + TQString destinationIndicator; + TQString x121Address; + TQString displayName; + TQString preferredLanguage; + TQString uniqueIdentifier; + TQString businessCategory; + TQString carLicense; + TQString notes; +}; + +class LDAPGroupInfo +{ + public: + LDAPGroupInfo(); + ~LDAPGroupInfo(); + + public: + bool informationValid; + TQString distinguishedName; + TQString creatorsName; + + TQString name; + gid_t gid; + TQStringList userlist; +}; + +class LDAPMachineInfo +{ + public: + LDAPMachineInfo(); + ~LDAPMachineInfo(); + + public: + bool informationValid; + TQString distinguishedName; + TQString creatorsName; + + TQString name; + LDAPKRB5Flags status; +}; + +typedef TQValueList<LDAPUserInfo> LDAPUserInfoList; +typedef TQValueList<LDAPGroupInfo> LDAPGroupInfoList; +typedef TQValueList<LDAPMachineInfo> LDAPMachineInfoList; + +class LDAPManager : public TQObject { + Q_OBJECT + + public: + LDAPManager(TQString realm, TQString host, TQObject *parent=0, const char *name=0); + ~LDAPManager(); + + TQString realm(); + TQString basedn(); + int bind(); + int unbind(bool force); + LDAPUserInfoList users(); + LDAPGroupInfoList groups(); + LDAPMachineInfoList machines(); + LDAPUserInfo getUserByDistinguishedName(TQString dn); + LDAPGroupInfo getGroupByDistinguishedName(TQString dn); + int updateUserInfo(LDAPUserInfo user); + int updateGroupInfo(LDAPGroupInfo group); + int addUserInfo(LDAPUserInfo user); + int addGroupInfo(LDAPGroupInfo group); + int deleteUserInfo(LDAPUserInfo user); + int deleteGroupInfo(LDAPGroupInfo group); + int deleteMachineInfo(LDAPMachineInfo machine); + + LDAPCredentials currentLDAPCredentials(); + + private: + LDAPUserInfo parseLDAPUserRecord(LDAPMessage* entry); + LDAPGroupInfo parseLDAPGroupRecord(LDAPMessage* entry); + LDAPMachineInfo parseLDAPMachineRecord(LDAPMessage* entry); + + private: + TQString m_realm; + TQString m_host; + int m_port; + TQString m_basedc; + LDAPCredentials* m_creds; + LDAP *m_ldap; +}; + +#endif // _LIBTDELDAP_H_
\ No newline at end of file |