Add in letsencrypt SM2 module data

This commit is contained in:
Brian Read 2024-10-18 15:34:35 +01:00
parent 0ed0d09811
commit d83a74100e
13 changed files with 1195 additions and 0 deletions

View File

@ -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;

View File

@ -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 "/<whatever>"
#
#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 <prefix>_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 "/<whatever>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-<whatever>-update exists
#signal_event smeserver-<whatever>-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 "/<whatever>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;

View File

@ -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
%#
<div id="Diskusage-PARAMS" class="partial Diskusage-PARAMS">
<script>
window.onload = function() {
SelectInput();
};
</script>
<h2>
%= l('d_Hello_PARAMS');
</h2>
% 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.
<h1 class='head'><%=l('Disk_usage')%></h1>
<h2 class='subh'><%=l('d_Manage_Diskusage_settings:')%></h2>
<p class='paragraph para1'>
%=l('d_Wed_Sep_11_19:01:00_BST')
</p>
<pre class='preformatted pref1'>
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'
</pre>
<br /><table class="sme-border TableSort sme-table tabl1 ">
<thead class='tabl1'>
<tr table-head-row>
<th class='sme-border table-head-col table-head-col-I-bays '><%=l('d_I-bays')%></th>
<th class='sme-border table-head-col table-head-col-Usage '><%=l('d_Usage')%></th>
<th class='sme-border table-head-col table-head-col-Path '><%=l('d_Path')%></th>
</tr>
</thead>
<tbody class='tabl1'>
% my $control_data = $self->stash('Table1');
% foreach my $row (@$control_data) {
<tr class='table-row'>
<td class='sme-border table-col table-col-Table1-I-bays'><%=$c->render_to_string(inline=>$row->{'Table1-I-bays'})%></td>
<td class='sme-border table-col table-col-Table1-Usage'><%=$c->render_to_string(inline=>$row->{'Table1-Usage'})%></td>
<td class='sme-border table-col table-col-Table1-Path'><%=$c->render_to_string(inline=>$row->{'Table1-Path'})%></td>
</tr>
%}
</tbody>
</table>
<br /><table class="sme-border TableSort sme-table tabl2 ">
<thead class='tabl2'>
<tr table-head-row>
<th class='sme-border table-head-col table-head-col-Users '><%=l('d_Users')%></th>
<th class='sme-border table-head-col table-head-col-Usage '><%=l('d_Usage')%></th>
<th class='sme-border table-head-col table-head-col-Path '><%=l('d_Path')%></th>
</tr>
</thead>
<tbody class='tabl2'>
% my $control_data = $self->stash('Table2');
% foreach my $row (@$control_data) {
<tr class='table-row'>
<td class='sme-border table-col table-col-Table2-Users'><%=$c->render_to_string(inline=>$row->{'Table2-Users'})%></td>
<td class='sme-border table-col table-col-Table2-Usage'><%=$c->render_to_string(inline=>$row->{'Table2-Usage'})%></td>
<td class='sme-border table-col table-col-Table2-Path'><%=$c->render_to_string(inline=>$row->{'Table2-Path'})%></td>
</tr>
%}
</tbody>
</table>
%# Probably finally by a submit.
%end
</div>

View File

@ -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 {}

View File

@ -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'
<div id="module" class="module Diskusage-panel">
% if ($config->{debug} == 1) {
<p>
%= dumper $c->current_route
</p>
% }
<h1><%=$title%></h1>
% if ( stash('modul') ) {
%= $c->render_to_string(inline => stash('modul') );
% }
%if ($d_data->{first}) {
<br><p>
%=$c->render_to_string(inline =>$c->l($d_data->{first}))
</p>
%} elsif ($d_data->{success}) {
<div class='sme-border'>
<h2> Operation Status Report</h2><p>
%= $c->l($d_data->{success});
</p>
</div>
%} elsif ($d_data->{error}) {
<div class='sme-error'>
<h2> Operation Status Report - error</h2><p>
%= $c->l($d_data->{error});
</p>
</div>
%}
%#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'
%}
</div>
%end

View File

@ -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',

93
html/Diskusage.html Normal file
View File

@ -0,0 +1,93 @@
<!DOCTYPE html
PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>SME Server sme10.thereadclan.me.uk</title>
<link rev="made" href="mailto:bugs%40koozali.org">
<meta name="copyright" content="(head.tmpl)Copyright 2003-2004 Mitel Corporation">
<link rel="stylesheet" type="text/css" href="/server-common/css/sme_core.css">
<style type="text/css">
@import url("/server-common/css/sme_main.css");
</style>
</head>
<body>
<h1>Disk usage</h1>
<form method="POST" action="diskusage" enctype="application/x-www-form-urlencoded">
<input type="hidden" name="page" value="0">
<input type="hidden" name="page_stack" value="">
<input type=hidden name=".id" value="65306129a4e734ea46f31f7f8630a65d">
<input type="hidden" name="csrf_token" value="QbCmcx81coESLmdiNA5k9GiTKg2k7sJQLiY00BxtwXS">
<table class="sme-noborders">
<p>&nbsp
</p>
<p>Wed Sep 11 19:01:00 BST 2024
</p>
<p><pre>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
</pre></p>
<table class="sme-border">
<tr>
<th colspan="1" class="sme-border">I-bays</th>
<th colspan="1" class="sme-border">Usage</th>
<th colspan="1" class="sme-border">Path</th>
</tr>
<tr>
<td colspan="1" class="sme-border">Primary</td>
<td colspan="1" class="sme-border">4.0K</td>
<td colspan="1" class="sme-border">/home/e-smith/files/ibays/Primary</td>
</tr>
<tr>
<td colspan="1" class="sme-border">anibay</td>
<td colspan="1" class="sme-border">4.0K</td>
<td colspan="1" class="sme-border">/home/e-smith/files/ibays/anibay</td>
</tr>
<tr>
<td colspan="1" class="sme-border">opt</td>
<td colspan="1" class="sme-border">410M</td>
<td colspan="1" class="sme-border">/opt</td>
</tr>
</table>
<p>&nbsp
</p>
<table class="sme-border">
<tr>
<th colspan="1" class="sme-border">Users</th>
<th colspan="1" class="sme-border">Usage</th>
<th colspan="1" class="sme-border">Path</th>
</tr>
<tr>
<td colspan="1" class="sme-border">root</td>
<td colspan="1" class="sme-border">2.1M</td>
<td colspan="1" class="sme-border">/root</td>
</tr>
<tr>
<td colspan="1" class="sme-border">brianr</td>
<td colspan="1" class="sme-border">16K</td>
<td colspan="1" class="sme-border">/home/e-smith/files/users/brianr</td>
</tr>
</table>
</table>
</form>
<HR class="sme-copyrightbar">
<FONT class="sme-copyright">
SME Server 10.1
<BR>Copyright 1999-2006 Mitel Corporation
<BR>All rights reserved.
<BR>Copyright (c) 2013 - 2021 Koozali Foundation Inc.
<BR>
</FONT>
</BODY>
</HTML>

View File

@ -0,0 +1,119 @@
<!DOCTYPE html
PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>SME Server sme11.thereadclan.me.uk</title>
<link rev="made" href="mailto:bugs%40koozali.org">
<meta name="copyright" content="(head.tmpl)Copyright 2003-2004 Mitel Corporation">
<link rel="stylesheet" type="text/css" href="/server-common/css/sme_core.css">
<style type="text/css">
@import url("/server-common/css/sme_main.css");
</style>
</head>
<body>
<div class="sme-error"><h5>
Warning: a reconfigure and reboot is required before proceeding! Failure to do so now
may leave your system in an unknown state!</h5></div><div class="sme-error"><h5>
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.
</br>Please, consult <a href="https://wiki.koozali.org/SME_Server:Download" target="_blank">https://wiki.koozali.org/SME_Server:Download</a> to get last available version.</h5></div>
<h1>FORM_TITLE</h1>
<form method="POST" action="letsencrypt" enctype="application/x-www-form-urlencoded">
<input type="hidden" name="page" value="5">
<input type="hidden" name="page_stack" value="0">
<input type=hidden name=".id" value="380a916ca19b2bac24b18a9a1f3c0148">
<input type="hidden" name="csrf_token" value="TRmldnck0Ee3Iylyo9zIsxrl3Fgxv3XhueCFUHilw6r">
<table class="sme-noborders">
<tr><td colspan="2"><p>CONFIG_LE</p></td>
</tr>
<tr>
<td colspan="2"><p>SERVICE_STATUS</p></td>
</tr> <tr>
<td class="sme-noborders-label">STATUS
<td class="sme-noborders-content"><SELECT NAME="status" TYPE="select">
<OPTION VALUE="disabled" SELECTED>Disabled
<OPTION VALUE="enabled">Enabled
<OPTION VALUE="test">TEST
</SELECT></td>
</tr>
<tr>
<td colspan="2"><p>HOOKSCRIPT_STATUS</p></td>
</tr> <tr>
<td class="sme-noborders-label">HOOKSCRIPT
<td class="sme-noborders-content"><SELECT NAME="hookScript" TYPE="select">
<OPTION VALUE="disabled" SELECTED>Disabled
<OPTION VALUE="enabled">Enabled
</SELECT></td>
</tr>
<tr>
<td colspan="2"><p>HOSTOVERRIDE_STATUS</p></td>
</tr> <tr>
<td class="sme-noborders-label">HOSTOVERRIDE
<td class="sme-noborders-content"><SELECT NAME="hostOverride" TYPE="select">
<OPTION VALUE="disabled" SELECTED>Disabled
<OPTION VALUE="yes">Yes
</SELECT></td>
</tr>
<tr>
<td colspan="2"><p>ACCEPT_TERMS_STATUS</p></td>
</tr> <tr>
<td class="sme-noborders-label">ACCEPT_TERMS
<td class="sme-noborders-content"><SELECT NAME="ACCEPT_TERMS" TYPE="select">
<OPTION VALUE="disabled">Disabled
<OPTION VALUE="yes">Yes
</SELECT></td>
</tr>
<tr>
<td colspan="2"><p>API_STATUS</p></td>
</tr> <tr>
<td class="sme-noborders-label">API
<td class="sme-noborders-content"><SELECT NAME="API" TYPE="select">
<OPTION VALUE="2" SELECTED>2
</SELECT></td>
</tr>
<tr>
<td colspan="2"><p>KEYSIZE_STATUS</p></td>
</tr> <tr>
<td class="sme-noborders-label">KEYSIZE
<td class="sme-noborders-content"><SELECT TYPE="select" NAME="keysize">
<OPTION VALUE="2048">2048
<OPTION VALUE="3072">3072
<OPTION VALUE="4096" SELECTED>4096
</SELECT></td>
</tr>
<tr>
<td colspan="2"><p>CONFIGUREMODE_STATUS</p></td>
</tr> <tr>
<td class="sme-noborders-label">CONFIGUREMODE
<td class="sme-noborders-content"><SELECT TYPE="select" NAME="configure">
<OPTION VALUE="all">ALL
<OPTION VALUE="domains">Domains
<OPTION VALUE="hosts">HOSTS
<OPTION VALUE="none" SELECTED>NONE
</SELECT></td>
</tr>
<tr>
<td colspan="2"><p>EMAIL</p></td>
</tr> <tr>
<td class="sme-noborders-label">EMAIL_STATUS
<td class="sme-noborders-content"><INPUT NAME="email" VALUE TYPE="text"></td>
</tr>
</table>
<table width=100%><tr><th class="sme-layout"><input type="submit" name="Next" value="Save"></th></tr></table>
</table>
</form>
<HR class="sme-copyrightbar">
<FONT class="sme-copyright">
SME Server 11.0.0<BR>Copyright 1999-2006 Mitel Corporation<BR>All rights reserved.
<BR>Copyright (c) 2013 - 2021 Koozali Foundation Inc.<BR>
</FONT>
</BODY>
</HTML>

View File

@ -0,0 +1,60 @@
<!DOCTYPE html
PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>SME Server sme11.thereadclan.me.uk</title>
<link rev="made" href="mailto:bugs%40koozali.org">
<meta name="copyright" content="(head.tmpl)Copyright 2003-2004 Mitel Corporation">
<link rel="stylesheet" type="text/css" href="/server-common/css/sme_core.css">
<style type="text/css">
@import url("/server-common/css/sme_main.css");
</style>
</head>
<body>
<div class="sme-error"><h5>
Warning: a reconfigure and reboot is required before proceeding! Failure to do so now
may leave your system in an unknown state!</h5></div><div class="sme-error"><h5>
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.
</br>Please, consult <a href="https://wiki.koozali.org/SME_Server:Download" target="_blank">https://wiki.koozali.org/SME_Server:Download</a> to get last available version.</h5></div>
<h1>FORM_TITLE</h1>
<form method="POST" action="letsencrypt" enctype="application/x-www-form-urlencoded">
<p>FORM_DESCRIPTION</p>
<p>SERVER_IPS</p><
<p>LABEL_INTERNALIP</p>192.168.1.11
<p>LABEL_IP_FROM_OBSERVER</p>IP
<a class="button-like"
href="letsencrypt?page=0&page_stack=&Next=Next&wherenext=CONFIG_PAGE">CONFIG</a>
<a class="button-like"
href="letsencrypt?page=0&page_stack=&Next=Next&wherenext=CHECK_DOMAINS_PAGE">CHECK_ALL_DOMAINS</a>
<a class="button-like"
href="letsencrypt?page=0&page_stack=&Next=Next&wherenext=CHECK_ENABLED_DOMAINS_PAGE">CHECK_ENABLED_DOMAINS</a>
<br> Issuer: /C=--/ST=----/L=Ottawa/O=XYZ Corporation/OU=Main/CN=sme11.thereadclan.me.uk/emailAddress=admin@thereadclan.me.uk<br> <br> Expiry: 2025-10-03T02:09:03Z<br> <br> Not Before: 2024-10-03T02:09:03Z<br>
<h2>CURRENT_LIST_OF_DOMAINS</h2>
<table class="sme-border">
<tr bgcolor="#D4D0C8"><th>Domain name / HOSTNAME</th><th>Brief description</th><th>Content</th><th>LABEL_NAMESERVERS</th><th>LABEL_POINT</th><th>LABEL_LECERT</th><th>IS_IN_CERT</th><th>CHECK</th></tr>
<tr><td>thereadclan.me.uk</td><td>Primary domain</td><td>Primary</td><td>localhost</td><td></td><td>disabled</td><td>Y</td><td><a href="letsencrypt?page=0&page_stack=&Next=First&Domain=thereadclan.me.uk&wherenext=UPDATE_ONE_DOMAIN_PAGE">CHECK</a></td></tr>
<tr bgcolor="#D4D0C8"><td>--> fred.thereadclan.me.uk</td><td></td><td>Self</td><td>localhost</td><td></td><td>disabled</td><td>Y</td><td><a href="letsencrypt?page=0&page_stack=&Next=First&Domain=--%3E%20fred.thereadclan.me.uk&wherenext=UPDATE_ONE_DOMAIN_PAGE">CHECK</a></td></tr>
<tr><td>--> ftp.thereadclan.me.uk</td><td></td><td>Self</td><td>localhost</td><td></td><td>disabled</td><td>Y</td><td><a href="letsencrypt?page=0&page_stack=&Next=First&Domain=--%3E%20ftp.thereadclan.me.uk&wherenext=UPDATE_ONE_DOMAIN_PAGE">CHECK</a></td></tr>
<tr bgcolor="#D4D0C8"><td>--> mail.thereadclan.me.uk</td><td></td><td>Self</td><td>localhost</td><td></td><td>disabled</td><td>Y</td><td><a href="letsencrypt?page=0&page_stack=&Next=First&Domain=--%3E%20mail.thereadclan.me.uk&wherenext=UPDATE_ONE_DOMAIN_PAGE">CHECK</a></td></tr>
<tr><td>--> proxy.thereadclan.me.uk</td><td></td><td>Self</td><td>localhost</td><td></td><td>disabled</td><td>Y</td><td><a href="letsencrypt?page=0&page_stack=&Next=First&Domain=--%3E%20proxy.thereadclan.me.uk&wherenext=UPDATE_ONE_DOMAIN_PAGE">CHECK</a></td></tr>
<tr bgcolor="#D4D0C8"><td>--> sme11.thereadclan.me.uk</td><td></td><td>Self</td><td>localhost</td><td></td><td>disabled</td><td>Y</td><td><a href="letsencrypt?page=0&page_stack=&Next=First&Domain=--%3E%20sme11.thereadclan.me.uk&wherenext=UPDATE_ONE_DOMAIN_PAGE">CHECK</a></td></tr>
<tr><td>--> wpad.thereadclan.me.uk</td><td></td><td>Self</td><td>localhost</td><td></td><td>disabled</td><td>Y</td><td><a href="letsencrypt?page=0&page_stack=&Next=First&Domain=--%3E%20wpad.thereadclan.me.uk&wherenext=UPDATE_ONE_DOMAIN_PAGE">CHECK</a></td></tr>
<tr bgcolor="#D4D0C8"><td>--> www.thereadclan.me.uk</td><td></td><td>Self</td><td>localhost</td><td></td><td>disabled</td><td>Y</td><td><a href="letsencrypt?page=0&page_stack=&Next=First&Domain=--%3E%20www.thereadclan.me.uk&wherenext=UPDATE_ONE_DOMAIN_PAGE">CHECK</a></td></tr>
</table>
</form>
<HR class="sme-copyrightbar">
<FONT class="sme-copyright">
SME Server 11.0.0<BR>Copyright 1999-2006 Mitel Corporation<BR>All rights reserved.
<BR>Copyright (c) 2013 - 2021 Koozali Foundation Inc.<BR>
</FONT>
</BODY>
</HTML>

50
json5/Diskusage.json5 Normal file
View File

@ -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'
]
}
}
]
}

View File

@ -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
}
}
]
}

View File

@ -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
}
}
]
}

10
trykoji.py Normal file
View File

@ -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")