Remove headfings in Error and status and sort out non global opening of DBs
This commit is contained in:
commit
9fe0a050cf
0
.gitignore
vendored
Normal file → Executable file
0
.gitignore
vendored
Normal file → Executable file
@ -1,63 +0,0 @@
|
|||||||
#
|
|
||||||
# Generated by SM2Gen version:0.8 Chameleon version:4.5.4 On Python:3.12.3 at 2024-09-22 11:42:48
|
|
||||||
#
|
|
||||||
#
|
|
||||||
# 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)
|
|
||||||
|
|
||||||
|
|
||||||
# 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;
|
|
@ -1,63 +0,0 @@
|
|||||||
#
|
|
||||||
# Generated by SM2Gen version:0.8 Chameleon version:4.5.4 On Python:3.12.3 at 2024-09-18 09:02:36
|
|
||||||
#
|
|
||||||
#
|
|
||||||
# Routines to be edited by the developer to provide validation for parameters
|
|
||||||
# and provison of the control data for table(s)
|
|
||||||
# lcPackageName=json5_dict["PackageName"].lower(),
|
|
||||||
|
|
||||||
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)
|
|
||||||
|
|
||||||
|
|
||||||
# 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;
|
|
@ -1,243 +0,0 @@
|
|||||||
package SrvMngr::Controller::CreateStarterWebsite;
|
|
||||||
#
|
|
||||||
# Generated by SM2Gen version:0.8 Chameleon version:4.5.4 On Python:3.12.3 at 2024-09-22 11:42:48
|
|
||||||
#
|
|
||||||
#----------------------------------------------------------------------
|
|
||||||
# heading : Miscellaneous
|
|
||||||
# description : Create Starter Website
|
|
||||||
# navigation : 2000 400
|
|
||||||
#
|
|
||||||
# name : createstarterwebsite, method : get, url : /createstarterwebsite, ctlact : CreateStarterWebsite#main
|
|
||||||
# name : createstarterwebsiteu, method : post, url : /createstarterwebsiteu, ctlact : CreateStarterWebsite#do_update
|
|
||||||
# name : createstarterwebsited, method : get, url : /createstarterwebsited, ctlact : CreateStarterWebsite#do_display
|
|
||||||
#
|
|
||||||
# routes : end
|
|
||||||
#
|
|
||||||
# Documentation: https://wiki.contribs.org/CreateStarterWebsite
|
|
||||||
#----------------------------------------------------------------------
|
|
||||||
|
|
||||||
#
|
|
||||||
# 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/CreateStarterWebsite-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 %csw_data = ();
|
|
||||||
my $title = $c->l('csw_Create_Starter_Website');
|
|
||||||
my $modul = '';
|
|
||||||
|
|
||||||
$csw_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(
|
|
||||||
title => $title,
|
|
||||||
modul => $modul,
|
|
||||||
csw_data => \%csw_data
|
|
||||||
);
|
|
||||||
$c->render( template => "createstarterwebsite" );
|
|
||||||
}
|
|
||||||
|
|
||||||
# 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 %csw_data = ();
|
|
||||||
my $title = $c->l('csw_Create_Starter_Website');
|
|
||||||
|
|
||||||
# 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}) {
|
|
||||||
$csw_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(\%csw_data);
|
|
||||||
$thispanel = 'PARAMS';
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
if ($ret ne "ok") {
|
|
||||||
# return to the panel with error message
|
|
||||||
$c->stash(error => $c->l($ret));
|
|
||||||
$c->render("createstarterwebsite");
|
|
||||||
} else {
|
|
||||||
#Do whatever is needed, including writing values to the DB
|
|
||||||
|
|
||||||
if ($trt eq 'PARAMS'){
|
|
||||||
#do whatever is required ...
|
|
||||||
$ret = $c->perform_PARAMS(\%csw_data);
|
|
||||||
if ($ret ne "ok") {
|
|
||||||
# return to the panel with error message
|
|
||||||
$c->stash(error => $c->l($ret));
|
|
||||||
$c->render("createstarterwebsite");
|
|
||||||
} else {
|
|
||||||
$c->stash( success => $c->l('csw_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,
|
|
||||||
csw_data => \%csw_data
|
|
||||||
);
|
|
||||||
if ('none' eq 'none') {
|
|
||||||
$csw_data{'trt'} = 'PARAMS';
|
|
||||||
} else {
|
|
||||||
$csw_data{'trt'} = 'none';
|
|
||||||
}
|
|
||||||
$c->render("createstarterwebsite");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
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 %csw_data = ();
|
|
||||||
my $title = $c->l('csw_Create_Starter_Website');
|
|
||||||
|
|
||||||
# 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}) {
|
|
||||||
$csw_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($csw_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){
|
|
||||||
$csw_data{$key} = $value;
|
|
||||||
}
|
|
||||||
# Where to go now
|
|
||||||
$csw_data{'trt'} = $trt;
|
|
||||||
|
|
||||||
# Data for panel
|
|
||||||
$c->stash(
|
|
||||||
title => $title,
|
|
||||||
csw_data => \%csw_data
|
|
||||||
);
|
|
||||||
$c->render("createstarterwebsite");
|
|
||||||
}
|
|
||||||
1;
|
|
@ -1,101 +0,0 @@
|
|||||||
%#
|
|
||||||
%# Generated by SM2Gen version:0.8 Chameleon version:4.5.4 On Python:3.12.3 at 2024-09-22 11:42:48
|
|
||||||
%#
|
|
||||||
<div id="CreateStarterWebsite-PARAMS" class="partial CreateStarterWebsite-PARAMS">
|
|
||||||
<script>
|
|
||||||
window.onload = function() {
|
|
||||||
SelectInput();
|
|
||||||
};
|
|
||||||
</script>
|
|
||||||
<h2>
|
|
||||||
%= l('csw_Hello_PARAMS');
|
|
||||||
</h2>
|
|
||||||
% my $btn = l('csw_APPLY');
|
|
||||||
%= form_for "CreateStarterWebsited" => (method => 'POST') => begin
|
|
||||||
|
|
||||||
% param 'trt' => $csw_data->{trt} unless param 'trt';
|
|
||||||
%= hidden_field 'trt' => $csw_data->{trt}
|
|
||||||
%# Inputs etc in here.
|
|
||||||
|
|
||||||
<h1 class='head'><%=l('csw_Create_a_starter_website')%></h1>
|
|
||||||
|
|
||||||
<h2 class='subh'><%=l('csw_Manage_CreateStarterWebsite_settings:')%></h2>
|
|
||||||
|
|
||||||
<p class='paragraph para1'>
|
|
||||||
%=l('csw_To_create_a_simple_web')
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<p class='paragraph para2'>
|
|
||||||
%=l('csw_You_can_leave_any_field')
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<p class='paragraph para3'>
|
|
||||||
%=l('csw_The_text_that_you_enter')
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<p class='paragraph para4'>
|
|
||||||
%=l('csw_Do_not_use_this_optionif')
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<p><span class=label>
|
|
||||||
%=l('csw_')
|
|
||||||
</span><span class=data>
|
|
||||||
% param 'companyName' => $csw_data->{companyName} unless param 'companyName';
|
|
||||||
%= text_field 'companyName', size => '50', class => 'textinput companyName' , pattern=>'.*' , placeholder=>'companyName'
|
|
||||||
<br></span></p>
|
|
||||||
|
|
||||||
<p class='paragraph para5'>
|
|
||||||
%=l('csw_First_header,_typically_used_for')
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<p><span class=label>
|
|
||||||
%=l('csw_')
|
|
||||||
</span><span class=data>
|
|
||||||
% param 'header1' => $csw_data->{header1} unless param 'header1';
|
|
||||||
%= text_field 'header1', size => '50', class => 'textinput header1' , pattern=>'.*' , placeholder=>'header1'
|
|
||||||
<br></span></p>
|
|
||||||
|
|
||||||
<p class='paragraph para6'>
|
|
||||||
%=l('csw_Text_following_first_header,_typically')
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<span class=label>
|
|
||||||
%=l('csw_')
|
|
||||||
</span><span class=data>
|
|
||||||
% param 'text1' => $csw_data->{text1} unless param 'text1';
|
|
||||||
%= text_area 'text1', cols=>40, rows=>10
|
|
||||||
</span><br>
|
|
||||||
|
|
||||||
<p class='paragraph para7'>
|
|
||||||
%=l('csw_Second_header,_typically_used_for')
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<p><span class=label>
|
|
||||||
%=l('csw_')
|
|
||||||
</span><span class=data>
|
|
||||||
% param 'header2' => $csw_data->{header2} unless param 'header2';
|
|
||||||
%= text_field 'header2', size => '50', class => 'textinput header2' , pattern=>'.*' , placeholder=>'header2'
|
|
||||||
<br></span></p>
|
|
||||||
|
|
||||||
<p class='paragraph para8'>
|
|
||||||
%=l('csw_Text_following_second_header,_typically')
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<span class=label>
|
|
||||||
%=l('csw_')
|
|
||||||
</span><span class=data>
|
|
||||||
% param 'text2' => $csw_data->{text2} unless param 'text2';
|
|
||||||
%= text_area 'text2', cols=>40, rows=>10
|
|
||||||
</span><br>
|
|
||||||
|
|
||||||
<p class='paragraph para9'>
|
|
||||||
%=l('csw_When_you_create_this_web')
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<p class='paragraph para10'>
|
|
||||||
%=l('csw_Do_you_wish_to_proceed?')
|
|
||||||
</p>
|
|
||||||
|
|
||||||
%# Probably finally by a submit.
|
|
||||||
%end
|
|
||||||
</div>
|
|
@ -1,24 +0,0 @@
|
|||||||
/*
|
|
||||||
Generated by SM2Gen version: SM2Gen version:0.8 Chameleon version:4.5.4 On Python:3.12.3 at 2024-09-22 11:42:48
|
|
||||||
*/
|
|
||||||
.CreateStarterWebsite-panel {}
|
|
||||||
.name {}
|
|
||||||
.rout {}
|
|
||||||
.head {}
|
|
||||||
.subh {}
|
|
||||||
.para1 {}
|
|
||||||
.para2 {}
|
|
||||||
.para3 {}
|
|
||||||
.para4 {}
|
|
||||||
.text1 {}
|
|
||||||
.para5 {}
|
|
||||||
.text2 {}
|
|
||||||
.para6 {}
|
|
||||||
.text3 {}
|
|
||||||
.para7 {}
|
|
||||||
.text4 {}
|
|
||||||
.para8 {}
|
|
||||||
.text5 {}
|
|
||||||
.para9 {}
|
|
||||||
.para10 {}
|
|
||||||
.subm6 {}
|
|
@ -1,52 +0,0 @@
|
|||||||
%#
|
|
||||||
%# Generated by SM2Gen version:0.8 Chameleon version:4.5.4 On Python:3.12.3 at 2024-09-22 11:42:48
|
|
||||||
%#
|
|
||||||
% layout 'default', title => "Sme server 2 - Create Starter Website", share_dir => './';
|
|
||||||
%# css specific to this panel:
|
|
||||||
% content_for 'module' => begin
|
|
||||||
%= stylesheet '/css/createstarterwebsite.css'
|
|
||||||
<div id="module" class="module CreateStarterWebsite-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 ($csw_data->{first}) {
|
|
||||||
<br><p>
|
|
||||||
%=$c->render_to_string(inline =>$c->l($csw_data->{first}))
|
|
||||||
</p>
|
|
||||||
|
|
||||||
%} elsif ($csw_data->{success}) {
|
|
||||||
<div class='sme-border'>
|
|
||||||
<h2> Operation Status Report</h2><p>
|
|
||||||
%= $c->l($csw_data->{success});
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
%} elsif ($csw_data->{error}) {
|
|
||||||
<div class='sme-error'>
|
|
||||||
<h2> Operation Status Report - error</h2><p>
|
|
||||||
%= $c->l($csw_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 ($csw_data->{trt} eq "PARAMS") {
|
|
||||||
%= include 'partials/_csw_PARAMS'
|
|
||||||
%}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
%end
|
|
@ -1,20 +0,0 @@
|
|||||||
#
|
|
||||||
# Generated by SM2Gen version: SM2Gen version:0.8 Chameleon version:4.5.4 On Python:3.12.3 at 2024-09-22 11:42:48
|
|
||||||
#
|
|
||||||
'csw_You_can_leave_any_field' => 'You can leave any field blank if you do not need it. ',
|
|
||||||
'csw_Do_you_wish_to_proceed?' => 'Do you wish to proceed?',
|
|
||||||
'csw_Text_following_second_header,_typically' => 'Text following second header, Typically used for contact or ordering information:',
|
|
||||||
'csw_Create_Starter_Website' => 'Create Starter Website',
|
|
||||||
'csw_Hello_PARAMS' => 'Hello PARAMS',
|
|
||||||
'csw_The_text_that_you_enter' => 'The text that you enter below will be line wrapped for a nicer appearance in your web page. Leave a blank line whenever you want to start a new paragraph. If you need to force a line break without starting a new paragraph (for example after each line of a mailing address), Then type the four-character sequence',
|
|
||||||
'csw_Text_following_first_header,_typically' => 'Text following first header, Typically used for a paragraph of marketing information. ',
|
|
||||||
'csw_Second_header,_typically_used_for' => 'Second header, Typically used for short phrases such as For more information or To order our products:',
|
|
||||||
'csw_When_you_create_this_web' => 'When you create this web page, The file index. Htm will be overwritten in your web site directory. ',
|
|
||||||
'csw_Manage_CreateStarterWebsite_settings:' => 'Manage CreateStarterWebsite settings:',
|
|
||||||
'csw_Do_not_use_this_optionif' => 'Do not use this optionif you have already customized your web site, Since it will overwrite the index. Htm file in your web site directory. ',
|
|
||||||
'csw_Create_a_starter_website' => 'Create a starter website',
|
|
||||||
'csw_PARAMS_panel_action_was_successful' => 'PARAMS panel action was successful',
|
|
||||||
'csw_To_create_a_simple_web' => 'To create a simple web page for your company, Fill in the fields below and click onCreate. ',
|
|
||||||
'csw_First_header,_typically_used_for' => 'First header, Typically used for short phrases such as Leader in the field of textile manufacturing',
|
|
||||||
'csw_APPLY' => 'Apply',
|
|
||||||
'csw_' => '',
|
|
@ -1,87 +0,0 @@
|
|||||||
#
|
|
||||||
# Generated by SM2Gen version:0.8 Chameleon version:4.5.4 On Python:3.12.3 at 2024-09-22 11:30:26
|
|
||||||
#
|
|
||||||
#
|
|
||||||
# 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;
|
|
@ -1,87 +0,0 @@
|
|||||||
#
|
|
||||||
# Routines to be edited by the developer to provide validation for parameters
|
|
||||||
# and provison of the control data for table(s)
|
|
||||||
#
|
|
||||||
# Generated by SM2Gen version:0.8 Chameleon version:4.5.4 On Python:3.12.3 at 2024-09-16 11:18
|
|
||||||
#
|
|
||||||
|
|
||||||
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;
|
|
@ -1,245 +0,0 @@
|
|||||||
package SrvMngr::Controller::DiskUsage;
|
|
||||||
#
|
|
||||||
# Generated by SM2Gen version:0.8 Chameleon version:4.5.4 On Python:3.12.3 at 2024-09-22 11:30:26
|
|
||||||
#
|
|
||||||
#----------------------------------------------------------------------
|
|
||||||
# heading : Miscellaneous
|
|
||||||
# description : Disk Usage
|
|
||||||
# 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 %du_data = ();
|
|
||||||
my $title = $c->l('du_Disk_Usage');
|
|
||||||
my $modul = '';
|
|
||||||
|
|
||||||
$du_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,
|
|
||||||
du_data => \%du_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 %du_data = ();
|
|
||||||
my $title = $c->l('du_Disk_Usage');
|
|
||||||
|
|
||||||
# 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}) {
|
|
||||||
$du_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(\%du_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(\%du_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('du_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,
|
|
||||||
du_data => \%du_data
|
|
||||||
);
|
|
||||||
if ('none' eq 'none') {
|
|
||||||
$du_data{'trt'} = 'PARAMS';
|
|
||||||
} else {
|
|
||||||
$du_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 %du_data = ();
|
|
||||||
my $title = $c->l('du_Disk_Usage');
|
|
||||||
|
|
||||||
# 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}) {
|
|
||||||
$du_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($du_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){
|
|
||||||
$du_data{$key} = $value;
|
|
||||||
}
|
|
||||||
# Where to go now
|
|
||||||
$du_data{'trt'} = $trt;
|
|
||||||
|
|
||||||
# Data for panel
|
|
||||||
$c->stash(
|
|
||||||
title => $title,
|
|
||||||
du_data => \%du_data
|
|
||||||
);
|
|
||||||
$c->render("diskusage");
|
|
||||||
}
|
|
||||||
1;
|
|
@ -1,83 +0,0 @@
|
|||||||
%#
|
|
||||||
%# Generated by SM2Gen version:0.8 Chameleon version:4.5.4 On Python:3.12.3 at 2024-09-22 11:30:26
|
|
||||||
%#
|
|
||||||
<div id="DiskUsage-PARAMS" class="partial DiskUsage-PARAMS">
|
|
||||||
<script>
|
|
||||||
window.onload = function() {
|
|
||||||
SelectInput();
|
|
||||||
};
|
|
||||||
</script>
|
|
||||||
<h2>
|
|
||||||
%= l('du_Hello_PARAMS');
|
|
||||||
</h2>
|
|
||||||
% my $btn = l('du_APPLY');
|
|
||||||
%= form_for "DiskUsaged" => (method => 'POST') => begin
|
|
||||||
|
|
||||||
% param 'trt' => $du_data->{trt} unless param 'trt';
|
|
||||||
%= hidden_field 'trt' => $du_data->{trt}
|
|
||||||
%# Inputs etc in here.
|
|
||||||
|
|
||||||
<h1><%=l('du_Disk_usage')%></h1>
|
|
||||||
|
|
||||||
<h2><%=l('du_Manage_DiskUsage_settings:')%></h2>
|
|
||||||
|
|
||||||
<p class='paragraph para1'>
|
|
||||||
%=l('du_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('du_I-bays')%></th>
|
|
||||||
<th class='sme-border table-head-col table-head-col-Usage '><%=l('du_Usage')%></th>
|
|
||||||
<th class='sme-border table-head-col table-head-col-Path '><%=l('du_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('du_Users')%></th>
|
|
||||||
<th class='sme-border table-head-col table-head-col-Usage '><%=l('du_Usage')%></th>
|
|
||||||
<th class='sme-border table-head-col table-head-col-Path '><%=l('du_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>
|
|
@ -1,16 +0,0 @@
|
|||||||
/*
|
|
||||||
Generated by SM2Gen version: SM2Gen version:0.8 Chameleon version:4.5.4 On Python:3.12.3 at 2024-09-22 11:30:26
|
|
||||||
*/
|
|
||||||
.DiskUsage-panel {}
|
|
||||||
.name {}
|
|
||||||
.rout {}
|
|
||||||
.head {}
|
|
||||||
.subh {}
|
|
||||||
.para1 {}
|
|
||||||
.pref1 {}
|
|
||||||
.tabl1 {}
|
|
||||||
thead .tabl1 {}
|
|
||||||
tbody .tabl1 {}
|
|
||||||
.tabl2 {}
|
|
||||||
thead .tabl2 {}
|
|
||||||
tbody .tabl2 {}
|
|
@ -1,52 +0,0 @@
|
|||||||
%#
|
|
||||||
%# Generated by SM2Gen version:0.8 Chameleon version:4.5.4 On Python:3.12.3 at 2024-09-22 11:30:26
|
|
||||||
%#
|
|
||||||
% layout 'default', title => "Sme server 2 - Disk Usage", 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 ($du_data->{first}) {
|
|
||||||
<br><p>
|
|
||||||
%=$c->render_to_string(inline =>$c->l($du_data->{first}))
|
|
||||||
</p>
|
|
||||||
|
|
||||||
%} elsif ($du_data->{success}) {
|
|
||||||
<div class='sme-border'>
|
|
||||||
<h2> Operation Status Report</h2><p>
|
|
||||||
%= $c->l($du_data->{success});
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
%} elsif ($du_data->{error}) {
|
|
||||||
<div class='sme-error'>
|
|
||||||
<h2> Operation Status Report - error</h2><p>
|
|
||||||
%= $c->l($du_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 ($du_data->{trt} eq "PARAMS") {
|
|
||||||
%= include 'partials/_du_PARAMS'
|
|
||||||
%}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
%end
|
|
@ -1,14 +0,0 @@
|
|||||||
#
|
|
||||||
# Generated by SM2Gen version: SM2Gen version:0.8 Chameleon version:4.5.4 On Python:3.12.3 at 2024-09-22 11:30:26
|
|
||||||
#
|
|
||||||
'du_I-bays' => 'I-bays',
|
|
||||||
'du_APPLY' => 'Apply',
|
|
||||||
'du_Disk_Usage' => 'Disk Usage',
|
|
||||||
'du_Hello_PARAMS' => 'Hello PARAMS',
|
|
||||||
'du_PARAMS_panel_action_was_successful' => 'PARAMS panel action was successful',
|
|
||||||
'du_Wed_Sep_11_19:01:00_BST' => 'Wed Sep 11 19:01:00 BST 2024',
|
|
||||||
'du_Path' => 'Path',
|
|
||||||
'du_Usage' => 'Usage',
|
|
||||||
'du_Users' => 'Users',
|
|
||||||
'du_Disk_usage' => 'Disk usage',
|
|
||||||
'du_Manage_DiskUsage_settings:' => 'Manage DiskUsage settings:',
|
|
0
Targets/Diskusage/Diskusage-Custom.pm
Normal file → Executable file
0
Targets/Diskusage/Diskusage-Custom.pm
Normal file → Executable file
0
Targets/Diskusage/Diskusage.pm
Normal file → Executable file
0
Targets/Diskusage/Diskusage.pm
Normal file → Executable file
0
Targets/Diskusage/_d_PARAMS.html.ep
Normal file → Executable file
0
Targets/Diskusage/_d_PARAMS.html.ep
Normal file → Executable file
0
Targets/Diskusage/diskusage.css
Normal file → Executable file
0
Targets/Diskusage/diskusage.css
Normal file → Executable file
0
Targets/Diskusage/diskusage.html.ep
Normal file → Executable file
0
Targets/Diskusage/diskusage.html.ep
Normal file → Executable file
0
Targets/Diskusage/diskusage_en.lex
Normal file → Executable file
0
Targets/Diskusage/diskusage_en.lex
Normal file → Executable file
0
Targets/Letsencrypt/Letsencrypt-Custom.pm
Normal file → Executable file
0
Targets/Letsencrypt/Letsencrypt-Custom.pm
Normal file → Executable file
0
Targets/Letsencrypt/Letsencrypt.pm
Normal file → Executable file
0
Targets/Letsencrypt/Letsencrypt.pm
Normal file → Executable file
0
Targets/Letsencrypt/_lets_CHECKALLDOMAINS.html.ep
Normal file → Executable file
0
Targets/Letsencrypt/_lets_CHECKALLDOMAINS.html.ep
Normal file → Executable file
0
Targets/Letsencrypt/_lets_CHECKALLENABLEDDOMAINS.html.ep
Normal file → Executable file
0
Targets/Letsencrypt/_lets_CHECKALLENABLEDDOMAINS.html.ep
Normal file → Executable file
0
Targets/Letsencrypt/_lets_CHECKONEDOMAIN.html.ep
Normal file → Executable file
0
Targets/Letsencrypt/_lets_CHECKONEDOMAIN.html.ep
Normal file → Executable file
0
Targets/Letsencrypt/_lets_LIST.html.ep
Normal file → Executable file
0
Targets/Letsencrypt/_lets_LIST.html.ep
Normal file → Executable file
0
Targets/Letsencrypt/_lets_PARAMS.html.ep
Normal file → Executable file
0
Targets/Letsencrypt/_lets_PARAMS.html.ep
Normal file → Executable file
0
Targets/Letsencrypt/letsencrypt.css
Normal file → Executable file
0
Targets/Letsencrypt/letsencrypt.css
Normal file → Executable file
0
Targets/Letsencrypt/letsencrypt.html.ep
Normal file → Executable file
0
Targets/Letsencrypt/letsencrypt.html.ep
Normal file → Executable file
0
Targets/Letsencrypt/letsencrypt_en.lex
Normal file → Executable file
0
Targets/Letsencrypt/letsencrypt_en.lex
Normal file → Executable file
0
Targets/Nfsshare/Nfsshare-Custom.pm
Normal file → Executable file
0
Targets/Nfsshare/Nfsshare-Custom.pm
Normal file → Executable file
0
Targets/Nfsshare/Nfsshare-Custom.pm.new
Normal file → Executable file
0
Targets/Nfsshare/Nfsshare-Custom.pm.new
Normal file → Executable file
0
Targets/Nfsshare/Nfsshare.pm
Normal file → Executable file
0
Targets/Nfsshare/Nfsshare.pm
Normal file → Executable file
0
Targets/Nfsshare/_nfs_PARAMS.html.ep
Normal file → Executable file
0
Targets/Nfsshare/_nfs_PARAMS.html.ep
Normal file → Executable file
0
Targets/Nfsshare/_nfs_TABLE.html.ep
Normal file → Executable file
0
Targets/Nfsshare/_nfs_TABLE.html.ep
Normal file → Executable file
0
Targets/Nfsshare/nfs_PARAMS.html.ep
Normal file → Executable file
0
Targets/Nfsshare/nfs_PARAMS.html.ep
Normal file → Executable file
0
Targets/Nfsshare/nfs_TABLE.html.ep
Normal file → Executable file
0
Targets/Nfsshare/nfs_TABLE.html.ep
Normal file → Executable file
0
Targets/Nfsshare/nfsshare-lexfiles.zip
Normal file → Executable file
0
Targets/Nfsshare/nfsshare-lexfiles.zip
Normal file → Executable file
0
Targets/Nfsshare/nfsshare.html.ep
Normal file → Executable file
0
Targets/Nfsshare/nfsshare.html.ep
Normal file → Executable file
0
Targets/Nfsshare/nfsshare_bg.lex
Normal file → Executable file
0
Targets/Nfsshare/nfsshare_bg.lex
Normal file → Executable file
0
Targets/Nfsshare/nfsshare_de.lex
Normal file → Executable file
0
Targets/Nfsshare/nfsshare_de.lex
Normal file → Executable file
0
Targets/Nfsshare/nfsshare_dk.lex
Normal file → Executable file
0
Targets/Nfsshare/nfsshare_dk.lex
Normal file → Executable file
0
Targets/Nfsshare/nfsshare_el.lex
Normal file → Executable file
0
Targets/Nfsshare/nfsshare_el.lex
Normal file → Executable file
0
Targets/Nfsshare/nfsshare_en.lex
Normal file → Executable file
0
Targets/Nfsshare/nfsshare_en.lex
Normal file → Executable file
0
Targets/Nfsshare/nfsshare_en.po
Normal file → Executable file
0
Targets/Nfsshare/nfsshare_en.po
Normal file → Executable file
0
Targets/Nfsshare/nfsshare_es.lex
Normal file → Executable file
0
Targets/Nfsshare/nfsshare_es.lex
Normal file → Executable file
0
Targets/Nfsshare/nfsshare_es.po
Normal file → Executable file
0
Targets/Nfsshare/nfsshare_es.po
Normal file → Executable file
0
Targets/Nfsshare/nfsshare_et.lex
Normal file → Executable file
0
Targets/Nfsshare/nfsshare_et.lex
Normal file → Executable file
0
Targets/Nfsshare/nfsshare_fr.lex
Normal file → Executable file
0
Targets/Nfsshare/nfsshare_fr.lex
Normal file → Executable file
0
Targets/Nfsshare/nfsshare_hu.lex
Normal file → Executable file
0
Targets/Nfsshare/nfsshare_hu.lex
Normal file → Executable file
0
Targets/Nfsshare/nfsshare_id.lex
Normal file → Executable file
0
Targets/Nfsshare/nfsshare_id.lex
Normal file → Executable file
0
Targets/Nfsshare/nfsshare_il.lex
Normal file → Executable file
0
Targets/Nfsshare/nfsshare_il.lex
Normal file → Executable file
0
Targets/Nfsshare/nfsshare_it.lex
Normal file → Executable file
0
Targets/Nfsshare/nfsshare_it.lex
Normal file → Executable file
0
Targets/Nfsshare/nfsshare_jp.lex
Normal file → Executable file
0
Targets/Nfsshare/nfsshare_jp.lex
Normal file → Executable file
0
Targets/Nfsshare/nfsshare_nl.lex
Normal file → Executable file
0
Targets/Nfsshare/nfsshare_nl.lex
Normal file → Executable file
0
Targets/Nfsshare/nfsshare_no.lex
Normal file → Executable file
0
Targets/Nfsshare/nfsshare_no.lex
Normal file → Executable file
0
Targets/Nfsshare/nfsshare_pl.lex
Normal file → Executable file
0
Targets/Nfsshare/nfsshare_pl.lex
Normal file → Executable file
0
Targets/Nfsshare/nfsshare_pt-br.lex
Normal file → Executable file
0
Targets/Nfsshare/nfsshare_pt-br.lex
Normal file → Executable file
0
Targets/Nfsshare/nfsshare_pt.lex
Normal file → Executable file
0
Targets/Nfsshare/nfsshare_pt.lex
Normal file → Executable file
0
Targets/Nfsshare/nfsshare_ro.lex
Normal file → Executable file
0
Targets/Nfsshare/nfsshare_ro.lex
Normal file → Executable file
0
Targets/Nfsshare/nfsshare_ru.lex
Normal file → Executable file
0
Targets/Nfsshare/nfsshare_ru.lex
Normal file → Executable file
0
Targets/Nfsshare/nfsshare_sl.lex
Normal file → Executable file
0
Targets/Nfsshare/nfsshare_sl.lex
Normal file → Executable file
0
Targets/Nfsshare/nfsshare_sv.lex
Normal file → Executable file
0
Targets/Nfsshare/nfsshare_sv.lex
Normal file → Executable file
0
Targets/Nfsshare/nfsshare_th.lex
Normal file → Executable file
0
Targets/Nfsshare/nfsshare_th.lex
Normal file → Executable file
0
Targets/Nfsshare/nfsshare_tr.lex
Normal file → Executable file
0
Targets/Nfsshare/nfsshare_tr.lex
Normal file → Executable file
0
Targets/Nfsshare/nfsshare_zh-cn.lex
Normal file → Executable file
0
Targets/Nfsshare/nfsshare_zh-cn.lex
Normal file → Executable file
0
Targets/Nfsshare/nfsshare_zh-tw.lex
Normal file → Executable file
0
Targets/Nfsshare/nfsshare_zh-tw.lex
Normal file → Executable file
7
Targets/Nutups/Nutups-Custom.pm
Normal file → Executable file
7
Targets/Nutups/Nutups-Custom.pm
Normal file → Executable file
@ -191,12 +191,17 @@ sub get_model_options {
|
|||||||
return ['Error occurred'];
|
return ['Error occurred'];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
<<<<<<< HEAD
|
||||||
# Remove "/usr/sbin" from the front of each line
|
# Remove "/usr/sbin" from the front of each line
|
||||||
|
=======
|
||||||
|
# Remove "/usr/sbin/" from the front of each line
|
||||||
|
>>>>>>> 75aaf422042b2af06071fd64175eb15f6c4ae92b
|
||||||
s{^/usr/sbin/}{} for @output;
|
s{^/usr/sbin/}{} for @output;
|
||||||
|
|
||||||
# Trim whitespace from each element and return the array
|
# Trim whitespace from each element and return the array
|
||||||
chomp(@output); # Remove newline characters from each line
|
chomp(@output); # Remove newline characters from each line
|
||||||
return @output; # Return the array of modified output lines
|
return @output; # Return the array of modified output lines
|
||||||
|
<<<<<<< HEAD
|
||||||
}
|
}
|
||||||
|
|
||||||
sub get_ups_details {
|
sub get_ups_details {
|
||||||
@ -230,5 +235,7 @@ sub get_ups_details {
|
|||||||
}
|
}
|
||||||
|
|
||||||
return $formatted_output;
|
return $formatted_output;
|
||||||
|
=======
|
||||||
|
>>>>>>> 75aaf422042b2af06071fd64175eb15f6c4ae92b
|
||||||
}
|
}
|
||||||
1;
|
1;
|
0
Targets/Nutups/Nutups.pm
Normal file → Executable file
0
Targets/Nutups/Nutups.pm
Normal file → Executable file
0
Targets/Nutups/_nut_CONFIG.html.ep
Normal file → Executable file
0
Targets/Nutups/_nut_CONFIG.html.ep
Normal file → Executable file
2
Targets/Nutups/_nut_STATUS.html.ep
Normal file → Executable file
2
Targets/Nutups/_nut_STATUS.html.ep
Normal file → Executable file
@ -7,7 +7,7 @@
|
|||||||
SelectInput();
|
SelectInput();
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
% if ($config->{debug} == 1) {
|
% if (config->{debug} == 1) {
|
||||||
<pre>
|
<pre>
|
||||||
%= dumper $nut_data
|
%= dumper $nut_data
|
||||||
</pre>
|
</pre>
|
||||||
|
0
Targets/Nutups/nutups.css
Normal file → Executable file
0
Targets/Nutups/nutups.css
Normal file → Executable file
2
Targets/Nutups/nutups.html.ep
Normal file → Executable file
2
Targets/Nutups/nutups.html.ep
Normal file → Executable file
@ -8,7 +8,7 @@
|
|||||||
%= javascript '/js/nutups.js'
|
%= javascript '/js/nutups.js'
|
||||||
<div id="module" class="module Nutups-panel">
|
<div id="module" class="module Nutups-panel">
|
||||||
|
|
||||||
% if ($config->{debug} == 1) {
|
% if (config->{debug} == 1) {
|
||||||
<pre>
|
<pre>
|
||||||
%= dumper $c->current_route
|
%= dumper $c->current_route
|
||||||
%= dumper $nut_data->{trt}
|
%= dumper $nut_data->{trt}
|
||||||
|
0
Targets/Nutups/nutups.js
Normal file → Executable file
0
Targets/Nutups/nutups.js
Normal file → Executable file
0
Targets/Nutups/nutups_en.lex
Normal file → Executable file
0
Targets/Nutups/nutups_en.lex
Normal file → Executable file
27
Targets/Nutups/spec.nutUPS
Executable file
27
Targets/Nutups/spec.nutUPS
Executable file
@ -0,0 +1,27 @@
|
|||||||
|
main page = status
|
||||||
|
config page:
|
||||||
|
-nut status : enable/disabled
|
||||||
|
|
||||||
|
nut mode : standalone|netserver|netclient
|
||||||
|
if netclient mode
|
||||||
|
|
||||||
|
ask for SlaveUPS "UPSNAME@IP" and SlavePass ""
|
||||||
|
set Master as no when saving
|
||||||
|
|
||||||
|
if standalone or netserver
|
||||||
|
|
||||||
|
either use default value for NUT device, or allow to set them
|
||||||
|
${nut-driver@UPS }{Model} usbhid-ups you can use a drop-down listing all the device rpm -ql nut|grep /usr/sbin
|
||||||
|
${nut-driver@UPS }{Device} auto
|
||||||
|
only if Model genericups:
|
||||||
|
${nut-driver@UPS }{Type}
|
||||||
|
${nut-driver@UPS }{mfr}
|
||||||
|
${nut-driver@UPS }{mdl}
|
||||||
|
on saving set nut{Master} to yes if mode standalone or netserver
|
||||||
|
if mode=netserver set nut{access} to private otherwise set as localhost
|
||||||
|
run signal-event nut-conf
|
||||||
|
|
||||||
|
if enabled the status page could return upsc UPS@localhost, or if slave upsc UPSNAME@IP
|
||||||
|
if netclient set nut-monitor status to enabled and set status disabled to nut-server and all existing nut-driver@* ( we can set multiple via cli, so a loop would be great there)
|
||||||
|
if standalone|netserver then enable all nut related service if nut enabled
|
||||||
|
if nut disabled then set all related services to disabled
|
@ -42,7 +42,11 @@ use esmith::NetworksDB;
|
|||||||
use esmith::HostsDB;
|
use esmith::HostsDB;
|
||||||
use esmith::DomainsDB;
|
use esmith::DomainsDB;
|
||||||
|
|
||||||
|
my $cdb
|
||||||
|
my $adb
|
||||||
|
my $ndb
|
||||||
|
my $hdb
|
||||||
|
my $ddb
|
||||||
|
|
||||||
require '/usr/share/smanager/lib/SrvMngr/Controller/${PackageName}-Custom.pm'; #The code that is to be added by the developer
|
require '/usr/share/smanager/lib/SrvMngr/Controller/${PackageName}-Custom.pm'; #The code that is to be added by the developer
|
||||||
|
|
||||||
@ -62,11 +66,11 @@ sub main {
|
|||||||
$c->app->log->info( $c->log_req );
|
$c->app->log->info( $c->log_req );
|
||||||
|
|
||||||
#The most common ones
|
#The most common ones
|
||||||
my $cdb = esmith::ConfigDB->open() || die("Couldn't open config db");
|
$cdb = esmith::ConfigDB->open() || die("Couldn't open config db");
|
||||||
my $adb = esmith::AccountsDB->open() || die("Couldn't open Accounts db");
|
$adb = esmith::AccountsDB->open() || die("Couldn't open Accounts db");
|
||||||
my $ndb = esmith::NetworksDB->open() || die("Couldn't open Network db");
|
$ndb = esmith::NetworksDB->open() || die("Couldn't open Network db");
|
||||||
my $hdb = esmith::HostsDB->open() || die("Couldn't open Hosts db");
|
$hdb = esmith::HostsDB->open() || die("Couldn't open Hosts db");
|
||||||
my $ddb = esmith::DomainsDB->open() || die("Couldn't open Domains db");
|
$ddb = esmith::DomainsDB->open() || die("Couldn't open Domains db");
|
||||||
|
|
||||||
my %${prefix}_data = ();
|
my %${prefix}_data = ();
|
||||||
my $title = $c->l('${prefix}_${MenuDescription}');
|
my $title = $c->l('${prefix}_${MenuDescription}');
|
||||||
@ -116,11 +120,11 @@ sub do_update {
|
|||||||
my $modul = '';
|
my $modul = '';
|
||||||
|
|
||||||
#The most common ones - you might want to comment out any not used.
|
#The most common ones - you might want to comment out any not used.
|
||||||
my $cdb = esmith::ConfigDB->open() || die("Couldn't open config db");
|
$cdb = esmith::ConfigDB->open() || die("Couldn't open config db");
|
||||||
my $adb = esmith::AccountsDB->open() || die("Couldn't open Accounts db");
|
$adb = esmith::AccountsDB->open() || die("Couldn't open Accounts db");
|
||||||
my $ndb = esmith::NetworksDB->open() || die("Couldn't open Network db");
|
$ndb = esmith::NetworksDB->open() || die("Couldn't open Network db");
|
||||||
my $hdb = esmith::HostsDB->open() || die("Couldn't open Hosts db");
|
$hdb = esmith::HostsDB->open() || die("Couldn't open Hosts db");
|
||||||
my $ddb = esmith::DomainsDB->open() || die("Couldn't open Domains db");
|
$ddb = esmith::DomainsDB->open() || die("Couldn't open Domains db");
|
||||||
|
|
||||||
my %${prefix}_data = ();
|
my %${prefix}_data = ();
|
||||||
my $title = $c->l('${prefix}_${MenuDescription}');
|
my $title = $c->l('${prefix}_${MenuDescription}');
|
||||||
@ -200,11 +204,11 @@ sub do_display {
|
|||||||
$c->app->log->info($c->log_req);
|
$c->app->log->info($c->log_req);
|
||||||
|
|
||||||
#The most common ones - you might want to comment out any not used.
|
#The most common ones - you might want to comment out any not used.
|
||||||
my $cdb = esmith::ConfigDB->open() || die("Couldn't open config db");
|
$cdb = esmith::ConfigDB->open() || die("Couldn't open config db");
|
||||||
my $adb = esmith::AccountsDB->open() || die("Couldn't open Accounts db");
|
$adb = esmith::AccountsDB->open() || die("Couldn't open Accounts db");
|
||||||
my $ndb = esmith::NetworksDB->open() || die("Couldn't open Network db");
|
$ndb = esmith::NetworksDB->open() || die("Couldn't open Network db");
|
||||||
my $hdb = esmith::HostsDB->open() || die("Couldn't open Hosts db");
|
$hdb = esmith::HostsDB->open() || die("Couldn't open Hosts db");
|
||||||
my $ddb = esmith::DomainsDB->open() || die("Couldn't open Domains db");
|
$ddb = esmith::DomainsDB->open() || die("Couldn't open Domains db");
|
||||||
|
|
||||||
my %${prefix}_data = ();
|
my %${prefix}_data = ();
|
||||||
my $title = $c->l('${prefix}_${MenuDescription}');
|
my $title = $c->l('${prefix}_${MenuDescription}');
|
||||||
|
@ -18,11 +18,11 @@ use constant TRUE => 1;
|
|||||||
|
|
||||||
|
|
||||||
#The most common ones
|
#The most common ones
|
||||||
our $cdb = esmith::ConfigDB->open() || die("Couldn't open config db");
|
#my $cdb
|
||||||
our $adb = esmith::AccountsDB->open() || die("Couldn't open Accounts db");
|
#my $adb
|
||||||
our $ndb = esmith::NetworksDB->open() || die("Couldn't open Network db");
|
#my $ndb
|
||||||
our $hdb = esmith::HostsDB->open() || die("Couldn't open Hosts db");
|
#my $hdb
|
||||||
our $ddb = esmith::DomainsDB->open() || die("Couldn't open Domains db");
|
#my $ddb
|
||||||
|
|
||||||
# Validation routines - parameters for each panel
|
# Validation routines - parameters for each panel
|
||||||
<tal:block tal:repeat="panel panels">
|
<tal:block tal:repeat="panel panels">
|
||||||
|
0
Templates/html_controls.html.ep.xml
Normal file → Executable file
0
Templates/html_controls.html.ep.xml
Normal file → Executable file
0
Templates/languages.json
Normal file → Executable file
0
Templates/languages.json
Normal file → Executable file
@ -28,16 +28,16 @@
|
|||||||
|
|
||||||
%} elsif ($c->stash('success')) {
|
%} elsif ($c->stash('success')) {
|
||||||
<div class='success '>
|
<div class='success '>
|
||||||
<h2><%=$c->l('Status Report') %></h2><p>
|
<p>
|
||||||
%= $c->l($c->stash('success'));
|
%= $c->l($c->stash('success'));
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<br />
|
<br />
|
||||||
|
|
||||||
%} elsif ($c->stash('error')) {
|
%} elsif ($c->stash('error')) {
|
||||||
<div class='sme-error'>
|
<div class='sme-error'>
|
||||||
<h2><%=$c->l('Error Status Report') %></h2><p>
|
<p>
|
||||||
%= $c->l($c->stash('error'));
|
%= $c->l($c->stash('error'));
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<br />
|
<br />
|
||||||
|
0
Templates/partial.html.ep.tem
Normal file → Executable file
0
Templates/partial.html.ep.tem
Normal file → Executable file
0
activate-python-env
Normal file → Executable file
0
activate-python-env
Normal file → Executable file
12
copySM2.sh
12
copySM2.sh
@ -5,7 +5,10 @@ if [ $# -ne 3 ]; then
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
export REMOTE=/home/brianr/$1/usr/share/smanager
|
export REMOTE=/home/brianr/$1/usr/share/smanager
|
||||||
cd ~/clients/SM2/SM2Gen/venv/Targets/$3
|
mkdir -p $REMOTE
|
||||||
|
export LOCAL=~/clients/SM2/SM2Gen/venv
|
||||||
|
export SME11IP=$1.thereadclan.me.uk
|
||||||
|
cd $LOCAL/Targets/$3
|
||||||
echo `pwd`
|
echo `pwd`
|
||||||
# controller file name is just capitalised
|
# controller file name is just capitalised
|
||||||
cont_file=$(echo "$3" | awk '{
|
cont_file=$(echo "$3" | awk '{
|
||||||
@ -21,16 +24,17 @@ echo $cont_file
|
|||||||
#fi
|
#fi
|
||||||
mkdir -p $REMOTE/lib/SrvMngr/Controller
|
mkdir -p $REMOTE/lib/SrvMngr/Controller
|
||||||
mkdir -p $REMOTE/themes/default/templates/partials/
|
mkdir -p $REMOTE/themes/default/templates/partials/
|
||||||
mkdir -p $REMOTE/lib/SrvMngr/I18N/Modules/Nfsshare
|
mkdir -p $REMOTE/themes/default/public/css
|
||||||
mkdir -p $REMOTE/themes/default/templates/
|
mkdir -p $REMOTE/themes/default/public/js
|
||||||
cp -fv *.pm $REMOTE/lib/SrvMngr/Controller
|
cp -fv *.pm $REMOTE/lib/SrvMngr/Controller
|
||||||
cp -fv *.css $REMOTE/themes/default/public/css
|
cp -fv *.css $REMOTE/themes/default/public/css
|
||||||
|
cp -fv *.js $REMOTE/themes/default/public/js
|
||||||
cp -fv _$2*.html.ep $REMOTE/themes/default/templates/partials/
|
cp -fv _$2*.html.ep $REMOTE/themes/default/templates/partials/
|
||||||
find . -maxdepth 1 -type f -name "[!_]*\.ep" | xargs -I% bash -c 'cp -fv % $REMOTE/themes/default/templates/'
|
find . -maxdepth 1 -type f -name "[!_]*\.ep" | xargs -I% bash -c 'cp -fv % $REMOTE/themes/default/templates/'
|
||||||
mkdir -p $REMOTE/lib/SrvMngr/I18N/Modules/$3
|
mkdir -p $REMOTE/lib/SrvMngr/I18N/Modules/$3
|
||||||
cp -fv *.lex $REMOTE/lib/SrvMngr/I18N/Modules/$3
|
cp -fv *.lex $REMOTE/lib/SrvMngr/I18N/Modules/$3
|
||||||
rm -f $REMOTE/lib/SrvMngr/I18N/Modules/$3/*.pm
|
rm -f $REMOTE/lib/SrvMngr/I18N/Modules/$3/*.pm
|
||||||
ssh -p 1234 root@$1.thereadclan.me.uk 'signal-event smanager-refresh'
|
ssh -p 1234 root@$SME11IP 'signal-event smanager-refresh'
|
||||||
exit 0
|
exit 0
|
||||||
|
|
||||||
|
|
||||||
|
54
getmyip
54
getmyip
@ -1,54 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# List of services to query for the public IP
|
|
||||||
services=(
|
|
||||||
"ifconfig.me"
|
|
||||||
"ipinfo.io/ip"
|
|
||||||
"icanhazip.com"
|
|
||||||
"api.ipify.org"
|
|
||||||
"ident.me"
|
|
||||||
"ip.tyk.nu"
|
|
||||||
"checkip.amazonaws.com"
|
|
||||||
"ipecho.net/plain"
|
|
||||||
"myip.dnsomatic.com"
|
|
||||||
"ip.seeip.org"
|
|
||||||
"ipapi.co/ip"
|
|
||||||
"wtfismyip.com/text"
|
|
||||||
"openident.net/ip"
|
|
||||||
"ifconfig.co/ip"
|
|
||||||
)
|
|
||||||
|
|
||||||
# Function to shuffle the array of services
|
|
||||||
shuffle_services() {
|
|
||||||
local i
|
|
||||||
for ((i=${#services[@]} - 1; i > 0; i--)); do
|
|
||||||
local j=$((RANDOM % (i + 1)))
|
|
||||||
local temp="${services[i]}"
|
|
||||||
services[i]="${services[j]}"
|
|
||||||
services[j]="$temp"
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
# Function to fetch the public IP address
|
|
||||||
get_public_ip() {
|
|
||||||
shuffle_services
|
|
||||||
for service in "${services[@]}"; do
|
|
||||||
public_ip=$(curl -s --max-time 5 "$service")
|
|
||||||
|
|
||||||
# Check if the curl request was successful and there's a valid IP address
|
|
||||||
if [[ $? -eq 0 && $public_ip =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
|
|
||||||
logger -t public_ip_script "Service used: $service, IP found: $public_ip"
|
|
||||||
echo "$public_ip"
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
# If none of the services returned a valid IP, output an error message
|
|
||||||
echo "Failed to retrieve public IP using all services." >&2
|
|
||||||
logger -t public_ip_script "Error: Failed to retrieve public IP using all services."
|
|
||||||
exit 1
|
|
||||||
}
|
|
||||||
|
|
||||||
# Execute the function
|
|
||||||
get_public_ip
|
|
||||||
|
|
0
html/CreateStarterWebsite.html
Normal file → Executable file
0
html/CreateStarterWebsite.html
Normal file → Executable file
0
html/DiskUsage.html
Normal file → Executable file
0
html/DiskUsage.html
Normal file → Executable file
0
html/Diskusage.html
Normal file → Executable file
0
html/Diskusage.html
Normal file → Executable file
0
html/letsencrypt-config.html
Normal file → Executable file
0
html/letsencrypt-config.html
Normal file → Executable file
0
html/letsencrypt-list-1.html
Normal file → Executable file
0
html/letsencrypt-list-1.html
Normal file → Executable file
0
html/letsencrypt-list.html
Normal file → Executable file
0
html/letsencrypt-list.html
Normal file → Executable file
69
include/site/python3.12/igraph/igraphmodule_api.h
Normal file
69
include/site/python3.12/igraph/igraphmodule_api.h
Normal file
@ -0,0 +1,69 @@
|
|||||||
|
/* -*- mode: C -*- */
|
||||||
|
/* vim:set ts=2 sw=2 sts=2 et: */
|
||||||
|
/*
|
||||||
|
IGraph library.
|
||||||
|
Copyright (C) 2006-2023 Tamas Nepusz <ntamas@gmail.com>
|
||||||
|
|
||||||
|
This program is free software; you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation; either version 2 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program; if not, write to the Free Software
|
||||||
|
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||||
|
02110-1301 USA
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef Py_IGRAPHMODULE_H
|
||||||
|
#define Py_IGRAPHMODULE_H
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* C API functions */
|
||||||
|
#define PyIGraph_FromCGraph_NUM 0
|
||||||
|
#define PyIGraph_FromCGraph_RETURN PyObject*
|
||||||
|
#define PyIGraph_FromCGraph_PROTO (igraph_t *graph)
|
||||||
|
|
||||||
|
#define PyIGraph_ToCGraph_NUM 1
|
||||||
|
#define PyIGraph_ToCGraph_RETURN igraph_t*
|
||||||
|
#define PyIGraph_ToCGraph_PROTO (PyObject *graph)
|
||||||
|
|
||||||
|
/* Total number of C API pointers */
|
||||||
|
#define PyIGraph_API_pointers 2
|
||||||
|
|
||||||
|
#ifdef IGRAPH_MODULE
|
||||||
|
/* This section is used when compiling igraphmodule.c */
|
||||||
|
static PyIGraph_FromCGraph_RETURN PyIGraph_FromCGraph PyIGraph_FromCGraph_PROTO;
|
||||||
|
static PyIGraph_ToCGraph_RETURN PyIGraph_ToCGraph PyIGraph_ToCGraph_PROTO;
|
||||||
|
#else
|
||||||
|
/* This section is used in modules that use igraph's API */
|
||||||
|
static void** PyIGraph_API;
|
||||||
|
# define PyIGraph_FromCGraph \
|
||||||
|
(*(PyIGraph_FromCGraph_RETURN (*)PyIGraph_FromCGraph_PROTO) \
|
||||||
|
PyIGraph_API[PyIGraph_FromCGraph_NUM])
|
||||||
|
# define PyIGraph_ToCGraph \
|
||||||
|
(*(PyIGraph_ToCGraph_RETURN (*)PyIGraph_ToCGraph_PROTO) \
|
||||||
|
PyIGraph_API[PyIGraph_ToCGraph_NUM])
|
||||||
|
|
||||||
|
/* Return -1 and set exception on error, 0 on success */
|
||||||
|
static int import_igraph(void) {
|
||||||
|
PyIGraph_API = (void **)PyCapsule_Import("igraph._igraph._C_API", 0);
|
||||||
|
return (PyIGraph_API != NULL) ? 0 : -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* !defined(Py_IGRAPHMODULE_H) */
|
0
json5/CreateStarterWebsite.json5
Normal file → Executable file
0
json5/CreateStarterWebsite.json5
Normal file → Executable file
0
json5/DiskUsage.json5
Normal file → Executable file
0
json5/DiskUsage.json5
Normal file → Executable file
0
json5/Diskusage.json5
Normal file → Executable file
0
json5/Diskusage.json5
Normal file → Executable file
0
json5/Letsencrypt-config.json5
Normal file → Executable file
0
json5/Letsencrypt-config.json5
Normal file → Executable file
0
json5/Letsencrypt-list.json5
Normal file → Executable file
0
json5/Letsencrypt-list.json5
Normal file → Executable file
0
json5/Letsencrypt.json5
Normal file → Executable file
0
json5/Letsencrypt.json5
Normal file → Executable file
0
json5/Nfsshare.json5
Normal file → Executable file
0
json5/Nfsshare.json5
Normal file → Executable file
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user