{
use esmith::util;
my $ldapBase = esmith::util::ldapBase ($DomainName);
my $db = $owncloud{'DbName'} || 'owncloud';
my $user = $owncloud{'DbUser'} || 'owncloud';
my $pass = $owncloud{'DbPassword'} || 'owncloud';


$OUT .= <<"END";
#! /bin/sh
if [ ! -d /var/lib/mysql/$db ]; then
    # Create the database
    /usr/bin/mysql -e 'create database $db'
fi

# Update the owncloud mysql user and password
/usr/bin/mysql <<EOF
USE mysql;

REPLACE INTO user (
                     host,
                     user,
                     password)
            VALUES (
                     'localhost',
                     '$user',
                     PASSWORD ('$pass'));


REPLACE INTO db (
                   host,
                   db,
                   user,
                   select_priv, insert_priv, update_priv, delete_priv,
                   create_priv, alter_priv, index_priv, drop_priv, create_tmp_table_priv,
                   grant_priv, lock_tables_priv, references_priv)
          VALUES (
                   'localhost',
                   '$db',
                   '$user',
                   'Y', 'Y', 'Y', 'Y',
                   'Y', 'Y', 'Y', 'Y', 'Y',
                   'N', 'Y', 'Y');

FLUSH PRIVILEGES;

EOF

# Call owncloud URL, it will trigger the install the first time
wget -O /dev/null --no-check-certificate https://$SystemName.$DomainName/owncloud > /dev/null 2>&1

# Now Configure owncloud to use LDAP
/usr/bin/mysql <<EOF

USE $db;

ALTER IGNORE TABLE appconfig ADD UNIQUE KEY (appid,configKey);

INSERT INTO appconfig (appid,configKey,configValue) VALUES ('user_ldap','ldap_base','$ldapBase') ON DUPLICATE KEY UPDATE configValue='$ldapBase';
INSERT INTO appconfig (appid,configKey,configValue) VALUES ('user_ldap','ldap_base_users','ou=Users,$ldapBase') ON DUPLICATE KEY UPDATE configValue='ou=Users,$ldapBase';
INSERT INTO appconfig (appid,configKey,configValue) VALUES ('user_ldap','ldap_base_groups','ou=Groups,$ldapBase') ON DUPLICATE KEY UPDATE configValue='ou=Groups,$ldapBase';

INSERT INTO appconfig (appid,configKey,configValue) VALUES ('user_ldap','enabled','yes') ON DUPLICATE KEY UPDATE configValue=configValue;
INSERT INTO appconfig (appid,configKey,configValue) VALUES ('user_ldap','ldap_cache_ttl','1') ON DUPLICATE KEY UPDATE configValue=configValue;
INSERT INTO appconfig (appid,configKey,configValue) VALUES ('user_ldap','ldap_email_attr','mail') ON DUPLICATE KEY UPDATE configValue=configValue;
INSERT INTO appconfig (appid,configKey,configValue) VALUES ('user_ldap','ldap_group_display_name','cn') ON DUPLICATE KEY UPDATE configValue=configValue;
INSERT INTO appconfig (appid,configKey,configValue) VALUES ('user_ldap','ldap_user_display_name','cn') ON DUPLICATE KEY UPDATE configValue=configValue;
INSERT INTO appconfig (appid,configKey,configValue) VALUES ('user_ldap','ldap_group_filter','objectClass=mailboxRelatedObject') ON DUPLICATE KEY UPDATE configValue=configValue;
INSERT INTO appconfig (appid,configKey,configValue) VALUES ('user_ldap','ldap_group_member_assoc_attribute','memberUid') ON DUPLICATE KEY UPDATE configValue=configValue;
INSERT INTO appconfig (appid,configKey,configValue) VALUES ('user_ldap','ldap_host','127.0.0.1') ON DUPLICATE KEY UPDATE configValue=configValue;
INSERT INTO appconfig (appid,configKey,configValue) VALUES ('user_ldap','ldap_tls','0') ON DUPLICATE KEY UPDATE configValue=configValue;
INSERT INTO appconfig (appid,configKey,configValue) VALUES ('user_ldap','ldap_login_filter','uid=%uid') ON DUPLICATE KEY UPDATE configValue=configValue;
INSERT INTO appconfig (appid,configKey,configValue) VALUES ('user_ldap','user_ldaplist_filter','objectClass=sambaSamAccount') ON DUPLICATE KEY UPDATE configValue=configValue;
INSERT INTO appconfig (appid,configKey,configValue) VALUES ('user_ldap','ldap_uuid_attribute','entryuuid') ON DUPLICATE KEY UPDATE configValue=configValue;
INSERT INTO appconfig (appid,configKey,configValue) VALUES ('user_ldap','types','authentication') ON DUPLICATE KEY UPDATE configValue=configValue;
INSERT INTO appconfig (appid,configKey,configValue) VALUES ('user_ldap','ldap_configuration_active','1') ON DUPLICATE KEY UPDATE configValue=configValue;

ALTER TABLE appconfig DROP INDEX appid;

UPDATE IGNORE group_user SET uid='admin' where uid='owncloud';

DELETE FROM users where uid='owncloud';

EOF
END
}

