summaryrefslogtreecommitdiffstats
path: root/install/html/ffconfig.js
diff options
context:
space:
mode:
authorPetr Vobornik <pvoborni@redhat.com>2012-10-01 17:36:42 +0200
committerRob Crittenden <rcritten@redhat.com>2012-10-04 18:08:26 -0400
commit696fce5c8d4e480c6a731686c8952a4e7ace575f (patch)
tree50c9de739c9eafe8dd68af102ea74f6210ae404f /install/html/ffconfig.js
parent247a3a43b7fb9eac9af9497e61cdc9c964bee4ff (diff)
downloadfreeipa-696fce5c8d4e480c6a731686c8952a4e7ace575f.tar.gz
freeipa-696fce5c8d4e480c6a731686c8952a4e7ace575f.tar.xz
freeipa-696fce5c8d4e480c6a731686c8952a4e7ace575f.zip
Configuration pages changed to use new FF extension
browserconfig.html was changed to use new FF extension. The page is completely Firefox specific therefore the title was changed from 'Configure browser' to 'Firefox configuration'. Instruction to import CA cert in unauthorized.html are FF specific too, so they were moved to browserconfig.html. Unauthorized.html text was changed to distinguish FF config and other browsers. Now the page shows link for FF (browserconfig.html) and other browsers (ssbrowser.html). Ssbrowser.html should be enhanced by more configurations and browsers later [1]. Old configuration method was moved to ssbrowser.html. Unauthorized dialog in Web UI now links to http://../unauthorized.html instead of https. This change is done because of FF strange handling of extension installations from https sites [2]. Firefox allows ext. installation from https sites only when the certificate is signed by some build-in CA. To allow custom CAs an option in about:config has to be changed which don't help us at all because we wants to avoid manual changes in about:config. The design of browserconfig is inspired by Kyle Baker's design (2.1 Enhancements_v2.odt). It is not exactly the same. Highlighting of the steps wasn't used because in some cases we can switch some steps. Ticket: https://fedorahosted.org/freeipa/ticket/3094 [1] https://fedorahosted.org/freeipa/ticket/823 [2] https://bugzilla.mozilla.org/show_bug.cgi?id=688383
Diffstat (limited to 'install/html/ffconfig.js')
-rw-r--r--install/html/ffconfig.js116
1 files changed, 116 insertions, 0 deletions
diff --git a/install/html/ffconfig.js b/install/html/ffconfig.js
new file mode 100644
index 000000000..3c9f34c77
--- /dev/null
+++ b/install/html/ffconfig.js
@@ -0,0 +1,116 @@
+/* Authors:
+ * Petr Vobornik <pvoborni@redhat.com>
+ *
+ * Copyright (C) 2012 Red Hat
+ * see file 'COPYING' for use and warranty information
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+var IPA = IPA || {};
+
+IPA.browser_config = {
+
+ configure_firefox: function(domain) {
+
+ var self = this;
+
+ domain = domain || self.get_domain();
+
+ self.send_message({
+ method: 'configure',
+ predefined: 'ipa',
+ trusted_uris: domain
+ });
+ },
+
+
+ get_configure_result: function() {
+
+ var self = this;
+
+ var el = self.get_data_element();
+
+ var answer = el.getAttribute('answer');
+
+ return answer;
+ },
+
+ get_domain: function() {
+ return "."+IPA_DOMAIN;
+ },
+
+ send_message: function(options) {
+
+ options = options || {};
+
+ var self = this;
+
+ self.clear_data_element();
+ var opt_element = self.get_data_element();
+
+ for (var opt in options) {
+ opt_element.setAttribute(opt, options[opt]);
+ }
+
+ var msg_evt = document.createEvent('HTMLEvents');
+ msg_evt.initEvent('kerberos-auth-config', true, false);
+ opt_element.dispatchEvent(msg_evt);
+ },
+
+ get_data_element: function() {
+
+ var els = document.getElementsByTagName('kerberosauthdataelement');
+ var element;
+
+ if (els.length === 0) {
+ element = document.createElement('kerberosauthdataelement');
+ document.documentElement.appendChild(element);
+ } else {
+ element = els[0];
+ }
+
+ return element;
+ },
+
+ clear_data_element: function() {
+
+ var self = this;
+
+ var el = self.get_data_element();
+ var to_remove = [];
+
+ for (var i=0; i<el.attributes.length; i++) {
+ to_remove.push(el.attributes[i].name);
+ }
+
+ for (i=0; i<to_remove.length; i++) {
+ el.removeAttribute(to_remove[i]);
+ }
+ },
+
+ extension_installed: function() {
+
+ var self = this;
+
+ self.send_message({
+ method: 'can_configure'
+ });
+
+ var element = self.get_data_element();
+ var ext_installed = element.getAttribute('answer') === 'true';
+ return ext_installed;
+ }
+
+}; \ No newline at end of file