From bae566758c51f8d36e043ddc48e02dfbc7121969 Mon Sep 17 00:00:00 2001 From: Brian Read Date: Sun, 1 Dec 2024 11:05:35 +0000 Subject: [PATCH] Fix overwrete logic for files based on modified date. Rationalise perform logic routines --- Targets/Letsencrypt/Letsencrypt-Custom.pm | 206 +++++++----------- Targets/Letsencrypt/Letsencrypt.pm | 2 +- .../Letsencrypt/_lets_CHECKALLDOMAINS.html.ep | 2 +- .../_lets_CHECKALLENABLEDDOMAINS.html.ep | 2 +- .../Letsencrypt/_lets_CHECKONEDOMAIN.html.ep | 2 +- Targets/Letsencrypt/_lets_LIST.html.ep | 2 +- Targets/Letsencrypt/_lets_PARAMS.html.ep | 2 +- Targets/Letsencrypt/letsencrypt.css | 38 +--- Targets/Letsencrypt/letsencrypt.html.ep | 2 +- Targets/Letsencrypt/letsencrypt_en.lex | 86 ++++---- Templates/custom.pm.tem | 6 +- sm2gen.py | 3 +- 12 files changed, 133 insertions(+), 220 deletions(-) diff --git a/Targets/Letsencrypt/Letsencrypt-Custom.pm b/Targets/Letsencrypt/Letsencrypt-Custom.pm index c512a34..45b27ae 100644 --- a/Targets/Letsencrypt/Letsencrypt-Custom.pm +++ b/Targets/Letsencrypt/Letsencrypt-Custom.pm @@ -1,5 +1,5 @@ # -# Generated by SM2Gen version:0.8 Chameleon version:4.5.4 On Python:3.12.3 at 2024-11-16 10:30:16 +# Generated by SM2Gen version:0.8 Chameleon version:4.5.4 On Python:3.12.3 at 2024-12-01 10:58:16 # # # Routines to be edited by the developer to provide content and validation for parameters @@ -53,6 +53,7 @@ our $ddb = esmith::DomainsDB->open() || die("Couldn't open Domains db"); my $prefix_data = shift; #Data hash as parameter # Validation for each field my $ret = ""; + if (! TRUE) #validate $c->param('status') {$ret .= 'Validation for status failed';} if (! TRUE) #validate $c->param('hookScript') @@ -117,20 +118,16 @@ our $ddb = esmith::DomainsDB->open() || die("Couldn't open Domains db"); sub get_data_for_panel_LIST { # Return a hash with the fields required which will be loaded into the shared data my $c = shift; -# my ($reply, $err, $server_cert) = Net::SSLeay::sslcat('localhost', 443, '/'); -# my $issuer = Net::SSLeay::X509_NAME_oneline(Net::SSLeay::X509_get_issuer_name($server_cert)); -# my $before = Net::SSLeay::P_ASN1_TIME_get_isotime(Net::SSLeay::X509_get_notBefore($server_cert)); -# my $expiry = Net::SSLeay::P_ASN1_TIME_get_isotime(Net::SSLeay::X509_get_notAfter($server_cert)); - my %ret = ( 'Data1'=>'Data for LIST', #Example # fields from Inputs in LIST $fields['LIST'] - 'InternalIP'=>$cdb->get_prop('InternalInterface','IPAddress'), - 'ExternalIP'=>$cdb->get_prop('ExternalInterface','IPAddress'), - 'InternetIP'=>$c->get_my_ip(), - 'Issuer'=>'$issuer', - 'Expiry'=>'$expiry', - 'NotBefore'=>'$before', + 'InternalIP'=>'InternalIP contents', + 'ExternalIP'=>'ExternalIP contents', + 'InternetIP'=>'InternetIP contents', + 'Issuer'=>'Issuer contents', + 'Expiry'=>'Expiry contents', + 'NotBefore'=>'NotBefore contents', + ); return %ret; } @@ -141,14 +138,15 @@ our $ddb = esmith::DomainsDB->open() || die("Couldn't open Domains db"); my %ret = ( 'Data1'=>'Data for PARAMS', #Example # fields from Inputs in PARAMS $fields['PARAMS'] - 'status'=>$cdb->get_prop('letsencrypt', 'status', 'disabled'), - 'hookScript'=>$cdb->get_prop('letsencrypt', 'hookScript', 'disabled'), - 'hostOverride'=>$cdb->get_prop('letsencrypt', 'hostOverride', 'disabled'), - 'ACCEPT_TERMS'=>$cdb->get_prop('letsencrypt', 'ACCEPT_TERMS', ''), - 'API'=>$cdb->get_prop('letsencrypt', 'API', '2'), - 'keysize'=>$cdb->get_prop('letsencrypt', 'keysize', '4096'), - 'configure'=>$cdb->get_prop('letsencrypt', 'configure', 'none' ), - 'Email'=>$cdb->get_prop('letsencrypt', 'email') + 'status'=>'status contents', + 'hookScript'=>'hookScript contents', + 'hostOverride'=>'hostOverride contents', + 'ACCEPT_TERMS'=>'ACCEPT_TERMS contents', + 'API'=>'API contents', + 'keysize'=>'keysize contents', + 'configure'=>'configure contents', + 'Email'=>'Email contents', + ); return %ret; } @@ -183,7 +181,7 @@ our $ddb = esmith::DomainsDB->open() || die("Couldn't open Domains db"); my %ret = ( 'Data1'=>'Data for CHECKONEDOMAIN', #Example # fields from Inputs in CHECKONEDOMAIN $fields['CHECKONEDOMAIN'] - 'OneDomainToCheck'=>$c->param("CHECKONEDOMAIN"), + 'OneDomainToCheck'=>'OneDomainToCheck contents', 'OneDomainsCheck'=>'OneDomainsCheck contents', ); @@ -196,87 +194,32 @@ our $ddb = esmith::DomainsDB->open() || die("Couldn't open Domains db"); # Define a constant hash for field name mapping use constant DomainList_FIELD_MAPPING => ( - 'Table1-Domain name / HOSTNAME' => 'Domain', - 'Table1-Brief description' => 'Description', - 'Table1-Content' => 'Content', - 'Table1-LABEL_NAMESERVERS' => 'Nameservers', + 'Table1-Domain name / HOSTNAME' => 'Source-for-Table1-Domain name / HOSTNAME', + 'Table1-Brief description' => 'Source-for-Table1-Brief description', + 'Table1-Content' => 'Source-for-Table1-Content', + 'Table1-LABEL_NAMESERVERS' => 'Source-for-Table1-LABEL_NAMESERVERS', 'Table1-LABEL_POINT' => 'Source-for-Table1-LABEL_POINT', - 'Table1-LABEL_LECERT' => 'letsencryptSSLcert', - 'Table1-IS_IN_CERT' => 'isincert', - 'Table1-CHECK' => 'Check' + 'Table1-LABEL_LECERT' => 'Source-for-Table1-LABEL_LECERT', + 'Table1-IS_IN_CERT' => 'Source-for-Table1-IS_IN_CERT', + 'Table1-CHECK' => 'Source-for-Table1-CHECK' #'target_field2' => 'source_field2', # Add more mappings as needed ); - -use constant TEST_DOMAIN_LIST => ( - { "domain" => "Domain1","fred" => "fred1" , "description"=>"Description1"}, - { "domain" => "Domain2", "fred" => "fred2", "description"=>"Description2" }, - { "domain" => "Domain3", "fred" => "fred3", "description"=>"Description3" }, - # Add more test entries as needed -); - sub actual_DomainList { - my $c = shift; + my @ret = (); # Actual code for extracting DomainList - my @list = (); -# my @rv = Net::SSLeay::X509_get_subjectAltNames($server_cert); -# foreach my $element (@rv) { -# next if $element =~ /^\d+$/; ; -# #print $element . "\n"; -# push @list, $element; -# } - my @data = (); - my $check = $c->l('Check Domain'); - for ($ddb->domains) - { - my $ns = $_->prop('Nameservers') || 'internet'; - my $le = $_->prop('letsencryptSSLcert') || 'disabled';#letsencrypt configure all - my $dname= $_->key; - my $isincert = "N"; - my $link = $c->create_link("letsencryptd","CHECKONEDOMAIN",""); - my $checklink = "".$check.""; - #my $checklink = "check"; - $isincert = "Y" if ( $dname ~~ @list); - # domain - push @data, - { Domain => $_->key, - $_->props, - letsencryptSSLcert => $le, - isincert => $isincert, - Check => $checklink, - Nameservers => $ns, - }; - #and hosts - for my $h ($hdb->get_hosts_by_domain($dname)) - { - next if $ddb->get($h->key); - next unless ($h->prop('HostType') eq "Self" || $h->prop('HostType') eq "Local"); - $le = $h->prop('letsencryptSSLcert') || 'disabled';#letsencrypt configure all - $isincert = "N"; - $isincert = "Y" if ( $h->key ~~ @list); - push @data, - { Domain => "--> ". $h->key, - $h->props, - Description=>$h->prop('ExternalIP')|| $h->prop('InternalIP')||"", - Content => $h->prop('HostType'), - isincert => $isincert, - Check => "", #$checklink - Nameservers => $c->l($ns), - } - } - } - return @data; + return @ret; } sub get_DomainList { # Return an array of hashes of the contents for each row and column for DomainList my $c = shift; - my @source_records = $c->actual_DomainList(); #TEST_DOMAIN_LIST #Replace by code or call to produce contents of table; + my @source_records = $c->actual_DomainList(); my @transformed_records; my %Field_Mapping = DomainList_FIELD_MAPPING; # Iterate over each record in the source array - for my $source_record (@source_records) { + for my $source_record (@$source_records) { my %transformed_record; # Iterate over each key-value pair in the $Field_Mapping constant while (my ($target, $source) = each %Field_Mapping) { @@ -343,19 +286,21 @@ sub get_DomainList { my $c = shift; my $prefix_data = shift; #Data hash as parameter my $ret = ""; + my $db = $cdb; #maybe one of the others + my $dbkey = 'ChangeThis'; - if (! TRUE) #copy or perform with value: InternalIP e.g. $c->setprop(dbentry,dbkey,$c->param('InternalIP') - {$ret .= 'Perform failed for InternalIP failed';} - if (! TRUE) #copy or perform with value: ExternalIP e.g. $c->setprop(dbentry,dbkey,$c->param('ExternalIP') - {$ret .= 'Perform failed for ExternalIP failed';} - if (! TRUE) #copy or perform with value: InternetIP e.g. $c->setprop(dbentry,dbkey,$c->param('InternetIP') - {$ret .= 'Perform failed for InternetIP failed';} - if (! TRUE) #copy or perform with value: Issuer e.g. $c->setprop(dbentry,dbkey,$c->param('Issuer') - {$ret .= 'Perform failed for Issuer failed';} - if (! TRUE) #copy or perform with value: Expiry e.g. $c->setprop(dbentry,dbkey,$c->param('Expiry') - {$ret .= 'Perform failed for Expiry failed';} - if (! TRUE) #copy or perform with value: NotBefore e.g. $c->setprop(dbentry,dbkey,$c->param('NotBefore') - {$ret .= 'Perform failed for NotBefore failed';} + if (! TRUE) #copy or perform with value: InternalIP e.g. $c->setprop($db,$dbkey,$c->param('InternalIP'))) + {$ret .= 'Perform/save failed for InternalIP';} + if (! TRUE) #copy or perform with value: ExternalIP e.g. $c->setprop($db,$dbkey,$c->param('ExternalIP'))) + {$ret .= 'Perform/save failed for ExternalIP';} + if (! TRUE) #copy or perform with value: InternetIP e.g. $c->setprop($db,$dbkey,$c->param('InternetIP'))) + {$ret .= 'Perform/save failed for InternetIP';} + if (! TRUE) #copy or perform with value: Issuer e.g. $c->setprop($db,$dbkey,$c->param('Issuer'))) + {$ret .= 'Perform/save failed for Issuer';} + if (! TRUE) #copy or perform with value: Expiry e.g. $c->setprop($db,$dbkey,$c->param('Expiry'))) + {$ret .= 'Perform/save failed for Expiry';} + if (! TRUE) #copy or perform with value: NotBefore e.g. $c->setprop($db,$dbkey,$c->param('NotBefore'))) + {$ret .= 'Perform/save failed for NotBefore';} if ($ret eq "") {$ret = 'ok';} return $ret; } @@ -364,23 +309,25 @@ sub get_DomainList { my $c = shift; my $prefix_data = shift; #Data hash as parameter my $ret = ""; + my $db = $cdb; #maybe one of the others + my $dbkey = 'ChangeThis'; - if (! TRUE) #copy or perform with value: status e.g. $c->setprop(dbentry,dbkey,$c->param('status') - {$ret .= 'Perform failed for status failed';} - if (! TRUE) #copy or perform with value: hookScript e.g. $c->setprop(dbentry,dbkey,$c->param('hookScript') - {$ret .= 'Perform failed for hookScript failed';} - if (! TRUE) #copy or perform with value: hostOverride e.g. $c->setprop(dbentry,dbkey,$c->param('hostOverride') - {$ret .= 'Perform failed for hostOverride failed';} - if (! TRUE) #copy or perform with value: ACCEPT_TERMS e.g. $c->setprop(dbentry,dbkey,$c->param('ACCEPT_TERMS') - {$ret .= 'Perform failed for ACCEPT_TERMS failed';} - if (! TRUE) #copy or perform with value: API e.g. $c->setprop(dbentry,dbkey,$c->param('API') - {$ret .= 'Perform failed for API failed';} - if (! TRUE) #copy or perform with value: keysize e.g. $c->setprop(dbentry,dbkey,$c->param('keysize') - {$ret .= 'Perform failed for keysize failed';} - if (! TRUE) #copy or perform with value: configure e.g. $c->setprop(dbentry,dbkey,$c->param('configure') - {$ret .= 'Perform failed for configure failed';} - if (! TRUE) #copy or perform with value: Email e.g. $c->setprop(dbentry,dbkey,$c->param('Email') - {$ret .= 'Perform failed for Email failed';} + if (! TRUE) #copy or perform with value: status e.g. $c->setprop($db,$dbkey,$c->param('status'))) + {$ret .= 'Perform/save failed for status';} + if (! TRUE) #copy or perform with value: hookScript e.g. $c->setprop($db,$dbkey,$c->param('hookScript'))) + {$ret .= 'Perform/save failed for hookScript';} + if (! TRUE) #copy or perform with value: hostOverride e.g. $c->setprop($db,$dbkey,$c->param('hostOverride'))) + {$ret .= 'Perform/save failed for hostOverride';} + if (! TRUE) #copy or perform with value: ACCEPT_TERMS e.g. $c->setprop($db,$dbkey,$c->param('ACCEPT_TERMS'))) + {$ret .= 'Perform/save failed for ACCEPT_TERMS';} + if (! TRUE) #copy or perform with value: API e.g. $c->setprop($db,$dbkey,$c->param('API'))) + {$ret .= 'Perform/save failed for API';} + if (! TRUE) #copy or perform with value: keysize e.g. $c->setprop($db,$dbkey,$c->param('keysize'))) + {$ret .= 'Perform/save failed for keysize';} + if (! TRUE) #copy or perform with value: configure e.g. $c->setprop($db,$dbkey,$c->param('configure'))) + {$ret .= 'Perform/save failed for configure';} + if (! TRUE) #copy or perform with value: Email e.g. $c->setprop($db,$dbkey,$c->param('Email'))) + {$ret .= 'Perform/save failed for Email';} if ($ret eq "") {$ret = 'ok';} return $ret; } @@ -389,9 +336,11 @@ sub get_DomainList { my $c = shift; my $prefix_data = shift; #Data hash as parameter my $ret = ""; + my $db = $cdb; #maybe one of the others + my $dbkey = 'ChangeThis'; - if (! TRUE) #copy or perform with value: AllDomainsCheck e.g. $c->setprop(dbentry,dbkey,$c->param('AllDomainsCheck') - {$ret .= 'Perform failed for AllDomainsCheck failed';} + if (! TRUE) #copy or perform with value: AllDomainsCheck e.g. $c->setprop($db,$dbkey,$c->param('AllDomainsCheck'))) + {$ret .= 'Perform/save failed for AllDomainsCheck';} if ($ret eq "") {$ret = 'ok';} return $ret; } @@ -400,9 +349,11 @@ sub get_DomainList { my $c = shift; my $prefix_data = shift; #Data hash as parameter my $ret = ""; + my $db = $cdb; #maybe one of the others + my $dbkey = 'ChangeThis'; - if (! TRUE) #copy or perform with value: EnabledDomainsCheck e.g. $c->setprop(dbentry,dbkey,$c->param('EnabledDomainsCheck') - {$ret .= 'Perform failed for EnabledDomainsCheck failed';} + if (! TRUE) #copy or perform with value: EnabledDomainsCheck e.g. $c->setprop($db,$dbkey,$c->param('EnabledDomainsCheck'))) + {$ret .= 'Perform/save failed for EnabledDomainsCheck';} if ($ret eq "") {$ret = 'ok';} return $ret; } @@ -411,11 +362,13 @@ sub get_DomainList { my $c = shift; my $prefix_data = shift; #Data hash as parameter my $ret = ""; + my $db = $cdb; #maybe one of the others + my $dbkey = 'ChangeThis'; - if (! TRUE) #copy or perform with value: OneDomainToCheck e.g. $c->setprop(dbentry,dbkey,$c->param('OneDomainToCheck') - {$ret .= 'Perform failed for OneDomainToCheck failed';} - if (! TRUE) #copy or perform with value: OneDomainsCheck e.g. $c->setprop(dbentry,dbkey,$c->param('OneDomainsCheck') - {$ret .= 'Perform failed for OneDomainsCheck failed';} + if (! TRUE) #copy or perform with value: OneDomainToCheck e.g. $c->setprop($db,$dbkey,$c->param('OneDomainToCheck'))) + {$ret .= 'Perform/save failed for OneDomainToCheck';} + if (! TRUE) #copy or perform with value: OneDomainsCheck e.g. $c->setprop($db,$dbkey,$c->param('OneDomainsCheck'))) + {$ret .= 'Perform/save failed for OneDomainsCheck';} if ($ret eq "") {$ret = 'ok';} return $ret; } @@ -427,11 +380,4 @@ sub create_link{ my $link = "$route?trt=$panel&Selected=$index"; return $link; } - -sub get_my_ip -{ - my ($self, $item, $prop, $default) = @_; - my $output = `/usr/sbin/e-smith/getmyip`; - return $output || "IP"; -} 1; \ No newline at end of file diff --git a/Targets/Letsencrypt/Letsencrypt.pm b/Targets/Letsencrypt/Letsencrypt.pm index 9e1e7b7..953e7ce 100644 --- a/Targets/Letsencrypt/Letsencrypt.pm +++ b/Targets/Letsencrypt/Letsencrypt.pm @@ -1,6 +1,6 @@ package SrvMngr::Controller::Letsencrypt; # -# Generated by SM2Gen version:0.8 Chameleon version:4.5.4 On Python:3.12.3 at 2024-11-29 15:59:19 +# Generated by SM2Gen version:0.8 Chameleon version:4.5.4 On Python:3.12.3 at 2024-12-01 10:58:16 # #---------------------------------------------------------------------- # heading : Network diff --git a/Targets/Letsencrypt/_lets_CHECKALLDOMAINS.html.ep b/Targets/Letsencrypt/_lets_CHECKALLDOMAINS.html.ep index 832cf7b..d0de526 100644 --- a/Targets/Letsencrypt/_lets_CHECKALLDOMAINS.html.ep +++ b/Targets/Letsencrypt/_lets_CHECKALLDOMAINS.html.ep @@ -1,5 +1,5 @@ %# -%# Generated by SM2Gen version:0.8 Chameleon version:4.5.4 On Python:3.12.3 at 2024-11-29 15:59:19 +%# Generated by SM2Gen version:0.8 Chameleon version:4.5.4 On Python:3.12.3 at 2024-12-01 10:58:16 %#