Remove headfings in Error and status and sort out non global opening of DBs
This commit is contained in:
@@ -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
9
Targets/Nutups/Nutups-Custom.pm
Normal file → Executable file
9
Targets/Nutups/Nutups-Custom.pm
Normal file → Executable file
@@ -191,12 +191,17 @@ sub get_model_options {
|
||||
return ['Error occurred'];
|
||||
}
|
||||
|
||||
<<<<<<< HEAD
|
||||
# Remove "/usr/sbin" from the front of each line
|
||||
=======
|
||||
# Remove "/usr/sbin/" from the front of each line
|
||||
>>>>>>> 75aaf422042b2af06071fd64175eb15f6c4ae92b
|
||||
s{^/usr/sbin/}{} for @output;
|
||||
|
||||
# Trim whitespace from each element and return the array
|
||||
chomp(@output); # Remove newline characters from each line
|
||||
return @output; # Return the array of modified output lines
|
||||
<<<<<<< HEAD
|
||||
}
|
||||
|
||||
sub get_ups_details {
|
||||
@@ -230,5 +235,7 @@ sub get_ups_details {
|
||||
}
|
||||
|
||||
return $formatted_output;
|
||||
=======
|
||||
>>>>>>> 75aaf422042b2af06071fd64175eb15f6c4ae92b
|
||||
}
|
||||
1;
|
||||
1;
|
||||
|
0
Targets/Nutups/Nutups.pm
Normal file → Executable file
0
Targets/Nutups/Nutups.pm
Normal file → Executable file
2
Targets/Nutups/_nut_CONFIG.html.ep
Normal file → Executable file
2
Targets/Nutups/_nut_CONFIG.html.ep
Normal file → Executable file
@@ -137,4 +137,4 @@
|
||||
|
||||
%# Probably finally by a submit.
|
||||
%end
|
||||
</div>
|
||||
</div>
|
||||
|
4
Targets/Nutups/_nut_STATUS.html.ep
Normal file → Executable file
4
Targets/Nutups/_nut_STATUS.html.ep
Normal file → Executable file
@@ -7,7 +7,7 @@
|
||||
SelectInput();
|
||||
};
|
||||
</script>
|
||||
% if ($config->{debug} == 1) {
|
||||
% if (config->{debug} == 1) {
|
||||
<pre>
|
||||
%= dumper $nut_data
|
||||
</pre>
|
||||
@@ -45,4 +45,4 @@
|
||||
|
||||
%# Probably finally by a submit.
|
||||
%end
|
||||
</div>
|
||||
</div>
|
||||
|
0
Targets/Nutups/nutups.css
Normal file → Executable file
0
Targets/Nutups/nutups.css
Normal file → Executable file
4
Targets/Nutups/nutups.html.ep
Normal file → Executable file
4
Targets/Nutups/nutups.html.ep
Normal file → Executable file
@@ -8,7 +8,7 @@
|
||||
%= javascript '/js/nutups.js'
|
||||
<div id="module" class="module Nutups-panel">
|
||||
|
||||
% if ($config->{debug} == 1) {
|
||||
% if (config->{debug} == 1) {
|
||||
<pre>
|
||||
%= dumper $c->current_route
|
||||
%= dumper $nut_data->{trt}
|
||||
@@ -55,4 +55,4 @@
|
||||
|
||||
|
||||
</div>
|
||||
%end
|
||||
%end
|
||||
|
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
|
Reference in New Issue
Block a user