Hey, all.
I have a perl script which generates the html listed below. I cleaned it
up a bit since the perl CGI module creates some really ugly html code.
I've looked at this thing 8 ways to Sunday, but I can't see anything wrong.
When I hit the "Add" button, it immediately executes the action of the form
skipping the validate_form function completely.
I've tried the script section towards the top of the html as well as
just before the </body></html> without success.
I'm betting it's a simple mistake, but for the life of me, I can't find
it. Can someone tell me what I've screwed up?
Thanks for your time.
Doug O'Leary
HTML/javascript code:
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US">
<head><title>Add Nagios monitored host</title>
<link rev="made" href="mailto:dkoleary%40olearycomputers.com"></head>
<body>
<h1>Add Nagios Monitored Host</h1>
<p>Fields in <font color="red">red</font> are required</p>
<form method="post" action="/cgi-bin/run_this_command"
onsubmit="return validate_form(this)">
<table><tbody>
<tr>
<td><button type="submit" onclick="return validate_form(this)">
<big>Add</big></button></td>
<td><button
onclick="location.href='/nagios/cgi-bin/nadmin?func=display_hosts';
return false;">
<big>Reset</big></button></td>
</tr>
<tr>
<td> </td> <td> </td> <td> </td></tr>
<tr>
<th align="left">Field</th>
<th align="left">Value</th>
<th align="left">Description</th>
</tr>
<tr bgcolor="silver">
<td><font color="red">host_name</font></td>
<td><input name="host_name" length="20" type="text"></td>
<td>Host name</td>
</tr>
<tr>
<td><font color="red">alias</font></td>
<td><input name="host_name" length="20" type="text"></td>
<td>Nagios alias</td>
</tr>
<tr bgcolor="silver">
<td><font color="red">address</font></td>
<td><input name="host_name" length="20" type="text"></td>
<td>IP address</td>
</tr>
<tr>
<td>parents</td>
<td><input name="parents" size="20" value="DEFAULT" type="text"></td>
<td>Hosts between Nagios server and host_name</td>
</tr>
<tr bgcolor="silver">
<td>check_command</td>
<td><select name="check_command">
<option selected="selected" value="" default="">DEFAULT</option>
<option value="check-host-alive">check-host-alive </option>
<option value="check_dns">check_dns </option>
<option value="check_ftp">check_ftp </option>
<option value="check_hpjd">check_hpjd </option>
<option value="check_http">check_http </option>
<option value="check_http_path">check_http_path </option>
<option value="check_http_port">check_http_port </option>
<option value="check_imap">check_imap </option>
<option value="check_local_disk">check_local_disk </option>
<option value="check_local_load">check_local_load </option>
<option value="check_local_procs">check_local_procs </option>
<option value="check_local_users">check_local_users </option>
<option value="check_nntp">check_nntp </option>
<option value="check_nt_clientversion">check_nt_clientvers ion </option>
<option value="check_nt_cpuload">check_nt_cpuload </option>
<option value="check_nt_disk">check_nt_disk </option>
<option value="check_nt_fileage">check_nt_fileage </option>
<option value="check_nt_memuse">check_nt_memuse </option>
<option value="check_nt_pagingfile">check_nt_pagingfile </option>
<option value="check_nt_process">check_nt_process </option>
<option value="check_nt_service">check_nt_service </option>
<option value="check_nt_service_nav">check_nt_service_nav </option>
<option value="check_nt_uptime">check_nt_uptime </option>
<option value="check_nwstat_load15">check_nwstat_load15 </option>
<option value="check_nwstat_vkf">check_nwstat_vkf </option>
<option value="check_nwstat_vpf">check_nwstat_vpf </option>
<option value="check_ping">check_ping </option>
<option value="check_pop">check_pop </option>
<option value="check_smtp">check_smtp </option>
<option value="check_ssh">check_ssh </option>
<option value="check_tcp">check_tcp </option>
<option value="check_telnet">check_telnet </option>
<option value="check_udp">check_udp </option>
<option value="host-notify-by-email">host-notify-by-email </option>
<option value="host-notify-by-epager">host-notify-by-epager </option>
<option value="notify-by-email">notify-by-email </option>
<option value="notify-by-epager">notify-by-epager </option>
<option value="process-host-perfdata">process-host-perfdata </option>
<option value="process-service-perfdata">
process-service-perfdata</option>
</select></td>
<td>Command used to verify host up/down.</td>
</tr>
<tr>
<td><font color="red">max_check_attempts</font></td>
<td><input name="max_check_attempts" value="10" type="text"></td>
<td>Max times to check host</td>
</tr>
<tr bgcolor="silver">
<td>checks_enabled</td>
<td><select name="checks_enabled">
<option selected="selected" value="DEFAULT">DEFAULT</option>
<option value="0">0</option>
<option value="1">1 </option>
</select></td>
<td>Whether or checks are enabled [0/1]</td>
</tr>
<tr>
<td>event_handler</td>
<td><select name="event_handler">
<option selected="selected" value="" default="">DEFAULT</option>
<option value="check-host-alive">check-host-alive </option>
<option value="check_dns">check_dns </option>
<option value="check_ftp">check_ftp</option>
<option value="check_hpjd">check_hpjd</option>
<option value="check_http">check_http</option></option>
<option value="check_http_port">check_http_port </option>
<option value="check_imap">check_imap </option>
<option value="check_local_disk">check_local_disk </option>
<option value="check_local_load">check_local_load </option>
<option value="check_local_procs">check_local_procs </option>
<option value="check_local_users">check_local_users </option>
<option value="check_nntp">check_nntp </option>
<option value="check_nt_clientversion">check_nt_clientvers ion </option>
<option value="check_nt_cpuload">check_nt_cpuload </option>
<option value="check_nt_disk">check_nt_disk </option>
<option value="check_nt_fileage">check_nt_fileage </option>
<option value="check_nt_memuse">check_nt_memuse </option>
<option value="check_nt_pagingfile">check_nt_pagingfile </option>
<option value="check_nt_process">check_nt_process </option>
<option value="check_nt_service">check_nt_service </option>
<option value="check_nt_service_nav">check_nt_service_nav </option>
<option value="check_nt_uptime">check_nt_uptime </option>
<option value="check_nwstat_load15">check_nwstat_load15 </option>
<option value="check_nwstat_vkf">check_nwstat_vkf </option>
<option value="check_nwstat_vpf">check_nwstat_vpf </option>
<option value="check_ping">check_ping </option>
<option value="check_pop">check_pop </option>
<option value="check_smtp">check_smtp </option>
<option value="check_ssh">check_ssh </option>
<option value="check_tcp">check_tcp </option>
<option value="check_telnet">check_telnet </option>
<option value="check_udp">check_udp </option>
<option value="host-notify-by-email">host-notify-by-email </option>
<option value="host-notify-by-epager">host-notify-by-epager </option>
<option value="notify-by-email">notify-by-email </option>
<option value="notify-by-epager">notify-by-epager </option>
<option value="process-host-perfdata">process-host-perfdata </option>
<option value="process-service-perfdata">process-service-perfdata</option>
</select></td>
<td>Command to run when state changes.</td>
</tr>
<tr bgcolor="silver">
<td>event_handler_enabled</td>
<td><select name="event_handler_enabled">
<option selected="selected" value="DEFAULT">DEFAULT </option>
<option value="0">0 </option>
<option value="1">1</option>
</select></td>
<td>Whether or not event handlers work. [0/1]</td>
</tr>
<tr>
<td>low_flap_threshold</td>
<td><input name="low_flap_threshold"
size="20" value="DEFAULT" type="text"></td>
<td>IDs the low state change threshold for flap detection</td>
</tr>
<tr bgcolor="silver">
<td>high_flap_threshold</td>
<td><input name="high_flap_threshold" size="20"
value="DEFAULT" type="text"></td>
<td>IDS the high state change threshold for flap detection. </td>
</tr>
<tr>
<td>flap_detection_enabled</td>
<td><select name="flap_detection_enabled">
<option selected="selected" value="DEFAULT">DEFAULT </option>
<option value="0">0 </option>
<option value="1">1</option>
</select></td>
<td>IDs if flap detection is functional. [0/1]</td>
</tr>
<tr bgcolor="silver">
<td>process_perf_data</td>
<td><select name="process_perf_data">
<option selected="selected" value="DEFAULT">DEFAULT </option>
<option value="0">0 </option>
<option value="1">1 </option>
</select></td>
<td>Whether or not to process perf data. [0/1]</td>
</tr>
<tr>
<td>retain_status_information</td>
<td><select name="retain_status_information">
<option selected="selected" value="DEFAULT">DEFAULT </option>
<option value="0">0 </option>
<option value="1">1</option>
</select></td>
<td>Whether or not to retain state information [0/1]</td>
</tr>
<tr bgcolor="silver">
<td>retain_nonstatus_information</td>
<td><select name="retain_nonstatus_information">
<option selected="selected" value="DEFAULT">DEFAULT </option>
<option value="0">0 </option>
<option value="1">1</option>
</select></td>
<td>Whether or not to retain nonstatus information. [0/1]</td>
</tr>
<tr>
<td><font color="red">notification_interval</font></td>
<td><input name="notification_interval" value="120" type="text"></td>
<td>Wait specified # of time units before renotification. </td>
</tr>
<tr bgcolor="silver">
<td><font color="red">notification_period</font></td>
<td><select name="notification_period">
<option value="24x7">24x7 </option>
<option selected="selected" value="none">none </option>
<option value="nonworkhours">nonworkhours </option>
<option value="workhours">workhours</option>
</select></td>
<td>IDs timeperiod during which notifications can occur.</td>
</tr>
<tr>
<td><font color="red">notification_options</font></td>
<td><input name="notification_options" value="d,u,r" type="text"></td>
<td>IDs upon which state notificatons should be sent. [d,u,r]</td>
</tr>
<tr bgcolor="silver">
<td>notifications_enabled</td>
<td><select name="notifications_enabled">
<option selected="selected" value="DEFAULT">DEFAULT </option>
<option value="0">0 </option>
<option value="1">1</option>
</select></td>
<td>Whether or not notifications are enabled. [0/1] </td>
</tr>
<tr>
<td>stalking_options</td>
<td><input name="stalking_options" size="20"
value="DEFAULT" type="text"></td>
<td>IDS for which host states stalking is enabled [o,d,u]</td>
</tr>
<tr bgcolor="silver">
<td>register</td>
<td><select name="register">
<option selected="selected" value="DEFAULT">DEFAULT </option>
<option value="0">0 </option>
<option value="1">1</option>
</select></td>
<td>IDs if host_name should be registered. Defaults to 1</td>
</tr>
</tbody>
</table></form>
<script>
function isNotEmpty(elem)
{ var str = elem.value;
if (str == null || str.length == 0)
{ alert("Please fill in hostname");
return false;
}
return true;
}
function validate_form(form)
{ if (isNotEmpty(form.host_name)
{ if (isNotEmpty(form.alias)
{ if (isNotEmpty(form.address)
{ return true;
}
}
}
return false;
}
function report_error(msg, url, line)
{ alert("Msg: " + msg);
alert("Line: " + line);
}
window.onerror = report_error;
</script>
</body></html>