From a5205ea14caba99dfac584a2b2d02a738a252f72 Mon Sep 17 00:00:00 2001
From: Brian Read
Date: Sat, 1 Mar 2025 10:52:42 +0000
Subject: [PATCH] Add space in status messages
---
Targets/Letsencrypt/Letsencrypt-Custom.pm | 858 ++++++++++++----------
Targets/Letsencrypt/Letsencrypt.pm | 727 +++++++++---------
Targets/Nutups/Nutups-Custom.pm | 91 ++-
Targets/Nutups/Nutups.pm | 4 +-
Targets/Nutups/_nut_CONFIG.html.ep | 14 +-
Templates/controller.pm.tem | 6 +-
Templates/custom.pm.tem | 2 +-
Templates/layout.html.ep.tem | 2 +
8 files changed, 928 insertions(+), 776 deletions(-)
diff --git a/Targets/Letsencrypt/Letsencrypt-Custom.pm b/Targets/Letsencrypt/Letsencrypt-Custom.pm
index e6f32d7..ca68016 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-11-16 10:30:16
#
#
# Routines to be edited by the developer to provide content and validation for parameters
@@ -12,461 +12,555 @@ use esmith::HostsDB;
use esmith::AccountsDB;
use esmith::NetworksDB;
use esmith::DomainsDB;
-
use constant FALSE => 0;
use constant TRUE => 1;
-
#The most common ones
our $cdb = esmith::ConfigDB->open() || die("Couldn't open config db");
our $adb = esmith::AccountsDB->open() || die("Couldn't open Accounts db");
our $ndb = esmith::NetworksDB->open() || die("Couldn't open Network db");
-our $hdb = esmith::HostsDB->open() || die("Couldn't open Hosts db");
+our $hdb = esmith::HostsDB->open() || die("Couldn't open Hosts db");
our $ddb = esmith::DomainsDB->open() || die("Couldn't open Domains db");
# Validation routines - parameters for each panel
+sub validate_LIST {
+ my $c = shift;
+ my $prefix_data = shift; #Data hash as parameter
+ # Validation for each field
+ my $ret = "";
- sub validate_LIST {
- my $c = shift;
- my $prefix_data = shift; #Data hash as parameter
- # Validation for each field
- my $ret = "";
-
- if (! TRUE) #validate $c->param('InternalIP')
- {$ret .= 'Validation for InternalIP failed';}
- if (! TRUE) #validate $c->param('ExternalIP')
- {$ret .= 'Validation for ExternalIP failed';}
- if (! TRUE) #validate $c->param('InternetIP')
- {$ret .= 'Validation for InternetIP failed';}
- if (! TRUE) #validate $c->param('Issuer')
- {$ret .= 'Validation for Issuer failed';}
- if (! TRUE) #validate $c->param('Expiry')
- {$ret .= 'Validation for Expiry failed';}
- if (! TRUE) #validate $c->param('NotBefore')
- {$ret .= 'Validation for NotBefore failed';}
- if ($ret eq "") {$ret = 'ok';}
- return $ret;
- }
+ if (!TRUE) #validate $c->param('InternalIP')
+ {
+ $ret .= 'Validation for InternalIP failed';
+ }
- sub validate_PARAMS {
- my $c = shift;
- 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')
- {$ret .= 'Validation for hookScript failed';}
- if (! TRUE) #validate $c->param('hostOverride')
- {$ret .= 'Validation for hostOverride failed';}
- if (! TRUE) #validate $c->param('ACCEPT_TERMS')
- {$ret .= 'Validation for ACCEPT_TERMS failed';}
- if (! TRUE) #validate $c->param('API')
- {$ret .= 'Validation for API failed';}
- if (! TRUE) #validate $c->param('keysize')
- {$ret .= 'Validation for keysize failed';}
- if (! TRUE) #validate $c->param('configure')
- {$ret .= 'Validation for configure failed';}
- if (! TRUE) #validate $c->param('Email')
- {$ret .= 'Validation for Email failed';}
- if ($ret eq "") {$ret = 'ok';}
- return $ret;
- }
+ if (!TRUE) #validate $c->param('ExternalIP')
+ {
+ $ret .= 'Validation for ExternalIP failed';
+ }
- sub validate_CHECKALLDOMAINS {
- my $c = shift;
- my $prefix_data = shift; #Data hash as parameter
- # Validation for each field
- my $ret = "";
-
- if (! TRUE) #validate $c->param('AllDomainsCheck')
- {$ret .= 'Validation for AllDomainsCheck failed';}
- if ($ret eq "") {$ret = 'ok';}
- return $ret;
- }
+ if (!TRUE) #validate $c->param('InternetIP')
+ {
+ $ret .= 'Validation for InternetIP failed';
+ }
- sub validate_CHECKALLENABLEDDOMAINS {
- my $c = shift;
- my $prefix_data = shift; #Data hash as parameter
- # Validation for each field
- my $ret = "";
-
- if (! TRUE) #validate $c->param('EnabledDomainsCheck')
- {$ret .= 'Validation for EnabledDomainsCheck failed';}
- if ($ret eq "") {$ret = 'ok';}
- return $ret;
- }
+ if (!TRUE) #validate $c->param('Issuer')
+ {
+ $ret .= 'Validation for Issuer failed';
+ }
- sub validate_CHECKONEDOMAIN {
- my $c = shift;
- my $prefix_data = shift; #Data hash as parameter
- # Validation for each field
- my $ret = "";
-
- if (! TRUE) #validate $c->param('OneDomainToCheck')
- {$ret .= 'Validation for OneDomainToCheck failed';}
- if (! TRUE) #validate $c->param('OneDomainsCheck')
- {$ret .= 'Validation for OneDomainsCheck failed';}
- if ($ret eq "") {$ret = 'ok';}
- return $ret;
- }
+ if (!TRUE) #validate $c->param('Expiry')
+ {
+ $ret .= 'Validation for Expiry failed';
+ }
+ if (!TRUE) #validate $c->param('NotBefore')
+ {
+ $ret .= 'Validation for NotBefore failed';
+ }
+ if ($ret eq "") { $ret = 'ok'; }
+ return $ret;
+} ## end sub validate_LIST
+
+sub validate_PARAMS {
+ my $c = shift;
+ 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')
+ {
+ $ret .= 'Validation for hookScript failed';
+ }
+
+ if (!TRUE) #validate $c->param('hostOverride')
+ {
+ $ret .= 'Validation for hostOverride failed';
+ }
+
+ if (!TRUE) #validate $c->param('ACCEPT_TERMS')
+ {
+ $ret .= 'Validation for ACCEPT_TERMS failed';
+ }
+
+ if (!TRUE) #validate $c->param('API')
+ {
+ $ret .= 'Validation for API failed';
+ }
+
+ if (!TRUE) #validate $c->param('keysize')
+ {
+ $ret .= 'Validation for keysize failed';
+ }
+
+ if (!TRUE) #validate $c->param('configure')
+ {
+ $ret .= 'Validation for configure failed';
+ }
+
+ if (!TRUE) #validate $c->param('Email')
+ {
+ $ret .= 'Validation for Email failed';
+ }
+ if ($ret eq "") { $ret = 'ok'; }
+ return $ret;
+} ## end sub validate_PARAMS
+
+sub validate_CHECKALLDOMAINS {
+ my $c = shift;
+ my $prefix_data = shift; #Data hash as parameter
+ # Validation for each field
+ my $ret = "";
+
+ if (!TRUE) #validate $c->param('AllDomainsCheck')
+ {
+ $ret .= 'Validation for AllDomainsCheck failed';
+ }
+ if ($ret eq "") { $ret = 'ok'; }
+ return $ret;
+} ## end sub validate_CHECKALLDOMAINS
+
+sub validate_CHECKALLENABLEDDOMAINS {
+ my $c = shift;
+ my $prefix_data = shift; #Data hash as parameter
+ # Validation for each field
+ my $ret = "";
+
+ if (!TRUE) #validate $c->param('EnabledDomainsCheck')
+ {
+ $ret .= 'Validation for EnabledDomainsCheck failed';
+ }
+ if ($ret eq "") { $ret = 'ok'; }
+ return $ret;
+} ## end sub validate_CHECKALLENABLEDDOMAINS
+
+sub validate_CHECKONEDOMAIN {
+ my $c = shift;
+ my $prefix_data = shift; #Data hash as parameter
+ # Validation for each field
+ my $ret = "";
+
+ if (!TRUE) #validate $c->param('OneDomainToCheck')
+ {
+ $ret .= 'Validation for OneDomainToCheck failed';
+ }
+
+ if (!TRUE) #validate $c->param('OneDomainsCheck')
+ {
+ $ret .= 'Validation for OneDomainsCheck failed';
+ }
+ if ($ret eq "") { $ret = 'ok'; }
+ return $ret;
+} ## end sub validate_CHECKONEDOMAIN
# Get singleton data for each panel
+sub get_data_for_panel_LIST {
- 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));
+ # Return a hash with the fields required which will be loaded into the shared data
+ my $c = shift;
- 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',
- );
- return %ret;
- }
+ # 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',
+ );
+ return %ret;
+} ## end sub get_data_for_panel_LIST
- sub get_data_for_panel_PARAMS {
- # Return a hash with the fields required which will be loaded into the shared data
- my $c = shift;
- 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')
- );
- return %ret;
- }
+sub get_data_for_panel_PARAMS {
- sub get_data_for_panel_CHECKALLDOMAINS {
- # Return a hash with the fields required which will be loaded into the shared data
- my $c = shift;
- my %ret = (
- 'Data1'=>'Data for CHECKALLDOMAINS', #Example
- # fields from Inputs in CHECKALLDOMAINS $fields['CHECKALLDOMAINS']
- 'AllDomainsCheck'=>$c->update_all_domains(),
-
- );
- return %ret;
- }
+ # Return a hash with the fields required which will be loaded into the shared data
+ my $c = shift;
+ 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')
+ );
+ return %ret;
+} ## end sub get_data_for_panel_PARAMS
- sub get_data_for_panel_CHECKALLENABLEDDOMAINS {
- # Return a hash with the fields required which will be loaded into the shared data
- my $c = shift;
- my %ret = (
- 'Data1'=>'Data for CHECKALLENABLEDDOMAINS', #Example
- # fields from Inputs in CHECKALLENABLEDDOMAINS $fields['CHECKALLENABLEDDOMAINS']
- 'EnabledDomainsCheck'=>$c->update_enabled_domains(),
-
- );
- return %ret;
- }
+sub get_data_for_panel_CHECKALLDOMAINS {
- sub get_data_for_panel_CHECKONEDOMAIN {
- # Return a hash with the fields required which will be loaded into the shared data
- my $c = shift;
- my %ret = (
- 'Data1'=>'Data for CHECKONEDOMAIN', #Example
- # fields from Inputs in CHECKONEDOMAIN $fields['CHECKONEDOMAIN']
- 'OneDomainToCheck'=>$c->param("CHECKONEDOMAIN"),
- 'OneDomainsCheck'=>$c->update_one_domain($c->param("CHECKONEDOMAIN"))
- );
- return %ret;
- }
+ # Return a hash with the fields required which will be loaded into the shared data
+ my $c = shift;
+ my %ret = (
+ 'Data1' => 'Data for CHECKALLDOMAINS', #Example
+ # fields from Inputs in CHECKALLDOMAINS $fields['CHECKALLDOMAINS']
+ 'AllDomainsCheck' => $c->update_all_domains(),
+ );
+ return %ret;
+} ## end sub get_data_for_panel_CHECKALLDOMAINS
+sub get_data_for_panel_CHECKALLENABLEDDOMAINS {
+ # Return a hash with the fields required which will be loaded into the shared data
+ my $c = shift;
+ my %ret = (
+ 'Data1' => 'Data for CHECKALLENABLEDDOMAINS', #Example
+ # fields from Inputs in CHECKALLENABLEDDOMAINS $fields['CHECKALLENABLEDDOMAINS']
+ 'EnabledDomainsCheck' => $c->update_enabled_domains(),
+ );
+ return %ret;
+} ## end sub get_data_for_panel_CHECKALLENABLEDDOMAINS
+
+sub get_data_for_panel_CHECKONEDOMAIN {
+
+ # Return a hash with the fields required which will be loaded into the shared data
+ my $c = shift;
+ my %ret = (
+ 'Data1' => 'Data for CHECKONEDOMAIN', #Example
+ # fields from Inputs in CHECKONEDOMAIN $fields['CHECKONEDOMAIN']
+ 'OneDomainToCheck' => $c->param("CHECKONEDOMAIN"),
+ 'OneDomainsCheck' => $c->update_one_domain($c->param("CHECKONEDOMAIN"))
+ );
+ return %ret;
+} ## end sub get_data_for_panel_CHECKONEDOMAIN
# Get control data for table(s)
+# 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-LABEL_POINT' => 'Source-for-Table1-LABEL_POINT',
+ 'Table1-LABEL_LECERT' => 'letsencryptSSLcert',
+ 'Table1-IS_IN_CERT' => 'isincert',
+ 'Table1-CHECK' => 'Check'
- # 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-LABEL_POINT' => 'Source-for-Table1-LABEL_POINT',
- 'Table1-LABEL_LECERT' => 'letsencryptSSLcert',
- 'Table1-IS_IN_CERT' => 'isincert',
- 'Table1-CHECK' => 'Check'
- #'target_field2' => 'source_field2',
- # Add more mappings as needed
- );
-
-
+ #'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" },
+ { "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;
- # 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;
-}
+ my $c = shift;
+
+ # 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),
+ };
+ } ## end for my $h ($hdb->get_hosts_by_domain...)
+ } ## end for ($ddb->domains)
+ return @data;
+} ## end sub actual_DomainList
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 $c = shift;
+ my @source_records
+ = $c->actual_DomainList(); #TEST_DOMAIN_LIST #Replace by code or call to produce contents of table;
my @transformed_records;
my %Field_Mapping = DomainList_FIELD_MAPPING;
+
# Iterate over each record in the source array
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) {
+
# Check if the source field exists in the source record
if (exists $source_record->{$source}) {
+
# Assign the source field value to the target field in the transformed record
$transformed_record{$target} = $source_record->{$source};
}
- }
+ } ## end while (my ($target, $source...))
+
# Add transformed record to the array if it's not empty
push @transformed_records, \%transformed_record if %transformed_record;
- }
+ } ## end for my $source_record (...)
return \@transformed_records;
-}
-
-
+} ## end sub get_DomainList
# Return hash with values from row in which link clicked on table
+sub get_selected_LIST {
+ my $c = shift;
+ my $selected = shift; #Parameter is name of selected row.
+ my $is_new_record = shift; #Indicates new record required (defaults)
+ my %ret = {};
+ return %ret;
+} ## end sub get_selected_LIST
- sub get_selected_LIST {
- my $c = shift;
- my $selected = shift; #Parameter is name of selected row.
- my $is_new_record = shift; #Indicates new record required (defaults)
- my %ret = {};
- return $ret;
- }
+sub get_selected_PARAMS {
+ my $c = shift;
+ my $selected = shift; #Parameter is name of selected row.
+ my $is_new_record = shift; #Indicates new record required (defaults)
+ my %ret = {};
+ return %ret;
+} ## end sub get_selected_PARAMS
- sub get_selected_PARAMS {
- my $c = shift;
- my $selected = shift; #Parameter is name of selected row.
- my $is_new_record = shift; #Indicates new record required (defaults)
- my %ret = {};
- return $ret;
- }
+sub get_selected_CHECKALLDOMAINS {
+ my $c = shift;
+ my $selected = shift; #Parameter is name of selected row.
+ my $is_new_record = shift; #Indicates new record required (defaults)
+ my %ret = {};
+ return %ret;
+} ## end sub get_selected_CHECKALLDOMAINS
- sub get_selected_CHECKALLDOMAINS {
- my $c = shift;
- my $selected = shift; #Parameter is name of selected row.
- my $is_new_record = shift; #Indicates new record required (defaults)
- my %ret = {};
- return $ret;
- }
-
- sub get_selected_CHECKALLENABLEDDOMAINS {
- my $c = shift;
- my $selected = shift; #Parameter is name of selected row.
- my $is_new_record = shift; #Indicates new record required (defaults)
- my %ret = {};
- return $ret;
- }
-
- sub get_selected_CHECKONEDOMAIN {
- my $c = shift;
- my $selected = shift; #Parameter is name of selected row.
- my $is_new_record = shift; #Indicates new record required (defaults)
- my %ret = {};
- return $ret;
- }
+sub get_selected_CHECKALLENABLEDDOMAINS {
+ my $c = shift;
+ my $selected = shift; #Parameter is name of selected row.
+ my $is_new_record = shift; #Indicates new record required (defaults)
+ my %ret = {};
+ return %ret;
+} ## end sub get_selected_CHECKALLENABLEDDOMAINS
+sub get_selected_CHECKONEDOMAIN {
+ my $c = shift;
+ my $selected = shift; #Parameter is name of selected row.
+ my $is_new_record = shift; #Indicates new record required (defaults)
+ my %ret = {};
+ return %ret;
+} ## end sub get_selected_CHECKONEDOMAIN
#after sucessful modify or create or whatever and submit then perfom (if the params validate)
+sub perform_LIST {
+ my $c = shift;
+ my $prefix_data = shift; #Data hash as parameter
+ my $ret = "";
+ my $db = $cdb; #maybe one of the others
+ my $dbkey = 'ChangeThis';
- sub perform_LIST {
- 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. $db->set_prop($dbkey,'InternalIP',$c->param('InternalIP'),type=>'service'))
- {$ret .= 'Perform/save failed for InternalIP';}
- if (! TRUE) #copy or perform with value: ExternalIP e.g. $db->set_prop($dbkey,'ExternalIP',$c->param('ExternalIP'),type=>'service'))
- {$ret .= 'Perform/save failed for ExternalIP';}
- if (! TRUE) #copy or perform with value: InternetIP e.g. $db->set_prop($dbkey,'InternetIP',$c->param('InternetIP'),type=>'service'))
- {$ret .= 'Perform/save failed for InternetIP';}
- if (! TRUE) #copy or perform with value: Issuer e.g. $db->set_prop($dbkey,'Issuer',$c->param('Issuer'),type=>'service'))
- {$ret .= 'Perform/save failed for Issuer';}
- if (! TRUE) #copy or perform with value: Expiry e.g. $db->set_prop($dbkey,'Expiry',$c->param('Expiry'),type=>'service'))
- {$ret .= 'Perform/save failed for Expiry';}
- if (! TRUE) #copy or perform with value: NotBefore e.g. $db->set_prop($dbkey,'NotBefore',$c->param('NotBefore'),type=>'service'))
- {$ret .= 'Perform/save failed for NotBefore';}
- if ($ret eq "") {$ret = 'ok';}
- return $ret;
- }
+ if (!TRUE
+ ) #copy or perform with value: InternalIP e.g. $db->set_prop($dbkey,'InternalIP',$c->param('InternalIP'),type=>'service'))
+ {
+ $ret .= 'Perform/save failed for InternalIP';
+ } ## end if (!TRUE)
- sub perform_PARAMS {
- my $c = shift;
- my $prefix_data = shift; #Data hash as parameter
- my $ret = "";
- my $db = $cdb; #maybe one of the others
- my $dbkey = 'letsencrypt';
- # To make it write to DB as comment, delete this (regex) string in each if statement "TRUE\) \#copy or perform with value: .* e.g."
-
- if (! $db->set_prop($dbkey,'status',$c->param('status'),type=>'service'))
- {$ret .= 'Perform/save failed for status';}
- if (! $db->set_prop($dbkey,'hookScript',$c->param('hookScript'),type=>'service'))
- {$ret .= 'Perform/save failed for hookScript';}
- if (! $db->set_prop($dbkey,'hostOverride',$c->param('hostOverride'),type=>'service'))
- {$ret .= 'Perform/save failed for hostOverride';}
- if (! $db->set_prop($dbkey,'ACCEPT_TERMS',$c->param('ACCEPT_TERMS'),type=>'service'))
- {$ret .= 'Perform/save failed for ACCEPT_TERMS';}
- if (! $db->set_prop($dbkey,'API',$c->param('API'),type=>'service'))
- {$ret .= 'Perform/save failed for API';}
- if (! $db->set_prop($dbkey,'keysize',$c->param('keysize'),type=>'service'))
- {$ret .= 'Perform/save failed for keysize';}
- if (! $db->set_prop($dbkey,'configure',$c->param('configure'),type=>'service'))
- {$ret .= 'Perform/save failed for configure';}
- if (! $db->set_prop($dbkey,'email',$c->param('email'),type=>'service'))
- {$ret .= 'Perform/save failed for email';}
- if ($ret eq "") {$ret = 'ok';}
- return $ret;
- }
-
- sub perform_CHECKALLDOMAINS {
- 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. $db->set_prop($dbkey,'AllDomainsCheck',$c->param('AllDomainsCheck'),type=>'service'))
- {$ret .= 'Perform/save failed for AllDomainsCheck';}
- if ($ret eq "") {$ret = 'ok';}
- return $ret;
- }
+ if (!TRUE
+ ) #copy or perform with value: ExternalIP e.g. $db->set_prop($dbkey,'ExternalIP',$c->param('ExternalIP'),type=>'service'))
+ {
+ $ret .= 'Perform/save failed for ExternalIP';
+ } ## end if (!TRUE)
- sub perform_CHECKALLENABLEDDOMAINS {
- 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. $db->set_prop($dbkey,'EnabledDomainsCheck',$c->param('EnabledDomainsCheck'),type=>'service'))
- {$ret .= 'Perform/save failed for EnabledDomainsCheck';}
- if ($ret eq "") {$ret = 'ok';}
- return $ret;
- }
+ if (!TRUE
+ ) #copy or perform with value: InternetIP e.g. $db->set_prop($dbkey,'InternetIP',$c->param('InternetIP'),type=>'service'))
+ {
+ $ret .= 'Perform/save failed for InternetIP';
+ } ## end if (!TRUE)
- sub perform_CHECKONEDOMAIN {
- 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. $db->set_prop($dbkey,'OneDomainToCheck',$c->param('OneDomainToCheck'),type=>'service'))
- {$ret .= 'Perform/save failed for OneDomainToCheck';}
- if (! TRUE) #copy or perform with value: OneDomainsCheck e.g. $db->set_prop($dbkey,'OneDomainsCheck',$c->param('OneDomainsCheck'),type=>'service'))
- {$ret .= 'Perform/save failed for OneDomainsCheck';}
- if ($ret eq "") {$ret = 'ok';}
- return $ret;
- }
+ if (!TRUE
+ ) #copy or perform with value: Issuer e.g. $db->set_prop($dbkey,'Issuer',$c->param('Issuer'),type=>'service'))
+ {
+ $ret .= 'Perform/save failed for Issuer';
+ } ## end if (!TRUE)
+ if (!TRUE
+ ) #copy or perform with value: Expiry e.g. $db->set_prop($dbkey,'Expiry',$c->param('Expiry'),type=>'service'))
+ {
+ $ret .= 'Perform/save failed for Expiry';
+ } ## end if (!TRUE)
-sub create_link{
- # WIP
- my ($c,$route, $panel, $index) = @_;
- my $link = "$route?trt=$panel&Selected=$index";
- return $link;
-}
+ if (!TRUE
+ ) #copy or perform with value: NotBefore e.g. $db->set_prop($dbkey,'NotBefore',$c->param('NotBefore'),type=>'service'))
+ {
+ $ret .= 'Perform/save failed for NotBefore';
+ } ## end if (!TRUE)
+ if ($ret eq "") { $ret = 'ok'; }
+ return $ret;
+} ## end sub perform_LIST
-sub get_my_ip
-{
+sub perform_PARAMS {
+ my $c = shift;
+ my $prefix_data = shift; #Data hash as parameter
+ my $ret = "";
+ my $db = $cdb; #maybe one of the others
+ my $dbkey = 'letsencrypt';
+
+# To make it write to DB as comment, delete this (regex) string in each if statement "TRUE\) \#copy or perform with value: .* e.g."
+ if (!$db->set_prop($dbkey, 'status', $c->param('status'), type => 'service')) {
+ $ret .= 'Perform/save failed for status';
+ }
+
+ if (!$db->set_prop($dbkey, 'hookScript', $c->param('hookScript'), type => 'service')) {
+ $ret .= 'Perform/save failed for hookScript';
+ }
+
+ if (!$db->set_prop($dbkey, 'hostOverride', $c->param('hostOverride'), type => 'service')) {
+ $ret .= 'Perform/save failed for hostOverride';
+ }
+
+ if (!$db->set_prop($dbkey, 'ACCEPT_TERMS', $c->param('ACCEPT_TERMS'), type => 'service')) {
+ $ret .= 'Perform/save failed for ACCEPT_TERMS';
+ }
+ if (!$db->set_prop($dbkey, 'API', $c->param('API'), type => 'service')) { $ret .= 'Perform/save failed for API'; }
+
+ if (!$db->set_prop($dbkey, 'keysize', $c->param('keysize'), type => 'service')) {
+ $ret .= 'Perform/save failed for keysize';
+ }
+
+ if (!$db->set_prop($dbkey, 'configure', $c->param('configure'), type => 'service')) {
+ $ret .= 'Perform/save failed for configure';
+ }
+
+ if (!$db->set_prop($dbkey, 'email', $c->param('email'), type => 'service')) {
+ $ret .= 'Perform/save failed for email';
+ }
+ if ($ret eq "") { $ret = 'ok'; }
+ return $ret;
+} ## end sub perform_PARAMS
+
+sub perform_CHECKALLDOMAINS {
+ 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. $db->set_prop($dbkey,'AllDomainsCheck',$c->param('AllDomainsCheck'),type=>'service'))
+ {
+ $ret .= 'Perform/save failed for AllDomainsCheck';
+ } ## end if (!TRUE)
+ if ($ret eq "") { $ret = 'ok'; }
+ return $ret;
+} ## end sub perform_CHECKALLDOMAINS
+
+sub perform_CHECKALLENABLEDDOMAINS {
+ 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. $db->set_prop($dbkey,'EnabledDomainsCheck',$c->param('EnabledDomainsCheck'),type=>'service'))
+ {
+ $ret .= 'Perform/save failed for EnabledDomainsCheck';
+ } ## end if (!TRUE)
+ if ($ret eq "") { $ret = 'ok'; }
+ return $ret;
+} ## end sub perform_CHECKALLENABLEDDOMAINS
+
+sub perform_CHECKONEDOMAIN {
+ 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. $db->set_prop($dbkey,'OneDomainToCheck',$c->param('OneDomainToCheck'),type=>'service'))
+ {
+ $ret .= 'Perform/save failed for OneDomainToCheck';
+ } ## end if (!TRUE)
+
+ if (!TRUE
+ ) #copy or perform with value: OneDomainsCheck e.g. $db->set_prop($dbkey,'OneDomainsCheck',$c->param('OneDomainsCheck'),type=>'service'))
+ {
+ $ret .= 'Perform/save failed for OneDomainsCheck';
+ } ## end if (!TRUE)
+ if ($ret eq "") { $ret = 'ok'; }
+ return $ret;
+} ## end sub perform_CHECKONEDOMAIN
+
+sub create_link {
+
+ # WIP
+ my ($c, $route, $panel, $index) = @_;
+ my $link = "$route?trt=$panel&Selected=$index";
+ return $link;
+} ## end sub create_link
+
+sub get_my_ip {
my ($self, $item, $prop, $default) = @_;
my $output = `/usr/sbin/e-smith/getmyip`;
- return $output || "IP";
-}
+ return $output || "IP";
+} ## end sub get_my_ip
-sub update_one_domain
-{
- my ($self,$domain) = @_;
+sub update_one_domain {
+ my ($self, $domain) = @_;
return "$domain not domain" unless ($ddb->get($domain) || $hdb->get($domain));
- ($domain) = ($domain =~ /([\w\p{L}.]+)/);
+ ($domain) = ($domain =~ /([\w\p{L}.]+)/);
my $output = `/etc/e-smith/events/actions/letsencrypt-setdomains " " $domain `;
- return $output || "-empty-";
-}
+ return $output || "-empty-";
+} ## end sub update_one_domain
-sub update_all_domains
-{
- my $self = shift;
+sub update_all_domains {
+ my $self = shift;
my $output = `/etc/e-smith/events/actions/letsencrypt-setdomains "" "" all `;
- return $output || "-empty-";
-}
+ return $output || "-empty-";
+} ## end sub update_all_domains
-sub update_enabled_domains
-{
- my $self = shift;
+sub update_enabled_domains {
+ my $self = shift;
my $output = `/etc/e-smith/events/actions/letsencrypt-setdomains "" "" enabled `;
- return $output || "-empty-";
-}
-
-
+ return $output || "-empty-";
+} ## end sub update_enabled_domains
1;
\ No newline at end of file
diff --git a/Targets/Letsencrypt/Letsencrypt.pm b/Targets/Letsencrypt/Letsencrypt.pm
index 821002a..6e700e7 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-12-09 17:25:37
+# Generated by SM2Gen version:0.8 Chameleon version:4.5.4 On Python:3.12.3 at 2024-12-01 15:22:43
#
#----------------------------------------------------------------------
# heading : Network
@@ -15,25 +15,19 @@ package SrvMngr::Controller::Letsencrypt;
#
# Documentation: https://wiki.contribs.org/Letsencrypt
#----------------------------------------------------------------------
-
#
# Scheme of things:
#
# TBA!!
-
use strict;
use warnings;
use Mojo::Base 'Mojolicious::Controller';
-
use constant FALSE => 0;
use constant TRUE => 1;
-
use Locale::gettext;
use SrvMngr::I18N;
use SrvMngr qw(theme_list init_session);
-
use Data::Dumper;
-
use esmith::util;
use esmith::util::network;
use esmith::ConfigDB;
@@ -41,389 +35,414 @@ use esmith::AccountsDB;
use esmith::NetworksDB;
use esmith::HostsDB;
use esmith::DomainsDB;
-
-
-
-require '/usr/share/smanager/lib/SrvMngr/Controller/Letsencrypt-Custom.pm'; #The code that is to be added by the developer
+require
+ '/usr/share/smanager/lib/SrvMngr/Controller/Letsencrypt-Custom.pm'; #The code that is to be added by the developer
sub main {
-#
-# Initial entry - route is "/"
-#
-#set initial panel
-#for initial panel:
- #Specifiy panel to enter
- #load up _data hash with DB fields
- #load up stash with pointer(s) to control fields hash(= get-))
- #and a pointer to the prefix_data hash
-#render initial panel
-
- my $c = shift;
- $c->app->log->info( $c->log_req );
-
- #The most common ones
- my $cdb = esmith::ConfigDB->open() || die("Couldn't open config db");
- my $adb = esmith::AccountsDB->open() || die("Couldn't open Accounts db");
- my $ndb = esmith::NetworksDB->open() || die("Couldn't open Network db");
- my $hdb = esmith::HostsDB->open() || die("Couldn't open Hosts db");
- my $ddb = esmith::DomainsDB->open() || die("Couldn't open Domains db");
-
- my %lets_data = ();
- my $title = $c->l('lets_Letsencrypt_certificate');
- my $modul = '';
-
- $lets_data{'trt'} = 'LIST';
-
- #Load any DB entries into the _data area so as they are preset in the form
- # which DB - this only really works if the initial panel is a PARAMS type panel and not a TABLE
- my $db = $cdb; #pickup local or global db or Default to config
-
-
- $c->do_display($lets_data{'trt'});
-
-}
-
-# Post request with params - submit from the form
-sub do_update {
-#
-# Return after submit pushed on panel (this is a post) - route is "/u"
-# parameters in the params hash.
-#
-#load up all params into prefix_data hash:
-#By panel (series of if statements - only one executed):
- #call validate-PANEL() - return ret = ok or error message
-
-#if validation not ok:
- #render back to current panel with error message in stash
-#otherwise:
- #By panel (series of if statements - only one executed):
- #do whatever is required: call perform-PANEL() - return "ok" or Error Message
- #call signal-event for any global actions specified (check it exists - error and continue?)
- #if action smeserver--update exists
- #signal_event smeserver--update
- #call signal-event for any specific actions for thids panel (check it exists first - error and continue)
- #set success in stash
- #if no "nextpanel" entry:
- #set firstpanel
- #else
- #set nextpanel
- #call render
-
+ #
+ # Initial entry - route is "/"
+ #
+ #set initial panel
+ #for initial panel:
+ #Specifiy panel to enter
+ #load up _data hash with DB fields
+ #load up stash with pointer(s) to control fields hash(= get-))
+ #and a pointer to the prefix_data hash
+ #render initial panel
my $c = shift;
$c->app->log->info($c->log_req);
- my $modul = '';
-
- #The most common ones - you might want to comment out any not used.
- my $cdb = esmith::ConfigDB->open() || die("Couldn't open config db");
- my $adb = esmith::AccountsDB->open() || die("Couldn't open Accounts db");
- my $ndb = esmith::NetworksDB->open() || die("Couldn't open Network db");
- my $hdb = esmith::HostsDB->open() || die("Couldn't open Hosts db");
- my $ddb = esmith::DomainsDB->open() || die("Couldn't open Domains db");
+ #The most common ones
+ my $cdb = esmith::ConfigDB->open() || die("Couldn't open config db");
+ my $adb = esmith::AccountsDB->open() || die("Couldn't open Accounts db");
+ my $ndb = esmith::NetworksDB->open() || die("Couldn't open Network db");
+ my $hdb = esmith::HostsDB->open() || die("Couldn't open Hosts db");
+ my $ddb = esmith::DomainsDB->open() || die("Couldn't open Domains db");
my %lets_data = ();
- my $title = $c->l('lets_Letsencrypt_certificate');
+ my $title = $c->l('lets_Letsencrypt_certificate');
+ my $modul = '';
+ $lets_data{'trt'} = 'LIST';
- # Accessing all POST parameters
+ #Load any DB entries into the _data area so as they are preset in the form
+ # which DB - this only really works if the initial panel is a PARAMS type panel and not a TABLE
+ my $db = $cdb; #pickup local or global db or Default to config
+ $c->do_display($lets_data{'trt'});
+} ## end sub main
+
+# Post request with params - submit from the form
+sub do_update {
+ #
+ # Return after submit pushed on panel (this is a post) - route is "/u"
+ # parameters in the params hash.
+ #
+ #load up all params into prefix_data hash:
+ #By panel (series of if statements - only one executed):
+ #call validate-PANEL() - return ret = ok or error message
+ #if validation not ok:
+ #render back to current panel with error message in stash
+ #otherwise:
+ #By panel (series of if statements - only one executed):
+ #do whatever is required: call perform-PANEL() - return "ok" or Error Message
+ #call signal-event for any global actions specified (check it exists - error and continue?)
+ #if action smeserver--update exists
+ #signal_event smeserver--update
+ #call signal-event for any specific actions for thids panel (check it exists first - error and continue)
+ #set success in stash
+ #if no "nextpanel" entry:
+ #set firstpanel
+ #else
+ #set nextpanel
+ #call render
+ my $c = shift;
+ $c->app->log->info($c->log_req);
+ my $modul = '';
+
+ #The most common ones - you might want to comment out any not used.
+ my $cdb = esmith::ConfigDB->open() || die("Couldn't open config db");
+ my $adb = esmith::AccountsDB->open() || die("Couldn't open Accounts db");
+ my $ndb = esmith::NetworksDB->open() || die("Couldn't open Network db");
+ my $hdb = esmith::HostsDB->open() || die("Couldn't open Hosts db");
+ my $ddb = esmith::DomainsDB->open() || die("Couldn't open Domains db");
+ my %lets_data = ();
+ my $title = $c->l('lets_Letsencrypt_certificate');
+
+ # Accessing all POST parameters
my %params = $c->req->params->to_hash;
# Get number of POST parameters
my $num_params = keys %params;
-
+
#Params are available in the hash "params" - copy to the prefix_data hash
#while (my ($key, $value) = each %{$c->req->params->to_hash}) {
# $lets_data{$key} = $value;
#}
-
- # the value of trt will tell you which panel has returned
- my $trt = $c->param('trt') || 'LIST'; #hidden control on every form.
+ # the value of trt will tell you which panel has returned
+ my $trt = $c->param('trt') || 'LIST'; #hidden control on every form.
my $ret = 'ok';
#Validate the parameters in a custom sub one for each panel (although only one of these will be executed)
my $thispanel;
-
- if ($trt eq 'LIST'){
- #Validate form parameters for panel LIST
- $ret = $c->validate_LIST(\%lets_data);
- $thispanel = 'LIST';
- }
-
- if ($trt eq 'PARAMS'){
- #Validate form parameters for panel PARAMS
- $ret = $c->validate_PARAMS(\%lets_data);
- $thispanel = 'PARAMS';
- }
-
- if ($trt eq 'CHECKALLDOMAINS'){
- #Validate form parameters for panel CHECKALLDOMAINS
- $ret = $c->validate_CHECKALLDOMAINS(\%lets_data);
- $thispanel = 'CHECKALLDOMAINS';
- }
-
- if ($trt eq 'CHECKALLENABLEDDOMAINS'){
- #Validate form parameters for panel CHECKALLENABLEDDOMAINS
- $ret = $c->validate_CHECKALLENABLEDDOMAINS(\%lets_data);
- $thispanel = 'CHECKALLENABLEDDOMAINS';
- }
-
- if ($trt eq 'CHECKONEDOMAIN'){
- #Validate form parameters for panel CHECKONEDOMAIN
- $ret = $c->validate_CHECKONEDOMAIN(\%lets_data);
- $thispanel = 'CHECKONEDOMAIN';
- }
-
- if ($ret ne "ok"){
- $c->do_display($thispanel);
- } else {
- #Do whatever is needed, including writing values to the DB
-
-
- if ($trt eq 'LIST'){
- #do whatever is required ...
- $ret = $c->perform_LIST(\%lets_data);
- if ($ret ne "ok") {
- # return to the panel with error message
- $c->stash(error => $c->l($ret));
- $c->stash(
- title => $title,
- modul => $modul,
- lets_data => \%lets_data
- );
- $c->render(template => "letsencrypt");
- } else {
- $c->stash( success => $c->l('lets_LIST_panel_action_was_successful')); #A bit bland - edit it in the lex file
- }
- }
-
- if ($trt eq 'PARAMS'){
- #do whatever is required ...
- $ret = $c->perform_PARAMS(\%lets_data);
- if ($ret ne "ok") {
- # return to the panel with error message
- $c->stash(error => $c->l($ret));
- $c->stash(
- title => $title,
- modul => $modul,
- lets_data => \%lets_data
- );
- $c->render(template => "letsencrypt");
- } else {
- $c->stash( success => $c->l('lets_PARAMS_panel_action_was_successful')); #A bit bland - edit it in the lex file
- }
- }
-
- if ($trt eq 'CHECKALLDOMAINS'){
- #do whatever is required ...
- $ret = $c->perform_CHECKALLDOMAINS(\%lets_data);
- if ($ret ne "ok") {
- # return to the panel with error message
- $c->stash(error => $c->l($ret));
- $c->stash(
- title => $title,
- modul => $modul,
- lets_data => \%lets_data
- );
- $c->render(template => "letsencrypt");
- } else {
- $c->stash( success => $c->l('lets_CHECKALLDOMAINS_panel_action_was_successful')); #A bit bland - edit it in the lex file
- }
- }
-
- if ($trt eq 'CHECKALLENABLEDDOMAINS'){
- #do whatever is required ...
- $ret = $c->perform_CHECKALLENABLEDDOMAINS(\%lets_data);
- if ($ret ne "ok") {
- # return to the panel with error message
- $c->stash(error => $c->l($ret));
- $c->stash(
- title => $title,
- modul => $modul,
- lets_data => \%lets_data
- );
- $c->render(template => "letsencrypt");
- } else {
- $c->stash( success => $c->l('lets_CHECKALLENABLEDDOMAINS_panel_action_was_successful')); #A bit bland - edit it in the lex file
- }
- }
-
- if ($trt eq 'CHECKONEDOMAIN'){
- #do whatever is required ...
- $ret = $c->perform_CHECKONEDOMAIN(\%lets_data);
- if ($ret ne "ok") {
- # return to the panel with error message
- $c->stash(error => $c->l($ret));
- $c->stash(
- title => $title,
- modul => $modul,
- lets_data => \%lets_data
- );
- $c->render(template => "letsencrypt");
- } else {
- $c->stash( success => $c->l('lets_CHECKONEDOMAIN_panel_action_was_successful')); #A bit bland - edit it in the lex file
- }
- }
-
- # and call any signal-events needed
- #TBD
- # Setup shared data and call panel
- if ('none' eq 'none') {
- $lets_data{'trt'} = 'LIST';
- } else {
- $lets_data{'trt'} = 'none';
- }
- $c->do_display($lets_data{'trt'});
- }
-}
+
+ if ($trt eq 'LIST') {
+
+ #Validate form parameters for panel LIST
+ $ret = $c->validate_LIST(\%lets_data);
+ $thispanel = 'LIST';
+ } ## end if ($trt eq 'LIST')
+
+ if ($trt eq 'PARAMS') {
+
+ #Validate form parameters for panel PARAMS
+ $ret = $c->validate_PARAMS(\%lets_data);
+ $thispanel = 'PARAMS';
+ } ## end if ($trt eq 'PARAMS')
+
+ if ($trt eq 'CHECKALLDOMAINS') {
+
+ #Validate form parameters for panel CHECKALLDOMAINS
+ $ret = $c->validate_CHECKALLDOMAINS(\%lets_data);
+ $thispanel = 'CHECKALLDOMAINS';
+ } ## end if ($trt eq 'CHECKALLDOMAINS')
+
+ if ($trt eq 'CHECKALLENABLEDDOMAINS') {
+
+ #Validate form parameters for panel CHECKALLENABLEDDOMAINS
+ $ret = $c->validate_CHECKALLENABLEDDOMAINS(\%lets_data);
+ $thispanel = 'CHECKALLENABLEDDOMAINS';
+ } ## end if ($trt eq 'CHECKALLENABLEDDOMAINS')
+
+ if ($trt eq 'CHECKONEDOMAIN') {
+
+ #Validate form parameters for panel CHECKONEDOMAIN
+ $ret = $c->validate_CHECKONEDOMAIN(\%lets_data);
+ $thispanel = 'CHECKONEDOMAIN';
+ } ## end if ($trt eq 'CHECKONEDOMAIN')
+
+ if ($ret ne "ok") {
+ $c->do_display($thispanel);
+ } else {
+
+ #Do whatever is needed, including writing values to the DB
+ if ($trt eq 'LIST') {
+
+ #do whatever is required ...
+ $ret = $c->perform_LIST(\%lets_data);
+
+ if ($ret ne "ok") {
+
+ # return to the panel with error message
+ $c->stash(error => $c->l($ret));
+ $c->stash(
+ title => $title,
+ modul => $modul,
+ lets_data => \%lets_data
+ );
+ $c->render(template => "letsencrypt");
+ } else {
+ $c->stash(success => $c->l('lets_LIST_panel_action_was_successful'))
+ ; #A bit bland - edit it in the lex file
+ }
+ } ## end if ($trt eq 'LIST')
+
+ if ($trt eq 'PARAMS') {
+
+ #do whatever is required ...
+ $ret = $c->perform_PARAMS(\%lets_data);
+
+ if ($ret ne "ok") {
+
+ # return to the panel with error message
+ $c->stash(error => $c->l($ret));
+ $c->stash(
+ title => $title,
+ modul => $modul,
+ lets_data => \%lets_data
+ );
+ $c->render(template => "letsencrypt");
+ } else {
+ $c->stash(success => $c->l('lets_PARAMS_panel_action_was_successful'))
+ ; #A bit bland - edit it in the lex file
+ }
+ } ## end if ($trt eq 'PARAMS')
+
+ if ($trt eq 'CHECKALLDOMAINS') {
+
+ #do whatever is required ...
+ $ret = $c->perform_CHECKALLDOMAINS(\%lets_data);
+
+ if ($ret ne "ok") {
+
+ # return to the panel with error message
+ $c->stash(error => $c->l($ret));
+ $c->stash(
+ title => $title,
+ modul => $modul,
+ lets_data => \%lets_data
+ );
+ $c->render(template => "letsencrypt");
+ } else {
+ $c->stash(success => $c->l('lets_CHECKALLDOMAINS_panel_action_was_successful'))
+ ; #A bit bland - edit it in the lex file
+ }
+ } ## end if ($trt eq 'CHECKALLDOMAINS')
+
+ if ($trt eq 'CHECKALLENABLEDDOMAINS') {
+
+ #do whatever is required ...
+ $ret = $c->perform_CHECKALLENABLEDDOMAINS(\%lets_data);
+
+ if ($ret ne "ok") {
+
+ # return to the panel with error message
+ $c->stash(error => $c->l($ret));
+ $c->stash(
+ title => $title,
+ modul => $modul,
+ lets_data => \%lets_data
+ );
+ $c->render(template => "letsencrypt");
+ } else {
+ $c->stash(success => $c->l('lets_CHECKALLENABLEDDOMAINS_panel_action_was_successful'))
+ ; #A bit bland - edit it in the lex file
+ }
+ } ## end if ($trt eq 'CHECKALLENABLEDDOMAINS')
+
+ if ($trt eq 'CHECKONEDOMAIN') {
+
+ #do whatever is required ...
+ $ret = $c->perform_CHECKONEDOMAIN(\%lets_data);
+
+ if ($ret ne "ok") {
+
+ # return to the panel with error message
+ $c->stash(error => $c->l($ret));
+ $c->stash(
+ title => $title,
+ modul => $modul,
+ lets_data => \%lets_data
+ );
+ $c->render(template => "letsencrypt");
+ } else {
+ $c->stash(success => $c->l('lets_CHECKONEDOMAIN_panel_action_was_successful'))
+ ; #A bit bland - edit it in the lex file
+ }
+ } ## end if ($trt eq 'CHECKONEDOMAIN')
+
+ # and call any signal-events needed
+ #TBD
+ # Setup shared data and call panel
+ if ('none' eq 'none') {
+ $lets_data{'trt'} = 'LIST';
+ } else {
+ $lets_data{'trt'} = 'none';
+ }
+ $c->do_display($lets_data{'trt'});
+ } ## end else [ if ($ret ne "ok") ]
+} ## end sub do_update
sub do_display {
-#
-# Return after link clicked in table (this is a get) - route is "/d"
-# Expects ?trt=PANEL&selected="TableRowName" plus any other required
-#
-# OR it maybe a post from the main panel to add a new record
-#
-#load up all supplied params into prefix_data hash
-#call get-selected-PANEL() - returns hash of all relevent parameters
-#load up returned hash into prefix_data
-#render - to called panel
-
- my ($c,$trt) = @_;
+ #
+ # Return after link clicked in table (this is a get) - route is "/d"
+ # Expects ?trt=PANEL&selected="TableRowName" plus any other required
+ #
+ # OR it maybe a post from the main panel to add a new record
+ #
+ #load up all supplied params into prefix_data hash
+ #call get-selected-PANEL() - returns hash of all relevent parameters
+ #load up returned hash into prefix_data
+ #render - to called panel
+ my ($c, $trt) = @_;
$c->app->log->info($c->log_req);
- #The most common ones - you might want to comment out any not used.
- my $cdb = esmith::ConfigDB->open() || die("Couldn't open config db");
- my $adb = esmith::AccountsDB->open() || die("Couldn't open Accounts db");
- my $ndb = esmith::NetworksDB->open() || die("Couldn't open Network db");
- my $hdb = esmith::HostsDB->open() || die("Couldn't open Hosts db");
- my $ddb = esmith::DomainsDB->open() || die("Couldn't open Domains db");
-
+ #The most common ones - you might want to comment out any not used.
+ my $cdb = esmith::ConfigDB->open() || die("Couldn't open config db");
+ my $adb = esmith::AccountsDB->open() || die("Couldn't open Accounts db");
+ my $ndb = esmith::NetworksDB->open() || die("Couldn't open Network db");
+ my $hdb = esmith::HostsDB->open() || die("Couldn't open Hosts db");
+ my $ddb = esmith::DomainsDB->open() || die("Couldn't open Domains db");
my %lets_data = ();
- my $title = $c->l('lets_Letsencrypt_certificate');
- my $modul = "";
+ my $title = $c->l('lets_Letsencrypt_certificate');
+ my $modul = "";
- # Accessing all parameters
- my %params = $c->req->params->to_hash;
+ # Accessing all parameters
+ my $params = $c->req->params->to_hash;
# Get number of parameters
- my $num_params = keys %params;
-
+ my $num_params = scalar keys %$params;
+
#Tag as Post or Get (ie. create new entry or edit existing one
my $is_new_record = ($c->req->method() eq 'POST');
-
+
#Params are available in the hash "params" - copy to the prefix_data hash
#while (my ($key, $value) = each %{$c->req->params->to_hash}) {
# $lets_data{$key} = $value;
#}
+ # the value of trt will tell you which panel has returned
+ if (!$trt) {
+ $trt = $c->param('trt') || 'LIST'; #Indicates where to go now
+ }
- # the value of trt will tell you which panel has returned
- if (! $trt){
- $trt = $c->param('trt') || 'LIST'; #Indicates where to go now
- }
-
# Now add in the params from the selected row from the table
-
my %selectedrow;
-
- if ($trt eq 'LIST'){
- #Validate Get selected row (if applicable) LIST
- %selectedrow = $c->get_selected_LIST($lets_data{'Selected'},$is_new_record);
- }
-
- if ($trt eq 'PARAMS'){
- #Validate Get selected row (if applicable) PARAMS
- %selectedrow = $c->get_selected_PARAMS($lets_data{'Selected'},$is_new_record);
- }
-
- if ($trt eq 'CHECKALLDOMAINS'){
- #Validate Get selected row (if applicable) CHECKALLDOMAINS
- %selectedrow = $c->get_selected_CHECKALLDOMAINS($lets_data{'Selected'},$is_new_record);
- }
-
- if ($trt eq 'CHECKALLENABLEDDOMAINS'){
- #Validate Get selected row (if applicable) CHECKALLENABLEDDOMAINS
- %selectedrow = $c->get_selected_CHECKALLENABLEDDOMAINS($lets_data{'Selected'},$is_new_record);
- }
-
- if ($trt eq 'CHECKONEDOMAIN'){
- #Validate Get selected row (if applicable) CHECKONEDOMAIN
- %selectedrow = $c->get_selected_CHECKONEDOMAIN($lets_data{'Selected'},$is_new_record);
- }
-
-
- #Copy in the selected row params to the prefix_data hash to pass to the panel
- while (my ($key, $value) = each %selectedrow){
+
+ if ($trt eq 'LIST') {
+
+ #Validate Get selected row (if applicable) LIST
+ %selectedrow = $c->get_selected_LIST($lets_data{'Selected'}, $is_new_record);
+ } ## end if ($trt eq 'LIST')
+
+ if ($trt eq 'PARAMS') {
+
+ #Validate Get selected row (if applicable) PARAMS
+ %selectedrow = $c->get_selected_PARAMS($lets_data{'Selected'}, $is_new_record);
+ } ## end if ($trt eq 'PARAMS')
+
+ if ($trt eq 'CHECKALLDOMAINS') {
+
+ #Validate Get selected row (if applicable) CHECKALLDOMAINS
+ %selectedrow = $c->get_selected_CHECKALLDOMAINS($lets_data{'Selected'}, $is_new_record);
+ } ## end if ($trt eq 'CHECKALLDOMAINS')
+
+ if ($trt eq 'CHECKALLENABLEDDOMAINS') {
+
+ #Validate Get selected row (if applicable) CHECKALLENABLEDDOMAINS
+ %selectedrow = $c->get_selected_CHECKALLENABLEDDOMAINS($lets_data{'Selected'}, $is_new_record);
+ } ## end if ($trt eq 'CHECKALLENABLEDDOMAINS')
+
+ if ($trt eq 'CHECKONEDOMAIN') {
+
+ #Validate Get selected row (if applicable) CHECKONEDOMAIN
+ %selectedrow = $c->get_selected_CHECKONEDOMAIN($lets_data{'Selected'}, $is_new_record);
+ } ## end if ($trt eq 'CHECKONEDOMAIN')
+
+ #Copy in the selected row params to the prefix_data hash to pass to the panel
+ while (my ($key, $value) = each %selectedrow) {
$lets_data{$key} = $value;
}
- # Where to go now
- $lets_data{'trt'} = $trt;
-
- # Set up other shared data according to the panel to go to
-
- if ($trt eq 'LIST'){
- # pickup any other contents needed and load them into hash shared with panel
- my %returned_hash;
- # subroutine returns a hash directly
- %returned_hash = $c->get_data_for_panel_LIST();
- # Copy each key-value pair from the returned hash to the prefix data hash
- while (my ($key, $value) = each %returned_hash) {
- $lets_data{$key} = $value;
- }
- }
-
- if ($trt eq 'PARAMS'){
- # pickup any other contents needed and load them into hash shared with panel
- my %returned_hash;
- # subroutine returns a hash directly
- %returned_hash = $c->get_data_for_panel_PARAMS();
- # Copy each key-value pair from the returned hash to the prefix data hash
- while (my ($key, $value) = each %returned_hash) {
- $lets_data{$key} = $value;
- }
- }
-
- if ($trt eq 'CHECKALLDOMAINS'){
- # pickup any other contents needed and load them into hash shared with panel
- my %returned_hash;
- # subroutine returns a hash directly
- %returned_hash = $c->get_data_for_panel_CHECKALLDOMAINS();
- # Copy each key-value pair from the returned hash to the prefix data hash
- while (my ($key, $value) = each %returned_hash) {
- $lets_data{$key} = $value;
- }
- }
-
- if ($trt eq 'CHECKALLENABLEDDOMAINS'){
- # pickup any other contents needed and load them into hash shared with panel
- my %returned_hash;
- # subroutine returns a hash directly
- %returned_hash = $c->get_data_for_panel_CHECKALLENABLEDDOMAINS();
- # Copy each key-value pair from the returned hash to the prefix data hash
- while (my ($key, $value) = each %returned_hash) {
- $lets_data{$key} = $value;
- }
- }
-
- if ($trt eq 'CHECKONEDOMAIN'){
- # pickup any other contents needed and load them into hash shared with panel
- my %returned_hash;
- # subroutine returns a hash directly
- %returned_hash = $c->get_data_for_panel_CHECKONEDOMAIN();
- # Copy each key-value pair from the returned hash to the prefix data hash
- while (my ($key, $value) = each %returned_hash) {
- $lets_data{$key} = $value;
- }
- }
-
-
- # and table control fields
- $c->stash(DomainList=>$c->get_DomainList());
-
-
- # Data for panel
- $c->stash(
- title => $title,
- modul => $modul,
- lets_data => \%lets_data
- );
- $c->render(template => "letsencrypt");
-}
+
+ # Where to go now
+ $lets_data{'trt'} = $trt;
+
+ # Set up other shared data according to the panel to go to
+ if ($trt eq 'LIST') {
+
+ # pickup any other contents needed and load them into hash shared with panel
+ my %returned_hash;
+
+ # subroutine returns a hash directly
+ %returned_hash = $c->get_data_for_panel_LIST();
+
+ # Copy each key-value pair from the returned hash to the prefix data hash
+ while (my ($key, $value) = each %returned_hash) {
+ $lets_data{$key} = $value;
+ }
+ } ## end if ($trt eq 'LIST')
+
+ if ($trt eq 'PARAMS') {
+
+ # pickup any other contents needed and load them into hash shared with panel
+ my %returned_hash;
+
+ # subroutine returns a hash directly
+ %returned_hash = $c->get_data_for_panel_PARAMS();
+
+ # Copy each key-value pair from the returned hash to the prefix data hash
+ while (my ($key, $value) = each %returned_hash) {
+ $lets_data{$key} = $value;
+ }
+ } ## end if ($trt eq 'PARAMS')
+
+ if ($trt eq 'CHECKALLDOMAINS') {
+
+ # pickup any other contents needed and load them into hash shared with panel
+ my %returned_hash;
+
+ # subroutine returns a hash directly
+ %returned_hash = $c->get_data_for_panel_CHECKALLDOMAINS();
+
+ # Copy each key-value pair from the returned hash to the prefix data hash
+ while (my ($key, $value) = each %returned_hash) {
+ $lets_data{$key} = $value;
+ }
+ } ## end if ($trt eq 'CHECKALLDOMAINS')
+
+ if ($trt eq 'CHECKALLENABLEDDOMAINS') {
+
+ # pickup any other contents needed and load them into hash shared with panel
+ my %returned_hash;
+
+ # subroutine returns a hash directly
+ %returned_hash = $c->get_data_for_panel_CHECKALLENABLEDDOMAINS();
+
+ # Copy each key-value pair from the returned hash to the prefix data hash
+ while (my ($key, $value) = each %returned_hash) {
+ $lets_data{$key} = $value;
+ }
+ } ## end if ($trt eq 'CHECKALLENABLEDDOMAINS')
+
+ if ($trt eq 'CHECKONEDOMAIN') {
+
+ # pickup any other contents needed and load them into hash shared with panel
+ my %returned_hash;
+
+ # subroutine returns a hash directly
+ %returned_hash = $c->get_data_for_panel_CHECKONEDOMAIN();
+
+ # Copy each key-value pair from the returned hash to the prefix data hash
+ while (my ($key, $value) = each %returned_hash) {
+ $lets_data{$key} = $value;
+ }
+ } ## end if ($trt eq 'CHECKONEDOMAIN')
+
+ # and table control fields
+ $c->stash(DomainList => $c->get_DomainList());
+
+ # Data for panel
+ $c->stash(
+ title => $title,
+ modul => $modul,
+ lets_data => \%lets_data
+ );
+ $c->render(template => "letsencrypt");
+} ## end sub do_display
1;
\ No newline at end of file
diff --git a/Targets/Nutups/Nutups-Custom.pm b/Targets/Nutups/Nutups-Custom.pm
index 090d007..0606bc2 100644
--- a/Targets/Nutups/Nutups-Custom.pm
+++ b/Targets/Nutups/Nutups-Custom.pm
@@ -69,13 +69,12 @@ our $ddb = esmith::DomainsDB->open() || die("Couldn't open Domains db");
# Get singleton data for each panel
- sub get_data_for_panel_STATUS {
+ sub get_data_for_panel_STATUS {
# Return a hash with the fields required which will be loaded into the shared data
my $c = shift;
my %ret = (
- 'Data1'=>'Data for STATUS', #Example
# fields from Inputs in STATUS $fields['STATUS']
- 'UPSStatus'=>'UPSStatus contents',
+ 'UPSStatus'=>get_ups_details()
);
return %ret;
@@ -85,18 +84,18 @@ our $ddb = esmith::DomainsDB->open() || die("Couldn't open Domains db");
# Return a hash with the fields required which will be loaded into the shared data
my $c = shift;
my %ret = (
- 'Data1'=>'Data for CONFIG', #Example
# fields from Inputs in CONFIG $fields['CONFIG']
- 'status'=>'status contents',
- 'Nutmode'=>'Nutmode contents',
- 'SlaveUPS_Name'=>'SlaveUPS_Name contents',
- 'MasterUPS_Name'=>'MasterUPS_Name contents',
- 'UPS_Model'=>'UPS_Model contents',
- 'UPS_Device'=>'UPS_Device contents',
- 'UPS_gen_Type'=>'UPS_gen_Type contents',
- 'UPS_gen_Mfr'=>'UPS_gen_Mfr contents',
- 'UPS_gen_Model'=>'UPS_gen_Model contents',
-
+ 'status'=>$cdb->get_prop('nut', 'status', 'disabled'),
+ 'Nutmode'=>$cdb->get_prop('nut', 'mode', 'standalone'),
+ 'SlaveUPS_Name'=>$cdb->get_prop('nut', 'SlaveUPS', ''),
+ 'MasterUPS_Name'=>$cdb->get_prop('nut', 'MasterUPS', ''),
+ 'UPS_Model'=>$cdb->get_prop('nut', 'Model', 'usbhid-ups'),
+ 'UPS_Device'=>$cdb->get_prop('nut', 'Device', 'auto'),
+ 'UPS_gen_Type'=>$cdb->get_prop('nut', 'Type', ''),
+ 'UPS_gen_Mfr'=>$cdb->get_prop('nut', 'mfr', ''),
+ 'UPS_gen_Model'=>$cdb->get_prop('nut', 'mdl', ''),
+ 'MasterUPS_Password'=>$cdb->get_prop('nut', 'MasterPass', ''),
+ 'SlaveUPS_Password'=>$cdb->get_prop('nut', 'SlavePass', ''),
);
return %ret;
}
@@ -114,7 +113,7 @@ our $ddb = esmith::DomainsDB->open() || die("Couldn't open Domains db");
my $selected = shift; #Parameter is name of selected row.
my $is_new_record = shift; #Indicates new record required (defaults)
my %ret = {};
- return $ret;
+ return %ret;
}
sub get_selected_CONFIG {
@@ -122,7 +121,7 @@ our $ddb = esmith::DomainsDB->open() || die("Couldn't open Domains db");
my $selected = shift; #Parameter is name of selected row.
my $is_new_record = shift; #Indicates new record required (defaults)
my %ret = {};
- return $ret;
+ return %ret;
}
@@ -146,27 +145,28 @@ our $ddb = esmith::DomainsDB->open() || die("Couldn't open Domains db");
my $c = shift;
my $prefix_data = shift; #Data hash as parameter
my $ret = "";
+ our $cdb = esmith::ConfigDB->open() || die("Couldn't open config db");
my $db = $cdb; #maybe one of the others
- my $dbkey = 'ChangeThis';
+ my $dbkey = 'nut';
# To make it write to DB as comment, delete this (regex) string in each if statement "TRUE\) \#copy or perform with value: .* e.g."
- if (! TRUE) #copy or perform with value: status e.g. $db->set_prop($dbkey,'status',$c->param('status'),type=>'service'))
+ if (!$db->set_prop($dbkey,'status',$c->param('status'),type=>'service'))
{$ret .= 'Perform/save failed for status';}
- if (! TRUE) #copy or perform with value: Nutmode e.g. $db->set_prop($dbkey,'Nutmode',$c->param('Nutmode'),type=>'service'))
+ if (!$db->set_prop($dbkey,'Nutmode',$c->param('Nutmode'),type=>'service'))
{$ret .= 'Perform/save failed for Nutmode';}
- if (! TRUE) #copy or perform with value: SlaveUPS_Name e.g. $db->set_prop($dbkey,'SlaveUPS_Name',$c->param('SlaveUPS_Name'),type=>'service'))
+ if (!$db->set_prop($dbkey,'SlaveUPS_Name',$c->param('SlaveUPS_Name'),type=>'service'))
{$ret .= 'Perform/save failed for SlaveUPS_Name';}
- if (! TRUE) #copy or perform with value: MasterUPS_Name e.g. $db->set_prop($dbkey,'MasterUPS_Name',$c->param('MasterUPS_Name'),type=>'service'))
+ if (!$db->set_prop($dbkey,'MasterUPS_Name',$c->param('MasterUPS_Name'),type=>'service'))
{$ret .= 'Perform/save failed for MasterUPS_Name';}
- if (! TRUE) #copy or perform with value: UPS_Model e.g. $db->set_prop($dbkey,'UPS_Model',$c->param('UPS_Model'),type=>'service'))
+ if (!$db->set_prop($dbkey,'Model',$c->param('UPS_Model'),type=>'service'))
{$ret .= 'Perform/save failed for UPS_Model';}
- if (! TRUE) #copy or perform with value: UPS_Device e.g. $db->set_prop($dbkey,'UPS_Device',$c->param('UPS_Device'),type=>'service'))
+ if (!$db->set_prop($dbkey,'Device',$c->param('UPS_Device'),type=>'service'))
{$ret .= 'Perform/save failed for UPS_Device';}
- if (! TRUE) #copy or perform with value: UPS_gen_Type e.g. $db->set_prop($dbkey,'UPS_gen_Type',$c->param('UPS_gen_Type'),type=>'service'))
+ if (!$db->set_prop($dbkey,'Type',$c->param('UPS_gen_Type'),type=>'service'))
{$ret .= 'Perform/save failed for UPS_gen_Type';}
- if (! TRUE) #copy or perform with value: UPS_gen_Mfr e.g. $db->set_prop($dbkey,'UPS_gen_Mfr',$c->param('UPS_gen_Mfr'),type=>'service'))
+ if (!$db->set_prop($dbkey,'mfr',$c->param('UPS_gen_Mfr'),type=>'service'))
{$ret .= 'Perform/save failed for UPS_gen_Mfr';}
- if (! TRUE) #copy or perform with value: UPS_gen_Model e.g. $db->set_prop($dbkey,'UPS_gen_Model',$c->param('UPS_gen_Model'),type=>'service'))
+ if (!$db->set_prop($dbkey,'mdl',$c->param('UPS_gen_Model'),type=>'service'))
{$ret .= 'Perform/save failed for UPS_gen_Model';}
if ($ret eq "") {$ret = 'ok';}
return $ret;
@@ -183,7 +183,7 @@ sub create_link{
sub get_model_options {
# Execute the RPM command and capture the output
- my @output = qx{rpm -ql nut | grep /usr/sbin};
+ my @output = qx{rpm -ql nut | grep /usr/sbin/};
# Check for errors
if ($? != 0) {
@@ -192,10 +192,43 @@ sub get_model_options {
}
# Remove "/usr/sbin" from the front of each line
- s{^/usr/sbin}{} for @output;
+ s{^/usr/sbin/}{} for @output;
# Trim whitespace from each element and return the array
chomp(@output); # Remove newline characters from each line
- return ["fred","Art"] #@output; # Return the array of modified output lines
+ return @output; # Return the array of modified output lines
+}
+
+sub get_ups_details {
+ my ($ups_system_name) = @_;
+ # Determine the default based on $nut
+ if ( ($cdb->get_prop('nut', 'Master', 'yes')) eq 'yes' ) {
+ $ups_system_name //= $cdb->get_prop('nut', 'MasterUPS', 'UPS\@localhost'); # Master from DB
+ } else {
+ $ups_system_name //= $cdb->get_prop('nut', 'SlaveUPS', 'apc\@192.168.1.99'); # Use Slave UPS if Master is "no"
+ }
+
+ # If ups_system_name is still empty or undefined, use the hardcoded default
+ #$ups_system_name //= "apc\@192.168.1.99"; # Fallback default
+
+
+ # Execute the 'upsc' command
+ my $command = "/usr/bin/upsc $ups_system_name";
+ my $result = qx/$command/;
+
+ # Check for execution errors
+ if ($? != 0) {
+ return "Error executing command: $! ($command)";
+ }
+
+ # Format the output
+ my @lines = split /\n/, $result; # Split the result into lines
+ my $formatted_output = "UPS Details for $ups_system_name:\n";
+
+ foreach my $line (@lines) {
+ $formatted_output .= " - $line\n"; # Format each line
+ }
+
+ return $formatted_output;
}
1;
\ No newline at end of file
diff --git a/Targets/Nutups/Nutups.pm b/Targets/Nutups/Nutups.pm
index 1c6dae7..f643560 100644
--- a/Targets/Nutups/Nutups.pm
+++ b/Targets/Nutups/Nutups.pm
@@ -232,10 +232,10 @@ sub do_display {
my $modul = "";
# Accessing all parameters
- my %params = $c->req->params->to_hash;
+ my $params = $c->req->params->to_hash;
# Get number of parameters
- my $num_params = keys %params;
+ my $num_params = scalar keys %$params;
#Tag as Post or Get (ie. create new entry or edit existing one
my $is_new_record = ($c->req->method() eq 'POST');
diff --git a/Targets/Nutups/_nut_CONFIG.html.ep b/Targets/Nutups/_nut_CONFIG.html.ep
index b84e179..446a6df 100644
--- a/Targets/Nutups/_nut_CONFIG.html.ep
+++ b/Targets/Nutups/_nut_CONFIG.html.ep
@@ -7,7 +7,7 @@
SelectInput();
};
- % if ($config->{debug} == 1) {
+ % if (config->{debug} == 1) {
%= dumper $nut_data
@@ -17,6 +17,8 @@
% param 'trt' => $nut_data->{trt} unless param 'trt';
%= hidden_field 'trt' => $nut_data->{trt}
%# Inputs etc in here.
+ %# my $ServerNameReg = '([A-Za-z0-9._%+-]+)@((?:(?:[A-Za-z0-9-]+\.)+[A-Za-z]{2,}|(?:\d{1,3}\.){3}\d{1,3})|(?:[A-Za-z0-9-]+))';
+ % my $ServerNameReg = '(.*)@(.*)';
<%=l('nut_Manage_Nutups-config_settings:')%>
@@ -45,14 +47,15 @@
%=l('nut_SlaveUPS_UPSNAME@IP')
% param 'SlaveUPS_Name' => $nut_data->{SlaveUPS_Name} unless param 'SlaveUPS_Name';
- %= text_field 'SlaveUPS_Name', size => '50', class => 'textinput SlaveUPS_Name' , pattern=>'.*' , placeholder=>'SlaveUPS_Name'
+ %= text_field 'SlaveUPS_Name', size => '50', class => 'textinput SlaveUPS_Name', pattern => "$ServerNameReg", placeholder=>'server@ip', title=>"Expecting UPSname\@IP or hostname"
%=l('nut_SlaveUPS_Password')
+ % my $placeholder1 = ($nut_data->{MasterUPS_Password} && $nut_data->{MasterUPS_Password} =~ /\S/) ? "password set" : "password not set";
% param 'SlaveUPS_Password' => $nut_data->{SlaveUPS_Password} unless param 'SlaveUPS_Password';
- %=password_field 'SlaveUPS_Password', class => 'pass4 sme-password'
+ %=password_field 'SlaveUPS_Password', class => 'pass4 sme-password' , placeholder => $placeholder1
@@ -68,14 +71,15 @@
%=l('nut_MasterUPS_UPSNAME@IP')
% param 'MasterUPS_Name' => $nut_data->{MasterUPS_Name} unless param 'MasterUPS_Name';
- %= text_field 'MasterUPS_Name', size => '50', class => 'textinput MasterUPS_Name' , pattern=>'.*' , placeholder=>'MasterUPS_Name'
+ %= text_field 'MasterUPS_Name', size => '50', class => 'textinput MasterUPS_Name' , pattern=>$ServerNameReg , placeholder=>'server@ip', title=>"Expecting UPSname\@IP or hostname"
%=l('nut_MasterUPS_Password')
+ % my $placeholder2 = ($nut_data->{MasterUPS_Password} && $nut_data->{MasterUPS_Password} =~ /\S/) ? "password set" : "password not set";
% param 'MasterUPS_Password' => $nut_data->{MasterUPS_Password} unless param 'MasterUPS_Password';
- %=password_field 'MasterUPS_Password', class => 'pass6 sme-password'
+ %=password_field 'MasterUPS_Password', class => 'pass6 sme-password', placeholder => $placeholder2
diff --git a/Templates/controller.pm.tem b/Templates/controller.pm.tem
index d59617c..5505e06 100644
--- a/Templates/controller.pm.tem
+++ b/Templates/controller.pm.tem
@@ -125,11 +125,11 @@ sub do_update {
my %${prefix}_data = ();
my $title = $c->l('${prefix}_${MenuDescription}');
- # Accessing all POST parameters
- my %params = $c->req->params->to_hash;
+ # Accessing all POST/GET parameters
+ my $params = $c->req->params->to_hash;
# Get number of POST parameters
- my $num_params = keys %params;
+ my $num_params = keys scaler %$params;
#Params are available in the hash "params" - copy to the prefix_data hash
#while (my ($key, $value) = each %{$c->req->params->to_hash}) {
diff --git a/Templates/custom.pm.tem b/Templates/custom.pm.tem
index 58461b8..61df817 100644
--- a/Templates/custom.pm.tem
+++ b/Templates/custom.pm.tem
@@ -103,7 +103,7 @@ sub get_${tablecontrol[0]} {
my $selected = shift; #Parameter is name of selected row.
my $is_new_record = shift; #Indicates new record required (defaults)
my %ret = {};
- return $ret;
+ return %ret;
}
diff --git a/Templates/layout.html.ep.tem b/Templates/layout.html.ep.tem
index 7c08ecf..99ca07b 100644
--- a/Templates/layout.html.ep.tem
+++ b/Templates/layout.html.ep.tem
@@ -32,6 +32,7 @@
%= $c->l($c->stash('success'));
+
%} elsif ($c->stash('error')) {
@@ -39,6 +40,7 @@
%= $c->l($c->stash('error'));
+
%}
%#Routing to partials according to trt parameter.