summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--freeipa.spec.in8
-rw-r--r--install/html/Makefile.am2
-rw-r--r--install/html/browserconfig.html84
-rw-r--r--install/html/ffconfig.js116
-rw-r--r--install/html/ffconfig_page.js148
-rw-r--r--install/html/ipa_error.css6
-rw-r--r--install/html/jsl.conf131
-rw-r--r--install/html/ssbrowser.html27
-rw-r--r--install/html/unauthorized.html31
-rw-r--r--install/ui/ipa.css37
-rw-r--r--install/ui/ipa.js4
-rw-r--r--install/ui/test/data/ipa_init.json2
-rw-r--r--ipalib/plugins/internal.py2
13 files changed, 550 insertions, 48 deletions
diff --git a/freeipa.spec.in b/freeipa.spec.in
index 136eea0d2..7c8314a04 100644
--- a/freeipa.spec.in
+++ b/freeipa.spec.in
@@ -398,6 +398,10 @@ mkdir -p %{buildroot}/%{_sysconfdir}/ipa/html
mkdir -p %{buildroot}/%{_localstatedir}/cache/ipa/sysrestore
mkdir -p %{buildroot}/%{_localstatedir}/cache/ipa/sysupgrade
mkdir %{buildroot}%{_usr}/share/ipa/html/
+ln -s ../../../..%{_sysconfdir}/ipa/html/ffconfig.js \
+ %{buildroot}%{_usr}/share/ipa/html/ffconfig.js
+ln -s ../../../..%{_sysconfdir}/ipa/html/ffconfig_page.js \
+ %{buildroot}%{_usr}/share/ipa/html/ffconfig_page.js
ln -s ../../../..%{_sysconfdir}/ipa/html/ssbrowser.html \
%{buildroot}%{_usr}/share/ipa/html/ssbrowser.html
ln -s ../../../..%{_sysconfdir}/ipa/html/unauthorized.html \
@@ -625,6 +629,8 @@ fi
%dir %{_usr}/share/ipa/ffextension/locale/en-US
%{_usr}/share/ipa/ffextension/locale/en-US/kerberosauth.properties
%dir %{_usr}/share/ipa/html
+%{_usr}/share/ipa/html/ffconfig.js
+%{_usr}/share/ipa/html/ffconfig_page.js
%{_usr}/share/ipa/html/ssbrowser.html
%{_usr}/share/ipa/html/browserconfig.html
%{_usr}/share/ipa/html/unauthorized.html
@@ -653,6 +659,8 @@ fi
%{_usr}/share/ipa/ui/images/*.gif
%dir %{_sysconfdir}/ipa
%dir %{_sysconfdir}/ipa/html
+%config(noreplace) %{_sysconfdir}/ipa/html/ffconfig.js
+%config(noreplace) %{_sysconfdir}/ipa/html/ffconfig_page.js
%config(noreplace) %{_sysconfdir}/ipa/html/ssbrowser.html
%config(noreplace) %{_sysconfdir}/ipa/html/ipa_error.css
%config(noreplace) %{_sysconfdir}/ipa/html/unauthorized.html
diff --git a/install/html/Makefile.am b/install/html/Makefile.am
index 46e8683c8..0377ce755 100644
--- a/install/html/Makefile.am
+++ b/install/html/Makefile.am
@@ -2,6 +2,8 @@ NULL =
appdir = $(IPA_SYSCONF_DIR)/html
app_DATA = \
+ ffconfig.js \
+ ffconfig_page.js \
ssbrowser.html \
browserconfig.html \
unauthorized.html \
diff --git a/install/html/browserconfig.html b/install/html/browserconfig.html
index aa978f040..046a82490 100644
--- a/install/html/browserconfig.html
+++ b/install/html/browserconfig.html
@@ -4,19 +4,15 @@
<meta charset="utf-8">
<title>IPA: Identity Policy Audit</title>
- <script type="text/javascript" src="../ui/jquery.js"></script>
<link rel="stylesheet" type="text/css" href="../ui/jquery-ui.css" />
<link rel="stylesheet" type="text/css" href="../ui/ipa.css" />
<link rel="stylesheet" type="text/css" href="ipa_error.css" />
- <script type="text/javascript">
- $(document).ready(function() {
- if (navigator.userAgent.indexOf("Firefox") != -1 ||
- navigator.userAgent.indexOf("SeaMonkey") != -1) {
- $('.textblockkrb').css('display', 'block');
- }
- });
- </script>
+ <script type="text/javascript" src="../ui/jquery.js"></script>
+ <script type="text/javascript" src="../ui/jquery-ui.js"></script>
+ <script type="text/javascript" src="krb.js"></script>
+ <script type="text/javascript" src="ffconfig.js"></script>
+ <script type="text/javascript" src="ffconfig_page.js"></script>
</head>
<body class="info-page">
@@ -27,11 +23,71 @@
<img src="../ui/images/ipa-logo.png" /><img src="../ui/images/ipa-banner.png" />
</div>
- <div class="textblockkrb" style="display: none;">
- <h1>Configure Browser</h1>
- <p> Click the below button to configure your browser </p>
- <object data="jar:/ipa/errors/configure.jar!/preferences.html"
- type="text/html" class="browser-config"></object>
+ <div class="textblockkrb browser-config">
+ <h1>Firefox configuration</h1>
+
+ <div id="wrongbrowser" style="display:none">
+ <h2>Wrong Browser!</h2>
+ <p>
+ <a href="ssbrowser.html" id="notfirefox-link">Proceed to configuration for other browsers</a>
+ </p>
+ <p>
+ You are not using Firefox. Please use configuration page for other browsers.
+ </p>
+ </div>
+
+ <div id="step1">
+ <h2>Step 1</h2>
+ <p>
+ <a href="ca.crt" id="ca-link">Import Certificate Authority certificate</a>
+ </p>
+ <p>
+ Make sure you select <b>all three</b> checkboxes.
+ </p>
+ </div>
+
+ <div id="step2a" style="display:none">
+ <h2>Step 2a</h2>
+ <p>
+ <a href="ssbrowser.html#oldfirefox" id="oldfirefox-link">Proceed to configuration page for older versions of Firefox</a>
+ </p>
+ <!--<p id="older-compatible">
+ Your version of Firefox can be configured by an older method. You don't have to use the Kerberos Configuration extension.
+ </p>-->
+ <p id="older-required">
+ Your version of Firefox is not compatible with configuration method on this page. Please use configuration page for older versions of Firefox.
+ <p>
+ </div>
+
+ <div id="step2">
+ <h2>Step 2</h2>
+ <div id="ext-installed">
+ <p>
+ <a href="kerberosauth.xpi" id="reinstall-link">Re-install extension</a>
+ </p>
+ <p>
+ Extension installed. You can proceed to Step 3.
+ </p>
+ </div>
+ <div id="ext-missing">
+ <p><a href="kerberosauth.xpi" id="install-link">Install Kerberos Configuration Firefox extension</a></p>
+ <p>Kerberos Configuration extension is required for Step 3</p>
+ </div>
+ </div>
+
+ <div id="step3">
+ <h2>Step 3</h2>
+ <p><a href="#configure-browser" id="configure-link">Configure browser</a></p>
+ <p id="config-success" style="display:none">Browser successfully configured</p>
+ <p id="config-aborted" style="display:none">Configuration aborted</p>
+ <p id="config-noext" style="display:none">Configuration was not successful, extension isn't installed or is disabled. Please proceed to step 2.</p>
+ <p id="config-error" style="display:none">Configuration was not successful, unknown error uccured.</p>
+ </div>
+
+ <div id="step4">
+ <h2>Step 4</h2>
+ <p><a href="../ui/index.html" id="return-link">Return to Web UI</a></p>
+ </div>
</div>
</div>
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
diff --git a/install/html/ffconfig_page.js b/install/html/ffconfig_page.js
new file mode 100644
index 000000000..1c8386c5a
--- /dev/null
+++ b/install/html/ffconfig_page.js
@@ -0,0 +1,148 @@
+/* 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/>.
+ */
+
+ $(document).ready(function() {
+
+ var set_enabled = function(steps, enabled) {
+
+ var method;
+
+ if (enabled) method = function(el) { el.removeClass('ui-state-disabled'); };
+ else method = function(el) { el.addClass('ui-state-disabled'); };
+
+ for (var i=0; i<steps.length; i++) {
+ method($(steps[i]));
+ }
+ };
+
+ var show_installed = function(installed) {
+
+ if (installed) {
+ $('#ext-installed').show();
+ $('#ext-missing').hide();
+ } else {
+ $('#ext-installed').hide();
+ $('#ext-missing').show();
+ }
+ set_enabled(['#step3'], installed);
+ };
+
+ var install = function(event) {
+
+ window.location = $(event.target).parent().attr('href');
+ check_until_installed();
+ return false;
+ };
+
+ var check_until_installed = function() {
+
+ var installed = IPA.browser_config.extension_installed();
+ show_installed(installed);
+
+ if (!installed) {
+ window.setTimeout(function() {
+ check_until_installed();
+ }, 300);
+ }
+ };
+
+ var configure = function() {
+ IPA.browser_config.configure_firefox();
+ var result = IPA.browser_config.get_configure_result();
+ var installed = IPA.browser_config.extension_installed();
+
+ $('#config-success').hide();
+ $('#config-aborted').hide();
+ $('#config-noext').hide();
+ $('#config-error').hide();
+
+ if (result === 'configured') {
+ $('#config-success').show();
+ } else if (result == 'aborted') {
+ $('#config-aborted').show();
+ } else if (!installed) {
+ $('#config-noext').show();
+ } else {
+ $('#config-error').show();
+ }
+ return false;
+ };
+
+ var check_version = function() {
+
+ var firefox = $.browser.mozilla === true;
+ var version = $.browser.version;
+
+ if (!firefox) {
+ $('#wrongbrowser').show();
+ set_enabled(['#step1', '#step2', '#step3'], false);
+ } else {
+ // Disable for all version of FF older than 15. Theoretically
+ // the extension is compatible with version 3.6, 10 and later
+ // FF 4-9 are not compatible because there is an error in loading
+ // resource from chrome.manifest
+ if (compare_version(version, '15') === -1) {
+ $('#step2a').show();
+ set_enabled(['#step2', '#step3'], false);
+ }// else if (compare_version(version, '15') === -1) {
+// $('#step2a').show();
+// $('#older-compatible').show();
+// $('#older-required').hide();
+// }
+ }
+ };
+
+ var compare_version = function(a, b) {
+
+ var only_digits =/[^\d.]/g;
+
+ var a_parts = a.replace(only_digits, '').split('.');
+ var b_parts = b.replace(only_digits, '').split('.');
+
+ for (var i=0; i<a_parts.length && i<b_parts.length; i++) {
+ var a_num = Number(a_parts[i]);
+ var b_num = Number(b_parts[i]);
+
+ if (a_num > b_num) return 1;
+ else if (a_num < b_num) return -1;
+ }
+
+ if (a_parts.length !== b_parts.length) {
+ return a_parts.length > b_parts.length ? 1 : -1;
+ }
+
+ return 0;
+ };
+
+ $('#install-link').click(install);
+ $('#reinstall-link').click(install);
+ $('#configure-link').click(configure);
+
+ $('#notfirefox-link').button();
+ $('#ca-link').button();
+ $('#oldfirefox-link').button();
+ $('#reinstall-link').button();
+ $('#install-link').button();
+ $('#configure-link').button();
+ $('#return-link').button();
+
+ check_version();
+ show_installed(IPA.browser_config.extension_installed());
+}); \ No newline at end of file
diff --git a/install/html/ipa_error.css b/install/html/ipa_error.css
index 60ad729e0..6cf70d885 100644
--- a/install/html/ipa_error.css
+++ b/install/html/ipa_error.css
@@ -18,6 +18,12 @@
margin-top: -3em;
}
+
+.ssbrowser h3 {
+ font-size: 1.1em;
+ margin-bottom: 1em;
+}
+
/* Browser configuration */
object.browser-config {
diff --git a/install/html/jsl.conf b/install/html/jsl.conf
new file mode 100644
index 000000000..b9a8a9780
--- /dev/null
+++ b/install/html/jsl.conf
@@ -0,0 +1,131 @@
+#
+# Configuration File for JavaScript Lint 0.3.0
+# Developed by Matthias Miller (http://www.JavaScriptLint.com)
+#
+# This configuration file can be used to lint a collection of scripts, or to enable
+# or disable warnings for scripts that are linted via the command line.
+#
+
+### Warnings
+# Enable or disable warnings based on requirements.
+# Use "+WarningName" to display or "-WarningName" to suppress.
+#
++no_return_value # function {0} does not always return a value
++duplicate_formal # duplicate formal argument {0}
++equal_as_assign # test for equality (==) mistyped as assignment (=)?{0}
++var_hides_arg # variable {0} hides argument
++redeclared_var # redeclaration of {0} {1}
++anon_no_return_value # anonymous function does not always return a value
++missing_semicolon # missing semicolon
++meaningless_block # meaningless block; curly braces have no impact
++comma_separated_stmts # multiple statements separated by commas (use semicolons?)
++unreachable_code # unreachable code
++missing_break # missing break statement
++missing_break_for_last_case # missing break statement for last case in switch
++comparison_type_conv # comparisons against null, 0, true, false, or an empty string allowing implicit type conversion (use === or !==)
++inc_dec_within_stmt # increment (++) and decrement (--) operators used as part of greater statement
++useless_void # use of the void type may be unnecessary (void is always undefined)
++multiple_plus_minus # unknown order of operations for successive plus (e.g. x+++y) or minus (e.g. x---y) signs
++use_of_label # use of label
+-block_without_braces # block statement without curly braces
++leading_decimal_point # leading decimal point may indicate a number or an object member
++trailing_decimal_point # trailing decimal point may indicate a number or an object member
++octal_number # leading zeros make an octal number
++nested_comment # nested comment
++misplaced_regex # regular expressions should be preceded by a left parenthesis, assignment, colon, or comma
++ambiguous_newline # unexpected end of line; it is ambiguous whether these lines are part of the same statement
++empty_statement # empty statement or extra semicolon
+-missing_option_explicit # the "option explicit" control comment is missing
++partial_option_explicit # the "option explicit" control comment, if used, must be in the first script tag
++dup_option_explicit # duplicate "option explicit" control comment
++useless_assign # useless assignment
++ambiguous_nested_stmt # block statements containing block statements should use curly braces to resolve ambiguity
++ambiguous_else_stmt # the else statement could be matched with one of multiple if statements (use curly braces to indicate intent)
++missing_default_case # missing default case in switch statement
++duplicate_case_in_switch # duplicate case in switch statements
++default_not_at_end # the default case is not at the end of the switch statement
++legacy_cc_not_understood # couldn't understand control comment using /*@keyword@*/ syntax
++jsl_cc_not_understood # couldn't understand control comment using /*jsl:keyword*/ syntax
++useless_comparison # useless comparison; comparing identical expressions
++with_statement # with statement hides undeclared variables; use temporary variable instead
++trailing_comma_in_array # extra comma is not recommended in array initializers
++assign_to_function_call # assignment to a function call
++parseint_missing_radix # parseInt missing radix parameter
+
+
+### Output format
+# Customize the format of the error message.
+# __FILE__ indicates current file path
+# __FILENAME__ indicates current file name
+# __LINE__ indicates current line
+# __ERROR__ indicates error message
+#
+# Visual Studio syntax (default):
++output-format __FILE__(__LINE__): __ERROR__
+# Alternative syntax:
+#+output-format __FILE__:__LINE__: __ERROR__
+
+
+### Context
+# Show the in-line position of the error.
+# Use "+context" to display or "-context" to suppress.
+#
++context
+
+
+### Semicolons
+# By default, assignments of an anonymous function to a variable or
+# property (such as a function prototype) must be followed by a semicolon.
+#
++lambda_assign_requires_semicolon
+
+
+### Control Comments
+# Both JavaScript Lint and the JScript interpreter confuse each other with the syntax for
+# the /*@keyword@*/ control comments and JScript conditional comments. (The latter is
+# enabled in JScript with @cc_on@). The /*jsl:keyword*/ syntax is preferred for this reason,
+# although legacy control comments are enabled by default for backward compatibility.
+#
++legacy_control_comments
+
+
+### JScript Function Extensions
+# JScript allows member functions to be defined like this:
+# function MyObj() { /*constructor*/ }
+# function MyObj.prototype.go() { /*member function*/ }
+#
+# It also allows events to be attached like this:
+# function window::onload() { /*init page*/ }
+#
+# This is a Microsoft-only JavaScript extension. Enable this setting to allow them.
+#
+-jscript_function_extensions
+
+
+### Defining identifiers
+# By default, "option explicit" is enabled on a per-file basis.
+# To enable this for all files, use "+always_use_option_explicit"
+#-always_use_option_explicit
++always_use_option_explicit
+
+# Define certain identifiers of which the lint is not aware.
+# (Use this in conjunction with the "undeclared identifier" warning.)
+#
+# Common uses for webpages might be:
++define window
++define document
++define alert
++define $
++define jQuery
++define IPA_DOMAIN
++define IPA_REALM
++define IPA
+
+### Files
+# Specify which files to lint
+# Use "+recurse" to enable recursion (disabled by default).
+# To add a set of files, use "+process FileName", "+process Folder\Path\*.js",
+# or "+process Folder\Path\*.htm".
+#
++process ffconfig.js
++process ffconfig_page.js \ No newline at end of file
diff --git a/install/html/ssbrowser.html b/install/html/ssbrowser.html
index f77402aa3..285b1d123 100644
--- a/install/html/ssbrowser.html
+++ b/install/html/ssbrowser.html
@@ -4,10 +4,22 @@
<meta charset="utf-8">
<title>IPA: Identity Policy Audit</title>
- <script type="text/javascript" src="../ui/jquery.js"></script>
<link rel="stylesheet" type="text/css" href="../ui/jquery-ui.css" />
<link rel="stylesheet" type="text/css" href="../ui/ipa.css" />
<link rel="stylesheet" type="text/css" href="ipa_error.css" />
+
+ <script type="text/javascript" src="../ui/jquery.js"></script>
+ <script type="text/javascript" src="krb.js"></script>
+ <script type="text/javascript">
+ $(document).ready(function() {
+ var domain = '.' + (IPA_DOMAIN || 'example.com');
+ $('.example-domain').text(domain);
+
+ if ($.browser.mozilla) {
+ $("#configurefirefox").show();
+ }
+ });
+ </script>
</head>
<body class="info-page">
@@ -50,13 +62,20 @@
<ul><li> 1. In the address bar of Firefox, type <tt>about:config</tt> to display the list of current configuration options.</li>
<li> 2. In the Filter field, type <tt>negotiate</tt> to restrict the list of options. </li>
<li> 3. Double-click the <tt>network.negotiate-auth.trusted-uris</tt> entry to display the Enter string value dialog box. </li>
- <li> 4. Enter the name of the domain against which you want to authenticate, for example, <tt>.example.com.</tt> </li>
- <li> 5. Repeat the above procedure for the <tt>network.negotiate-auth.delegation-uris</tt> entry, using the same domain. </li>
+ <li> 4. Enter the name of the domain against which you want to authenticate, for example, <tt class="example-domain">.example.com.</tt> </li>
+ <li> 5. Optional: Repeat the above procedure for the <tt>network.negotiate-auth.delegation-uris</tt> entry, using the same domain. </li>
<br>
<li><strong> You are all set. </strong></li>
</ul>
-
+ <h3><a name="oldfirefox"></a> Automatic Configuration of older versions</h3>
+ <p>You can configure older versions of Firefox (up to version 14) using signed code. Use <a href="browserconfig.html">Firefox configuration page</a> for newer versions.</p>
+ <ul>
+ <li>1. Import <a href="ca.crt">CA certificate</a>. Make sure you checked all three checkboxes.</li>
+ <li>2. Click on "Configure Browser" button below.</li>
+ <li id="configurefirefox" style="display:none"><object data="jar:/ipa/errors/configure.jar!/preferences.html"
+ type="text/html" class="browser-config"></object></li>
+ </ul>
</div>
</div>
diff --git a/install/html/unauthorized.html b/install/html/unauthorized.html
index 00d795077..5bff2d28b 100644
--- a/install/html/unauthorized.html
+++ b/install/html/unauthorized.html
@@ -9,16 +9,6 @@
<link rel="stylesheet" type="text/css" href="../ui/jquery-ui.css" />
<link rel="stylesheet" type="text/css" href="../ui/ipa.css" />
<link rel="stylesheet" type="text/css" href="ipa_error.css" />
-
- <script type="text/javascript">
- $(document).ready(function() {
- $("#import-cert-auth-link").click(function() {
- $("#first-time").css("display", "none");
- $("#next-link").css("display", "block");
- return true;
- });
- });
- </script>
</head>
<body class="info-page">
@@ -32,24 +22,19 @@
<div class="textblockkrb">
<h1>Unable to verify your Kerberos credentials</h1>
<p>
- Please make sure that you have valid Kerberos tickets (obtainable via <b>kinit</b>),
+ Please make sure that you have valid Kerberos tickets (obtainable via <strong>kinit</strong>),
and that you have configured your browser correctly.
</p>
- <div id="first-time">
- <b>If this is your first time:</b>
- <ul>
- <li><a id="import-cert-auth-link" href="/ipa/errors/ca.crt">Click here to
- Import the IPA Certificate Authority.</a></li>
- <li>Make sure you select <b>all three</b> checkboxes.</li>
- <li>Click the <b>OK</b> Button.</li>
- </ul>
- </div>
+ <h2> Browser configuration</h2>
- <div id="next-link" style="display: none;">
- <p><a href="browserconfig.html">Click here to continue.</a></p>
+ <div id="first-time">
+ <p>
+ If this is your first time, please <strong>configure your browser</strong>.
+ Use <a href="browserconfig.html">Firefox configuration page</a> for Firefox
+ or <a href="ssbrowser.html">manual configuration page</a> for other browsers.
+ </p>
</div>
-
</div>
</div>
diff --git a/install/ui/ipa.css b/install/ui/ipa.css
index c8a220e78..bc971dce4 100644
--- a/install/ui/ipa.css
+++ b/install/ui/ipa.css
@@ -4,6 +4,7 @@
* Adam Young <ayoung@redhat.com>
* Endi Sukma Dewata <edewata@redhat.com>
* Kyle Baker <kybaker@redhat.com>
+* Petr Vobornik <pvoborni@redhat.com>
*
* Copyright (C) 2010 Red Hat
*/
@@ -846,7 +847,6 @@ ul#viewtype li a {
h1 {
font-family: "Overpass Bold","Liberation Sans", Arial, sans-serif;
font-size: 1.5em;
- font-weight: normal;
color: #555555;
text-transform: uppercase;
text-shadow: 1px 1px 0 #FFFFFF;
@@ -856,7 +856,6 @@ h1 {
h2 {
font-family: "Overpass Bold","Liberation Sans", Arial, sans-serif;
font-size: 1.5em;
- font-weight: normal;
color: #333333;
text-transform: uppercase;
margin-left: 1em;
@@ -1351,9 +1350,23 @@ body.info-page {
background: url(images/static-background.png) repeat-x scroll left top #EDEDED;
}
+.info-page p {
+ margin: 0.5em 0em 1em 0em;
+}
+
+.info-page h1, .info-page h2, .info-page h3 {
+ font-family: "Overpass", "Liberation Sans", Arial, sans-serif;
+ margin-left: 0px;
+ font-weight: normal;
+ color: #555555;
+}
+
.info-page h1 {
- color: #333333;
- margin-bottom: 1.5em;
+ font-size: 2em;
+}
+
+.info-page h2 {
+ margin-top: 2em;
}
.info-page .container_1 {
@@ -1398,6 +1411,22 @@ body.info-page {
margin-right: 0px;
}
+/* Browser config page */
+
+
+.info-page .browser-config h1,
+.info-page .browser-config h2,
+.info-page .browser-config h3,
+.info-page .browser-config.textblockkrb {
+ text-align: center;
+}
+
+.browser-config h2 {
+ margin-left: 0em;
+ margin-top: 2em;
+
+}
+
/* ---- HBAC Test ---- */
.hbac-test-header {
diff --git a/install/ui/ipa.js b/install/ui/ipa.js
index bd25aeae2..45195bc49 100644
--- a/install/ui/ipa.js
+++ b/install/ui/ipa.js
@@ -1670,9 +1670,11 @@ IPA.unauthorized_dialog = function(spec) {
that.krb_auth_msg = spec.krb_auth_msg || IPA.get_message('login.krb_auth_msg',
" To login with Kerberos, please make sure you" +
" have valid tickets (obtainable via kinit) and " +
- "<a href='/ipa/config/unauthorized.html'>configured</a>" +
+ "<a href='http://${host}/ipa/config/unauthorized.html'>configured</a>" +
" the browser correctly, then click Login. ");
+ that.krb_auth_msg = that.krb_auth_msg.replace('${host}', window.location.hostname);
+
that.form_auth_failed = "<p><strong>Please re-enter your username or password</strong></p>" +
"<p>The password or username you entered is incorrect. " +
"Please try again (make sure your caps lock is off).</p>" +
diff --git a/install/ui/test/data/ipa_init.json b/install/ui/test/data/ipa_init.json
index 0d94d9b02..8a1c9a1b1 100644
--- a/install/ui/test/data/ipa_init.json
+++ b/install/ui/test/data/ipa_init.json
@@ -134,7 +134,7 @@
"login": {
"form_auth": "To login with username and password, enter them in the fields below then click Login.",
"header": "Logged In As",
- "krb_auth_msg": "To login with Kerberos, please make sure you have valid tickets (obtainable via kinit) and <a href='/ipa/config/unauthorized.html'>configured</a> the browser correctly, then click Login.",
+ "krb_auth_msg": "To login with Kerberos, please make sure you have valid tickets (obtainable via kinit) and <a href='http://${host]/ipa/config/unauthorized.html'>configured</a> the browser correctly, then click Login.",
"login": "Login",
"logout": "Logout",
"logout_error": "Logout error",
diff --git a/ipalib/plugins/internal.py b/ipalib/plugins/internal.py
index 4dc409cd3..1e21e8116 100644
--- a/ipalib/plugins/internal.py
+++ b/ipalib/plugins/internal.py
@@ -269,7 +269,7 @@ class i18n_messages(Command):
"login": {
"form_auth": _("To login with username and password, enter them in the fields below then click Login."),
"header": _("Logged In As"),
- "krb_auth_msg": _("To login with Kerberos, please make sure you have valid tickets (obtainable via kinit) and <a href='/ipa/config/unauthorized.html'>configured</a> the browser correctly, then click Login."),
+ "krb_auth_msg": _("To login with Kerberos, please make sure you have valid tickets (obtainable via kinit) and <a href='http://${host]/ipa/config/unauthorized.html'>configured</a> the browser correctly, then click Login."),
"login": _("Login"),
"logout": _("Logout"),
"logout_error": _("Logout error"),