From e49bea28c53e208baec1b24ae4bee0fe4cfd9a53 Mon Sep 17 00:00:00 2001 From: Brian Read Date: Wed, 6 Nov 2024 15:16:27 +0000 Subject: [PATCH] Letsencrypt - Add in email field in params --- Targets/Letsencrypt/Letsencrypt-Custom.pm | 59 +++++++++++++------ Targets/Letsencrypt/Letsencrypt.pm | 46 +++++++++++++-- .../Letsencrypt/_lets_CHECKALLDOMAINS.html.ep | 29 +++++---- .../_lets_CHECKALLENABLEDDOMAINS.html.ep | 29 +++++---- Targets/Letsencrypt/_lets_LIST.html.ep | 2 +- Targets/Letsencrypt/_lets_PARAMS.html.ep | 4 +- Targets/Letsencrypt/letsencrypt.css | 4 ++ Templates/html_controls.html.ep.xml | 4 +- json5/Letsencrypt.json5 | 4 +- sm2gen.py | 2 +- 10 files changed, 128 insertions(+), 55 deletions(-) diff --git a/Targets/Letsencrypt/Letsencrypt-Custom.pm b/Targets/Letsencrypt/Letsencrypt-Custom.pm index 854dcfa..4b0b1cd 100644 --- a/Targets/Letsencrypt/Letsencrypt-Custom.pm +++ b/Targets/Letsencrypt/Letsencrypt-Custom.pm @@ -81,22 +81,14 @@ our $ddb = esmith::DomainsDB->open() || die("Couldn't open Domains db"); my %ret = ( 'Data1'=>'Data for PARAMS', #Example # fields from Inputs in PARAMS $fields['PARAMS'] - - 'status'=>'status contents', - - 'hookScript'=>'hookScript contents', - - 'hostOverride'=>'hostOverride contents', - - 'ACCEPT_TERMS'=>'ACCEPT_TERMS contents', - - 'API'=>'API contents', - - 'keysize'=>'keysize contents', - - 'configure'=>'configure contents', - - + 'status'=>get_prop('letsencrypt', 'status', 'disabled', + 'hookScript'=>get_prop('letsencrypt', 'hookScript', 'disabled'), + 'hostOverride'=>get_prop('letsencrypt', 'hostOverride', 'disabled'), + 'ACCEPT_TERMS'=>get_prop('letsencrypt', 'ACCEPT_TERMS', ''), + 'API'=>get_prop('letsencrypt', 'API', '2'), + 'keysize'=>get_prop('letsencrypt', 'keysize', '4096'), + 'configure'=>get_prop('letsencrypt', 'configure', 'none' ), + 'Email'=>get_prop('letsencrypt', 'email') ); return %ret; } @@ -108,7 +100,7 @@ our $ddb = esmith::DomainsDB->open() || die("Couldn't open Domains db"); 'Data1'=>'Data for CHECKALLDOMAINS', #Example # fields from Inputs in CHECKALLDOMAINS $fields['CHECKALLDOMAINS'] - 'AllDomainsCheck'=>'AllDomainsCheck contents', + 'AllDomainsCheck'=>'Scan running', ); @@ -130,6 +122,24 @@ our $ddb = esmith::DomainsDB->open() || die("Couldn't open Domains db"); } + sub get_data_for_panel_CHECKONEDDOMAINS { + # 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', + + + ); + return %ret; + } + + + # Get control data for table(s) @@ -225,6 +235,14 @@ our $ddb = esmith::DomainsDB->open() || die("Couldn't open Domains db"); return $ret; } + sub get_selected_CHECKONEDDOMAINS { + 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; + } + #after sucessful modify or create or whatever and submit then perfom (if the params validate) @@ -256,6 +274,13 @@ our $ddb = esmith::DomainsDB->open() || die("Couldn't open Domains db"); return $ret; } + sub perform_CHECKONEDDOMAINS { + my $c = shift; + my $prefix_data = shift; #Data hash as parameter + my $ret = 'ok'; + return $ret; + } + sub create_link{ # WIP diff --git a/Targets/Letsencrypt/Letsencrypt.pm b/Targets/Letsencrypt/Letsencrypt.pm index ac50071..eeeac5a 100644 --- a/Targets/Letsencrypt/Letsencrypt.pm +++ b/Targets/Letsencrypt/Letsencrypt.pm @@ -1,6 +1,6 @@ package SrvMngr::Controller::Letsencrypt; # -# Generated by SM2Gen version:0.8 Chameleon version:4.5.4 On Python:3.12.3 at 2024-11-05 13:20:33 +# Generated by SM2Gen version:0.8 Chameleon version:4.5.4 On Python:3.12.3 at 2024-11-06 11:09:38 # #---------------------------------------------------------------------- # heading : Network @@ -70,7 +70,7 @@ sub main { my $title = $c->l('lets_Letsencrypt_certificate'); my $modul = ''; - $lets_data{'trt'} = 'LIST'; + $lets_data{'trt'} = 'CHECKALLDOMAINS'; #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 @@ -80,7 +80,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_LIST(); + %returned_hash = 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; @@ -143,7 +143,7 @@ sub do_update { } # the value of trt will tell you which panel has returned - my $trt = $c->param('trt') || 'LIST'; #hidden control on every form. + my $trt = $c->param('trt') || 'CHECKALLDOMAINS'; #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) @@ -173,6 +173,12 @@ sub do_update { $thispanel = 'CHECKALLENABLEDDOMAINS'; } + if ($trt eq 'CHECKONEDDOMAINS'){ + #Validate form parameters for panel CHECKONEDDOMAINS + $ret = $c->validate_CHECKONEDDOMAINS(\%lets_data); + $thispanel = 'CHECKONEDDOMAINS'; + } + if ($ret ne "ok") { # return to the panel with error message @@ -229,6 +235,18 @@ sub do_update { } } + if ($trt eq 'CHECKONEDDOMAINS'){ + #do whatever is required ... + $ret = $c->perform_CHECKONEDDOMAINS(\%lets_data); + if ($ret ne "ok") { + # return to the panel with error message + $c->stash(error => $c->l($ret)); + $c->render("letsencrypt"); + } else { + $c->stash( success => $c->l('lets_CHECKONEDDOMAINS_panel_action_was_successful')); #A bit bland - edit it in the lex file + } + } + # and call any signal-events needed @@ -238,7 +256,7 @@ sub do_update { lets_data => \%lets_data ); if ('none' eq 'none') { - $lets_data{'trt'} = 'LIST'; + $lets_data{'trt'} = 'CHECKALLDOMAINS'; } else { $lets_data{'trt'} = 'none'; } @@ -279,7 +297,7 @@ sub do_display { } # the value of trt will tell you which panel has returned - my $trt = $c->param('trt') || 'LIST'; #Indicates where to go now + my $trt = $c->param('trt') || 'CHECKALLDOMAINS'; #Indicates where to go now # Now add in the params from the selected row from the table @@ -305,6 +323,11 @@ sub do_display { %selectedrow = $c->get_selected_CHECKALLENABLEDDOMAINS($lets_data{'Selected'},$is_new_record); } + if ($trt eq 'CHECKONEDDOMAINS'){ + #Validate form parameters for panel CHECKONEDDOMAINS + %selectedrow = $c->get_selected_CHECKONEDDOMAINS($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){ @@ -359,6 +382,17 @@ sub do_display { } } + if ($trt eq 'CHECKONEDDOMAINS'){ + # 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_CHECKONEDDOMAINS(); + # 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 diff --git a/Targets/Letsencrypt/_lets_CHECKALLDOMAINS.html.ep b/Targets/Letsencrypt/_lets_CHECKALLDOMAINS.html.ep index 788cf7f..d2449b3 100644 --- a/Targets/Letsencrypt/_lets_CHECKALLDOMAINS.html.ep +++ b/Targets/Letsencrypt/_lets_CHECKALLDOMAINS.html.ep @@ -1,16 +1,20 @@ %# -%# Generated by SM2Gen version:0.8 Chameleon version:4.5.4 On Python:3.12.3 at 2024-11-05 13:20:33 +%# Generated by SM2Gen version:0.8 Chameleon version:4.5.4 On Python:3.12.3 at 2024-11-06 11:09:38 %#
- - % my $btn = l('lets_APPLY'); - %= form_for "Letsencryptd" => (method => 'POST') => begin - - % param 'trt' => $lets_data->{trt} unless param 'trt'; + + % if ($config->{debug} == 1) { +
+			%= dumper $lets_data
+		
+ % } + % my $btn = l('lets_APPLY'); + %= form_for "letsencryptu" => (method => 'POST') => begin + % param 'trt' => $lets_data->{trt} unless param 'trt'; %= hidden_field 'trt' => $lets_data->{trt} %# Inputs etc in here. @@ -22,12 +26,13 @@ %=l('lets_All_domains_check_result') % param 'AllDomainsCheck' => $lets_data->{AllDomainsCheck} unless param 'AllDomainsCheck'; - %= text_area 'AllDomainsCheck', cols=>40, rows=>10, Readonly=>True + %= text_area 'AllDomainsCheck', cols=>40, rows=>10, Readonly=>'true'
- %= submit_button l('lets_Back'), class => 'action subm2' + %= submit_button l('lets_Back'), class => 'action back', onclick =>'history.back()' + %# Probably finally by a submit. %end diff --git a/Targets/Letsencrypt/_lets_CHECKALLENABLEDDOMAINS.html.ep b/Targets/Letsencrypt/_lets_CHECKALLENABLEDDOMAINS.html.ep index 490327c..8c1181d 100644 --- a/Targets/Letsencrypt/_lets_CHECKALLENABLEDDOMAINS.html.ep +++ b/Targets/Letsencrypt/_lets_CHECKALLENABLEDDOMAINS.html.ep @@ -1,16 +1,20 @@ %# -%# Generated by SM2Gen version:0.8 Chameleon version:4.5.4 On Python:3.12.3 at 2024-11-05 13:20:33 +%# Generated by SM2Gen version:0.8 Chameleon version:4.5.4 On Python:3.12.3 at 2024-11-06 11:09:38 %#
- - % my $btn = l('lets_APPLY'); - %= form_for "Letsencryptd" => (method => 'POST') => begin - - % param 'trt' => $lets_data->{trt} unless param 'trt'; + + % if ($config->{debug} == 1) { +
+			%= dumper $lets_data
+		
+ % } + % my $btn = l('lets_APPLY'); + %= form_for "letsencryptu" => (method => 'POST') => begin + % param 'trt' => $lets_data->{trt} unless param 'trt'; %= hidden_field 'trt' => $lets_data->{trt} %# Inputs etc in here. @@ -22,12 +26,13 @@ %=l('lets_Enabled_domains_check_result') % param 'EnabledDomainsCheck' => $lets_data->{EnabledDomainsCheck} unless param 'EnabledDomainsCheck'; - %= text_area 'EnabledDomainsCheck', cols=>40, rows=>10, Readonly=>True + %= text_area 'EnabledDomainsCheck', cols=>40, rows=>10, Readonly=>'true'
- %= submit_button l('lets_Back'), class => 'action subm2' + %= submit_button l('lets_Back'), class => 'action back', onclick =>'history.back()' + %# Probably finally by a submit. %end diff --git a/Targets/Letsencrypt/_lets_LIST.html.ep b/Targets/Letsencrypt/_lets_LIST.html.ep index 5553fb2..479efe7 100644 --- a/Targets/Letsencrypt/_lets_LIST.html.ep +++ b/Targets/Letsencrypt/_lets_LIST.html.ep @@ -13,7 +13,7 @@ % } % my $btn = l('lets_APPLY'); - %= form_for "letsencryptu" => (method => 'POST') => begin + %= form_for "letsencryptd" => (method => 'GET') => begin % param 'trt' => $lets_data->{trt} unless param 'trt'; %= hidden_field 'trt' => $lets_data->{trt} diff --git a/Targets/Letsencrypt/_lets_PARAMS.html.ep b/Targets/Letsencrypt/_lets_PARAMS.html.ep index 7512ee3..e568da4 100644 --- a/Targets/Letsencrypt/_lets_PARAMS.html.ep +++ b/Targets/Letsencrypt/_lets_PARAMS.html.ep @@ -88,9 +88,9 @@ - %= submit_button l('lets_Back'), class => 'action subm10' + %= submit_button l('lets_Back'), class => 'action back', onclick =>'history.back()' - + %# Probably finally by a submit. %end
\ No newline at end of file diff --git a/Targets/Letsencrypt/letsencrypt.css b/Targets/Letsencrypt/letsencrypt.css index 778cf5e..8d4bcbb 100644 --- a/Targets/Letsencrypt/letsencrypt.css +++ b/Targets/Letsencrypt/letsencrypt.css @@ -77,4 +77,8 @@ tbody .tabl1 {} .inline-buttons .link:active { background-color: #c0c0c0; /* Even darker shade on click */ + } + + span .label { + padding-top:13em; } \ No newline at end of file diff --git a/Templates/html_controls.html.ep.xml b/Templates/html_controls.html.ep.xml index b883072..c061e21 100644 --- a/Templates/html_controls.html.ep.xml +++ b/Templates/html_controls.html.ep.xml @@ -106,7 +106,7 @@ ]]> - %=l('${Label}') @@ -114,7 +114,7 @@ %=email_field '${Name}', class => 'emai${type_serial}' span>

]]> -
+ diff --git a/json5/Letsencrypt.json5 b/json5/Letsencrypt.json5 index d0dd130..dcc227e 100644 --- a/json5/Letsencrypt.json5 +++ b/json5/Letsencrypt.json5 @@ -225,7 +225,7 @@ 'Input8': { 'Type': 'Email', 'Value': '', - 'Name': 'email', + 'Name': 'Email', 'Label': 'EMAIL' }, 'Input9': { @@ -235,7 +235,7 @@ 'Label': null }, 'Input10': { - 'Type': 'Submit', + 'Type': 'Back', 'Value': 'Back', } }, diff --git a/sm2gen.py b/sm2gen.py index 4a24e6f..82349cc 100644 --- a/sm2gen.py +++ b/sm2gen.py @@ -453,7 +453,7 @@ def extract_input_fields(json_data, value_type): # Iterate over each item in the panel for key, value in panel.items(): if key.startswith('Input') and isinstance(value, dict): - if value.get('Type').lower() in ['readonlytext', 'text', 'select','checkbox','textarea']: + if value.get('Type').lower() in ['readonlytext', 'text', 'select','checkbox','textarea','email']: # input_value = value.get('Value', '') input_name = value.get('Name', '') print(input_name)