aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'www-client/torbrowser/files/profile.cfg')
-rw-r--r--www-client/torbrowser/files/profile.cfg42
1 files changed, 42 insertions, 0 deletions
diff --git a/www-client/torbrowser/files/profile.cfg b/www-client/torbrowser/files/profile.cfg
new file mode 100644
index 00000000..d14309ab
--- /dev/null
+++ b/www-client/torbrowser/files/profile.cfg
@@ -0,0 +1,42 @@
+//
+const {classes: Cc, interfaces: Ci, utils: Cu} = Components;
+Cu.import("resource://gre/modules/Services.jsm");
+Cu.import("resource://gre/modules/FileUtils.jsm");
+
+var profileDir = Services.dirsvc.get("ProfD", Ci.nsIFile);
+var certDBFile = profileDir.clone();
+certDBFile.append("cert8.db")
+// If cert8.db isn't there, it's a new profile
+if (!certDBFile.exists()) {
+ var defaultProfileDir = Services.dirsvc.get("GreD", Ci.nsIFile);
+ defaultProfileDir.append("defaults");
+ defaultProfileDir.append("profile");
+ try {
+ copyDir(defaultProfileDir, profileDir);
+ } catch (e) {
+ Components.utils.reportError(e);
+ }
+}
+
+function copyDir(aOriginal, aDestination) {
+ var enumerator = aOriginal.directoryEntries;
+ while (enumerator.hasMoreElements()) {
+ var file = enumerator.getNext().QueryInterface(Components.interfaces.nsIFile);
+ if (file.isDirectory()) {
+ var subdir = aDestination.clone();
+ subdir.append(file.leafName);
+ try {
+ subdir.create(Ci.nsIFile.DIRECTORY_TYPE, FileUtils.PERMS_DIRECTORY);
+ copyDir(file, subdir);
+ } catch (e) {
+ Components.utils.reportError(e);
+ }
+ } else {
+ try {
+ file.copyTo(aDestination, null);
+ } catch (e) {
+ Components.utils.reportError(e);
+ }
+ }
+ }
+}