Compare commits

...

15 Commits

Author SHA1 Message Date
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
John Crisp
307ee9dea4 Proxy panel done 2025-06-04 18:27:40 +02:00
John Crisp
05d0b91138 reboot panel done 2025-06-04 18:06:02 +02:00
39 changed files with 1599 additions and 1125 deletions

View File

@@ -1,3 +1,6 @@
html {
font-size: 14px;
}
#busy-indicator {
display: none;
@@ -50,8 +53,8 @@
}
.login-page {
min-height: 10vh;
vertical-align: top !important;
min-height: 60vh !important ;
vertical-align: top !important ;
}
.nav-icon {

View File

@@ -208,7 +208,7 @@ document.addEventListener('DOMContentLoaded', () => {
//if (!response.ok) throw new Error('Country not found');
//const data = await response.json();
//// Return the name in the native language
//return data[0].name.common;
//return data[0].name.common;
//} catch (error) {
//console.error(error);
//return 'Unknown Country';
@@ -222,7 +222,7 @@ document.addEventListener('DOMContentLoaded', () => {
function getCountryCodeFromLanguage(language) {
return languageToCountryMap[language] ? languageToCountryMap[language].code : null;
}
function getCountryNameFromCountryCode(countryCode) {
//alert(`Country code: ${countryCode}`);
for (const language in languageToCountryMap) {
@@ -263,11 +263,15 @@ document.addEventListener('DOMContentLoaded', () => {
function displayLocaleAndFlag() {
// 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
//console.log(navigator.languages); // Log language to console
const { flag, isUnknown, countryCode } = getFlagEmoji(userLocale);
//alert(`Country Code: ${countryCode}, Is Unknown: ${isUnknown}`); // Debug country code and unknown flag status
// Display the locale and the corresponding flag (or fallback)
@@ -278,7 +282,7 @@ function displayLocaleAndFlag() {
fallbackDiv.className = 'fallback-box';
fallbackDiv.textContent = `? ${userLocale.toUpperCase()}`; // Show ? and locale code inside the box
document.getElementById('flag-container').appendChild(fallbackDiv);
// Tooltip for fallback
fallbackDiv.title = "Unknown Country"; // Tooltip for fallback
//alert('Fallback triggered: Unknown Country'); // Debug fallback
@@ -290,7 +294,7 @@ function displayLocaleAndFlag() {
flagSpan.textContent = flag; // Use flag emoji
flagSpan.title = countryName; // Tooltip for the flag in country language
document.getElementById('flag-container').appendChild(flagSpan);
//alert(`Flag Emoji: ${flag}`); // Debug flag emoji display
}
}

View File

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

View File

@@ -5,34 +5,46 @@
<div class="card-body">
% if (config->{debug} == 1) {
<p>
%= dumper $c->current_route
%= dumper $bac_datas
</p>
<pre>
<%= dumper $c->current_route %>
<%= dumper $bac_datas %>
</pre>
% }
% if ( stash 'error' ) {
<br><div class="">
%= $c->render_to_string(inline => stash 'error')
<br>
<div class="text-danger">
<%= $c->render_to_string(inline => stash 'error') %>
</div>
%}
% }
<h1><%= $title%></h1>
%= form_for '/backupd' => (method => 'POST') => begin
<br>
<h2>
%=l 'bac_RESTORE_CONF_FROM_TAPE'
</h2>
%= $c->render_to_string(inline => (l 'bac_RESTORE_CONF_FROM_TAPE_DESC'))
<h2><%=l 'bac_RESTORE_CONF_FROM_TAPE' %></h2>
<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>
% end

View File

@@ -5,54 +5,71 @@
<div class="card-body">
% if (config->{debug} == 1) {
<p>
%= dumper $c->current_route
%= dumper $bac_datas
</p>
<pre>
<%= dumper $c->current_route %>
<%= dumper $bac_datas %>
</pre>
% }
% if ( stash 'error' ) {
<br><div class="">
%= $c->render_to_string(inline => stash 'error')
<br>
<div class="text-danger">
<%= $c->render_to_string(inline => stash 'error') %>
</div>
% }
<h1><%= $title%></h1>
<br>
<h2><%= l 'bac_CONFIGURE_WORKSTN_BACKUP' %></h2>
<br>
<div>
<%= $c->render_to_string(inline => (l 'bac_WORKSTN_BACKUP_DESC')) %>
</div>
%}
<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>
%= $c->render_to_string(inline => $c->workstnBackupConfig())
<form action="/smanager/backup" method="POST">
<p>
<h3>
%= l 'bac_WORKSTATION_BACKUP_SETCONF'
</h3>
<br>
<span class="">
%=l 'bac_SELECT_VFS_TYPE'
</span>
<span class="">
% param 'VFSType' => $bac_datas->{vfstype} unless param 'VFSType';
%= select_field 'VFSType' => $c->get_VFSType_options(), class => ""
</span>
</p>
<div>
<%= l 'bac_WORKSTN_BACKUP_ENABLED' %>: <%= $bac_datas->{status} %>
</div>
%= hidden_field 'Function' => $bac_datas->{'function'} . '1'
%= submit_button $c->l('NEXT'), class => ""
<br>
% end
<%= $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';
<%= select_field 'VFSType' => $c->get_VFSType_options(), class => "form-select" %>
</div>
</div>
<br>
<%= 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>

View File

@@ -5,169 +5,268 @@
<div class="card-body">
% if (config->{debug} == 1) {
<p>
%= dumper $c->current_route
%= dumper $bac_datas
</p>
<pre>
<%= dumper $c->current_route %>
<%= dumper $bac_datas %>
</pre>
% }
% if ( stash 'error' ) {
<br><div>
%= $c->render_to_string(inline => stash 'error')
</div>
%}
<br>
<div class="text-danger">
<%= $c->render_to_string(inline => stash 'error') %>
</div>
% }
<h1><%= $title%></h1>
<h2>
%=l 'bac_CONFIGURE_WORKSTN_BACKUP'
</h2>
%= $c->render_to_string(inline => (l 'bac_CONFIGURE_WORKSTN_BACKUP_DESC'))
%= form_for '/backupd' => (method => 'POST') => begin
<p>
<span class="">
%=l 'bac_ENABLE_WORKSTN_BACKUP'
</span>
<span class="">
% if ( $bac_datas->{status} eq 'checked' ) {
<input type='checkbox' name='Workstnbackup' checked >
%} else {
%= check_box 'Workstnbackup'
%}
</span>
</p>
<p>
<h3>
%= l 'bac_WORKSTATION_BACKUP_DEST'
</h3>
<br>
% if ( $bac_datas->{vfstype} =~ m/cifs|nfs/s ) {
<span class="">
%=l 'bac_WORKSTN_NAME'
</span>
<span class="">
% param 'BackupwkStation' => $bac_datas->{station} unless param 'BackupwkStation';
%= text_field 'BackupwkStation', size => 20, class => ""
</span>
<br>
%}
% if ( $bac_datas->{vfstype} eq 'usb' ) {
<span class="">
%=l 'bac_local removable disk'
</span>
<span class="">
% param 'BackupwkFolder' => $bac_datas->{mount} unless param 'BackupwkFolder';
%= select_field 'BackupwkFolder' => $c->get_BackupwkDest_options( $bac_datas->{vfstype}), class => ""
</span>
<br>
% } elsif ( $bac_datas->{vfstype} eq 'mnt') {
<span class="">
%=l 'bac_Mounted disk'
</span>
<span class="">
% param 'BackupwkFolder' => $bac_datas->{folder} unless param 'BackupwkFolder';
%= select_field 'BackupwkFolder' => $c->get_BackupwkDest_options( $bac_datas->{vfstype}), class => ""
</span>
<br>
% } else {
<span class="">
%=l 'bac_SHARED_FOLDER_NAME'
</span><span class="">
% param 'BackupwkFolder' => $bac_datas->{folder} unless param 'BackupwkFolder';
%= text_field 'BackupwkFolder', size => 20, class => ""
</span>
<br>
%}
% if ( $bac_datas->{vfstype} eq 'cifs' ) {
<span class="">
%=l 'bac_WORKSTN_LOGIN'
</span><span class="">
% param 'BackupwkLogin' => $bac_datas->{login} unless param 'BackupwkLogin';
%= text_field 'BackupwkLogin', size => 12, class => ""
</span>
<br>
<span class="">
%=l 'bac_PASSWORD'
</span><span class="">
% param 'BackupwkPassword' => $bac_datas->{password} unless param 'BackupwkPassword';
%= password_field 'BackupwkPassword', size => 12, class => ""
</span>
%}
</p><br><h3>
%= l 'bac_WORKSTN_BACKUP_SETTINGS'
</h3><br>
<h2><%= l 'bac_CONFIGURE_WORKSTN_BACKUP' %></h2>
<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>
<div>
<%= $c->render_to_string(inline => (l 'bac_CONFIGURE_WORKSTN_BACKUP_DESC')) %>
<div>
<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' ) {
<input type='checkbox' name='Workstnbackup' aria-describedby="enabled" checked >
% } else {
<input type='checkbox' name='Workstnbackup' aria-describedby="disabled">
% }
</div>
</div>
</p>
<p>
<h3>
%= l 'bac_WORKSTATION_BACKUP_DEST'
</h3>
<br>
% if ( $bac_datas->{vfstype} =~ m/cifs|nfs/s ) {
<div class="row g-3 align-items-center">
<div class="col-md-2">
<label for="inputBackupWorkStationName" class="col-form-label"><%= l 'bac_WORKSTN_NAME' %></label>
</div>
<div class="col-auto">
% param 'BackupwkStation' => $bac_datas->{station} unless param 'BackupwkStation';
<input type="text" name="BackupwkStation" id="inputBackupWorkStationName" class="form-control"
size="20" aria-describedby="Workstation Name" value="<%= $bac_datas->{station} %>">
</div>
</div>
<br>
% }
% if ( $bac_datas->{vfstype} eq 'usb' ) {
<div class="row g-3 align-items-center">
<div class="col-md-2">
<%= l 'bac_local removable disk' %>
</div>
<div class="col-auto">
% param 'BackupwkFolder' => $bac_datas->{mount} unless param 'BackupwkFolder';
<%= select_field 'BackupwkFolder' => $c->get_BackupwkDest_options( $bac_datas->{vfstype}), class => "form-select" %>
</div>
</div>
<br>
% } elsif ( $bac_datas->{vfstype} eq 'mnt') {
<div class="row g-3 align-items-center">
<div class="col-md-2">
<%= l 'bac_Mounted disk' %>
</div>
<div class="col-auto">
% param 'BackupwkFolder' => $bac_datas->{folder} unless param 'BackupwkFolder';
<%= select_field 'BackupwkFolder' => $c->get_BackupwkDest_options( $bac_datas->{vfstype}), class => "form-select" %>
</div>
</div>
<br>
% } else {
<div class="row g-3 align-items-center">
<div class="col-md-2">
<label for="inputBackupSharedFolderName" class="col-form-label"><%= l 'bac_SHARED_FOLDER_NAME' %></label>
</div>
<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>
% }
% if ( $bac_datas->{vfstype} eq 'cifs' ) {
<div class="row g-3 align-items-center">
<div class="col-md-2">
<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';
<input type="text" name="BackupwkLogin" id="inputBackupWorkLogin" class="form-control"
size="12" aria-describedby="Backup Workstation Login" value="<%= $bac_datas->{login} %>">
</div>
</div>
<br>
<div class="row g-3 align-items-center">
<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';
<input type="password" name="BackupwkPassword" id="password" class="form-control" size="12" aria-describedby="Backup Workstation Password" value="<%= $bac_datas->{password} %>">
</div>
<div class="col-auto">
<span id="togglePassword" class="bi bi-eye"></span>
</div>
</div>
% }
<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 'VFSType' => $bac_datas->{vfstype}
% 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('NEXT')%>"><%= $btn %></button>
</div>
</div>
<br>
</form>
%= hidden_field 'Function' => $bac_datas->{function}
%= hidden_field 'VFSType' => $bac_datas->{vfstype}
%= submit_button $c->l('bac_UPDATE_CONF'), class => ""
% end
</div>
% end

View File

@@ -5,42 +5,64 @@
<div class="card-body">
% if (config->{debug} == 1) {
<p>
%= dumper $c->current_route
%= dumper $bac_datas
</p>
<pre>
<%= dumper $c->current_route %>
<%= dumper $bac_datas %>
</pre>
% }
% if ( stash 'error' ) {
<br><div class="">
%= $c->render_to_string(inline => stash 'error')
</div>
%}
<br>
<div class="text-danger">
<%= $c->render_to_string(inline => stash 'error') %>
</div>
% }
<h1><%= $title%></h1>
%= form_for '/backupd' => (method => 'POST') => begin
<br>
<h2>
%=l 'bac_WORKSTN_RESTORE'
</h2>
<h2><%= l 'bac_WORKSTN_RESTORE' %></h2>
<br><br>
% if ($bac_datas->{status} ne 'enabled') {
%= $c->render_to_string(inline => (l 'bac_CONFIGURATION_TO_BE_DONE'))
% } else {
%= $c->render_to_string(inline => (l 'bac_RESTORE_CONF_FROM_WORKSTN_DESC') . ' ' . $c->get_shared_folder_to_verify())
%}
<br>
<br><br><span class="">
%=l 'bac_SELECT_BACKUP_FILE'
</span>
<span class="">
%= select_field 'Backupset' => $c->get_Backupset_options(), class => ""
</span><br><br>
<form action="/smanager/backupd" method="POST">
% if ($bac_datas->{status} ne 'enabled') {
<div>
<%= $c->render_to_string(inline => (l 'bac_CONFIGURATION_TO_BE_DONE')) %>
</div>
% } else {
<div>
<%= $c->render_to_string(inline => (l 'bac_RESTORE_CONF_FROM_WORKSTN_DESC') . ' ' . $c->get_shared_folder_to_verify()) %>
</div>
% }
<br><br>
<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_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>
% end

View File

@@ -5,33 +5,49 @@
<div class="card-body">
% if (config->{debug} == 1) {
<p>
%= dumper $c->current_route
%= dumper $bac_datas
</p>
<pre>
<%= dumper $c->current_route %>
<%= dumper $bac_datas %>
</pre>
% }
% if ( stash 'error' ) {
<br><div class="">
%= $c->render_to_string(inline => stash 'error')
</div>
%}
<br>
<div class="text-danger">
<%= $c->render_to_string(inline => stash 'error') %>
</div>
% }
<h1><%= $title%></h1>
%= form_for '/backupd' => (method => 'POST') => begin
<br>
<h2><%= l 'bac_WORKSTN_RESTORE' %></h2>
<br>
<form action="/smanager/backupd" method="POST">
<div>
<%= $c->render_to_string(inline => $bac_datas->{restore_log}) %>
</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>
<h2>
%=l 'bac_WORKSTN_RESTORE'
</h2>
<p>
%= $c->render_to_string(inline => $bac_datas->{restore_log})
</p><p>
%=l 'bac_YOU_MUST_REBOOT'
</p>
%= hidden_field 'Function' => $bac_datas->{'function'}
%= submit_button $c->l('bac_REBOOT'), class => ""
% end
</div>
% end

View File

@@ -5,49 +5,73 @@
<div class="card-body">
% if (config->{debug} == 1) {
<p>
%= dumper $c->current_route
%= dumper $bac_datas
</p>
<pre>
<%= dumper $c->current_route %>
<%= dumper $bac_datas %>
</pre>
% }
% if ( stash 'error' ) {
<br><div class="">
%= $c->render_to_string(inline => stash 'error')
<br><div class="text-danger">
<%= $c->render_to_string(inline => stash 'error') %>
</div>
%}
% }
<h1><%= $title%></h1>
%= form_for '/backupd' => (method => 'POST') => begin
<br>
<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>
<h3><%=l 'bac_BACKUP_CHOICE' %></h3>
<form action="/smanager/backupd" method="POST">
<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 => ""
<div>
<%= $c->render_to_string(inline => (l 'bac_WORKSTN_SEL_REST_DESC') . ' ' . $c->get_shared_folder_to_verify()) %>
</div>
% end
<br>
<h3><%= l 'bac_BACKUP_CHOICE' %></h3>
<br>
<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>

View File

@@ -5,51 +5,71 @@
<div class="card-body">
% if (config->{debug} == 1) {
<p>
%= dumper $c->current_route
%= dumper $bac_datas
</p>
<pre>
<%= dumper $c->current_route %>
<%= dumper $bac_datas %>
</pre>
% }
% if ( stash 'error' ) {
<br><div class="">
%= $c->render_to_string(inline => stash 'error')
</div>
%}
<br>
<div class="text-danger">
<%= $c->render_to_string(inline => stash 'error') %>
</div>
% }
<h1><%= $title%></h1>
<br>
<h2><%=l 'bac_WORKSTN_SELECTIVE_RESTORE' %></h2>
<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>
<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 'Backupset' => $bac_datas->{'backupset'}
%= hidden_field 'Filterexp' => $bac_datas->{'filterexp'}
<form action="/smanager/backupd" method="POST">
%= submit_button $c->l('PERFORM'), class => ""
<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>
% end
<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>
%= hidden_field 'Function' => $bac_datas->{'function'}
%= hidden_field 'Backupset' => $bac_datas->{'backupset'}
%= hidden_field 'Filterexp' => $bac_datas->{'filterexp'}
% 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>
% end

View File

@@ -5,30 +5,44 @@
<div class="card-body">
% if (config->{debug} == 1) {
<p>
%= dumper $c->current_route
%= dumper $bac_datas
</p>
<pre>
<%= dumper $c->current_route %>
<%= dumper $bac_datas %>
</pre>
% }
% if ( stash 'error' ) {
<br>
<div class="">
%= $c->render_to_string(inline => stash 'error')
<div class="text-danger">
<%= $c->render_to_string(inline => stash 'error') %>
</div>
%}
% }
<h1><%= $title%></h1>
<br>
<h2><%=l 'bac_WORKSTN_SELECTIVE_RESTORE' %></h2>
<br>
%= $c->render_to_string(inline => $bac_datas->{restore_log})
<br>
%= form_for '/backupd' => (method => 'POST') => begin
%= hidden_field 'Function' => $bac_datas->{'function'}
%= submit_button $c->l('NEXT'), class => ""
<form action="/smanager/backupd" method="POST">
% 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>
% end

View File

@@ -4,59 +4,75 @@
<div class="card-body">
% if (config->{debug} == 1) {
<p>
%= dumper $c->current_route
%= dumper $bac_datas
</p>
<pre>
<%= dumper $c->current_route %>
<%= dumper $bac_datas %>
</pre>
% }
% if ( stash 'error' ) {
<br>
<div class="">
%= $c->render_to_string(inline => stash 'error')
</div>
%}
<br><div class="text-danger">
<%= $c->render_to_string(inline => stash 'error') %>
</div>
% }
<h1><%= $title%></h1>
<h2>
%=l 'bac_VERIFY_WORKSTN_BACKUP_FILE'
</h2>
%= form_for '/backup' => (method => 'POST') => begin
% if ($bac_datas->{status} ne 'enabled') {
%= $c->render_to_string(inline => (l 'bac_CONFIGURATION_TO_BE_DONE'))
% } else {
%= $c->render_to_string(inline => (l 'bac_VERIFY_WORKSTN_BACKUP_DESC') . ' ' . $c->get_shared_folder_to_verify())
%}
<br>
<br>
<span class="">
%=l 'bac_SELECT_BACKUP_FILE'
</span>
<span class="">
%= select_field 'Backupset' => $c->get_Backupset_options(), class => ""
</span>
<br>
<p>
<span class="">
%=l 'bac_CHECK_TO_VERIFY_FULL_RESTORE'
</span>
<span class="">
%= check_box 'Verifyall'
</span>
</p>
<br>
<h2><%=l 'bac_VERIFY_WORKSTN_BACKUP_FILE' %></h2>
%=l 'bac_CHECK_INTEGRITY_WARNING'
<form action="/smanager/backup" method="POST">
<br>
<br>
%= hidden_field 'Function' => $bac_datas->{'function'} . '1'
%= submit_button $c->l('bac_VERIFY'), class => ""
<br>
% end
% if ($bac_datas->{status} ne 'enabled') {
<div>
<%= $c->render_to_string(inline => (l 'bac_CONFIGURATION_TO_BE_DONE')) %>
</div>
% } else {
<div>
<%= $c->render_to_string(inline => (l 'bac_VERIFY_WORKSTN_BACKUP_DESC') . ' ' . $c->get_shared_folder_to_verify()) %>
</div>
% }
<br><br>
<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_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>
%=l 'bac_CHECK_INTEGRITY_WARNING'
<br>
<br>
%= hidden_field 'Function' => $bac_datas->{'function'} . '1'
% 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>
% end

View File

@@ -4,34 +4,47 @@
<div class="card-body">
% if (config->{debug} == 1) {
<p>
%= dumper $c->current_route
%= dumper $bac_datas->{function}
<!-- dumper $bac_datas->{'files_list'} -->
</p>
<pre>
<%= dumper $c->current_route %>
<%= dumper $bac_datas->{function} %>
<!-- dumper $bac_datas->{'files_list'} -->
</pre>
% }
% if ( stash 'error' ) {
<br>
<div class="">
%= $c->render_to_string(inline => stash 'error')
<div class="text-danger">
<%= $c->render_to_string(inline => stash 'error') %>
</div>
%}
% }
<h1><%= $title%></h1>
<br>
<h2><%= l 'bac_VERIFY_WORKSTN_BACKUP_FILE' %></h2>
<br>
%= $c->render_to_string(inline => $c->workstnVerify())
<div>
<%= $c->render_to_string(inline => $c->workstnVerify()) %>
</div>
<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>
% end

View File

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

View File

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

View File

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

View File

@@ -6,8 +6,8 @@
% if (config->{debug} == 1) {
<pre>
<<%= dumper $c->current_route %>
<<%= dumper $mai_datas %>
<%= dumper $c->current_route %>
<%= dumper $mai_datas %>
</pre>
% }
@@ -15,11 +15,11 @@
% if ( stash 'error' ) {
<br>
<div class="text-danger">
<%= $c->render_to_string(inline => stash 'error') %>
<%= $c->render_to_string(inline => stash 'error') %>
</div>
% }
<h1><%= $title %></h1>
<h1><%= $title %></h1>
<br>
@@ -135,14 +135,8 @@
</div>
</div>
<br>
% my $btn = l('SAVE');
<%= hidden_field 'trt' => 'DEL' %>

View File

@@ -24,8 +24,8 @@
%}
<h1><%= $title%></h1>
<br>
<br>
<form action="/smanager/emailsettings" method="POST">

View File

@@ -2,11 +2,11 @@
% content_for 'module' => begin
% if ( config 'debug' ) {
% if (config->{debug} == 1) {
<div>
<!-- %= dumper $c->current_route -->
<%= dumper $c->current_route %>
% if ( stash 'trt' ) {
%= dumper stash 'trt'
<%= dumper stash 'trt' %>
% }
</div>
% }
@@ -67,7 +67,7 @@
<div class="input-group mb-1">
<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>
</div>
<div class="input-group-text">

View File

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

View File

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

View File

@@ -28,7 +28,7 @@
%}
<br />
% 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) {
<div>

View File

@@ -1,29 +1,28 @@
<div>
% my $btn = l('ln_LOCALNETWORK_ADD');
<form action="/smanager/localnetworksa" method="POST">
<br>
% my $retref= $c->stash("ret");
% my $retref = $c->stash("ret");
% my %ret;
% unless (length($retref)) {%ret = (ret=>"");}
% else {%ret = %$retref;}
% if (config->{debug} == 1) {
<div>
%= dumper "Ret:".$ret{ret};
</div>
% }
<!-- So at this point the next section is only relevant it ret is not defined -->
% 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];
%# my $element_count = scalar(@ret);
%# if (length $element_count == 0) {
% 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 "") {
<%= l "ln_FIRSTPAGE_DESC" %>
@@ -42,59 +41,62 @@
<br><br>
% my $btn = l('ln_LOCALNETWORK_ADD');
<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>
<br>
% my $numlocalnetworks = @$localnetworks;
% if ($numlocalnetworks == 0) {
<%= l 'ln_LOCAL_NETWORK_NONE' %>
% } else {
<br>
<table class="table table-bordered">
<thead>
<tr>
<th><%= l 'NETWORK' %></th>
<th><%= l 'ln_SUBNET_MASK' %></th>
<th><%= l 'ln_NUMBER_OF_HOSTS' %></th>
<th><%= l 'ROUTER' %></th>
<th><%= l 'ACTION' %></th>
</tr>
</thead>
<tbody>
% foreach my $localnetwork (@$localnetworks ) {
% my ($num_hosts) = esmith::util::computeHostRange( $localnetwork->key, $localnetwork->prop('Mask') );
% my $removable = $localnetwork->prop('Removable') || "yes";
% my $system = $localnetwork->prop('SystemLocalNetwork') || "no";
% if ( $system eq "yes" ) { $removable = "no"; }
<tr>
<td><%= $localnetwork->key %>
<td><%= $localnetwork->prop('Mask') %>
<td><%= $num_hosts %>
<td><%= $localnetwork->prop('Router') %>
% my $actionRemove = '&nbsp;';
% if ($removable eq "yes") {
%my $remove_text = l('REMOVE'); # Localized text
%my $local_network_entry = $localnetwork->key;
%my $csrf_token = "TOKEN"; # CSRF token for security
%$actionRemove = qq{
% <a href="localnetworksd?CsrfDef=$csrf_token&trt=DEL&localnetwork=$local_network_entry">
% <button type='button' class="btn btn-primary" title='$remove_text' >
% $remove_text
% </button>
% </a>
%};
% }
<td><%= $c->render_to_string(inline => $actionRemove) %></td>
</tr>
% }
</tbody>
</table>
<%= hidden_field 'trt' => $ln_datas->{trt} %>
% }
% my $numlocalnetworks = @$localnetworks;
% if ($numlocalnetworks == 0) {
<%= l 'ln_LOCAL_NETWORK_NONE' %>
% } else {
<br>
<table class="table table-bordered">
<thead>
<tr>
<th><%= l 'NETWORK' %></th>
<th><%= l 'ln_SUBNET_MASK' %></th>
<th><%= l 'ln_NUMBER_OF_HOSTS' %></th>
<th><%= l 'ROUTER' %></th>
<th><%= l 'ACTION' %></th>
</tr>
</thead>
<tbody>
% foreach my $localnetwork (@$localnetworks ) {
% my ($num_hosts) = esmith::util::computeHostRange( $localnetwork->key, $localnetwork->prop('Mask') );
% my $removable = $localnetwork->prop('Removable') || "yes";
% my $system = $localnetwork->prop('SystemLocalNetwork') || "no";
% if ( $system eq "yes" ) { $removable = "no"; }
<tr class="align-middle">
<td><%= $localnetwork->key %></td>
<td><%= $localnetwork->prop('Mask') %></td>
<td><%= $num_hosts %></td>
<td><%= $localnetwork->prop('Router') %></td>
% my $actionRemove = '&nbsp;';
% if ($removable eq "yes") {
%my $remove_text = l('REMOVE'); # Localized text
%my $local_network_entry = $localnetwork->key;
%my $csrf_token = "TOKEN"; # CSRF token for security
%$actionRemove = qq{
% <a href="localnetworksd?CsrfDef=$csrf_token&trt=DEL&localnetwork=$local_network_entry">
% <button type='button' class="btn btn-primary" title='$remove_text' >
% $remove_text
% </button>
% </a>
%};
% }
<td><%= $c->render_to_string(inline => $actionRemove) %></td>
</tr>
% }
</tbody>
</table>
<%= hidden_field 'trt' => $ln_datas->{trt} %>
% }
</form>
</div>

View File

@@ -1,51 +1,61 @@
<div>
% my $btn = l('ADD');
<h2><%=l 'prt_CREATE_NEW_PRINTER' %></h2>
%= form_for '/printers2' => (method => 'POST') => begin
<p>
<h2>
%=l 'prt_CREATE_NEW_PRINTER'
</h2>
<br>
%=l 'prt_CREATE_NEW_DESC'
</p>
<br>
<p>
<span class="">
%=l 'prt_PRINTER_NAME', class => ""
</span>
<span class="">
%= text_field 'Name', class => ""
</span>
</p>
<form action="/smanager/printers2" method="POST">
<p>
<span class="">
%=l 'DESCRIPTION_BRIEF', class => ""
</span>
<span class="">
%= text_field 'Description', class => ""
</span>
</p>
<br>
<p>
<span class="">
%=l 'LOCATION', class => ""
</span>
<span class="">
%= select_field 'Location' => $c->printerLocation_list(), class => ""
</span>
</p>
<div>
<%= l 'prt_CREATE_NEW_DESC' %>
</div>
<p>
<br><br>
%= submit_button "$btn", class => ""
</p>
<br>
%= hidden_field 'trt' => $prt_datas->{trt}
% end
<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');
<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>

View File

@@ -1,30 +1,38 @@
<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}%>
(<%=$prt_datas->{description}%>)
<h2><%= l 'prt_REMOVE_PRINTER' %></h2>
<form action="/smanager/printers2" method="POST">
<br>
%=l 'prt_SPOOL_FILE_WARNING'
<div>
<%= l 'prt_ABOUT_TO_REMOVE'%> <%=$prt_datas->{printer}%> (<%=$prt_datas->{description}%>)
</div>
<br>
%=l 'prt_ARE_YOU_SURE'
</p>
<div class="text-danger">
<%= l 'prt_SPOOL_FILE_WARNING' %>
</div>
<p>
<br>
%= submit_button "$btn", class => ""
</p>
<div>
<%= l 'prt_ARE_YOU_SURE' %>
</div>
<br>
%= hidden_field 'trt' => $prt_datas->{trt}
%= 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>

View File

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

View File

@@ -4,13 +4,24 @@
<%= $modul %>
% if (config->{debug} == 1) {
<pre>
<%= dumper $c->current_route %>
<%= dumper $userAccounts %>
</pre>
% }
<h2><%= l 'quo_CURRENT_USAGE_AND_SETTINGS' %></h2>
<br>
% my $numUsers = @$userAccounts;
% if ($numUsers == 0){
<%= l 'ACCOUNT_USER_NONE' %>
<div>
<%= l 'ACCOUNT_USER_NONE' %>
</div>
% } else {
% my $limit = l('quo_LIMIT_WITH_GRACE_MB'); $limit =~ s#(graceX)#<br>$1#;
@@ -32,14 +43,21 @@
<tbody>
% foreach my $user (@$userAccounts) {
% my $uid = getpwnam($user->key);
% unless ($uid) {
% warn($self->localise('COULD_NOT_GET_UID'),$user->key);
% next;
% }
% my $name = $user->prop("FirstName")." ".$user->prop("LastName");
% my $dev = Quota::getqcarg('/home/e-smith/files');
% my ($bc, $bs, $bh, $bt, $ic, $is, $ih, $it) = Quota::query($dev, $uid);
% my $uid = getpwnam($user->key);
% if (config->{debug} == 1) {
UID <%= l 'quo_COULD_NOT_GET_UID' %> <%= dumper $user->key %><br>
% }
<br>
% unless ($uid) {
% warn (l 'quo_COULD_NOT_GET_UID', $user->key);
% next;
% }
% my $name = $user->prop("FirstName")." ".$user->prop("LastName");
% my $dev = Quota::getqcarg('/home/e-smith/files');
% my ($bc, $bs, $bh, $bt, $ic, $is, $ih, $it) = Quota::query($dev, $uid);
<tr>
<td><%= $user->key %></td>

View File

@@ -22,7 +22,7 @@
<div class="table-responsive">
<table class="table table-bordered">
<thead>
<tr class="">
<tr>
<th><%=l 'ACCOUNT' %></th>
<th><%=l 'USER_NAME' %></th>
<th><%=l 'usr_VPN_CLIENT_ACCESS' %></th>
@@ -54,7 +54,7 @@
% my ($actionModify, $actionLock, $actionResetPw, $actionRemove,$actionroundcube) = '&nbsp;';
% my $thisdomain = $c->req->url->to_abs->host;
<tr>
<tr class="align-middle">
<td><%= $username %></td>
<td><%= $first %>&nbsp<%=$last %></td>
<td><%= $vpnaccess %></td>

View File

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

View File

@@ -1,20 +1,20 @@
<div class="container-sm">
<div>
<br>
<h2><%= l 'usr_P2_TITLE' %></h2>
<br>
<%= $c->render_to_string(inline => l ('usr_CREATE_MODIFY_DESC')) %>
<br><br>
% my $btn = l('ADD');
% my $btn = l('ADD');
<form action="/smanager/useraccountsd" method="POST">
%#= form_for '/useraccountsd' => (method => 'POST') => begin
% if ( $usr_datas->{trt} eq 'ADD' ) {
% param 'user' => $usr_datas->{user} unless param 'user';
<div class="row g-3 align-items-center">
<div class="col-md-2">
<label for="inputAccountName" class="col-form-label"><%= l 'usr_ACCOUNT_NAME' %></label>
@@ -28,7 +28,7 @@
</span>
</div>
</div>
% } else {
<!-- If not user set Button Save not Add -->
% $btn = l('SAVE');
@@ -40,12 +40,12 @@
<div class="col-auto">
<input disabled type="text" id="disabledTextInput" class="form-control" placeholder="<%= $usr_datas->{user} %>">
</div>
</div>
% }
<br>
<div class="row g-3 align-items-center">
<div class="col-md-2">
<label for="inputFirstName" class="col-form-label"><%= l 'usr_FIRSTNAME' %></label>
@@ -60,9 +60,9 @@
</div>
</div>
<br>
% param 'LastName' => $usr_datas->{lastname} unless param 'LastName';
<div class="row g-3 align-items-center">
<div class="col-md-2">
<label for="inputLastNAme" class="col-form-label"><%= l 'usr_LASTNAME' %></label>
@@ -77,10 +77,10 @@
</div>
</div>
<br>
% param 'Dept' => $usr_datas->{dept} unless param 'Dept';
<div class="row g-3 align-items-center">
<div class="col-md-2">
<label for="inputDepartment" class="col-form-label"><%= l 'usr_DEPARTMENT' %></label>
@@ -95,10 +95,10 @@
</div>
</div>
<br>
% param 'Company' => $usr_datas->{company} unless param 'Company';
<div class="row g-3 align-items-center">
<div class="col-md-2">
<label for="inputCompany" class="col-form-label"><%= l 'usr_COMPANY' %></label>
@@ -113,10 +113,10 @@
</div>
</div>
<br>
% param 'Street' => $usr_datas->{street} unless param 'Street';
<div class="row g-3 align-items-center">
<div class="col-md-2">
<label for="inputStreet" class="col-form-label"><%= l 'usr_STREET_ADDRESS' %></label>
@@ -131,9 +131,9 @@
</div>
</div>
<br>
% param 'City' => $usr_datas->{city} unless param 'City';
<div class="row g-3 align-items-center">
<div class="col-md-2">
<label for="inputCity" class="col-form-label"><%= l 'usr_CITY' %></label>
@@ -148,9 +148,9 @@
</div>
</div>
<br>
% param 'Phone' => $usr_datas->{phone} unless param 'Phone';
<div class="row g-3 align-items-center">
<div class="col-md-2">
<label for="inputPhone" class="col-form-label"><%= l 'usr_PHONE_NUMBER' %></label>
@@ -165,9 +165,9 @@
</div>
</div>
<br>
% param 'EmailForward' => $usr_datas->{emailforward} unless param 'EmailForward';
<div class="row g-3 align-items-center">
<div class="col-md-2">
<label for="inputEmailDelivery" class="col-form-label"><%= l 'usr_EMAIL_DELIVERY' %></label>
@@ -177,9 +177,9 @@
</div>
</div>
<br>
% param 'ForwardAddress' => $usr_datas->{forwardaddress} unless param 'ForwardAddress';
<div class="row g-3 align-items-center">
<div class="col-md-2">
<label for="inputEmail" class="col-form-label"><%= l 'usr_FORWARDING_ADDRESS' %></label>
@@ -194,10 +194,10 @@
</div>
</div>
<br>
% param 'VPNClientAccess' => $usr_datas->{vpnclientaccess} unless param 'VPNClientAccess';
<div class="row g-3 align-items-center">
<div class="col-md-2">
<label for="inputVPNClientAccess" class="col-form-label"><%= l 'usr_VPN_CLIENT_ACCESS' %></label>
@@ -207,10 +207,10 @@
</div>
</div>
<br>
<!-- fix from here -->
<!-- Begin if ipsec needs fixing -->
% if ( $usr_datas->{trt} eq 'UPD' and $c->ipsec_for_acct eq 'OK' ) {
% my $btn2 = $c->l('DOWNLOAD');
@@ -222,22 +222,22 @@
% end
% }
<!-- End if ipsec -->
<!-- Groups begin -->
<div>
% my @groups = @{$c->get_groups()};
%#= dumper @groups
% if ( @groups ) {
<br><br>
%=l 'usr_GROUP_MEMBERSHIPS'
<br><br>
<table class="table table-bordered user-table-max-wdith">
<thead>
<tr>
@@ -247,7 +247,7 @@
</tr>
</thead>
<tbody>
% foreach my $g ( @groups) {
% my $user = $usr_datas->{user};
% my $groupname = $g->key();
@@ -256,7 +256,7 @@
% if ( $user and $c->is_user_in_group($user, $groupname) ) {
% $checked = 'checked';
% }
<tr>
<td>
% if ( $checked eq 'checked' ) {
@@ -269,26 +269,26 @@
<td><%= $description %></td>
</tr>
% }
</tbody>
</table>
% }
<!-- Groups End -->
</div>
<div class="row g-3 align-items-center">
<div class="col-md-2">
<button type="submit" class="btn btn-primary"><%= $btn %></button>
</div>
</div>
%= hidden_field 'trt' => $usr_datas->{trt}
% if ( $usr_datas->{trt} eq 'UPD' ) {
%= hidden_field 'user' => $usr_datas->{user}
% }
</form>
%#end
</div>

View File

@@ -1,13 +1,12 @@
% content_for 'module' => begin
<div class="container-sm">
<br>
<h2><%= l 'usr_MODIFY_ADMIN_TITLE' %></h2>
<br><br>
<h2><%= l 'usr_MODIFY_ADMIN_TITLE' %></h2>
<div>
<br><br>
<form action="/smanager/useraccountsd" method="POST">
%#= form_for '/useraccountsd' => (method => 'POST') => begin
<div class="row g-3 align-items-center">
<div class="col-md-2">
@@ -17,10 +16,11 @@
<input disabled type="text" id="disabledTextInput" class="form-control" placeholder="<%= $usr_datas->{user} %>">
</div>
</div>
<br>
% param 'FirstName' => $usr_datas->{firstname} unless param 'FirstName';
<div class="row g-3 align-items-center">
<div class="col-md-2">
<label for="inputFirstName" class="col-form-label"><%= l 'usr_FIRSTNAME' %></label>
@@ -35,9 +35,9 @@
</div>
</div>
<br>
% param 'LastName' => $usr_datas->{lastname} unless param 'LastName';
<div class="row g-3 align-items-center">
<div class="col-md-2">
<label for="inputLastNAme" class="col-form-label"><%= l 'usr_LASTNAME' %></label>
@@ -51,22 +51,24 @@
</span>
</div>
</div>
<br>
% param 'EmailForward' => $usr_datas->{emailforward} unless param 'EmailForward';
<div class="row g-3 align-items-center">
<div class="col-md-2">
<label for="inputEmailDelivery" class="col-form-label"><%= l 'usr_EMAIL_DELIVERY' %></label>
</div>
<div class="col-auto">
%= select_field 'EmailForward' => $c->emailForward_list(), class => "form-select"
<%= select_field 'EmailForward' => $c->emailForward_list(), class => "form-select" %>
</div>
</div>
<br>
% param 'ForwardAddress' => $usr_datas->{forwardaddress} unless param 'ForwardAddress';
<div class="row g-3 align-items-center">
<div class="col-md-2">
<label for="inputEmail" class="col-form-label"><%= l 'usr_FORWARDING_ADDRESS' %></label>
@@ -80,21 +82,26 @@
</span>
</div>
</div>
<br>
% param 'VPNClientAccess' => $usr_datas->{vpnclientaccess} unless param 'VPNClientAccess';
<div class="row g-3 align-items-center">
<div class="col-md-2">
<label for="inputVPNClientAccess" class="col-form-label"><%= l 'usr_VPN_CLIENT_ACCESS' %></label>
</div>
<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>
<br>
</div>
<br>
% 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="col-md-2">
@@ -103,13 +110,6 @@
</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>
</div>

View File

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

View File

@@ -5,56 +5,72 @@
<div class="card-body">
% if (config->{debug} == 1) {
<div>
(DBG)route: <%= $c->current_route %><br>
(DBG)ht stat: <%= $prx_datas->{http_proxy_status}%> <br>
(DBG)sm stat: <%=$prx_datas->{smtp_proxy_status} %>
</div>
<pre>
<%= dumper $c->current_route %>
<%= dumper $prx_datas->{http_proxy_status} %>
<%= dumper $prx_datas->{smtp_proxy_status} %>
</pre>
% }
<h1><%= $title %></h1>
<br>
<%= $modul %>
<% my $btn = l('SAVE'); %>
<form action="/smanager/hostentriesd" method="POST">
<br>
<div>
<div>
<%=l 'prx_HTTP_PROXY_STATUS_DESCRIPTION' %>
<%=l 'prx_HTTP_PROXY_STATUS_DESCRIPTION' %>
</div>
<br><br>
<br>
<div>
<%=l 'prx_HTTP_PROXY_STATUS_LABEL' %>
</div>
<div>
<div class="row g-3 align-items-center">
<div class="col-md-2">
<%=l 'prx_HTTP_PROXY_STATUS_LABEL' %>
</div>
<div class="col-auto">
% param 'http_proxy_status' => $prx_datas->{http_proxy_status} unless param 'http_proxy_status';
<%= select_field 'http_proxy_status' => [[ (l 'ENABLED') => 'enabled'], [ (l 'DISABLED') => 'disabled']] %>
</div>
<%= select_field 'http_proxy_status' => [[ (l 'ENABLED') => 'enabled'], [ (l 'DISABLED') => 'disabled']], class => "form-select" %>
</div>
</div>
% if ( $prx_datas->{smtp_proxy_status} ) {
<br>
<div>
<%=l 'prx_SMTP_PROXY_STATUS_DESCRIPTION' %>
</div>
% if ( $prx_datas->{smtp_proxy_status} ) {
<div>
<%=l 'prx_SMTP_PROXY_STATUS_DESCRIPTION' %>
<br><br>
<div>
<%=l 'prx_SMTP_PROXY_STATUS_LABEL' %>
</div>
<div>
% param 'smtp_proxy_status' => $prx_datas->{smtp_proxy_status} unless param 'smtp_proxy_status';
<%= select_field 'smtp_proxy_status' => [[ (l 'ENABLED') => 'transparent'], [ (l 'DISABLED') => 'disabled'], [ (l 'prx_BLOCKED') => 'blocked']], default => $prx_datas->{smtp_proxy_status} %>
<br><br>
</div>
% }
<br>
<div class="row g-3 align-items-center">
<div class="col-md-2">
<button type="submit" class="btn btn-primary"><%= $btn %></button>
<%=l 'prx_SMTP_PROXY_STATUS_LABEL' %>
</div>
<div class="col-auto">
% param 'smtp_proxy_status' => $prx_datas->{smtp_proxy_status} unless param 'smtp_proxy_status';
<%= select_field 'smtp_proxy_status' => [[ (l 'ENABLED') => 'transparent'], [ (l 'DISABLED') => 'disabled'], [ (l 'prx_BLOCKED') => 'blocked']], default => $prx_datas->{smtp_proxy_status} , class => "form-select" %>
</div>
</div>
% }
<br>
% my $btn = l('SAVE');
<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>

View File

@@ -4,37 +4,46 @@
<div class="card-body">
%if (config->{debug} == 1) {
<p>
(DBG)route: <%= $c->current_route %><br>
</p>
%}
% if (config->{debug} == 1) {
<pre>
<%= dumper $c->current_route %>
</pre>
% }
<h1><%= $title %></h1>
<h1><%= $title %></h1>
<br>
%= $modul
<%= $modul %>
<% my $btn = l('PERFORM'); %>
%= form_for 'reboot' => (method => 'POST') => begin
<form action="/smanager/reboot" method="POST">
<p>
%= $c->render_to_string(inline => $c->l('rbo_DESCRIPTION'))
<br><br>
<div class="col-md-6">
<%= $c->render_to_string(inline => $c->l('rbo_DESCRIPTION')) %>
</div>
<span class="">
%=l 'rbo_LABEL_REBOOT'
</span>
<span class="">
%= select_field 'function' => $c->rebootFunction_list()
</span>
</p><br>
<br>
%= submit_button "$btn", class => ""
<div class="row g-3 align-items-center">
<div class="col-md-2">
<%= l 'rbo_LABEL_REBOOT' %>
</div>
<div class="col-auto">
<%= select_field 'function' => $c->rebootFunction_list(), class => "form-select" %>
</div>
</div>
% end
<br>
%= hidden_field 'debug' => '1'
% my $btn = l('PERFORM');
<%= hidden_field 'debug' => '1' %>
<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

View File

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

View File

@@ -6,36 +6,62 @@
<div class="card-body">
% if (config->{debug} == 1) {
<p>
%= dumper $c->current_route
</p>
<pre>
<%= dumper $c->current_route %>
</pre>
% }
% if ( stash 'error' ) {
<br><div class="">
%= $c->render_to_string(inline => stash 'error')
<br>
<div class="text-danger">
<%= $c->render_to_string(inline => stash 'error') %>
</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 $url = $c->stash('modul');
% if (!$url) {
% $url = $thisdomain."/roundcube";
%}
% my $username = 'admin';
% if (!$url) {
% $url = $thisdomain."/roundcube";
% }
% if ($url =~ /[?&]_user=([^&]+)/) {
% $username = $1;
%}
% $username = $1;
% }
% if (!($url =~ /https:/)) {
% $url = 'https://' . $url;
% $url = 'https://' . $url;
%}
<div class="">
<a href="<%= "https://".$thisdomain."/" %>roundcube?_user=<%= $username %>"><button class="" width=20em title="<%= l('Full Window') %>"><%= l('Full Window') %></button></a>
<div class="container-fluid">
<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>
</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

View File

@@ -16,7 +16,7 @@
% if ( stash 'error' ) {
<br>
<div>
%= $c->render_to_string(inline => stash 'error')
%= $c->render_to_string(inline => stash 'error')
</div>
%}
@@ -27,7 +27,7 @@
<div>
%= $c->render_to_string( inline => l('pwd_DESCRIPTION'));
</div>
% if ( $pwd_datas->{trt} eq 'RESET' ) {
% my $btn = l('pwd_PASSWORD_RESET');
% my $url = '/userpasswordr';
@@ -57,16 +57,16 @@
</tr>
</tbody>
</table>
<br>
% if ( $pwd_datas->{trt} ne 'RESET' ) {
<div>
<%= l 'pwd_PASSWORD_OLD' %>
</div>
<br>
<div class="row g-3 align-items-center">
<div class="col-md-2">
<input name="OldPass" id="OldPass" type="password" class="form-control sme-password" placeholder="Password">
@@ -74,14 +74,14 @@
</div>
% }
<br>
<br>
<div>
<%= l 'pwd_PASSWORD_NEW' %>
</div>
<br>
<div class="row g-3 align-items-center">
<div class="col-md-2">
<input name="Pass" id="Pass" type="password" class="form-control sme-password" placeholder="Password">
@@ -93,14 +93,14 @@
<div>
%=l 'pwd_PASSWORD_VERIFY_NEW'
</div>
<br>
<div class="row g-3 align-items-center">
<div class="col-md-2">
<input name="Passverify" id="PassVerify" type="password" class="form-control sme-password" placeholder="Password">
</div>
</div>
</div>
<br>

View File

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

View File

@@ -1,6 +1,6 @@
%define name smeserver-manager-AdminLTE
%define version 11.0.0
%define release 27
%define release 35
Summary: AdminLTE is an html framework for admin consoles - this rpm adds it to smeserver manager2
Name: %{name}
Version: %{version}
@@ -18,6 +18,9 @@ BuildRoot: /var/tmp/%{name}-%{version}-%{release}-buildroot
BuildRequires: smeserver-devtools
Requires: smeserver-release >= 11.0
Requires: smeserver-manager >= 11.0.0
Requires: smeserver-lib >= 11.0.0-13
Requires: e-smith-manager >= 2.4.0-22
AutoReqProv: no
%description
@@ -26,6 +29,46 @@ AdminLTE is an html framework for admin consoles
wget https://github.com/ColorlibHQ/AdminLTE/archive/master.zip
%changelog
* 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
- Proxy panel done
* Wed Jun 04 2025 John Crisp <jcrisp@safeandsoundit.co.uk> 11.0.0-28.sme
- Reboot panel done
* Wed Jun 04 2025 John Crisp <jcrisp@safeandsoundit.co.uk> 11.0.0-27.sme
- finish Email panels
- Fix login password toggle
@@ -121,10 +164,10 @@ wget https://github.com/ColorlibHQ/AdminLTE/archive/master.zip
- Rename some partials more logically
* Tue Mar 25 2025 Brian Read <brianr@koozali.org> 11.0.0-1.sme
- New version for AdminLTE integration with no class or ids
- New version for AdminLTE integration with no class or ids
%prep
%setup
%setup
%build
perl createlinks