Module: check_mk
Branch: master
Commit: 1e289d68260ba492b8d60c4c6e06f232d3cbb311
URL:
http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=1e289d68260ba4…
Author: Mathias Kettner <mk(a)mathias-kettner.de>
Date: Fri Nov 12 15:03:02 2010 +0100
Intermediate state of webconf
---
web/htdocs/.f12 | 4 ++-
web/htdocs/webconf.py | 63 ++++++++++++++++++++++++++++++++++++++----
web/plugins/pages/webconf.py | 3 +-
3 files changed, 62 insertions(+), 8 deletions(-)
diff --git a/web/htdocs/.f12 b/web/htdocs/.f12
index 6c63611..0040107 100644
--- a/web/htdocs/.f12
+++ b/web/htdocs/.f12
@@ -1 +1,3 @@
-sudo cp -v *.py /omd/versions/default/share/check_mk/web/htdocs
+# sudo cp -v *.py /omd/versions/default/share/check_mk/web/htdocs
+sudo cp -v webconf.py ~webconf/local/share/check_mk/web/htdocs
+sudo omd restart webconf apache
diff --git a/web/htdocs/webconf.py b/web/htdocs/webconf.py
index 00a2cea..d7eaeae 100644
--- a/web/htdocs/webconf.py
+++ b/web/htdocs/webconf.py
@@ -14,23 +14,30 @@ config.declare_permission("use_webconf",
"Only with this permission, users are allowed to use Check_MK web configuration
GUI.",
[ "admin", ])
-def index(h):
- global html
- html = h
+
+def check_filename():
filename = html.var("filename")
if not filename:
raise MKGeneralException("You called this page without a filename!")
+
+ # Get alias (title) for filename
title = None
for fn, t, roles in config.config_files:
if fn == filename:
title = t
break
-
if not title:
raise MKGeneralException("No config file <tt>%s</tt> is declared
in <tt>multisite.mk</tt>" % filename)
if not config.may("use_webconf") or config.role not in roles:
raise MKAuthException("You are not allowed to edit this configuration
file!")
+
+ return filename, title
+
+def page_index(h):
+ global html
+ html = h
+ filename, title = check_filename()
html.header("Check_MK Configuration: " + title)
hosts = read_configuration_file(filename)
@@ -39,15 +46,15 @@ def index(h):
html.write("<tr><th>Hostname</th><th>IP
Address</th><th>Tags</th></tr>\n")
odd = "even"
for hostname, ipaddress, tags in hosts:
+ edit_url = "webconf_edithost.py?filename=%s&host=%s" % (filename,
hostname)
odd = odd == "odd" and "even" or "odd"
html.write("<tr class=\"data
%s0\"><td>%s</td>" % (odd, hostname))
html.write("<td>%s</td>" % (ipaddress and ipaddress or
"(DNS)"))
html.write("<td>%s</td>" % ", ".join(tags))
+ html.write('<td><a class=button
href="%s">edit</a></td>' % edit_url)
html.write("</tr>\n")
html.write("</table>\n")
-
- write_configuration_file(filename, hosts)
html.footer()
@@ -71,6 +78,13 @@ def read_configuration_file(filename):
else:
return []
+def lookup_host(hosts, hostname):
+ for hn, ipaddress, tags in hosts:
+ if hn == hostname:
+ return ipaddress, tags
+ raise MKGeneralException("Host %s not configured in this file" % hostname)
+
+
def write_configuration_file(filename, hosts):
all_hosts = []
ipaddresses = {}
@@ -89,3 +103,40 @@ def write_configuration_file(filename, hosts):
out.write(pprint.pformat(ipaddresses))
out.write(")")
out.write("\n")
+
+def page_edithost(h):
+ global html
+ html = h
+ filename, title = check_filename()
+ hosts = read_configuration_file(filename)
+
+ hostname = html.var("host")
+ if not hostname:
+ MKGeneralException("Host %s does not exist." % hostname)
+ html.header("Edit host %s" % hostname)
+
+ # Form submitted
+ if html.var("save") and html.check_transaction():
+ ipaddress = html.var("ipaddress")
+ if not ipaddress:
+ ipaddress = None
+ hosts = change_host(hosts, hostname, ipaddress)
+ write_configuration_file(filename, hosts)
+ html.write("Saved.")
+
+ ipaddress, tags = lookup_host(hosts, hostname)
+ html.begin_form("edithost")
+ html.write("<table class=form>\n")
+ html.write("<tr><td class=legend>Hostname</td><td
class=content>%s</td></tr>" % hostname)
+ html.write("<tr><td class=legend>IP-Address<br>"
+ "<i>Leave empty for automatic<br>"
+ "IP address lookup via DNS</td><td class=content>")
+ html.text_input("ipaddress", ipaddress)
+ html.write("</td>\n")
+ html.write('<tr><td class="legend button" colspan=2>')
+ html.button("save", "Save", "submit")
+ html.write("</td></tr>\n")
+ html.write("</table>\n")
+ html.hidden_fields()
+ html.end_form()
+ html.footer()
diff --git a/web/plugins/pages/webconf.py b/web/plugins/pages/webconf.py
index 34cd557..3e03009 100644
--- a/web/plugins/pages/webconf.py
+++ b/web/plugins/pages/webconf.py
@@ -1,5 +1,6 @@
import webconf
pagehandlers.update({
- "webconf" : webconf.index,
+ "webconf" : webconf.page_index,
+ "webconf_edithost" : webconf.page_edithost,
})