Thunderbird autoconfig

И всё прочее, что касается HTML
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Volkoff
мл. сержант
Сообщения: 100
Зарегистрирован: 2008-04-22 10:44:55
Откуда: СПб

Thunderbird autoconfig

Непрочитанное сообщение Volkoff » 2008-09-04 9:57:03

Добрый день, может быть не совсем по теме, но мало-ли: ковыряюсь с конфигом TB, пытаюсь читать из MS AD атрибуты CN и mail для автоматической подстановки в конфиг, вот кусок thunderbird.cfg:

Код: Выделить всё

function processLDAPValues (values) {
 if(values) {
      // set the global var with the values returned from the LDAP query
      ldap_values = values;
    var sAMAccountName = getLDAPValue ( values ,"sAMAccountName" );
    var sn = getLDAPValue ( values ,"cn" );
    var mail = getLDAPValue ( values ,"mail" );
     // lock ldap variable (mail & cn)  dependant preferences while we have access to them
    lockPref("mail.server.server1.name",mail);
    lockPref("mail.identity.id1.fullName",utf8(cn));
    lockPref("mail.identity.id1.useremail",mail);
    defaultPref("network.ftp.anonymous_password", mail);


    // if $MOZILLA_DEBUG=1 , popup a debug message
    if (env_mozdebug) {
        displayError("NO ERROR -> MCI (jehan.procaccia@int-evry.fr)" + "\nthis message is displayed with displayError() ! \ndebug 1 mozilla.cfg v3.2 , NO FAILED,  S2IA again !", "\nmail:" + mail + "\nuid:" +uid + "\ncn:" +cn + "\nuser:" + env_user);
        }
    }
  }
 
// 4) Call Ldap servers to get Ldap Attributes (mail & cn) , this will finally call processLDAPValues , "3)" just above.
// Go through the ldap replicas list
for(i = 0; i < ldap_servers.length; i ++) {
// Search for attribute mail & cn through ldap servers where uid = $USER|$USERNAME
  getLDAPAttributes(ldap_servers[i],
       "dc=pskk,dc=ru",
       "sAMAccountName=" + env_user,
       "sAMAccountName,cn,mail");
    // If we catch a running ldap server, exit the loop,
    if(ldap_values) {
      running_ldap_server = ldap_servers[i];
        // If $MOZILLA_DEBUG=1 display in a popup the running server
      if (env_mozdebug) {
        displayError("getLDAPAttributes: debug 2 running_ldap_server : " + running_ldap_server);
       }
//      break;
    }
  }
используются встроенные функции из prefcalls.js:

Код: Выделить всё

function getLDAPAttributes(host, base, filter, attribs) {
    
    try {
        var url = Components.classes[LDAPURLContractID].createInstance(nsILDAPURL);
    
        url.spec = "ldap://" + host + "/" + base + "?" + attribs 
                   + "?sub?" +  filter;
        var ldapquery = Components.classes[LDAPSyncQueryContractID]
                                  .createInstance(nsILDAPSyncQuery);
        // default to LDAP v3
        if (!gVersion)
          gVersion = Components.interfaces.nsILDAPConnection.VERSION3
 	// user supplied method
        processLDAPValues(ldapquery.getQueryResults(url, gVersion));
    }
    catch(e) {
        displayError("getLDAPAttibutes", e);
    }
}

function getLDAPValue(str, key) {

    try {
        if (str == null || key == null)
            return null;
        
        var search_key = "\n" + key + "=";
        
        var start_pos = str.indexOf(search_key);
        if (start_pos == -1)
            return null;
        
        start_pos += search_key.length;
        
        var end_pos = str.indexOf("\n", start_pos);
        if (end_pos == -1)
            end_pos = str.length;
        
        return str.substring(start_pos, end_pos);
    }
    catch(e) {
        displayError("getLDAPValue", e);
    }
}
На open LDAP подобная схема работает(вместо sAMAccountName используется uid), с AD(Вин2003) не хочет - как я предполагаю из-за отсутствия авторизации, вопрос, возможно ли для запроса определить имя и пароль?

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35461
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: Thunderbird autoconfig

Непрочитанное сообщение Alex Keda » 2008-10-29 21:53:01

по сабжу - х.з.
а мы для такого дела писали на каом-то мрачном виндовом псевдо-скриптовом языке бинарник...
ужос короче...
Убей их всех! Бог потом рассортирует...

Volkoff
мл. сержант
Сообщения: 100
Зарегистрирован: 2008-04-22 10:44:55
Откуда: СПб

Re: Thunderbird autoconfig

Непрочитанное сообщение Volkoff » 2008-10-31 15:28:15

Да уже сделали без использования этих фунции, есть как минимум 2 варианта:
1) прописать cn и mail в переменные окружения пользователя на виндовых машинах VBS или bat скриптом, и потом брать их в атоконфиг встроенной функцией getenv.
2) разместить файл автоконфига на веб сервере в виде скрипта например на perl, который будет опрашивать AD, так и сделали в конечном итоге - вариант удобнее тем что не требует перезагрузки виндовых машин и можно что-то поменять в конфиге на ходу, не перепаковывая и распостраняя заного msi.