Refine and re-write table data interface to contain the custom code in one place
This commit is contained in:
		@@ -1,11 +1,12 @@
 | 
			
		||||
#
 | 
			
		||||
# Generated by SM2Gen version:0.8 Chameleon version:4.5.4 On Python:3.12.3 at 2024-11-14 11:31:47 
 | 
			
		||||
# 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
 | 
			
		||||
# and provison of the control data for table(s)
 | 
			
		||||
#
 | 
			
		||||
use esmith::util;
 | 
			
		||||
use esmith::util::network;
 | 
			
		||||
use esmith::ConfigDB;
 | 
			
		||||
use esmith::HostsDB;
 | 
			
		||||
use esmith::AccountsDB;
 | 
			
		||||
@@ -31,24 +32,18 @@ our $ddb = esmith::DomainsDB->open()  || die("Couldn't open Domains db");
 | 
			
		||||
		# 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 (! 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;
 | 
			
		||||
	}
 | 
			
		||||
@@ -59,30 +54,22 @@ our $ddb = esmith::DomainsDB->open()  || die("Couldn't open Domains db");
 | 
			
		||||
		# 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 (! 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;
 | 
			
		||||
	}
 | 
			
		||||
@@ -93,9 +80,8 @@ our $ddb = esmith::DomainsDB->open()  || die("Couldn't open Domains db");
 | 
			
		||||
		# Validation for each field 
 | 
			
		||||
		my $ret = "";
 | 
			
		||||
		
 | 
			
		||||
			if (! TRUE) #validate $c->param('AllDomainsCheck')
 | 
			
		||||
				{$ret .= 'Validation for AllDomainsCheck failed';}
 | 
			
		||||
		
 | 
			
		||||
		if (! TRUE) #validate $c->param('AllDomainsCheck')
 | 
			
		||||
			{$ret .= 'Validation for AllDomainsCheck failed';}	
 | 
			
		||||
		if ($ret eq "") {$ret = 'ok';}
 | 
			
		||||
		return $ret;
 | 
			
		||||
	}
 | 
			
		||||
@@ -106,9 +92,8 @@ our $ddb = esmith::DomainsDB->open()  || die("Couldn't open Domains db");
 | 
			
		||||
		# Validation for each field 
 | 
			
		||||
		my $ret = "";
 | 
			
		||||
		
 | 
			
		||||
			if (! TRUE) #validate $c->param('EnabledDomainsCheck')
 | 
			
		||||
				{$ret .= 'Validation for EnabledDomainsCheck failed';}
 | 
			
		||||
		
 | 
			
		||||
		if (! TRUE) #validate $c->param('EnabledDomainsCheck')
 | 
			
		||||
			{$ret .= 'Validation for EnabledDomainsCheck failed';}	
 | 
			
		||||
		if ($ret eq "") {$ret = 'ok';}
 | 
			
		||||
		return $ret;
 | 
			
		||||
	}
 | 
			
		||||
@@ -119,12 +104,10 @@ our $ddb = esmith::DomainsDB->open()  || die("Couldn't open Domains db");
 | 
			
		||||
		# 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 (! 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;
 | 
			
		||||
	}
 | 
			
		||||
@@ -145,7 +128,7 @@ our $ddb = esmith::DomainsDB->open()  || die("Couldn't open Domains db");
 | 
			
		||||
			# fields from Inputs in LIST $fields['LIST']
 | 
			
		||||
			'InternalIP'=>$cdb->get_prop('InternalInterface','IPAddress'),
 | 
			
		||||
			'ExternalIP'=>$cdb->get_prop('ExternalInterface','IPAddress'),
 | 
			
		||||
			'InternetIP'=>"ext ip", #get_my_ip()
 | 
			
		||||
			'InternetIP'=>$c->get_my_ip(),
 | 
			
		||||
			'Issuer'=>'$issuer',
 | 
			
		||||
			'Expiry'=>'$expiry',
 | 
			
		||||
			'NotBefore'=>'$before',
 | 
			
		||||
@@ -177,9 +160,7 @@ our $ddb = esmith::DomainsDB->open()  || die("Couldn't open Domains db");
 | 
			
		||||
		my %ret = (
 | 
			
		||||
			'Data1'=>'Data for CHECKALLDOMAINS', #Example
 | 
			
		||||
			# fields from Inputs in CHECKALLDOMAINS $fields['CHECKALLDOMAINS']
 | 
			
		||||
			
 | 
			
		||||
				'AllDomainsCheck'=>'Scan running',
 | 
			
		||||
			
 | 
			
		||||
			'AllDomainsCheck'=>'AllDomainsCheck contents',
 | 
			
		||||
			
 | 
			
		||||
		);
 | 
			
		||||
		return %ret;
 | 
			
		||||
@@ -191,93 +172,127 @@ our $ddb = esmith::DomainsDB->open()  || die("Couldn't open Domains db");
 | 
			
		||||
		my %ret = (
 | 
			
		||||
			'Data1'=>'Data for CHECKALLENABLEDDOMAINS', #Example
 | 
			
		||||
			# fields from Inputs in CHECKALLENABLEDDOMAINS $fields['CHECKALLENABLEDDOMAINS']
 | 
			
		||||
			
 | 
			
		||||
				'EnabledDomainsCheck'=>'EnabledDomainsCheck contents',
 | 
			
		||||
			
 | 
			
		||||
			'EnabledDomainsCheck'=>'EnabledDomainsCheck contents',
 | 
			
		||||
			
 | 
			
		||||
		);
 | 
			
		||||
		return %ret;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
	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 CHECKONEDDOMAINS', #Example
 | 
			
		||||
			# fields from Inputs in CHECKONEDDOMAINS $fields['CHECKONEDDOMAINS']
 | 
			
		||||
			
 | 
			
		||||
				'OneDomainToCheck'=>'OneDomainToCheck contents',
 | 
			
		||||
			
 | 
			
		||||
				'OneDomainsCheck'=>'OneDomainsCheck contents',
 | 
			
		||||
			
 | 
			
		||||
			'Data1'=>'Data for CHECKONEDOMAIN', #Example
 | 
			
		||||
			# fields from Inputs in CHECKONEDOMAIN $fields['CHECKONEDOMAIN']
 | 
			
		||||
			'OneDomainToCheck'=>'OneDomainToCheck contents',
 | 
			
		||||
			'OneDomainsCheck'=>'OneDomainsCheck contents',
 | 
			
		||||
			
 | 
			
		||||
		);
 | 
			
		||||
		return %ret;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
	
 | 
			
		||||
 | 
			
		||||
# Get control data for table(s)
 | 
			
		||||
 | 
			
		||||
	sub get_DomainList {
 | 
			
		||||
		# Return an array of hashes of the contents for each row and column for DomainList
 | 
			
		||||
		# default is a single row of strings "col1header-1, col2header-1, col3Header-1 etc"
 | 
			
		||||
		my $c = shift;
 | 
			
		||||
		my $control_data = $c->stash('DomainList');
 | 
			
		||||
		#my @ret = {};
 | 
			
		||||
		
 | 
			
		||||
		my @list = ();
 | 
			
		||||
#		my @rv = Net::SSLeay::X509_get_subjectAltNames($server_cert);
 | 
			
		||||
#		foreach my $element (@rv) {
 | 
			
		||||
	# 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
 | 
			
		||||
	);
 | 
			
		||||
	
 | 
			
		||||
	
 | 
			
		||||
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;
 | 
			
		||||
	# 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 @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 = "<a href='".$link."&dom=".$_->key."'>".$check."</a>";
 | 
			
		||||
		#my $checklink = "<a href=''>check</a>";
 | 
			
		||||
		$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))
 | 
			
		||||
		{
 | 
			
		||||
			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 = "<a href='".$link."&dom=".$_->key."'>".$check."</a>";
 | 
			
		||||
			#my $checklink = "<a href=''>check</a>";
 | 
			
		||||
			$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),
 | 
			
		||||
				  }
 | 
			
		||||
			}
 | 
			
		||||
			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 @data;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
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 @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};
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        # Add transformed record to the array if it's not empty
 | 
			
		||||
        push @transformed_records, \%transformed_record if %transformed_record;
 | 
			
		||||
    }
 | 
			
		||||
    return \@transformed_records;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# Return hash with values from row in which link clicked on table
 | 
			
		||||
@@ -330,24 +345,18 @@ our $ddb = esmith::DomainsDB->open()  || die("Couldn't open Domains db");
 | 
			
		||||
		my $prefix_data = shift; #Data hash as parameter
 | 
			
		||||
		my $ret = "";
 | 
			
		||||
		
 | 
			
		||||
			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(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 ($ret eq "") {$ret = 'ok';}
 | 
			
		||||
		return $ret;
 | 
			
		||||
	}
 | 
			
		||||
@@ -357,30 +366,22 @@ our $ddb = esmith::DomainsDB->open()  || die("Couldn't open Domains db");
 | 
			
		||||
		my $prefix_data = shift; #Data hash as parameter
 | 
			
		||||
		my $ret = "";
 | 
			
		||||
		
 | 
			
		||||
			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(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 ($ret eq "") {$ret = 'ok';}
 | 
			
		||||
		return $ret;
 | 
			
		||||
	}
 | 
			
		||||
@@ -390,9 +391,8 @@ our $ddb = esmith::DomainsDB->open()  || die("Couldn't open Domains db");
 | 
			
		||||
		my $prefix_data = shift; #Data hash as parameter
 | 
			
		||||
		my $ret = "";
 | 
			
		||||
		
 | 
			
		||||
			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(dbentry,dbkey,$c->param('AllDomainsCheck')
 | 
			
		||||
			{$ret .= 'Perform failed for AllDomainsCheck failed';}
 | 
			
		||||
		if ($ret eq "") {$ret = 'ok';}
 | 
			
		||||
		return $ret;
 | 
			
		||||
	}
 | 
			
		||||
@@ -402,9 +402,8 @@ our $ddb = esmith::DomainsDB->open()  || die("Couldn't open Domains db");
 | 
			
		||||
		my $prefix_data = shift; #Data hash as parameter
 | 
			
		||||
		my $ret = "";
 | 
			
		||||
		
 | 
			
		||||
			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(dbentry,dbkey,$c->param('EnabledDomainsCheck')
 | 
			
		||||
			{$ret .= 'Perform failed for EnabledDomainsCheck failed';}
 | 
			
		||||
		if ($ret eq "") {$ret = 'ok';}
 | 
			
		||||
		return $ret;
 | 
			
		||||
	}
 | 
			
		||||
@@ -414,12 +413,10 @@ our $ddb = esmith::DomainsDB->open()  || die("Couldn't open Domains db");
 | 
			
		||||
		my $prefix_data = shift; #Data hash as parameter
 | 
			
		||||
		my $ret = "";
 | 
			
		||||
		
 | 
			
		||||
			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(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 ($ret eq "") {$ret = 'ok';}
 | 
			
		||||
		return $ret;
 | 
			
		||||
	}
 | 
			
		||||
@@ -427,8 +424,15 @@ our $ddb = esmith::DomainsDB->open()  || die("Couldn't open Domains db");
 | 
			
		||||
 | 
			
		||||
sub create_link{
 | 
			
		||||
	# WIP
 | 
			
		||||
	my ($c,$route, $panel, $index) = shift;
 | 
			
		||||
	my ($c,$route, $panel, $index) = @_;
 | 
			
		||||
	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;
 | 
			
		||||
@@ -35,7 +35,7 @@ use SrvMngr qw(theme_list init_session);
 | 
			
		||||
use Data::Dumper;
 | 
			
		||||
 | 
			
		||||
use esmith::util;
 | 
			
		||||
use esmith::util::network ;
 | 
			
		||||
use esmith::util::network;
 | 
			
		||||
use esmith::ConfigDB;
 | 
			
		||||
use esmith::AccountsDB;
 | 
			
		||||
use esmith::NetworksDB;
 | 
			
		||||
@@ -83,7 +83,7 @@ sub main {
 | 
			
		||||
	#pickup any other contents needed and load them into hash shared with panel
 | 
			
		||||
	my %returned_hash;
 | 
			
		||||
	# subroutine returns a hash directly
 | 
			
		||||
	%returned_hash = get_data_for_panel_${firstPanel}();
 | 
			
		||||
	%returned_hash = $c->get_data_for_panel_${firstPanel}();
 | 
			
		||||
	# Copy each key-value pair from the returned hash to the prefix data hash
 | 
			
		||||
	while (my ($key, $value) = each %returned_hash) {
 | 
			
		||||
		$$${prefix}_data{$key} = $value;
 | 
			
		||||
@@ -253,7 +253,7 @@ sub do_display {
 | 
			
		||||
			# pickup any other contents needed and load them into hash shared with panel
 | 
			
		||||
			my %returned_hash;
 | 
			
		||||
			# subroutine returns a hash directly
 | 
			
		||||
			%returned_hash = get_data_for_panel_${panel}();
 | 
			
		||||
			%returned_hash = $c->get_data_for_panel_${panel}();
 | 
			
		||||
			# Copy each key-value pair from the returned hash to the prefix data hash
 | 
			
		||||
			while (my ($key, $value) = each %returned_hash) {
 | 
			
		||||
				$$${prefix}_data{$key} = $value;
 | 
			
		||||
 
 | 
			
		||||
@@ -32,9 +32,8 @@ our $ddb = esmith::DomainsDB->open()  || die("Couldn't open Domains db");
 | 
			
		||||
		# Validation for each field 
 | 
			
		||||
		my $ret = "";
 | 
			
		||||
		<tal:block tal:repeat="field fields[panel]">
 | 
			
		||||
			if (! TRUE) #validate $c->param('${field}')
 | 
			
		||||
				{$ret .= 'Validation for ${field} failed';}
 | 
			
		||||
		</tal:block>
 | 
			
		||||
		if (! TRUE) #validate $c->param('${field}')
 | 
			
		||||
			{$ret .= 'Validation for ${field} failed';}	</tal:block>
 | 
			
		||||
		if ($ret eq "") {$ret = 'ok';}
 | 
			
		||||
		return $ret;
 | 
			
		||||
	}
 | 
			
		||||
@@ -48,28 +47,51 @@ our $ddb = esmith::DomainsDB->open()  || die("Couldn't open Domains db");
 | 
			
		||||
		my %ret = (
 | 
			
		||||
			'Data1'=>'Data for ${panel}', #Example
 | 
			
		||||
			# fields from Inputs in ${panel} $fields['${panel}']
 | 
			
		||||
			<tal:block tal:repeat="field fields[panel]">
 | 
			
		||||
				'${field}'=>'${field} contents',
 | 
			
		||||
			<tal:block tal:repeat="field fields[panel]">'${field}'=>'${field} contents',
 | 
			
		||||
			</tal:block>
 | 
			
		||||
			
 | 
			
		||||
		);
 | 
			
		||||
		return %ret;
 | 
			
		||||
	}
 | 
			
		||||
</tal:block>
 | 
			
		||||
 | 
			
		||||
	
 | 
			
		||||
 Get control data for table(s)
 | 
			
		||||
 | 
			
		||||
# Get control data for table(s)
 | 
			
		||||
<tal:block repeat="tablecontrol tablecontrols">
 | 
			
		||||
	# Define a constant hash for field name mapping
 | 
			
		||||
	use constant ${tablecontrol[0]}_FIELD_MAPPING => (
 | 
			
		||||
		<tal:block repeat="col tablecontrol[1]['columns']">'${col}' => 'Source-for-${col}'<tal:condition condition="not: repeat['col'].end">,
 | 
			
		||||
		</tal:condition></tal:block>
 | 
			
		||||
		#'target_field2' => 'source_field2',
 | 
			
		||||
		# Add more mappings as needed
 | 
			
		||||
	);
 | 
			
		||||
	
 | 
			
		||||
sub actual_${tablecontrol[0]} {
 | 
			
		||||
	my @ret = ();
 | 
			
		||||
	# Actual code for extracting ${tablecontrol[0]}
 | 
			
		||||
	return @ret;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
sub get_${tablecontrol[0]} {
 | 
			
		||||
    # Return an array of hashes of the contents for each row and column for ${tablecontrol[0]}
 | 
			
		||||
    # Cols/fields in hash needed are:
 | 
			
		||||
    # <tal:block repeat="col tablecontrol[1]['columns']">${col}<tal:condition condition="not: repeat['col'].end">,
 | 
			
		||||
    # </tal:condition></tal:block>
 | 
			
		||||
    my $c = shift;
 | 
			
		||||
    my @ret = {};
 | 
			
		||||
    
 | 
			
		||||
   
 | 
			
		||||
    return \@ret;
 | 
			
		||||
	my $c = shift;
 | 
			
		||||
    my @source_records = $c->actual_${tablecontrol[0]}();
 | 
			
		||||
    my @transformed_records;
 | 
			
		||||
    my %Field_Mapping = ${tablecontrol[0]}_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};
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        # Add transformed record to the array if it's not empty
 | 
			
		||||
        push @transformed_records, \%transformed_record if %transformed_record;
 | 
			
		||||
    }
 | 
			
		||||
    return \@transformed_records;
 | 
			
		||||
}
 | 
			
		||||
</tal:block>
 | 
			
		||||
 | 
			
		||||
@@ -92,9 +114,8 @@ sub get_${tablecontrol[0]} {
 | 
			
		||||
		my $prefix_data = shift; #Data hash as parameter
 | 
			
		||||
		my $ret = "";
 | 
			
		||||
		<tal:block tal:repeat="field fields[panel]">
 | 
			
		||||
			if (! TRUE) #copy or perform with value: ${field} e.g. $c->setprop(dbentry,dbkey,$c->param('${field}')
 | 
			
		||||
				{$ret .= 'Perform failed for ${field} failed';}
 | 
			
		||||
		</tal:block>
 | 
			
		||||
		if (! TRUE) #copy or perform with value: ${field} e.g. $c->setprop(dbentry,dbkey,$c->param('${field}')
 | 
			
		||||
			{$ret .= 'Perform failed for ${field} failed';}</tal:block>
 | 
			
		||||
		if ($ret eq "") {$ret = 'ok';}
 | 
			
		||||
		return $ret;
 | 
			
		||||
	}
 | 
			
		||||
@@ -102,7 +123,7 @@ sub get_${tablecontrol[0]} {
 | 
			
		||||
 | 
			
		||||
sub create_link{
 | 
			
		||||
	# WIP
 | 
			
		||||
	my ($c,$route, $panel, $index) = shift;
 | 
			
		||||
	my ($c,$route, $panel, $index) = @_;
 | 
			
		||||
	my $link = "$route?trt=$panel&Selected=$index";
 | 
			
		||||
	return $link;
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user