|
1 <?xml version="1.0" encoding="UTF-8"?> |
|
2 |
|
3 <!DOCTYPE html [ |
|
4 <!ENTITY % htmlDTD PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "DTD/xhtml1-strict.dtd"> |
|
5 %htmlDTD; |
|
6 <!ENTITY % globalDTD SYSTEM "chrome://global/locale/global.dtd"> |
|
7 %globalDTD; |
|
8 <!ENTITY % brandDTD SYSTEM "chrome://branding/locale/brand.dtd" > |
|
9 %brandDTD; |
|
10 <!ENTITY % blockedSiteDTD SYSTEM "chrome://browser/locale/phishing.dtd"> |
|
11 %blockedSiteDTD; |
|
12 ]> |
|
13 |
|
14 <!-- This Source Code Form is subject to the terms of the Mozilla Public |
|
15 - License, v. 2.0. If a copy of the MPL was not distributed with this |
|
16 - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> |
|
17 |
|
18 <html xmlns="http://www.w3.org/1999/xhtml" class="blacklist"> |
|
19 <head> |
|
20 <meta name="viewport" content="width=device-width; user-scalable=false" /> |
|
21 <link rel="stylesheet" href="chrome://global/skin/netError.css" type="text/css" media="all" /> |
|
22 <link rel="icon" type="image/png" id="favicon" sizes="64x64" href="chrome://browser/skin/images/blocked-warning.png"/> |
|
23 |
|
24 <script type="application/javascript"><![CDATA[ |
|
25 // Error url MUST be formatted like this: |
|
26 // about:blocked?e=error_code&u=url |
|
27 |
|
28 // Note that this file uses document.documentURI to get |
|
29 // the URL (with the format from above). This is because |
|
30 // document.location.href gets the current URI off the docshell, |
|
31 // which is the URL displayed in the location bar, i.e. |
|
32 // the URI that the user attempted to load. |
|
33 |
|
34 function getErrorCode() |
|
35 { |
|
36 var url = document.documentURI; |
|
37 var error = url.search(/e\=/); |
|
38 var duffUrl = url.search(/\&u\=/); |
|
39 return decodeURIComponent(url.slice(error + 2, duffUrl)); |
|
40 } |
|
41 |
|
42 function getURL() |
|
43 { |
|
44 var url = document.documentURI; |
|
45 var match = url.match(/&u=([^&]+)&/); |
|
46 |
|
47 // match == null if not found; if so, return an empty string |
|
48 // instead of what would turn out to be portions of the URI |
|
49 if (!match) |
|
50 return ""; |
|
51 |
|
52 url = decodeURIComponent(match[1]); |
|
53 |
|
54 // If this is a view-source page, then get then real URI of the page |
|
55 if (/^view-source\:/.test(url)) |
|
56 url = url.slice(12); |
|
57 return url; |
|
58 } |
|
59 |
|
60 /** |
|
61 * Attempt to get the hostname via document.location. Fail back |
|
62 * to getURL so that we always return something meaningful. |
|
63 */ |
|
64 function getHostString() |
|
65 { |
|
66 try { |
|
67 return document.location.hostname; |
|
68 } catch (e) { |
|
69 return getURL(); |
|
70 } |
|
71 } |
|
72 |
|
73 function initPage() |
|
74 { |
|
75 // Handoff to the appropriate initializer, based on error code |
|
76 switch (getErrorCode()) { |
|
77 case "malwareBlocked" : |
|
78 initPage_malware(); |
|
79 break; |
|
80 case "phishingBlocked" : |
|
81 initPage_phishing(); |
|
82 break; |
|
83 } |
|
84 } |
|
85 |
|
86 /** |
|
87 * Initialize custom strings and functionality for blocked malware case |
|
88 */ |
|
89 function initPage_malware() |
|
90 { |
|
91 // Remove phishing strings |
|
92 var el = document.getElementById("errorTitleText_phishing"); |
|
93 el.parentNode.removeChild(el); |
|
94 |
|
95 el = document.getElementById("errorShortDescText_phishing"); |
|
96 el.parentNode.removeChild(el); |
|
97 |
|
98 el = document.getElementById("errorLongDescText_phishing"); |
|
99 el.parentNode.removeChild(el); |
|
100 |
|
101 // Set sitename |
|
102 document.getElementById("malware_sitename").textContent = getHostString(); |
|
103 document.title = document.getElementById("errorTitleText_malware") |
|
104 .innerHTML; |
|
105 } |
|
106 |
|
107 /** |
|
108 * Initialize custom strings and functionality for blocked phishing case |
|
109 */ |
|
110 function initPage_phishing() |
|
111 { |
|
112 // Remove malware strings |
|
113 var el = document.getElementById("errorTitleText_malware"); |
|
114 el.parentNode.removeChild(el); |
|
115 |
|
116 el = document.getElementById("errorShortDescText_malware"); |
|
117 el.parentNode.removeChild(el); |
|
118 |
|
119 el = document.getElementById("errorLongDescText_malware"); |
|
120 el.parentNode.removeChild(el); |
|
121 |
|
122 document.title = document.getElementById("errorTitleText_phishing") |
|
123 .innerHTML; |
|
124 } |
|
125 ]]></script> |
|
126 </head> |
|
127 |
|
128 <body id="errorPage" class="blockedsite" dir="&locale.dir;"> |
|
129 |
|
130 <div id="errorPageContainer"> |
|
131 |
|
132 <!-- Error Title --> |
|
133 <div id="errorTitle"> |
|
134 <h1 id="errorTitleText_phishing" class="errorTitleText">&safeb.blocked.phishingPage.title2;</h1> |
|
135 <h1 id="errorTitleText_malware" class="errorTitleText">&safeb.blocked.malwarePage.title;</h1> |
|
136 </div> |
|
137 |
|
138 <div id="errorLongContent"> |
|
139 |
|
140 <!-- Short Description --> |
|
141 <div id="errorShortDesc"> |
|
142 <p id="errorShortDescText_phishing">&safeb.blocked.phishingPage.shortDesc2;</p> |
|
143 <p id="errorShortDescText_malware">&safeb.blocked.malwarePage.shortDesc;</p> |
|
144 </div> |
|
145 |
|
146 <!-- Long Description --> |
|
147 <div id="errorLongDesc"> |
|
148 <p id="errorLongDescText_phishing">&safeb.blocked.phishingPage.longDesc2;</p> |
|
149 <p id="errorLongDescText_malware">&safeb.blocked.malwarePage.longDesc;</p> |
|
150 </div> |
|
151 |
|
152 <!-- Action buttons --> |
|
153 <div id="buttons"> |
|
154 <!-- Commands handled in browser.js --> |
|
155 <button id="getMeOutButton">&safeb.palm.accept.label;</button> |
|
156 <button id="reportButton">&safeb.palm.reportPage.label;</button> |
|
157 </div> |
|
158 </div> |
|
159 <div id="ignoreWarning"> |
|
160 <button id="ignoreWarningButton">&safeb.palm.decline.label;</button> |
|
161 </div> |
|
162 </div> |
|
163 <!-- |
|
164 - Note: It is important to run the script this way, instead of using |
|
165 - an onload handler. This is because error pages are loaded as |
|
166 - LOAD_BACKGROUND, which means that onload handlers will not be executed. |
|
167 --> |
|
168 <script type="application/javascript">initPage();</script> |
|
169 </body> |
|
170 </html> |