From 0ca67b17eb514ff27a963260db536d200734ee31 Mon Sep 17 00:00:00 2001 From: Maniack Crudelis Date: Fri, 21 Jul 2017 22:55:15 +0200 Subject: [PATCH] Remove plugins --- .../http-authentication.php | 278 -- .../http-authentication/options-page.php | 195 -- .../plugins/http-authentication/readme.txt | 202 -- .../http-authentication/screenshot-1.png | Bin 200372 -> 0 bytes .../http-authentication/screenshot-2.png | Bin 72003 -> 0 bytes .../Simple-LDAP-Login-Admin.php | 238 -- .../simple-ldap-login/Simple-LDAP-Login.php | 563 ---- .../simple-ldap-login/includes/adLDAP.php | 2413 ----------------- .../plugins/simple-ldap-login/readme.txt | 218 -- 9 files changed, 4107 deletions(-) delete mode 100644 sources/extra_files/wp-content/plugins/http-authentication/http-authentication.php delete mode 100644 sources/extra_files/wp-content/plugins/http-authentication/options-page.php delete mode 100644 sources/extra_files/wp-content/plugins/http-authentication/readme.txt delete mode 100644 sources/extra_files/wp-content/plugins/http-authentication/screenshot-1.png delete mode 100644 sources/extra_files/wp-content/plugins/http-authentication/screenshot-2.png delete mode 100644 sources/extra_files/wp-content/plugins/simple-ldap-login/Simple-LDAP-Login-Admin.php delete mode 100644 sources/extra_files/wp-content/plugins/simple-ldap-login/Simple-LDAP-Login.php delete mode 100644 sources/extra_files/wp-content/plugins/simple-ldap-login/includes/adLDAP.php delete mode 100644 sources/extra_files/wp-content/plugins/simple-ldap-login/readme.txt diff --git a/sources/extra_files/wp-content/plugins/http-authentication/http-authentication.php b/sources/extra_files/wp-content/plugins/http-authentication/http-authentication.php deleted file mode 100644 index 2e99a1b..0000000 --- a/sources/extra_files/wp-content/plugins/http-authentication/http-authentication.php +++ /dev/null @@ -1,278 +0,0 @@ -REMOTE_USER). This plugin assumes users are externally authenticated, as with GatorLink. -Author: Daniel Westermann-Clark -Author URI: http://danieltwc.com/ -*/ - -require_once(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'options-page.php'); - -class HTTPAuthenticationPlugin { - var $db_version = 2; - var $option_name = 'http_authentication_options'; - var $options; - - function HTTPAuthenticationPlugin() { - $this->options = get_option($this->option_name); - - if (is_admin()) { - $options_page = new HTTPAuthenticationOptionsPage($this, $this->option_name, __FILE__, $this->options); - add_action('admin_init', array($this, 'check_options')); - } - - add_action('login_head', array($this, 'add_login_css')); - add_action('login_footer', array($this, 'add_login_link')); - add_action('check_passwords', array($this, 'generate_password'), 10, 3); - add_action('wp_logout', array($this, 'logout')); - add_filter('login_url', array($this, 'bypass_reauth')); - add_filter('show_password_fields', array($this, 'allow_wp_auth')); - add_filter('allow_password_reset', array($this, 'allow_wp_auth')); - add_filter('authenticate', array($this, 'authenticate'), 10, 3); - } - - /* - * Check the options currently in the database and upgrade if necessary. - */ - function check_options() { - if ($this->options === false || ! isset($this->options['db_version']) || $this->options['db_version'] < $this->db_version) { - if (! is_array($this->options)) { - $this->options = array(); - } - - $current_db_version = isset($this->options['db_version']) ? $this->options['db_version'] : 0; - $this->upgrade($current_db_version); - $this->options['db_version'] = $this->db_version; - update_option($this->option_name, $this->options); - } - } - - /* - * Upgrade options as needed depending on the current database version. - */ - function upgrade($current_db_version) { - $default_options = array( - 'allow_wp_auth' => false, - 'auth_label' => 'HTTP authentication', - 'login_uri' => htmlspecialchars_decode(wp_login_url()), - 'logout_uri' => remove_query_arg('_wpnonce', htmlspecialchars_decode(wp_logout_url())), - 'additional_server_keys' => '', - 'auto_create_user' => false, - 'auto_create_email_domain' => '', - ); - - if ($current_db_version < 1) { - foreach ($default_options as $key => $value) { - // Handle migrating existing options from before we stored a db_version - if (! isset($this->options[$key])) { - $this->options[$key] = $value; - } - } - } - } - - function add_login_css() { -?> - -_generate_uri($this->options['login_uri'], wp_login_url($redirect_to)); - $auth_label = $this->options['auth_label']; - - echo "\t" . '' . "\n"; - } - - /* - * Generate a password for the user. This plugin does not require the - * administrator to enter this value, but we need to set it so that user - * creation and editing works. - */ - function generate_password($username, $password1, $password2) { - if (! $this->allow_wp_auth()) { - $password1 = $password2 = wp_generate_password(); - } - } - - /* - * Logout the user by redirecting them to the logout URI. - */ - function logout() { - $logout_uri = $this->_generate_uri($this->options['logout_uri'], home_url()); - - wp_redirect($logout_uri); - exit(); - } - - /* - * Remove the reauth=1 parameter from the login URL, if applicable. This allows - * us to transparently bypass the mucking about with cookies that happens in - * wp-login.php immediately after wp_signon when a user e.g. navigates directly - * to wp-admin. - */ - function bypass_reauth($login_url) { - $login_url = remove_query_arg('reauth', $login_url); - - return $login_url; - } - - /* - * Can we fallback to built-in WordPress authentication? - */ - function allow_wp_auth() { - return (bool) $this->options['allow_wp_auth']; - } - - /* - * Authenticate the user, first using the external authentication source. - * If allowed, fall back to WordPress password authentication. - */ - function authenticate($user, $username, $password) { - $user = $this->check_remote_user(); - - if (! is_wp_error($user)) { - // User was authenticated via REMOTE_USER - $user = new WP_User($user->ID); - } - else { - // REMOTE_USER is invalid; now what? - - if (! $this->allow_wp_auth()) { - // Bail with the WP_Error when not falling back to WordPress authentication - wp_die($user); - } - - // Fallback to built-in hooks (see wp-includes/user.php) - } - - return $user; - } - - /* - * If the REMOTE_USER or REDIRECT_REMOTE_USER evironment variable is set, use it - * as the username. This assumes that you have externally authenticated the user. - */ - function check_remote_user() { - $username = ''; - - $server_keys = $this->_get_server_keys(); - foreach ($server_keys as $server_key) { - if (! empty($_SERVER[$server_key])) { - $username = $_SERVER[$server_key]; - } - } - - if (! $username) { - return new WP_Error('empty_username', 'ERROR: No user found in server variables.'); - } - - // Create new users automatically, if configured - $user = get_user_by('login', $username); - if (! $user) { - if ((bool) $this->options['auto_create_user']) { - $user = $this->_create_user($username); - } - else { - // Bail out to avoid showing the login form - $user = new WP_Error('authentication_failed', __('ERROR: Invalid username or incorrect password.')); - } - } - - return $user; - } - - /* - * Return the list of $_SERVER keys that we will check for a username. By - * default, these are REMOTE_USER and REDIRECT_REMOTE_USER. Additional keys - * can be configured from the options page. - */ - function _get_server_keys() { - $server_keys = array('REMOTE_USER', 'REDIRECT_REMOTE_USER'); - - $additional_server_keys = $this->options['additional_server_keys']; - if (! empty($additional_server_keys)) { - $keys = preg_split('/,\s*/', $additional_server_keys); - $server_keys = array_merge($server_keys, $keys); - } - - return $server_keys; - } - - /* - * Create a new WordPress account for the specified username. - */ - function _create_user($username) { - $password = wp_generate_password(); - $email_domain = $this->options['auto_create_email_domain']; - - $user_id = wp_create_user($username, $password, $username . ($email_domain ? '@' . $email_domain : '')); - $user = get_user_by('id', $user_id); - - return $user; - } - - /* - * Fill the specified URI with the site URI and the specified return location. - */ - function _generate_uri($uri, $redirect_to) { - // Support tags for staged deployments - $base = $this->_get_base_url(); - - $tags = array( - 'host' => $_SERVER['HTTP_HOST'], - 'base' => $base, - 'site' => home_url(), - 'redirect' => $redirect_to, - ); - - foreach ($tags as $tag => $value) { - $uri = str_replace('%' . $tag . '%', $value, $uri); - $uri = str_replace('%' . $tag . '_encoded%', urlencode($value), $uri); - } - - // Support previous versions with only the %s tag - if (strstr($uri, '%s') !== false) { - $uri = sprintf($uri, urlencode($redirect_to)); - } - - return $uri; - } - - /* - * Return the base domain URL based on the WordPress home URL. - */ - function _get_base_url() { - $home = parse_url(home_url()); - - $base = home_url(); - foreach (array('path', 'query', 'fragment') as $key) { - if (! isset($home[$key])) continue; - $base = str_replace($home[$key], '', $base); - } - - return $base; - } -} - -// Load the plugin hooks, etc. -$http_authentication_plugin = new HTTPAuthenticationPlugin(); -?> diff --git a/sources/extra_files/wp-content/plugins/http-authentication/options-page.php b/sources/extra_files/wp-content/plugins/http-authentication/options-page.php deleted file mode 100644 index f670ee2..0000000 --- a/sources/extra_files/wp-content/plugins/http-authentication/options-page.php +++ /dev/null @@ -1,195 +0,0 @@ -plugin = $plugin; - $this->group = $group; - $this->page = $page; - $this->options = $options; - $this->title = $title; - - add_action('admin_init', array($this, 'register_options')); - add_action('admin_menu', array($this, 'add_options_page')); - } - - /* - * Register the options for this plugin so they can be displayed and updated below. - */ - function register_options() { - register_setting($this->group, $this->group, array($this, 'sanitize_settings')); - - $section = 'http_authentication_main'; - add_settings_section($section, 'Main Options', array($this, '_display_options_section'), $this->page); - add_settings_field('http_authentication_allow_wp_auth', 'Allow WordPress authentication?', array($this, '_display_option_allow_wp_auth'), $this->page, $section, array('label_for' => 'http_authentication_allow_wp_auth')); - add_settings_field('http_authentication_auth_label', 'Authentication label', array($this, '_display_option_auth_label'), $this->page, $section, array('label_for' => 'http_authentication_auth_label')); - add_settings_field('http_authentication_login_uri', 'Login URI', array($this, '_display_option_login_uri'), $this->page, $section, array('label_for' => 'http_authentication_login_uri')); - add_settings_field('http_authentication_logout_uri', 'Logout URI', array($this, '_display_option_logout_uri'), $this->page, $section, array('label_for' => 'http_authentication_logout_uri')); - add_settings_field('http_authentication_additional_server_keys', '$_SERVER variables', array($this, '_display_option_additional_server_keys'), $this->page, $section, array('label_for' => 'http_authentication_additional_server_keys')); - add_settings_field('http_authentication_auto_create_user', 'Automatically create accounts?', array($this, '_display_option_auto_create_user'), $this->page, $section, array('label_for' => 'http_authentication_auto_create_user')); - add_settings_field('http_authentication_auto_create_email_domain', 'Email address domain', array($this, '_display_option_auto_create_email_domain'), $this->page, $section, array('label_for' => 'http_authentication_auto_create_email_domain')); - } - - /* - * Set the database version on saving the options. - */ - function sanitize_settings($input) { - $output = $input; - $output['db_version'] = $this->plugin->db_version; - $output['allow_wp_auth'] = isset($input['allow_wp_auth']) ? (bool) $input['allow_wp_auth'] : false; - $output['auto_create_user'] = isset($input['auto_create_user']) ? (bool) $input['auto_create_user'] : false; - - return $output; - } - - /* - * Add an options page for this plugin. - */ - function add_options_page() { - add_options_page($this->title, $this->title, 'manage_options', $this->page, array($this, '_display_options_page')); - } - - /* - * Display the options for this plugin. - */ - function _display_options_page() { - if (! current_user_can('manage_options')) { - wp_die(__('You do not have sufficient permissions to access this page.')); - } -?> -
-

HTTP Authentication Options

-

For the Login URI and Logout URI options, you can use the following variables to support your installation:

- -

You can also use %host_encoded%, %site_encoded%, and %redirect_encoded% for URL-encoded values.

-
- - group); ?> - page); ?> -

- -

-
-
-options['allow_wp_auth']; - $this->_display_checkbox_field('allow_wp_auth', $allow_wp_auth); -?> -Should the plugin fallback to WordPress authentication if none is found from the server? -options['login_uri'] == htmlspecialchars_decode(wp_login_url())) { - echo '
WARNING: You must set the login URI below to your external authentication system. Otherwise you will not be able to login!'; - } - } - - /* - * Display the authentication label field, describing the authentication system - * in use. - */ - function _display_option_auth_label() { - $auth_label = $this->options['auth_label']; - $this->_display_input_text_field('auth_label', $auth_label); -?> -Default is HTTP authentication; override to use the name of your single sign-on system. -options['login_uri']; - $this->_display_input_text_field('login_uri', $login_uri); -?> -Default is ; override to direct users to a single sign-on system. See above for available variables.
-Example: %base%/Shibboleth.sso/Login?target=%redirect_encoded% -options['logout_uri']; - $this->_display_input_text_field('logout_uri', $logout_uri); -?> -Default is ; override to e.g. remove a cookie. See above for available variables.
-Example: %base%/Shibboleth.sso/Logout?return=%redirect_encoded% -options['additional_server_keys']; - $this->_display_input_text_field('additional_server_keys', $additional_server_keys); -?> -$_SERVER variables in addition to REMOTE_USER and REDIRECT_REMOTE_USER to check for the username value, separated by a comma. Use this to e.g. support personal X.509 certificates for authentication.
-Example: SSL_CLIENT_S_DN_CN -options['auto_create_user']; - $this->_display_checkbox_field('auto_create_user', $auto_create_user); -?> -Should a new user be created automatically if not already in the WordPress database?
-Created users will obtain the role defined under "New User Default Role" on the General Options page. -options['auto_create_email_domain']; - $this->_display_input_text_field('auto_create_email_domain', $auto_create_email_domain); -?> -When a new user logs in, this domain is used for the initial email address on their account. The user can change his or her email address by editing their profile. - -
- - value="1" />
- diff --git a/sources/extra_files/wp-content/plugins/http-authentication/readme.txt b/sources/extra_files/wp-content/plugins/http-authentication/readme.txt deleted file mode 100644 index 8f14186..0000000 --- a/sources/extra_files/wp-content/plugins/http-authentication/readme.txt +++ /dev/null @@ -1,202 +0,0 @@ -=== HTTP Authentication === -Contributors: dwc -Tags: authentication -Requires at least: 3.1 -Tested up to: 3.4 -Stable tag: 4.5 - -Use an external authentication source in WordPress. - -== Description == - -The HTTP Authentication plugin allows you to use existing means of authenticating people to WordPress. This includes Apache's basic HTTP authentication module, [Shibboleth](http://shibboleth.internet2.edu/), and many others. - -To follow updates to this plugin, visit: - -http://danieltwc.com/ - -For help with this version, visit: - -http://danieltwc.com/2011/http-authentication-4-0/ - -== Installation == - -1. Login as an existing user, such as admin. -2. Upload the `http-authentication` folder to your plugins folder, usually `wp-content/plugins`. (Or simply via the built-in installer.) -3. Activate the plugin on the Plugins screen. -4. Add one or more users to WordPress, specifying the external username for the "Username" field. Also be sure to set the role for each user. -5. Logout. -6. Protect `wp-login.php` and `wp-admin` using your external authentication (using, for example, `.htaccess` files). -7. Try logging in as one of the users added in step 4. - -Note: This version works with WordPress 3.0 and above. Use the following for older versions of WordPress: - -* Wordpress 2.0: [Version 1.8](http://downloads.wordpress.org/plugin/http-authentication.1.8.zip) -* Wordpress 2.5 through 2.9.x: [Version 2.4](http://downloads.wordpress.org/plugin/http-authentication.2.4.zip) - -== Frequently Asked Questions == - -= What authentication mechanisms can I use? = - -Any authentication mechanism which sets the `REMOTE_USER` (or `REDIRECT_REMOTE_USER`, in the case of ScriptAlias'd PHP-as-CGI) environment variable can be used in conjunction with this plugin. Examples include Apache's `mod_auth` and `mod_auth_ldap`. - -= How should I set up external authentication? = - -This depends on your hosting environment and your means of authentication. - -Many Apache installations allow configuration of authentication via `.htaccess` files, while some do not. Try adding the following to your blog's top-level `.htaccess` file: -` -AuthName "WordPress" -AuthType Basic -AuthUserFile /path/to/passwords -Require user dwc -` - -(You may also want to protect your `xmlrpc.php` file, which uses separate authentication code.) - -Then, create another `.htaccess` file in your `wp-admin` directory with the following contents: -`AuthName "WordPress" -AuthType Basic -AuthUserFile /path/to/passwords -Require user dwc` - -In both files, be sure to set `/path/to/passwords` to the location of your password file. For more information on creating this file, see below. - -= Where can I find more information on configuring Apache authentication? = - -See Apache's HOWTO: [Authentication, Authorization, and Access Control](http://httpd.apache.org/docs/howto/auth.html). - -= How does this plugin authenticate users? = - -This plugin doesn't actually authenticate users. It simply feeds WordPress the name of a user who has successfully authenticated through Apache. - -To determine the username, this plugin uses the `REMOTE_USER` or the `REDIRECT_REMOTE_USER` environment variable, which is set by many Apache authentication modules. If someone can find a way to spoof this value, this plugin is not guaranteed to be secure. - -By default, this plugin generates a random password each time you create a user or edit an existing user's profile. However, since this plugin requires an external authentication mechanism, this password is not requested by WordPress. Generating a random password helps protect accounts, preventing one authorized user from pretending to be another. - -= If I disable this plugin, how will I login? = - -Because this plugin generates a random password when you create a new user or edit an existing user's profile, you will most likely have to reset each user's password if you disable this plugin. WordPress provides a link for requesting a new password on the login screen. - -Also, you should leave the `admin` user as a fallback, i.e. create a new account to use with this plugin. As long as you don't edit the `admin` profile, WordPress will store the password set when you installed WordPress. - -In the worst case scenario, you may have to use phpMyAdmin or the MySQL command line to [reset a user's password](http://codex.wordpress.org/Resetting_Your_Password). - -= Can I configure the plugin to support standard WordPress logins? = - -Yes. You can authenticate some users via an external, single sign-on system and other users via the built-in username and password combination. (Note: When mixed authentication is in use, this plugin does not scramble passwords as described above.) - -When you configure your external authentication system, make sure that you allow users in even if they have not authenticated externally. Using [Shibboleth](http://shibboleth.internet2.edu/) as an example: -`AuthName "Shibboleth" -AuthType Shibboleth -Require Shibboleth` - -This enables Shibboleth authentication in ["passive" mode](https://wiki.shibboleth.net/confluence/display/SHIB2/NativeSPProtectContent). - -Then, in WordPress: - -1. Set the plugin to allow WordPress authentication. -2. Configure the login URI to match your Shibboleth system. For example, if your blog is hosted at `http://example.com/`, then your login URI should be `http://example.com/Shibboleth.sso/Login?target=%redirect_encoded%`. -3. Configure the logout URI to match your Shibboleth system. Following the above example, your logout URI would be `http://example.com/Shibboleth.sso/Logout?return=%redirect_encoded%`. - -After saving the options, authentication will work as follows: - -* If a user is already authenticated via Shibboleth, and he or she exists in the WordPress database, this plugin will log them in automatically. -* If a user is not authenticated via Shibboleth, the plugin will present the standard WordPress login form with an additional link to login via Shibboleth. - -Other authentication systems (particularly those without a login or logout URI) will need to be configured differently. - -= Does this plugin support multisite (WordPress MU) setups? = - -Yes, you can enable this plugin across a network or on individual sites. However, options will need to be set on individual sites. - -If you have suggestions on how to improve network support, please submit a comment. - -= How do you handle staged deployments (dev, test, prod) with the plugin? = - -If you have a WordPress site with multiple environments (e.g. `dev.example.com`, `test.example.com`, and `example.com`) you can use additional variables in the login and logout URIs: - -* `%host%` - The current value of `$_SERVER['HTTP_HOST']` -* `%base%` - The base domain URL (everything before the path) -* `%site%` - The WordPress home URI -* `%redirect%` - The return URI provided by WordPress - -You can also use `%host_encoded%`, `%site_encoded%`, and `%redirect_encoded%` for URL-encoded values. - -For example, your login URI could be: - -`https://%host%/Shibboleth.sso/Login?target=%redirect_encoded%` - -This would be modified for each environment as appropriate. - -== Screenshots == - -1. Plugin options, allowing WordPress authentication -2. WordPress login form with external authentication link - -== Changelog == - -= 4.5 = -* Avoid some PHP notices due to saving options (William Schneider) -* Fix for redirect loop on some multisite setups (#1497) -* Add option to support additional $_SERVER variables in authentication (#1477) -* Remove use of call-time pass by reference to avoid warnings on PHP 5.3 and newer -* Fix deprecation notice in WordPress 3.3 on `get_userdatabylogin` (#1513) -* Fix deprecation notice in WordPress 3.1 and later for including wp-includes/registration.php -* Associate options page label tags with their input fields (#1514) - -= 4.4 = -* Update CSS to correctly center login button on WordPress 3.3 - -= 4.3 = -* Update plugin URIs - -= 4.2 = -* Declare support for WordPress 3.2.1 -* Extend variable replacement for staged deployments -* Wrap redirect parameter on login to force us through `wp-login.php` so we can check the external authentication (thanks to Josh Larios) - -= 4.1 = -* Declare support for WordPress 3.2 -* Update screenshots for WordPress 3.2 - -= 4.0 = -* Restore (and improve) support for falling back to WordPress password authentication -* Remove migration of old options format (we'll assume enough people have upgraded) - -= 3.3 = -* Update options handling to better support WordPress MU - -= 3.2 = -* Restore password generation for adding and editing users - -= 3.1 = -* Bump version number to make 3.0.1 the latest version on wordpress.org - -= 3.0.1 = -* Handle authentication cookies more gracefully - -= 3.0 = -* Add support for WordPress 3.0 -* Update WordPress MU support for WordPress 3.0 - -= 2.4 = -* Add support for WordPress MU (Elliot Kendall) -* Allow for mixed HTTP and built-in authentication by falling back to wp-login.php (Elliot Kendall) - -== Upgrade Notice == - -= 4.5 = -Avoid some PHP errors and warnings; add support for choosing $_SERVER variables - -= 4.4 = -Minor CSS fix for WordPress 3.3 - -= 4.3 = -No code changes; updating plugin URIs - -= 4.2 = -Extends support for variable replacement - -= 4.1 = -Minor update for WordPress 3.2 diff --git a/sources/extra_files/wp-content/plugins/http-authentication/screenshot-1.png b/sources/extra_files/wp-content/plugins/http-authentication/screenshot-1.png deleted file mode 100644 index 20635ee950b1a0dd1740d243880f63d536616c6e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 200372 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 BwJnLE7rsPiiS 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 z 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 QCm7D0ym%tM7l(}TYA%d=KkLIyZ79C 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 DYFob} diff --git a/sources/extra_files/wp-content/plugins/simple-ldap-login/Simple-LDAP-Login-Admin.php b/sources/extra_files/wp-content/plugins/simple-ldap-login/Simple-LDAP-Login-Admin.php deleted file mode 100644 index 8855739..0000000 --- a/sources/extra_files/wp-content/plugins/simple-ldap-login/Simple-LDAP-Login-Admin.php +++ /dev/null @@ -1,238 +0,0 @@ - -
- -
-

Simple LDAP Login Settings

- -
- -
- - - -

Required

-

These are the most basic settings you must configure. Without these, you won't be able to use Simple LDAP Login.

- - - - - - - - - - - - - - - - - - - - - - - -
Enable LDAP Authentication - -
-
Account Suffix -
- Often the suffix of your e-mail address. Example: @gmail.com -
Base DN - -
- Example: For subdomain.domain.suffix, use DC=subdomain,DC=domain,DC=suffix. In most cases you should not specify an ou here. -
Domain Controller(s) - -
Separate with semi-colons. -
LDAP Directory -
- -
-

- -

Typical

-

These settings give you finer control over how logins work.

- - - - - - - - - - - - - - - - - - -
Required Groups -
- The groups, if any, that authenticating LDAP users must belong to.
- Empty means no group required. Separate with semi-colons. -
LDAP Exclusive - -
-
User Creations - -
-
New User Role - -
-
-

Extraordinary

-

Most users should leave these alone.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Group Base DN (optional) - -
- If you need to specify a different Base DN for group searches. Example: For subdomain.domain.suffix, use ou=groups,DC=subdomain,DC=domain,DC=suffix. -
LDAP Login Attribute - -
- Default: uid; -
LDAP Group Attribute - -
- In case your installation uses something other than cn; -
Use TLS - -
-
LDAP Port -
- This is usually 389. -
LDAP Version -
- Only applies to Open LDAP. Typically 3. -
Search Sub OUs - -
-
Login Domain -
- prefixes login names with this domain, f.i. mydomain\username -
-

- -

User Data

-

These settings give you control over which LDAP attributes are used for user creation.

- - - - - - - - - - - - - - - - - - - -
First name - -
- The LDAP attribute for the first name. -
Last name - -
- The LDAP attribute for the last name. -
Email - -
- The LDAP attribute for the email. -
Website - -
- The LDAP attribute for the website. -
-
-

Additional user data

-

Additional user data can be stored as user meta data. You can specify the LDAP - attributes and the associated wordpress meta keys in the format <ldap_attribute_name>:<wordpress_meta_key>. Multiple attributes can be given on separate lines.

-

Example:
phone:user_phone_number
adress:user_home_address

- - - - - - - -
Meta data - -
-

- -

Help

-

Here's a brief primer on how to effectively use and test Simple LDAP Login.

-

Testing

-

The most effective way to test logins is to use two browsers. In other words, keep the WordPress Dashboard open in Chrome, and use Firefox to try logging in. This will give you real time feedback on your settings and prevent you from inadvertently locking yourself out.

-

Which raises the question, what happens if I get locked out?

-

If you accidentally lock yourself out, the easiest way to get back in is to rename to something else and then refresh. WordPress will detect the change and disable Simple LDAP Login. You can then rename the folder back to its previous name.

- -
-
diff --git a/sources/extra_files/wp-content/plugins/simple-ldap-login/Simple-LDAP-Login.php b/sources/extra_files/wp-content/plugins/simple-ldap-login/Simple-LDAP-Login.php deleted file mode 100644 index 997985d..0000000 --- a/sources/extra_files/wp-content/plugins/simple-ldap-login/Simple-LDAP-Login.php +++ /dev/null @@ -1,563 +0,0 @@ -settings = $this->get_settings_obj( $this->prefix ); - - if( $this->get_setting('directory') == "ad" ) { - require_once( plugin_dir_path(__FILE__) . "/includes/adLDAP.php" ); - $this->adldap = new adLDAP( - array ( - "account_suffix" => $this->get_setting('account_suffix'), - "use_tls" => str_true( $this->get_setting('use_tls') ), - "base_dn" => $this->get_setting('base_dn'), - "domain_controllers" => (array)$this->get_setting('domain_controllers'), - "ad_port" => $this->get_setting('ldap_port') - ) - ); - } - - add_action('admin_init', array($this, 'save_settings') ); - - if ($this->is_network_version()) { - add_action('network_admin_menu', array($this, 'menu') ); - } - else { - add_action('admin_menu', array($this, 'menu') ); - } - - - if ( str_true($this->get_setting('enabled')) ) { - add_filter('authenticate', array($this, 'authenticate'), 1, 3); - } - - register_activation_hook( __FILE__, array($this, 'activate') ); - - // If version is false, and old version detected, run activation - if( $this->get_setting('version') === false || $this->get_setting('version') != $version ) { - $this->upgrade_settings(); - } - } - - public static function getInstance () { - if ( !self::$instance ) { - self::$instance = new self; - } - return self::$instance; - } - - function activate () { - // Default settings - $this->add_setting('account_suffix', "@mydomain.org"); - $this->add_setting('base_dn', "DC=mydomain,DC=org"); - $this->add_setting('domain_controllers', array("dc01.mydomain.local") ); - $this->add_setting('directory', "ad"); - $this->add_setting('role', "contributor"); - $this->add_setting('high_security', "true"); - $this->add_setting('ol_login', "uid"); - $this->add_setting('ol_group', "cn"); - $this->add_setting('use_tls', "false"); - $this->add_setting('ldap_port', 389); - $this->add_setting('ldap_version', 3); - $this->add_setting('create_users', "false"); - $this->add_setting('enabled', "false"); - $this->add_setting('search_sub_ous', "false"); - $this->add_setting('group_dn', ""); - $this->add_setting('group_uid', "memberUid"); - - // User attribute settings - $this->add_setting('user_first_name_attribute', "givenname"); - $this->add_setting('user_last_name_attribute', "sn"); - $this->add_setting('user_email_attribute', "mail"); - $this->add_setting('user_url_attribute', "wwwhomepage"); - $this->add_setting('user_meta_data', array() ); - } - - function upgrade_settings() { - if( $this->get_setting('version') === false ) { - $this->set_setting('enabled', 'true'); - - if ($this->is_network_version()) { - $account_suffix = get_site_option('simpleldap_account_suffix'); - $simpleldap_base_dn = get_site_option('simpleldap_base_dn'); - $simpleldap_domain_controllers = get_site_option('simpleldap_domain_controllers'); - $simpleldap_directory_type = get_site_option('simpleldap_directory_type'); - $simpleldap_group = get_site_option('simpleldap_group'); - $simpleldap_account_type = get_site_option('simpleldap_account_type'); - $simpleldap_ol_login = get_site_option('simpleldap_ol_login'); - $simpleldap_use_tls = get_site_option('simpleldap_use_tls'); - $simpleldap_login_mode = get_site_option('simpleldap_login_mode'); - $simpleldap_security_mode = get_site_option('simpleldap_security_mode'); - } - else { - $account_suffix = get_option('simpleldap_account_suffix'); - $simpleldap_base_dn = get_option('simpleldap_base_dn'); - $simpleldap_domain_controllers = get_option('simpleldap_domain_controllers'); - $simpleldap_directory_type = get_option('simpleldap_directory_type'); - $simpleldap_group = get_option('simpleldap_group'); - $simpleldap_account_type = get_option('simpleldap_account_type'); - $simpleldap_ol_login = get_option('simpleldap_ol_login'); - $simpleldap_use_tls = get_option('simpleldap_use_tls'); - $simpleldap_login_mode = get_option('simpleldap_login_mode'); - $simpleldap_security_mode = get_option('simpleldap_security_mode'); - } - - $this->set_setting('account_suffix', $account_suffix ); - $this->set_setting('base_dn', $simpleldap_base_dn); - $this->set_setting('domain_controllers', $simpleldap_domain_controllers); - $this->set_setting('groups', (array)$simpleldap_group ); - $this->set_setting('role', $simpleldap_account_type); - $this->set_setting('ol_login', $simpleldap_ol_login); - $this->set_setting('use_tls', str_true( $simpleldap_use_tls ) ); - - // Directory Type - if ( $simpleldap_directory_type == "directory_ad" ) { - $this->set_setting('directory', 'ad'); - } else { - $this->set_setting('directory', 'ol'); - } - - // Create User Setting - $create_users = false; - if ( $simpleldap_login_mode == "mode_create_all" || $simpleldap_login_mode == "mode_create_group" ) { - $this->set_setting('create_users', true); - } - - // High Security Setting - $high_security = false; - if ( $simpleldap_security_mode == "security_high" ) { - $this->set_setting('high_security', true); - } - } - - if ( $this->get_setting('version') < $this->version || $this->get_setting('version') === false ) { - $this->add_setting('search_sub_ous', "false"); - $this->add_setting('group_base_dn', ""); - $this->add_setting('group_uid', "memberUid"); - - // User attribute settings - $this->add_setting('user_first_name_attribute', "givenname"); - $this->add_setting('user_last_name_attribute', "sn"); - $this->add_setting('user_email_attribute', "mail"); - $this->add_setting('user_url_attribute', "wwwhomepage"); - $this->add_setting('user_meta_data', array() ); - } - - // Update version - $this->set_setting( 'version', $this->version ); - } - - function menu () { - if ($this->is_network_version()) { - add_submenu_page( - "settings.php", - "Simple LDAP Login", - "Simple LDAP Login", - 'manage_network_plugins', - "simple-ldap-login", - array($this, 'admin_page') - ); - } - else { - add_options_page("Simple LDAP Login", "Simple LDAP Login", 'manage_options', "simple-ldap-login", array($this, 'admin_page') ); - } - } - - function admin_page () { - include 'Simple-LDAP-Login-Admin.php'; - } - - function get_settings_obj () { - if ( $this->is_network_version() ) { - return get_site_option("{$this->prefix}settings", false); - } - else { - return get_option("{$this->prefix}settings", false); - } - } - - function set_settings_obj ( $newobj ) { - if ( $this->is_network_version() ) { - return update_site_option("{$this->prefix}settings", $newobj); - } - else { - return update_option("{$this->prefix}settings", $newobj); - } - - } - - function set_setting ( $option = false, $newvalue ) { - if( $option === false ) return false; - - $this->settings = $this->get_settings_obj($this->prefix); - $this->settings[$option] = $newvalue; - return $this->set_settings_obj($this->settings); - } - - function get_setting ( $option = false ) { - if( $option === false || ! isset($this->settings[$option]) ) return false; - - return apply_filters($this->prefix . 'get_setting', $this->settings[$option], $option); - } - - function add_setting ( $option = false, $newvalue ) { - if( $option === false ) return false; - - if ( ! isset($this->settings[$option]) ) { - return $this->set_setting($option, $newvalue); - } else return false; - } - - function get_field_name($setting, $type = 'string') { - return "{$this->prefix}setting[$setting][$type]"; - } - - function save_settings() - { - if( isset($_REQUEST["{$this->prefix}setting"]) && check_admin_referer('save_sll_settings','save_the_sll') ) { - $new_settings = $_REQUEST["{$this->prefix}setting"]; - - foreach( $new_settings as $setting_name => $setting_value ) { - foreach( $setting_value as $type => $value ) { - if( $setting_name == 'user_meta_data') { - $this->set_setting($setting_name, - array_map( function ($attr) { return explode(':', $attr); }, - array_filter(preg_split('/\r\n|\n|\r|;/', $value)))); - } - elseif( $type == "array") { - $this->set_setting($setting_name, explode(";", $value)); - } else { - $this->set_setting($setting_name, $value); - } - } - } - - add_action('admin_notices', array($this, 'saved_admin_notice') ); - } - } - - function saved_admin_notice(){ - echo '
-

Simple LDAP Login settings have been saved.

-
'; - - if( ! str_true($this->get_setting('enabled')) ) { - echo '
-

Simple LDAP Login is disabled.

-
'; - } - } - - function authenticate ($user, $username, $password) { - // If previous authentication succeeded, respect that - if ( is_a($user, 'WP_User') ) { return $user; } - - // Determine if user a local admin - $local_admin = false; - $user_obj = get_user_by('login', $username); - if( user_can($user_obj, 'update_core') ) $local_admin = true; - - $local_admin = apply_filters( 'sll_force_ldap', $local_admin ); - $password = stripslashes($password); - - // To force LDAP authentication, the filter should return boolean false - - if ( empty($username) || empty($password) ) { - $error = new WP_Error(); - - if ( empty($username) ) - $error->add('empty_username', __('ERROR: The username field is empty.')); - - if ( empty($password) ) - $error->add('empty_password', __('ERROR: The password field is empty.')); - - return $error; - } - - // If high security mode is enabled, remove default WP authentication hook - if ( apply_filters('sll_remove_default_authentication_hook', str_true( $this->get_setting('high_security') ) && ! $local_admin ) ) { - remove_filter('authenticate', 'wp_authenticate_username_password', 20, 3); - } - - // Sweet, let's try to authenticate our user and pass against LDAP - $auth_result = $this->ldap_auth($username, $password, $this->get_setting('directory') ); - - if( $auth_result ) { - // Authenticated, does user have required groups, if any? - if( $this->user_has_groups( $username, $this->get_setting('directory') ) ) { - - $user = get_user_by('login', $username); - - if ( ! $user || ( strtolower($user->user_login) !== strtolower($username) ) ) { - if( ! str_true($this->get_setting('create_users')) ) { - do_action( 'wp_login_failed', $username ); - return $this->ldap_auth_error('invalid_username', __('Simple LDAP Login Error: LDAP credentials are correct, but there is no matching WordPress user and user creation is not enabled.')); - } - - $new_user = wp_insert_user( $this->get_user_data( $username, $this->get_setting('directory') ) ); - - if( ! is_wp_error($new_user) ) - { - // Add user meta data - $user_meta_data = $this->get_user_meta_data( $username, $this->get_setting('directory')); - foreach( $user_meta_data as $meta_key => $meta_value ) { - add_user_meta($new_user, $meta_key, $meta_value); - } - - // Successful Login - $new_user = new WP_User($new_user); - do_action_ref_array($this->prefix . 'auth_success', array($new_user) ); - - return $new_user; - } - else - { - do_action( 'wp_login_failed', $username ); - return $this->ldap_auth_error("{$this->prefix}login_error", __('Simple LDAP Login Error: LDAP credentials are correct and user creation is allowed but an error occurred creating the user in WordPress. Actual error: '.$new_user->get_error_message() )); - } - - } else { - return new WP_User($user->ID); - } - } else { - return $this->ldap_auth_error("{$this->prefix}login_error", __('Simple LDAP Login Error: Your LDAP credentials are correct, but you are not in an authorized LDAP group.')); - } - - } elseif ( str_true($this->get_setting('high_security')) ) { - return $this->ldap_auth_error('invalid_username', __('Simple LDAP Login: Simple LDAP Login could not authenticate your credentials. The security settings do not permit trying the WordPress user database as a fallback.')); - } - - do_action($this->prefix . 'auth_failure'); - return false; - } - - function get_domain_username( $username ) { - // Format username with domain prefix, if login_domain is set - $login_domain = $this->get_setting('login_domain'); - - if ( ! empty($login_domain) ) { - return $login_domain . '\\' . $username; - } - - return $username; - } - - function ldap_auth( $username, $password, $directory ) { - $result = false; - - if ( $directory == "ad" ) { - $result = $this->adldap->authenticate( $this->get_domain_username($username), $password ); - } elseif ( $directory == "ol" ) { - $this->ldap = ldap_connect( join(' ', (array)$this->get_setting('domain_controllers')), (int)$this->get_setting('ldap_port') ); - ldap_set_option($this->ldap, LDAP_OPT_PROTOCOL_VERSION, (int)$this->get_setting('ldap_version')); - if ( str_true($this->get_setting('use_tls')) ) { - ldap_start_tls($this->ldap); - } - $dn = $this->get_setting('ol_login') .'=' . $username . ',' . $this->get_setting('base_dn'); - if (str_true($this->get_setting('search_sub_ous'))) { - // search for user's DN in the base DN and below - $filter = $this->get_setting('ol_login') .'=' . $username; - $sr = @ldap_search($this->ldap, $this->get_setting('base_dn'), $filter, array('cn')); - if ($sr !== FALSE) { - $info = @ldap_get_entries($this->ldap, $sr); - if ($info !== FALSE && $info['count'] > 0) { - $dn = $info[0]['dn']; - } - } - } - $ldapbind = @ldap_bind($this->ldap, $dn, $password); - $this->dn = $dn; - $result = $ldapbind; - } - - return apply_filters($this->prefix . 'ldap_auth', $result); - } - - /** - * Prevent modification of the error message by other authenticate hooks - * before it is shown to the user - * - * @param string $code - * @param string $message - * @return WP_Error - */ - function ldap_auth_error( $code, $message ) { - remove_all_filters( 'authenticate' ); - return new WP_Error( $code, $message ); - } - - function user_has_groups( $username = false, $directory ) { - $result = false; - $groups = (array)$this->get_setting('groups'); - $groups = array_filter($groups); - - if ( ! $username ) return $result; - if ( count( $groups ) == 0 ) return true; - - if ( $directory == "ad" ) { - foreach ($groups as $gp) { - if ( $this->adldap->user_ingroup ($username, $gp ) ) { - $result = true; - break; - } - } - } elseif ( $directory == "ol" ) { - if( $this->ldap === false ) return false; - - $group_base_dn = $this->get_setting('group_base_dn') !== false ? $this->get_setting('group_base_dn') : $this->get_setting('base_dn'); - $result = ldap_search($this->ldap, $group_base_dn, '(|(&(objectClass=groupOfUniqueNames)(uniquemember=' . $this->dn . '))(&(objectClass=groupOfNames)(member=' . $this->dn . '))(' . $this->get_setting('group_uid') . '=' . $username . '))', array($this->get_setting('ol_group'))); - $ldapgroups = ldap_get_entries($this->ldap, $result); - - // Ok, we should have the user, all the info, including which groups he is a member of. - // Let's make sure he's in the right group before proceeding. - $user_groups = array(); - for ( $i = 0; $i < $ldapgroups['count']; $i++) { - $user_groups[] = $ldapgroups[$i][$this->get_setting('ol_group')][0]; - } - - $result = (bool)(count( array_intersect($user_groups, $groups) ) > 0); - } - - return apply_filters($this->prefix . 'user_has_groups', $result); - } - - function get_user_data( $username, $directory ) { - $user_data = array( - 'user_pass' => md5( microtime() ), - 'user_login' => $username, - 'user_nicename' => '', - 'user_email' => '', - 'display_name' => '', - 'first_name' => '', - 'last_name' => '', - 'user_url' => '', - 'role' => $this->get_setting('role') - ); - - if ( $directory == "ad" ) { - $userinfo = $this->adldap->user_info($username, array("samaccountname","givenname","sn","mail")); - $userinfo = $userinfo[0]; - } elseif ( $directory == "ol" ) { - if ( $this->ldap == null ) {return false;} - - $attributes = array( - $this->get_setting('ol_login'), - $this->get_setting('user_last_name_attribute'), - $this->get_setting('user_first_name_attribute'), - $this->get_setting('user_email_attribute'), - $this->get_setting('user_url_attribute') - ); - - $result = ldap_search($this->ldap, $this->get_setting('base_dn'), '(' . $this->get_setting('ol_login') . '=' . $username . ')', $attributes); - $userinfo = ldap_get_entries($this->ldap, $result); - - if ($userinfo['count'] == 1) { - $userinfo = $userinfo[0]; - } - } else return false; - - if( is_array($userinfo) ) { - $user_data['user_nicename'] = strtolower($userinfo[$this->get_setting('user_first_name_attribute')][0]) . '-' . strtolower($userinfo[$this->get_setting('user_last_name_attribute')][0]); - $user_data['user_email'] = $userinfo[$this->get_setting('user_email_attribute')][0]; - $user_data['display_name'] = $userinfo[$this->get_setting('user_first_name_attribute')][0] . ' ' . $userinfo[$this->get_setting('user_last_name_attribute')][0]; - $user_data['first_name'] = $userinfo[$this->get_setting('user_first_name_attribute')][0]; - $user_data['last_name'] = $userinfo[$this->get_setting('user_last_name_attribute')][0]; - $user_data['user_url'] = $userinfo[$this->get_setting('user_url_attribute')][0]; - } - - return apply_filters($this->prefix . 'user_data', $user_data); - } - - function get_user_meta_data( $username, $directory ) { - if ( $directory == "ad" ) { - // TODO: get user meta data for ad - return false; - } elseif ( $directory == "ol" ) { - if ( $this->ldap == null ) {return false;} - - $attributes = array(); - foreach( $this->get_setting('user_meta_data') as $attr ) { - $attributes[] = $attr[0]; - } - $result = ldap_search($this->ldap, $this->get_setting('base_dn'), '(' . $this->get_setting('ol_login') . '=' . $username . ')', $attributes); - $userinfo = ldap_get_entries($this->ldap, $result); - - if ($userinfo['count'] == 1) { - $userinfo = $userinfo[0]; - } - } else return false; - - $user_meta_data = array(); - foreach( $this->get_setting('user_meta_data') as $attr ) { - $user_meta_data[$attr[1]] = $userinfo[$attr[0]][0]; - } - - return apply_filters($this->prefix . 'user_meta_data', $user_meta_data); - } - - /** - * Returns whether this plugin is currently network activated - */ - function is_network_version() { - if ( $this->network_version !== null) { - return $this->network_version; - } - - if ( ! function_exists( 'is_plugin_active_for_network' ) ) { - require_once( ABSPATH . '/wp-admin/includes/plugin.php' ); - } - - if ( is_plugin_active_for_network( plugin_basename(__FILE__) ) ) { - $this->network_version = true; - } - else { - $this->network_version = false; - - } - return $this->network_version; - } -} - -if ( ! function_exists('str_true') ) { - /** - * Evaluates natural language strings to boolean equivalent - * - * Used primarily for handling boolean text provided in shopp() tag options. - * All values defined as true will return true, anything else is false. - * - * Boolean values will be passed through. - * - * Replaces the 1.0-1.1 value_is_true() - * - * @author Jonathan Davis - * @since 1.2 - * - * @param string $string The natural language value - * @param array $istrue A list strings that are true - * @return boolean The boolean value of the provided text - **/ - function str_true ( $string, $istrue = array('yes', 'y', 'true','1','on','open') ) { - if (is_array($string)) return false; - if (is_bool($string)) return $string; - return in_array(strtolower($string),$istrue); - } -} - -$SimpleLDAPLogin = SimpleLDAPLogin::getInstance(); diff --git a/sources/extra_files/wp-content/plugins/simple-ldap-login/includes/adLDAP.php b/sources/extra_files/wp-content/plugins/simple-ldap-login/includes/adLDAP.php deleted file mode 100644 index 1485a0f..0000000 --- a/sources/extra_files/wp-content/plugins/simple-ldap-login/includes/adLDAP.php +++ /dev/null @@ -1,2413 +0,0 @@ -_account_suffix = $_account_suffix; - } - - /** - * Get the account suffix - * - * @return string - */ - public function get_account_suffix() - { - return $this->_account_suffix; - } - - /** - * Set the domain controllers array - * - * @param array $_domain_controllers - * @return void - */ - public function set_domain_controllers(array $_domain_controllers) - { - $this->_domain_controllers = $_domain_controllers; - } - - /** - * Get the list of domain controllers - * - * @return void - */ - public function get_domain_controllers() - { - return $this->_domain_controllers; - } - - /** - * Set the username of an account with higher priviledges - * - * @param string $_ad_username - * @return void - */ - public function set_ad_username($_ad_username) - { - $this->_ad_username = $_ad_username; - } - - /** - * Get the username of the account with higher priviledges - * - * This will throw an exception for security reasons - */ - public function get_ad_username() - { - throw new adLDAPException('For security reasons you cannot access the domain administrator account details'); - } - - /** - * Set the password of an account with higher priviledges - * - * @param string $_ad_password - * @return void - */ - public function set_ad_password($_ad_password) - { - $this->_ad_password = $_ad_password; - } - - /** - * Get the password of the account with higher priviledges - * - * This will throw an exception for security reasons - */ - public function get_ad_password() - { - throw new adLDAPException('For security reasons you cannot access the domain administrator account details'); - } - - /** - * Set whether to detect the true primary group - * - * @param bool $_real_primary_group - * @return void - */ - public function set_real_primarygroup($_real_primarygroup) - { - $this->_real_primarygroup = $_real_primarygroup; - } - - /** - * Get the real primary group setting - * - * @return bool - */ - public function get_real_primarygroup() - { - return $this->_real_primarygroup; - } - - /** - * Set whether to use SSL - * - * @param bool $_use_ssl - * @return void - */ - public function set_use_ssl($_use_ssl) - { - $this->_use_ssl = $_use_ssl; - } - - /** - * Get the SSL setting - * - * @return bool - */ - public function get_use_ssl() - { - return $this->_use_ssl; - } - - /** - * Set whether to use TLS - * - * @param bool $_use_tls - * @return void - */ - public function set_use_tls($_use_tls) - { - $this->_use_tls = $_use_tls; - } - - /** - * Get the TLS setting - * - * @return bool - */ - public function get_use_tls() - { - return $this->_use_tls; - } - - /** - * Set whether to lookup recursive groups - * - * @param bool $_recursive_groups - * @return void - */ - public function set_recursive_groups($_recursive_groups) - { - $this->_recursive_groups = $_recursive_groups; - } - - /** - * Get the recursive groups setting - * - * @return bool - */ - public function get_recursive_groups() - { - return $this->_recursive_groups; - } - - /** - * Default Constructor - * - * Tries to bind to the AD domain over LDAP or LDAPs - * - * @param array $options Array of options to pass to the constructor - * @throws Exception - if unable to bind to Domain Controller - * @return bool - */ - function __construct($options=array()){ - // You can specifically overide any of the default configuration options setup above - if (count($options)>0){ - if (array_key_exists("account_suffix",$options)){ $this->_account_suffix=$options["account_suffix"]; } - if (array_key_exists("base_dn",$options)){ $this->_base_dn=$options["base_dn"]; } - if (array_key_exists("domain_controllers",$options)){ $this->_domain_controllers=$options["domain_controllers"]; } - if (array_key_exists("ad_username",$options)){ $this->_ad_username=$options["ad_username"]; } - if (array_key_exists("ad_password",$options)){ $this->_ad_password=$options["ad_password"]; } - if (array_key_exists("real_primarygroup",$options)){ $this->_real_primarygroup=$options["real_primarygroup"]; } - if (array_key_exists("use_ssl",$options)){ $this->_use_ssl=$options["use_ssl"]; } - if (array_key_exists("use_tls",$options)){ $this->_use_tls=$options["use_tls"]; } - if (array_key_exists("recursive_groups",$options)){ $this->_recursive_groups=$options["recursive_groups"]; } - } - - if ($this->ldap_supported() === false) { - throw new adLDAPException('No LDAP support for PHP. See: http://www.php.net/ldap'); - } - - return $this->connect(); - } - - /** - * Default Destructor - * - * Closes the LDAP connection - * - * @return void - */ - function __destruct(){ $this->close(); } - - /** - * Connects and Binds to the Domain Controller - * - * @return bool - */ - public function connect() { - // Connect to the AD/LDAP server as the username/password - $dc=$this->random_controller(); - if ($this->_use_ssl){ - $this->_conn = ldap_connect("ldaps://".$dc, 636); - } else { - $this->_conn = ldap_connect($dc); - } - - // Set some ldap options for talking to AD - ldap_set_option($this->_conn, LDAP_OPT_PROTOCOL_VERSION, 3); - ldap_set_option($this->_conn, LDAP_OPT_REFERRALS, 0); - - if ($this->_use_tls) { - ldap_start_tls($this->_conn); - } - - // Bind as a domain admin if they've set it up - if ($this->_ad_username!=NULL && $this->_ad_password!=NULL){ - $this->_bind = @ldap_bind($this->_conn,$this->_ad_username.$this->_account_suffix,$this->_ad_password); - if (!$this->_bind){ - if ($this->_use_ssl && !$this->_use_tls){ - // If you have problems troubleshooting, remove the @ character from the ldap_bind command above to get the actual error message - throw new adLDAPException('Bind to Active Directory failed. Either the LDAPs connection failed or the login credentials are incorrect. AD said: ' . $this->get_last_error()); - } else { - throw new adLDAPException('Bind to Active Directory failed. Check the login credentials and/or server details. AD said: ' . $this->get_last_error()); - } - } - } - - if ($this->_base_dn == NULL) { - $this->_base_dn = $this->find_base_dn(); - } - - return (true); - } - - /** - * Closes the LDAP connection - * - * @return void - */ - public function close() { - ldap_close ($this->_conn); - } - - /** - * Validate a user's login credentials - * - * @param string $username A user's AD username - * @param string $password A user's AD password - * @param bool optional $prevent_rebind - * @return bool - */ - public function authenticate($username, $password, $prevent_rebind = false) { - // Prevent null binding - if ($username === NULL || $password === NULL) { return false; } - if (empty($username) || empty($password)) { return false; } - - // Bind as the user - $ret = true; - $this->_bind = @ldap_bind($this->_conn, $username . $this->_account_suffix, $password); - if (!$this->_bind){ $ret = false; } - - // Cnce we've checked their details, kick back into admin mode if we have it - if ($this->_ad_username !== NULL && !$prevent_rebind) { - $this->_bind = @ldap_bind($this->_conn, $this->_ad_username . $this->_account_suffix , $this->_ad_password); - if (!$this->_bind){ - // This should never happen in theory - throw new adLDAPException('Rebind to Active Directory failed. AD said: ' . $this->get_last_error()); - } - } - - return $ret; - } - - //***************************************************************************************************************** - // GROUP FUNCTIONS - - /** - * Add a group to a group - * - * @param string $parent The parent group name - * @param string $child The child group name - * @return bool - */ - public function group_add_group($parent,$child){ - - // Find the parent group's dn - $parent_group=$this->group_info($parent,array("cn")); - if ($parent_group[0]["dn"]===NULL){ return (false); } - $parent_dn=$parent_group[0]["dn"]; - - // Find the child group's dn - $child_group=$this->group_info($child,array("cn")); - if ($child_group[0]["dn"]===NULL){ return (false); } - $child_dn=$child_group[0]["dn"]; - - $add=array(); - $add["member"] = $child_dn; - - $result=@ldap_mod_add($this->_conn,$parent_dn,$add); - if ($result==false){ return (false); } - return (true); - } - - /** - * Add a user to a group - * - * @param string $group The group to add the user to - * @param string $user The user to add to the group - * @param bool $isGUID Is the username passed a GUID or a samAccountName - * @return bool - */ - public function group_add_user($group,$user,$isGUID=false){ - // Adding a user is a bit fiddly, we need to get the full DN of the user - // and add it using the full DN of the group - - // Find the user's dn - $user_dn=$this->user_dn($user,$isGUID); - if ($user_dn===false){ return (false); } - - // Find the group's dn - $group_info=$this->group_info($group,array("cn")); - if ($group_info[0]["dn"]===NULL){ return (false); } - $group_dn=$group_info[0]["dn"]; - - $add=array(); - $add["member"] = $user_dn; - - $result=@ldap_mod_add($this->_conn,$group_dn,$add); - if ($result==false){ return (false); } - return (true); - } - - /** - * Add a contact to a group - * - * @param string $group The group to add the contact to - * @param string $contact_dn The DN of the contact to add - * @return bool - */ - public function group_add_contact($group,$contact_dn){ - // To add a contact we take the contact's DN - // and add it using the full DN of the group - - // Find the group's dn - $group_info=$this->group_info($group,array("cn")); - if ($group_info[0]["dn"]===NULL){ return (false); } - $group_dn=$group_info[0]["dn"]; - - $add=array(); - $add["member"] = $contact_dn; - - $result=@ldap_mod_add($this->_conn,$group_dn,$add); - if ($result==false){ return (false); } - return (true); - } - - /** - * Create a group - * - * @param array $attributes Default attributes of the group - * @return bool - */ - public function group_create($attributes){ - if (!is_array($attributes)){ return ("Attributes must be an array"); } - if (!array_key_exists("group_name",$attributes)){ return ("Missing compulsory field [group_name]"); } - if (!array_key_exists("container",$attributes)){ return ("Missing compulsory field [container]"); } - if (!array_key_exists("description",$attributes)){ return ("Missing compulsory field [description]"); } - if (!is_array($attributes["container"])){ return ("Container attribute must be an array."); } - $attributes["container"]=array_reverse($attributes["container"]); - - //$member_array = array(); - //$member_array[0] = "cn=user1,cn=Users,dc=yourdomain,dc=com"; - //$member_array[1] = "cn=administrator,cn=Users,dc=yourdomain,dc=com"; - - $add=array(); - $add["cn"] = $attributes["group_name"]; - $add["samaccountname"] = $attributes["group_name"]; - $add["objectClass"] = "Group"; - $add["description"] = $attributes["description"]; - //$add["member"] = $member_array; UNTESTED - - $container="OU=".implode(",OU=",$attributes["container"]); - $result=ldap_add($this->_conn,"CN=".$add["cn"].", ".$container.",".$this->_base_dn,$add); - if ($result!=true){ return (false); } - - return (true); - } - - /** - * Remove a group from a group - * - * @param string $parent The parent group name - * @param string $child The child group name - * @return bool - */ - public function group_del_group($parent,$child){ - - // Find the parent dn - $parent_group=$this->group_info($parent,array("cn")); - if ($parent_group[0]["dn"]===NULL){ return (false); } - $parent_dn=$parent_group[0]["dn"]; - - // Find the child dn - $child_group=$this->group_info($child,array("cn")); - if ($child_group[0]["dn"]===NULL){ return (false); } - $child_dn=$child_group[0]["dn"]; - - $del=array(); - $del["member"] = $child_dn; - - $result=@ldap_mod_del($this->_conn,$parent_dn,$del); - if ($result==false){ return (false); } - return (true); - } - - /** - * Remove a user from a group - * - * @param string $group The group to remove a user from - * @param string $user The AD user to remove from the group - * @param bool $isGUID Is the username passed a GUID or a samAccountName - * @return bool - */ - public function group_del_user($group,$user,$isGUID=false){ - - // Find the parent dn - $group_info=$this->group_info($group,array("cn")); - if ($group_info[0]["dn"]===NULL){ return (false); } - $group_dn=$group_info[0]["dn"]; - - // Find the users dn - $user_dn=$this->user_dn($user,$isGUID); - if ($user_dn===false){ return (false); } - - $del=array(); - $del["member"] = $user_dn; - - $result=@ldap_mod_del($this->_conn,$group_dn,$del); - if ($result==false){ return (false); } - return (true); - } - - /** - * Remove a contact from a group - * - * @param string $group The group to remove a user from - * @param string $contact_dn The DN of a contact to remove from the group - * @return bool - */ - public function group_del_contact($group,$contact_dn){ - - // Find the parent dn - $group_info=$this->group_info($group,array("cn")); - if ($group_info[0]["dn"]===NULL){ return (false); } - $group_dn=$group_info[0]["dn"]; - - $del=array(); - $del["member"] = $contact_dn; - - $result=@ldap_mod_del($this->_conn,$group_dn,$del); - if ($result==false){ return (false); } - return (true); - } - - /** - * Return a list of groups in a group - * - * @param string $group The group to query - * @param bool $recursive Recursively get groups - * @return array - */ - public function groups_in_group($group, $recursive = NULL){ - if (!$this->_bind){ return (false); } - if ($recursive===NULL){ $recursive=$this->_recursive_groups; } // Use the default option if they haven't set it - - // Search the directory for the members of a group - $info=$this->group_info($group,array("member","cn")); - $groups=$info[0]["member"]; - if (!is_array($groups)) { - return (false); - } - - $group_array=array(); - - for ($i=0; $i<$groups["count"]; $i++){ - $filter="(&(objectCategory=group)(distinguishedName=".$this->ldap_slashes($groups[$i])."))"; - $fields = array("samaccountname", "distinguishedname", "objectClass"); - $sr=ldap_search($this->_conn,$this->_base_dn,$filter,$fields); - $entries = ldap_get_entries($this->_conn, $sr); - - // not a person, look for a group - if ($entries['count'] == 0 && $recursive == true) { - $filter="(&(objectCategory=group)(distinguishedName=".$this->ldap_slashes($groups[$i])."))"; - $fields = array("distinguishedname"); - $sr=ldap_search($this->_conn,$this->_base_dn,$filter,$fields); - $entries = ldap_get_entries($this->_conn, $sr); - if (!isset($entries[0]['distinguishedname'][0])) { - continue; - } - $sub_groups = $this->groups_in_group($entries[0]['distinguishedname'][0], $recursive); - if (is_array($sub_groups)) { - $group_array = array_merge($group_array, $sub_groups); - $group_array = array_unique($group_array); - } - continue; - } - - $group_array[] = $entries[0]['distinguishedname'][0]; - } - return ($group_array); - } - - /** - * Return a list of members in a group - * - * @param string $group The group to query - * @param bool $recursive Recursively get group members - * @return array - */ - public function group_members($group, $recursive = NULL){ - if (!$this->_bind){ return (false); } - if ($recursive===NULL){ $recursive=$this->_recursive_groups; } // Use the default option if they haven't set it - // Search the directory for the members of a group - $info=$this->group_info($group,array("member","cn")); - $users=$info[0]["member"]; - if (!is_array($users)) { - return (false); - } - - $user_array=array(); - - for ($i=0; $i<$users["count"]; $i++){ - $filter="(&(objectCategory=person)(distinguishedName=".$this->ldap_slashes($users[$i])."))"; - $fields = array("samaccountname", "distinguishedname", "objectClass"); - $sr=ldap_search($this->_conn,$this->_base_dn,$filter,$fields); - $entries = ldap_get_entries($this->_conn, $sr); - - // not a person, look for a group - if ($entries['count'] == 0 && $recursive == true) { - $filter="(&(objectCategory=group)(distinguishedName=".$this->ldap_slashes($users[$i])."))"; - $fields = array("samaccountname"); - $sr=ldap_search($this->_conn,$this->_base_dn,$filter,$fields); - $entries = ldap_get_entries($this->_conn, $sr); - if (!isset($entries[0]['samaccountname'][0])) { - continue; - } - $sub_users = $this->group_members($entries[0]['samaccountname'][0], $recursive); - if (is_array($sub_users)) { - $user_array = array_merge($user_array, $sub_users); - $user_array = array_unique($user_array); - } - continue; - } - - if ($entries[0]['samaccountname'][0] === NULL && $entries[0]['distinguishedname'][0] !== NULL) { - $user_array[] = $entries[0]['distinguishedname'][0]; - } - elseif ($entries[0]['samaccountname'][0] !== NULL) { - $user_array[] = $entries[0]['samaccountname'][0]; - } - } - return ($user_array); - } - - /** - * Group Information. Returns an array of information about a group. - * The group name is case sensitive - * - * @param string $group_name The group name to retrieve info about - * @param array $fields Fields to retrieve - * @return array - */ - public function group_info($group_name,$fields=NULL){ - if ($group_name===NULL){ return (false); } - if (!$this->_bind){ return (false); } - - if (stristr($group_name, '+')) { - $group_name=stripslashes($group_name); - } - - $filter="(&(objectCategory=group)(name=".$this->ldap_slashes($group_name)."))"; - //echo ($filter."!!!
"); - if ($fields===NULL){ $fields=array("member","memberof","cn","description","distinguishedname","objectcategory","samaccountname"); } - $sr=ldap_search($this->_conn,$this->_base_dn,$filter,$fields); - $entries = ldap_get_entries($this->_conn, $sr); - //print_r($entries); - return ($entries); - } - - /** - * Return a complete list of "groups in groups" - * - * @param string $group The group to get the list from - * @return array - */ - public function recursive_groups($group){ - if ($group===NULL){ return (false); } - - $ret_groups=array(); - - $groups=$this->group_info($group,array("memberof")); - if (isset($groups[0]["memberof"]) && is_array($groups[0]["memberof"])) { - $groups=$groups[0]["memberof"]; - - if ($groups){ - $group_names=$this->nice_names($groups); - $ret_groups=array_merge($ret_groups,$group_names); //final groups to return - - foreach ($group_names as $id => $group_name){ - $child_groups=$this->recursive_groups($group_name); - $ret_groups=array_merge($ret_groups,$child_groups); - } - } - } - - return ($ret_groups); - } - - /** - * Returns a complete list of the groups in AD based on a SAM Account Type - * - * @param string $samaccounttype The account type to return - * @param bool $include_desc Whether to return a description - * @param string $search Search parameters - * @param bool $sorted Whether to sort the results - * @return array - */ - public function search_groups($samaccounttype = ADLDAP_SECURITY_GLOBAL_GROUP, $include_desc = false, $search = "*", $sorted = true) { - if (!$this->_bind){ return (false); } - - $filter = '(&(objectCategory=group)'; - if ($samaccounttype !== null) { - $filter .= '(samaccounttype='. $samaccounttype .')'; - } - $filter .= '(cn='.$search.'))'; - // Perform the search and grab all their details - $fields=array("samaccountname","description"); - $sr=ldap_search($this->_conn,$this->_base_dn,$filter,$fields); - $entries = ldap_get_entries($this->_conn, $sr); - - $groups_array = array(); - for ($i=0; $i<$entries["count"]; $i++){ - if ($include_desc && strlen($entries[$i]["description"][0]) > 0 ){ - $groups_array[ $entries[$i]["samaccountname"][0] ] = $entries[$i]["description"][0]; - } elseif ($include_desc){ - $groups_array[ $entries[$i]["samaccountname"][0] ] = $entries[$i]["samaccountname"][0]; - } else { - array_push($groups_array, $entries[$i]["samaccountname"][0]); - } - } - if( $sorted ){ asort($groups_array); } - return ($groups_array); - } - - /** - * Returns a complete list of all groups in AD - * - * @param bool $include_desc Whether to return a description - * @param string $search Search parameters - * @param bool $sorted Whether to sort the results - * @return array - */ - public function all_groups($include_desc = false, $search = "*", $sorted = true){ - $groups_array = $this->search_groups(null, $include_desc, $search, $sorted); - return ($groups_array); - } - - /** - * Returns a complete list of security groups in AD - * - * @param bool $include_desc Whether to return a description - * @param string $search Search parameters - * @param bool $sorted Whether to sort the results - * @return array - */ - public function all_security_groups($include_desc = false, $search = "*", $sorted = true){ - $groups_array = $this->search_groups(ADLDAP_SECURITY_GLOBAL_GROUP, $include_desc, $search, $sorted); - return ($groups_array); - } - - /** - * Returns a complete list of distribution lists in AD - * - * @param bool $include_desc Whether to return a description - * @param string $search Search parameters - * @param bool $sorted Whether to sort the results - * @return array - */ - public function all_distribution_groups($include_desc = false, $search = "*", $sorted = true){ - $groups_array = $this->search_groups(ADLDAP_DISTRIBUTION_GROUP, $include_desc, $search, $sorted); - return ($groups_array); - } - - //***************************************************************************************************************** - // USER FUNCTIONS - - /** - * Create a user - * - * If you specify a password here, this can only be performed over SSL - * - * @param array $attributes The attributes to set to the user account - * @return bool - */ - public function user_create($attributes){ - // Check for compulsory fields - if (!array_key_exists("username",$attributes)){ return ("Missing compulsory field [username]"); } - if (!array_key_exists("firstname",$attributes)){ return ("Missing compulsory field [firstname]"); } - if (!array_key_exists("surname",$attributes)){ return ("Missing compulsory field [surname]"); } - if (!array_key_exists("email",$attributes)){ return ("Missing compulsory field [email]"); } - if (!array_key_exists("container",$attributes)){ return ("Missing compulsory field [container]"); } - if (!is_array($attributes["container"])){ return ("Container attribute must be an array."); } - - if (array_key_exists("password",$attributes) && (!$this->_use_ssl && !$this->_use_tls)){ - throw new adLDAPException('SSL must be configured on your webserver and enabled in the class to set passwords.'); - } - - if (!array_key_exists("display_name",$attributes)){ $attributes["display_name"]=$attributes["firstname"]." ".$attributes["surname"]; } - - // Translate the schema - $add=$this->adldap_schema($attributes); - - // Additional stuff only used for adding accounts - $add["cn"][0]=$attributes["display_name"]; - $add["samaccountname"][0]=$attributes["username"]; - $add["objectclass"][0]="top"; - $add["objectclass"][1]="person"; - $add["objectclass"][2]="organizationalPerson"; - $add["objectclass"][3]="user"; //person? - //$add["name"][0]=$attributes["firstname"]." ".$attributes["surname"]; - - // Set the account control attribute - $control_options=array("NORMAL_ACCOUNT"); - if (!$attributes["enabled"]){ $control_options[]="ACCOUNTDISABLE"; } - $add["userAccountControl"][0]=$this->account_control($control_options); - //echo ("
"); print_r($add);
-
-        // Determine the container
-        $attributes["container"]=array_reverse($attributes["container"]);
-        $container="OU=".implode(",OU=",$attributes["container"]);
-
-        // Add the entry
-        $result=@ldap_add($this->_conn, "CN=".$add["cn"][0].", ".$container.",".$this->_base_dn, $add);
-        if ($result!=true){ return (false); }
-        
-        return (true);
-    }
-    
-    /**
-    * Delete a user account
-    * 
-    * @param string $username The username to delete (please be careful here!)
-    * @param bool $isGUID Is the username a GUID or a samAccountName
-    * @return array
-    */
-    public function user_delete($username,$isGUID=false) {      
-        $userinfo = $this->user_info($username, array("*"),$isGUID);
-        $dn = $userinfo[0]['distinguishedname'][0];
-        $result=$this->dn_delete($dn);
-        if ($result!=true){ return (false); }        
-        return (true);
-    }
-    
-    /**
-    * Groups the user is a member of
-    * 
-    * @param string $username The username to query
-    * @param bool $recursive Recursive list of groups
-    * @param bool $isGUID Is the username passed a GUID or a samAccountName
-    * @return array
-    */
-    public function user_groups($username,$recursive=NULL,$isGUID=false){
-        if ($username===NULL){ return (false); }
-        if ($recursive===NULL){ $recursive=$this->_recursive_groups; } // Use the default option if they haven't set it
-        if (!$this->_bind){ return (false); }
-        
-        // Search the directory for their information
-        $info=@$this->user_info($username,array("memberof","primarygroupid"),$isGUID);
-        $groups=$this->nice_names($info[0]["memberof"]); // Presuming the entry returned is our guy (unique usernames)
-
-        if ($recursive === true){
-            foreach ($groups as $id => $group_name){
-                $extra_groups=$this->recursive_groups($group_name);
-                $groups=array_merge($groups,$extra_groups);
-            }
-        }
-        
-        return ($groups);
-    }
-    
-    /**
-    * Find information about the users
-    * 
-    * @param string $username The username to query
-    * @param array $fields Array of parameters to query
-    * @param bool $isGUID Is the username passed a GUID or a samAccountName
-    * @return array
-    */
-    public function user_info($username,$fields=NULL,$isGUID=false){
-        if ($username===NULL){ return (false); }
-        if (!$this->_bind){ return (false); }
-
-        if ($isGUID === true) {
-            $username = $this->strguid2hex($username);
-            $filter="objectguid=".$username;
-        }
-        else if (strstr($username, "@")) {
-             $filter="userPrincipalName=".$username;
-        }
-        else {
-             $filter="samaccountname=".$username;
-        }
-        $filter = "(&(objectCategory=person)({$filter}))";
-        if ($fields===NULL){ $fields=array("samaccountname","mail","memberof","department","displayname","telephonenumber","primarygroupid","objectsid"); }
-        if (!in_array("objectsid",$fields)){
-            $fields[] = "objectsid";
-        }
-        $sr=ldap_search($this->_conn,$this->_base_dn,$filter,$fields);
-        $entries = ldap_get_entries($this->_conn, $sr);
-        
-        if (isset($entries[0])) {
-            if ($entries[0]['count'] >= 1) {
-                if (in_array("memberof", $fields)) {
-                    // AD does not return the primary group in the ldap query, we may need to fudge it
-                    if ($this->_real_primarygroup && isset($entries[0]["primarygroupid"][0]) && isset($entries[0]["objectsid"][0])){
-                        //$entries[0]["memberof"][]=$this->group_cn($entries[0]["primarygroupid"][0]);
-                        $entries[0]["memberof"][]=$this->get_primary_group($entries[0]["primarygroupid"][0], $entries[0]["objectsid"][0]);
-                    } else {
-                        $entries[0]["memberof"][]="CN=Domain Users,CN=Users,".$this->_base_dn;
-                    }
-                    $entries[0]["memberof"]["count"]++;
-                }
-            }
-            return $entries;
-        }
-        return false;
-    }
-    
-    /**
-    * Determine if a user is in a specific group
-    * 
-    * @param string $username The username to query
-    * @param string $group The name of the group to check against
-    * @param bool $recursive Check groups recursively
-    * @param bool $isGUID Is the username passed a GUID or a samAccountName
-    * @return bool
-    */
-    public function user_ingroup($username,$group,$recursive=NULL,$isGUID=false){
-        if ($username===NULL){ return (false); }
-        if ($group===NULL){ return (false); }
-        if (!$this->_bind){ return (false); }
-        if ($recursive===NULL){ $recursive=$this->_recursive_groups; } // Use the default option if they haven't set it
-        
-        // Get a list of the groups
-        $groups=$this->user_groups($username,$recursive,$isGUID);
-        
-        // Return true if the specified group is in the group list
-        if (in_array($group,$groups)){ return (true); }
-
-        return (false);
-    }
-    
-    /**
-    * Determine a user's password expiry date
-    * 
-    * @param string $username The username to query
-    * @param book $isGUID Is the username passed a GUID or a samAccountName
-    * @requires bcmath http://www.php.net/manual/en/book.bc.php
-    * @return array
-    */
-    public function user_password_expiry($username,$isGUID=false) {
-        if ($username===NULL){ return ("Missing compulsory field [username]"); }
-        if (!$this->_bind){ return (false); }
-        if (!function_exists('bcmod')) { return ("Missing function support [bcmod] http://www.php.net/manual/en/book.bc.php"); };
-        
-        $userinfo = $this->user_info($username, array("pwdlastset", "useraccountcontrol"), $isGUID);
-        $pwdlastset = $userinfo[0]['pwdlastset'][0];
-        $status = array();
-        
-        if ($userinfo[0]['useraccountcontrol'][0] == '66048') {
-            // Password does not expire
-            return "Does not expire";
-        }
-        if ($pwdlastset === '0') {
-            // Password has already expired
-            return "Password has expired";
-        }
-        
-         // Password expiry in AD can be calculated from TWO values:
-         //   - User's own pwdLastSet attribute: stores the last time the password was changed
-         //   - Domain's maxPwdAge attribute: how long passwords last in the domain
-         //
-         // Although Microsoft chose to use a different base and unit for time measurements.
-         // This function will convert them to Unix timestamps
-         $sr = ldap_read($this->_conn, $this->_base_dn, 'objectclass=*', array('maxPwdAge'));
-         if (!$sr) {
-             return false;
-         }
-         $info = ldap_get_entries($this->_conn, $sr);
-         $maxpwdage = $info[0]['maxpwdage'][0];
-         
-
-         // See MSDN: http://msdn.microsoft.com/en-us/library/ms974598.aspx
-         //
-         // pwdLastSet contains the number of 100 nanosecond intervals since January 1, 1601 (UTC), 
-         // stored in a 64 bit integer. 
-         //
-         // The number of seconds between this date and Unix epoch is 11644473600.
-         //
-         // maxPwdAge is stored as a large integer that represents the number of 100 nanosecond
-         // intervals from the time the password was set before the password expires.
-         //
-         // We also need to scale this to seconds but also this value is a _negative_ quantity!
-         //
-         // If the low 32 bits of maxPwdAge are equal to 0 passwords do not expire
-         //
-         // Unfortunately the maths involved are too big for PHP integers, so I've had to require
-         // BCMath functions to work with arbitrary precision numbers.
-         if (bcmod($maxpwdage, 4294967296) === '0') {
-            return "Domain does not expire passwords";
-        }
-        
-        // Add maxpwdage and pwdlastset and we get password expiration time in Microsoft's
-        // time units.  Because maxpwd age is negative we need to subtract it.
-        $pwdexpire = bcsub($pwdlastset, $maxpwdage);
-    
-        // Convert MS's time to Unix time
-        $status['expiryts'] = bcsub(bcdiv($pwdexpire, '10000000'), '11644473600');
-        $status['expiryformat'] = date('Y-m-d H:i:s', bcsub(bcdiv($pwdexpire, '10000000'), '11644473600'));
-        
-        return $status;
-    }
-    
-    /**
-    * Modify a user
-    * 
-    * @param string $username The username to query
-    * @param array $attributes The attributes to modify.  Note if you set the enabled attribute you must not specify any other attributes
-    * @param bool $isGUID Is the username passed a GUID or a samAccountName
-    * @return bool
-    */
-    public function user_modify($username,$attributes,$isGUID=false){
-        if ($username===NULL){ return ("Missing compulsory field [username]"); }
-        if (array_key_exists("password",$attributes) && !$this->_use_ssl){ 
-            throw new adLDAPException('SSL must be configured on your webserver and enabled in the class to set passwords.');
-        }
-
-        // Find the dn of the user
-        $user_dn=$this->user_dn($username,$isGUID);
-        if ($user_dn===false){ return (false); }
-        
-        // Translate the update to the LDAP schema                
-        $mod=$this->adldap_schema($attributes);
-        
-        // Check to see if this is an enabled status update
-        if (!$mod && !array_key_exists("enabled", $attributes)){ return (false); }
-        
-        // Set the account control attribute (only if specified)
-        if (array_key_exists("enabled",$attributes)){
-            if ($attributes["enabled"]){ $control_options=array("NORMAL_ACCOUNT"); }
-            else { $control_options=array("NORMAL_ACCOUNT","ACCOUNTDISABLE"); }
-            $mod["userAccountControl"][0]=$this->account_control($control_options);
-        }
-
-        // Do the update
-        $result=@ldap_modify($this->_conn,$user_dn,$mod);
-        if ($result==false){ return (false); }
-        
-        return (true);
-    }
-    
-    /**
-    * Disable a user account
-    * 
-    * @param string $username The username to disable
-    * @param bool $isGUID Is the username passed a GUID or a samAccountName
-    * @return bool
-    */
-    public function user_disable($username,$isGUID=false){
-        if ($username===NULL){ return ("Missing compulsory field [username]"); }
-        $attributes=array("enabled"=>0);
-        $result = $this->user_modify($username, $attributes, $isGUID);
-        if ($result==false){ return (false); }
-        
-        return (true);
-    }
-    
-    /**
-    * Enable a user account
-    * 
-    * @param string $username The username to enable
-    * @param bool $isGUID Is the username passed a GUID or a samAccountName
-    * @return bool
-    */
-    public function user_enable($username,$isGUID=false){
-        if ($username===NULL){ return ("Missing compulsory field [username]"); }
-        $attributes=array("enabled"=>1);
-        $result = $this->user_modify($username, $attributes, $isGUID);
-        if ($result==false){ return (false); }
-        
-        return (true);
-    }
-    
-    /**
-    * Set the password of a user - This must be performed over SSL
-    * 
-    * @param string $username The username to modify
-    * @param string $password The new password
-    * @param bool $isGUID Is the username passed a GUID or a samAccountName
-    * @return bool
-    */
-    public function user_password($username,$password,$isGUID=false){
-        if ($username===NULL){ return (false); }
-        if ($password===NULL){ return (false); }
-        if (!$this->_bind){ return (false); }
-        if (!$this->_use_ssl && !$this->_use_tls){ 
-            throw new adLDAPException('SSL must be configured on your webserver and enabled in the class to set passwords.');
-        }
-        
-        $user_dn=$this->user_dn($username,$isGUID);
-        if ($user_dn===false){ return (false); }
-                
-        $add=array();
-        $add["unicodePwd"][0]=$this->encode_password($password);
-        
-        $result=ldap_mod_replace($this->_conn,$user_dn,$add);
-        if ($result==false){ return (false); }
-        
-        return (true);
-    }
-    
-    /**
-    * Return a list of all users in AD
-    * 
-    * @param bool $include_desc Return a description of the user
-    * @param string $search Search parameter
-    * @param bool $sorted Sort the user accounts
-    * @return array
-    */
-    public function all_users($include_desc = false, $search = "*", $sorted = true){
-        if (!$this->_bind){ return (false); }
-        
-        // Perform the search and grab all their details
-        $filter = "(&(objectClass=user)(samaccounttype=". ADLDAP_NORMAL_ACCOUNT .")(objectCategory=person)(cn=".$search."))";
-        $fields=array("samaccountname","displayname");
-        $sr=ldap_search($this->_conn,$this->_base_dn,$filter,$fields);
-        $entries = ldap_get_entries($this->_conn, $sr);
-
-        $users_array = array();
-        for ($i=0; $i<$entries["count"]; $i++){
-            if ($include_desc && strlen($entries[$i]["displayname"][0])>0){
-                $users_array[ $entries[$i]["samaccountname"][0] ] = $entries[$i]["displayname"][0];
-            } elseif ($include_desc){
-                $users_array[ $entries[$i]["samaccountname"][0] ] = $entries[$i]["samaccountname"][0];
-            } else {
-                array_push($users_array, $entries[$i]["samaccountname"][0]);
-            }
-        }
-        if ($sorted){ asort($users_array); }
-        return ($users_array);
-    }
-    
-    /**
-    * Converts a username (samAccountName) to a GUID
-    * 
-    * @param string $username The username to query
-    * @return string
-    */
-    public function username2guid($username) {
-        if (!$this->_bind){ return (false); }
-        if ($username === null){ return ("Missing compulsory field [username]"); }
-        
-        $filter = "samaccountname=" . $username; 
-        $fields = array("objectGUID"); 
-        $sr = @ldap_search($this->_conn, $this->_base_dn, $filter, $fields); 
-        if (ldap_count_entries($this->_conn, $sr) > 0) { 
-            $entry = @ldap_first_entry($this->_conn, $sr); 
-            $guid = @ldap_get_values_len($this->_conn, $entry, 'objectGUID'); 
-            $strGUID = $this->binary2text($guid[0]);          
-            return ($strGUID); 
-        }
-        else { 
-            return (false); 
-        } 
-    }
-    
-    /**
-    * Move a user account to a different OU
-    *
-    * @param string $username The username to move (please be careful here!)
-    * @param array $container The container or containers to move the user to (please be careful here!).
-    * accepts containers in 1. parent 2. child order
-    * @return array
-    */
-    public function user_move($username, $container) {
-        if (!$this->_bind){ return (false); }
-        if ($username === null){ return ("Missing compulsory field [username]"); }
-        if ($container === null){ return ("Missing compulsory field [container]"); }
-        if (!is_array($container)){ return ("Container must be an array"); }
-        
-        $userinfo = $this->user_info($username, array("*"));
-        $dn = $userinfo[0]['distinguishedname'][0];
-        $newrdn = "cn=" . $username;
-        $container = array_reverse($container);
-        $newcontainer = "ou=" . implode(",ou=",$container);
-        $newbasedn = strtolower($newcontainer) . "," . $this->_base_dn;
-        $result=@ldap_rename($this->_conn,$dn,$newrdn,$newbasedn,true);
-        if ($result !== true) {
-            return (false);
-        }
-        return (true);
-    }
-    
-    //*****************************************************************************************************************
-    // CONTACT FUNCTIONS
-    // * Still work to do in this area, and new functions to write
-    
-    /**
-    * Create a contact
-    * 
-    * @param array $attributes The attributes to set to the contact
-    * @return bool
-    */
-    public function contact_create($attributes){
-        // Check for compulsory fields
-        if (!array_key_exists("display_name",$attributes)){ return ("Missing compulsory field [display_name]"); }
-        if (!array_key_exists("email",$attributes)){ return ("Missing compulsory field [email]"); }
-        if (!array_key_exists("container",$attributes)){ return ("Missing compulsory field [container]"); }
-        if (!is_array($attributes["container"])){ return ("Container attribute must be an array."); }
-
-        // Translate the schema
-        $add=$this->adldap_schema($attributes);
-        
-        // Additional stuff only used for adding contacts
-        $add["cn"][0]=$attributes["display_name"];
-        $add["objectclass"][0]="top";
-        $add["objectclass"][1]="person";
-        $add["objectclass"][2]="organizationalPerson";
-        $add["objectclass"][3]="contact"; 
-        if (!isset($attributes['exchange_hidefromlists'])) {
-            $add["msExchHideFromAddressLists"][0]="TRUE";
-        }
-
-        // Determine the container
-        $attributes["container"]=array_reverse($attributes["container"]);
-        $container="OU=".implode(",OU=",$attributes["container"]);
-
-        // Add the entry
-        $result=@ldap_add($this->_conn, "CN=".$add["cn"][0].", ".$container.",".$this->_base_dn, $add);
-        if ($result!=true){ return (false); }
-        
-        return (true);
-    }  
-    
-    /**
-    * Determine the list of groups a contact is a member of
-    * 
-    * @param string $distinguisedname The full DN of a contact
-    * @param bool $recursive Recursively check groups
-    * @return array
-    */
-    public function contact_groups($distinguishedname,$recursive=NULL){
-        if ($distinguishedname===NULL){ return (false); }
-        if ($recursive===NULL){ $recursive=$this->_recursive_groups; } //use the default option if they haven't set it
-        if (!$this->_bind){ return (false); }
-        
-        // Search the directory for their information
-        $info=@$this->contact_info($distinguishedname,array("memberof","primarygroupid"));
-        $groups=$this->nice_names($info[0]["memberof"]); //presuming the entry returned is our contact
-
-        if ($recursive === true){
-            foreach ($groups as $id => $group_name){
-                $extra_groups=$this->recursive_groups($group_name);
-                $groups=array_merge($groups,$extra_groups);
-            }
-        }
-        
-        return ($groups);
-    }
-    
-    /**
-    * Get contact information
-    * 
-    * @param string $distinguisedname The full DN of a contact
-    * @param array $fields Attributes to be returned
-    * @return array
-    */
-    public function contact_info($distinguishedname,$fields=NULL){
-        if ($distinguishedname===NULL){ return (false); }
-        if (!$this->_bind){ return (false); }
-
-        $filter="distinguishedName=".$distinguishedname;
-        if ($fields===NULL){ $fields=array("distinguishedname","mail","memberof","department","displayname","telephonenumber","primarygroupid","objectsid"); }
-        $sr=ldap_search($this->_conn,$this->_base_dn,$filter,$fields);
-        $entries = ldap_get_entries($this->_conn, $sr);
-        
-        if ($entries[0]['count'] >= 1) {
-            // AD does not return the primary group in the ldap query, we may need to fudge it
-            if ($this->_real_primarygroup && isset($entries[0]["primarygroupid"][0]) && isset($entries[0]["primarygroupid"][0])){
-                //$entries[0]["memberof"][]=$this->group_cn($entries[0]["primarygroupid"][0]);
-                $entries[0]["memberof"][]=$this->get_primary_group($entries[0]["primarygroupid"][0], $entries[0]["objectsid"][0]);
-            } else {
-                $entries[0]["memberof"][]="CN=Domain Users,CN=Users,".$this->_base_dn;
-            }
-        }
-        
-        $entries[0]["memberof"]["count"]++;
-        return ($entries);
-    }
-    
-    /**
-    * Determine if a contact is a member of a group
-    * 
-    * @param string $distinguisedname The full DN of a contact
-    * @param string $group The group name to query
-    * @param bool $recursive Recursively check groups
-    * @return bool
-    */
-    public function contact_ingroup($distinguisedname,$group,$recursive=NULL){
-        if ($distinguisedname===NULL){ return (false); }
-        if ($group===NULL){ return (false); }
-        if (!$this->_bind){ return (false); }
-        if ($recursive===NULL){ $recursive=$this->_recursive_groups; } //use the default option if they haven't set it
-        
-        // Get a list of the groups
-        $groups=$this->contact_groups($distinguisedname,array("memberof"),$recursive);
-        
-        // Return true if the specified group is in the group list
-        if (in_array($group,$groups)){ return (true); }
-
-        return (false);
-    }          
-    
-    /**
-    * Modify a contact
-    * 
-    * @param string $distinguishedname The contact to query
-    * @param array $attributes The attributes to modify.  Note if you set the enabled attribute you must not specify any other attributes
-    * @return bool
-    */
-    public function contact_modify($distinguishedname,$attributes){
-        if ($distinguishedname===NULL){ return ("Missing compulsory field [distinguishedname]"); }
-        
-        // Translate the update to the LDAP schema                
-        $mod=$this->adldap_schema($attributes);
-        
-        // Check to see if this is an enabled status update
-        if (!$mod){ return (false); }
-        
-        // Do the update
-        $result=ldap_modify($this->_conn,$distinguishedname,$mod);
-        if ($result==false){ return (false); }
-        
-        return (true);
-    }
-    
-    /**
-    * Delete a contact
-    * 
-    * @param string $distinguishedname The contact dn to delete (please be careful here!)
-    * @return array
-    */
-    public function contact_delete($distinguishedname) {
-        $result = $this->dn_delete($distinguishedname);
-        if ($result!=true){ return (false); }       
-        return (true);
-    }
-    
-    /**
-    * Return a list of all contacts
-    * 
-    * @param bool $include_desc Include a description of a contact
-    * @param string $search The search parameters
-    * @param bool $sorted Whether to sort the results
-    * @return array
-    */
-    public function all_contacts($include_desc = false, $search = "*", $sorted = true){
-        if (!$this->_bind){ return (false); }
-        
-        // Perform the search and grab all their details
-        $filter = "(&(objectClass=contact)(cn=".$search."))";
-        $fields=array("displayname","distinguishedname");           
-        $sr=ldap_search($this->_conn,$this->_base_dn,$filter,$fields);
-        $entries = ldap_get_entries($this->_conn, $sr);
-
-        $users_array = array();
-        for ($i=0; $i<$entries["count"]; $i++){
-            if ($include_desc && strlen($entries[$i]["displayname"][0])>0){
-                $users_array[ $entries[$i]["distinguishedname"][0] ] = $entries[$i]["displayname"][0];
-            } elseif ($include_desc){
-                $users_array[ $entries[$i]["distinguishedname"][0] ] = $entries[$i]["distinguishedname"][0];
-            } else {
-                array_push($users_array, $entries[$i]["distinguishedname"][0]);
-            }
-        }
-        if ($sorted){ asort($users_array); }
-        return ($users_array);
-    }
-    
-    //*****************************************************************************************************************
-    // FOLDER FUNCTIONS
-    
-    /**
-    * Returns a folder listing for a specific OU
-    * See http://adldap.sourceforge.net/wiki/doku.php?id=api_folder_functions
-    * 
-    * @param array $folder_name An array to the OU you wish to list. 
-    *                           If set to NULL will list the root, strongly recommended to set 
-    *                           $recursive to false in that instance!
-    * @param string $dn_type The type of record to list.  This can be ADLDAP_FOLDER or ADLDAP_CONTAINER.
-    * @param bool $recursive Recursively search sub folders
-    * @param bool $type Specify a type of object to search for
-    * @return array
-    */
-    public function folder_list($folder_name = NULL, $dn_type = ADLDAP_FOLDER, $recursive = NULL, $type = NULL) {
-        if ($recursive===NULL){ $recursive=$this->_recursive_groups; } //use the default option if they haven't set it
-        if (!$this->_bind){ return (false); }
-
-        $filter = '(&';
-        if ($type !== NULL) {
-            switch ($type) {
-                case 'contact':
-                    $filter .= '(objectClass=contact)';
-                    break;
-                case 'computer':
-                    $filter .= '(objectClass=computer)';
-                    break;
-                case 'group':
-                    $filter .= '(objectClass=group)';
-                    break;
-                case 'folder':
-                    $filter .= '(objectClass=organizationalUnit)';
-                    break;
-                case 'container':
-                    $filter .= '(objectClass=container)';
-                    break;
-                case 'domain':
-                    $filter .= '(objectClass=builtinDomain)';
-                    break;
-                default:
-                    $filter .= '(objectClass=user)';
-                    break;   
-            }
-        }
-        else {
-            $filter .= '(objectClass=*)';   
-        }
-        // If the folder name is null then we will search the root level of AD
-        // This requires us to not have an OU= part, just the base_dn
-        $searchou = $this->_base_dn;
-        if (is_array($folder_name)) {
-            $ou = $dn_type . "=".implode("," . $dn_type . "=",$folder_name);
-            $filter .= '(!(distinguishedname=' . $ou . ',' . $this->_base_dn . ')))';
-            $searchou = $ou . ',' . $this->_base_dn;
-        }
-        else {
-            $filter .= '(!(distinguishedname=' . $this->_base_dn . ')))';
-        }
-
-        if ($recursive === true) {
-            $sr=ldap_search($this->_conn, $searchou, $filter, array('objectclass', 'distinguishedname', 'samaccountname'));
-            $entries = @ldap_get_entries($this->_conn, $sr);
-            if (is_array($entries)) {
-                return $entries;
-            }
-        }
-        else {
-            $sr=ldap_list($this->_conn, $searchou, $filter, array('objectclass', 'distinguishedname', 'samaccountname'));
-            $entries = @ldap_get_entries($this->_conn, $sr);
-            if (is_array($entries)) {
-                return $entries;
-            }
-        }
-        
-        return false;
-    }
-    
-    //*****************************************************************************************************************
-    // COMPUTER FUNCTIONS
-    
-    /**
-    * Get information about a specific computer
-    * 
-    * @param string $computer_name The name of the computer
-    * @param array $fields Attributes to return
-    * @return array
-    */
-    public function computer_info($computer_name,$fields=NULL){
-        if ($computer_name===NULL){ return (false); }
-        if (!$this->_bind){ return (false); }
-
-        $filter="(&(objectClass=computer)(cn=".$computer_name."))";
-        if ($fields===NULL){ $fields=array("memberof","cn","displayname","dnshostname","distinguishedname","objectcategory","operatingsystem","operatingsystemservicepack","operatingsystemversion"); }
-        $sr=ldap_search($this->_conn,$this->_base_dn,$filter,$fields);
-        $entries = ldap_get_entries($this->_conn, $sr);
-        
-        return ($entries);
-    }
-    
-    /**
-    * Check if a computer is in a group
-    * 
-    * @param string $computer_name The name of the computer
-    * @param string $group The group to check
-    * @param bool $recursive Whether to check recursively
-    * @return array
-    */
-    public function computer_ingroup($computer_name,$group,$recursive=NULL){
-        if ($computer_name===NULL){ return (false); }
-        if ($group===NULL){ return (false); }
-        if (!$this->_bind){ return (false); }
-        if ($recursive===NULL){ $recursive=$this->_recursive_groups; } // use the default option if they haven't set it
-
-        //get a list of the groups
-        $groups=$this->computer_groups($computer_name,array("memberof"),$recursive);
-
-        //return true if the specified group is in the group list
-        if (in_array($group,$groups)){ return (true); }
-
-        return (false);
-    }
-    
-    /**
-    * Get the groups a computer is in
-    * 
-    * @param string $computer_name The name of the computer
-    * @param bool $recursive Whether to check recursively
-    * @return array
-    */
-    public function computer_groups($computer_name,$recursive=NULL){
-        if ($computer_name===NULL){ return (false); }
-        if ($recursive===NULL){ $recursive=$this->_recursive_groups; } //use the default option if they haven't set it
-        if (!$this->_bind){ return (false); }
-
-        //search the directory for their information
-        $info=@$this->computer_info($computer_name,array("memberof","primarygroupid"));
-        $groups=$this->nice_names($info[0]["memberof"]); //presuming the entry returned is our guy (unique usernames)
-
-        if ($recursive === true){
-            foreach ($groups as $id => $group_name){
-              $extra_groups=$this->recursive_groups($group_name);
-              $groups=array_merge($groups,$extra_groups);
-            }
-        }
-
-        return ($groups);
-    }
-    
-    //************************************************************************************************************
-    //  ORGANIZATIONAL UNIT FUNCTIONS
-    
-     /**
-    * Create an organizational unit
-    * 
-    * @param array $attributes Default attributes of the ou
-    * @return bool
-    */
-    public function ou_create($attributes){
-        if (!is_array($attributes)){ return ("Attributes must be an array"); }
-        if (!array_key_exists("ou_name",$attributes)){ return ("Missing compulsory field [ou_name]"); }
-        if (!array_key_exists("container",$attributes)){ return ("Missing compulsory field [container]"); }
-        if (!is_array($attributes["container"])){ return ("Container attribute must be an array."); }
-        $attributes["container"]=array_reverse($attributes["container"]);
-
-        $add=array();
-        $add["objectClass"] = "organizationalUnit";
-
-        $container="OU=".implode(",OU=",$attributes["container"]);
-        $result=ldap_add($this->_conn,"CN=".$add["cn"].", ".$container.",".$this->_base_dn,$add);
-        if ($result!=true){ return (false); }
-        
-        return (true);
-    }
-    
-    //************************************************************************************************************
-    // EXCHANGE FUNCTIONS
-    
-    /**
-    * Create an Exchange account
-    * 
-    * @param string $username The username of the user to add the Exchange account to
-    * @param array $storagegroup The mailbox, Exchange Storage Group, for the user account, this must be a full CN
-    *                            If the storage group has a different base_dn to the adLDAP configuration, set it using $base_dn
-    * @param string $emailaddress The primary email address to add to this user
-    * @param string $mailnickname The mail nick name.  If mail nickname is blank, the username will be used
-    * @param bool $usedefaults Indicates whether the store should use the default quota, rather than the per-mailbox quota.
-    * @param string $base_dn Specify an alternative base_dn for the Exchange storage group
-    * @param bool $isGUID Is the username passed a GUID or a samAccountName
-    * @return bool
-    */
-    public function exchange_create_mailbox($username, $storagegroup, $emailaddress, $mailnickname=NULL, $usedefaults=TRUE, $base_dn=NULL, $isGUID=false){
-        if ($username===NULL){ return ("Missing compulsory field [username]"); }     
-        if ($storagegroup===NULL){ return ("Missing compulsory array [storagegroup]"); }
-        if (!is_array($storagegroup)){ return ("[storagegroup] must be an array"); }
-        if ($emailaddress===NULL){ return ("Missing compulsory field [emailaddress]"); }
-        
-        if ($base_dn===NULL) {
-            $base_dn = $this->_base_dn;   
-        }
-        
-        $container="CN=".implode(",CN=",$storagegroup);
-        
-        if ($mailnickname===NULL) { $mailnickname=$username; }
-        $mdbUseDefaults = $this->bool2str($usedefaults);
-        
-        $attributes = array(
-            'exchange_homemdb'=>$container.",".$base_dn,
-            'exchange_proxyaddress'=>'SMTP:' . $emailaddress,
-            'exchange_mailnickname'=>$mailnickname,
-            'exchange_usedefaults'=>$mdbUseDefaults
-        );
-        $result = $this->user_modify($username,$attributes,$isGUID);
-        if ($result==false){ return (false); }
-        return (true);
-    }
-    
-    /**
-    * Add an X400 address to Exchange
-    * See http://tools.ietf.org/html/rfc1685 for more information.
-    * An X400 Address looks similar to this X400:c=US;a= ;p=Domain;o=Organization;s=Doe;g=John;
-    * 
-    * @param string $username The username of the user to add the X400 to to
-    * @param string $country Country
-    * @param string $admd Administration Management Domain
-    * @param string $pdmd Private Management Domain (often your AD domain)
-    * @param string $org Organization
-    * @param string $surname Surname
-    * @param string $givenName Given name
-    * @param bool $isGUID Is the username passed a GUID or a samAccountName
-    * @return bool
-    */
-    public function exchange_add_X400($username, $country, $admd, $pdmd, $org, $surname, $givenname, $isGUID=false) {
-        if ($username===NULL){ return ("Missing compulsory field [username]"); }     
-        
-        $proxyvalue = 'X400:';
-            
-        // Find the dn of the user
-        $user=$this->user_info($username,array("cn","proxyaddresses"), $isGUID);
-        if ($user[0]["dn"]===NULL){ return (false); }
-        $user_dn=$user[0]["dn"];
-        
-        // We do not have to demote an email address from the default so we can just add the new proxy address
-        $attributes['exchange_proxyaddress'] = $proxyvalue . 'c=' . $country . ';a=' . $admd . ';p=' . $pdmd . ';o=' . $org . ';s=' . $surname . ';g=' . $givenname . ';';
-       
-        // Translate the update to the LDAP schema                
-        $add=$this->adldap_schema($attributes);
-        
-        if (!$add){ return (false); }
-        
-        // Do the update
-        // Take out the @ to see any errors, usually this error might occur because the address already
-        // exists in the list of proxyAddresses
-        $result=@ldap_mod_add($this->_conn,$user_dn,$add);
-        if ($result==false){ return (false); }
-        
-        return (true);
-    }
-    
-    /**
-    * Add an address to Exchange
-    * 
-    * @param string $username The username of the user to add the Exchange account to
-    * @param string $emailaddress The email address to add to this user
-    * @param bool $default Make this email address the default address, this is a bit more intensive as we have to demote any existing default addresses
-    * @param bool $isGUID Is the username passed a GUID or a samAccountName
-    * @return bool
-    */
-    public function exchange_add_address($username, $emailaddress, $default=FALSE, $isGUID=false) {
-        if ($username===NULL){ return ("Missing compulsory field [username]"); }     
-        if ($emailaddress===NULL) { return ("Missing compulsory fields [emailaddress]"); }
-        
-        $proxyvalue = 'smtp:';
-        if ($default === true) {
-            $proxyvalue = 'SMTP:';
-        }
-              
-        // Find the dn of the user
-        $user=$this->user_info($username,array("cn","proxyaddresses"),$isGUID);
-        if ($user[0]["dn"]===NULL){ return (false); }
-        $user_dn=$user[0]["dn"];
-        
-        // We need to scan existing proxy addresses and demote the default one
-        if (is_array($user[0]["proxyaddresses"]) && $default===true) {
-            $modaddresses = array();
-            for ($i=0;$i_conn,$user_dn,$modaddresses);
-            if ($result==false){ return (false); }
-            
-            return (true);
-        }
-        else {
-            // We do not have to demote an email address from the default so we can just add the new proxy address
-            $attributes['exchange_proxyaddress'] = $proxyvalue . $emailaddress;
-            
-            // Translate the update to the LDAP schema                
-            $add=$this->adldap_schema($attributes);
-            
-            if (!$add){ return (false); }
-            
-            // Do the update
-            // Take out the @ to see any errors, usually this error might occur because the address already
-            // exists in the list of proxyAddresses
-            $result=@ldap_mod_add($this->_conn,$user_dn,$add);
-            if ($result==false){ return (false); }
-            
-            return (true);
-        }
-    }
-    
-    /**
-    * Remove an address to Exchange
-    * If you remove a default address the account will no longer have a default, 
-    * we recommend changing the default address first
-    * 
-    * @param string $username The username of the user to add the Exchange account to
-    * @param string $emailaddress The email address to add to this user
-    * @param bool $isGUID Is the username passed a GUID or a samAccountName
-    * @return bool
-    */
-    public function exchange_del_address($username, $emailaddress, $isGUID=false) {
-        if ($username===NULL){ return ("Missing compulsory field [username]"); }     
-        if ($emailaddress===NULL) { return ("Missing compulsory fields [emailaddress]"); }
-        
-        // Find the dn of the user
-        $user=$this->user_info($username,array("cn","proxyaddresses"),$isGUID);
-        if ($user[0]["dn"]===NULL){ return (false); }
-        $user_dn=$user[0]["dn"];
-        
-        if (is_array($user[0]["proxyaddresses"])) {
-            $mod = array();
-            for ($i=0;$i_conn,$user_dn,$mod);
-            if ($result==false){ return (false); }
-            
-            return (true);
-        }
-        else {
-            return (false);
-        }
-    }
-    /**
-    * Change the default address
-    * 
-    * @param string $username The username of the user to add the Exchange account to
-    * @param string $emailaddress The email address to make default
-    * @param bool $isGUID Is the username passed a GUID or a samAccountName
-    * @return bool
-    */
-    public function exchange_primary_address($username, $emailaddress, $isGUID=false) {
-        if ($username===NULL){ return ("Missing compulsory field [username]"); }     
-        if ($emailaddress===NULL) { return ("Missing compulsory fields [emailaddress]"); }
-        
-        // Find the dn of the user
-        $user=$this->user_info($username,array("cn","proxyaddresses"), $isGUID);
-        if ($user[0]["dn"]===NULL){ return (false); }
-        $user_dn=$user[0]["dn"];
-        
-        if (is_array($user[0]["proxyaddresses"])) {
-            $modaddresses = array();
-            for ($i=0;$i_conn,$user_dn,$modaddresses);
-            if ($result==false){ return (false); }
-            
-            return (true);
-        }
-        
-    }
-    
-    /**
-    * Mail enable a contact
-    * Allows email to be sent to them through Exchange
-    * 
-    * @param string $distinguishedname The contact to mail enable
-    * @param string $emailaddress The email address to allow emails to be sent through
-    * @param string $mailnickname The mailnickname for the contact in Exchange.  If NULL this will be set to the display name
-    * @return bool
-    */
-    public function exchange_contact_mailenable($distinguishedname, $emailaddress, $mailnickname=NULL){
-        if ($distinguishedname===NULL){ return ("Missing compulsory field [distinguishedname]"); }   
-        if ($emailaddress===NULL){ return ("Missing compulsory field [emailaddress]"); }  
-        
-        if ($mailnickname !== NULL) {
-            // Find the dn of the user
-            $user=$this->contact_info($distinguishedname,array("cn","displayname"));
-            if ($user[0]["displayname"]===NULL){ return (false); }
-            $mailnickname = $user[0]['displayname'][0];
-        }
-        
-        $attributes = array("email"=>$emailaddress,"contact_email"=>"SMTP:" . $emailaddress,"exchange_proxyaddress"=>"SMTP:" . $emailaddress,"exchange_mailnickname"=>$mailnickname);
-         
-        // Translate the update to the LDAP schema                
-        $mod=$this->adldap_schema($attributes);
-        
-        // Check to see if this is an enabled status update
-        if (!$mod){ return (false); }
-        
-        // Do the update
-        $result=ldap_modify($this->_conn,$distinguishedname,$mod);
-        if ($result==false){ return (false); }
-        
-        return (true);
-    }
-    
-    /**
-    * Returns a list of Exchange Servers in the ConfigurationNamingContext of the domain
-    * 
-    * @param array $attributes An array of the AD attributes you wish to return
-    * @return array
-    */
-    public function exchange_servers($attributes = array('cn','distinguishedname','serialnumber')) {
-        if (!$this->_bind){ return (false); }
-        
-        $configurationNamingContext = $this->get_root_dse(array('configurationnamingcontext'));
-        $sr = @ldap_search($this->_conn,$configurationNamingContext[0]['configurationnamingcontext'][0],'(&(objectCategory=msExchExchangeServer))',$attributes);
-        $entries = @ldap_get_entries($this->_conn, $sr);
-        return $entries;
-    }
-    
-    /**
-    * Returns a list of Storage Groups in Exchange for a given mail server
-    * 
-    * @param string $exchangeServer The full DN of an Exchange server.  You can use exchange_servers() to find the DN for your server
-    * @param array $attributes An array of the AD attributes you wish to return
-    * @param bool $recursive If enabled this will automatically query the databases within a storage group
-    * @return array
-    */
-    public function exchange_storage_groups($exchangeServer, $attributes = array('cn','distinguishedname'), $recursive = NULL) {
-        if (!$this->_bind){ return (false); }
-        if ($exchangeServer===NULL){ return ("Missing compulsory field [exchangeServer]"); }
-        if ($recursive===NULL){ $recursive=$this->_recursive_groups; }
-
-        $filter = '(&(objectCategory=msExchStorageGroup))';
-        $sr=@ldap_search($this->_conn, $exchangeServer, $filter, $attributes);
-        $entries = @ldap_get_entries($this->_conn, $sr);
-
-        if ($recursive === true) {
-            for ($i=0; $i<$entries['count']; $i++) {
-                $entries[$i]['msexchprivatemdb'] = $this->exchange_storage_databases($entries[$i]['distinguishedname'][0]);       
-            }
-        }
-        
-        return $entries;
-    }
-    
-    /**
-    * Returns a list of Databases within any given storage group in Exchange for a given mail server
-    * 
-    * @param string $storageGroup The full DN of an Storage Group.  You can use exchange_storage_groups() to find the DN 
-    * @param array $attributes An array of the AD attributes you wish to return
-    * @return array
-    */
-    public function exchange_storage_databases($storageGroup, $attributes = array('cn','distinguishedname','displayname')) {
-        if (!$this->_bind){ return (false); }
-        if ($storageGroup===NULL){ return ("Missing compulsory field [storageGroup]"); }
-        
-        $filter = '(&(objectCategory=msExchPrivateMDB))';
-        $sr=@ldap_search($this->_conn, $storageGroup, $filter, $attributes);
-        $entries = @ldap_get_entries($this->_conn, $sr);
-        return $entries;
-    }
-    
-    //************************************************************************************************************
-    // SERVER FUNCTIONS
-    
-    /**
-    * Find the Base DN of your domain controller
-    * 
-    * @return string
-    */
-    public function find_base_dn() {
-        $namingContext = $this->get_root_dse(array('defaultnamingcontext'));   
-        return $namingContext[0]['defaultnamingcontext'][0];
-    }
-    
-    /**
-    * Get the RootDSE properties from a domain controller
-    * 
-    * @param array $attributes The attributes you wish to query e.g. defaultnamingcontext
-    * @return array
-    */
-    public function get_root_dse($attributes = array("*", "+")) {
-        if (!$this->_bind){ return (false); }
-        
-        $sr = @ldap_read($this->_conn, NULL, 'objectClass=*', $attributes);
-        $entries = @ldap_get_entries($this->_conn, $sr);
-        return $entries;
-    }
-
-    //************************************************************************************************************
-    // UTILITY FUNCTIONS (Many of these functions are protected and can only be called from within the class)
-
-    /**
-    * Get last error from Active Directory
-    * 
-    * This function gets the last message from Active Directory
-    * This may indeed be a 'Success' message but if you get an unknown error
-    * it might be worth calling this function to see what errors were raised
-    * 
-    * return string
-    */
-    public function get_last_error() {
-        return @ldap_error($this->_conn);
-    }
-    
-    /**
-    * Detect LDAP support in php
-    * 
-    * @return bool
-    */    
-    protected function ldap_supported() {
-        if (!function_exists('ldap_connect')) {
-            return (false);   
-        }
-        return (true);
-    }
-    
-    /**
-    * Schema
-    * 
-    * @param array $attributes Attributes to be queried
-    * @return array
-    */    
-    protected function adldap_schema($attributes){
-    
-        // LDAP doesn't like NULL attributes, only set them if they have values
-        // If you wish to remove an attribute you should set it to a space
-        // TO DO: Adapt user_modify to use ldap_mod_delete to remove a NULL attribute
-        $mod=array();
-        
-        // Check every attribute to see if it contains 8bit characters and then UTF8 encode them
-        array_walk($attributes, array($this, 'encode8bit'));
-
-        if ($attributes["address_city"]){ $mod["l"][0]=$attributes["address_city"]; }
-        if ($attributes["address_code"]){ $mod["postalCode"][0]=$attributes["address_code"]; }
-        //if ($attributes["address_country"]){ $mod["countryCode"][0]=$attributes["address_country"]; } // use country codes?
-        if ($attributes["address_country"]){ $mod["c"][0]=$attributes["address_country"]; }
-        if ($attributes["address_pobox"]){ $mod["postOfficeBox"][0]=$attributes["address_pobox"]; }
-        if ($attributes["address_state"]){ $mod["st"][0]=$attributes["address_state"]; }
-        if ($attributes["address_street"]){ $mod["streetAddress"][0]=$attributes["address_street"]; }
-        if ($attributes["company"]){ $mod["company"][0]=$attributes["company"]; }
-        if ($attributes["change_password"]){ $mod["pwdLastSet"][0]=0; }
-        if ($attributes["department"]){ $mod["department"][0]=$attributes["department"]; }
-        if ($attributes["description"]){ $mod["description"][0]=$attributes["description"]; }
-        if ($attributes["display_name"]){ $mod["displayName"][0]=$attributes["display_name"]; }
-        if ($attributes["email"]){ $mod["mail"][0]=$attributes["email"]; }
-        if ($attributes["expires"]){ $mod["accountExpires"][0]=$attributes["expires"]; } //unix epoch format?
-        if ($attributes["firstname"]){ $mod["givenName"][0]=$attributes["firstname"]; }
-        if ($attributes["home_directory"]){ $mod["homeDirectory"][0]=$attributes["home_directory"]; }
-        if ($attributes["home_drive"]){ $mod["homeDrive"][0]=$attributes["home_drive"]; }
-        if ($attributes["initials"]){ $mod["initials"][0]=$attributes["initials"]; }
-        if ($attributes["logon_name"]){ $mod["userPrincipalName"][0]=$attributes["logon_name"]; }
-        if ($attributes["manager"]){ $mod["manager"][0]=$attributes["manager"]; }  //UNTESTED ***Use DistinguishedName***
-        if ($attributes["office"]){ $mod["physicalDeliveryOfficeName"][0]=$attributes["office"]; }
-        if ($attributes["password"]){ $mod["unicodePwd"][0]=$this->encode_password($attributes["password"]); }
-        if ($attributes["profile_path"]){ $mod["profilepath"][0]=$attributes["profile_path"]; }
-        if ($attributes["script_path"]){ $mod["scriptPath"][0]=$attributes["script_path"]; }
-        if ($attributes["surname"]){ $mod["sn"][0]=$attributes["surname"]; }
-        if ($attributes["title"]){ $mod["title"][0]=$attributes["title"]; }
-        if ($attributes["telephone"]){ $mod["telephoneNumber"][0]=$attributes["telephone"]; }
-        if ($attributes["mobile"]){ $mod["mobile"][0]=$attributes["mobile"]; }
-        if ($attributes["pager"]){ $mod["pager"][0]=$attributes["pager"]; }
-        if ($attributes["ipphone"]){ $mod["ipphone"][0]=$attributes["ipphone"]; }
-        if ($attributes["web_page"]){ $mod["wWWHomePage"][0]=$attributes["web_page"]; }
-        if ($attributes["fax"]){ $mod["facsimileTelephoneNumber"][0]=$attributes["fax"]; }
-        if ($attributes["enabled"]){ $mod["userAccountControl"][0]=$attributes["enabled"]; }
-        
-        // Distribution List specific schema
-        if ($attributes["group_sendpermission"]){ $mod["dlMemSubmitPerms"][0]=$attributes["group_sendpermission"]; }
-        if ($attributes["group_rejectpermission"]){ $mod["dlMemRejectPerms"][0]=$attributes["group_rejectpermission"]; }
-        
-        // Exchange Schema
-        if ($attributes["exchange_homemdb"]){ $mod["homeMDB"][0]=$attributes["exchange_homemdb"]; }
-        if ($attributes["exchange_mailnickname"]){ $mod["mailNickname"][0]=$attributes["exchange_mailnickname"]; }
-        if ($attributes["exchange_proxyaddress"]){ $mod["proxyAddresses"][0]=$attributes["exchange_proxyaddress"]; }
-        if ($attributes["exchange_usedefaults"]){ $mod["mDBUseDefaults"][0]=$attributes["exchange_usedefaults"]; }
-        if ($attributes["exchange_policyexclude"]){ $mod["msExchPoliciesExcluded"][0]=$attributes["exchange_policyexclude"]; }
-        if ($attributes["exchange_policyinclude"]){ $mod["msExchPoliciesIncluded"][0]=$attributes["exchange_policyinclude"]; }       
-        if ($attributes["exchange_addressbook"]){ $mod["showInAddressBook"][0]=$attributes["exchange_addressbook"]; }       
-        
-        // This schema is designed for contacts
-        if ($attributes["exchange_hidefromlists"]){ $mod["msExchHideFromAddressLists"][0]=$attributes["exchange_hidefromlists"]; }
-        if ($attributes["contact_email"]){ $mod["targetAddress"][0]=$attributes["contact_email"]; }
-        
-        //echo ("
"); print_r($mod);
-        /*
-        // modifying a name is a bit fiddly
-        if ($attributes["firstname"] && $attributes["surname"]){
-            $mod["cn"][0]=$attributes["firstname"]." ".$attributes["surname"];
-            $mod["displayname"][0]=$attributes["firstname"]." ".$attributes["surname"];
-            $mod["name"][0]=$attributes["firstname"]." ".$attributes["surname"];
-        }
-        */
-
-        if (count($mod)==0){ return (false); }
-        return ($mod);
-    }
-
-    /**
-    * Coping with AD not returning the primary group
-    * http://support.microsoft.com/?kbid=321360 
-    * 
-    * For some reason it's not possible to search on primarygrouptoken=XXX
-    * If someone can show otherwise, I'd like to know about it :)
-    * this way is resource intensive and generally a pain in the @#%^
-    * 
-    * @deprecated deprecated since version 3.1, see get get_primary_group
-    * @param string $gid Group ID
-    * @return string
-    */
-    protected function group_cn($gid){    
-        if ($gid===NULL){ return (false); }
-        $r=false;
-        
-        $filter="(&(objectCategory=group)(samaccounttype=". ADLDAP_SECURITY_GLOBAL_GROUP ."))";
-        $fields=array("primarygrouptoken","samaccountname","distinguishedname");
-        $sr=ldap_search($this->_conn,$this->_base_dn,$filter,$fields);
-        $entries = ldap_get_entries($this->_conn, $sr);
-        
-        for ($i=0; $i<$entries["count"]; $i++){
-            if ($entries[$i]["primarygrouptoken"][0]==$gid){
-                $r=$entries[$i]["distinguishedname"][0];
-                $i=$entries["count"];
-            }
-        }
-
-        return ($r);
-    }
-    
-    /**
-    * Coping with AD not returning the primary group
-    * http://support.microsoft.com/?kbid=321360 
-    * 
-    * This is a re-write based on code submitted by Bruce which prevents the 
-    * need to search each security group to find the true primary group
-    * 
-    * @param string $gid Group ID
-    * @param string $usersid User's Object SID
-    * @return string
-    */
-    protected function get_primary_group($gid, $usersid){
-        if ($gid===NULL || $usersid===NULL){ return (false); }
-        $r=false;
-
-        $gsid = substr_replace($usersid,pack('V',$gid),strlen($usersid)-4,4);
-        $filter='(objectsid='.$this->getTextSID($gsid).')';
-        $fields=array("samaccountname","distinguishedname");
-        $sr=ldap_search($this->_conn,$this->_base_dn,$filter,$fields);
-        $entries = ldap_get_entries($this->_conn, $sr);
-
-        return $entries[0]['distinguishedname'][0];
-     }
-     
-    /**
-    * Convert a binary SID to a text SID
-    * 
-    * @param string $binsid A Binary SID
-    * @return string
-    */
-     protected function getTextSID($binsid) {
-        $hex_sid = bin2hex($binsid);
-        $rev = hexdec(substr($hex_sid, 0, 2));
-        $subcount = hexdec(substr($hex_sid, 2, 2));
-        $auth = hexdec(substr($hex_sid, 4, 12));
-        $result = "$rev-$auth";
-
-        for ($x=0;$x < $subcount; $x++) {
-            $subauth[$x] =
-                hexdec($this->little_endian(substr($hex_sid, 16 + ($x * 8), 8)));
-                $result .= "-" . $subauth[$x];
-        }
-
-        // Cheat by tacking on the S-
-        return 'S-' . $result;
-     }
-     
-    /**
-    * Converts a little-endian hex number to one that hexdec() can convert
-    * 
-    * @param string $hex A hex code
-    * @return string
-    */
-     protected function little_endian($hex) {
-        $result = '';
-        for ($x = strlen($hex) - 2; $x >= 0; $x = $x - 2) {
-            $result .= substr($hex, $x, 2);
-        }
-        return $result;
-     }
-     
-    /**
-    * Converts a binary attribute to a string
-    * 
-    * @param string $bin A binary LDAP attribute
-    * @return string
-    */
-    protected function binary2text($bin) {
-        $hex_guid = bin2hex($bin); 
-        $hex_guid_to_guid_str = ''; 
-        for($k = 1; $k <= 4; ++$k) { 
-            $hex_guid_to_guid_str .= substr($hex_guid, 8 - 2 * $k, 2); 
-        } 
-        $hex_guid_to_guid_str .= '-'; 
-        for($k = 1; $k <= 2; ++$k) { 
-            $hex_guid_to_guid_str .= substr($hex_guid, 12 - 2 * $k, 2); 
-        } 
-        $hex_guid_to_guid_str .= '-'; 
-        for($k = 1; $k <= 2; ++$k) { 
-            $hex_guid_to_guid_str .= substr($hex_guid, 16 - 2 * $k, 2); 
-        } 
-        $hex_guid_to_guid_str .= '-' . substr($hex_guid, 16, 4); 
-        $hex_guid_to_guid_str .= '-' . substr($hex_guid, 20); 
-        return strtoupper($hex_guid_to_guid_str);   
-    }
-    
-    /**
-    * Converts a binary GUID to a string GUID
-    * 
-    * @param string $binaryGuid The binary GUID attribute to convert
-    * @return string
-    */
-    public function decodeGuid($binaryGuid) {
-        if ($binaryGuid === null){ return ("Missing compulsory field [binaryGuid]"); }
-        
-        $strGUID = $this->binary2text($binaryGuid);          
-        return ($strGUID); 
-    }
-     
-    /**
-    * Converts a string GUID to a hexdecimal value so it can be queried
-    * 
-    * @param string $strGUID A string representation of a GUID
-    * @return string
-    */
-    protected function strguid2hex($strGUID) {
-        $strGUID = str_replace('-', '', $strGUID);
-
-        $octet_str = '\\' . substr($strGUID, 6, 2);
-        $octet_str .= '\\' . substr($strGUID, 4, 2);
-        $octet_str .= '\\' . substr($strGUID, 2, 2);
-        $octet_str .= '\\' . substr($strGUID, 0, 2);
-        $octet_str .= '\\' . substr($strGUID, 10, 2);
-        $octet_str .= '\\' . substr($strGUID, 8, 2);
-        $octet_str .= '\\' . substr($strGUID, 14, 2);
-        $octet_str .= '\\' . substr($strGUID, 12, 2);
-        //$octet_str .= '\\' . substr($strGUID, 16, strlen($strGUID));
-        for ($i=16; $i<=(strlen($strGUID)-2); $i++) {
-            if (($i % 2) == 0) {
-                $octet_str .= '\\' . substr($strGUID, $i, 2);
-            }
-        }
-        
-        return $octet_str;
-    }
-    
-    /**
-    * Obtain the user's distinguished name based on their userid 
-    * 
-    * 
-    * @param string $username The username
-    * @param bool $isGUID Is the username passed a GUID or a samAccountName
-    * @return string
-    */
-    protected function user_dn($username,$isGUID=false){
-        $user=$this->user_info($username,array("cn"),$isGUID);
-        if ($user[0]["dn"]===NULL){ return (false); }
-        $user_dn=$user[0]["dn"];
-        return ($user_dn);
-    }
-
-    /**
-    * Encode a password for transmission over LDAP
-    *
-    * @param string $password The password to encode
-    * @return string
-    */
-    protected function encode_password($password){
-        $password="\"".$password."\"";
-        $encoded="";
-        for ($i=0; $i 
-    * @return string
-    */
-    protected function ldap_slashes($str){
-        return preg_replace('/([\x00-\x1F\*\(\)\\\\])/e',
-                            '"\\\\\".join("",unpack("H2","$1"))',
-                            $str);
-    }
-    
-    /**
-    * Select a random domain controller from your domain controller array
-    * 
-    * @return string
-    */
-    protected function random_controller(){
-        mt_srand(doubleval(microtime()) * 100000000); // For older PHP versions
-        return ($this->_domain_controllers[array_rand($this->_domain_controllers)]);
-    }
-    
-    /**
-    * Account control options
-    *
-    * @param array $options The options to convert to int 
-    * @return int
-    */
-    protected function account_control($options){
-        $val=0;
-
-        if (is_array($options)){
-            if (in_array("SCRIPT",$options)){ $val=$val+1; }
-            if (in_array("ACCOUNTDISABLE",$options)){ $val=$val+2; }
-            if (in_array("HOMEDIR_REQUIRED",$options)){ $val=$val+8; }
-            if (in_array("LOCKOUT",$options)){ $val=$val+16; }
-            if (in_array("PASSWD_NOTREQD",$options)){ $val=$val+32; }
-            //PASSWD_CANT_CHANGE Note You cannot assign this permission by directly modifying the UserAccountControl attribute.
-            //For information about how to set the permission programmatically, see the "Property flag descriptions" section.
-            if (in_array("ENCRYPTED_TEXT_PWD_ALLOWED",$options)){ $val=$val+128; }
-            if (in_array("TEMP_DUPLICATE_ACCOUNT",$options)){ $val=$val+256; }
-            if (in_array("NORMAL_ACCOUNT",$options)){ $val=$val+512; }
-            if (in_array("INTERDOMAIN_TRUST_ACCOUNT",$options)){ $val=$val+2048; }
-            if (in_array("WORKSTATION_TRUST_ACCOUNT",$options)){ $val=$val+4096; }
-            if (in_array("SERVER_TRUST_ACCOUNT",$options)){ $val=$val+8192; }
-            if (in_array("DONT_EXPIRE_PASSWORD",$options)){ $val=$val+65536; }
-            if (in_array("MNS_LOGON_ACCOUNT",$options)){ $val=$val+131072; }
-            if (in_array("SMARTCARD_REQUIRED",$options)){ $val=$val+262144; }
-            if (in_array("TRUSTED_FOR_DELEGATION",$options)){ $val=$val+524288; }
-            if (in_array("NOT_DELEGATED",$options)){ $val=$val+1048576; }
-            if (in_array("USE_DES_KEY_ONLY",$options)){ $val=$val+2097152; }
-            if (in_array("DONT_REQ_PREAUTH",$options)){ $val=$val+4194304; } 
-            if (in_array("PASSWORD_EXPIRED",$options)){ $val=$val+8388608; }
-            if (in_array("TRUSTED_TO_AUTH_FOR_DELEGATION",$options)){ $val=$val+16777216; }
-        }
-        return ($val);
-    }
-    
-    /**
-    * Take an LDAP query and return the nice names, without all the LDAP prefixes (eg. CN, DN)
-    *
-    * @param array $groups
-    * @return array
-    */
-    protected function nice_names($groups){
-
-        $group_array=array();
-        for ($i=0; $i<$groups["count"]; $i++){ // For each group
-            $line=$groups[$i];
-            
-            if (strlen($line)>0){ 
-                // More presumptions, they're all prefixed with CN=
-                // so we ditch the first three characters and the group
-                // name goes up to the first comma
-                $bits=explode(",",$line);
-                $group_array[]=substr($bits[0],3,(strlen($bits[0])-3));
-            }
-        }
-        return ($group_array);    
-    }
-    
-    /**
-    * Delete a distinguished name from Active Directory
-    * You should never need to call this yourself, just use the wrapper functions user_delete and contact_delete
-    *
-    * @param string $dn The distinguished name to delete
-    * @return bool
-    */
-    protected function dn_delete($dn){ 
-        $result=ldap_delete($this->_conn, $dn);
-        if ($result!=true){ return (false); }
-        return (true);
-    }
-    
-    /**
-    * Convert a boolean value to a string
-    * You should never need to call this yourself
-    *
-    * @param bool $bool Boolean value
-    * @return string
-    */
-    protected function bool2str($bool) {
-        return ($bool) ? 'TRUE' : 'FALSE';
-    }
-    
-    /**
-    * Convert 8bit characters e.g. accented characters to UTF8 encoded characters
-    */
-    protected function encode8bit(&$item, $key) {
-        $encode = false;
-        if (is_string($item)) {
-            for ($i=0; $i> 7) {
-                    $encode = true;
-                }
-            }
-        }
-        if ($encode === true && $key != 'password') {
-            $item = utf8_encode($item);   
-        }
-    }    
-}
-
-/**
-* adLDAP Exception Handler
-* 
-* Exceptions of this type are thrown on bind failure or when SSL is required but not configured
-* Example:
-* try {
-*   $adldap = new adLDAP();
-* }
-* catch (adLDAPException $e) {
-*   echo $e;
-*   exit();
-* }
-*/
-class adLDAPException extends Exception {}
-
-?>
\ No newline at end of file
diff --git a/sources/extra_files/wp-content/plugins/simple-ldap-login/readme.txt b/sources/extra_files/wp-content/plugins/simple-ldap-login/readme.txt
deleted file mode 100644
index 745dba6..0000000
--- a/sources/extra_files/wp-content/plugins/simple-ldap-login/readme.txt
+++ /dev/null
@@ -1,218 +0,0 @@
-=== Plugin Name ===
-Contributors: clifgriffin
-Donate link: http://cgd.io
-Tags: LDAP, authentication, login, active directory, adLDAP
-Requires at least: 3.4
-Tested up to: 4.5.0
-Stable tag: 1.6.0
-License: GPLv2 or later
-
-Integrating WordPress with LDAP shouldn't be difficult. Now it isn't. Simple LDAP Login provides all of the features, none of the hassles.
-
-== Description ==
-Having a single login for every service is a must in large organizations. This plugin allows you to integrate WordPress with LDAP quickly and easily. Like, really really easy.
-
-**Contributing**
-This is a community project now. Most development is done by users like you who find bugs and fix them, or find new ways to make the plugin more powerful for everyone.
-
-The easiest way to contribute to this plugin is to submit a GitHub pull request. Here's the repo:
-https://github.com/clifgriffin/simple-ldap-login
-
-**Support**
-
-If you need support, file an issue here:
-https://github.com/clifgriffin/simple-ldap-login/issues
-
-**Special Requests**
-
-If you need a customization or change specific to your install, I am available for hire. Shoot me an e-mail: clifgriffin[at]gmail.com
-
-= Features =
-
-* Supports Active Directory and OpenLDAP (and other directory systems which comply to the LDAP standard, such as OpenDS)
-* Supports TLS
-* Uses up-to-date methods for WordPress authentication routines.
-* Authenticates existing WordPress usernames against LDAP.
-* Can be configured to automatically create WordPress users for valid LDAP logins.
-* You can restrict logins based on one or more LDAP groups.
-* Intuitive control panel.
-
-= Architecture =
-Simple LDAP Login adds an authentication filter to WordPress that authentication requests must pass. In doing so, it makes several decisions.
-
-* Can the provided credentials be authenticated against LDAP?
-* * If so, is the LDAP user a member of the required LDAP groups (if any)?
-* * * Does a matching WordPress user exist?
-* * * * If so, log the user in.
-* * * * If not, is user creation enabled?
-* * * * * Create the user and log them in.
-
-This is high level overview. This should answer the philosophical questions about how the plugin works. If the plugin is unable to authenticate the user, it should pass it down the chain to WordPress. (Unless LDAP Exclusive is turned on, in which case it won't.)
-
-
-== Changelog ==
-**Version 1.6.0**
-
-* New filter sll_remove_default_authentication_hook lets you override local password fallback.
-* Lots of new features from various pull requests from contributing users. Most of these focus on new settings for edge cases, and some general improvements.
-* If we did our jobs right, nothing will break. But if it does, rolling back to 1.5.5 is the best place to start.
-
-**Version 1.5.5**
-
-* Fix syntax error.
-* Don’t sanitize user info.
-
-**Version 1.5.4**
-
-* Local admins will always fall back to local WP password.
-* Fixes bug where new users do not have name or other information from LDAP directory
-
-**Version 1.5.3**
-
-* Fixing apparent security problem with blank passwords. (!)
-* Fixing typo in filter name (did not affect any functionality)
-* Local admin exception coming soon, as well as more bug fixes.
-* Possible fix for login error upon arriving at login page when LDAP exclusive enabled.
-
-**Version 1.5.2**
-
-* Fixed bug with groups setting.
-* Removed delete_option references in upgrade code to allow for easier rollbacks (sorry about that!)
-* Fixed a few bugs in the user creation code.
-* Fixed bug with storing default user role.
-
-**Version 1.5.1**
-
-* Fixed a bug where the domain controllers are passed as a string.
-
-**Version 1.5**
-
-* Complete rewritten from the ground up.
-* It's Object Oriented, DRY and Singleton.
-* The options have been overhauled to make configuration much easier. Focuses on individual features rather than "modes" that encapsulate several behaviors.
-* Admin pages now use WordPress admin styles and behaviors.
-* Tested with Active Directory. I recommend OpenLDAP users test carefully before implementing in their production environments.
-* Added global on off switch so you can easily disable LDAP authentication without deactivating.
-
-**Version 1.4.0.5.1**
-
-* I broke it. Sorry guys! :(
-* Downgraded adLDAP as some referenced functions no longer exist.
-
-**Version 1.4.0.5**
-
-* Updated adLDAP to version 4.x
-* Fixed error in OpenLDAP group membership check
-* As always TEST this first. Don't assume it works...I don't have a testing environment to ensure it will work correctly.
-
-**Version 1.4.0.4**
-
-* Fixes nickname bug accidentally put back in in last version. (My bad!)
-
-**Version 1.4.0.3**
-* Reverts bug introduced in 1.4.0.2
-* If you installed 1.4.0.2 and use OpenLDAP, please update as soon as possible and verify users cannot login with incorrect passwords (and vice versa).
-
-**Version 1.4.0.2 - Patches submitted by Jonas Genannt and Ilya Kozlov**
-* Updates adLDAP to 3.3.2
-* Fixes issue with users in recursive OUs not being found.
-* Fixes issues with different Base DN formats.
-* NOTE: Please be catious in updating. As I don't have an OpenLDAP install, I am unable to independently confirm these fix the problems. If you have issues, revert to 1.4.0.1 and e-mail me: clifgriffin[at]gmail.com.  Likewise, If you can confirm these changes are effective, also let me know. :)
-
-**Version 1.4.0.1**
-
-* Fix for e-mail exists issue with WP 3.0+ for LDAP installations that don't populate the e-mail address attribute.
-* Shows actual error message from WordPress upon failure.
-
-**Version 1.4**
-
-* First update in about a year. Thanks for your patience.
-* Completely rewritten to support changes in WordPress 2.8+.  Now fully supports WordPress 3.0.
-* Much more manageable and efficient code structure. Less code repetition.
-* Includes TLS support.
-* Allows OpenLDAP users to specify an alternate LDAP attribute to use for logins for those not using UID.
-
-**Version 1.3.0.3**
-
-* Test form now implements wp_authenticate and uses the same routines as the actual login. This also means account creation and group membership are tested.
-* Implemented stripslashes() to correct issue with some special characters such as a single quote and backslash.
-* WordPress account "admin" is now allowed to login using local password even when security mode is set to high. For safety.
-* Made some minor wording changes to the admin panel.
-
-**Version 1.3.0.2.1**
-
-* Fixed case sensitivity issue that could result in multiple accounts. There may be lingering case insensitivity issues due to the get_userdatabylogin function being case-sensitive. We'll figure this out in due time.
-* Sorry for posting two updates on the same day!
-
-**Version 1.3.0.2**
-
-* Fixes several tickets including role assignment, case sensitivity, and potential compatibility issues with other themes/plugins.
-* Added security mode setting to allow security to be tightened.
-* Changed auto created accounts to use a random password rather than the LDAP password given.
-* Fixed error with the way announcements are displayed in the admin panel.
-* More code clean up.
-
-**Version 1.3.0.1**
-
-* Never officially released.
-* Contained code cleanup and some attempted fixes.
-
-**Version 1.3 Beta**
-
-* Support for both Active Directory and OpenLDAP.
-* The ability to create WordPress users automatically upon login based on LDAP group membership OR by LDAP authentication alone.
-* The ability to test domain settings straight from admin panel.
-* Announcements pane that allows me to update you with fixes, cautions, new beta versions, or other important information.
-
-**Version 1.2.0.1**
-
-* Changed required user level for admin page to 10, Administrators only.
-
-**Version 1.2**
-
-* Implemented multiple domain controllers.
-* Changed field sizes on admin page to be more user friendly.
-
-**Version 1.1**
-
-* Moved settings to administration pages under settings.
-* Upgraded to latest version of adLDAP 2.1.
-* Got rid of credentials. (They are not neccessary for the authenticate function in adLDAP!)
-* Plugin is now upgrade proof. Settings are stored using WordPress's setting functions.
-
-**Version 1.0**
-
-* Original release.
-
-== Installation ==
-
-1. Use the WordPress plugin directory to install the plugin or upload the directory `simple-ldap-login` to the `/wp-content/plugins/` directory.
-1. Activate the plugin through the 'Plugins' menu in WordPress
-1. Update the settings to those that best match your environment by going to Settings -> Simple LDAP Login
-1. If you don't get the settings right the first time, don't fret! Just use your WordPress credentials. They should always work
-1. Once you have the settings correct, you can toggle LDAP Exclusive mode (if you like).
-1. To make your life easier, consider using two different browsers (e.g., Chrome and Firefox) to do testing.  Change settings in one. Test in the other. This will prevent any chance of being locked out.
-
-== Frequently Asked Questions ==
-
-= Other than WordPress, what does my system require? =
-
-Your install of PHP must be configured/compiled with LDAP support.
-
-= How do I know what the correct settings are? =
-
-I have tried to make the settings as self-explanatory as possible. If you are struggling figuring them out, you may need to speak with your LDAP administrator. I realize this is an obnoxious response, but there is no good, fool proof way to help you discover these settings. A good place to start, if you're feeling daring, might be to use ADSIEdit for Windows and Active Directory, or GQ for Linux and OpenLDAP.
-
-= It's still not working, what other things can I try? =
-
-If you are confident your settings are correct and it still does not work, it may be time to check for port or firewall issues. If your LDAP server is running on a non-standard port or an obsolete version of the LDAP protocol you are going to have issues. Port 389 is the port this plugin, and nearly every other LDAP enabled software expects. They are also expecting protocol version 3. If you are using an old version of LDAP or running a non-standard port you may need to modify the code that the plugin runs or update your LDAP installation.
-
-Unfortunately I can't be relied upon to assist with these types of requests. I chose not to support these scenarios because they are infrequent and because they confuse everyone else.
-
-= It's still not working! How can I get help? =
-The easiest way to get help is to post a comment on my blog: http://clifgriffin.com/simple-ldap-login/. I'll do my best to get you up and running!
-
-== Screenshots ==
-
-1. Easy to use admin panel.
-2. Advanced options for power users.