#!/usr/bin/perl ################################################################################### # # # PerlDesk - Customer Help Desk Software # # # ################################################################################### # # # Author: John Bennett # # Email: j.bennett@perldesk.com # # Web: http://www.perldesk.com # # Filename: pdesk.cgi # # Details: The installation file # # Release: 1.5.5 # # # ################################################################################### # Please direct bug reports,suggestions or feedback to the perldesk forums. # # www.perldesk.com/board # # # # PerlDesk is free for both commercial and non-commercial use providing that the # # copyright headers remain intact and the links remain on the html pages. # # Re-distribution of this script without prior consent is strictly prohibited. # # # ################################################################################### # Please see the README/INSTALL files if you have any problems with this software # ################################################################################### use CGI qw(:standard); use DBI; require "include/conf.pl"; $dbh = DBI->connect("DBI:mysql:$dbname:$dbhost","$dbuser","$dbpass") or die_nice("Could not connect to the help desk database"); $q = CGI->new(); print "Content-type:text/html\n\n"; template("$connect") if $connect; eval { &navigate(); }; if ($@) { print $@; } sub navigate { if (defined $q->param('action')) { my $action = $q->param('action'); &install2 if $action eq "install2"; &install3 if $action eq "install3"; &install4 if $action eq "install4"; } else { &install2; } } sub install2 { my $html = qq|
   
General Settings
 
Data Path
 
This is the full system path to the main perldesk files (pdesk.cgi/staff.cgi/admin/cgi) There should be no trailing /
Image URL
 
The url to the folder containing the perldesk images, no ending /
Base URL
 
The url to the 'data path' specified above, where the main .cgi files are located, no ending /
   
Help Desk Title
Sendmail
   
Default Language
   
Tracking Code


This will get be used in outgoing email subject lines in order to track customer responses.

 

Admin Email
   
 
|; template("$html"); } sub install3 { my $data = $q->param('data'); my $imgbase = $q->param('imgbase'); my $baseurl = $q->param('baseurl'); my $title = $q->param('title'); my $sendmail = $q->param('sendmail'); my $tracking = $q->param('pretrack'); my $language = $q->param('language'); my $adminem = $q->param('adminemail'); $progress .= "
Please be patient while your database is setup

You will need to proceed to the next step at the bottom

"; $progress .= "Creating Announcements Table..."; $sql1 = qq|CREATE TABLE announce ( id smallint(5) unsigned NOT NULL auto_increment, author varchar(255) default NULL, subject varchar(255) default NULL, message text, staff char(1) default NULL, users char(1) default NULL, time varchar(16) default NULL, PRIMARY KEY (id) ) TYPE=MyISAM |; $dbh->do($sql1); $progress .= "[ OK ]
"; $progress .= "Creating Requests Table..."; $sql2 = qq| CREATE TABLE calls ( id smallint(5) unsigned NOT NULL auto_increment, status varchar(255) default NULL, username varchar(30) default NULL, email varchar(255) default NULL, priority char(1) default NULL, category varchar(255) default NULL, subject varchar(255) default NULL, description text, time varchar(20) default NULL, ownership varchar(255) default NULL, closedby varchar(255) default NULL, method char(2) default NULL, track varchar(50) NOT NULL default '', active varchar(50) NOT NULL default '', aw char(1) default NULL, an CHAR(1) NOT NULL, PRIMARY KEY (id) ) TYPE=MyISAM |; $dbh->do($sql2); $progress .= "[ OK ]
"; $progress .= "Creating Departments Table..."; $sql3 = qq| CREATE TABLE departments ( level varchar(255) default NULL ) TYPE=MyISAM |; $dbh->do($sql3); $progress .= "[ OK ]
"; $progress .= "Creating Email Forwarding Table..."; $sql4 = qq| CREATE TABLE em_forwarders ( address varchar(255) default NULL, category varchar(255) default NULL ) TYPE=MyISAM |; $dbh->do($sql4); $progress .= "[ OK ]
"; $progress .= "Creating user events Table..."; $sql4b = qq| CREATE TABLE user_events ( id smallint(5) unsigned NOT NULL auto_increment, user varchar(255) default NULL, time varchar(255) default NULL, subject varchar(255) default NULL, description text, date varchar(50) default NULL, PRIMARY KEY (id) ) TYPE=MyISAM |; $dbh->do($sql4b); $progress .= "[ OK ]
"; $progress .= "Creating KB Categories Table..."; $sql5 = qq| CREATE TABLE kb_cat ( category varchar(255) default NULL ) TYPE=MyISAM |; $dbh->do($sql5); $progress .= "[ OK ]
"; $progress .= "Creating KB Entries Table..."; $sql6 = qq| CREATE TABLE kb_entries ( id smallint(5) unsigned NOT NULL auto_increment, category varchar(255) default NULL, author varchar(255) default NULL, subject varchar(255) default NULL, description text, views varchar(50) default NULL, PRIMARY KEY (id) ) TYPE=MyISAM |; $dbh->do($sql6); $progress .= "[ OK ]
"; $progress .= "Creating Messages Table..."; $sql7 = qq| CREATE TABLE messages ( id SMALLINT(5) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, touser VARCHAR(50) NOT NULL, sender VARCHAR(50) NOT NULL, date VARCHAR(20) NOT NULL, subject VARCHAR(255) NOT NULL, message TEXT NOT NULL, stamp VARCHAR(20) NOT NULL ) |; $dbh->do($sql7); $progress .= "[ OK ]
"; $progress .= "Creating Notes Table..."; $sql8 = qq| CREATE TABLE notes ( id smallint(5) unsigned NOT NULL auto_increment, owner char(1) default NULL, visible char(1) default NULL, action varchar(255) default NULL, call varchar(20) default NULL, author varchar(255) default NULL, time varchar(20) default NULL, comment text, PRIMARY KEY (id) ) TYPE=MyISAM |; $dbh->do($sql8); $progress .= "[ OK ]
"; $progress .= "Creating Pre-defined answers Table..."; $sql9 = qq| CREATE TABLE preans ( id smallint(5) unsigned NOT NULL auto_increment, author varchar(25) default NULL, subject varchar(255) default NULL, text text, date varchar(20) default NULL, PRIMARY KEY (id) ) TYPE=MyISAM |; $dbh->do($sql9); $progress .= "[ OK ]
"; $progress .= "Creating settings Table..."; $sql10 = qq| CREATE TABLE settings ( setting varchar(50) default NULL, value varchar(225) default NULL ) TYPE=MyISAM |; $dbh->do($sql10); $progress .= "[ OK ]
"; $progress .= "Creating staff Table..."; $sql11 = qq|CREATE TABLE staff ( username varchar(20) default NULL, password varchar(20) default NULL, name varchar(50) default NULL, email varchar(50) default NULL, access varchar(255) default NULL, notify char(1) default NULL, responsetime varchar(20) default NULL, callsclosed varchar(10) default NULL, signature text, rkey char(2) default NULL ) TYPE=MyISAM |; $dbh->do($sql11); $progress .= "[ OK ]
"; $progress .= "Creating staff active Table..."; $sql12 = qq| CREATE TABLE staffactive ( username varchar(20) NOT NULL default '', date varchar(20) NOT NULL default '' ) TYPE=MyISAM |; $dbh->do($sql12); $progress .= "[ OK ]
"; $progress .= "Creating staff login Table..."; $sql13 = qq| CREATE TABLE stafflogin ( username varchar(50) default NULL, date varchar(20) default NULL ) TYPE=MyISAM |; $dbh->do($sql13); $progress .= "[ OK ]
"; $progress .= "Creating staff read Table..."; $sql14 = qq| CREATE TABLE staffread ( username varchar(50) NOT NULL default '', date varchar(20) NOT NULL default '' ) TYPE=MyISAM |; $dbh->do($sql14); $progress .= "[ OK ]
"; $progress .= "Creating users Table..."; $sql15 = qq| CREATE TABLE users ( id smallint(5) unsigned NOT NULL auto_increment, username varchar(30) default NULL, password varchar(30) default NULL, name varchar(50) default NULL, email varchar(50) default NULL, url varchar(50) default NULL, company varchar(50) default NULL, rkey varchar(5) default NULL, pending CHAR(1) NOT NULL, active varchar(50) default NULL, acode varchar(50) default NULL, lcall varchar(255) NOT NULL, PRIMARY KEY (id) ) TYPE=MyISAM |; $dbh->do($sql15); $progress .= "[ OK ]
"; $progress .= "Creating ticket fields table..."; $sql116 = qq|CREATE TABLE ticket_fields ( id smallint(5) unsigned NOT NULL auto_increment, name varchar(255) default NULL, value varchar(255) default NULL, dorder varchar(10) default NULL, PRIMARY KEY (id) ) TYPE=MyISAM |; $dbh->do($sql116); $progress .= "[ OK ]
"; $progress .= "Creating call fields table..."; $sql117 = qq|CREATE TABLE call_fields ( id smallint(5) unsigned NOT NULL auto_increment, cid varchar(255) default NULL, fid varchar(255) default NULL, value text, PRIMARY KEY (id) ) TYPE=MyISAM |; $dbh->do($sql117); $progress .= "[ OK ]
"; my $query = qq|INSERT INTO settings VALUES ('reqvalid', '0')|; $rv = $dbh->do(qq{$query}); my $query1 = qq|INSERT INTO settings VALUES ('ereqreg', '0')|; $rv = $dbh->do(qq{$query1}); my $query2 = qq|INSERT INTO settings VALUES ('pri1', '#F1F1F8')|; $rv = $dbh->do(qq{$query2}); my $query3 = qq|INSERT INTO settings VALUES ('pri2', '#F1F1F8')|; $rv = $dbh->do(qq{$query3}); my $query4 = qq|INSERT INTO settings VALUES ('pri3', '#F1F1F8')|; $rv = $dbh->do(qq{$query4}); my $query5 = qq|INSERT INTO settings VALUES ('pri4', '#F1F1F8')|; $rv = $dbh->do(qq{$query5}); my $query6 = qq|INSERT INTO settings VALUES ('pri5', '#F1F1F8')|; $rv = $dbh->do(qq{$query6}); my $queryv = qq|INSERT INTO settings VALUES ('validate', '1')|; $rv = $dbh->do(qq{$queryv}); my $query7 = qq|INSERT INTO settings VALUES ('sdelete', '1')|; $rv = $dbh->do(qq{$query7}); my $query8 = qq|INSERT INTO settings VALUES ('slock', '0')|; $rv = $dbh->do(qq{$query8}); my $query9 = qq|INSERT INTO settings VALUES ('avgtime', '0')|; $rv = $dbh->do(qq{$query9}); my $query10 = qq|INSERT INTO settings VALUES ('ssi_closed', '0')|; $rv = $dbh->do(qq{$query10}); my $query101 = qq|INSERT INTO settings VALUES ('timeoffset', '0')|; $rv = $dbh->do(qq{$query101}); my $query11 = qq|INSERT INTO staff VALUES ('admin', '4WXkJ6GuKe1t.', 'admin', 'admin', 'admin', '0', '0', '0', '', '4W')|; $rv = $dbh->do(qq{$query11}); my $query12 = qq|INSERT INTO `ticket_fields` (`id`, `name`, `value`, `dorder`) VALUES ('', 'name', '', '1')|; $rv = $dbh->do(qq{$query12}); my $query13 = qq|INSERT INTO `ticket_fields` (`id`, `name`, `value`, `dorder`) VALUES ('', 'company', '', '2')|; $rv = $dbh->do(qq{$query13}); my $query14 = qq|INSERT INTO `ticket_fields` (`id`, `name`, `value`, `dorder`) VALUES ('', 'email', '', '3')|; $rv = $dbh->do(qq{$query14}); my $query15 = qq|INSERT INTO `ticket_fields` (`id`, `name`, `value`, `dorder`) VALUES ('', 'url', '', '4')|; $rv = $dbh->do(qq{$query15}); $rv = $dbh->do(qq{INSERT INTO settings values ( "data", "$data")} ); $rv = $dbh->do(qq{INSERT INTO settings values ( "adminemail", "$adminem")} ); $rv = $dbh->do(qq{INSERT INTO settings values ( "imgbase", "$imgbase")} ); $rv = $dbh->do(qq{INSERT INTO settings values ( "baseurl", "$baseurl")} ); $rv = $dbh->do(qq{INSERT INTO settings values ( "title", "$title")} ); $rv = $dbh->do(qq{INSERT INTO settings values ( "sendmail", "$sendmail")} ); $rv = $dbh->do(qq{INSERT INTO settings values ( "epre", "$tracking")} ); $rv = $dbh->do(qq{INSERT INTO settings values ( "language", "$language")} ); $rv = $dbh->do(qq{INSERT INTO settings values ( "reqvalid", "0")} ); $rv = $dbh->do(qq{INSERT INTO settings values ( "floodwait", "15")} ); $rv = $dbh->do(qq{INSERT INTO settings values ( "validate", "0")} ); $rv = $dbh->do(qq{DELETE * FROM ticket_fields WHERE id >= 5} ); $progress .= "


SQL Setup Complete

"; template("$progress"); } sub install4 { $html = qq|
Installation Complete
Please access your administration panel using the details below.
   
By using perldesk you agree to do so under the terms of the license, which require the links back to perldesk to remain in the templates, you can remove them for a fee of \$70 USD - For information, please email John Bennett
 
ADMINISTRATION LOGIN
 
Admin Login
Username: admin
Password: demo
 
You MUST delete this install.cgi file before accessing the administration panel for security reasons.
|; template("$html"); } sub template { my @web = "@_"; print qq|PerlDesk Installation

PerlDesk 1.5: Installation
@web
|; exit; }