Compare commits

...

21 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
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
50 changed files with 1873 additions and 1383 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 {
@@ -101,9 +104,12 @@
border-left-width: 0px;
}
.user-valign-center {
/* .user-valign-center {
text-align: center;
}
-- Use align-middle --
} */
.user-table-max-wdith {
max-width: 50%;

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

@@ -1,6 +1,6 @@
<%
my $backups = esmith::BackupHistoryDB->open;
my $backups = esmith::BackupHistoryDB->open; # no UTF8
my $now = time();
my $backup_rec = $backups->new_record($now, {
type => 'backup_record', BackupType => 'desktop',
@@ -22,7 +22,7 @@
my $success = open my $fh, '-|', $cmd;
#unless ($success) { return "Error download command."; };
if ($success) {
# Try with download plugin - seems to fail to complete download and also
# Try with download plugin - seems to fail to complete download and also
# name of file deposited is not as required.
#my $output = do { local $/; <$fh> };
#close $fh;

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

@@ -28,7 +28,7 @@
<th class="col-sm"><%=l 'DESCRIPTION_BRIEF' %></th>
<th class="col-sm"><%=l 'dom_CONTENT' %></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>
</thead>
@@ -65,10 +65,10 @@
% </button>
% </a>
%};
%# $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 user-valign-center"><%= $c->render_to_string(inline => $actionModify) %></td>
<td class="col-auto text-center"><%= $c->render_to_string(inline => $actionRemove) %></td>
<td class="col-auto text-center"><%= $c->render_to_string(inline => $actionModify) %></td>
</tr>
% }

View File

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

View File

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

View File

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

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

@@ -1,34 +1,37 @@
<div>
% my $retref= $c->stash("ret");
% my %ret;
% unless (length($retref)) {%ret = (ret=>"");}
% else {%ret = %$retref;}
% my $retref = $c->stash("ret");
% my %ret = $retref ? %$retref : (ret => "");
% my @vars = split(/,/, $ret{vars} // '');
% my ($var1, $var2, $var3, $var4, $var5, $var6, $var7) = @vars;
% 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];
% if ($c->app->config->{debug}) {
<br>
<pre>
<%= dumper { ret_data => \%ret } %>
</pre>
% }
%if ($ret{'ret'} eq "") {
% if ($ret{ret} eq "") {
<br>
<%= l "ln_FIRSTPAGE_DESC" %>
<BR>
% } elsif (index($ret{ret},"SUCCESS") != -1) {
<div class="">
<h2> Operation Status Report</h2>
<%= $c->l($ret{ret},$var1,$var2,$var3,$var4,$var5,$var6); %>
</div>
% } else {
<div class="">
<h2> Operation Status Report - Error</h2>
<%= $c->l($ret{ret},$var1,$var2,$var3,$var4,$var5,$var6); %>
</div>
% }
<br>
%} elsif (index($ret{ret},"SUCCESS") != -1) {
<div class="">
<h2> Operation Status Report</h2>
<%= $c->l($ret{ret},$var1,$var2,$var3,$var4,$var5,$var6); %>
</div>
%} else {
<div class="">
<h2> Operation Status Report - Error</h2>
<%= $c->l($ret{ret},$var1,$var2,$var3,$var4,$var5,$var6); %>
</div>
%}
<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>
@@ -37,7 +40,6 @@
</div>
% }
<form action="/smanager/localnetworksb" method="POST">
<div>
<h2><%=l "ln_ADD_TITLE" %></h2>
@@ -54,7 +56,7 @@
<label for="inputNetwork" class="col-form-label"><%= l "NETWORK" %></label>
</div>
<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>
@@ -65,7 +67,7 @@
<label for="inputNetworkMask" class="col-form-label"><%= l "ln_SUBNET_MASK" %></label>
</div>
<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>
@@ -76,7 +78,7 @@
<label for="inputNetworkRouter" class="col-form-label"><%= l "ROUTER" %></label>
</div>
<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>

View File

@@ -17,11 +17,11 @@
<form action="/smanager/localnetworkse" method="POST">
<div>
<h2><%=l "ln_REMOVE_TITLE" %></h2>
<h2><%= l "ln_REMOVE_TITLE" %></h2>
</div>
<div>
<%=l "ln_REMOVE_DESC" %>
<%= l "ln_REMOVE_DESC" %>
</div>
<br><br>
@@ -60,19 +60,20 @@
<br>
% if ($deletehosts) {
<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") %>
<br>
<span class="">
<%= $c->l("ln_REMOVE_HOSTS_LABEL") %>
</span>
<span class="">
<%= check_box deletehost=>1, checked=>1 %>
</span>
<br><br>
<%= $c->l("ln_REMOVE_HOSTS_DESC") %>
<br>
<span class="">
<%= $c->l("ln_REMOVE_HOSTS_LABEL") %>
</span>
<span class="">
<%= check_box deletehost=>1, checked=>1 %>
</span>
<br><br>
% }
<div class="row g-3 align-items-center">

View File

@@ -1,100 +1,96 @@
<div>
% my $btn = l('ln_LOCALNETWORK_ADD');
<form action="/smanager/localnetworksa" method="POST">
<br>
% my $retref= $c->stash("ret");
% my %ret;
% unless (length($retref)) {%ret = (ret=>"");}
% else {%ret = %$retref;}
% my $retref = $c->stash("ret");
% my %ret = $retref ? %$retref : (ret => "");
% my @vars = split(/,/, $ret{vars} // '');
% my ($var1, $var2, $var3, $var4, $var5, $var6, $var7) = @vars;
% if (config->{debug} == 1) {
<div>
%= dumper "Ret:".$ret{ret};
</div>
% if ($c->app->config->{debug}) {
<br>
<pre>
<%= 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" %>
% } elsif (index($ret{ret},"SUCCESS") != -1) {
<h2> Operation Status Report</h2>
<br>
<div>
<h2> Operation Status Report</h2>
<%= $c->render_to_string(inline => l($ret{ret},$var1,$var2,$var3,$var4,$var5,$var6,$var7)); %>
<%= $c->render_to_string(inline => l($ret{ret}, @vars[0..6])) %>
</div>
% } else {
<div>
<h2> Operation Status Report - Error</h2>
<br>
<div class="text-danger">
<h2> Operation Status Report - Error</h2>
<%= $c->render_to_string(inline => l($ret{ret},$var1,$var2,$var3,$var4,$var5,$var6,$var7)); %>
<%= $c->render_to_string(inline => l($ret{ret}, @vars[0..6])) %>
</div>
% }
<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 class="text-center"><%= 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 class="text-center"><%= $c->render_to_string(inline => $actionRemove) %></td>
</tr>
% }
</tbody>
</table>
<%= hidden_field 'trt' => $ln_datas->{trt} %>
% }
</form>
</div>

View File

@@ -7,67 +7,83 @@
% my $dhost = $pf_datas->{dhost};
% my $cmmnt = $pf_datas->{cmmnt};
% my $allow = $pf_datas->{allow};
% if (config->{debug} == 1) {
<p>
%= dumper $c->current_route
%= dumper $c->stash("ret")
%= dumper %$pf_datas
</p>
% }
%= form_for '/portforwardinge' => (method => 'POST') => begin
<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
% if (config->{debug} == 0) {
<pre>
<%= dumper $c->current_route %>
<%= dumper $c->stash("ret") %>
<%= dumper %$pf_datas %>
</pre>
% }
<form action="/smanager/portforwardinge" method="POST">
<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>

View File

@@ -1,12 +1,16 @@
<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 %ret;
% unless (length($retref)) {%ret = (ret=>"");}
% else {%ret = %$retref;}
% my $numtcpforwards = @$tcpforwards;
% my $numudpforwards = @$udpforwards;
@@ -18,103 +22,94 @@
% my $var5 = @vars[4];
% my $var6 = @vars[5];
%if ($ret{ret} eq "") {
%= $c->render_to_string(inline => l('pf_FIRST_PAGE_DESCRIPTION'));
%} elsif (index($ret{ret},"SUCCESS") != -1) {
% if ($ret{ret} eq "") {
<%= $c->render_to_string(inline => l('pf_FIRST_PAGE_DESCRIPTION')); %>
% } elsif (index($ret{ret},"SUCCESS") != -1) {
<br>
<div class="">
<!--<h2> Operation Status Report</h2>-->
%= $c->l($ret{ret},$var1,$var2,$var3,$var4,$var5,$var6);
<div>
<h2> Operation Status Report</h2>
<%= $c->l($ret{ret},$var1,$var2,$var3,$var4,$var5,$var6); %>
</div>
%} else {
% } else {
<br>
<div class="">
<!--<h2> Operation Status Report - Error</h2>-->
%= $c->l($ret{ret},$var1,$var2,$var3,$var4,$var5,$var6);
<div class="text-danger">
<h2> Operation Status Report - Error</h2>
<%= $c->l($ret{ret},$var1,$var2,$var3,$var4,$var5,$var6); %>
</div>
%}
% }
<p>
<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>
%=l 'pf_NO_FORWARDS'
% } else {
<br>
%=l 'pf_SHOW_FORWARDS'
<br><br />
<table class="table table-bordered">
<thead>
<tr>
<th class="">
%=l 'pf_LABEL_PROTOCOL'
</th>
<th class="">
%=l 'pf_LABEL_SOURCE_PORT'
</th>
<th class="">
%=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>
</thead>
<tbody>
% my %forwards = ();
% $forwards{TCP} = $tcpforwards;
% $forwards{UDP} = $udpforwards;
% foreach my $proto (sort keys %forwards) {
% if (@{ $forwards{$proto} }) {
% foreach my $entry (@{ $forwards{$proto} }) {
<%= l 'pf_NO_FORWARDS' %>
% } else {
<br>
<%= l 'pf_SHOW_FORWARDS' %>
<br><br>
<table class="table table-bordered">
<thead>
<tr>
% my $sport = $entry->key;
% my $dhost = $entry->prop('DestHost');
% my $dport = $entry->prop('DestPort') || '';
% my $cmmnt = $entry->prop('Comment') || '';
% my $allow = $entry->prop('AllowHosts') || '';
%= t td => (class => "") => $proto
%= t td => (class => "") => $sport
%= t td => (class => "") => $dhost
%= t td => (class => "") => $dport
%= t td => (class => "") => $allow
%= t td => (class => "") => $cmmnt
<td class="">
%my $remove_text = l('REMOVE'); # Localized text
%my $csrf_token = "TOKEN"; # CSRF token for security
%my $actionRemove = qq{
% <a href="portforwardingd?CsrfDef=$csrf_token&trt=DEL&sport=$sport&proto=$proto">
% <button type='button' class="" title='$remove_text' >
% $remove_text
% </button>
% </a>
%};
<%= $c->render_to_string(inline => $actionRemove) %>
</td>
<th><%= l 'pf_LABEL_PROTOCOL' %></th>
<th><%= l 'pf_LABEL_SOURCE_PORT' %></th>
<th><%= l 'pf_LABEL_DESTINATION_HOST' %></th>
<th><%= l 'pf_LABEL_DESTINATION_PORT' %></th>
<th><%= l 'pf_ALLOW_HOSTS' %></th>
<th><%= l 'pf_RULE_COMMENT' %></th>
<th class="text-center"><%= l 'ACTION' %></th>
</tr>
% }
% }
%}
%}
</tbody>
</thead>
<tbody>
% my %forwards = ();
% $forwards{TCP} = $tcpforwards;
% $forwards{UDP} = $udpforwards;
% foreach my $proto (sort keys %forwards) {
% if (@{ $forwards{$proto} }) {
% foreach my $entry (@{ $forwards{$proto} }) {
<tr class="align-middle">
% my $sport = $entry->key;
% my $dhost = $entry->prop('DestHost');
% my $dport = $entry->prop('DestPort') || '';
% my $cmmnt = $entry->prop('Comment') || '';
% my $allow = $entry->prop('AllowHosts') || '';
<td><%= $proto %></td>
<td><%= $sport %></td>
<td><%= $dhost %></td>
<td><%= $dport %></td>
<td><%= $allow %></td>
<td><%= $cmmnt %></td>
% my $remove_text = l('REMOVE'); # Localized text
% my $csrf_token = "TOKEN"; # CSRF token for security
% my $actionRemove = qq{
% <a href="portforwardingd?CsrfDef=$csrf_token&trt=DEL&sport=$sport&proto=$proto">
% <button type='button' class="btn btn-primary" title='$remove_text' >
% $remove_text
% </button>
% </a>
% };
<td class="text-center"><%= $c->render_to_string(inline => $actionRemove) %></td>
</tr>
% }
% }
% }
% }
</tbody>
</table>
%= hidden_field 'trt' => $pf_datas->{trt}
<%= hidden_field 'trt' => $pf_datas->{trt} %>
</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

@@ -17,7 +17,7 @@
</div>
<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>

View File

@@ -22,9 +22,9 @@
<table class="table table-bordered user-table-max-width">
<thead>
<tr>
<th class="col-sm"><%= l 'pse_PSEUDONYM' %></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"><%= l 'pse_PSEUDONYM' %></th>
<th class="col-sm"><%= l 'pse_USER_OR_GROUP' %></th>
<th class="col-sm align-middle" colspan="2"><%= l 'ACTION' %></th>
<!-- <th class="" style="display: normal;"></th> -->
</tr>
</thead>
@@ -57,7 +57,7 @@
% $modify_text
% </button>
% </a>
%};
% };
% }
% if ($removable eq 'yes') {
@@ -70,11 +70,11 @@
% $remove_text
% </button>
% </a>
%};
% };
% }
<td class="user-valign-center"><%= $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 => $actionModify) %></td>
<td class="align-middle"><%= $c->render_to_string(inline => $actionRemove) %></td>
</tr>
% }

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#;
@@ -25,21 +36,28 @@
<th class="col-sm"><%= $limit %></th>
<th class="col-sm"><%= $absolute %></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>
</thead>
<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>
@@ -59,7 +77,7 @@
% </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>
% }
</tbody>

View File

@@ -22,12 +22,12 @@
<div class="table-responsive">
<table class="table table-bordered">
<thead>
<tr class="">
<th><%=l 'ACCOUNT' %></th>
<th><%=l 'USER_NAME' %></th>
<th><%=l 'usr_VPN_CLIENT_ACCESS' %></th>
<th><%=l 'usr_FORWARDING_ADDRESS' %></th>
<th class="user-valign-center" colspan="5"><%= l 'ACTION' %></th>
<tr>
<th><%= l 'ACCOUNT' %></th>
<th><%= l 'USER_NAME' %></th>
<th><%= l 'usr_VPN_CLIENT_ACCESS' %></th>
<th><%= l 'usr_FORWARDING_ADDRESS' %></th>
<th class="text-center text-center" colspan="5"><%= l 'ACTION' %></th>
</tr>
</thead>
<tbody>
@@ -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>
@@ -136,17 +136,17 @@
<!-- If webmail disabled??? -->
% $actionroundcube = qq{
%<a href="roundcubepanel?CsrfDef=$csrf_token&url=https://$thisdomain/roundcube?_user=$useraccounts_user_name&height=600px">
% <button type='button' class="btn btn-primary" title='$roundcube_text' >
% <button type='button' class="btn btn-primary" title='$roundcube_text' >
% $roundcube_text
% </button>
%</a>
%};
<td class="user-valign-center"><%= $c->render_to_string(inline => $actionModify) %></td>
<td class="user-valign-center"><%= $c->render_to_string(inline => $actionResetPw) %></td>
<td class="user-valign-center"><%= $c->render_to_string(inline => $actionLock) %></td>
<td class="user-valign-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 => $actionModify) %></td>
<td class="text-center"><%= $c->render_to_string(inline => $actionResetPw) %></td>
<td class="text-center"><%= $c->render_to_string(inline => $actionLock) %></td>
<td class="text-center"><%= $c->render_to_string(inline => $actionRemove) %></td>
<td class="text-center"><%= $c->render_to_string(inline => $actionroundcube) %></td>
</tr>
% }
</tbody>

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,28 +5,29 @@
<div class="card-body">
% if (config->{debug} == 1) {
<p>
%= dumper "<pf>".$c->current_route
%= dumper $c->stash("ret")
%= dumper $c->stash("portforwarding")
% my $ref = $pf_datas->{portforwarding};
%= dumper $ref->{TCP}->[0]."</pf>"
</p>
<pre>
<%= dumper "<pf>".$c->current_route %>
<%= dumper $c->stash("ret") %>
<%= dumper $c->stash("portforwarding") %>
% my $ref = $pf_datas->{portforwarding}; %>
<%= dumper $ref->{TCP}->[0]."</pf>" %>
</pre>
% }
<h1><%= $title%></h1>
%= $modul
%= $modul
% if ($pf_datas->{trt} eq 'ADD') {
%= include 'partials/_pf_add'
%} elsif ($pf_datas->{trt} eq 'ADD1') {
%= include 'partials/_pf_add'
%} elsif ($pf_datas->{trt} eq 'DEL') {
%= include 'partials/_pf_del'
%} elsif ($pf_datas->{trt} eq 'DEL1'){
%= include 'partials/_pf_list'
%} else {
%= include 'partials/_pf_list'
<%= include 'partials/_pf_add' %>
% } elsif ($pf_datas->{trt} eq 'ADD1') {
<%= include 'partials/_pf_add' %>
% } elsif ($pf_datas->{trt} eq 'DEL') {
<%= include 'partials/_pf_del' %>
% } elsif ($pf_datas->{trt} eq 'DEL1'){
<%= include 'partials/_pf_list' %>
% } else {
<%= include 'partials/_pf_list' %>
%}
</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 36
Summary: AdminLTE is an html framework for admin consoles - this rpm adds it to smeserver manager2
Name: %{name}
Version: %{version}
@@ -11,13 +11,15 @@ URL: https://adminlte.io/
Group: SMEserver/addon
source: %{name}-%{version}.tar.gz
Packager: Brian Read <brianr@koozali.org>
BuildArchitectures: noarch
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 +28,51 @@ AdminLTE is an html framework for admin consoles
wget https://github.com/ColorlibHQ/AdminLTE/archive/master.zip
%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
- 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 +168,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