goldstift
18th January 2008, 01:17
Hi there,
I just wrote a little plugin that does a "sudo cat /var/log/messages" and display the result in a tab in server status dialog.
First I had to create the php script in "/home/admispconfig/ispconfig/lib/plugins/check_messagelog.plugin.php":
<?php
/*
Copyright (c) 2008 Alexander Heusingfeld, http://www.goldstift.de
*/
################################################## ###########
#
# ISPConfig Plugin
# Version 1.0
#
# Plugin Name: check_messagelog
# Version: 1.0
# Datum: 17.01.2008
#
################################################## ###########
if(CONFIG_LOADED != 1) die('Direct access not permitted.');
class check_messagelog_plugin {
function show ($doc_id, $doctype_id, $groupid = 0)
{
global $go_info, $go_api;
if($go_info["server"]["os"] != "linux") $go_api->errorMessage("Dieses Plugin ist nur für Linux verfügbar.");
$buffer = '';
// for this to work you need to add the following to "visudo" at [sudoers]
$fd = popen ("sudo cat /var/log/messages", "r");
if($fd == false){
$buffer = 'ERROR: For this to work you need to add the following line to "visudo" at the [sudoers] section
admispconfig ALL=(ALL) NOPASSWD: /bin/cat /var/log/messages
For additional hints on visudo and ispconfig look here: http://www.howtoforge.com/forums/showpost.php?p=102225&postcount=6';
} else {
while (!feof($fd)) {
$buffer .= fgets($fd, 4096);
}
}
pclose($fd);
$html_out .= '<div align="center"><table width="90%" border="0" cellspacing="1" cellpadding="4" bgcolor="#CCCCCC">
<tr>
<td width="100%" bgcolor="#FFFFFF"><h3>'.$go_api->lng('var_log_messages').':</h3></td>
</tr><tr>
<td width="100%" bgcolor="#FFFFFF"><pre>'.$buffer.'</pre></td>
</tr></table></div>';
return $html_out;
}
function insert($doc_id, $doctype_id, $groupid = 0) { return true; }
function update($doc_id, $doctype_id, $groupid = 0) { return true; }
function delete($doc_id, $doctype_id, $groupid = 0) { return true; }
function undelete($doc_id, $doctype_id, $groupid = 0) { return true; }
}
?>
Then I added the new tab to the configuration in the ispconfig mysql database table:
UPDATE `doctype` SET `doctype_def` = 'O:3:"doc":28:{s:6:"userid";s:1:"1";s:7:"groupid";s:1:"1";s:14:"group_required";s:1:"0";s:5:"modul";s:3:"sys";s:4:"tree";s:1:"0";s:7:"buttons";s:1:"0";s:4:"name";s:12:"serverstatus";s:4:"type";s:9:"text/html";s:13:"template_type";s:4:"file";s:13:"template_path";N;s:12:"storage_type";s:2:"db";s:12:"storage_path";s:16:"isp_serverstatus";s:10:"form_width";s:3:"450";s:4:"deck";a:5:{i:0;O:4:"deck":5:{s:8:"elements";a:2:{i:0;O:11:"pluginField":13:{s:9:"css_class";N;s:7:"options";N;s:4:"name";s:12:"check_uptime";s:4:"type";s:11:"pluginField";s:5:"title";N;s:8:"language";s:2:"de";s:11:"description";N;s:6:"length";i:30;s:7:"visible";i:1;s:8:"required";i:1;s:14:"reg_expression";N;s:10:"reg_fehler";N;s:6:"search";N;}i:1;O:11:"pluginField":13:{s:9:"css_class";s:0:"";s:7:"options";N;s:4:"name";s:10:"check_disk";s:4:"type";s:11:"pluginField";s:5:"title";N;s:8:"language";s:2:"de";s:11:"description";N;s:6:"length";i:30;s:7:"visible";i:1;s:8:"required";i:1;s:14:"reg_expression";N;s:10:"reg_fehler";N;s:6:"search";N;}}s:5:"title";s:6:"Status";s:7:"visible";s:1:"1";s:9:"perm_read";s:1:"r";s:10:"perm_write";s:1:"r";}i:1;O:4:"deck":5:{s:8:"elements";a:1:{i:0;O:11:"pluginField":13:{s:9:"css_class";N;s:7:"options";N;s:4:"name";s:13:"check_meminfo";s:4:"type";s:11:"pluginField";s:5:"title";N;s:8:"language";s:2:"de";s:11:"description";N;s:6:"length";i:30;s:7:"visible";i:1;s:8:"required";i:1;s:14:"reg_expression";N;s:10:"reg_fehler";N;s:6:"search";N;}}s:5:"title";s:15:"Arbeitsspeicher";s:7:"visible";s:1:"1";s:9:"perm_read";s:1:"r";s:10:"perm_write";s:1:"r";}i:2;O:4:"deck":5:{s:8:"elements";a:1:{i:0;O:11:"pluginField":13:{s:9:"css_class";N;s:7:"options";N;s:4:"name";s:13:"check_cpuinfo";s:4:"type";s:11:"pluginField";s:5:"title";N;s:8:"language";s:2:"de";s:11:"description";N;s:6:"length";i:30;s:7:"visible";i:1;s:8:"required";i:1;s:14:"reg_expression";N;s:10:"reg_fehler";N;s:6:"search";N;}}s:5:"title";s:3:"CPU";s:7:"visible";s:1:"1";s:9:"perm_read";s:1:"r";s:10:"perm_write";s:1:"r";}i:3;O:4:"deck":5:{s:8:"elements";a:1:{i:0;O:11:"pluginField":13:{s:9:"css_class";s:0:"";s:7:"options";N;s:4:"name";s:14:"check_services";s:4:"type";s:11:"pluginField";s:5:"title";N;s:8:"language";s:2:"de";s:11:"description";N;s:6:"length";i:30;s:7:"visible";i:1;s:8:"required";i:1;s:14:"reg_expression";N;s:10:"reg_fehler";N;s:6:"search";N;}}s:5:"title";s:7:"Dienste";s:7:"visible";s:1:"1";s:9:"perm_read";s:1:"r";s:10:"perm_write";s:1:"r";}i:4;O:4:"deck":5:{s:8:"elements";a:1:{i:0;O:11:"pluginField":13:{s:9:"css_class";s:0:"";s:7:"options";N;s:4:"name";s:16:"check_messagelog";s:4:"type";s:11:"pluginField";s:5:"title";N;s:8:"language";s:2:"de";s:11:"description";N;s:6:"length";i:30;s:7:"visible";i:1;s:8:"required";i:1;s:14:"reg_expression";N;s:10:"reg_fehler";N;s:6:"search";N;}}s:5:"title";s:10:"MessageLog";s:7:"visible";s:1:"1";s:9:"perm_read";s:1:"r";s:10:"perm_write";s:1:"r";}}s:5:"title";s:17:"ISP Server Status";s:8:"keywords";N;s:11:"description";s:0:"";s:4:"path";N;s:4:"icon";s:10:"status.gif";s:5:"cache";s:1:"0";s:8:"permtype";N;s:7:"version";d:1.100000000000000088817841970012523233890533447 265625;s:11:"event_class";s:0:"";s:12:"event_insert";s:0:"";s:12:"event_update";s:0:"";s:12:"event_delete";s:0:"";s:10:"event_show";N;s:11:"wysiwyg_lib";i:0;}' WHERE doctype_id=1021
For this to work I needed to modify the sudo-config. Type "visudo" and add the following at the sudoers section:
admispconfig ALL=(ALL) NOPASSWD: /bin/cat /var/log/messages
For additional hints on visudo and ispconfig look here: http://www.howtoforge.com/forums/showpost.php?p=102225&postcount=6
That's it, a preformatted output of your /var/log/messages.
BTW: I afterwards also changed ISPConfig configuration to log to the SYSTEM.
@Falko and Till: is there any easy way to edit the serialized objects in the "doctype" table?? The way I added my new tab was really weird!!!
Greets,
Alex
I just wrote a little plugin that does a "sudo cat /var/log/messages" and display the result in a tab in server status dialog.
First I had to create the php script in "/home/admispconfig/ispconfig/lib/plugins/check_messagelog.plugin.php":
<?php
/*
Copyright (c) 2008 Alexander Heusingfeld, http://www.goldstift.de
*/
################################################## ###########
#
# ISPConfig Plugin
# Version 1.0
#
# Plugin Name: check_messagelog
# Version: 1.0
# Datum: 17.01.2008
#
################################################## ###########
if(CONFIG_LOADED != 1) die('Direct access not permitted.');
class check_messagelog_plugin {
function show ($doc_id, $doctype_id, $groupid = 0)
{
global $go_info, $go_api;
if($go_info["server"]["os"] != "linux") $go_api->errorMessage("Dieses Plugin ist nur für Linux verfügbar.");
$buffer = '';
// for this to work you need to add the following to "visudo" at [sudoers]
$fd = popen ("sudo cat /var/log/messages", "r");
if($fd == false){
$buffer = 'ERROR: For this to work you need to add the following line to "visudo" at the [sudoers] section
admispconfig ALL=(ALL) NOPASSWD: /bin/cat /var/log/messages
For additional hints on visudo and ispconfig look here: http://www.howtoforge.com/forums/showpost.php?p=102225&postcount=6';
} else {
while (!feof($fd)) {
$buffer .= fgets($fd, 4096);
}
}
pclose($fd);
$html_out .= '<div align="center"><table width="90%" border="0" cellspacing="1" cellpadding="4" bgcolor="#CCCCCC">
<tr>
<td width="100%" bgcolor="#FFFFFF"><h3>'.$go_api->lng('var_log_messages').':</h3></td>
</tr><tr>
<td width="100%" bgcolor="#FFFFFF"><pre>'.$buffer.'</pre></td>
</tr></table></div>';
return $html_out;
}
function insert($doc_id, $doctype_id, $groupid = 0) { return true; }
function update($doc_id, $doctype_id, $groupid = 0) { return true; }
function delete($doc_id, $doctype_id, $groupid = 0) { return true; }
function undelete($doc_id, $doctype_id, $groupid = 0) { return true; }
}
?>
Then I added the new tab to the configuration in the ispconfig mysql database table:
UPDATE `doctype` SET `doctype_def` = 'O:3:"doc":28:{s:6:"userid";s:1:"1";s:7:"groupid";s:1:"1";s:14:"group_required";s:1:"0";s:5:"modul";s:3:"sys";s:4:"tree";s:1:"0";s:7:"buttons";s:1:"0";s:4:"name";s:12:"serverstatus";s:4:"type";s:9:"text/html";s:13:"template_type";s:4:"file";s:13:"template_path";N;s:12:"storage_type";s:2:"db";s:12:"storage_path";s:16:"isp_serverstatus";s:10:"form_width";s:3:"450";s:4:"deck";a:5:{i:0;O:4:"deck":5:{s:8:"elements";a:2:{i:0;O:11:"pluginField":13:{s:9:"css_class";N;s:7:"options";N;s:4:"name";s:12:"check_uptime";s:4:"type";s:11:"pluginField";s:5:"title";N;s:8:"language";s:2:"de";s:11:"description";N;s:6:"length";i:30;s:7:"visible";i:1;s:8:"required";i:1;s:14:"reg_expression";N;s:10:"reg_fehler";N;s:6:"search";N;}i:1;O:11:"pluginField":13:{s:9:"css_class";s:0:"";s:7:"options";N;s:4:"name";s:10:"check_disk";s:4:"type";s:11:"pluginField";s:5:"title";N;s:8:"language";s:2:"de";s:11:"description";N;s:6:"length";i:30;s:7:"visible";i:1;s:8:"required";i:1;s:14:"reg_expression";N;s:10:"reg_fehler";N;s:6:"search";N;}}s:5:"title";s:6:"Status";s:7:"visible";s:1:"1";s:9:"perm_read";s:1:"r";s:10:"perm_write";s:1:"r";}i:1;O:4:"deck":5:{s:8:"elements";a:1:{i:0;O:11:"pluginField":13:{s:9:"css_class";N;s:7:"options";N;s:4:"name";s:13:"check_meminfo";s:4:"type";s:11:"pluginField";s:5:"title";N;s:8:"language";s:2:"de";s:11:"description";N;s:6:"length";i:30;s:7:"visible";i:1;s:8:"required";i:1;s:14:"reg_expression";N;s:10:"reg_fehler";N;s:6:"search";N;}}s:5:"title";s:15:"Arbeitsspeicher";s:7:"visible";s:1:"1";s:9:"perm_read";s:1:"r";s:10:"perm_write";s:1:"r";}i:2;O:4:"deck":5:{s:8:"elements";a:1:{i:0;O:11:"pluginField":13:{s:9:"css_class";N;s:7:"options";N;s:4:"name";s:13:"check_cpuinfo";s:4:"type";s:11:"pluginField";s:5:"title";N;s:8:"language";s:2:"de";s:11:"description";N;s:6:"length";i:30;s:7:"visible";i:1;s:8:"required";i:1;s:14:"reg_expression";N;s:10:"reg_fehler";N;s:6:"search";N;}}s:5:"title";s:3:"CPU";s:7:"visible";s:1:"1";s:9:"perm_read";s:1:"r";s:10:"perm_write";s:1:"r";}i:3;O:4:"deck":5:{s:8:"elements";a:1:{i:0;O:11:"pluginField":13:{s:9:"css_class";s:0:"";s:7:"options";N;s:4:"name";s:14:"check_services";s:4:"type";s:11:"pluginField";s:5:"title";N;s:8:"language";s:2:"de";s:11:"description";N;s:6:"length";i:30;s:7:"visible";i:1;s:8:"required";i:1;s:14:"reg_expression";N;s:10:"reg_fehler";N;s:6:"search";N;}}s:5:"title";s:7:"Dienste";s:7:"visible";s:1:"1";s:9:"perm_read";s:1:"r";s:10:"perm_write";s:1:"r";}i:4;O:4:"deck":5:{s:8:"elements";a:1:{i:0;O:11:"pluginField":13:{s:9:"css_class";s:0:"";s:7:"options";N;s:4:"name";s:16:"check_messagelog";s:4:"type";s:11:"pluginField";s:5:"title";N;s:8:"language";s:2:"de";s:11:"description";N;s:6:"length";i:30;s:7:"visible";i:1;s:8:"required";i:1;s:14:"reg_expression";N;s:10:"reg_fehler";N;s:6:"search";N;}}s:5:"title";s:10:"MessageLog";s:7:"visible";s:1:"1";s:9:"perm_read";s:1:"r";s:10:"perm_write";s:1:"r";}}s:5:"title";s:17:"ISP Server Status";s:8:"keywords";N;s:11:"description";s:0:"";s:4:"path";N;s:4:"icon";s:10:"status.gif";s:5:"cache";s:1:"0";s:8:"permtype";N;s:7:"version";d:1.100000000000000088817841970012523233890533447 265625;s:11:"event_class";s:0:"";s:12:"event_insert";s:0:"";s:12:"event_update";s:0:"";s:12:"event_delete";s:0:"";s:10:"event_show";N;s:11:"wysiwyg_lib";i:0;}' WHERE doctype_id=1021
For this to work I needed to modify the sudo-config. Type "visudo" and add the following at the sudoers section:
admispconfig ALL=(ALL) NOPASSWD: /bin/cat /var/log/messages
For additional hints on visudo and ispconfig look here: http://www.howtoforge.com/forums/showpost.php?p=102225&postcount=6
That's it, a preformatted output of your /var/log/messages.
BTW: I afterwards also changed ISPConfig configuration to log to the SYSTEM.
@Falko and Till: is there any easy way to edit the serialized objects in the "doctype" table?? The way I added my new tab was really weird!!!
Greets,
Alex