Update AdBlock Plus patterns.
[tails-test.git] / config / chroot_local-includes / etc / iceweasel / profile / extensions / {00084897-021a-4361-8423-083407a033e0} / components / nsCookieSafe.js
blob0b815f2be99b3ccfe528b5c0aaedd8e17415eb0b
1 /***************************************************************************
2 Name: CS Lite
3 Description: Control cookie permissions.
4 Author: Ron Beckman
5 Homepage: http://addons.mozilla.org
7 Copyright (C) 2007 Ron Beckman
9 This program is free software; you can redistribute it and/or
10 modify it under the terms of the GNU General Public License
11 as published by the Free Software Foundation; either version 2
12 of the License, or (at your option) any later version.
14 This program is distributed in the hope that it will be useful,
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 GNU General Public License for more details.
19 You should have received a copy of the GNU General Public License
20 along with this program; if not, write to:
22 Free Software Foundation, Inc.
23 51 Franklin Street
24 Fifth Floor
25 Boston, MA 02110-1301
26 USA
27 ***************************************************************************/
30 const COOKIESAFE_CONTRACTID = '@mozilla.org/CookieSafe;1';
31 const COOKIESAFE_CID = Components.ID('{d3b60080-fd35-4507-a5a2-70c3560b3874}');
32 const COOKIESAFE_IID = Components.interfaces.nsICookieSafe;
33 const COOKIESAFE_SERVICENAME = 'CookieSafe';
35 var nsCookieSafe = {
37 removeSub: function(host) {
38 if (!host || host.indexOf('.')==-1) return host;
40 //remove port number if found
41 host = host.replace(/\:.*$/g,'');
43 var testip = host.replace(/\./g,'');
44 if (!isNaN(testip)) return host;
46 var domain = host.split('.');
47 if (domain.length<3) return domain.join('.');
49 try {
50 var sld = domain[domain.length-2];
51 var ext = domain[domain.length-1];
52 if ((sld in this && this[sld].indexOf(' '+ext+' ')!=-1) ||
53 (sld=='co' || sld=='com' || sld=='org')) {
54 return domain[domain.length-3]+'.'+domain[domain.length-2]+'.'+domain[domain.length-1];
55 } else {
56 return domain[domain.length-2]+'.'+domain[domain.length-1];
58 } catch(e) {
59 return domain[domain.length-2]+'.'+domain[domain.length-1];
63 formatCookieString: function(ckstr,uri) {
64 var url = uri.QueryInterface(Components.interfaces.nsIURL);
66 //setup cookie object to appear as nsICookie
67 var cookie = {
68 name: null,
69 value: null,
70 isDomain: false,
71 host: uri.host,
72 path: url.directory,
73 isSecure: false,
74 expires: 0
77 var dt = new Date();
78 var time = dt.getTime();
80 ckstr = ckstr.replace(/\; /g,'\;');
81 var values = ckstr.split('\;');
83 for (var i=0; i<values.length; ++i) {
84 if (values[i].substr(0,6).toLowerCase()=='domain') {
85 cookie.host = values[i].substr(values[i].indexOf('=')+1);
87 if (values[i].substr(0,4).toLowerCase()=='path') {
88 cookie.path = values[i].substr(values[i].indexOf('=')+1);
90 if (values[i].substr(0,7).toLowerCase()=='expires') {
91 var expStr = values[i].substr(values[i].indexOf('=')+1);
92 expStr = expStr.replace(/\-/g,' ');
93 var exp = parseInt(Date.parse(expStr));
94 cookie.expires = (exp < time) ? 0 : exp / 1000;
96 if (values[i].substr(0,6).toLowerCase()=='secure') {
97 cookie.isSecure = true;
101 cookie.name = values[0].substr(0,values[0].indexOf('='));
102 cookie.value = values[0].substr(values[0].indexOf('=')+1);
103 if (cookie.host.charAt(0)=='.') cookie.isDomain = true;
105 return cookie;
108 /** BEGIN ORGANIZATIONAL SECOND LEVEL DOMAINS **/
109 ab: ' ca ',
110 ac: ' ac at be cn id il in jp kr nz th uk za ',
111 ad: ' jp ',
112 adm: ' br ',
113 adv: ' br ',
114 agro: ' pl ',
115 ah: ' cn ',
116 aid: ' pl ',
117 alt: ' za ',
118 am: ' br ',
119 ar: ' com ',
120 arq: ' br ',
121 art: ' br ',
122 arts: ' ro ',
123 asn: ' au ',
124 asso: ' fr mc ',
125 atm: ' pl ',
126 auto: ' pl ',
127 bbs: ' tr ',
128 bc: ' ca ',
129 bio: ' br ',
130 biz: ' pl ',
131 bj: ' cn ',
132 br: ' com ',
133 cn: ' com ',
134 cng: ' br ',
135 cnt: ' br ',
136 co: ' ac at bw ck cr id il im in je jp ke kr ls ma nz th ug uk uz ve vi za zm zw ',
137 com: ' af ag ar au bd bh bn bo br bz cn co cu do ec eg et fj fr gi gt hk jm kh ly mm mt mx my na nf ng ni np om pa pe ph pk pl pr py qa ro ru sa sb sg sv tj tr tw ua uy vc vn ',
138 cq: ' cn ',
139 cri: ' nz ',
140 ecn: ' br ',
141 ed: ' jp ',
142 edu: ' ar au cn hk mm mx pl tr za ',
143 eng: ' br ',
144 esp: ' br ',
145 etc: ' br ',
146 eti: ' br ',
147 eu: ' com lv ',
148 fin: ' ec ',
149 firm: ' ro ',
150 fm: ' br ',
151 fot: ' br ',
152 fst: ' br ',
153 g12: ' br ',
154 gb: ' com net ',
155 gd: ' cn ',
156 gen: ' nz ',
157 gmina: ' pl ',
158 go: ' jp kr th ',
159 gob: ' mx ',
160 gov: ' ar br cn ec il in mm mx sg tr uk za ',
161 govt: ' nz ',
162 gr: ' jp ',
163 gs: ' cn ',
164 gsm: ' pl ',
165 gv: ' ac at ',
166 gx: ' cn ',
167 gz: ' cn ',
168 hb: ' cn ',
169 he: ' cn ',
170 hi: ' cn ',
171 hk: ' cn ',
172 hl: ' cn ',
173 hn: ' cn ',
174 hu: ' com ',
175 id: ' au ',
176 ind: ' br ',
177 inf: ' br ',
178 info: ' pl ro ',
179 iwi: ' nz ',
180 jl: ' cn ',
181 jor: ' br ',
182 js: ' cn ',
183 k12: ' il tr ',
184 lel: ' br ',
185 lg: ' jp ',
186 ln: ' cn ',
187 ltd: ' uk ',
188 mail: ' pl ',
189 maori: ' nz ',
190 mb: ' ca ',
191 me: ' uk ',
192 med: ' br ec ',
193 media: ' pl ',
194 mi: ' th ',
195 miasta: ' pl ',
196 mil: ' br ec nz pl tr za ',
197 mo: ' cn ',
198 muni: ' il ',
199 nb: ' ca ',
200 ne: ' jp kr ',
201 net: ' ar au br cn ec hk id il in mm mx nz pl ru sg th tr tw za ',
202 nf: ' ca ',
203 ngo: ' za ',
204 nm: ' cn kr ',
205 no: ' com ',
206 nom: ' br pl ro za ',
207 ns: ' ca ',
208 nt: ' ca ro ',
209 ntr: ' br ',
210 nx: ' cn ',
211 odo: ' br ',
212 off: ' ai ',
213 on: ' ca ',
214 or: ' ac at jp kr th ',
215 org: ' ar au br cn ec hk il in mm mx nz pl ro ru sg tr tw uk za ',
216 pc: ' pl ',
217 pe: ' ca ',
218 plc: ' uk ',
219 ppg: ' br ',
220 presse: ' fr ',
221 priv: ' pl ',
222 pro: ' br ',
223 psc: ' br ',
224 psi: ' br ',
225 qc: ' ca com ',
226 qh: ' cn ',
227 re: ' kr ',
228 realestate: ' pl ',
229 rec: ' br ro ',
230 rel: ' pl ',
231 sa: ' com ',
232 sc: ' cn ',
233 school: ' nz za ',
234 se: ' com net ',
235 sh: ' cn ',
236 shop: ' pl ',
237 sk: ' ca ',
238 sklep: ' pl ',
239 slg: ' br ',
240 sn: ' cn ',
241 sos: ' pl ',
242 store: ' ro ',
243 targi: ' pl ',
244 tj: ' cn ',
245 tm: ' fr mc pl ro za ',
246 tmp: ' br ',
247 tourism: ' pl ',
248 travel: ' pl ',
249 tur: ' br ',
250 turystyka: ' pl ',
251 tv: ' br ',
252 tw: ' cn ',
253 uk: ' co com net ',
254 us: ' com ca ',
255 uy: ' com ',
256 vet: ' br ',
257 web: ' za ',
258 www: ' ro ',
259 xj: ' cn ',
260 xz: ' cn ',
261 yk: ' ca ',
262 yn: ' cn ',
263 za: ' com ',
264 zj: ' cn ',
265 zlg: ' br ',
266 /** END ORGANIZATIONAL SECOND LEVEL DOMAINS **/
268 QueryInterface: function(iid) {
269 if (!iid.equals(Components.interfaces.nsISupports) &&
270 !iid.equals(COOKIESAFE_IID))
271 throw Components.results.NS_ERROR_NO_INTERFACE;
272 return this;
276 var nsCookieSafeModule = {
278 registerSelf: function(compMgr, fileSpec, location, type) {
279 compMgr = compMgr.QueryInterface(Components.interfaces.nsIComponentRegistrar);
280 compMgr.registerFactoryLocation(COOKIESAFE_CID,
281 COOKIESAFE_SERVICENAME,
282 COOKIESAFE_CONTRACTID,
283 fileSpec,location,type);
286 unregisterSelf: function (compMgr, fileSpec, location) {
287 compMgr = compMgr.QueryInterface(Components.interfaces.nsIComponentRegistrar);
288 compMgr.unregisterFactoryLocation(COOKIESAFE_CID,fileSpec);
291 getClassObject: function(compMgr, cid, iid) {
292 if (!cid.equals(COOKIESAFE_CID))
293 throw Components.results.NS_ERROR_NO_INTERFACE;
294 if (!iid.equals(Components.interfaces.nsIFactory))
295 throw Components.results.NS_ERROR_NOT_IMPLEMENTED;
296 return this.nsCookieSafeFactory;
299 canUnload: function(compMgr) {
300 return true;
303 nsCookieSafeFactory: {
305 createInstance: function(outer, iid) {
306 if (outer != null)
307 throw Components.results.NS_ERROR_NO_AGGREGATION;
308 if (!iid.equals(COOKIESAFE_IID) &&
309 !iid.equals(Components.interfaces.nsISupports))
310 throw Components.results.NS_ERROR_INVALID_ARG;
311 return nsCookieSafe;
316 function NSGetModule(comMgr, fileSpec) { return nsCookieSafeModule; }