Compare commits

...

19 Commits

Author SHA1 Message Date
John Crisp
76cbe17b34 Tweaks and portforwarding 11.0.0-36.sme 2025-06-13 17:19:26 +02:00
John Crisp
ffe62c9951 Portforwarding panels modified 2025-06-13 16:49:27 +02:00
John Crisp
2ccc3b18cc Cosmetic tweaks 2025-06-13 16:48:11 +02:00
John Crisp
b356e9fabe Cosmetic tweaks 2025-06-13 16:47:49 +02:00
John Crisp
03eacd8e36 Fix localnetworks [SME: 13041] 2025-06-13 16:47:29 +02:00
John Crisp
9963a8836f Cosmetic tweaks 2025-06-13 16:44:09 +02:00
John Crisp
91105c83c9 Finish Backup add Printers and small tweaks 2025-06-12 18:52:32 +02:00
John Crisp
f3295483b2 Continue Backup files. Various formatting fixes and show hide passwords 2025-06-11 19:13:32 +02:00
John Crisp
eb05438d80 Updated remote access and flag JS 2025-06-11 11:58:16 +02:00
John Crisp
22fbb582d2 Tweak login template 2025-06-11 10:24:40 +02:00
John Crisp
de9c4a9264 Fix versioning 2025-06-10 23:29:30 +02:00
John Crisp
01223b8a9f Update version number 2025-06-10 23:10:32 +02:00
John Crisp
f9f799d2ce Update clamav. Modify ibayupd,ln list, start remoteaccess 2025-06-10 23:05:00 +02:00
John Crisp
b1e896c187 Add autocomplete to login. Updates to quota list 2025-06-10 21:40:12 +02:00
John Crisp
e49e180ce0 Fix users panels - missing css file - override default font size for Brian 2025-06-09 15:27:17 +02:00
John Crisp
927a95af3b Add UTF8 support to local network panel 2025-06-09 13:38:09 +02:00
John Crisp
b6a78980a4 Fix login panel position 2025-06-06 19:22:25 +02:00
John Crisp
4b888a7112 Testing Roundcube iframe 2025-06-05 20:51:52 +02:00
John Crisp
b39eef01f9 Start Backup Panels 2025-06-05 19:51:11 +02:00
47 changed files with 1787 additions and 1328 deletions

View File

@@ -1,3 +1,6 @@
html {
font-size: 14px;
}
#busy-indicator { #busy-indicator {
display: none; display: none;
@@ -50,7 +53,7 @@
} }
.login-page { .login-page {
min-height: 10vh; min-height: 60vh !important ;
vertical-align: top !important ; vertical-align: top !important ;
} }
@@ -101,9 +104,12 @@
border-left-width: 0px; border-left-width: 0px;
} }
.user-valign-center { /* .user-valign-center {
text-align: center; text-align: center;
} -- Use align-middle --
} */
.user-table-max-wdith { .user-table-max-wdith {
max-width: 50%; max-width: 50%;

View File

@@ -263,8 +263,12 @@ document.addEventListener('DOMContentLoaded', () => {
function displayLocaleAndFlag() { function displayLocaleAndFlag() {
// Get the browser locale // Get the browser locale
const userLocale = navigator.language || navigator.userLanguage; const userLocale = navigator.languages && navigator.languages.length
? navigator.languages[0]
: navigator.language;
//alert(`User Locale: ${userLocale}`); // Alert the detected locale //alert(`User Locale: ${userLocale}`); // Alert the detected locale
//console.log(navigator.languages); // Log language to console
const { flag, isUnknown, countryCode } = getFlagEmoji(userLocale); const { flag, isUnknown, countryCode } = getFlagEmoji(userLocale);

View File

@@ -4,83 +4,103 @@
<div class="card-body"> <div class="card-body">
% if (config->{debug} == 1) { % if (config->{debug} == 1) {
<p> <pre>
%= dumper $c->current_route <%= dumper $c->current_route %>
%= dumper $bac_datas <%= dumper $bac_datas %>
</p> </pre>
% } % }
% if ( stash 'error' ) { % if ( stash 'error' ) {
<br><div class=""> <br>
%= $c->render_to_string(inline => stash 'error') <div class="text-danger">
<%= $c->render_to_string(inline => stash 'error') %>
</div> </div>
% } % }
<h1><%= $title%></h1> <h1><%= $title%></h1>
<h2> <br>
%=l 'bac_ENABLE_DISABLE_TAPE'
</h2><br>
%= $c->render_to_string(inline => (l 'bac_TAPE_CONFIG_DESC')) <h2><%= l 'bac_ENABLE_DISABLE_TAPE' %></h2>
%= form_for '/backupd' => (method => 'POST') => begin <br>
<p> <div>
<span class=""> <%= $c->render_to_string(inline => (l 'bac_TAPE_CONFIG_DESC')) %>
%=l 'bac_ENABLE_TAPE_BACKUP' </div>
</span>
<span class=""> <br>
<form action="/smanager/backupd" method="POST">
<div class="row g-3 align-items-center">
<div class="col-md-1">
<%= l 'bac_ENABLE_TAPE_BACKUP' %>
</div>
<div class="col-auto">
% if ( $bac_datas->{status} eq 'checked' ) { % if ( $bac_datas->{status} eq 'checked' ) {
<input type='checkbox' name='Tapebackup' checked > <input type='checkbox' name='Tapebackup' aria-describedby="enabled" checked >
% } else { % } else {
%= check_box 'Tapebackup' <input type='checkbox' name='Tapebackup' aria-describedby="disabled">
% } % }
</span> </div>
</p> </div>
<br>
<p> <div class="row g-3 align-items-center">
<span class=""> <div class="col-md-2">
%=l 'bac_TAPE_BACKUP_TIME' <label for="inputBackupHour" class="col-form-label"><%= l 'bac_TAPE_BACKUP_TIME' %></label>
</span> <label for="inputBackupMin" class="col-form-label"></label>
<span class=""> </div>
<div class="col-auto">
% param 'BackupHour' => $bac_datas->{backupHour} unless param 'BackupHour'; % param 'BackupHour' => $bac_datas->{backupHour} unless param 'BackupHour';
%= text_field 'BackupHour', size => '2' <input type="text" name="BackupHour" id="inputBackupHour" class="form-control" maxlength="2" size="4" aria-describedby="Backup Hour" value="<%= $bac_datas->{backupHour} %>">
</div>
<div class="col-auto">
% param 'BackupMin' => $bac_datas->{backupMin} unless param 'BackupMin'; % param 'BackupMin' => $bac_datas->{backupMin} unless param 'BackupMin';
%= text_field 'BackupMin', size => '2' <input type="text" name="BackupMin" id="inputBackupMin" class="form-control" maxlength="2" size="4" aria-describedby="Backup Minute" value="<%= $bac_datas->{backupMin} %>">
</span> </div>
<!--span class=""> <div class="col-auto">
%=l 'AM/PM:'
<!--/span-->
<span class="">
% param 'BackupAMPM' => $bac_datas->{backupAMPM} unless param 'BackupAMPM'; % param 'BackupAMPM' => $bac_datas->{backupAMPM} unless param 'BackupAMPM';
%= select_field 'BackupAMPM' => ['AM', 'PM'], class => "" <%= select_field 'BackupAMPM' => ['AM', 'PM'], class => "form-select" %>
</span> </div>
</p> </div>
<p> <br>
<span class="">
%=l 'bac_LOAD_TAPE_REMINDER_TIME'
</span> <div class="row g-3 align-items-center">
<span class=""> <div class="col-md-2">
<label for="inputReminderMin" class="col-form-label"><%= l 'bac_LOAD_TAPE_REMINDER_TIME' %></label>
<label for="inputReminderMin" class="col-form-label"></label>
</div>
<div class="col-auto">
% param 'ReminderHour' => $bac_datas->{reminderHour} unless param 'ReminderHour'; % param 'ReminderHour' => $bac_datas->{reminderHour} unless param 'ReminderHour';
%= text_field 'ReminderHour', size => '2' <input type="text" name="ReminderHour" id="inputReminderHour" class="form-control" maxlength="2" size="4" aria-describedby="Reminder Hour" value="<%= $bac_datas->{reminderHour} %>">
</div>
<div class="col-auto">
% param 'ReminderMin' => $bac_datas->{reminderMin} unless param 'ReminderMin'; % param 'ReminderMin' => $bac_datas->{reminderMin} unless param 'ReminderMin';
%= text_field 'ReminderMin', size => '2' <input type="text" name="ReminderMin" id="inputReminderMin" class="form-control" maxlength="2" size="4" aria-describedby="Reminder Minute" value="<%= $bac_datas->{reminderMin} %>">
</span> </div>
<!--span class=""> <div class="col-auto">
%=l 'AM/PM:'
<!--/span-->
<span class="">
% param 'ReminderAMPM' => $bac_datas->{reminderAMPM} unless param 'ReminderAMPM'; % param 'ReminderAMPM' => $bac_datas->{reminderAMPM} unless param 'ReminderAMPM';
%= select_field 'ReminderAMPM' => ['AM', 'PM'], class => "" <%= select_field 'ReminderAMPM' => ['AM', 'PM'], class => "form-select" %>
</span> </div>
</p><br> </div>
%= hidden_field 'Function' => $bac_datas->{'function'} <br>
%= submit_button $c->l('bac_UPDATE_CONF'), class => ""
<%= hidden_field 'Function' => $bac_datas->{'function'} %>
% my $btn = l('bac_UPDATE_CONF');
<div class="row g-3 align-items-center">
<div class="col-md-2">
<button type="submit" class="btn btn-primary" value="<%=$c->l('bac_UPDATE_CONF')%>"><%= $btn %></button>
</div>
</div>
</form>
% end
</div> </div>
% end % end

View File

@@ -5,34 +5,46 @@
<div class="card-body"> <div class="card-body">
% if (config->{debug} == 1) { % if (config->{debug} == 1) {
<p> <pre>
%= dumper $c->current_route <%= dumper $c->current_route %>
%= dumper $bac_datas <%= dumper $bac_datas %>
</p> </pre>
% } % }
% if ( stash 'error' ) { % if ( stash 'error' ) {
<br><div class=""> <br>
%= $c->render_to_string(inline => stash 'error') <div class="text-danger">
<%= $c->render_to_string(inline => stash 'error') %>
</div> </div>
% } % }
<h1><%= $title%></h1> <h1><%= $title%></h1>
%= form_for '/backupd' => (method => 'POST') => begin <br>
<h2> <h2><%=l 'bac_RESTORE_CONF_FROM_TAPE' %></h2>
%=l 'bac_RESTORE_CONF_FROM_TAPE'
</h2>
%= $c->render_to_string(inline => (l 'bac_RESTORE_CONF_FROM_TAPE_DESC'))
<br> <br>
%= hidden_field 'Function' => $bac_datas->{'function'} <form action="/smanager/backupd" method="POST">
%= submit_button $c->l('bac_RESTORE_FROM_TAPE'), class => "" <div>
<%= $c->render_to_string(inline => (l 'bac_RESTORE_CONF_FROM_TAPE_DESC')) %>
</div>
<br>
<%= hidden_field 'Function' => $bac_datas->{'function'} %>
% my $btn = l('bac_RESTORE_FROM_TAPE');
<div class="row g-3 align-items-center">
<div class="col-md-2">
<button type="submit" class="btn btn-primary" value="<%=$c->l('bac_RESTORE_FROM_TAPE')%>"><%= $btn %></button>
</div>
</div>
<form>
% end
</div> </div>
% end % end

View File

@@ -5,54 +5,71 @@
<div class="card-body"> <div class="card-body">
% if (config->{debug} == 1) { % if (config->{debug} == 1) {
<p> <pre>
%= dumper $c->current_route <%= dumper $c->current_route %>
%= dumper $bac_datas <%= dumper $bac_datas %>
</p> </pre>
% } % }
% if ( stash 'error' ) { % if ( stash 'error' ) {
<br><div class=""> <br>
%= $c->render_to_string(inline => stash 'error') <div class="text-danger">
<%= $c->render_to_string(inline => stash 'error') %>
</div> </div>
% } % }
<h1><%= $title%></h1> <h1><%= $title%></h1>
%= form_for '/backup' => (method => 'POST') => begin
<h2>
%=l 'bac_CONFIGURE_WORKSTN_BACKUP'
</h2>
%= $c->render_to_string(inline => (l 'bac_WORKSTN_BACKUP_DESC'))
%=l 'bac_WORKSTN_BACKUP_ENABLED'
<span class="">
%= $bac_datas->{status}
</span>
<br> <br>
%= $c->render_to_string(inline => $c->workstnBackupConfig()) <h2><%= l 'bac_CONFIGURE_WORKSTN_BACKUP' %></h2>
<p>
<h3>
%= l 'bac_WORKSTATION_BACKUP_SETCONF'
</h3>
<br> <br>
<span class="">
%=l 'bac_SELECT_VFS_TYPE' <div>
</span> <%= $c->render_to_string(inline => (l 'bac_WORKSTN_BACKUP_DESC')) %>
<span class=""> </div>
<br>
<form action="/smanager/backup" method="POST">
<div>
<%= l 'bac_WORKSTN_BACKUP_ENABLED' %>: <%= $bac_datas->{status} %>
</div>
<br>
<%= $c->render_to_string(inline => $c->workstnBackupConfig()) %>
<br>
<h3><%= l 'bac_WORKSTATION_BACKUP_SETCONF' %></h3>
<br>
<div class="row g-3 align-items-center">
<div class="col-md-2">
<%= l 'bac_SELECT_VFS_TYPE' %>
</div>
<div class="col-auto">
% param 'VFSType' => $bac_datas->{vfstype} unless param 'VFSType'; % param 'VFSType' => $bac_datas->{vfstype} unless param 'VFSType';
%= select_field 'VFSType' => $c->get_VFSType_options(), class => "" <%= select_field 'VFSType' => $c->get_VFSType_options(), class => "form-select" %>
</span> </div>
</p> </div>
%= hidden_field 'Function' => $bac_datas->{'function'} . '1' <br>
%= submit_button $c->l('NEXT'), class => ""
% end <%= hidden_field 'Function' => $bac_datas->{'function'} . '1' %>
% my $btn = l('NEXT');
<div class="row g-3 align-items-center">
<div class="col-md-2">
<button type="submit" class="btn btn-primary" value="<%=$c->l('NEXT')%>"><%= $btn %></button>
</div>
</div>
</form>
</div> </div>

View File

@@ -5,39 +5,47 @@
<div class="card-body"> <div class="card-body">
% if (config->{debug} == 1) { % if (config->{debug} == 1) {
<p> <pre>
%= dumper $c->current_route <%= dumper $c->current_route %>
%= dumper $bac_datas <%= dumper $bac_datas %>
</p> </pre>
% } % }
% if ( stash 'error' ) { % if ( stash 'error' ) {
<br><div> <br>
%= $c->render_to_string(inline => stash 'error') <div class="text-danger">
<%= $c->render_to_string(inline => stash 'error') %>
</div> </div>
% } % }
<h1><%= $title%></h1> <h1><%= $title%></h1>
<h2> <br>
%=l 'bac_CONFIGURE_WORKSTN_BACKUP'
</h2>
%= $c->render_to_string(inline => (l 'bac_CONFIGURE_WORKSTN_BACKUP_DESC')) <h2><%= l 'bac_CONFIGURE_WORKSTN_BACKUP' %></h2>
%= form_for '/backupd' => (method => 'POST') => begin <br>
<p> <div>
<span class=""> <%= $c->render_to_string(inline => (l 'bac_CONFIGURE_WORKSTN_BACKUP_DESC')) %>
%=l 'bac_ENABLE_WORKSTN_BACKUP' <div>
</span>
<span class=""> <br>
<form action="/smanager/backupd" method="POST">
<div class="row g-3 align-items-center">
<div class="col-md-2">
<%= l 'bac_ENABLE_WORKSTN_BACKUP' %>
</div>
<div class="col-auto">
% if ( $bac_datas->{status} eq 'checked' ) { % if ( $bac_datas->{status} eq 'checked' ) {
<input type='checkbox' name='Workstnbackup' checked > <input type='checkbox' name='Workstnbackup' aria-describedby="enabled" checked >
% } else { % } else {
%= check_box 'Workstnbackup' <input type='checkbox' name='Workstnbackup' aria-describedby="disabled">
% } % }
</span> </div>
</div>
</p> </p>
<p> <p>
@@ -47,127 +55,218 @@
<br> <br>
% if ( $bac_datas->{vfstype} =~ m/cifs|nfs/s ) { % if ( $bac_datas->{vfstype} =~ m/cifs|nfs/s ) {
<span class=""> <div class="row g-3 align-items-center">
%=l 'bac_WORKSTN_NAME' <div class="col-md-2">
</span> <label for="inputBackupWorkStationName" class="col-form-label"><%= l 'bac_WORKSTN_NAME' %></label>
<span class=""> </div>
<div class="col-auto">
% param 'BackupwkStation' => $bac_datas->{station} unless param 'BackupwkStation'; % param 'BackupwkStation' => $bac_datas->{station} unless param 'BackupwkStation';
%= text_field 'BackupwkStation', size => 20, class => "" <input type="text" name="BackupwkStation" id="inputBackupWorkStationName" class="form-control"
</span> size="20" aria-describedby="Workstation Name" value="<%= $bac_datas->{station} %>">
</div>
</div>
<br> <br>
% } % }
% if ( $bac_datas->{vfstype} eq 'usb' ) { % if ( $bac_datas->{vfstype} eq 'usb' ) {
<span class="">
%=l 'bac_local removable disk' <div class="row g-3 align-items-center">
</span> <div class="col-md-2">
<span class=""> <%= l 'bac_local removable disk' %>
</div>
<div class="col-auto">
% param 'BackupwkFolder' => $bac_datas->{mount} unless param 'BackupwkFolder'; % param 'BackupwkFolder' => $bac_datas->{mount} unless param 'BackupwkFolder';
%= select_field 'BackupwkFolder' => $c->get_BackupwkDest_options( $bac_datas->{vfstype}), class => "" <%= select_field 'BackupwkFolder' => $c->get_BackupwkDest_options( $bac_datas->{vfstype}), class => "form-select" %>
</span> </div>
</div>
<br> <br>
% } elsif ( $bac_datas->{vfstype} eq 'mnt') { % } elsif ( $bac_datas->{vfstype} eq 'mnt') {
<span class="">
%=l 'bac_Mounted disk' <div class="row g-3 align-items-center">
</span> <div class="col-md-2">
<span class=""> <%= l 'bac_Mounted disk' %>
</div>
<div class="col-auto">
% param 'BackupwkFolder' => $bac_datas->{folder} unless param 'BackupwkFolder'; % param 'BackupwkFolder' => $bac_datas->{folder} unless param 'BackupwkFolder';
%= select_field 'BackupwkFolder' => $c->get_BackupwkDest_options( $bac_datas->{vfstype}), class => "" <%= select_field 'BackupwkFolder' => $c->get_BackupwkDest_options( $bac_datas->{vfstype}), class => "form-select" %>
</span> </div>
</div>
<br> <br>
% } else { % } else {
<span class="">
%=l 'bac_SHARED_FOLDER_NAME' <div class="row g-3 align-items-center">
</span><span class=""> <div class="col-md-2">
% param 'BackupwkFolder' => $bac_datas->{folder} unless param 'BackupwkFolder'; <label for="inputBackupSharedFolderName" class="col-form-label"><%= l 'bac_SHARED_FOLDER_NAME' %></label>
%= text_field 'BackupwkFolder', size => 20, class => "" </div>
</span> <div class="col-auto">
<input type="text" name="BackupwkFolder" id="inputBackupSharedFolderName" class="form-control"
size="20" aria-describedby="Backup Shared Folder Name" value="<%= $bac_datas->{folder} %>">
</div>
</div>
<br> <br>
% } % }
% if ( $bac_datas->{vfstype} eq 'cifs' ) { % if ( $bac_datas->{vfstype} eq 'cifs' ) {
<span class=""> <div class="row g-3 align-items-center">
%=l 'bac_WORKSTN_LOGIN' <div class="col-md-2">
</span><span class=""> <label for="inputBackupWorkLogin" class="col-form-label"><%= l 'bac_WORKSTN_LOGIN' %></label>
</div>
<div class="col-auto">
% param 'BackupwkLogin' => $bac_datas->{login} unless param 'BackupwkLogin'; % param 'BackupwkLogin' => $bac_datas->{login} unless param 'BackupwkLogin';
%= text_field 'BackupwkLogin', size => 12, class => "" <input type="text" name="BackupwkLogin" id="inputBackupWorkLogin" class="form-control"
</span> size="12" aria-describedby="Backup Workstation Login" value="<%= $bac_datas->{login} %>">
</div>
</div>
<br> <br>
<span class="">
%=l 'bac_PASSWORD' <div class="row g-3 align-items-center">
</span><span class=""> <div class="col-md-2">
<label for="password" class="col-form-label"><%= l 'bac_PASSWORD' %></label>
</div>
<div class="col-auto">
% param 'BackupwkPassword' => $bac_datas->{password} unless param 'BackupwkPassword'; % param 'BackupwkPassword' => $bac_datas->{password} unless param 'BackupwkPassword';
%= password_field 'BackupwkPassword', size => 12, class => "" <input type="password" name="BackupwkPassword" id="password" class="form-control" size="12" aria-describedby="Backup Workstation Password" value="<%= $bac_datas->{password} %>">
</span> </div>
<div class="col-auto">
<span id="togglePassword" class="bi bi-eye"></span>
</div>
</div>
% } % }
</p><br><h3>
%= l 'bac_WORKSTN_BACKUP_SETTINGS'
</h3><br>
<p>
<span class="">
%=l 'bac_NUMBER_OF_SETS'
</span>
<span class="">
% param 'SetsNumber' => $bac_datas->{setsNumber} unless param 'SetsNumber';
%= text_field 'SetsNumber', size => '3'
</span>
%=l 'bac_NUMBER_OF_FILES_IN_SET'
<span class="">
% param 'Filesinset' => $bac_datas->{filesinset} unless param 'Filesinset';
%= text_field 'Filesinset', size => '3'
</span></p>
<p>
<span class="">
%=l 'bac_WORKSTN_BACKUP_TIME'
</span>
<span class="">
% param 'BackupwkHour' => $bac_datas->{hour} unless param 'BackupwkHour';
%= text_field 'BackupwkHour', size => '2'
% param 'BackupwkMin' => $bac_datas->{min} unless param 'BackupwkMin';
%= text_field 'BackupwkMin', size => '2'
</span>
%=l 'AM/PM:'
<span class="">
% param 'BackupwkAMPM' => $bac_datas->{ampm} unless param 'BackupwkAMPM';
%= select_field 'BackupwkAMPM' => ['AM', 'PM'], class => ""
</span>
</p>
<p><span class="">
%=l 'bac_WORKSTN_TIMEOUT'
</span>
<span class="">
% param 'BackupwkTimeout' => $bac_datas->{timeout} unless param 'BackupwkTimeout';
%= text_field 'BackupwkTimeout', size => '2'
</span>
%=l 'bac_INC_ONLY_TIMEOUT'
<span class="">
% if ( $bac_datas->{incOnlyTimeout} eq 'checked' ) {
<input type='checkbox' name='IncOnlyTimeout' checked >
%} else {
%= check_box 'IncOnlyTimeout'
%}
</span></p>
<p>
<span class="">
%=l 'bac_COMPRESSION_LEVEL'
</span>
<span class="">
% param 'Compression' => $bac_datas->{compression} unless param 'Compression';
%= text_field 'Compression', size => '1'
</span>
%=l 'bac_FULL_ONLY_ON'
<span class="">
% param 'Dof' => $bac_datas->{dof} unless param 'Dof';
%= select_field 'Dof' => $c->get_dow_list(), class => ""
</p>
<br> <br>
<h3><%= l 'bac_WORKSTN_BACKUP_SETTINGS' %></h3>
<br>
<div class="row g-3 align-items-center">
<div class="col-md-2">
<label for="inputNumberofSets" class="col-form-label"><%= l 'bac_NUMBER_OF_SETS' %></label>
</div>
<div class="col-auto">
% param 'SetsNumber' => $bac_datas->{setsNumber} unless param 'SetsNumber';
<input type="text" name="SetsNumber" id="inputNumberofSets" class="form-control" maxlength="3" size="3" aria-describedby="Number of sets" value="<%= $bac_datas->{setsNumber} %>">
</div>
</div>
<br>
<div class="row g-3 align-items-center">
<div class="col-md-2">
<label for="inputFilesinSet" class="col-form-label"><%= l 'bac_NUMBER_OF_FILES_IN_SET' %></label>
</div>
<div class="col-auto">
% param 'Filesinset' => $bac_datas->{filesinset} unless param 'Filesinset';
<input type="text" name="Filesinset" id="inputFilesinSet" class="form-control" maxlength="3" size="3" aria-describedby="Files in set" value="<%= $bac_datas->{filesinset} %>">
</div>
</div>
<br>
<div class="row g-3 align-items-center">
<div class="col-md-2">
<label for="inputWorkstationBackupHour" class="col-form-label"><%= l 'bac_WORKSTN_BACKUP_TIME' %></label>
<label for="inputWorkstationBackupMin" class="col-form-label"></label>
</div>
<div class="col-auto">
% param 'BackupwkHour' => $bac_datas->{hour} unless param 'BackupwkHour';
<input type="text" name="BackupwkHour" id="inputWorkstationBackupHour" class="form-control" maxlength="2" size="4" aria-describedby="Backup Hour" value="<%= $bac_datas->{hour} %>">
</div>
<div class="col-auto">
% param 'BackupwkMin' => $bac_datas->{min} unless param 'BackupwkMin';
<input type="text" name="BackupwkMin" id="inputWorkstationBackupMin" class="form-control" maxlength="2" size="4" aria-describedby="Backup Minute" value="<%= $bac_datas->{min} %>">
</div>
<div class="col-auto">
<%= l 'AM/PM:' %>
</div>
<div class="col-auto">
% param 'BackupwkAMPM' => $bac_datas->{ampm} unless param 'BackupwkAMPM';
<%= select_field 'BackupwkAMPM' => ['AM', 'PM'], class => "form-select" %>
</div>
</div>
<br>
<div class="row g-3 align-items-center">
<div class="col-md-2">
<label for="inputWorkstationTimeout" class="col-form-label"><%= l 'bac_WORKSTN_TIMEOUT' %></label>
</div>
<div class="col-auto">
% param 'BackupwkTimeout' => $bac_datas->{timeout} unless param 'BackupwkTimeout';
<input type="text" name="BackupwkTimeout" id="inputWorkstationTimeout" class="form-control" maxlength="2" size="2" aria-describedby="Workstation Timeout" value="<%= $bac_datas->{timeout} %>">
</div>
</div>
<br>
<div class="row g-3 align-items-center">
<div class="col-md-2">
<%= l 'bac_INC_ONLY_TIMEOUT' %>
</div>
<div class="col-auto">
% if ( $bac_datas->{incOnlyTimeout} eq 'checked' ) {
<input type='checkbox' name='IncOnlyTimeout' aria-describedby="enabled" checked >
% } else {
<input type='checkbox' name='IncOnlyTimeout' aria-describedby="disabled">
% }
</div>
</div>
<br>
<div class="row g-3 align-items-center">
<div class="col-md-2">
<label for="inputBackupCompression" class="col-form-label"><%= l 'bac_COMPRESSION_LEVEL' %></label>
</div>
<div class="col-auto">
% param 'Compression' => $bac_datas->{compression} unless param 'Compression';
<input type="text" name="Compression" id="inputBackupCompression" class="form-control" maxlength="1" size="1" aria-describedby="Compression level" value="<%= $bac_datas->{compression} %>">
</div>
</div>
<br>
<div class="row g-3 align-items-center">
<div class="col-md-2">
<%= l 'bac_FULL_ONLY_ON' %>
</div>
<div class="col-auto">
% param 'Dof' => $bac_datas->{dof} unless param 'Dof';
%= select_field 'Dof' => $c->get_dow_list(), class => "form-select"
</div>
</div>
<br>
%= hidden_field 'Function' => $bac_datas->{function} %= hidden_field 'Function' => $bac_datas->{function}
%= hidden_field 'VFSType' => $bac_datas->{vfstype} %= hidden_field 'VFSType' => $bac_datas->{vfstype}
%= submit_button $c->l('bac_UPDATE_CONF'), class => "" % my $btn = l('bac_UPDATE_CONF');
% end
<div class="row g-3 align-items-center">
<div class="col-md-2">
<button type="submit" class="btn btn-primary" value="<%=$c->l('NEXT')%>"><%= $btn %></button>
</div> </div>
</div>
<br>
</form>
</div>
% end % end

View File

@@ -5,42 +5,64 @@
<div class="card-body"> <div class="card-body">
% if (config->{debug} == 1) { % if (config->{debug} == 1) {
<p> <pre>
%= dumper $c->current_route <%= dumper $c->current_route %>
%= dumper $bac_datas <%= dumper $bac_datas %>
</p> </pre>
% } % }
% if ( stash 'error' ) { % if ( stash 'error' ) {
<br><div class=""> <br>
%= $c->render_to_string(inline => stash 'error') <div class="text-danger">
<%= $c->render_to_string(inline => stash 'error') %>
</div> </div>
% } % }
<h1><%= $title%></h1> <h1><%= $title%></h1>
%= form_for '/backupd' => (method => 'POST') => begin <br>
<h2> <h2><%= l 'bac_WORKSTN_RESTORE' %></h2>
%=l 'bac_WORKSTN_RESTORE'
</h2> <br>
<form action="/smanager/backupd" method="POST">
<br><br>
% if ($bac_datas->{status} ne 'enabled') { % if ($bac_datas->{status} ne 'enabled') {
%= $c->render_to_string(inline => (l 'bac_CONFIGURATION_TO_BE_DONE')) <div>
<%= $c->render_to_string(inline => (l 'bac_CONFIGURATION_TO_BE_DONE')) %>
</div>
% } else { % } else {
%= $c->render_to_string(inline => (l 'bac_RESTORE_CONF_FROM_WORKSTN_DESC') . ' ' . $c->get_shared_folder_to_verify()) <div>
<%= $c->render_to_string(inline => (l 'bac_RESTORE_CONF_FROM_WORKSTN_DESC') . ' ' . $c->get_shared_folder_to_verify()) %>
</div>
% } % }
<br><br><span class=""> <br><br>
%=l 'bac_SELECT_BACKUP_FILE'
</span> <div class="row g-3 align-items-center">
<span class=""> <div class="col-md-1">
%= select_field 'Backupset' => $c->get_Backupset_options(), class => "" <%= l 'bac_SELECT_BACKUP_FILE' %>
</span><br><br> </div>
<div class="col-auto">
<%= select_field 'Backupset' => $c->get_Backupset_options(), class => "form-select" %>
</div>
</div>
<br><br>
<%= hidden_field 'Function' => $bac_datas->{'function'} %>
% my $btn = l('bac_RESTORE_FROM_WORKSTN');
<div class="row g-3 align-items-center">
<div class="col-md-2">
<button type="submit" class="btn btn-primary"><%= $btn %></button>
</div>
</div>
</form>
%= hidden_field 'Function' => $bac_datas->{'function'}
%= submit_button $c->l('bac_RESTORE_FROM_WORKSTN'), class => ""
% end
</div> </div>
% end % end

View File

@@ -5,33 +5,49 @@
<div class="card-body"> <div class="card-body">
% if (config->{debug} == 1) { % if (config->{debug} == 1) {
<p> <pre>
%= dumper $c->current_route <%= dumper $c->current_route %>
%= dumper $bac_datas <%= dumper $bac_datas %>
</p> </pre>
% } % }
% if ( stash 'error' ) { % if ( stash 'error' ) {
<br><div class=""> <br>
%= $c->render_to_string(inline => stash 'error') <div class="text-danger">
<%= $c->render_to_string(inline => stash 'error') %>
</div> </div>
% } % }
<h1><%= $title%></h1> <h1><%= $title%></h1>
%= form_for '/backupd' => (method => 'POST') => begin <br>
<h2> <h2><%= l 'bac_WORKSTN_RESTORE' %></h2>
%=l 'bac_WORKSTN_RESTORE'
</h2> <br>
<p>
%= $c->render_to_string(inline => $bac_datas->{restore_log}) <form action="/smanager/backupd" method="POST">
</p><p>
%=l 'bac_YOU_MUST_REBOOT' <div>
</p> <%= $c->render_to_string(inline => $bac_datas->{restore_log}) %>
%= hidden_field 'Function' => $bac_datas->{'function'}
%= submit_button $c->l('bac_REBOOT'), class => ""
% end
</div> </div>
<br>
<div>
<%= l 'bac_YOU_MUST_REBOOT' %>
</div>
<%= hidden_field 'Function' => $bac_datas->{'function'} %>
% my $btn = l('bac_REBOOT');
<div class="row g-3 align-items-center">
<div class="col-md-2">
<button type="submit" class="btn btn-primary"><%= $btn %></button>
</div>
</div>
</form>
</div>
% end % end

View File

@@ -5,49 +5,73 @@
<div class="card-body"> <div class="card-body">
% if (config->{debug} == 1) { % if (config->{debug} == 1) {
<p> <pre>
%= dumper $c->current_route <%= dumper $c->current_route %>
%= dumper $bac_datas <%= dumper $bac_datas %>
</p> </pre>
% } % }
% if ( stash 'error' ) { % if ( stash 'error' ) {
<br><div class=""> <br><div class="text-danger">
%= $c->render_to_string(inline => stash 'error') <%= $c->render_to_string(inline => stash 'error') %>
</div> </div>
% } % }
<h1><%= $title%></h1> <h1><%= $title%></h1>
%= form_for '/backupd' => (method => 'POST') => begin <br>
<h2><%=l 'bac_WORKSTN_SEL_RESTORE' %></h2> <h2><%=l 'bac_WORKSTN_SEL_RESTORE' %></h2>
%= $c->render_to_string(inline => (l 'bac_WORKSTN_SEL_REST_DESC') . ' ' . $c->get_shared_folder_to_verify()) <br>
<form action="/smanager/backupd" method="POST">
<div>
<%= $c->render_to_string(inline => (l 'bac_WORKSTN_SEL_REST_DESC') . ' ' . $c->get_shared_folder_to_verify()) %>
</div>
<br>
<h3><%= l 'bac_BACKUP_CHOICE' %></h3> <h3><%= l 'bac_BACKUP_CHOICE' %></h3>
<br> <br>
<span class="">
%=l 'bac_SELECT_BACKUP_FILE'
</span>
<span class="">
%= select_field 'Backupset' => $c->get_Restoreset_options(), class => ""
</span>
<br>
<br>
<span class="">
%=l 'bac_FILTER_EXPRESSION'
</span>
<span class="">
%= text_field 'Filterexp', size => 32, class => ""
</span>
<br>
<br>
%= hidden_field 'Function' => $bac_datas->{'function'}
%= submit_button $c->l('PERFORM'), class => ""
% end
<div class="row g-3 align-items-center">
<div class="col-md-1">
<%= l 'bac_SELECT_BACKUP_FILE' %>
</div>
<div class="col-auto">
<%= select_field 'Backupset' => $c->get_Restoreset_options(), class => "form-select" %>
</div>
</div>
<br><br>
<div class="row g-3 align-items-center">
<div class="col-md-1">
<label for="inputFilterExpression" class="col-form-label"><%=l 'bac_FILTER_EXPRESSION' %></label>
</div>
<div class="col-auto">
<input type="text" name="Filterexp" id="inputFilterExpression" class="form-control" aria-describedby="Input Filter Expression">
</div>
</div>
<br><br>
%= hidden_field 'Function' => $bac_datas->{'function'}
% my $btn = l('PERFORM');
<div class="row g-3 align-items-center">
<div class="col-md-2">
<button type="submit" class="btn btn-primary"><%= $btn %></button>
</div>
</div>
</form>
</div> </div>

View File

@@ -5,51 +5,71 @@
<div class="card-body"> <div class="card-body">
% if (config->{debug} == 1) { % if (config->{debug} == 1) {
<p> <pre>
%= dumper $c->current_route <%= dumper $c->current_route %>
%= dumper $bac_datas <%= dumper $bac_datas %>
</p> </pre>
% } % }
% if ( stash 'error' ) { % if ( stash 'error' ) {
<br><div class=""> <br>
%= $c->render_to_string(inline => stash 'error') <div class="text-danger">
<%= $c->render_to_string(inline => stash 'error') %>
</div> </div>
% } % }
<h1><%= $title%></h1> <h1><%= $title%></h1>
<br>
<h2><%=l 'bac_WORKSTN_SELECTIVE_RESTORE' %></h2> <h2><%=l 'bac_WORKSTN_SELECTIVE_RESTORE' %></h2>
<br> <br>
%= $c->render_to_string(inline => (l 'bac_READ_COMPLETE')) <div>
<%= $c->render_to_string(inline => (l 'bac_READ_COMPLETE')) %>
</div>
%= form_for '/backupd' => (method => 'POST') => begin <br>
<form action="/smanager/backupd" method="POST">
<div class="row g-3 align-items-center">
<div class="col-md-1">
<%=l 'bac_SELECT_FILES_TO_RESTORE' %>
</div>
<div class="col-auto">
<%= select_field 'Restorefiles' => $c->get_Restorefiles_options($bac_datas->{'filterexp'},$bac_datas->{'backupset'}), class => "form-select", multiple => 1, size => 15 %>
</div>
</div>
<br><br>
<div class="row g-3 align-items-center">
<div class="col-md-1">
<label for="inputSelectDate" class="col-form-label"><%=l 'bac_SELECT_DATE_BEFORE' %></label>
</div>
<div class="col-auto">
<input type="text" name="Seldatebefore" id="inputSelectDate" class="form-control" aria-describedby="Restore most recent">
</div>
</div>
<br><br>
<br><span class="">
%=l 'bac_SELECT_FILES_TO_RESTORE'
</span>
<span class="">
%= select_field 'Restorefiles' => $c->get_Restorefiles_options($bac_datas->{'filterexp'},$bac_datas->{'backupset'}), class => "", multiple => 1, size => 15
</span>
<br>
<br>
<span class="">
%=l 'bac_SELECT_DATE_BEFORE'
</span>
<span class="">
%= text_field 'Seldatebefore', size => 32, class => ""
</span>
<br>
<br>
%= hidden_field 'Function' => $bac_datas->{'function'} %= hidden_field 'Function' => $bac_datas->{'function'}
%= hidden_field 'Backupset' => $bac_datas->{'backupset'} %= hidden_field 'Backupset' => $bac_datas->{'backupset'}
%= hidden_field 'Filterexp' => $bac_datas->{'filterexp'} %= hidden_field 'Filterexp' => $bac_datas->{'filterexp'}
%= submit_button $c->l('PERFORM'), class => ""
% end % my $btn = l('PERFORM');
<div class="row g-3 align-items-center">
<div class="col-md-2">
<button type="submit" class="btn btn-primary" value="<%=$c->l('bac_RESTORE_FROM_TAPE')%>"><%= $btn %></button>
</div>
</div>
<form>
</div> </div>
% end % end

View File

@@ -5,30 +5,44 @@
<div class="card-body"> <div class="card-body">
% if (config->{debug} == 1) { % if (config->{debug} == 1) {
<p> <pre>
%= dumper $c->current_route <%= dumper $c->current_route %>
%= dumper $bac_datas <%= dumper $bac_datas %>
</p> </pre>
% } % }
% if ( stash 'error' ) { % if ( stash 'error' ) {
<br> <br>
<div class=""> <div class="text-danger">
%= $c->render_to_string(inline => stash 'error') <%= $c->render_to_string(inline => stash 'error') %>
</div> </div>
% } % }
<h1><%= $title%></h1> <h1><%= $title%></h1>
<br>
<h2><%=l 'bac_WORKSTN_SELECTIVE_RESTORE' %></h2> <h2><%=l 'bac_WORKSTN_SELECTIVE_RESTORE' %></h2>
<br>
%= $c->render_to_string(inline => $bac_datas->{restore_log})
<br> <br>
%= form_for '/backupd' => (method => 'POST') => begin <form action="/smanager/backupd" method="POST">
%= hidden_field 'Function' => $bac_datas->{'function'}
%= submit_button $c->l('NEXT'), class => ""
% end <div>
<%= $c->render_to_string(inline => $bac_datas->{restore_log}) %>
</div>
<%= hidden_field 'Function' => $bac_datas->{'function'} %>
% my $btn = l('NEXT');
<div class="row g-3 align-items-center">
<div class="col-md-2">
<button type="submit" class="btn btn-primary"><%= $btn %></button>
</div>
</div>
</form>
</div> </div>
% end % end

View File

@@ -4,50 +4,60 @@
<div class="card-body"> <div class="card-body">
% if (config->{debug} == 1) { % if (config->{debug} == 1) {
<p> <pre>
%= dumper $c->current_route <%= dumper $c->current_route %>
%= dumper $bac_datas <%= dumper $bac_datas %>
</p> </pre>
% } % }
% if ( stash 'error' ) { % if ( stash 'error' ) {
<br> <br><div class="text-danger">
<div class=""> <%= $c->render_to_string(inline => stash 'error') %>
%= $c->render_to_string(inline => stash 'error')
</div> </div>
% } % }
<h1><%= $title%></h1> <h1><%= $title%></h1>
<h2> <br>
%=l 'bac_VERIFY_WORKSTN_BACKUP_FILE'
</h2>
%= form_for '/backup' => (method => 'POST') => begin <h2><%=l 'bac_VERIFY_WORKSTN_BACKUP_FILE' %></h2>
<form action="/smanager/backup" method="POST">
<br>
% if ($bac_datas->{status} ne 'enabled') { % if ($bac_datas->{status} ne 'enabled') {
%= $c->render_to_string(inline => (l 'bac_CONFIGURATION_TO_BE_DONE')) <div>
<%= $c->render_to_string(inline => (l 'bac_CONFIGURATION_TO_BE_DONE')) %>
</div>
% } else { % } else {
%= $c->render_to_string(inline => (l 'bac_VERIFY_WORKSTN_BACKUP_DESC') . ' ' . $c->get_shared_folder_to_verify()) <div>
<%= $c->render_to_string(inline => (l 'bac_VERIFY_WORKSTN_BACKUP_DESC') . ' ' . $c->get_shared_folder_to_verify()) %>
</div>
% } % }
<br>
<br>
<span class="">
%=l 'bac_SELECT_BACKUP_FILE'
</span>
<span class="">
%= select_field 'Backupset' => $c->get_Backupset_options(), class => ""
</span>
<br>
<p> <br><br>
<span class="">
%=l 'bac_CHECK_TO_VERIFY_FULL_RESTORE' <div class="row g-3 align-items-center">
</span> <div class="col-md-1">
<span class=""> <%=l 'bac_SELECT_BACKUP_FILE' %>
%= check_box 'Verifyall' </div>
</span> <div class="col-auto">
</p> <%= select_field 'Backupset' => $c->get_Backupset_options(), class => "form-select" %>
</div>
</div>
<br><br>
<div class="row g-3 align-items-center">
<div class="col-md-4">
<%=l 'bac_CHECK_TO_VERIFY_FULL_RESTORE' %>
</div>
<div class="col-auto">
<input type='checkbox' name='Verifyall'>
</div>
</div>
<br> <br>
%=l 'bac_CHECK_INTEGRITY_WARNING' %=l 'bac_CHECK_INTEGRITY_WARNING'
@@ -55,8 +65,14 @@
<br> <br>
<br> <br>
%= hidden_field 'Function' => $bac_datas->{'function'} . '1' %= hidden_field 'Function' => $bac_datas->{'function'} . '1'
%= submit_button $c->l('bac_VERIFY'), class => ""
% end % my $btn = l('bac_VERIFY');
<div class="row g-3 align-items-center">
<div class="col-md-2">
<button type="submit" class="btn btn-primary"><%= $btn %></button>
</div>
</div>
</form>
</div> </div>
% end % end

View File

@@ -4,34 +4,47 @@
<div class="card-body"> <div class="card-body">
% if (config->{debug} == 1) { % if (config->{debug} == 1) {
<p> <pre>
%= dumper $c->current_route <%= dumper $c->current_route %>
%= dumper $bac_datas->{function} <%= dumper $bac_datas->{function} %>
<!-- dumper $bac_datas->{'files_list'} --> <!-- dumper $bac_datas->{'files_list'} -->
</p> </pre>
% } % }
% if ( stash 'error' ) { % if ( stash 'error' ) {
<br> <br>
<div class=""> <div class="text-danger">
%= $c->render_to_string(inline => stash 'error') <%= $c->render_to_string(inline => stash 'error') %>
</div> </div>
% } % }
<h1><%= $title%></h1> <h1><%= $title%></h1>
<br>
<h2><%= l 'bac_VERIFY_WORKSTN_BACKUP_FILE' %></h2> <h2><%= l 'bac_VERIFY_WORKSTN_BACKUP_FILE' %></h2>
<br> <br>
%= $c->render_to_string(inline => $c->workstnVerify())
<div>
<%= $c->render_to_string(inline => $c->workstnVerify()) %>
</div>
<br> <br>
%= form_for '/backupd' => (method => 'POST') => begin <form action="/smanager/backupd" method="POST">
%= hidden_field 'Function' => $bac_datas->{'function'} %= hidden_field 'Function' => $bac_datas->{'function'}
%= submit_button $c->l('NEXT'), class => "" % my $btn = l('NEXT');
<div class="row g-3 align-items-center">
<div class="col-md-2">
<button type="submit" class="btn btn-primary"><%= $btn %></button>
</div>
</div>
</form>
% end
</div> </div>
% end % end

View File

@@ -1,6 +1,6 @@
<% <%
my $backups = esmith::BackupHistoryDB->open; my $backups = esmith::BackupHistoryDB->open; # no UTF8
my $now = time(); my $now = time();
my $backup_rec = $backups->new_record($now, { my $backup_rec = $backups->new_record($now, {
type => 'backup_record', BackupType => 'desktop', type => 'backup_record', BackupType => 'desktop',

View File

@@ -5,76 +5,99 @@
<div class="card-body"> <div class="card-body">
% if (config->{debug} == 1) { % if (config->{debug} == 1) {
<div> <pre>
%= dumper $c->current_route <%= dumper $c->current_route %>
%= dumper $bac_datas <%= dumper $bac_datas %>
</div> </pre>
% } % }
% if ( stash 'warning' ) { % if ( stash 'warning' ) {
<br> <br>
<div> <div class="col-md-4 bg-info text-center">
%= $c->render_to_string(inline => stash 'warning') <%= $c->render_to_string(inline => stash 'warning') %>
</div> </div>
<br>
% } % }
% if ( stash 'error' ) { % if ( stash 'error' ) {
<br> <br>
<div> <div class="text-danger">
%= $c->render_to_string(inline => stash 'error') <%= $c->render_to_string(inline => stash 'error') %>
</div> </div>
<br>
% } % }
<h1><%= $title%></h1> <h1><%= $title%></h1>
<!--br>Still incomplete click here for previous version <!--br>Still incomplete click here for previous version
<a href="/server-manager/cgi-bin/backup" target='_blank'><b>(Previous Backup version)</b></a> <a href="/server-manager/cgi-bin/backup" target='_blank'><b>(Previous Backup version)</b></a>
<br--> -->
<br>
<%= $c->render_to_string(inline => (l 'bac_BACKUP_DESC_DAR', $bac_datas->{module}, <%= $c->render_to_string(inline => (l 'bac_BACKUP_DESC_DAR', $bac_datas->{module},
$bac_datas->{dumpsize}, $bac_datas->{tarsize})) %> $bac_datas->{dumpsize}, $bac_datas->{tarsize})) %>
<form action="/smanager/backup" method="POST"> <form action="/smanager/backup" method="POST">
%#= form_for '/backup' => (method => 'POST') => begin <br>
<h2><%= l 'bac_BACKUP_CONFIG_STATUS' %></h2> <h2><%= l 'bac_BACKUP_CONFIG_STATUS' %></h2>
<br>
<div> <div>
<%= l 'bac_TAPE_BACKUPS' %>, <div>
<%= $c->l(uc($bac_datas->{'backupStatus'})).'.' %> <%= l 'bac_TAPE_BACKUPS' %>: <%= $c->l(uc($bac_datas->{'backupStatus'})).'.' %>
</div>
% if ( $bac_datas->{'backupStatus'} eq 'enabled' ) { % if ( $bac_datas->{'backupStatus'} eq 'enabled' ) {
%= $c->l('bac_BACKUPS_RUN_AT')
%= $bac_datas->{'backupTime'}
%= $c->l('bac_REMINDER_MESSAGE_AT')
%= $bac_datas->{'reminderTime'}
% }
</div>
<div> <div>
<%= $c->l('bac_BACKUPS_RUN_AT') %>: <%= $bac_datas->{'backupTime'} %>
<%=l 'bac_WORKSTN_BACKUPS' %>,
<%= $c->l(uc($bac_datas->{'backupwkStatus'})) . '.' %>
% if ( $bac_datas->{'backupwkStatus'} eq 'enabled' ) {
<%= $c->l('bac_WKBACKUPS_RUN_AT') %>
<%= $bac_datas->{'backupwkTime'} %>
% }
</div> </div>
<br>
<div> <div>
<%= l 'bac_SELECT_AN_ACTION' %> <%= $c->l('bac_REMINDER_MESSAGE_AT') %>: <%= $bac_datas->{'reminderTime'} %>
% param 'Function' => $bac_datas->{function} unless param 'Function'; </div>
<%= select_field 'Function' => $c->get_function_options() %> % }
</div> </div>
<br> <br>
<% my $btn = $c->l('PERFORM'); %> <div>
<div>
<%=l 'bac_WORKSTN_BACKUPS' %>: <%= $c->l(uc($bac_datas->{'backupwkStatus'})) . '.' %>
</div>
<div>
% if ( $bac_datas->{'backupwkStatus'} eq 'enabled' ) {
<%= $c->l('bac_WKBACKUPS_RUN_AT') %>: <%= $bac_datas->{'backupwkTime'} %>
% }
</div>
</div>
<br>
<div class="row g-3 align-items-center">
<div class="col-md-1">
<%= l 'bac_SELECT_AN_ACTION' %>
</div>
<div class="col-auto">
% param 'Function' => $bac_datas->{function} unless param 'Function';
<%= select_field 'Function' => $c->get_function_options(), class => "form-select" %>
</div>
</div>
<br>
% my $btn = $c->l('PERFORM');
<div class="row g-3 align-items-center"> <div class="row g-3 align-items-center">
<div class="col-md-2"> <div class="col-md-2">
<button type="submit" class="btn btn-primary"><%= $btn %></button> <button type="submit" class="btn btn-primary"><%= $btn %></button>
</div> </div>
</div> </div>
% end
</form>
</div> </div>
% end % end

View File

@@ -5,39 +5,44 @@
<div class="card-body"> <div class="card-body">
% if (config->{debug} == 1) { % if (config->{debug} == 1) {
<div> <pre>
(DBG)route: <%= $c->current_route %><br> Route: <%= dumper $c->current_route %><br>
(DBG)FsS stat: <%= $clm_datas->{FilesystemScan}%> <br> FsS stat: <%= dumper $clm_datas->{FilesystemScan}%> <br>
(DBG)Quar stat: <%=$clm_datas->{Quarantine} %> Quar stat: <%= dumper $clm_datas->{Quarantine} %>
</div> </pre>
% } % }
<h1><%= $title %></h1> <h1><%= $title %></h1>
<br> <!-- reetp This $module should be split ijto two lines -->
<%= $modul %> <%= $modul %>
<% my $btn = l('SAVE'); %>
<br><br> <br><br>
<form action="/smanager/clamav" method="POST"> <form action="/smanager/clamav" method="POST">
<div class="row g-3 align-items-center"> <div class="row g-3 align-items-center">
<div class="col-auto"> <div class="col-md-2">
<h6><%= l 'clm_LABEL_FILESYSTEM_SCAN_PERIOD' %>:</h6> <%= l 'clm_LABEL_FILESYSTEM_SCAN_PERIOD' %>:
</div>
<div class="col-md-2">
% param 'FilesystemScan' => $clm_datas->{FilesystemScan} unless param 'FilesystemScan'; % param 'FilesystemScan' => $clm_datas->{FilesystemScan} unless param 'FilesystemScan';
<%= select_field 'FilesystemScan' => [[ (l 'clm_DAILY') => 'daily'], [ (l 'clm_NEVER') => 'disabled'], [ (l 'clm_WEEKLY') => 'weekly']], class => "form-select" %> <%= select_field 'FilesystemScan' => [[ (l 'clm_DAILY') => 'daily'], [ (l 'clm_NEVER') => 'disabled'], [ (l 'clm_WEEKLY') => 'weekly']], class => "form-select" %>
</div> </div>
</div> </div>
<br> <br>
<div class="row g-3 align-items-center"> <div class="row g-3 align-items-center">
<br> <div class="col-md-2">
<div class="col-auto"> <%= l 'clm_LABEL_QUARANTINE' %>:
<h6><%= l 'clm_LABEL_QUARANTINE' %>:</h6> </div>
<div class="col-md-2">
% param 'Quarantine' => $clm_datas->{Quarantine} unless param 'Quarantine'; % param 'Quarantine' => $clm_datas->{Quarantine} unless param 'Quarantine';
<%= select_field 'Quarantine' => [[ (l 'ENABLED') => 'enabled'], [ (l 'DISABLED') => 'disabled']], class => "form-select" %> <%= select_field 'Quarantine' => [[ (l 'ENABLED') => 'enabled'], [ (l 'DISABLED') => 'disabled']], class => "form-select" %>
</div>
</div>
<br> <br>
</div>
</div>
<div> <div>
<div> <div>
@@ -47,7 +52,11 @@
<%= $clm_datas->{clam_versions} %> <%= $clm_datas->{clam_versions} %>
</div> </div>
</div> </div>
<br> <br>
<% my $btn = l('SAVE'); %>
<div class="row g-3 align-items-center"> <div class="row g-3 align-items-center">
<div class="col-md-2"> <div class="col-md-2">
<button type="submit" class="btn btn-primary"><%= $btn %></button> <button type="submit" class="btn btn-primary"><%= $btn %></button>

View File

@@ -5,5 +5,5 @@
%#= stylesheet 'css/sme-jquery-overrides.css' %#= stylesheet 'css/sme-jquery-overrides.css'
%= stylesheet 'dist/css/adminlte.min.css' %= stylesheet 'dist/css/adminlte.min.css'
%= stylesheet 'dist/icons/font/bootstrap-icons.min.css' %= stylesheet 'dist/font/bootstrap-icons.min.css'
%#= stylesheet 'dist/css/overlayscrollbars.min.css' %#= stylesheet 'dist/css/overlayscrollbars.min.css'

View File

@@ -135,14 +135,8 @@
</div> </div>
</div> </div>
<br> <br>
% my $btn = l('SAVE'); % my $btn = l('SAVE');
<%= hidden_field 'trt' => 'DEL' %> <%= hidden_field 'trt' => 'DEL' %>

View File

@@ -2,11 +2,11 @@
% content_for 'module' => begin % content_for 'module' => begin
% if ( config 'debug' ) { % if (config->{debug} == 1) {
<div> <div>
<!-- %= dumper $c->current_route --> <%= dumper $c->current_route %>
% if ( stash 'trt' ) { % if ( stash 'trt' ) {
%= dumper stash 'trt' <%= dumper stash 'trt' %>
% } % }
</div> </div>
% } % }
@@ -67,7 +67,7 @@
<div class="input-group mb-1"> <div class="input-group mb-1">
<div class="form-floating"> <div class="form-floating">
<input type="password" name="Password" id="password" class="form-control" placeholder="<%=l 'PASSWORD'%>"> <input type="password" name="Password" id="password" class="form-control" placeholder="<%=l 'PASSWORD'%>" autocomplete="on">
<label for="password">Password</label> <label for="password">Password</label>
</div> </div>
<div class="input-group-text"> <div class="input-group-text">

View File

@@ -28,7 +28,7 @@
<th class="col-sm"><%=l 'DESCRIPTION_BRIEF' %></th> <th class="col-sm"><%=l 'DESCRIPTION_BRIEF' %></th>
<th class="col-sm"><%=l 'dom_CONTENT' %></th> <th class="col-sm"><%=l 'dom_CONTENT' %></th>
<th class="col-sm"><%=l 'dom_LABEL_NAMESERVERS'%></th> <th class="col-sm"><%=l 'dom_LABEL_NAMESERVERS'%></th>
<th class="col-sm user-valign-center" colspan="2"><%=l 'ACTION' %></th> <th class="col-sm text-center" colspan="2"><%=l 'ACTION' %></th>
</tr> </tr>
</thead> </thead>
@@ -67,8 +67,8 @@
%}; %};
%# $actionRemove = "<a href='domains2?CsrfDef=TOKEN&trt=DEL&Domain=" . $domain->{Domain} . "'>" . "<button class="" title=".l('REMOVE').">".l('REMOVE')."</button>" . "</a>"; %# $actionRemove = "<a href='domains2?CsrfDef=TOKEN&trt=DEL&Domain=" . $domain->{Domain} . "'>" . "<button class="" title=".l('REMOVE').">".l('REMOVE')."</button>" . "</a>";
%}; %};
<td class="col-auto user-valign-center"><%= $c->render_to_string(inline => $actionRemove) %></td> <td class="col-auto text-center"><%= $c->render_to_string(inline => $actionRemove) %></td>
<td class="col-auto user-valign-center"><%= $c->render_to_string(inline => $actionModify) %></td> <td class="col-auto text-center"><%= $c->render_to_string(inline => $actionModify) %></td>
</tr> </tr>
% } % }

View File

@@ -24,7 +24,7 @@
<tr> <tr>
<th class="col-sm"><%= l 'GROUP' %></th> <th class="col-sm"><%= l 'GROUP' %></th>
<th class="col-sm"><%= l 'DESCRIPTION' %></th> <th class="col-sm"><%= l 'DESCRIPTION' %></th>
<th class="col-sm user-valign-center" colspan="2"><%= l 'ACTION' %></th> <th class="col-sm align-middle" colspan="2"><%= l 'ACTION' %></th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
@@ -54,8 +54,8 @@
% </a> % </a>
%}; %};
<td class="user-valign-center"><%= $c->render_to_string(inline => $actionModify) %></td> <td class="align-middle"><%= $c->render_to_string(inline => $actionModify) %></td>
<td class="user-valign-center"><%= $c->render_to_string(inline => $actionRemove) %></td> <td class="align-middle"><%= $c->render_to_string(inline => $actionRemove) %></td>
</tr> </tr>
% } % }
</tbody> </tbody>

View File

@@ -26,7 +26,7 @@
<th class="col-auto"><%= l 'IP_ADDRESS_OR_FQDN' %></th> <th class="col-auto"><%= l 'IP_ADDRESS_OR_FQDN' %></th>
<th class="col-auto"><%= l 'hos_ETHERNET_ADDRESS' %></th> <th class="col-auto"><%= l 'hos_ETHERNET_ADDRESS' %></th>
<th class="col-auto"><%= l 'COMMENT' %></th> <th class="col-auto"><%= l 'COMMENT' %></th>
<th class="user-valign-center" colspan="2"><%= l 'ACTION' %></th> <th class="align-middle" colspan="2"><%= l 'ACTION' %></th>
</tr> </tr>
</thead> </thead>
@@ -63,8 +63,8 @@
% </a> % </a>
%}; %};
% } % }
<td class="user-valign-center"><%= $c->render_to_string(inline => $actionModify) %></td> <td class="align-middle"><%= $c->render_to_string(inline => $actionModify) %></td>
<td class="user-valign-center"><%= $c->render_to_string(inline => $actionRemove) %></td> <td class="align-middle"><%= $c->render_to_string(inline => $actionRemove) %></td>
</tr> </tr>
% } % }

View File

@@ -36,7 +36,7 @@
<tr> <tr>
<th class="col-sm"><%= l 'NAME' %></th> <th class="col-sm"><%= l 'NAME' %></th>
<th class="col-sm"><%= l 'DESCRIPTION' %></th> <th class="col-sm"><%= l 'DESCRIPTION' %></th>
<th class="col-sm user-valign-center" colspan="3"><%= l 'ACTION' %></th> <th class="col-sm align-middle" colspan="3"><%= l 'ACTION' %></th>
</tr> </tr>
</thead> </thead>
@@ -103,9 +103,9 @@
% </a> % </a>
%}; %};
% } % }
<td class="user-valign-center"><%= $c->render_to_string(inline => $actionModify) %></td> <td class="align-middle"><%= $c->render_to_string(inline => $actionModify) %></td>
<td class="user-valign-center"><%= $c->render_to_string(inline => $actionResetPw)%></td> <td class="align-middle"><%= $c->render_to_string(inline => $actionResetPw)%></td>
<td class="user-valign-center"><%= $c->render_to_string(inline => $actionRemove) %></td> <td class="align-middle"><%= $c->render_to_string(inline => $actionRemove) %></td>
</td> </td>
</tr> </tr>
% } % }

View File

@@ -19,34 +19,32 @@
<br> <br>
<div> <div class="row g-3 align-items-center">
<div class="col-md-1">
<%= l 'PASSWORD_NEW' %> <%= l 'PASSWORD_NEW' %>
</div> </div>
<div class="col-auto">
<input name="newPass" id="password" type="password" class="form-control sme-password" placeholder="Password" autocomplete="on">
</div>
<div class="col-auto">
<span id="togglePassword" class="bi bi-eye"></span>
</div>
</div>
<br> <br>
<div class="row g-3 align-items-center"> <div class="row g-3 align-items-center">
<div class="col-md-2"> <div class="col-md-1">
<input name="newPass" id="newPass" type="password" class="form-control sme-password" placeholder="Password">
</div>
</div>
<br>
<div>
<%= l 'PASSWORD_VERIFY_NEW' %> <%= l 'PASSWORD_VERIFY_NEW' %>
</div> </div>
<div class="col-auto">
<br> <input name="newPassVerify" id="passVerify" type="password" class="form-control sme-password" placeholder="Password" autocomplete="on">
</div>
<div class="row g-3 align-items-center"> <div class="col-auto">
<div class="col-md-2"> <span id="togglePasswordVerify" class="bi bi-eye"></span>
<input name="newPassVerify" id="newPassVerify" type="password" class="form-control sme-password" placeholder="Password">
</div> </div>
</div> </div>
<br>
<br><br> <br><br>
<div class="row g-3 align-items-center"> <div class="row g-3 align-items-center">

View File

@@ -5,7 +5,6 @@
<form action="/smanager/ibaysd" method="POST"> <form action="/smanager/ibaysd" method="POST">
<div> <div>
<h2><%=l 'iba_ADD_TITLE' %></h2> <h2><%=l 'iba_ADD_TITLE' %></h2>
</div> </div>
@@ -50,7 +49,6 @@
<div class="col-md-2"> <div class="col-md-2">
<%= l 'GROUP' %> <%= l 'GROUP' %>
</div> </div>
<div class="col-auto"> <div class="col-auto">
% param 'group' => $iba_datas->{group} unless param 'group'; % param 'group' => $iba_datas->{group} unless param 'group';
%= select_field 'group' => $c->group_list_m(), class => "form-select" %= select_field 'group' => $c->group_list_m(), class => "form-select"
@@ -63,7 +61,6 @@
<div class="col-md-2"> <div class="col-md-2">
<%= l 'iba_USER_ACCESS' %> <%= l 'iba_USER_ACCESS' %>
</div> </div>
<div class="col-auto"> <div class="col-auto">
% param 'userAccess' => $iba_datas->{userAccess} unless param 'userAccess'; % param 'userAccess' => $iba_datas->{userAccess} unless param 'userAccess';
%= select_field 'userAccess' => $c->userAccess_list_m(), class => "form-select" %= select_field 'userAccess' => $c->userAccess_list_m(), class => "form-select"
@@ -76,7 +73,6 @@
<div class="col-md-2"> <div class="col-md-2">
%=l 'iba_PUBLIC_ACCESS' %=l 'iba_PUBLIC_ACCESS'
</div> </div>
<div class="col-auto"> <div class="col-auto">
% param 'publicAccess' => $iba_datas->{publicAccess} unless param 'publicAccess'; % param 'publicAccess' => $iba_datas->{publicAccess} unless param 'publicAccess';
%= select_field 'publicAccess' => $c->publicAccess_list_m(), class => "form-select" %= select_field 'publicAccess' => $c->publicAccess_list_m(), class => "form-select"
@@ -89,7 +85,6 @@
<div class="col-md-2"> <div class="col-md-2">
<%=l 'iba_ALLOW_DYNAMIC_CONTENT' %> <%=l 'iba_ALLOW_DYNAMIC_CONTENT' %>
</div> </div>
<div class="col-auto"> <div class="col-auto">
% param 'CgiBin' => $iba_datas->{CgiBin} unless param 'CgiBin'; % param 'CgiBin' => $iba_datas->{CgiBin} unless param 'CgiBin';
%= select_field 'CgiBin' => [[ (l 'DISABLED') => 'disabled'], [ (l 'ENABLED') => 'enabled']], class => "form-select" %= select_field 'CgiBin' => [[ (l 'DISABLED') => 'disabled'], [ (l 'ENABLED') => 'enabled']], class => "form-select"
@@ -102,7 +97,6 @@
<div class="col-md-2"> <div class="col-md-2">
<%=l 'iba_HTTPS_Only' %> <%=l 'iba_HTTPS_Only' %>
</div> </div>
<div class="col-auto"> <div class="col-auto">
% param 'SSL' => $iba_datas->{SSL} unless param 'SSL'; % param 'SSL' => $iba_datas->{SSL} unless param 'SSL';
%= select_field 'SSL' => [[ (l 'DISABLED') => 'disabled'], [ (l 'ENABLED') => 'enabled']], class => "form-select" %= select_field 'SSL' => [[ (l 'DISABLED') => 'disabled'], [ (l 'ENABLED') => 'enabled']], class => "form-select"

View File

@@ -1,20 +1,21 @@
<div> <div>
% my $retref = $c->stash("ret"); % my $retref = $c->stash("ret");
% my %ret; % my %ret = $retref ? %$retref : (ret => "");
% unless (length($retref)) {%ret = (ret=>"");} % my @vars = split(/,/, $ret{vars} // '');
% else {%ret = %$retref;} % my ($var1, $var2, $var3, $var4, $var5, $var6, $var7) = @vars;
% my @vars = split(",",$ret{vars}); % if ($c->app->config->{debug}) {
% my $var1 = @vars[0]; <br>
% my $var2 = @vars[1]; <pre>
% my $var3 = @vars[2]; <%= dumper { ret_data => \%ret } %>
% my $var4 = @vars[3]; </pre>
% my $var5 = @vars[4]; % }
% my $var6 = @vars[5];
%if ($ret{'ret'} eq "") {
% if ($ret{ret} eq "") {
<br>
<%= l "ln_FIRSTPAGE_DESC" %>
<BR>
% } elsif (index($ret{ret},"SUCCESS") != -1) { % } elsif (index($ret{ret},"SUCCESS") != -1) {
<div class=""> <div class="">
<h2> Operation Status Report</h2> <h2> Operation Status Report</h2>
@@ -26,9 +27,11 @@
<%= $c->l($ret{ret},$var1,$var2,$var3,$var4,$var5,$var6); %> <%= $c->l($ret{ret},$var1,$var2,$var3,$var4,$var5,$var6); %>
</div> </div>
% } % }
<br />
<br>
% my $btn = l('ADD'); % my $btn = l('ADD');
% my $network_db = esmith::NetworksDB->open(); % my $network_db = esmith::NetworksDB::UTF8->open() || die "Couldn't open NetworksDB db";
% if (config->{debug} == 1) { % if (config->{debug} == 1) {
<div> <div>
@@ -37,7 +40,6 @@
</div> </div>
% } % }
<form action="/smanager/localnetworksb" method="POST"> <form action="/smanager/localnetworksb" method="POST">
<div> <div>
<h2><%=l "ln_ADD_TITLE" %></h2> <h2><%=l "ln_ADD_TITLE" %></h2>
@@ -54,7 +56,7 @@
<label for="inputNetwork" class="col-form-label"><%= l "NETWORK" %></label> <label for="inputNetwork" class="col-form-label"><%= l "NETWORK" %></label>
</div> </div>
<div class="col-auto"> <div class="col-auto">
<input type="text" name="networkAddress" id="inputNetwork" class="form-control" aria-describedby="inputNetwork" > <input type="text" name="networkAddress" id="inputNetwork" class="form-control" aria-describedby="Network" >
</div> </div>
</div> </div>
@@ -65,7 +67,7 @@
<label for="inputNetworkMask" class="col-form-label"><%= l "ln_SUBNET_MASK" %></label> <label for="inputNetworkMask" class="col-form-label"><%= l "ln_SUBNET_MASK" %></label>
</div> </div>
<div class="col-auto"> <div class="col-auto">
<input type="text" name="networkMask" id="inputNetworkMask" class="form-control" aria-describedby="inputNetworkMask" > <input type="text" name="networkMask" id="inputNetworkMask" class="form-control" aria-describedby="Network Subnet Mask" >
</div> </div>
</div> </div>
@@ -76,7 +78,7 @@
<label for="inputNetworkRouter" class="col-form-label"><%= l "ROUTER" %></label> <label for="inputNetworkRouter" class="col-form-label"><%= l "ROUTER" %></label>
</div> </div>
<div class="col-auto"> <div class="col-auto">
<input type="text" name="networkRouter" id="inputNetworkRouter" class="form-control" aria-describedby="inputNetworkRouter" > <input type="text" name="networkRouter" id="inputNetworkRouter" class="form-control" aria-describedby="Network Router" >
</div> </div>
</div> </div>

View File

@@ -63,6 +63,7 @@
<br> <br>
<b>tell me if you find this!</b> <b>tell me if you find this!</b>
<b>Please opoen a bug and tell me</b>
<%= $c->l("ln_REMOVE_HOSTS_DESC") %> <%= $c->l("ln_REMOVE_HOSTS_DESC") %>
<br> <br>

View File

@@ -1,56 +1,50 @@
<div> <div>
% my $btn = l('ln_LOCALNETWORK_ADD');
<form action="/smanager/localnetworksa" method="POST"> <form action="/smanager/localnetworksa" method="POST">
<br> <br>
% my $retref = $c->stash("ret"); % my $retref = $c->stash("ret");
% my %ret; % my %ret = $retref ? %$retref : (ret => "");
% unless (length($retref)) {%ret = (ret=>"");} % my @vars = split(/,/, $ret{vars} // '');
% else {%ret = %$retref;} % my ($var1, $var2, $var3, $var4, $var5, $var6, $var7) = @vars;
% if (config->{debug} == 1) { % if ($c->app->config->{debug}) {
<div> <br>
%= dumper "Ret:".$ret{ret}; <pre>
</div> <%= dumper { ret_data => \%ret } %>
</pre>
% } % }
% my @vars = split(",",$ret{vars});
% my $var1 = @vars[0];
% my $var2 = @vars[1];
% my $var3 = @vars[2];
% my $var4 = @vars[3];
% my $var5 = @vars[4];
% my $var6 = @vars[5];
% my $var7 = @vars[6];
% if ($ret{ret} eq "") { % if ($ret{ret} eq "") {
<%= l "ln_FIRSTPAGE_DESC" %> <%= l "ln_FIRSTPAGE_DESC" %>
% } elsif (index($ret{ret},"SUCCESS") != -1) { % } elsif (index($ret{ret},"SUCCESS") != -1) {
<h2> Operation Status Report</h2>
<br> <br>
<div> <div>
<h2> Operation Status Report</h2> <%= $c->render_to_string(inline => l($ret{ret}, @vars[0..6])) %>
<%= $c->render_to_string(inline => l($ret{ret},$var1,$var2,$var3,$var4,$var5,$var6,$var7)); %>
</div> </div>
% } else { % } else {
<div>
<h2> Operation Status Report - Error</h2> <h2> Operation Status Report - Error</h2>
<%= $c->render_to_string(inline => l($ret{ret},$var1,$var2,$var3,$var4,$var5,$var6,$var7)); %> <br>
<div class="text-danger">
<h2> Operation Status Report - Error</h2>
<%= $c->render_to_string(inline => l($ret{ret}, @vars[0..6])) %>
</div> </div>
% } % }
<br><br> <br><br>
% my $btn = l('ln_LOCALNETWORK_ADD');
<div class="row g-3 align-items-center"> <div class="row g-3 align-items-center">
<div class="col-md-2"> <div class="col-md-2">
<button type="submit" class="btn btn-primary"><%= $btn %></button> <button type="submit" class="btn btn-primary"><%= $btn %></button>
</div> </div>
</div> </div>
</form>
<br> <br>
% my $numlocalnetworks = @$localnetworks; % my $numlocalnetworks = @$localnetworks;
% if ($numlocalnetworks == 0) { % if ($numlocalnetworks == 0) {
<%= l 'ln_LOCAL_NETWORK_NONE' %> <%= l 'ln_LOCAL_NETWORK_NONE' %>
@@ -63,7 +57,7 @@
<th><%= l 'ln_SUBNET_MASK' %></th> <th><%= l 'ln_SUBNET_MASK' %></th>
<th><%= l 'ln_NUMBER_OF_HOSTS' %></th> <th><%= l 'ln_NUMBER_OF_HOSTS' %></th>
<th><%= l 'ROUTER' %></th> <th><%= l 'ROUTER' %></th>
<th><%= l 'ACTION' %></th> <th class="text-center"><%= l 'ACTION' %></th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
@@ -72,11 +66,11 @@
% my $removable = $localnetwork->prop('Removable') || "yes"; % my $removable = $localnetwork->prop('Removable') || "yes";
% my $system = $localnetwork->prop('SystemLocalNetwork') || "no"; % my $system = $localnetwork->prop('SystemLocalNetwork') || "no";
% if ( $system eq "yes" ) { $removable = "no"; } % if ( $system eq "yes" ) { $removable = "no"; }
<tr> <tr class="align-middle">
<td><%= $localnetwork->key %> <td><%= $localnetwork->key %></td>
<td><%= $localnetwork->prop('Mask') %> <td><%= $localnetwork->prop('Mask') %></td>
<td><%= $num_hosts %> <td><%= $num_hosts %></td>
<td><%= $localnetwork->prop('Router') %> <td><%= $localnetwork->prop('Router') %></td>
% my $actionRemove = '&nbsp;'; % my $actionRemove = '&nbsp;';
% if ($removable eq "yes") { % if ($removable eq "yes") {
%my $remove_text = l('REMOVE'); # Localized text %my $remove_text = l('REMOVE'); # Localized text
@@ -90,11 +84,13 @@
% </a> % </a>
%}; %};
% } % }
<td><%= $c->render_to_string(inline => $actionRemove) %></td> <td class="text-center"><%= $c->render_to_string(inline => $actionRemove) %></td>
</tr> </tr>
% } % }
</tbody> </tbody>
</table> </table>
<%= hidden_field 'trt' => $ln_datas->{trt} %> <%= hidden_field 'trt' => $ln_datas->{trt} %>
% } % }
</form>
</div> </div>

View File

@@ -8,66 +8,82 @@
% my $cmmnt = $pf_datas->{cmmnt}; % my $cmmnt = $pf_datas->{cmmnt};
% my $allow = $pf_datas->{allow}; % my $allow = $pf_datas->{allow};
% if (config->{debug} == 1) { % if (config->{debug} == 0) {
<p> <pre>
%= dumper $c->current_route <%= dumper $c->current_route %>
%= dumper $c->stash("ret") <%= dumper $c->stash("ret") %>
%= dumper %$pf_datas <%= dumper %$pf_datas %>
</p> </pre>
% } % }
%= form_for '/portforwardinge' => (method => 'POST') => begin <form action="/smanager/portforwardinge" method="POST">
<br>
%= l "pf_SUMMARY_REMOVE_DESC"
</p><br>
<span class="">
%=l "pf_LABEL_PROTOCOL"
</span>
<span class="">
%=$proto
</span><br><br>
<span class="">
%=l "pf_LABEL_SOURCE_PORT"
</span>
<span class="">
%=$sport
</span>
<br><br>
<span class="">
%=l "pf_LABEL_DESTINATION_HOST"
</span>
<span class="">
%=$dport
</span>
<br><br>
<span class="">
%=l "pf_LABEL_DESTINATION_PORT"
</span>
<span class="">
%=$dhost
</span>
<br><br>
<span class="">
%=l "pf_RULE_COMMENT"
</span>
<span class="">
%=$cmmnt
</span>
<br><br>
<span class="">
%=l "pf_ALLOW_HOSTS"
</span>
<span class="">
%=$allow
</span>
<br><br>
%#}
%= hidden_field sport=>$sport
%= hidden_field proto=>$proto
<br>
%= submit_button "$btn", class => ""
</p>
%end <br>
<div>
<%= l 'pf_SUMMARY_REMOVE_DESC' %>
</div>
<table>
<tbody>
<tr>
<td>
<% l 'pf_LABEL_PROTOCOL' %>
</td>
<td>
<%= $proto %>
</td>
</tr>
<tr>
<td>
<% l 'pf_LABEL_SOURCE_PORT' %>
</td>
<td>
<%= $sport %>
</td>
<tr>
<tr>
<td>
<% l 'pf_LABEL_DESTINATION_HOST' %>
</td>
<td>
<%= $dport %>
</td>
</tr>
<tr>
<td>
<% l 'pf_LABEL_DESTINATION_PORT' %>
</td>
<td>
<%= $dhost %>
</td>
</tr>
<tr>
<td>
<% l 'pf_RULE_COMMENT' %>
</td>
<td>
<%= $cmmnt %>
</td>
</tr>
<tr>
<td>
<% l 'pf_ALLOW_HOSTS' %>
</td>
<td>
<%= $allow %>
</td>
</tr>
</tbody>
</table>
<%= hidden_field sport=>$sport %>
<%= hidden_field proto=>$proto %>
<div class="row g-3 align-items-center">
<div class="col-md-1">
<button type="submit" class="btn btn-primary"><%= $btn %></button>
</div>
</div>
</form>
</div> </div>

View File

@@ -1,6 +1,10 @@
<div> <div>
% my $btn = l('pf_CREATE_RULE');
%= form_for '/portforwardinga' => (method => 'POST') => begin
<form action="/smanager/portforwardinga" method="POST">
<br>
% my $retref= $c->stash("ret"); % my $retref= $c->stash("ret");
% my %ret; % my %ret;
@@ -19,60 +23,52 @@
% my $var6 = @vars[5]; % my $var6 = @vars[5];
% if ($ret{ret} eq "") { % if ($ret{ret} eq "") {
%= $c->render_to_string(inline => l('pf_FIRST_PAGE_DESCRIPTION')); <%= $c->render_to_string(inline => l('pf_FIRST_PAGE_DESCRIPTION')); %>
% } elsif (index($ret{ret},"SUCCESS") != -1) { % } elsif (index($ret{ret},"SUCCESS") != -1) {
<br> <br>
<div class=""> <div>
<!--<h2> Operation Status Report</h2>--> <h2> Operation Status Report</h2>
%= $c->l($ret{ret},$var1,$var2,$var3,$var4,$var5,$var6); <%= $c->l($ret{ret},$var1,$var2,$var3,$var4,$var5,$var6); %>
</div> </div>
% } else { % } else {
<br> <br>
<div class=""> <div class="text-danger">
<!--<h2> Operation Status Report - Error</h2>--> <h2> Operation Status Report - Error</h2>
%= $c->l($ret{ret},$var1,$var2,$var3,$var4,$var5,$var6); <%= $c->l($ret{ret},$var1,$var2,$var3,$var4,$var5,$var6); %>
</div> </div>
% } % }
<p>
<br> <br>
%= submit_button "$btn", class => ""
</p> % my $btn = l('pf_CREATE_RULE');
<div class="row g-3 align-items-center">
<div class="col-md-2">
<button type="submit" class="btn btn-primary"><%= $btn %></button>
</div>
</div>
</form>
% end
% if ($empty){ % if ($empty){
<br> <br>
%=l 'pf_NO_FORWARDS' <%= l 'pf_NO_FORWARDS' %>
% } else { % } else {
<br> <br>
%=l 'pf_SHOW_FORWARDS' <%= l 'pf_SHOW_FORWARDS' %>
<br><br /> <br><br>
<table class="table table-bordered"> <table class="table table-bordered">
<thead> <thead>
<tr> <tr>
<th class=""> <th><%= l 'pf_LABEL_PROTOCOL' %></th>
%=l 'pf_LABEL_PROTOCOL' <th><%= l 'pf_LABEL_SOURCE_PORT' %></th>
</th> <th><%= l 'pf_LABEL_DESTINATION_HOST' %></th>
<th class=""> <th><%= l 'pf_LABEL_DESTINATION_PORT' %></th>
%=l 'pf_LABEL_SOURCE_PORT' <th><%= l 'pf_ALLOW_HOSTS' %></th>
</th> <th><%= l 'pf_RULE_COMMENT' %></th>
<th class=""> <th class="text-center"><%= l 'ACTION' %></th>
%=l 'pf_LABEL_DESTINATION_HOST'
</th>
<th class="">
%=l 'pf_LABEL_DESTINATION_PORT'
</th>
<th class="">
%=l 'pf_ALLOW_HOSTS'
</th>
<th class="">
%=l 'pf_RULE_COMMENT'
</th>
<th class="" '>
%=l 'ACTION'
</th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
@@ -84,30 +80,29 @@
% if (@{ $forwards{$proto} }) { % if (@{ $forwards{$proto} }) {
% foreach my $entry (@{ $forwards{$proto} }) { % foreach my $entry (@{ $forwards{$proto} }) {
<tr> <tr class="align-middle">
% my $sport = $entry->key; % my $sport = $entry->key;
% my $dhost = $entry->prop('DestHost'); % my $dhost = $entry->prop('DestHost');
% my $dport = $entry->prop('DestPort') || ''; % my $dport = $entry->prop('DestPort') || '';
% my $cmmnt = $entry->prop('Comment') || ''; % my $cmmnt = $entry->prop('Comment') || '';
% my $allow = $entry->prop('AllowHosts') || ''; % my $allow = $entry->prop('AllowHosts') || '';
%= t td => (class => "") => $proto <td><%= $proto %></td>
%= t td => (class => "") => $sport <td><%= $sport %></td>
%= t td => (class => "") => $dhost <td><%= $dhost %></td>
%= t td => (class => "") => $dport <td><%= $dport %></td>
%= t td => (class => "") => $allow <td><%= $allow %></td>
%= t td => (class => "") => $cmmnt <td><%= $cmmnt %></td>
<td class="">
% my $remove_text = l('REMOVE'); # Localized text % my $remove_text = l('REMOVE'); # Localized text
% my $csrf_token = "TOKEN"; # CSRF token for security % my $csrf_token = "TOKEN"; # CSRF token for security
% my $actionRemove = qq{ % my $actionRemove = qq{
% <a href="portforwardingd?CsrfDef=$csrf_token&trt=DEL&sport=$sport&proto=$proto"> % <a href="portforwardingd?CsrfDef=$csrf_token&trt=DEL&sport=$sport&proto=$proto">
% <button type='button' class="" title='$remove_text' > % <button type='button' class="btn btn-primary" title='$remove_text' >
% $remove_text % $remove_text
% </button> % </button>
% </a> % </a>
% }; % };
<%= $c->render_to_string(inline => $actionRemove) %>
</td> <td class="text-center"><%= $c->render_to_string(inline => $actionRemove) %></td>
</tr> </tr>
% } % }
% } % }
@@ -115,6 +110,6 @@
% } % }
</tbody> </tbody>
</table> </table>
%= hidden_field 'trt' => $pf_datas->{trt} <%= hidden_field 'trt' => $pf_datas->{trt} %>
</div> </div>

View File

@@ -1,51 +1,61 @@
<div> <div>
<h2><%=l 'prt_CREATE_NEW_PRINTER' %></h2>
<br>
<form action="/smanager/printers2" method="POST">
<br>
<div>
<%= l 'prt_CREATE_NEW_DESC' %>
</div>
<br>
<div class="row g-3 align-items-center">
<div class="col-md-1">
<label for="inputPrinterName" class="col-form-label"><%= l 'prt_PRINTER_NAME' %></label>
</div>
<div class="col-auto">
<input type="text" name="Name" id="inputPrinterName" class="form-control" aria-describedby="Printer Name">
</div>
</div>
<br>
<div class="row g-3 align-items-center">
<div class="col-md-1">
<label for="inputPrinterDesc" class="col-form-label"><%= l 'DESCRIPTION_BRIEF' %></label>
</div>
<div class="col-auto">
<input type="text" name="Description" id="inputPrinterDesc" class="form-control" aria-describedby="Printer Description">
</div>
</div>
<br>
<div class="row g-3 align-items-center">
<div class="col-md-1">
<%= l 'LOCATION'%>
</div>
<div class="col-auto">
<%= select_field 'Location' => $c->printerLocation_list(), class => "form-select" %>
</div>
</div>
<br><br>
<%= hidden_field 'trt' => $prt_datas->{trt} %>
% my $btn = l('ADD'); % my $btn = l('ADD');
%= form_for '/printers2' => (method => 'POST') => begin <div class="row g-3 align-items-center">
<p> <div class="col-md-1">
<h2> <button type="submit" class="btn btn-primary"><%= $btn %></button>
%=l 'prt_CREATE_NEW_PRINTER' </div>
</h2> </div>
<br> </form>
%=l 'prt_CREATE_NEW_DESC'
</p>
<br>
<p>
<span class="">
%=l 'prt_PRINTER_NAME', class => ""
</span>
<span class="">
%= text_field 'Name', class => ""
</span>
</p>
<p>
<span class="">
%=l 'DESCRIPTION_BRIEF', class => ""
</span>
<span class="">
%= text_field 'Description', class => ""
</span>
</p>
<p>
<span class="">
%=l 'LOCATION', class => ""
</span>
<span class="">
%= select_field 'Location' => $c->printerLocation_list(), class => ""
</span>
</p>
<p>
<br><br>
%= submit_button "$btn", class => ""
</p>
%= hidden_field 'trt' => $prt_datas->{trt}
% end
</div> </div>

View File

@@ -1,30 +1,38 @@
<div> <div>
% my $btn = l('REMOVE');
%= form_for '/printers2' => (method => 'POST') => begin
<p>
<h2>
%=l 'prt_REMOVE_PRINTER'
</h2>
<br><br>
<%=l 'prt_ABOUT_TO_REMOVE'%> <%=$prt_datas->{printer}%> <h2><%= l 'prt_REMOVE_PRINTER' %></h2>
(<%=$prt_datas->{description}%>)
<form action="/smanager/printers2" method="POST">
<br> <br>
%=l 'prt_SPOOL_FILE_WARNING' <div>
<%= l 'prt_ABOUT_TO_REMOVE'%> <%=$prt_datas->{printer}%> (<%=$prt_datas->{description}%>)
</div>
<br> <br>
%=l 'prt_ARE_YOU_SURE' <div class="text-danger">
</p> <%= l 'prt_SPOOL_FILE_WARNING' %>
</div>
<p>
<br> <br>
%= submit_button "$btn", class => ""
</p>
<div>
<%= l 'prt_ARE_YOU_SURE' %>
</div>
<br>
%= hidden_field 'trt' => $prt_datas->{trt} %= hidden_field 'trt' => $prt_datas->{trt}
%= hidden_field 'printer' => $prt_datas->{printer} %= hidden_field 'printer' => $prt_datas->{printer}
% end % my $btn = l('REMOVE');
<div class="row g-3 align-items-center">
<div class="col-md-1">
<button type="submit" class="btn btn-primary"><%= $btn %></button>
</div>
</div>
</form>
</div> </div>

View File

@@ -1,70 +1,60 @@
<div> <div>
% my $btn = l('prt_INITIAL_BTN');
%= form_for '/printers' => (method => 'POST') => begin
%= hidden_field 'trt' => 'ADD'
<p>
<br> <br>
%= submit_button "$btn", class => ""
</p>
% end
<p> <form action="/smanager/printers" method="POST">
<h2>
%=l 'prt_CURRENT_LIST' % my $btn = l('prt_INITIAL_BTN');
</h2> <%= hidden_field 'trt' => 'ADD' %>
<div class="row g-3 align-items-center">
<div class="col-md-1">
<button type="submit" class="btn btn-primary"><%= $btn %></button>
</div>
</div>
</form>
<br>
<h2><%= l 'prt_CURRENT_LIST' %></h2>
<br><br> <br><br>
% my $numPrinters = @$printerDrivers; % my $numPrinters = @$printerDrivers;
% if ($numPrinters == 0){ % if ($numPrinters == 0){
%=l 'prt_NO_PRINTERS' <%= l 'prt_NO_PRINTERS' %>
% } else { % } else {
<table class="table table-bordered"> <table class="table table-bordered">
<thead> <thead>
<tr> <tr>
<th class=""> <th><%= l 'NAME' %></th>
%=l 'NAME' <th><%= l 'DESCRIPTION' %></th>
</th> <th><%= l 'LOCATION' %></th>
<th class=""> <th><%= l 'prt_REMOTE_ADDRESS' %></th>
%=l 'DESCRIPTION' <th><%= l 'prt_REMOTE_NAME' %></th>
</th> <th><%= l 'ACTION' %></th>
<th class="">
%=l 'LOCATION'
</th>
<th class="">
%=l 'prt_REMOTE_ADDRESS'
</th>
<th class="">
%=l 'prt_REMOTE_NAME'
</th>
<th class="">
%=l 'ACTION'
</th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
% foreach my $printer (@$printerDrivers) % foreach my $printer (@$printerDrivers) {
% {
% my $address = ($printer->prop('Location') eq 'remote') % my $address = ($printer->prop('Location') eq 'remote')
% ? $printer->prop('Address') : 'N/A'; % ? $printer->prop('Address') : 'N/A';
% my $remoteName = ($printer->prop('Location') eq 'remote') % my $remoteName = ($printer->prop('Location') eq 'remote')
% ? $printer->prop('RemoteName') : 'N/A'; % ? $printer->prop('RemoteName') : 'N/A';
% $remoteName = 'raw' unless ($remoteName); % $remoteName = 'raw' unless ($remoteName);
<tr>
%= t td => (class => "") => $printer->key <tr class="align-middle">
%= t td => (class => "") => $printer->prop('Description') <td><%= $printer->key %></td>
%= t td => (class => "") => $printer->prop('Location') <td><%= $printer->prop('Description') %></td>
%= t td => (class => "") => $address <td><%= $printer->prop('Location') %></td>
%= t td => (class => "") => $remoteName <td><%= $address %></td>
<td class=""> <td><%= $remoteName %></td>
<td>
% my $remove_text = l('REMOVE'); # Localized text % my $remove_text = l('REMOVE'); # Localized text
% my $csrf_token = "TOKEN"; # CSRF token for security % my $csrf_token = "TOKEN"; # CSRF token for security
% my $printer_name = $printer->key; % my $printer_name = $printer->key;
% my $actionRemove = qq{ % my $actionRemove = qq{
% <a href="printers2?CsrfDef=$csrf_token&trt=DEL&&printer=$printer_name"> % <a href="printers2?CsrfDef=$csrf_token&trt=DEL&&printer=$printer_name">
% <button type='button' class="" title='$remove_text' > % <button type='button' class="btn btn-primary" title='$remove_text' >
% $remove_text % $remove_text
% </button> % </button>
% </a> % </a>
@@ -75,8 +65,8 @@
% } % }
</tbody> </tbody>
</table> </table>
<%} %> % }
</p>
</div> </div>

View File

@@ -17,7 +17,7 @@
</div> </div>
<div class="col-auto"> <div class="col-auto">
<input type="text" name="pseudonymDesc" id="inputPseudonymDesc" class="form-control" aria-describedby="PseudonymDesc" > <input type="text" name="pseudonymDesc" id="inputPseudonymDesc" class="form-control" aria-describedby="Pseudonym Description" >
</div> </div>
</div> </div>

View File

@@ -24,7 +24,7 @@
<tr> <tr>
<th class="col-sm"><%= l 'pse_PSEUDONYM' %></th> <th class="col-sm"><%= l 'pse_PSEUDONYM' %></th>
<th class="col-sm"><%= l 'pse_USER_OR_GROUP' %></th> <th class="col-sm"><%= l 'pse_USER_OR_GROUP' %></th>
<th class="col-sm user-valign-center" colspan="2"><%= l 'ACTION' %></th> <th class="col-sm align-middle" colspan="2"><%= l 'ACTION' %></th>
<!-- <th class="" style="display: normal;"></th> --> <!-- <th class="" style="display: normal;"></th> -->
</tr> </tr>
</thead> </thead>
@@ -73,8 +73,8 @@
% }; % };
% } % }
<td class="user-valign-center"><%= $c->render_to_string(inline => $actionModify) %></td> <td class="align-middle"><%= $c->render_to_string(inline => $actionModify) %></td>
<td class="user-valign-center"><%= $c->render_to_string(inline => $actionRemove) %></td> <td class="align-middle"><%= $c->render_to_string(inline => $actionRemove) %></td>
</tr> </tr>
% } % }

View File

@@ -4,13 +4,24 @@
<%= $modul %> <%= $modul %>
% if (config->{debug} == 1) {
<pre>
<%= dumper $c->current_route %>
<%= dumper $userAccounts %>
</pre>
% }
<h2><%= l 'quo_CURRENT_USAGE_AND_SETTINGS' %></h2> <h2><%= l 'quo_CURRENT_USAGE_AND_SETTINGS' %></h2>
<br> <br>
% my $numUsers = @$userAccounts; % my $numUsers = @$userAccounts;
% if ($numUsers == 0){ % if ($numUsers == 0){
<div>
<%= l 'ACCOUNT_USER_NONE' %> <%= l 'ACCOUNT_USER_NONE' %>
</div>
% } else { % } else {
% my $limit = l('quo_LIMIT_WITH_GRACE_MB'); $limit =~ s#(graceX)#<br>$1#; % my $limit = l('quo_LIMIT_WITH_GRACE_MB'); $limit =~ s#(graceX)#<br>$1#;
@@ -25,16 +36,23 @@
<th class="col-sm"><%= $limit %></th> <th class="col-sm"><%= $limit %></th>
<th class="col-sm"><%= $absolute %></th> <th class="col-sm"><%= $absolute %></th>
<th class="col-sm"><%= $current %></th> <th class="col-sm"><%= $current %></th>
<th class="col-sm user-valign-center"><%= l 'ACTION' %></th> <th class="col-sm align-middle"><%= l 'ACTION' %></th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
% foreach my $user (@$userAccounts) { % foreach my $user (@$userAccounts) {
% my $uid = getpwnam($user->key); % my $uid = getpwnam($user->key);
% if (config->{debug} == 1) {
UID <%= l 'quo_COULD_NOT_GET_UID' %> <%= dumper $user->key %><br>
% }
<br>
% unless ($uid) { % unless ($uid) {
% warn($self->localise('COULD_NOT_GET_UID'),$user->key); % warn (l 'quo_COULD_NOT_GET_UID', $user->key);
% next; % next;
% } % }
% my $name = $user->prop("FirstName")." ".$user->prop("LastName"); % my $name = $user->prop("FirstName")." ".$user->prop("LastName");
@@ -59,7 +77,7 @@
% </a> % </a>
%}; %};
<td class="user-valign-center"><%= $c->render_to_string(inline => $actionModify) %></td> <td class="align-middle"><%= $c->render_to_string(inline => $actionModify) %></td>
</tr> </tr>
% } % }
</tbody> </tbody>

View File

@@ -22,12 +22,12 @@
<div class="table-responsive"> <div class="table-responsive">
<table class="table table-bordered"> <table class="table table-bordered">
<thead> <thead>
<tr class=""> <tr>
<th><%= l 'ACCOUNT' %></th> <th><%= l 'ACCOUNT' %></th>
<th><%= l 'USER_NAME' %></th> <th><%= l 'USER_NAME' %></th>
<th><%= l 'usr_VPN_CLIENT_ACCESS' %></th> <th><%= l 'usr_VPN_CLIENT_ACCESS' %></th>
<th><%= l 'usr_FORWARDING_ADDRESS' %></th> <th><%= l 'usr_FORWARDING_ADDRESS' %></th>
<th class="user-valign-center" colspan="5"><%= l 'ACTION' %></th> <th class="text-center text-center" colspan="5"><%= l 'ACTION' %></th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
@@ -54,7 +54,7 @@
% my ($actionModify, $actionLock, $actionResetPw, $actionRemove,$actionroundcube) = '&nbsp;'; % my ($actionModify, $actionLock, $actionResetPw, $actionRemove,$actionroundcube) = '&nbsp;';
% my $thisdomain = $c->req->url->to_abs->host; % my $thisdomain = $c->req->url->to_abs->host;
<tr> <tr class="align-middle">
<td><%= $username %></td> <td><%= $username %></td>
<td><%= $first %>&nbsp<%=$last %></td> <td><%= $first %>&nbsp<%=$last %></td>
<td><%= $vpnaccess %></td> <td><%= $vpnaccess %></td>
@@ -142,11 +142,11 @@
%</a> %</a>
%}; %};
<td class="user-valign-center"><%= $c->render_to_string(inline => $actionModify) %></td> <td class="text-center"><%= $c->render_to_string(inline => $actionModify) %></td>
<td class="user-valign-center"><%= $c->render_to_string(inline => $actionResetPw) %></td> <td class="text-center"><%= $c->render_to_string(inline => $actionResetPw) %></td>
<td class="user-valign-center"><%= $c->render_to_string(inline => $actionLock) %></td> <td class="text-center"><%= $c->render_to_string(inline => $actionLock) %></td>
<td class="user-valign-center"><%= $c->render_to_string(inline => $actionRemove) %></td> <td class="text-center"><%= $c->render_to_string(inline => $actionRemove) %></td>
<td class="user-valign-center"><%= $c->render_to_string(inline => $actionroundcube) %></td> <td class="text-center"><%= $c->render_to_string(inline => $actionroundcube) %></td>
</tr> </tr>
% } % }
</tbody> </tbody>

View File

@@ -43,31 +43,31 @@
<%= l 'usr_RESET_DESC2' %> <%= l 'usr_RESET_DESC2' %>
</div> </div>
<br> <br><br>
<div> <div class="row g-3 align-items-center">
<div class="col-md-1">
<%= l 'PASSWORD_NEW' %> <%= l 'PASSWORD_NEW' %>
</div> </div>
<div class="col-auto">
<input name="newPass" id="password" type="password" class="form-control sme-password" placeholder="Password" autocomplete="on">
</div>
<div class="col-auto">
<span id="togglePassword" class="bi bi-eye"></span>
</div>
</div>
<br> <br>
<div class="row g-3 align-items-center"> <div class="row g-3 align-items-center">
<div class="col-md-2"> <div class="col-md-1">
<input name="newPass" id="newPass" type="password" class="form-control sme-password" placeholder="Password">
</div>
</div>
<br>
<div>
<%= l 'PASSWORD_VERIFY_NEW' %> <%= l 'PASSWORD_VERIFY_NEW' %>
</div> </div>
<div class="col-auto">
<br> <input name="newPassVerify" id="passVerify" type="password" class="form-control sme-password" placeholder="Password" autocomplete="on">
</div>
<div class="row g-3 align-items-center"> <div class="col-auto">
<div class="col-md-2"> <span id="togglePasswordVerify" class="bi bi-eye"></span>
<input name="newPassVerify" id="newPassVerify" type="password" class="form-control sme-password" placeholder="Password">
</div> </div>
</div> </div>

View File

@@ -1,5 +1,5 @@
<div class="container-sm"> <div>
<br> <br>
<h2><%= l 'usr_P2_TITLE' %></h2> <h2><%= l 'usr_P2_TITLE' %></h2>
<br> <br>

View File

@@ -1,13 +1,12 @@
% content_for 'module' => begin
<div class="container-sm">
<br>
<h2><%= l 'usr_MODIFY_ADMIN_TITLE' %></h2> <h2><%= l 'usr_MODIFY_ADMIN_TITLE' %></h2>
<div>
<br><br> <br><br>
<form action="/smanager/useraccountsd" method="POST"> <form action="/smanager/useraccountsd" method="POST">
%#= form_for '/useraccountsd' => (method => 'POST') => begin
<div class="row g-3 align-items-center"> <div class="row g-3 align-items-center">
<div class="col-md-2"> <div class="col-md-2">
@@ -19,6 +18,7 @@
</div> </div>
<br> <br>
% param 'FirstName' => $usr_datas->{firstname} unless param 'FirstName'; % param 'FirstName' => $usr_datas->{firstname} unless param 'FirstName';
<div class="row g-3 align-items-center"> <div class="row g-3 align-items-center">
@@ -51,6 +51,7 @@
</span> </span>
</div> </div>
</div> </div>
<br> <br>
% param 'EmailForward' => $usr_datas->{emailforward} unless param 'EmailForward'; % param 'EmailForward' => $usr_datas->{emailforward} unless param 'EmailForward';
@@ -60,9 +61,10 @@
<label for="inputEmailDelivery" class="col-form-label"><%= l 'usr_EMAIL_DELIVERY' %></label> <label for="inputEmailDelivery" class="col-form-label"><%= l 'usr_EMAIL_DELIVERY' %></label>
</div> </div>
<div class="col-auto"> <div class="col-auto">
%= select_field 'EmailForward' => $c->emailForward_list(), class => "form-select" <%= select_field 'EmailForward' => $c->emailForward_list(), class => "form-select" %>
</div> </div>
</div> </div>
<br> <br>
% param 'ForwardAddress' => $usr_datas->{forwardaddress} unless param 'ForwardAddress'; % param 'ForwardAddress' => $usr_datas->{forwardaddress} unless param 'ForwardAddress';
@@ -80,6 +82,7 @@
</span> </span>
</div> </div>
</div> </div>
<br> <br>
% param 'VPNClientAccess' => $usr_datas->{vpnclientaccess} unless param 'VPNClientAccess'; % param 'VPNClientAccess' => $usr_datas->{vpnclientaccess} unless param 'VPNClientAccess';
@@ -89,12 +92,16 @@
<label for="inputVPNClientAccess" class="col-form-label"><%= l 'usr_VPN_CLIENT_ACCESS' %></label> <label for="inputVPNClientAccess" class="col-form-label"><%= l 'usr_VPN_CLIENT_ACCESS' %></label>
</div> </div>
<div class="col-auto"> <div class="col-auto">
%= select_field 'VPNClientAccess' => [[ (l 'NO') => 'no'], [ (l 'YES') => 'yes']], class => "form-select" <%= select_field 'VPNClientAccess' => [[ (l 'NO') => 'no'], [ (l 'YES') => 'yes']], class => "form-select" %>
</div> </div>
<br> <br>
</div> </div>
<br>
% my $btn = l('SAVE'); % my $btn = l('SAVE');
%= hidden_field 'trt' => $usr_datas->{trt}
%= hidden_field 'user' => $usr_datas->{user}
<div class="row g-3 align-items-center"> <div class="row g-3 align-items-center">
<div class="col-md-2"> <div class="col-md-2">
@@ -103,13 +110,6 @@
</div> </div>
trt: <%= dumper $usr_datas->{trt} %>
user: <%= dumper $usr_datas->{user} %>
%= hidden_field 'trt' => $usr_datas->{trt}
%= hidden_field 'user' => $usr_datas->{user}
%# end
</form> </form>
</div> </div>

View File

@@ -5,28 +5,29 @@
<div class="card-body"> <div class="card-body">
% if (config->{debug} == 1) { % if (config->{debug} == 1) {
<p> <pre>
%= dumper "<pf>".$c->current_route <%= dumper "<pf>".$c->current_route %>
%= dumper $c->stash("ret") <%= dumper $c->stash("ret") %>
%= dumper $c->stash("portforwarding") <%= dumper $c->stash("portforwarding") %>
% my $ref = $pf_datas->{portforwarding}; % my $ref = $pf_datas->{portforwarding}; %>
%= dumper $ref->{TCP}->[0]."</pf>" <%= dumper $ref->{TCP}->[0]."</pf>" %>
</p> </pre>
% } % }
<h1><%= $title%></h1> <h1><%= $title%></h1>
%= $modul %= $modul
% if ($pf_datas->{trt} eq 'ADD') { % if ($pf_datas->{trt} eq 'ADD') {
%= include 'partials/_pf_add' <%= include 'partials/_pf_add' %>
% } elsif ($pf_datas->{trt} eq 'ADD1') { % } elsif ($pf_datas->{trt} eq 'ADD1') {
%= include 'partials/_pf_add' <%= include 'partials/_pf_add' %>
% } elsif ($pf_datas->{trt} eq 'DEL') { % } elsif ($pf_datas->{trt} eq 'DEL') {
%= include 'partials/_pf_del' <%= include 'partials/_pf_del' %>
% } elsif ($pf_datas->{trt} eq 'DEL1'){ % } elsif ($pf_datas->{trt} eq 'DEL1'){
%= include 'partials/_pf_list' <%= include 'partials/_pf_list' %>
% } else { % } else {
%= include 'partials/_pf_list' <%= include 'partials/_pf_list' %>
%} %}
</div> </div>

View File

@@ -5,10 +5,10 @@
<div class="card-body"> <div class="card-body">
%if (config->{debug} == 1) { %if (config->{debug} == 1) {
<div> <pre>
%= dumper $c->current_route %= dumper $c->current_route
%= dumper $prt_datas %= dumper $prt_datas
</div> </pre>
% } % }
% if ( stash 'error' ) { % if ( stash 'error' ) {

View File

@@ -5,64 +5,70 @@
<div class="card-body"> <div class="card-body">
% if (config->{debug} == 1) { % if (config->{debug} == 1) {
<p> <pre>
%= dumper $c->current_route <%= dumper $c->current_route %>
%= dumper $rma_datas <%= dumper $rma_datas %>
</p> </pre>
% } % }
<h1><%= $title%></h1> <h1><%= $title%></h1>
% if ( $notif ) { % if ( $notif ) {
<br> <br>
<span class=""> <div>
<%= $c->render_to_string(inline => $notif) %> <%= $c->render_to_string(inline => $notif) %>
</span> </div>
%} %}
<!--<hr class="" />--> <!--<hr class="" />-->
<% my $btn = l('SAVE'); %> <% my $btn = l('SAVE'); %>
%= form_for 'remoteaccess' => (method => 'POST') => begin
<form action="/smanager/remoteaccess" method="POST">
% my $ipsec = $c->get_ipsecrw_status(); % my $ipsec = $c->get_ipsecrw_status();
<!-- reetp not tested -->
% if ( $ipsec) { % if ( $ipsec) {
<p>
<h2>
%=l 'rma_TITLE_IPSECRW'
</h2><br>
%=l 'rma_DESC_IPSECRW' <h2><%= l 'rma_TITLE_IPSECRW' %></h2>
<br> <div>
<%= l 'rma_DESC_IPSECRW' %>
<span class=""> </div>
%=l 'rma_LABEL_IPSECRW_SESS' <div>
</span> <%= l 'rma_LABEL_IPSECRW_SESS' %>
<span class=""> </div>
<div>
% param 'IpsecrwSess' => $c->get_ipsecrw_sessions unless param 'IpsecrwSess'; % param 'IpsecrwSess' => $c->get_ipsecrw_sessions unless param 'IpsecrwSess';
%= text_field 'IpsecrwSess', class => "" <%= text_field 'IpsecrwSess', class => "" %>
</span> </div>
<br> <br>
%= $c->render_to_string(inline => $c->l('rma_DESC_IPSECRW_RESET')); <div>
<%= $c->render_to_string(inline => $c->l('rma_DESC_IPSECRW_RESET')); %>
</div>
<br> <br>
<span class=""> <div>
%=l 'rma_LABEL_IPSECRW_RESET' <%= l 'rma_LABEL_IPSECRW_RESET' %>
</span> </div>
<span class=""> <div>
%= check_box 'IpsecrwReset',class => "" <input type='checkbox' name='IpsecrwReset'>
</span> </div>
<br><br> <br><br>
<!--<hr class="" />--> <!--<hr class="" />-->
% } % }
<!-- percequ include 'partials/_rma_pptp' --> <!-- percequ include 'partials/_rma_pptp' -->
<h2> <h2><%= $c->l('rma_VALIDFROM_TITLE', $c->l('rma_REMOTE_MANAGEMENT')); %></h2>
%= $c->l('rma_VALIDFROM_TITLE', $c->l('rma_REMOTE_MANAGEMENT'));
</h2><br> <br>
%=l 'rma_VALIDFROM_DESC'
<div>
<%= l 'rma_VALIDFROM_DESC' %>
</div>
<br><br> <br><br>
% my @vals = $self->_get_valid_from(); % my @vals = $self->_get_valid_from();
@@ -70,29 +76,23 @@
<table class="table table-bordered"> <table class="table table-bordered">
<thead> <thead>
<tr> <tr>
<th class=""> <th><%= l 'NETWORK' %></th>
%=l 'NETWORK' <th><%= l 'rma_SUBNET_MASK' %></th>
</th><th class=""> <th><%= l 'rma_NUM_OF_HOSTS' %></th>
%=l 'SUBNET_MASK' <th><%= l 'REMOVE' %></th>
</th><th class="">
%=l 'NUM_OF_HOSTS'
</th><th class="">
%=l 'REMOVE'
</th>
</tr> </tr>
</thead> </thead>
</tbody> <tbody>
% foreach my $val ( @vals ) % foreach my $val ( @vals ) {
% {
% my ($net, $mask) = split '/', $val; % my ($net, $mask) = split '/', $val;
% $mask = '255.255.255.255' unless ($mask); % $mask = '255.255.255.255' unless ($mask);
% my ($numhosts,$a,$b) = esmith::util::computeHostRange($net,$mask); % my ($numhosts,$a,$b) = esmith::util::computeHostRange($net,$mask);
<tr> <tr class="align-middle">
%= t td => (class => "") => $net <td><%= $net %></td>
%= t td => (class => "") => $mask <td><%= $mask %></td>
%= t td => (class => "") => $numhosts <td><%= $numhosts %></td>
<td class=""> <td>
<input type='checkbox' name='Remove_nets' value='<%= $net.'/'.$mask %>'> <input type='checkbox' name='Remove_nets' value='<%= $net.'/'.$mask %>'>
</td> </td>
</tr> </tr>
@@ -106,126 +106,180 @@
foreach my $val (@vals) foreach my $val (@vals)
{ esmith::cgi::genSmallCell($q, shift(@cbGroup), } --> { esmith::cgi::genSmallCell($q, shift(@cbGroup), } -->
% } else { % } else {
<br><b> <br>
%= l('rma_NO_ENTRIES_YET'); <b><%= l('rma_NO_ENTRIES_YET'); %></b>
</b>
% } % }
%=l 'rma_DESC_VALID_FROM_ENTRIES'
<br><br>
<span class="">
%=l 'NETWORK'
</span>
<span class="">
%= text_field 'ValidFromNetwork', class => ""
</span>
<br> <br>
<span class="">
%=l 'rma_SUBNET_MASK' <div>
</span> <%= l 'rma_DESC_VALID_FROM_ENTRIES' %>
<span class=""> </div>
%= text_field 'ValidFromMask', class => ""
</span> <br><br>
<div class="row g-3 align-items-center">
<div class="col-md-1">
<label for="inputNetwork" class="col-form-label"><%= l 'NETWORK' %></label>
</div>
<div class="col-auto">
<input type="text" name="ValidFromNetwork" id="inputNetwork" class="form-control" aria-describedby="Network">
</div>
</div>
<br>
<div class="row g-3 align-items-center">
<div class="col-md-1">
<label for="inputSubnetMask" class="col-form-label"><%= l 'rma_SUBNET_MASK' %></label>
</div>
<div class="col-auto">
<input type="text" name="ValidFromMask" id="inputSubnetMask" class="form-control" aria-describedby="Subnet">
</div>
</div>
<!--<hr class="" />--> <!--<hr class="" />-->
<h2>
%=l 'rma_TITLE_SSH'
</h2><br>
%=l 'rma_DESC_SSH'
<br><br> <br><br>
<span class="">
%=l 'rma_LABEL_SSH' <h2><%= l 'rma_TITLE_SSH' %></h2>
</span>
<span class=""> <br>
<div>
<%= l 'rma_DESC_SSH' %>
</div>
<br><br>
<div class="row g-3 align-items-center">
<div class="col-md-2">
<%= l 'rma_LABEL_SSH' %>
</div>
<div class="col-md-2">
% param 'SshAccess' => $c->get_ssh_access() unless param 'SshAccess'; % param 'SshAccess' => $c->get_ssh_access() unless param 'SshAccess';
%= select_field 'SshAccess' => $c->networkAccess_list(), class => "" <%= select_field 'SshAccess' => $c->networkAccess_list(), class => "form-select" %>
</span> </div>
</div>
<br> <br>
<span class=""> <div class="row g-3 align-items-center">
%=l 'rma_LABEL_SSH_ADMIN' <div class="col-md-2">
</span> <%= l 'rma_LABEL_SSH_ADMIN' %>
<span class=""> </div>
<div class="col-auto">
% param 'SshPermitRootLogin' => $rma_datas->{sshPermitRootLogin} unless param 'SshPermitRootLogin'; % param 'SshPermitRootLogin' => $rma_datas->{sshPermitRootLogin} unless param 'SshPermitRootLogin';
%= select_field 'SshPermitRootLogin' => [[(l 'NO'), 'no'], [(l 'YES'), 'yes']], class => "" <%= select_field 'SshPermitRootLogin' => [[(l 'NO'), 'no'], [(l 'YES'), 'yes']], class => "form-select" %>
</span> </div>
</div>
<br> <br>
<span class=""> <div class="row g-3 align-items-center">
%=l 'rma_LABEL_SSH_PASSWORD_ACCESS' <div class="col-md-2">
</span> <%= l 'rma_LABEL_SSH_PASSWORD_ACCESS' %>
<span class=""> </div>
<div class="col-auto">
% param 'SshPasswordAuthentication' => $c->get_ssh_password_auth() unless param 'SshPasswordAuthentication'; % param 'SshPasswordAuthentication' => $c->get_ssh_password_auth() unless param 'SshPasswordAuthentication';
%= select_field 'SshPasswordAuthentication' => [[(l 'NO'), 'no'], [(l 'YES'), 'yes']], class => "" <%= select_field 'SshPasswordAuthentication' => [[(l 'NO'), 'no'], [(l 'YES'), 'yes']], class => "form-select" %>
</span> </div>
</div>
<br> <br>
<span class=""> <div class="row g-3 align-items-center">
%=l 'rma_LABEL_SSH_PORT' <div class="col-md-2">
</span> <label for="inputSSHPort" class="col-form-label"><%= l 'rma_LABEL_SSH_PORT' %></label>
<span class=""> </div>
<div class="col-sm-1">
% param 'SshTCPPort' => $c->get_ssh_port() unless param 'SshTCPPort'; % param 'SshTCPPort' => $c->get_ssh_port() unless param 'SshTCPPort';
%= text_field 'SshTCPPort', class => "" <input type="text" name="SshTCPPort" id="inputSSHPort" class="form-control" aria-describedby="SSH Port" value="<%= $c->get_ssh_port() %>">
</span> </div>
</div>
<br> <br>
<!--<hr class="" />--> <!--<hr class="" />-->
<h2> <br><br>
%=l 'rma_TITLE_FTP_ACCESS' <h2><%= l 'rma_TITLE_FTP_ACCESS' %></h2>
</h2><br> <br>
%= $c->render_to_string(inline => $c->l('rma_DESC_FTP_ACCESS'));
<div>
<%= $c->render_to_string(inline => $c->l('rma_DESC_FTP_ACCESS')); %>
</div>
<br> <br>
<span class="">
%=l 'rma_LABEL_FTP_ACCESS' <div class="row g-3 align-items-center">
</span> <div class="col-md-2">
<span class=""> <%= l 'rma_LABEL_FTP_ACCESS' %>
</div>
<div class="col-auto">
% param 'FtpAccess' => $c->get_ftp_access() unless param 'FtpAccess'; % param 'FtpAccess' => $c->get_ftp_access() unless param 'FtpAccess';
%= select_field 'FtpAccess' => $c->networkAccess_list(), class => "" <%= select_field 'FtpAccess' => $c->networkAccess_list(), class => "form-select" %>
</span> </div>
<br> </div>
<br> <br>
%= $c->render_to_string(inline => $c->l('rma_DESC_FTP_LOGIN'));
<br> <br>
<span class="">
%=l 'rma_LABEL_FTP_LOGIN' <div>
</span> <%= $c->render_to_string(inline => $c->l('rma_DESC_FTP_LOGIN')); %>
<span class=""> </div>
<br>
<div class="row g-3 align-items-center">
<div class="col-md-2">
<%= l 'rma_LABEL_FTP_LOGIN' %>
</div>
<div class="col-auto">
% param 'FtpPasswordAccess' => $c->get_ftp_password_login_access() unless param 'FtpPasswordAccess'; % param 'FtpPasswordAccess' => $c->get_ftp_password_login_access() unless param 'FtpPasswordAccess';
%= select_field 'FtpPasswordAccess' => $c->passwordLogin_list(), class => "" <%= select_field 'FtpPasswordAccess' => $c->passwordLogin_list(), class => "form-select" %>
</span> </div>
<div>
<br> <br>
% my $mode = $c->get_telnet_mode(); % my $mode = $c->get_telnet_mode();
% if ( $mode ne 'off') { % if ( $mode ne 'off') {
<!--<hr class="" />--> <!--<hr class="" />-->
<h2> <h2><%= l 'rma_TITLE_TELNET_ACCESS' %></h2>
%=l 'rma_TITLE_TELNET_ACCESS'
</h2><br> <br>
<div class="row g-3 align-items-center">
<div class="col-md-2">
<%= l 'rma_DESC_TELNET_ACCESS' %>
</div>
<div>
<span class="">
%=l 'rma_DESC_TELNET_ACCESS'
</span>
<br><br> <br><br>
<span class=""> <div class="row g-3 align-items-center">
%=l 'rma_LABEL_TELNET_ACCESS' <div class="col-md-2">
</span> <%= l 'rma_LABEL_TELNET_ACCESS' %>
<span class=""> </div>
<div class="col-auto">
% param 'TelnetAccess' => $mode unless param 'TelnetAccess'; % param 'TelnetAccess' => $mode unless param 'TelnetAccess';
%= select_field 'TelnetAccess' => $c->networkAccess_list(), class => "" <%= select_field 'TelnetAccess' => $c->networkAccess_list(), class => "form-select" %>
</span> </div>
</div>
<br> <br>
% } % }
<br> <br>
%= submit_button "$btn", class => ""
% end <div class="row g-3 align-items-center">
<div class="col-md-2">
<button type="submit" class="btn btn-primary"><%= $btn %></button>
</div>
</div>
</div> </div>

View File

@@ -6,36 +6,62 @@
<div class="card-body"> <div class="card-body">
% if (config->{debug} == 1) { % if (config->{debug} == 1) {
<p> <pre>
%= dumper $c->current_route <%= dumper $c->current_route %>
</p> </pre>
% } % }
% if ( stash 'error' ) { % if ( stash 'error' ) {
<br><div class=""> <br>
%= $c->render_to_string(inline => stash 'error') <div class="text-danger">
<%= $c->render_to_string(inline => stash 'error') %>
</div> </div>
% } % }
<h1><%=$title %></h1><br>
<p>If the Webmail panel does not appear after logging in, then please check your password.</p><br /> <h1><%=$title %></h1>
<br>
<div>
If the Webmail panel does not appear after logging in, then please check your password.
</div>
<br>
% my $thisdomain = $c->req->url->to_abs->host; % my $thisdomain = $c->req->url->to_abs->host;
% my $url = $c->stash('modul'); % my $url = $c->stash('modul');
% my $username = 'admin';
% if (!$url) { % if (!$url) {
% $url = $thisdomain."/roundcube"; % $url = $thisdomain."/roundcube";
% } % }
% my $username = 'admin';
% if ($url =~ /[?&]_user=([^&]+)/) { % if ($url =~ /[?&]_user=([^&]+)/) {
% $username = $1; % $username = $1;
% } % }
% if (!($url =~ /https:/)) { % if (!($url =~ /https:/)) {
% $url = 'https://' . $url; % $url = 'https://' . $url;
%} %}
<div class=""> <div class="container-fluid">
<a href="<%= "https://".$thisdomain."/" %>roundcube?_user=<%= $username %>"><button class="" width=20em title="<%= l('Full Window') %>"><%= l('Full Window') %></button></a> <a href="<%= "https://".$thisdomain."/" %>roundcube?_user=<%= $username %>">
<button class="" width=20em title="<%= l('Full Window') %>"><%= l('Full Window') %>
</button>
</a>
<object id="" data="<%=$url %>" title="<%= $c->stash('title') %>" type="text/html" ><%= $c->stash('title') %> not found</object> <object id="" data="<%=$url %>" title="<%= $c->stash('title') %>" type="text/html" ><%= $c->stash('title') %> not found</object>
</div> </div>
</div> </div>
<iframe width="100%" height="600" style="border:1px solid black;" src="<%= "https://".$thisdomain."/" %>roundcube?_user=<%= $username %>">
</iframe>
% my $btn = l('Full Window');
<div class="row g-3 align-items-center">
<div class="col-md-2">
<button type="submit" class="btn btn-primary"><%= $btn %></button>
</div>
</div>
%end %end

View File

@@ -5,11 +5,11 @@
<div class="card-body"> <div class="card-body">
%if (config->{debug} == 1) { %if (config->{debug} == 1) {
<div> <pre>
(DBG)route: <%= $c->current_route %><br> route: <%= dumper $c->current_route %>
(DBG)pdc: <%= $wkg_datas->{ServerRole}%><br> pdc: <%= dumper $wkg_datas->{ServerRole}%>
(DBG)roam: <%= $wkg_datas->{RoamingProfiles}%><br> roam: <%= dumper $wkg_datas->{RoamingProfiles}%>
</div> </pre>
% } % }
<h1><%= $title %></h1> <h1><%= $title %></h1>
@@ -29,7 +29,7 @@
<label for="inputWorkgroup" class="col-form-label"><%= l 'wkg_LABEL_WORKGROUP' %></label> <label for="inputWorkgroup" class="col-form-label"><%= l 'wkg_LABEL_WORKGROUP' %></label>
</div> </div>
<div class="col-auto"> <div class="col-auto">
<input type="text" name="Workgroup" id="inputWorkgroup" class="form-control" aria-describedby="inputWorkgroup" maxlength="15" value="<%= $wkg_datas->{Workgroup}%>" > <input type="text" name="Workgroup" id="inputWorkgroup" class="form-control" aria-describedby="inputWorkgroup" maxlength="15" size="15" value="<%= $wkg_datas->{Workgroup}%>" >
</div> </div>
<div class="col-auto"> <div class="col-auto">
<span id="passwordHelpInline" class="form-text"> <span id="passwordHelpInline" class="form-text">

View File

@@ -1,6 +1,6 @@
%define name smeserver-manager-AdminLTE %define name smeserver-manager-AdminLTE
%define version 11.0.0 %define version 11.0.0
%define release 29 %define release 36
Summary: AdminLTE is an html framework for admin consoles - this rpm adds it to smeserver manager2 Summary: AdminLTE is an html framework for admin consoles - this rpm adds it to smeserver manager2
Name: %{name} Name: %{name}
Version: %{version} Version: %{version}
@@ -11,13 +11,15 @@ URL: https://adminlte.io/
Group: SMEserver/addon Group: SMEserver/addon
source: %{name}-%{version}.tar.gz source: %{name}-%{version}.tar.gz
Packager: Brian Read <brianr@koozali.org> Packager: Brian Read <brianr@koozali.org>
BuildArchitectures: noarch BuildArchitectures: noarch
BuildRoot: /var/tmp/%{name}-%{version}-%{release}-buildroot BuildRoot: /var/tmp/%{name}-%{version}-%{release}-buildroot
BuildRequires: smeserver-devtools BuildRequires: smeserver-devtools
Requires: smeserver-release >= 11.0 Requires: smeserver-release >= 11.0
Requires: smeserver-manager >= 11.0.0 Requires: smeserver-manager >= 11.0.0
Requires: smeserver-lib >= 11.0.0-13
Requires: e-smith-manager >= 2.4.0-22
AutoReqProv: no AutoReqProv: no
%description %description
@@ -26,6 +28,45 @@ AdminLTE is an html framework for admin consoles
wget https://github.com/ColorlibHQ/AdminLTE/archive/master.zip wget https://github.com/ColorlibHQ/AdminLTE/archive/master.zip
%changelog %changelog
* Fri Jun 13 2025 John Crisp <jcrisp@safeandsoundit.co.uk> 11.0.0-36.sme
- Cosmetic tweaks
- Localnetworking fix via [SME: 13041]
- Portforwarding panels done but require fix to module similar to 13041 above.
* Thu Jun 12 2025 John Crisp <jcrisp@safeandsoundit.co.uk> 11.0.0-35.sme
- Finish backup panels
- Finish printer panels
- Tidy Local Networks
- Small layout tweaks
* Wed Jun 11 2025 John Crisp <jcrisp@safeandsoundit.co.uk> 11.0.0-34.sme
- Update flag detection JS [SME: 13039]
- Tweak login template
- Update Remoteaccess template
- Various formatting fixes
- User password trying to get the show hide password icon working
- Ibay password trying to get the show hide password icon working
- Continue Backup panels
* Tue Jun 10 2025 John Crisp <jcrisp@safeandsoundit.co.uk> 11.0.0-33.sme
- Fix out of sync versioning
* Tue Jun 10 2025 John Crisp <jcrisp@safeandsoundit.co.uk> 11.0.0-32.sme
- Add autocomplete to login as per Google
- Update to Quota list - thanks Ed Burgstaler
- Update Clamav
- Modify ibay update
- Modify Localnetwork list
- Start remoteaccess
* Mon Jun 09 2025 John Crisp <jcrisp@safeandsoundit.co.uk> 11.0.0-31.sme
- Fix some issues with user panel
- Fix missing bootstrap icons
- Reduce font size to keep Brian happy
* Mon Jun 09 2025 John Crisp <jcrisp@safeandsoundit.co.uk> 11.0.0-30.sme
- Add UTF8 support to network panel
* Wed Jun 04 2025 John Crisp <jcrisp@safeandsoundit.co.uk> 11.0.0-29.sme * Wed Jun 04 2025 John Crisp <jcrisp@safeandsoundit.co.uk> 11.0.0-29.sme
- Proxy panel done - Proxy panel done