mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-09-27 10:57:34 +09:00
Issue #1258 - Part 1: Import mailnews, ldap, and mork from comm-esr52.9.1
This commit is contained in:
parent
23e0d82436
commit
e400f4130a
1564 changed files with 510348 additions and 0 deletions
203
mailnews/base/util/mailnewsMigrator.js
Normal file
203
mailnews/base/util/mailnewsMigrator.js
Normal file
|
|
@ -0,0 +1,203 @@
|
|||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
/**
|
||||
* Migrate profile (prefs and other files) from older versions of Mailnews to
|
||||
* current.
|
||||
* This should be run at startup. It migrates as needed: each migration
|
||||
* function should be written to be a no-op when the value is already migrated
|
||||
* or was never used in the old version.
|
||||
*/
|
||||
|
||||
this.EXPORTED_SYMBOLS = [ "migrateMailnews" ];
|
||||
|
||||
Components.utils.import("resource:///modules/errUtils.js");
|
||||
Components.utils.import("resource://gre/modules/Services.jsm");
|
||||
Components.utils.import("resource:///modules/mailServices.js");
|
||||
var Ci = Components.interfaces;
|
||||
var kServerPrefVersion = 1;
|
||||
var kSmtpPrefVersion = 1;
|
||||
var kABRemoteContentPrefVersion = 1;
|
||||
var kDefaultCharsetsPrefVersion = 1;
|
||||
|
||||
function migrateMailnews()
|
||||
{
|
||||
try {
|
||||
MigrateServerAuthPref();
|
||||
} catch (e) { logException(e); }
|
||||
|
||||
try {
|
||||
MigrateABRemoteContentSettings();
|
||||
} catch (e) { logException(e); }
|
||||
|
||||
try {
|
||||
MigrateDefaultCharsets();
|
||||
} catch (e) { logException(e); }
|
||||
}
|
||||
|
||||
/**
|
||||
* Migrates from pref useSecAuth to pref authMethod
|
||||
*/
|
||||
function MigrateServerAuthPref()
|
||||
{
|
||||
try {
|
||||
// comma-separated list of all accounts.
|
||||
var accounts = Services.prefs.getCharPref("mail.accountmanager.accounts")
|
||||
.split(",");
|
||||
for (let i = 0; i < accounts.length; i++)
|
||||
{
|
||||
let accountKey = accounts[i]; // e.g. "account1"
|
||||
if (!accountKey)
|
||||
continue;
|
||||
let serverKey = Services.prefs.getCharPref("mail.account." + accountKey +
|
||||
".server");
|
||||
let server = "mail.server." + serverKey + ".";
|
||||
if (Services.prefs.prefHasUserValue(server + "authMethod"))
|
||||
continue;
|
||||
if (!Services.prefs.prefHasUserValue(server + "useSecAuth") &&
|
||||
!Services.prefs.prefHasUserValue(server + "auth_login"))
|
||||
continue;
|
||||
if (Services.prefs.prefHasUserValue(server + "migrated"))
|
||||
continue;
|
||||
// auth_login = false => old-style auth
|
||||
// else: useSecAuth = true => "secure auth"
|
||||
// else: cleartext pw
|
||||
let auth_login = true;
|
||||
let useSecAuth = false; // old default, default pref now removed
|
||||
try {
|
||||
auth_login = Services.prefs.getBoolPref(server + "auth_login");
|
||||
} catch (e) {}
|
||||
try {
|
||||
useSecAuth = Services.prefs.getBoolPref(server + "useSecAuth");
|
||||
} catch (e) {}
|
||||
|
||||
Services.prefs.setIntPref(server + "authMethod",
|
||||
auth_login ? (useSecAuth ?
|
||||
Ci.nsMsgAuthMethod.secure :
|
||||
Ci.nsMsgAuthMethod.passwordCleartext) :
|
||||
Ci.nsMsgAuthMethod.old);
|
||||
Services.prefs.setIntPref(server + "migrated", kServerPrefVersion);
|
||||
}
|
||||
|
||||
// same again for SMTP servers
|
||||
var smtpservers = Services.prefs.getCharPref("mail.smtpservers").split(",");
|
||||
for (let i = 0; i < smtpservers.length; i++)
|
||||
{
|
||||
if (!smtpservers[i])
|
||||
continue;
|
||||
let server = "mail.smtpserver." + smtpservers[i] + ".";
|
||||
if (Services.prefs.prefHasUserValue(server + "authMethod"))
|
||||
continue;
|
||||
if (!Services.prefs.prefHasUserValue(server + "useSecAuth") &&
|
||||
!Services.prefs.prefHasUserValue(server + "auth_method"))
|
||||
continue;
|
||||
if (Services.prefs.prefHasUserValue(server + "migrated"))
|
||||
continue;
|
||||
// auth_method = 0 => no auth
|
||||
// else: useSecAuth = true => "secure auth"
|
||||
// else: cleartext pw
|
||||
let auth_method = 1;
|
||||
let useSecAuth = false;
|
||||
try {
|
||||
auth_method = Services.prefs.getIntPref(server + "auth_method");
|
||||
} catch (e) {}
|
||||
try {
|
||||
useSecAuth = Services.prefs.getBoolPref(server + "useSecAuth");
|
||||
} catch (e) {}
|
||||
|
||||
Services.prefs.setIntPref(server + "authMethod",
|
||||
auth_method ? (useSecAuth ?
|
||||
Ci.nsMsgAuthMethod.secure :
|
||||
Ci.nsMsgAuthMethod.passwordCleartext) :
|
||||
Ci.nsMsgAuthMethod.none);
|
||||
Services.prefs.setIntPref(server + "migrated", kSmtpPrefVersion);
|
||||
}
|
||||
} catch(e) { logException(e); }
|
||||
}
|
||||
|
||||
/**
|
||||
* The address book used to contain information about wheather to allow remote
|
||||
* content for a given contact. Now we use the permission manager for that.
|
||||
* Do a one-time migration for it.
|
||||
*/
|
||||
function MigrateABRemoteContentSettings()
|
||||
{
|
||||
if (Services.prefs.prefHasUserValue("mail.ab_remote_content.migrated"))
|
||||
return;
|
||||
|
||||
// Search through all of our local address books looking for a match.
|
||||
let enumerator = MailServices.ab.directories;
|
||||
while (enumerator.hasMoreElements())
|
||||
{
|
||||
let migrateAddress = function(aEmail) {
|
||||
let uri = Services.io.newURI(
|
||||
"chrome://messenger/content/email=" + aEmail, null, null);
|
||||
Services.perms.add(uri, "image", Services.perms.ALLOW_ACTION);
|
||||
}
|
||||
|
||||
let addrbook = enumerator.getNext()
|
||||
.QueryInterface(Components.interfaces.nsIAbDirectory);
|
||||
try {
|
||||
// If it's a read-only book, don't try to find a card as we we could never
|
||||
// have set the AllowRemoteContent property.
|
||||
if (addrbook.readOnly)
|
||||
continue;
|
||||
|
||||
let childCards = addrbook.childCards;
|
||||
while (childCards.hasMoreElements())
|
||||
{
|
||||
let card = childCards.getNext()
|
||||
.QueryInterface(Components.interfaces.nsIAbCard);
|
||||
|
||||
if (card.getProperty("AllowRemoteContent", false) == false)
|
||||
continue; // not allowed for this contact
|
||||
|
||||
if (card.primaryEmail)
|
||||
migrateAddress(card.primaryEmail);
|
||||
|
||||
if (card.getProperty("SecondEmail", ""))
|
||||
migrateAddress(card.getProperty("SecondEmail", ""));
|
||||
}
|
||||
} catch (e) { logException(e); }
|
||||
}
|
||||
|
||||
Services.prefs.setIntPref("mail.ab_remote_content.migrated",
|
||||
kABRemoteContentPrefVersion);
|
||||
}
|
||||
|
||||
/**
|
||||
* If the default sending or viewing charset is one that is no longer available,
|
||||
* change it back to the default.
|
||||
*/
|
||||
function MigrateDefaultCharsets()
|
||||
{
|
||||
if (Services.prefs.prefHasUserValue("mail.default_charsets.migrated"))
|
||||
return;
|
||||
|
||||
let charsetConvertManager = Components.classes['@mozilla.org/charset-converter-manager;1']
|
||||
.getService(Components.interfaces.nsICharsetConverterManager);
|
||||
|
||||
let sendCharsetStr = Services.prefs.getComplexValue(
|
||||
"mailnews.send_default_charset",
|
||||
Components.interfaces.nsIPrefLocalizedString).data;
|
||||
|
||||
try {
|
||||
charsetConvertManager.getCharsetTitle(sendCharsetStr);
|
||||
} catch (e) {
|
||||
Services.prefs.clearUserPref("mailnews.send_default_charset");
|
||||
}
|
||||
|
||||
let viewCharsetStr = Services.prefs.getComplexValue(
|
||||
"mailnews.view_default_charset",
|
||||
Components.interfaces.nsIPrefLocalizedString).data;
|
||||
|
||||
try {
|
||||
charsetConvertManager.getCharsetTitle(viewCharsetStr);
|
||||
} catch (e) {
|
||||
Services.prefs.clearUserPref("mailnews.view_default_charset");
|
||||
}
|
||||
|
||||
Services.prefs.setIntPref("mail.default_charsets.migrated",
|
||||
kDefaultCharsetsPrefVersion);
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue