#!perl
use lib '/wwwroot/extranet/';
use me;
my $mysqldir = '/mysql/data/';
my $tdir = '/wwwroot/extranet/';
our $sessiondir = '/wwwsessions';
our $dbuser = 'root';
our $dbpassword = 'fbg4ips';
our $dbhost = '127.0.0.1';
use settings;
use strict;
#no strict 'refs';
use Storable;
use CGI::Carp qw(fatalsToBrowser);
use CGI;
use CGI::Session;
use Template;
use Template::Plugin::CGI;
use DBI;
my $folder = '/wwwroot/extranet/';
my $jobsdir = "/socket/jobs";
my $q = new CGI;
$q->import_names('R');
#################### SESSION #######################
#retreive cookie
CGI::Session->name("CGISESSIDSPACEBIZSET");
my $session = new CGI::Session(undef, $q,{Directory=>$sessiondir});
logininit($session,$q);
my $login_cookie = $q->cookie(-name=>"CGISESSIDSPACEBIZSET");
if ($login_cookie) {
$session->clear(["~logged-in"]) if $login_cookie ne $session->id();
} else {
$session->clear(["~logged-in"])
}
#if ( $session->param("~login-trials") >= 3 ) {
#print "You failed 3 times in a row. Please ask your administrator for assistance.";
#}
my %cookies = fetch CGI::Cookie;
my $store_session_cookie = $q->cookie(-name=>"CGISESSIDSPACEBIZSET",-value => $session->id(),-expires => "+365d");
my $logexp = 0;
my $login_session_cookie = $q->cookie(-name=>"CGISESSIDSPACEBIZSET",-value => $session->id(), -expires => $logexp );
print $q->header(-cookie => [$store_session_cookie,$login_session_cookie]);
################### / SESSION ######################
my $template = slurpfile($folder."profiles/template.htm");
if ($R::action eq "logche") {
#verify user and password quickly
my $dbh = DBI->connect("DBI:mysql:spaceusers;host=$dbhost",$dbuser,$dbpassword) or die $DBI::errstr;
my $results = $dbh->prepare("
select * from spaceusers.users where username=? and password=? and type=2;
;") or die $dbh->errstr();
$results->execute($R::lg_name, $R::lg_password) or die $results->errstr();
my $ref = $results->fetchrow_hashref();
if ( $ref->{username} ) {
print "welcome back";
} else {
if (! $R::lg_password) {
print "password please";
} else {
print "password still not full";
}
}
} elsif ( $session->param("~logged-in") ) { #start normal operation
#--------------------------------------------------------------------------------------
if ($R::action eq 'generic') {
my $pro = $session->param("~profile");
my $db = DataBase2->new();
my %settings_pm;
my $db_name = $R::setting_db;
unless($db_name){ #donot's have db_name?
if(!$R::pro){
#do not have profile passed , let's choose one from DBI
my $userid = $pro->{userid};
#my $a_profile = $db->SelectRow("SELECT id,name,db_name FROM spaceusers.profiles
# WHERE id in(SELECT profile_id FROM spaceusers.user_profiles
# WHERE user_id=$userid) LIMIT 1");
my $a_profile = $db->SelectRow("SELECT id,name,db_name FROM spaceusers.profiles LIMIT 1");
$R::pro = $a_profile->{id};
$db_name= $a_profile->{db_name};
}else{
my $a_profile = $db->SelectRow("SELECT id,name,db_name FROM spaceusers.profiles
WHERE id=?",$R::pro);
$db_name= $a_profile->{db_name};
}
}
my $setting_current_db = $db_name;
#Try to load settings from database first.
my $settings = $db->SelectARef("SELECT * FROM Settings WHERE db=?",$db_name) if $db_name;
foreach(@$settings){
$settings_pm{$_->{name}} = $_->{val} if $_->{name};
}
my $len = keys %settings_pm;
%settings_pm = %{retrieve('/wwwroot/extranet/settings_pm.sto')} if $len <1;
#add a new one ......
unless(exists($settings_pm{'accountcard'})){
$settings_pm{'accountcard'} = -1;
}
my $page = slurpfile($folder."profiles/settings_pm.html");
$page .= "";
my @ses;
my @pars = $q->param; #/save if unsaved
foreach (@pars) {
if ($_ =~ /(SE_)(.*)/) {
push @ses, $2;
}
}
if ($R::command eq "Save Settings") {
print "settings saved.";
$db->Exec("DELETE FROM Settings WHERE db=?",$db_name);
foreach my $key (@ses) {
$settings_pm{$key} = $q->param("SE_$key");
$db->Exec("INSERT INTO Settings SET name=?,val=?,db=?",$key,$settings_pm{$key}||'',$db_name);
}
#store \%settings_pm, '/wwwroot/extranet/settings_pm.sto';
}
foreach my $key ( keys %settings_pm )
{
$page =~ s/\%SE_$key\%/$settings_pm{$key}/;
}
my ($setting_db_opt,$pro_list);
#my $list = $db->SelectARef("SELECT id,name,db_name FROM spaceusers.profiles
# WHERE id in(SELECT profile_id FROM spaceusers.user_profiles
# WHERE user_id=?)",$pro->{userid});
my $list = $db->SelectARef("SELECT id,name,db_name FROM spaceusers.profiles");
foreach(@$list){
my $selected = " selected" if $_->{db_name} eq $db_name;
$setting_db_opt .=qq||;
$pro_list .=qq|$_->{name} |;
}
$page =~ s/\%setting_db\%/$setting_db_opt/;
$page =~ s/\%pro_list\%/$pro_list/;
$page =~ s/\%SE_autoplace\%//;
$page =~ s/\%SE_clockview\%//;
$page =~ s/\%SE_alloworderbutton\%//;
$page =~ s/\%setting_current_db\%/$setting_current_db/;
$template =~ s/\%content\%/$page/;
#--------------------------------------------------------------------------------------
} elsif ($R::action eq 'restart') {
my $t = system('"\Program Files\Apache Group\Apache2\bin\Apache.exe" -k restart');
#print "Apache Restarted";
$template =~ s/\%content\%/Apache Restarted/;
#--------------------------------------------------------------------------------------
} elsif ($R::action eq 'headerfooter') {
if ($R::command eq "Save Settings") {
print "settings saved.";
$R::billheader =~ s/\r//gsi;
$R::billfooter =~ s/\r//gsi;
$R::billfooteri =~ s/\r//gsi;
open HEADER, ">/wwwroot/extranet/data/billtext.txt";
open ORDERHEADER, ">/wwwroot/extranet/data/orderheader.txt";
open FOOTER, ">/wwwroot/extranet/data/billfooter.txt"; #proforma
open FOOTERI, ">/wwwroot/extranet/data/billfooteri.txt";
print ORDERHEADER $R::orderheader;
print HEADER $R::billheader;
print FOOTER $R::billfooter;
print FOOTERI $R::billfooteri;
close ORDERHEADER;
close HEADER;
close FOOTER;
close FOOTERI;
}
my $page = slurpfile($folder."profiles/tillheadfoot.html");
$page .= "";
my $header = slurpfile($folder."data/billtext.txt");
my $footer = slurpfile($folder."data/billfooter.txt");
my $footeri = slurpfile($folder."data/billfooteri.txt");
my $orderheader = slurpfile($folder."data/orderheader.txt");
$page =~ s/\%billheader\%/$header/;
$page =~ s/\%billfooter\%/$footer/;
$page =~ s/\%billfooteri\%/$footeri/;
$page =~ s/\%orderheader\%/$orderheader/;
$template =~ s/\%content\%/$page/;
#--------------------------------------------------------------------------------------
} elsif ($R::action eq 'stations') {
my $temphtml;
$temphtml .= "
[*] TERMINAL CONFIGURATION EDITOR | Folder: \\SPACEPOS_STATIONS | ||||||||
";
#commands
if ($R::command eq "Create Station") {
if ($R::newip =~ /^(\d+)\.(\d+)\.(\d+)\.(\d+)$/) {
if (! -d "/SPACEPOS_STATIONS/$R::newip") {
mkdir ("/SPACEPOS_STATIONS/$R::newip");
mkdir ("/SPACEPOS_STATIONS/$R::newip/Program Files");
mkdir ("/SPACEPOS_STATIONS/$R::newip/Program Files/lpd");
#copy files
copyfile ("/wwwroot/extranet/profiles/templates/LPD.INI","/SPACEPOS_STATIONS/$R::newip/Program Files/lpd/LPD.INI");
copyfile ("/wwwroot/extranet/profiles/templates/settings.txt","/SPACEPOS_STATIONS/$R::newip/settings.txt");
open (NICK, ">/SPACEPOS_STATIONS/$R::newip/nickname.txt");
print NICK $R::newnickname;
close NICK;
# Done.
$temphtml .= "Success: an empty station configuration has been added for $R::newip "; } else { $temphtml .= "Error: the required station ($R::newip) is already existing "; } } else { $temphtml .= "Error: the specified station IP ($R::newip) is invalid "; } } elsif ($R::command eq "delete") { unlink "/SPACEPOS_STATIONS/$R::station/settings.txt"; unlink "/SPACEPOS_STATIONS/$R::station/nickname.txt"; unlink "/SPACEPOS_STATIONS/$R::station/Program Files/lpd/LPD.INI"; rmdir "/SPACEPOS_STATIONS/$R::station/Program Files/lpd/"; rmdir "/SPACEPOS_STATIONS/$R::station/Program Files/"; rmdir "/SPACEPOS_STATIONS/$R::station/"; $temphtml .= "Station Configuration Folder Deleted. " if (! -d "/SPACEPOS_STATIONS/$R::station"); $temphtml .= "ERROR: There is a problem deleting the files in /SPACEPOS_STATIONS/$R::station/ Please perform a manual folder removal. " if (-d "/SPACEPOS_STATIONS/$R::station"); } elsif ($R::command eq "Save") {#save settings and printers my $settingsfile; my $ip = $R::station; $settingsfile = slurpfile("/SPACEPOS_STATIONS/$ip/settings.txt") if (-f "/SPACEPOS_STATIONS/$ip/settings.txt"); open (SETTINGS,">/SPACEPOS_STATIONS/$ip/settings.txt"); while ($settingsfile =~ /\&(.*?)=(.*?)\&/sgi) { print SETTINGS "&$1=".$q->param("SET_$1")."&\n"; } close SETTINGS; open NICK, ">/SPACEPOS_STATIONS/$ip/nickname.txt"; print NICK $R::stationnick; close NICK; my $LPD; $LPD .= 'SPOOLDIR'."\r";; $LPD .= 'c:\lpd'."\r"; $LPD .= ''."\r"; $LPD .= 'MAXCONN'."\r"; $LPD .= '100'."\r"; $LPD .= ''."\r"; $LPD .= 'NODNS'."\r"; $LPD .= ''."\r"; $LPD .= 'PRINTERS'."\r"; $LPD .= '@'."\r"; $LPD .= ''."\r"; $LPD .= 'HOSTS'."\r"; $LPD .= '192.168'."\r"; $LPD .= '10.0'."\r"; $LPD .= '10.10'."\r"; $LPD .= '127.0'."\r"; $LPD .= ''."\r";; my $printers; for (1..7) { my $entry = $q->param("LPD_$_"); last if ($entry eq ""); $printers .= "$entry |$entry\r"; } $LPD =~ s/\@/$printers/sgi; open (LPDINI,">/SPACEPOS_STATIONS/$ip/Program Files/lpd/LPD.INI"); binmode LPDINI; print LPDINI $LPD; close LPDINI; $temphtml .= "Settings for station $ip successfuly saved. "; } my @stations; if (opendir(STATIONS, "/SPACEPOS_STATIONS")) { @stations = grep {/^(\d+)\.(\d+)\.(\d+)\.(\d+)$/} readdir(STATIONS); closedir STATIONS; } else { if (mkdir "/SPACEPOS_STATIONS") { $temphtml .= "/SPACEPOS_STATIONS folder was successfuly created."; }; } $temphtml .= "Configured stations:
New Station IP : Nickname: "; $temphtml .= ""; #$temphtml .= ""; $temphtml .= " |
";
$page .= "![]() "; $page .= "
|
";
$page .= "![]() "; $page .= "
|