Initial commit.

This commit is contained in:
Konstantin Shalygin 2016-06-14 15:17:51 +06:00
parent 3cbec5a2cd
commit f4a731b35b
No known key found for this signature in database
GPG key ID: DAB31F3D3E5BCB69
7 changed files with 243 additions and 2 deletions

View file

@ -1,2 +1,4 @@
# thunderbird-mcd thunderbird-mcd
Mission Control Desktop aka Autoconfig for Thunderbird =====================
Provides automated configuration for Thunderbird via PHP + OpenLDAP.

39
ldap.cfg.php Normal file
View file

@ -0,0 +1,39 @@
<?php
//LDAP
// Connection
$ldap_host = 'ldap.company.local';
$ldap_port = '389';
$ldap_user = 'cn=reader,ou=people,dc=company,dc=local';
$ldap_password = 'reader';
// The root of catalog
$ldap_root = 'dc=company,dc=local';
// Base for search uid
$ldap_base = "ou=people,$ldap_root";
// Base for search memberUid
$ldap_base_manager = "cn=TopManagers,ou=groups,$ldap_root";
// VARS
$ldap_uid = $_GET['user'];
$ldap_filter = "(uid=$ldap_uid)";
$ldap_filter_manager = "(memberUid=$ldap_uid)";
$ldap_target_gid = '1100';
// Organisation
$telnumber_all = '8-800-2000-600';
$telnumber_manager = '8-800-2000-666';
$icq_default = 'ICQ (Public): 911911, 119199';
// Thunderbird
$mail_domain = 'mx.company.local';
$mail_server_type = 'imap';
$mail_server_port = '143';
$mail_smtp_desc = 'SMTP server of our company';
$mail_smtp_port = '25';
$mail_identity_org = 'Damage, Inc.';
$ldap_nonascii_desc = 'Domain';
$ldap_nonascii_uri = "ldap://$ldap_host/$ldap_base??sub?(objectClass=posixAccount)";
$quicktext_default_import = '/home/exchange/quicktext.xml';
$messenger_save_dir = '/tmp';
// Signature
$siga_marketing = "Marketing bullshit<br>";
$siga_prefix = "Best regards, ";
$siga_url = "<br>URL";
$siga_postfix = "Some spam";
?>

8
ldap.defaults.php Normal file
View file

@ -0,0 +1,8 @@
<?php
// DEFAULT LDAP VALUES
$ldap_gid = '';
$ldap_givenname = '';
$ldap_sn = '';
$ldap_title = '';
$ldap_mail = '';
?>

88
ldap.settings.php Normal file
View file

@ -0,0 +1,88 @@
<?php
print <<<END
try {
pref("mail.accountmanager.accounts", "account1");
lockPref("mail.server.server1.type", "$mail_server_type");
lockPref("mail.server.server1.hostname", "$mail_domain");
lockPref("mail.server.server1.realhostname", "$mail_domain");
lockPref("mail.server.server1.port", $mail_server_port);
lockPref("mail.server.server1.socketType", 2);
lockPref("mail.server.server1.name", "$ldap_mail");
lockPref("mail.server.server1.userName", "$ldap_mail");
lockPref("mail.server.server1.realuserName", "$ldap_mail");
lockPref("mail.server.server1.login_at_startup", true);
lockPref("mail.server.server1.isSecure", true);
lockPref("mail.server.server1.downloadByDate", false);
lockPref("mail.server.server1.downloadUnreadOnly", false);
lockPref("mail.server.server1.keepUnreadOnly", false);
lockPref("mail.server.server1.offline_download", false);
lockPref("mail.server.server1.check_new_mail", true);
lockPref("mail.server.server1.empty_trash_on_exit", false);
lockPref("mail.server.server1.moveOnSpam", true);
lockPref("mail.server.server1.purgeSpam", true);
lockPref("mail.server.server1.spamActionTargetAccount", "imap://$ldap_mail_replaced@$mail_domain");
lockPref("mail.server.server1.whiteListAbURI", "moz-abmdbdirectory://abook.mab moz-abmdbdirectory://history.mab");
lockPref("mail.server.server1.check_time", 3);
lockPref("mail.account.account1.server", "server1");
lockPref("mail.smtpserver.smtp1.hostname", "$mail_domain");
lockPref("mail.smtpserver.smtp1.port", $mail_smtp_port);
lockPref("mail.smtpserver.smtp1.description", "$mail_smtp_desc");
lockPref("mail.smtpserver.smtp1.try_ssl", 2);
lockPref("mail.smtpserver.smtp1.auth_method", 3);
lockPref("mail.smtpserver.smtp1.username", "$ldap_mail");
pref("mail.smtpservers", "smtp1");
pref("mail.account.account1.identities", "id1");
lockPref("mail.accountmanager.localfoldersserver", "server1");
lockPref("mail.accountmanager.defaultaccount", "account1");
lockPref("mail.identity.id1.fullName", "$ldap_givenname_exploded $ldap_sn");
lockPref("mail.identity.id1.useremail", "$ldap_mail");
lockPref("mail.identity.id1.valid", true);
lockPref("mail.identity.id1.smtpServer", "smtp1");
lockPref("mail.identity.id1.organization", "$mail_identity_org");
lockPref("mail.identity.id1.archive_folder", "imap://$ldap_mail_replaced@$mail_domain/Archives");
lockPref("mail.identity.id1.draft_folder", "imap://$ldap_mail_replaced@$mail_domain/Drafts");
lockPref("mail.identity.id1.drafts_folder_picker_mode", 0);
lockPref("mail.identity.id1.fcc_folder", "imap://$ldap_mail_replaced@$mail_domain/Sent");
lockPref("mail.identity.id1.fcc_folder_picker_mode", 0);
lockPref("mail.identity.id1.stationery_folder", "imap://$ldap_mail_replaced@$mail_domain/Templates");
lockPref("mail.identity.id1.reply_on_top", 1);
lockPref("ldap_2.servers._nonascii.auth.dn", "");
lockPref("ldap_2.servers._nonascii.auth.saslmech", "");
lockPref("ldap_2.servers._nonascii.description", "$ldap_nonascii_desc");
lockPref("ldap_2.servers._nonascii.filename", "ldap.mab");
lockPref("ldap_2.servers._nonascii.maxHits", 50);
lockPref("ldap_2.servers._nonascii.uri", "$ldap_nonascii_uri");
lockPref("ldap_2.autoComplete.directoryServer", "ldap_2.servers._nonascii");
lockPref("ldap_2.autoComplete.useDirectory", true);
lockPref("toolkit.telemetry.enabled", true);
lockPref("toolkit.telemetry.prompted", 2);
lockPref("mail.identity.id1.reply_to", "");
lockPref("mail.spam.manualMark", true);
lockPref("mail.spam.version", 1);
lockPref("mail.rights.version", 1);
lockPref("mail.server.default.check_all_folders_for_new", true);
pref("extensions.usebccinstead.lastCheckedState", true);
pref("extensions.usebccinstead.nonBccCount", 1);
pref("extensions.sieve.account.$ldap_mail_replaced@$mail_domain.TLS", true);
pref("extensions.sieve.account.$ldap_mail_replaced@$mail_domain.TLS.forced", true);
pref("extensions.sieve.account.$ldap_mail_replaced@$mail_domain.activeAuthorization", 1);
pref("extensions.sieve.account.$ldap_mail_replaced@$mail_domain.activeHost", 0);
pref("extensions.sieve.account.$ldap_mail_replaced@$mail_domain.activeLogin", 1);
pref("extensions.sieve.account.$ldap_mail_replaced@$mail_domain.enabled", true);
pref("extensions.sieve.account.$ldap_mail_replaced@$mail_domain.firstRunDone", true);
pref("extensions.sieve.account.$ldap_mail_replaced@$mail_domain.port.type", 0);
pref("extensions.sieve.account.$ldap_mail_replaced@$mail_domain.proxy.type", 1);
pref("extensions.sieve.account.$ldap_mail_replaced@$mail_domain.sasl.forced", false);
defaultPref("extensions.shrunked.default.maxHeight", 1024);
defaultPref("extensions.shrunked.default.maxWidth", 1280);
defaultPref("extensions.shrunked.default.quality", 85);
defaultPref("quicktext.defaultImport", "$quicktext_default_import");
defaultPref("quicktext.firstTime", false);
defaultPref("messenger.save.dir", "$messenger_save_dir");
lockPref("mail.identity.id1.htmlSigFormat", true);
lockPref("mail.identity.id1.htmlSigText", "$signature");
} catch(e) {
displayError("lockedPref", e);
}
END;
?>

10
ldap.siga.php Normal file
View file

@ -0,0 +1,10 @@
<?php
function getSignatureAll($siga_prefix, $ldap_givenname_exploded, $ldap_sn, $ldap_title, $siga_url, $main_telnumber, $ldap_extention, $siga_postfix) {
return $siga_prefix . $ldap_givenname_exploded . " " . $ldap_sn . ",<br>" . $ldap_title . $siga_url . $main_telnumber . $ldap_extention . $siga_postfix;
}
function getSignatureManager($siga_marketing, $siga_prefix, $ldap_givenname_exploded, $ldap_sn, $ldap_title, $siga_url, $main_telnumber, $ldap_extention, $ldap_pager, $ldap_icq, $siga_postfix) {
return $siga_marketing . $siga_prefix . $ldap_givenname_exploded . " " . $ldap_sn . ",<br>" . $ldap_title . $siga_url . $main_telnumber . " " . $ldap_extention . $ldap_pager . $ldap_icq . $siga_postfix;
}
?>

10
ldap.vars.php Normal file
View file

@ -0,0 +1,10 @@
<?php
$ldap_gid = ($info[0]["gidnumber"][0]);
$ldap_givenname = ($info[0]["givenname"][0]);
$ldap_sn = ($info[0]["sn"][0]);
$ldap_title = ($info[0]["title"][0]);
$ldap_mail = ($info[0]["mail"][0]);
$ldap_givenname_exploded = explode(" ",$ldap_givenname);
$ldap_givenname_exploded = $ldap_givenname_exploded[0];
$ldap_mail_replaced = preg_replace('+@+','%40', $ldap_mail);
?>

84
thunderbird.php Normal file
View file

@ -0,0 +1,84 @@
<?php
// (c) 2015-2016, Konstantin Shalygin <k0ste@k0ste.ru>
require_once 'ldap.cfg.php';
require_once 'ldap.defaults.php';
require_once 'ldap.siga.php';
if(empty($_GET['user'])) {
exit('Error: user not present');
}
$link = ldap_connect($ldap_host, $ldap_port);
ldap_set_option($link, LDAP_OPT_PROTOCOL_VERSION, 3);
$ldap_bind = ldap_bind($link, $ldap_user, $ldap_password);
if(!$ldap_bind) {
$ldap_errno = ldap_errno($link);
$ldap_error = ldap_err2str($ldap_errno);
exit('Error (' . ldap_errno($link) . '): ' . $ldap_error . "\n");
}
$result_uid = ldap_search($link, $ldap_base, $ldap_filter);
$entry_uid = ldap_first_entry($link, $result_uid);
if($entry_uid == false) {
ldap_unbind($link);
exit('Error: uid not found <br>');
}
$info = ldap_get_entries($link, $result_uid);
if (isset($info[0]["telephonenumber"]) == false) {
$ldap_extention = '';
}
else {
$ldap_extention = ($info[0]["telephonenumber"][0]);
$ldap_extention = " exten. 1-$ldap_extention<br>";
}
if (isset($info[0]["telexnumber"]) == false) {
$ldap_icq = $icq_default;
}
else {
$ldap_icq = ($info[0]["telexnumber"][0]);
$ldap_icq = "ICQ: $ldap_icq";
}
if (isset($info[0]["pager"]) == false) {
$ldap_pager = '';
}
else {
$ldap_pager = ($info[0]["pager"][0]);
$ldap_pager = "+$ldap_pager<br>";
}
require_once 'ldap.vars.php';
$result_manager = ldap_search($link, $ldap_base_manager, $ldap_filter_manager);
$entry_manager = ldap_first_entry($link, $result_manager);
if($entry_manager == false) {
if($ldap_gid == $ldap_target_gid) {
$signature = getSignatureManager($siga_marketing, $siga_prefix, $ldap_givenname_exploded, $ldap_sn, $ldap_title, $siga_url, $telnumber_all, $ldap_extention, $ldap_pager, $ldap_icq, $siga_postfix);
}
else {
$signature = getSignatureAll($siga_prefix, $ldap_givenname_exploded, $ldap_sn, $ldap_title, $siga_url, $telnumber_all, $ldap_extention, $siga_postfix);
}
}
else {
$ldap_attributes = ldap_get_attributes($link, $entry_manager);
$counter = $ldap_attributes["count"];
if($counter < 1) {
$signature = getSignatureAll($siga_prefix, $ldap_givenname_exploded, $ldap_sn, $ldap_title, $siga_url, $telnumber_all, $ldap_extention, $siga_postfix);
}
else {
$signature = getSignatureManager($siga_marketing, $siga_prefix, $ldap_givenname_exploded, $ldap_sn, $ldap_title, $siga_url, $telnumber_manager, $ldap_extention, $ldap_pager, $ldap_icq, $siga_postfix);
}
}
ldap_unbind($link);
require_once 'ldap.settings.php';
?>