Module: check_mk
Branch: master
Commit: 9b143f63ecfa8ab8b47435d39ab68bdd8a5583e8
URL:
http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=9b143f63ecfa8a…
Author: Lars Michelsen <lm(a)mathias-kettner.de>
Date: Fri Jan 20 11:29:47 2012 +0100
Improved wato replication
* Replication: Can now handle replication sites which use the form based auth
* Replication: Added option to ignore problems with the ssl certificates used in ssl
secured replications
---
ChangeLog | 3 +++
web/htdocs/login.py | 1 +
web/htdocs/wato.py | 17 ++++++++++++++---
3 files changed, 18 insertions(+), 3 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index 4dcb6e0..3f17220 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -59,6 +59,9 @@
* Snapshot/Factory Reset is possible even with a broken config
* Added error messages to user edit dialog to prevent notification problems
caused by incomplete configuration
+ * Replication: Can now handle replication sites which use the form based auth
+ * Replication: Added option to ignore problems with the ssl certificates
+ used in ssl secured replications
* FIX: Fixed missing folders in "move to" dropdown fields
* FIX: Fixed "move to target folders" after CSV import
* FIX: Fixed problem with duplicate extra_buttons when using the i18n of multiisite
diff --git a/web/htdocs/login.py b/web/htdocs/login.py
index 0f74f53..774418a 100644
--- a/web/htdocs/login.py
+++ b/web/htdocs/login.py
@@ -146,6 +146,7 @@ def do_login():
# handle the sent login form
err = None
if html.var('_login'):
+ html.write('xxxxx')
try:
username = html.var('_username', '')
if username == '':
diff --git a/web/htdocs/wato.py b/web/htdocs/wato.py
index c7a2c33..86f835b 100644
--- a/web/htdocs/wato.py
+++ b/web/htdocs/wato.py
@@ -5486,6 +5486,8 @@ def mode_edit_site(phase):
# Persist
new_site["persist"] = html.get_checkbox("persist")
+ # Handle the insecure replication flag
+ new_site["insecure"] = html.get_checkbox("insecure")
# Status host
sh_site = html.var("sh_site")
@@ -5641,7 +5643,7 @@ def mode_edit_site(phase):
# Persistent connections
html.write("<tr><td class=legend>")
- html.write(_("<i>If you enable persistent connections then Multisite will
try to keep open "
+ html.write(_("Persistent Connection<br><i>If you enable persistent
connections then Multisite will try to keep open "
"the connection to the remote sites. This brings a great speed up
in high-latency "
"situations but locks a number of threads in the Livestatus module
of the target site. "))
html.write("</td><td class=content>")
@@ -5711,6 +5713,10 @@ def mode_edit_site(phase):
"that URL will be fetched by the Apache server of the local "
"site itself, whilst the URL-Prefix is used by your local
Browser.")))
html.text_input("multisiteurl", site.get("multisiteurl",
""), size=60)
+ html.checkbox("insecure", site.get("insecure", False))
+ html.write(_('Ignore SSL certificate errors<br>'
+ '<i>This might be needed to make the synchronization accept
problems with '
+ 'SSL certificates when using an SSL secured
connection.</i>'))
html.write("</td></tr>")
html.write("<tr><td colspan=2 class=buttons>")
html.button("save", _("Save"))
@@ -5785,7 +5791,10 @@ def do_site_login(site_id, name, password):
raise MKUserError("_passwd",
_("Please specify your password."))
- o = open_url(site["multisiteurl"] + "automation_login.py", name,
password)
+ # Trying basic auth AND form based auth to ensure the site login works
+ o = open_url(site["multisiteurl"] + 'automation_login.py?_login=1'
+
'&_username=%s&_password=%s&_origtarget=automation_login.py' %
+ (name, password), name, password)
response = o.read()
try:
return eval(response)
@@ -6086,7 +6095,9 @@ def push_snapshot_to_site(site, do_restart):
# you know a better method for uploading, without the use of external
# programs...
# -s -S: Disable progress meter but enable error messages
- response_text = os.popen("curl -s -S -F snapshot=@%s '%s'" %
(sync_snapshot_file, url)).read()
+ insecure = site.get('insecure', False) and ' --insecure' or
''
+ response_text = os.popen("curl -s -S%s -F snapshot=@%s '%s'
2>&1" %
+ (insecure, sync_snapshot_file, url)).read()
try:
response = eval(response_text)
return response