jhyland87

Well-Known Member
Dec 8, 2008
153
0
66
Hey guys, so I have looked around for a bit. I found out how to add an icon and function into cpanel, but how do I add one for the administrators into WHM? Any help would be appriceated! THanks!

Justin
 

nickp666

Well-Known Member
Jan 28, 2005
769
2
168
/dev/null
To make it show up in the 'Plugins' Panel of WHM, the frontend needs to be a CGI script, named: addon_YOURSCRIPTNAME.cgi and it must contain on the second line:

Code:
#WHMADDON:someaddon:Plugin Name
The last part of that line can have basic html formatting in it, bold text etc but note this is output between <a> tags for the link to the addon.

Perl seems to be the best language to use for WHM front ends given that there are perl modules for checking permissions, safely opening files, adding WHM interface parts etc

Hope that helps
 

nickp666

Well-Known Member
Jan 28, 2005
769
2
168
/dev/null
Here is a hello world example of a WHM plugin:

Code:
#!/usr/bin/perl
#WHMADDON:helloworld:Hello World <b>Example</b>
###############################################################################
#	This is an example hello world WHM plugin feel free to modify it as you see fit
###############################################################################
# Load general use case perl modules
use lib '/usr/local/cpanel';
use Cpanel::cPanelFunctions ();
use Cpanel::Form            ();
use Cpanel::Config          ();
use Whostmgr::HTMLInterface ();
use Whostmgr::ACLS          ();
###############################################################################

print "Content-type: text/html\r\n\r\n";

# Check user has root permissions
Whostmgr::ACLS::init_acls();
if ( !Whostmgr::ACLS::hasroot() ) {
	# User is not root, tell them where to go
	print "You need to be root to see the hello world example.\n";
	exit();
}

# Parse input parameters from GET and POST into $FORM{} for later use
my %FORM     = Cpanel::Form::parseform();

# Print a WHM Header
Whostmgr::HTMLInterface::defheader( "Hello World Example Plugin",'/path/to/logo.gif', '/cgi/addon_helloworld.cgi' );

# Print General Output
print "<p>Hello world indeed...</p>";

# End Example

1;
 

jhyland87

Well-Known Member
Dec 8, 2008
153
0
66
Thanks guys!

I tried the hellow world example, Here is the error log

open3: exec of /usr/local/cpanel/whostmgr/docroot/cgi/hello.cgi failed at cpsrvd-ssl.pl line 5369
Internal Error: "GET /cgi/hello.cgi HTTP/1.1" Premature end of script headers: /usr/local/cpanel/whostmgr/docroot/cgi/hello.cgi: Please check /usr/local/cpanel/logs/error_log for the exact error.
open3: exec of /usr/local/cpanel/whostmgr/docroot/cgi/hello.cgi failed at cpsrvd-ssl.pl line 5369
Internal Error: "GET /cgi/hello.cgi HTTP/1.1" Premature end of script headers: /usr/local/cpanel/whostmgr/docroot/cgi/hello.cgi: Please check /usr/local/cpanel/logs/error_log for the exact error.
open3: exec of /usr/local/cpanel/whostmgr/docroot/cgi/hello.cgi failed at cpsrvd-ssl.pl line 5369
Internal Error: "GET /cgi/hello.cgi HTTP/1.1" Premature end of script headers: /usr/local/cpanel/whostmgr/docroot/cgi/hello.cgi: Please check /usr/local/cpanel/logs/error_log for the exact error.
 
Last edited:

jhyland87

Well-Known Member
Dec 8, 2008
153
0
66
Nevermind, I just made the CGI Forward to a PHP script, and made the PHP chown to admin and chmod to 755 :)!