--- /dev/null
+package BackupPC::Config;
+
+use warnings;
+use Data::Dumper;
+
+our %ConfigDef;
+
+# this currently isn't used (or completed)
+sub CheckConfigInfo
+{
+ my($self) = @_;
+ my $errstr = '';
+
+ my($attr, $val, $def, $ref);
+
+ foreach $attr (sort keys %{ $self->{Conf} }) {
+ print AA "Checking $attr...";
+ $val = $self->{Conf}->{$attr};
+ $ref = ref $val;
+ $def = $ConfigDef{$attr};
+
+ if (!defined $def) {
+ $errstr .= "Unknown attribute $attr; ";
+ } elsif ($def->{struct} eq 'SCALAR' && $ref) {
+ $errstr .= "$attr expected to be SCALAR but is $ref; ";
+ } elsif ($def->{struct} =~ /^ARRAY(OFHASH)$/ && $ref && $ref ne 'ARRAY') {
+ $errstr .= "$attr expected to be ARRAY but is $ref; ";
+ } elsif ($def->{struct} =~ /^HASH(OFARRAY)$/ && $ref && $ref ne 'HASH') {
+ $errstr .= "$attr expected to be HASH but is $ref; ";
+ # still working out this logic..
+ #} elsif (defined $val && !$ref) {
+ # # if we got a scalar but were expecting a reference, fix it
+ #
+ # if($def->{struct} eq 'ARRAY') {
+ # $val = [ $val ];
+ # } elsif ($def->{struct} eq 'HASH') {
+ # $val = { $val };
+ # } elsif ($def->{struct} eq 'ARRAYOFHASH') {
+ # $val = [ { $val } ];
+ # } elsif ($def->{struct} eq 'HASHOFARRAY') {
+ # $val = { [ $val ] };
+ # }
+
+ }
+ }
+
+ return $errstr;
+}
+
+sub TopDir
+{
+ my($self) = @_;
+ return $self->{TopDir};
+}
+
+sub BinDir
+{
+ my($self) = @_;
+ return $self->{BinDir};
+}
+
+sub Version
+{
+ my($self) = @_;
+ return $self->{Version};
+}
+
+sub Conf
+{
+ my($self) = @_;
+ return %{$self->{Conf}};
+}
+
+sub ConfigDef
+{
+ my($self) = @_;
+ return \%ConfigDef;
+}
+
+sub Lang
+{
+ my($self) = @_;
+ return $self->{Lang};
+}
+
+sub adminJob
+{
+ return " admin ";
+}
+
+sub trashJob
+{
+ return " trashClean ";
+}
+
+sub timeStamp
+{
+ my($self, $t, $noPad) = @_;
+ my($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst)
+ = localtime($t || time);
+ $year += 1900;
+ $mon++;
+ return "$year/$mon/$mday " . sprintf("%02d:%02d:%02d", $hour, $min, $sec)
+ . ($noPad ? "" : " ");
+}
+
+sub ConnectData {
+ # fallback routine in case no database used
+ return 1;
+
+}
+
+###########################
+
+
+%ConfigDef = (
+ ServerHost => {struct => 'SCALAR',
+ type => 'STRING', },
+
+ ServerPort => {struct => 'SCALAR',
+ type => 'INT', },
+
+ ServerMesgSecret => {struct => 'SCALAR',
+ type => 'STRING', },
+
+ MyPath => {struct => 'SCALAR',
+ type => 'STRING', },
+
+ UmaskMode => {struct => 'SCALAR',
+ type => 'INT', },
+
+ WakeupSchedule => {struct => 'ARRAY',
+ type => 'INT', },
+
+ MaxBackups => {struct => 'SCALAR',
+ type => 'INT', },
+
+ MaxUserBackups => {struct => 'SCALAR',
+ type => 'INT', },
+
+ MaxPendingCmds => {struct => 'SCALAR',
+ type => 'INT', },
+
+ MaxOldLogFiles => {struct => 'SCALAR',
+ type => 'INT', },
+
+ DfPath => {struct => 'SCALAR',
+ type => 'STRING', },
+
+ DfMaxUsagePct => {struct => 'SCALAR',
+ type => 'INT', },
+
+ TrashCleanSleepSec => {struct => 'SCALAR',
+ type => 'INT', },
+
+ DHCPAddressRanges => {struct => 'ARRAYOFHASH',
+ type => {ipAddrBase => 'STRING',
+ first => 'INT',
+ last => 'INT',}, },
+
+ BackupPCUser => {struct => 'SCALAR',
+ type => 'STRING', },
+
+ CgiDir => {struct => 'SCALAR',
+ type => 'STRING', },
+
+ InstallDir => {struct => 'SCALAR',
+ type => 'STRING', },
+
+ BackupPCUserVerify => {struct => 'SCALAR',
+ type => 'BOOLEAN', },
+
+ SmbShareName => {struct => 'ARRAY',
+ type => 'STRING', },
+
+ SmbShareUserName => {struct => 'SCALAR',
+ type => 'STRING', },
+
+ SmbSharePasswd => {struct => 'SCALAR',
+ type => 'STRING', },
+
+ TarShareName => {struct => 'ARRAY',
+ type => 'STRING', },
+
+ FullPeriod => {struct => 'SCALAR',
+ type => 'FLOAT', },
+
+ IncrPeriod => {struct => 'SCALAR',
+ type => 'FLOAT', },
+
+ FullKeepCnt => {struct => 'SCALAR',
+ type => 'INT', },
+
+ FullKeepCntMin => {struct => 'SCALAR',
+ type => 'INT', },
+
+ FullAgeMax => {struct => 'SCALAR',
+ type => 'INT', },
+
+ IncrKeepCnt => {struct => 'SCALAR',
+ type => 'INT', },
+
+ IncrKeepCntMin => {struct => 'SCALAR',
+ type => 'INT', },
+
+ IncrAgeMax => {struct => 'SCALAR',
+ type => 'INT', },
+
+ IncrFill => {struct => 'SCALAR',
+ type => 'BOOLEAN', },
+
+ RestoreInfoKeepCnt => {struct => 'SCALAR',
+ type => 'INT', },
+
+ BackupFilesOnly => {struct => 'HASHOFARRAY',
+ type => 'STRING', },
+
+ BackupFilesExclude => {struct => 'HASHOFARRAY',
+ type => 'STRING', },
+
+ BlackoutBadPingLimit => {struct => 'SCALAR',
+ type => 'INT', },
+
+ BlackoutGoodCnt => {struct => 'SCALAR',
+ type => 'INT', },
+
+ BlackoutHourBegin => {struct => 'SCALAR',
+ type => 'FLOAT', },
+
+ BlackoutHourEnd => {struct => 'SCALAR',
+ type => 'FLOAT', },
+
+ BlackoutWeekDays => {struct => 'ARRAY',
+ type => 'INT', },
+
+ XferMethod => {struct => 'SCALAR',
+ type => 'STRING', },
+
+ SmbClientPath => {struct => 'SCALAR',
+ type => 'STRING', },
+
+ SmbClientArgs => {struct => 'SCALAR',
+ type => 'STRING', },
+
+ TarClientCmd => {struct => 'SCALAR',
+ type => 'STRING', },
+
+ TarFullArgs => {struct => 'SCALAR',
+ type => 'STRING', },
+
+ TarIncrArgs => {struct => 'SCALAR',
+ type => 'STRING', },
+
+ TarClientRestoreCmd => {struct => 'SCALAR',
+ type => 'STRING', },
+
+ TarClientPath => {struct => 'SCALAR',
+ type => 'STRING', },
+
+ SshPath => {struct => 'SCALAR',
+ type => 'STRING', },
+
+ NmbLookupPath => {struct => 'SCALAR',
+ type => 'STRING', },
+
+ FixedIPNetBiosNameCheck => {struct => 'SCALAR',
+ type => 'BOOLEAN', },
+
+ PingPath => {struct => 'SCALAR',
+ type => 'STRING', },
+
+ PingArgs => {struct => 'SCALAR',
+ type => 'STRING', },
+
+ CompressLevel => {struct => 'SCALAR',
+ type => 'INT', },
+
+ PingMaxMsec => {struct => 'SCALAR',
+ type => 'INT', },
+
+ SmbClientTimeout => {struct => 'SCALAR',
+ type => 'INT', },
+
+ MaxOldPerPCLogFiles => {struct => 'SCALAR',
+ type => 'INT', },
+
+ SendmailPath => {struct => 'SCALAR',
+ type => 'STRING', },
+
+ EMailNotifyMinDays => {struct => 'SCALAR',
+ type => 'INT', },
+
+ EMailFromUserName => {struct => 'SCALAR',
+ type => 'STRING', },
+
+ EMailAdminUserName => {struct => 'SCALAR',
+ type => 'STRING', },
+
+ EMailNoBackupEverMesg => {struct => 'SCALAR',
+ type => 'MEMO', },
+
+ EMailNotifyOldBackupDays => {struct => 'SCALAR',
+ type => 'INT', },
+
+ EMailNoBackupRecentMesg => {struct => 'SCALAR',
+ type => 'MEMO', },
+
+ EMailNotifyOldOutlookDays => {struct => 'SCALAR',
+ type => 'INT', },
+
+ EMailOutlookBackupMesg => {struct => 'SCALAR',
+ type => 'MEMO', },
+
+ CgiAdminUserGroup => {struct => 'SCALAR',
+ type => 'STRING', },
+
+ CgiAdminUsers => {struct => 'SCALAR',
+ type => 'STRING', },
+
+ Language => {struct => 'SCALAR',
+ type => 'STRING', },
+
+ CgiUserHomePageCheck => {struct => 'SCALAR',
+ type => 'STRING', },
+
+ CgiUserUrlCreate => {struct => 'SCALAR',
+ type => 'STRING', },
+
+ CgiDateFormatMMDD => {struct => 'SCALAR',
+ type => 'BOOLEAN', },
+
+ CgiNavBarAdminAllHosts => {struct => 'SCALAR',
+ type => 'BOOLEAN', },
+
+ CgiHeaderFontType => {struct => 'SCALAR',
+ type => 'STRING', },
+
+ CgiHeaderFontSize => {struct => 'SCALAR',
+ type => 'INT', },
+
+ CgiNavBarBgColor => {struct => 'SCALAR',
+ type => 'STRING', },
+
+ CgiHeaderBgColor => {struct => 'SCALAR',
+ type => 'STRING', },
+
+ CgiHeaders => {struct => 'SCALAR',
+ type => 'STRING', },
+
+ CgiImageDir => {struct => 'SCALAR',
+ type => 'STRING', },
+
+ CgiImageDirURL => {struct => 'SCALAR',
+ type => 'STRING', },
+
+);
+
+1;