From d83a74100e30f61a34dba761fa154a517d53b3f7 Mon Sep 17 00:00:00 2001 From: Brian Read Date: Fri, 18 Oct 2024 15:34:35 +0100 Subject: [PATCH] Add in letsencrypt SM2 module data --- Targets/Diskusage/Diskusage-Custom.pm | 87 +++++++++ Targets/Diskusage/Diskusage.pm | 245 ++++++++++++++++++++++++++ Targets/Diskusage/_d_PARAMS.html.ep | 83 +++++++++ Targets/Diskusage/diskusage.css | 16 ++ Targets/Diskusage/diskusage.html.ep | 52 ++++++ Targets/Diskusage/diskusage_en.lex | 14 ++ html/Diskusage.html | 93 ++++++++++ html/letsencrypt-config.html | 119 +++++++++++++ html/letsencrypt-list.html | 60 +++++++ json5/Diskusage.json5 | 50 ++++++ json5/letsencrypt-config.json5 | 165 +++++++++++++++++ json5/letsencrypt-list.json5 | 201 +++++++++++++++++++++ trykoji.py | 10 ++ 13 files changed, 1195 insertions(+) create mode 100644 Targets/Diskusage/Diskusage-Custom.pm create mode 100644 Targets/Diskusage/Diskusage.pm create mode 100644 Targets/Diskusage/_d_PARAMS.html.ep create mode 100644 Targets/Diskusage/diskusage.css create mode 100644 Targets/Diskusage/diskusage.html.ep create mode 100644 Targets/Diskusage/diskusage_en.lex create mode 100644 html/Diskusage.html create mode 100644 html/letsencrypt-config.html create mode 100644 html/letsencrypt-list.html create mode 100644 json5/Diskusage.json5 create mode 100644 json5/letsencrypt-config.json5 create mode 100644 json5/letsencrypt-list.json5 create mode 100644 trykoji.py diff --git a/Targets/Diskusage/Diskusage-Custom.pm b/Targets/Diskusage/Diskusage-Custom.pm new file mode 100644 index 0000000..30ea60a --- /dev/null +++ b/Targets/Diskusage/Diskusage-Custom.pm @@ -0,0 +1,87 @@ +# +# Generated by SM2Gen version:0.8 Chameleon version:4.5.4 On Python:3.12.3 at 2024-09-23 09:05:54 +# +# +# Routines to be edited by the developer to provide validation for parameters +# and provison of the control data for table(s) +# +use esmith::util; +use esmith::HostsDB; +use esmith::AccountsDB; +use esmith::NetworksDB; +use esmith::HostsDB; +use esmith::DomainsDB; + + +#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 $ddb = esmith::DomainsDB->open() || die("Couldn't open Domains db"); + +# Validation routines - parameters for each panel + + sub validate_PARAMS { + my $c = shift; + my $prefix_data = shift; #Data hash as parameter + my $ret = 'ok'; + return $ret; + } + + +# Get control data for tables(s) + + sub get_Table1 { + # Return an array of hashes of the contents for each row and column for Table1 + # default is a single row of strings "col1header-1, col2header-1, col3Header-1 etc" + my $c = shift; + my $control_data = $self->stash('Table1'); + my @ret = {} +# foreach my $colHead (@$control_data) { +# my ret{$colHead} = "$colhead-1" +# }; + return \@ret + } + + sub get_Table2 { + # Return an array of hashes of the contents for each row and column for Table2 + # default is a single row of strings "col1header-1, col2header-1, col3Header-1 etc" + my $c = shift; + my $control_data = $self->stash('Table2'); + my @ret = {} +# foreach my $colHead (@$control_data) { +# my ret{$colHead} = "$colhead-1" +# }; + return \@ret + } + + +# Return hash with values from row in which link clicked on table + + 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; + } + + +#after sucessful modify or create or whatever and submit then perfom (if the params validate) + + sub perform_PARAMS { + my $c = shift; + my $prefix_data = shift; #Data hash as parameter + my $ret = 'ok'; + return $ret; + } + + +sub create_link{ + # WIP + my ($c,$route, $panel, $index) = shift; + my $link = "$route?trt=$panel&Selected=$index"; + return $link; +} +1; diff --git a/Targets/Diskusage/Diskusage.pm b/Targets/Diskusage/Diskusage.pm new file mode 100644 index 0000000..4c659c2 --- /dev/null +++ b/Targets/Diskusage/Diskusage.pm @@ -0,0 +1,245 @@ +package SrvMngr::Controller::Diskusage; +# +# Generated by SM2Gen version:0.8 Chameleon version:4.5.4 On Python:3.12.3 at 2024-09-23 09:05:54 +# +#---------------------------------------------------------------------- +# heading : Miscellaneous +# description : Diskusage +# navigation : 2000 400 +# +# name : diskusage, method : get, url : /diskusage, ctlact : Diskusage#main +# name : diskusageu, method : post, url : /diskusageu, ctlact : Diskusage#do_update +# name : diskusaged, method : get, url : /diskusaged, ctlact : Diskusage#do_display +# +# routes : end +# +# Documentation: https://wiki.contribs.org/Diskusage +#---------------------------------------------------------------------- + +# +# 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::HostsDB; +use esmith::AccountsDB; +use esmith::NetworksDB; +use esmith::HostsDB; +use esmith::DomainsDB; + + +#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 $ddb = esmith::DomainsDB->open() || die("Couldn't open Domains db"); + +require '/usr/share/smanager/lib/SrvMngr/Controller/Diskusage-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 ); + + my %d_data = (); + my $title = $c->l('d_Diskusage'); + my $modul = ''; + + $d_data{'trt'} = 'PARAMS'; + + #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 + + + # and table control fields + $c->stash(Table1=>$c->get_Table1()); + $c->stash(Table2=>$c->get_Table2()); + + + $c->stash( + title => $title, + modul => $modul, + d_data => \%d_data + ); + $c->render( template => "diskusage" ); +} + +# 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 %d_data = (); + my $title = $c->l('d_Diskusage'); + + # 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}) { + $d_data{$key} = $value; + } + + # the value of trt will tell you which panel has returned + my $trt = $c->param('trt') || 'PARAMS'; #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 'PARAMS'){ + #Validate form parameters for panel PARAMS + $ret = $c->validate_PARAMS(\%d_data); + $thispanel = 'PARAMS'; + } + + + if ($ret ne "ok") { + # return to the panel with error message + $c->stash(error => $c->l($ret)); + $c->render("diskusage"); + } else { + #Do whatever is needed, including writing values to the DB + + if ($trt eq 'PARAMS'){ + #do whatever is required ... + $ret = $c->perform_PARAMS(\%d_data); + if ($ret ne "ok") { + # return to the panel with error message + $c->stash(error => $c->l($ret)); + $c->render("diskusage"); + } else { + $c->stash( success => $c->l('d_PARAMS_panel_action_was_successful')); #A bit bland - edit it in the lex file + } + } + + # and call any signal-events needed + + + # Setup shared data and call panel + $c->stash( + title => $title, + d_data => \%d_data + ); + if ('none' eq 'none') { + $d_data{'trt'} = 'PARAMS'; + } else { + $d_data{'trt'} = 'none'; + } + $c->render("diskusage"); + } +} + +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 = shift; + $c->app->log->info($c->log_req); + + my %d_data = (); + my $title = $c->l('d_Diskusage'); + + # Accessing all parameters + my %params = $c->req->params->to_hash; + + # Get number of parameters + my $num_params = 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}) { + $d_data{$key} = $value; + } + + # the value of trt will tell you which panel has returned + my $trt = $c->param('trt') || 'PARAMS'; #Indicates where to go now + + # Now add in the params from the selected row from the table + + my %selectedrow; + + if ($trt eq 'PARAMS'){ + #Validate form parameters for panel PARAMS + %selectedrow = $c->get_selected_PARAMS($d_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){ + $d_data{$key} = $value; + } + # Where to go now + $d_data{'trt'} = $trt; + + # Data for panel + $c->stash( + title => $title, + d_data => \%d_data + ); + $c->render("diskusage"); +} +1; diff --git a/Targets/Diskusage/_d_PARAMS.html.ep b/Targets/Diskusage/_d_PARAMS.html.ep new file mode 100644 index 0000000..d72a005 --- /dev/null +++ b/Targets/Diskusage/_d_PARAMS.html.ep @@ -0,0 +1,83 @@ +%# +%# Generated by SM2Gen version:0.8 Chameleon version:4.5.4 On Python:3.12.3 at 2024-09-23 09:05:54 +%# +
+ +

+ %= l('d_Hello_PARAMS'); +

+ % my $btn = l('d_APPLY'); + %= form_for "Diskusaged" => (method => 'POST') => begin + + % param 'trt' => $d_data->{trt} unless param 'trt'; + %= hidden_field 'trt' => $d_data->{trt} + %# Inputs etc in here. + +

<%=l('Disk_usage')%>

+ +

<%=l('d_Manage_Diskusage_settings:')%>

+ +

+ %=l('d_Wed_Sep_11_19:01:00_BST') +

+ +
+	Filesystem             Size  Used Avail Use% Mounted on
+/dev/mapper/main-root   29G  4.8G   24G  17% /
+devtmpfs               2.0G     0  2.0G   0% /dev
+tmpfs                  2.0G   12K  2.0G   1% /dev/shm
+tmpfs                  2.0G     0  2.0G   0% /sys/fs/cgroup
+tmpfs                  2.0G  648K  2.0G   1% /run
+/dev/sda1              497M  111M  386M  23% /boot'
+
+ + +
+ + + + + + + + + % my $control_data = $self->stash('Table1'); + % foreach my $row (@$control_data) { + + + + + + %} + +
<%=l('d_I-bays')%><%=l('d_Usage')%><%=l('d_Path')%>
<%=$c->render_to_string(inline=>$row->{'Table1-I-bays'})%><%=$c->render_to_string(inline=>$row->{'Table1-Usage'})%><%=$c->render_to_string(inline=>$row->{'Table1-Path'})%>
+ + +
+ + + + + + + + + % my $control_data = $self->stash('Table2'); + % foreach my $row (@$control_data) { + + + + + + %} + +
<%=l('d_Users')%><%=l('d_Usage')%><%=l('d_Path')%>
<%=$c->render_to_string(inline=>$row->{'Table2-Users'})%><%=$c->render_to_string(inline=>$row->{'Table2-Usage'})%><%=$c->render_to_string(inline=>$row->{'Table2-Path'})%>
+ + + %# Probably finally by a submit. + %end +
diff --git a/Targets/Diskusage/diskusage.css b/Targets/Diskusage/diskusage.css new file mode 100644 index 0000000..02c083c --- /dev/null +++ b/Targets/Diskusage/diskusage.css @@ -0,0 +1,16 @@ +/* + Generated by SM2Gen version: SM2Gen version:0.8 Chameleon version:4.5.4 On Python:3.12.3 at 2024-09-23 09:05:54 +*/ +.Diskusage-panel {} +.name {} +.rout {} +.head {} +.subh {} +.para1 {} +.pref1 {} +.tabl1 {} +thead .tabl1 {} +tbody .tabl1 {} +.tabl2 {} +thead .tabl2 {} +tbody .tabl2 {} diff --git a/Targets/Diskusage/diskusage.html.ep b/Targets/Diskusage/diskusage.html.ep new file mode 100644 index 0000000..1513634 --- /dev/null +++ b/Targets/Diskusage/diskusage.html.ep @@ -0,0 +1,52 @@ +%# +%# Generated by SM2Gen version:0.8 Chameleon version:4.5.4 On Python:3.12.3 at 2024-09-23 09:05:54 +%# +% layout 'default', title => "Sme server 2 - Diskusage", share_dir => './'; +%# css specific to this panel: +% content_for 'module' => begin +%= stylesheet '/css/diskusage.css' +
+ + % if ($config->{debug} == 1) { +

+ %= dumper $c->current_route +

+ % } + +

<%=$title%>

+ + % if ( stash('modul') ) { + %= $c->render_to_string(inline => stash('modul') ); + % } + + %if ($d_data->{first}) { +

+ %=$c->render_to_string(inline =>$c->l($d_data->{first})) +

+ + %} elsif ($d_data->{success}) { +
+

Operation Status Report

+ %= $c->l($d_data->{success}); +

+
+ + %} elsif ($d_data->{error}) { +
+

Operation Status Report - error

+ %= $c->l($d_data->{error}); +

+
+ %} + + %#Routing to partials according to trt parameter. + %#This ought to be cascading if/then/elsif, but is easier to just stack the if/then's rather like a case statement' + + % if ($d_data->{trt} eq "PARAMS") { + %= include 'partials/_d_PARAMS' + %} + + + +
+%end diff --git a/Targets/Diskusage/diskusage_en.lex b/Targets/Diskusage/diskusage_en.lex new file mode 100644 index 0000000..f4083c2 --- /dev/null +++ b/Targets/Diskusage/diskusage_en.lex @@ -0,0 +1,14 @@ +# +# Generated by SM2Gen version: SM2Gen version:0.8 Chameleon version:4.5.4 On Python:3.12.3 at 2024-09-23 09:05:54 +# +'d_Users' => 'Users', +'d_Hello_PARAMS' => 'Hello PARAMS', +'d_I-bays' => 'I-bays', +'d_PARAMS_panel_action_was_successful' => 'PARAMS panel action was successful', +'d_APPLY' => 'Apply', +'d_Wed_Sep_11_19:01:00_BST' => 'Wed Sep 11 19:01:00 BST 2024', +'d_Path' => 'Path', +'d_Manage_Diskusage_settings:' => 'Manage Diskusage settings:', +'d_Usage' => 'Usage', +'Disk_usage' => 'Sk usage', +'d_Diskusage' => 'Diskusage', diff --git a/html/Diskusage.html b/html/Diskusage.html new file mode 100644 index 0000000..e089d46 --- /dev/null +++ b/html/Diskusage.html @@ -0,0 +1,93 @@ + + + + + SME Server sme10.thereadclan.me.uk + + + + + + + + +

Disk usage

+
+ + + + + +

  +

+

Wed Sep 11 19:01:00 BST 2024 +

+

Filesystem             Size  Used Avail Use% Mounted on
+/dev/mapper/main-root   29G  4.8G   24G  17% /
+devtmpfs               2.0G     0  2.0G   0% /dev
+tmpfs                  2.0G   12K  2.0G   1% /dev/shm
+tmpfs                  2.0G     0  2.0G   0% /sys/fs/cgroup
+tmpfs                  2.0G  648K  2.0G   1% /run
+/dev/sda1              497M  111M  386M  23% /boot
+

+
+ + + + + + + + + + + + + + + + + + + + +
I-baysUsagePath
Primary4.0K/home/e-smith/files/ibays/Primary
anibay4.0K/home/e-smith/files/ibays/anibay
opt410M/opt
+

  +

+ + + + + + + + + + + + + + + + +
UsersUsagePath
root2.1M/root
brianr16K/home/e-smith/files/users/brianr
+ + +
+ +
+ + SME Server 10.1 +
Copyright 1999-2006 Mitel Corporation +
All rights reserved. + +
Copyright (c) 2013 - 2021 Koozali Foundation Inc. +
+
+ + + diff --git a/html/letsencrypt-config.html b/html/letsencrypt-config.html new file mode 100644 index 0000000..aa033b5 --- /dev/null +++ b/html/letsencrypt-config.html @@ -0,0 +1,119 @@ + + + + + +SME Server sme11.thereadclan.me.uk + + + + + + + +
+ Warning: a reconfigure and reboot is required before proceeding! Failure to do so now + may leave your system in an unknown state!
+ URGENT NOTICE: As per June 30th 2024, SME Server 10 is obsolete, and potentially INSECURE. NO support will be offered for any issue found with this installed version. + Please migrate IMMEDIATELY to Koozali SME Server 11 or higher version. Failure to upgrade may lead to the compromise of this server. +
Please, consult https://wiki.koozali.org/SME_Server:Download to get last available version.
+

FORM_TITLE

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

CONFIG_LE

SERVICE_STATUS

STATUS +

HOOKSCRIPT_STATUS

HOOKSCRIPT +

HOSTOVERRIDE_STATUS

HOSTOVERRIDE +

ACCEPT_TERMS_STATUS

ACCEPT_TERMS +

API_STATUS

API +

KEYSIZE_STATUS

KEYSIZE +

CONFIGUREMODE_STATUS

CONFIGUREMODE +

EMAIL

EMAIL_STATUS +
+
+ +
+ +
+ + SME Server 11.0.0
Copyright 1999-2006 Mitel Corporation
All rights reserved. + +
Copyright (c) 2013 - 2021 Koozali Foundation Inc.
+
+ + + + diff --git a/html/letsencrypt-list.html b/html/letsencrypt-list.html new file mode 100644 index 0000000..4188918 --- /dev/null +++ b/html/letsencrypt-list.html @@ -0,0 +1,60 @@ + + + + + +SME Server sme11.thereadclan.me.uk + + + + + + + +
+ Warning: a reconfigure and reboot is required before proceeding! Failure to do so now + may leave your system in an unknown state!
+ URGENT NOTICE: As per June 30th 2024, SME Server 10 is obsolete, and potentially INSECURE. NO support will be offered for any issue found with this installed version. + Please migrate IMMEDIATELY to Koozali SME Server 11 or higher version. Failure to upgrade may lead to the compromise of this server. +
Please, consult https://wiki.koozali.org/SME_Server:Download to get last available version.
+

FORM_TITLE

+
+

FORM_DESCRIPTION

+

SERVER_IPS

< +

LABEL_INTERNALIP

192.168.1.11 +

LABEL_IP_FROM_OBSERVER

IP + CONFIG + CHECK_ALL_DOMAINS + CHECK_ENABLED_DOMAINS +
Issuer: /C=--/ST=----/L=Ottawa/O=XYZ Corporation/OU=Main/CN=sme11.thereadclan.me.uk/emailAddress=admin@thereadclan.me.uk

Expiry: 2025-10-03T02:09:03Z

Not Before: 2024-10-03T02:09:03Z
+

CURRENT_LIST_OF_DOMAINS

+ + + + + + + + + + + +
Domain name / HOSTNAMEBrief descriptionContentLABEL_NAMESERVERSLABEL_POINTLABEL_LECERTIS_IN_CERTCHECK
thereadclan.me.ukPrimary domainPrimarylocalhostdisabledYCHECK
--> fred.thereadclan.me.ukSelflocalhostdisabledYCHECK
--> ftp.thereadclan.me.ukSelflocalhostdisabledYCHECK
--> mail.thereadclan.me.ukSelflocalhostdisabledYCHECK
--> proxy.thereadclan.me.ukSelflocalhostdisabledYCHECK
--> sme11.thereadclan.me.ukSelflocalhostdisabledYCHECK
--> wpad.thereadclan.me.ukSelflocalhostdisabledYCHECK
--> www.thereadclan.me.ukSelflocalhostdisabledYCHECK
+
+ +
+ + SME Server 11.0.0
Copyright 1999-2006 Mitel Corporation
All rights reserved. + +
Copyright (c) 2013 - 2021 Koozali Foundation Inc.
+
+ + + \ No newline at end of file diff --git a/json5/Diskusage.json5 b/json5/Diskusage.json5 new file mode 100644 index 0000000..33d10a6 --- /dev/null +++ b/json5/Diskusage.json5 @@ -0,0 +1,50 @@ +// +// Generated by sm1-html-2-json5 version:0.5 Chameleon version:4.5.4 On Python:3.12.3 at 2024-09-23 09:05:51 +// +{ + 'PackageName': 'Diskusage', + 'prefix': 'd', + 'MenuHeading': 'Miscellaneous', + 'MenuDescription': 'Diskusage', + 'MenuNavigation': '2000 400', + 'firstPanel': 'PARAMS', + 'signalEvent': 'smeserver-diskusage-update', + 'html': [ + { + 'Name': 'params', + 'route': 'PARAMS', + 'Header': 'Disk usage', + 'SubHeader': 'Manage Diskusage settings:', + 'Paragraph1': 'Wed Sep 11 19:01:00 BST 2024', + 'Preformatted1': 'Filesystem Size Used Avail Use% Mounted on\n/dev/mapper/main-root 29G 4.8G 24G 17% /\ndevtmpfs 2.0G 0 2.0G 0% /dev\ntmpfs 2.0G 12K 2.0G 1% /dev/shm\ntmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup\ntmpfs 2.0G 648K 2.0G 1% /run\n/dev/sda1 497M 111M 386M 23% /boot', + 'Table1': { + 'Type': 'Table', + 'TableControl': 'Table1', + 'TopHeadings': [ + 'I-bays', + 'Usage', + 'Path' + ], + 'Columns': [ + 'Table1-I-bays', + 'Table1-Usage', + 'Table1-Path' + ] + }, + 'Table2': { + 'Type': 'Table', + 'TableControl': 'Table2', + 'TopHeadings': [ + 'Users', + 'Usage', + 'Path' + ], + 'Columns': [ + 'Table2-Users', + 'Table2-Usage', + 'Table2-Path' + ] + } + } + ] +} \ No newline at end of file diff --git a/json5/letsencrypt-config.json5 b/json5/letsencrypt-config.json5 new file mode 100644 index 0000000..b327817 --- /dev/null +++ b/json5/letsencrypt-config.json5 @@ -0,0 +1,165 @@ +// +// Generated by sm1-html-2-json5 version:0.5 Chameleon version:4.5.4 On Python:3.12.3 at 2024-10-18 14:43:51 +// +{ + 'PackageName': 'letsencrypt-config', + 'prefix': '', + 'MenuHeading': 'Miscellaneous', + 'MenuDescription': 'letsencrypt-config', + 'MenuNavigation': '2000 400', + 'firstPanel': 'PARAMS', + 'signalEvent': 'smeserver-letsencrypt-config-update', + 'html': [ + { + 'Name': 'params', + 'route': 'PARAMS', + 'Header': 'FORM_TITLE', + 'SubHeader': 'Manage letsencrypt-config settings:', + 'Paragraph1': 'CONFIG_LE', + 'Paragraph2': 'SERVICE_STATUS', + 'Input1': { + 'Type': 'Select', + 'Value': '', + 'Name': 'status', + 'Label': null, + 'Options': [ + { + 'Value': 'disabled', + 'Text': 'Disabled' + }, + { + 'Value': 'enabled', + 'Text': 'Enabled' + }, + { + 'Value': 'test', + 'Text': 'TEST' + } + ] + }, + 'Paragraph3': 'HOOKSCRIPT_STATUS', + 'Input2': { + 'Type': 'Select', + 'Value': '', + 'Name': 'hookScript', + 'Label': null, + 'Options': [ + { + 'Value': 'disabled', + 'Text': 'Disabled' + }, + { + 'Value': 'enabled', + 'Text': 'Enabled' + } + ] + }, + 'Paragraph4': 'HOSTOVERRIDE_STATUS', + 'Input3': { + 'Type': 'Select', + 'Value': '', + 'Name': 'hostOverride', + 'Label': null, + 'Options': [ + { + 'Value': 'disabled', + 'Text': 'Disabled' + }, + { + 'Value': 'yes', + 'Text': 'Yes' + } + ] + }, + 'Paragraph5': 'ACCEPT_TERMS_STATUS', + 'Input4': { + 'Type': 'Select', + 'Value': '', + 'Name': 'ACCEPT_TERMS', + 'Label': null, + 'Options': [ + { + 'Value': 'disabled', + 'Text': 'Disabled' + }, + { + 'Value': 'yes', + 'Text': 'Yes' + } + ] + }, + 'Paragraph6': 'API_STATUS', + 'Input5': { + 'Type': 'Select', + 'Value': '', + 'Name': 'API', + 'Label': null, + 'Options': [ + { + 'Value': '2', + 'Text': '2' + } + ] + }, + 'Paragraph7': 'KEYSIZE_STATUS', + 'Input6': { + 'Type': 'Select', + 'Value': '', + 'Name': 'keysize', + 'Label': null, + 'Options': [ + { + 'Value': '2048', + 'Text': '2048' + }, + { + 'Value': '3072', + 'Text': '3072' + }, + { + 'Value': '4096', + 'Text': '4096' + } + ] + }, + 'Paragraph8': 'CONFIGUREMODE_STATUS', + 'Input7': { + 'Type': 'Select', + 'Value': '', + 'Name': 'configure', + 'Label': null, + 'Options': [ + { + 'Value': 'all', + 'Text': 'ALL' + }, + { + 'Value': 'domains', + 'Text': 'Domains' + }, + { + 'Value': 'hosts', + 'Text': 'HOSTS' + }, + { + 'Value': 'none', + 'Text': 'NONE' + } + ] + }, + 'Paragraph9': 'EMAIL', + 'Input8': { + 'Type': 'Text', + 'Value': '', + 'Name': 'email', + 'Label': null + }, + 'Input9': { + 'Type': 'Submit', + 'Value': 'Save', + 'Name': 'Next', + 'Label': null + } + } + ] +} \ No newline at end of file diff --git a/json5/letsencrypt-list.json5 b/json5/letsencrypt-list.json5 new file mode 100644 index 0000000..30b99d2 --- /dev/null +++ b/json5/letsencrypt-list.json5 @@ -0,0 +1,201 @@ +// +// Generated by sm1-html-2-json5 version:0.5 Chameleon version:4.5.4 On Python:3.12.3 at 2024-10-18 14:47:03 +// +{ + 'PackageName': 'letsencrypt-list', + 'prefix': 'lets', + 'MenuHeading': 'Miscellaneous', + 'MenuDescription': 'letsencrypt', + 'MenuNavigation': '2000 400', + 'firstPanel': 'LIST', + 'signalEvent': 'smeserver-letsencrypt-list-update', + 'html': [ + { + 'Name': 'List', + 'route': 'LIST', + 'Header': 'lets_List of Domains', + 'SubHeader': 'lets_FORM_DESCRIPTION', + 'Subheader': 'SERVER_IPS', + Input1: { + Name: 'InternalIP', + Type: 'Text', + Label: 'Internal IP', + Value: 'stash("InternalIP")', + }, + Input2: { + Name: 'ObserverIP', + Type: 'Text', + Label: 'Observer IP', + Value: 'stash("ObserverIP")', + }, + 'Table1': { + 'Type': 'Table', + 'TableControl': 'DomainList', + 'TopHeadings': [ + 'Domain name / HOSTNAME', + 'Brief description', + 'Content', + 'LABEL_NAMESERVERS', + 'LABEL_POINT', + 'LABEL_LECERT', + 'IS_IN_CERT', + 'CHECK' + ], + 'Columns': [ + 'Table1-Domain name / HOSTNAME', + 'Table1-Brief description', + 'Table1-Content', + 'Table1-LABEL_NAMESERVERS', + 'Table1-LABEL_POINT', + 'Table1-LABEL_LECERT', + 'Table1-IS_IN_CERT', + 'Table1-CHECK' + ] + } + }, + { + 'Name': 'params', + 'route': 'PARAMS', + 'Header': 'Configuration for Letsencrypt', + 'SubHeader': 'Manage letsencrypt-config settings:', + 'Paragraph1': 'CONFIG_LETSENCRYPT', + 'Input1': { + 'Type': 'Select', + 'Value': '', + 'Name': 'status', + 'Label': 'SERVICE_STATUS', + 'Options': [ + { + 'Value': 'disabled', + 'Text': 'Disabled' + }, + { + 'Value': 'enabled', + 'Text': 'Enabled' + }, + { + 'Value': 'test', + 'Text': 'TEST' + } + ] + }, + 'Input2': { + 'Type': 'Select', + 'Value': '', + 'Name': 'hookScript', + 'Label': 'HOOKSCRIPT_STATUS', + 'Options': [ + { + 'Value': 'disabled', + 'Text': 'Disabled' + }, + { + 'Value': 'enabled', + 'Text': 'Enabled' + } + ] + }, + 'Input3': { + 'Type': 'Select', + 'Value': '', + 'Name': 'hostOverride', + 'Label': 'HOSTOVERRIDE_STATUS', + 'Options': [ + { + 'Value': 'disabled', + 'Text': 'Disabled' + }, + { + 'Value': 'yes', + 'Text': 'Yes' + } + ] + }, + 'Input4': { + 'Type': 'Select', + 'Value': '', + 'Name': 'ACCEPT_TERMS', + 'Label': 'ACCEPT_TERMS_STATUS', + 'Options': [ + { + 'Value': 'disabled', + 'Text': 'Disabled' + }, + { + 'Value': 'yes', + 'Text': 'Yes' + } + ] + }, + 'Input5': { + 'Type': 'Select', + 'Value': '', + 'Name': 'API', + 'Label': 'API_STATUS', + 'Options': [ + { + 'Value': '2', + 'Text': '2' + } + ] + }, + 'Input6': { + 'Type': 'Select', + 'Value': '', + 'Name': 'keysize', + 'Label': 'KEYSIZE_STATUS', + 'Options': [ + { + 'Value': '2048', + 'Text': '2048' + }, + { + 'Value': '3072', + 'Text': '3072' + }, + { + 'Value': '4096', + 'Text': '4096' + } + ] + }, + 'Input7': { + 'Type': 'Select', + 'Value': '', + 'Name': 'configure', + 'Label': 'CONFIGUREMODE_STATUS', + 'Options': [ + { + 'Value': 'all', + 'Text': 'ALL' + }, + { + 'Value': 'domains', + 'Text': 'Domains' + }, + { + 'Value': 'hosts', + 'Text': 'HOSTS' + }, + { + 'Value': 'none', + 'Text': 'NONE' + } + ] + }, + 'Paragraph9': 'EMAIL', + 'Input8': { + 'Type': 'Text', + 'Value': '', + 'Name': 'email', + 'Label': 'EMAIL'' + }, + 'Input9': { + 'Type': 'Submit', + 'Value': 'Save', + 'Name': 'Next', + 'Label': null + } + } + ] +} \ No newline at end of file diff --git a/trykoji.py b/trykoji.py new file mode 100644 index 0000000..ab8f765 --- /dev/null +++ b/trykoji.py @@ -0,0 +1,10 @@ +import koji + +mytag = "mytag" +session = koji.ClientSession("http://koji.koozali.org/kojihub") +try: + repo_info = session.getRepo(mytag, koji.REPO_STATES["READY"], dist=True) + if not repo_info: + print(f"There is no active dist repo for {mytag}") +except koji.GenericError: + print(f"Tag {mytag} doesn't exist")