forked from EFForg/https-everywhere
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathbootstrap.js
More file actions
118 lines (100 loc) · 3.29 KB
/
bootstrap.js
File metadata and controls
118 lines (100 loc) · 3.29 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
"use strict";
const CI = Components.interfaces;
const CC = Components.classes;
function get_prefs(branch_name){
let o_prefs = CC["@mozilla.org/preferences-service;1"]
.getService(CI.nsIPrefService);
let o_branch = o_prefs.getBranch(branch_name);
return o_branch;
}
function get_custom_rulesets_array(){
var loc = "ProfD"; // profile directory
var dir =
CC["@mozilla.org/file/directory_service;1"]
.getService(CI.nsIProperties)
.get(loc, CI.nsILocalFile)
.clone();
dir.append("HTTPSEverywhereUserRules");
// Check for existence, if not, create.
if (!dir.exists()) {
return [];
}
var entries = dir.directoryEntries;
var files = [];
while(entries.hasMoreElements()) {
var entry = entries.getNext();
entry.QueryInterface(CI.nsIFile);
files.push(entry);
}
let file_data = []
for(let file of files){
var data = "";
var fstream = CC["@mozilla.org/network/file-input-stream;1"]
.createInstance(CI.nsIFileInputStream);
var sstream = CC["@mozilla.org/scriptableinputstream;1"]
.createInstance(CI.nsIScriptableInputStream);
fstream.init(file, -1, 0, 0);
sstream.init(fstream);
var str = sstream.read(4096);
while (str.length > 0) {
data += str;
str = sstream.read(4096);
}
sstream.close();
fstream.close();
file_data.push(data);
}
return file_data;
}
function startup({webExtension}) {
webExtension.startup().then(api => {
const {browser} = api;
browser.runtime.onMessage.addListener((msg, sender, sendReply) => {
if (msg == "import-legacy-data") {
let globals = get_prefs("extensions.https_everywhere.");
if(!pref_retrieve_bool_with_default(globals, "webextension-migrated", false)){
let changed = false;
let prefs = {
http_nowhere_enabled: pref_retrieve_bool_with_default(globals, "http_nowhere.enabled", false),
global_enabled: pref_retrieve_bool_with_default(globals, "globalEnabled", true),
show_counter: pref_retrieve_bool_with_default(globals, "show_counter", true)
};
if(prefs.http_nowhere_enabled == true ||
prefs.global_enabled == false ||
prefs.show_counter == true
){
changed = true;
}
let rule_toggle = {}
let rules = get_prefs("extensions.https_everywhere.rule_toggle.");
for(let rule_toggle_key of rules.getChildList("", {})){
rule_toggle[rule_toggle_key] = rules.getBoolPref(rule_toggle_key);
changed = true;
}
let custom_rulesets = get_custom_rulesets_array();
if(custom_rulesets.length > 0){
changed = true;
}
sendReply({
prefs: prefs,
rule_toggle: rule_toggle,
custom_rulesets: custom_rulesets,
changed: changed
});
globals.setBoolPref("webextension-migrated", true);
} else {
sendReply({changed: false});
}
}
});
});
}
function pref_retrieve_bool_with_default(pref_branch, element, default_value){
const pref_array = pref_branch.getChildList("", {});
if(pref_array.indexOf(element) !== -1){
return pref_branch.getBoolPref(element);
}
return default_value;
}
function shutdown(data) {
}