Skip to content

Commit ebb5eeb

Browse files
committed
Working loader
1 parent 4f076fe commit ebb5eeb

File tree

3 files changed

+44
-21
lines changed

3 files changed

+44
-21
lines changed

chromium/background.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ function getRuleXml() {
1616
return output;
1717
}
1818

19-
var all_rules = new RuleSets(navigator.userAgent, LRUCache, getRuleXml());
19+
var all_rules = new RuleSets(navigator.userAgent, LRUCache, getRuleXml(), localStorage);
2020
var wr = chrome.webRequest;
2121

2222
/*

chromium/rewriter.js

Lines changed: 36 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,41 @@
1+
var fs = require("fs");
2+
var DOMParser = require('xmldom').DOMParser;
3+
14
var lrucache = require("./lru");
25
var rules = require("./rules");
3-
var rules = require("./rules");
4-
var XMLHttpRequest = require("xmlhttprequest").XMLHttpRequest;
56

6-
function getRuleXml() {
7-
var xhr = new XMLHttpRequest();
8-
// Use blocking XHR to ensure everything is loaded by the time
9-
// we return.
10-
xhr.open("GET", "file:///home/jsha/https-everywhere/chromium/rules/default.rulesets", false);
11-
xhr.send(null);
12-
// Get file contents
13-
if (xhr.readyState != 4) {
14-
return "yy";
15-
}
16-
return xhr.responseXML;
7+
var URI = require("URIjs");
8+
9+
var ruleSets = null;
10+
11+
function processFile() {
12+
fs.readFile('/home/jsha/index.html',
13+
{encoding: 'utf-8'},
14+
function (err, data) {
15+
if (err) throw err;
16+
var result = URI.withinString(data, function(url) {
17+
var uri = new URI(url);
18+
if (uri.protocol() != 'http') return url;
19+
20+
uri.normalize();
21+
var rewritten = ruleSets.rewriteURI(uri.toString(), uri.host());
22+
if (rewritten) {
23+
console.log(uri.toString(), rewritten);
24+
return rewritten;
25+
} else {
26+
return url;
27+
}
28+
});
29+
});
1730
}
1831

19-
new rules.RuleSets("foo", lrucache.LRUCache,
20-
getRuleXml());
21-
console.log("ok");
32+
fs.readFile('rules/default.rulesets',
33+
{encoding: 'utf-8'},
34+
function (err, data) {
35+
if (err) throw err;
36+
var xml = new DOMParser().parseFromString(data, 'text/xml');
37+
ruleSets = new rules.RuleSets("foo", lrucache.LRUCache, xml, {});
38+
console.log("ok");
39+
40+
processFile();
41+
});

chromium/rules.js

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ RuleSet.prototype = {
7171
};
7272

7373

74-
function RuleSets(userAgent, cache, rule_xml) {
74+
function RuleSets(userAgent, cache, ruleXml, ruleActiveStates) {
7575
// Load rules into structure
7676
this.targets = {};
7777
this.userAgent = userAgent;
@@ -83,7 +83,10 @@ function RuleSets(userAgent, cache, rule_xml) {
8383
// A cache for cookie hostnames.
8484
this.cookieHostCache = new cache(100);
8585

86-
var sets = rule_xml.getElementsByTagName("ruleset");
86+
// A hash of rule name -> active status (true/false).
87+
this.ruleActiveStates = ruleActiveStates;
88+
89+
var sets = ruleXml.getElementsByTagName("ruleset");
8790
for (var i = 0; i < sets.length; ++i) {
8891
this.parseOneRuleset(sets[i]);
8992
}
@@ -125,8 +128,8 @@ RuleSets.prototype = {
125128
note.trim());
126129

127130
// Read user prefs
128-
if (rule_set.name in localStorage) {
129-
rule_set.active = (localStorage[rule_set.name] == "true");
131+
if (rule_set.name in this.ruleActiveStates) {
132+
rule_set.active = (this.ruleActiveStates[rule_set.name] == "true");
130133
}
131134

132135
var rules = ruletag.getElementsByTagName("rule");

0 commit comments

Comments
 (0)