Edit template for controller - Refine params copy and bring DB opens up to spec with UTF8
This commit is contained in:
106
output/Backup/AdminLTE/back_tape_configure.html.new.ep
Normal file
106
output/Backup/AdminLTE/back_tape_configure.html.new.ep
Normal file
@@ -0,0 +1,106 @@
|
||||
% layout "AdminLTE", title => "Sme server 2 - backup";
|
||||
|
||||
% content_for "module" => begin
|
||||
|
||||
<div class="card-body">
|
||||
% if (config->{debug} == 1) {
|
||||
<pre>
|
||||
<%= dumper $c->current_route %>
|
||||
<%= dumper $bac_datas %>
|
||||
</pre>
|
||||
% }
|
||||
|
||||
% if ( stash "error" ) {
|
||||
<br>
|
||||
<div class="text-danger">
|
||||
<%= $c->render_to_string(inline => stash "error") %>
|
||||
</div>
|
||||
% }
|
||||
|
||||
<h1><%= $title%></h1>
|
||||
|
||||
<br>
|
||||
|
||||
<h2><%= l "bac_ENABLE_DISABLE_TAPE" %></h2>
|
||||
|
||||
<br>
|
||||
|
||||
<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>
|
||||
|
||||
|
||||
<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>
|
||||
|
||||
<br>
|
||||
|
||||
<%= hidden_field "Function" => $bac_datas->{"function"} %>
|
||||
|
||||
% my $btn = l("Update");
|
||||
<div class="row g-3 align-items-center">
|
||||
<div class="col-md-2">
|
||||
<button type="submit" class="btn btn-primary btn-sm" value="<%=$c->l("Update")%>"><%= $btn %></button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</form>
|
||||
|
||||
</div>
|
||||
% end
|
272
output/Backup/AdminLTE/back_workstn_configure1.html.new.ep
Normal file
272
output/Backup/AdminLTE/back_workstn_configure1.html.new.ep
Normal file
@@ -0,0 +1,272 @@
|
||||
% layout "AdminLTE", title => "Sme server 2 - backup - conf";
|
||||
|
||||
% content_for "module" => begin
|
||||
|
||||
<div class="card-body">
|
||||
|
||||
% if (config->{debug} == 1) {
|
||||
<pre>
|
||||
<%= dumper $c->current_route %>
|
||||
<%= dumper $bac_datas %>
|
||||
</pre>
|
||||
% }
|
||||
|
||||
% if ( 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_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("Update");
|
||||
|
||||
<div class="row g-3 align-items-center">
|
||||
<div class="col-md-2">
|
||||
<button type="submit" class="btn btn-primary btn-sm" value="<%=$c->l("NEXT")%>"><%= $btn %></button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<br>
|
||||
|
||||
</form>
|
||||
|
||||
</div>
|
||||
|
||||
% end
|
53
output/Backup/AdminLTE/back_workstn_restore1.html.new.ep
Normal file
53
output/Backup/AdminLTE/back_workstn_restore1.html.new.ep
Normal file
@@ -0,0 +1,53 @@
|
||||
% layout "AdminLTE", title => "Sme server 2 - restore";
|
||||
|
||||
% content_for "module" => begin
|
||||
|
||||
<div class="card-body">
|
||||
|
||||
% if (config->{debug} == 1) {
|
||||
<pre>
|
||||
<%= dumper $c->current_route %>
|
||||
<%= dumper $bac_datas %>
|
||||
</pre>
|
||||
% }
|
||||
|
||||
% if ( stash "error" ) {
|
||||
<br>
|
||||
<div class="text-danger">
|
||||
<%= $c->render_to_string(inline => stash "error") %>
|
||||
</div>
|
||||
% }
|
||||
|
||||
<h1><%= $title%></h1>
|
||||
|
||||
<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("Reboot");
|
||||
|
||||
<div class="row g-3 align-items-center">
|
||||
<div class="col-md-2">
|
||||
<button type="submit" class="btn btn-primary btn-sm"><%= $btn %></button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
</div>
|
||||
% end
|
78
output/Backup/AdminLTE/back_workstn_verify.html.new.ep
Normal file
78
output/Backup/AdminLTE/back_workstn_verify.html.new.ep
Normal file
@@ -0,0 +1,78 @@
|
||||
% layout "AdminLTE", title => "Sme server 2 - backup - verify";
|
||||
% content_for "module" => begin
|
||||
|
||||
<div class="card-body">
|
||||
|
||||
% if (config->{debug} == 1) {
|
||||
<pre>
|
||||
<%= dumper $c->current_route %>
|
||||
<%= dumper $bac_datas %>
|
||||
</pre>
|
||||
% }
|
||||
|
||||
% if ( stash "error" ) {
|
||||
<br><div class="text-danger">
|
||||
<%= $c->render_to_string(inline => stash "error") %>
|
||||
</div>
|
||||
% }
|
||||
|
||||
<h1><%= $title%></h1>
|
||||
|
||||
<br>
|
||||
|
||||
<h2><%=l "Verify_WORKSTN_BACKUP_FILE" %></h2>
|
||||
|
||||
<form action="/smanager/backup" method="POST">
|
||||
|
||||
<br>
|
||||
|
||||
% 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 "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("Verify");
|
||||
|
||||
<div class="row g-3 align-items-center">
|
||||
<div class="col-md-2">
|
||||
<button type="submit" class="btn btn-primary btn-sm"><%= $btn %></button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
% end
|
71
output/Backup/backup_en.lex.diff
Normal file
71
output/Backup/backup_en.lex.diff
Normal file
@@ -0,0 +1,71 @@
|
||||
'bac_AM' => 'AM',
|
||||
'bac_AM/PM' => 'AM/PM',
|
||||
'bac_BACKUP_DESC' => '<P>The server provides two ways to back up and restore
|
||||
your server: using your local desktop or a tape drive.</P>
|
||||
<P>The first method creates a copy of your server configuration and user
|
||||
data files, and downloads it to your local desktop via your web browser.
|
||||
Currently your configuration and data files total approximately
|
||||
<b>[_1]</b>. The backup file will be somewhat less than this,
|
||||
depending on how compressible the data are. The \"Verify desktop backup
|
||||
file\" option can be used to check the integrity of a desktop backup
|
||||
file.</P>
|
||||
<P>The tape backup method uses a software package called <I>[_2]</I>
|
||||
to back up your entire hard disk to tape every night. This requires a
|
||||
supported tape drive and a tape that is not write-protected. The backup
|
||||
is performed automatically at the selected time every night (with a
|
||||
reminder automatically e-mailed to the administrator during the day).
|
||||
Currently your hard disk contains <b>[_3]</b> of data.</P>
|
||||
<P>Both restore methods allow you to restore your configuration and user
|
||||
data files. <b>Ideally, the restore should be performed on a freshly
|
||||
installed server</b>.</P>',
|
||||
'bac_cifs' => 'cifs',
|
||||
'bac_CONFIGURE_TAPE_BACKUP' => 'Configure tape backup',
|
||||
'bac_COULD_NOT_DECODE' => 'Could not decode backup file: ',
|
||||
'bac_COULD_NOT_EXEC_PIPELINE' => 'Could not execute backup pipeline: ',
|
||||
'bac_DESKTOP_RESTORE' => 'Restore from desktop',
|
||||
'bac_DESKTOP_RESTORE_DESC' => 'This process will upload a server backup file from your local desktop to your server and restore the configuration and user data files. <B>The restore should be performed on a freshly installed server</B>.',
|
||||
'bac_DESKTOP_VERIFY' => 'Verify desktop backup file',
|
||||
'bac_ENABLE_DISABLE_WORKSTN' => 'Enable/Disable Daily Workstation Backup',
|
||||
'bac_ERR_DAR_CATALOG' => 'Error when using Dar catalog',
|
||||
'bac_ERR_INVALID_SETS_NUMBER' => 'Sets number must be 1 or greater',
|
||||
'bac_ERR_READING_FILE' => 'There was an error in reading the backup file.',
|
||||
'bac_ERR_RESTORING_FROM_WORKSTN' => 'Error occurred restoring files from workstation.',
|
||||
'bac_ERR_UPDATING_CONF_AFTER_WORKSTN_RESTORE' => 'Error occurred while updating system configuration after workstation
|
||||
restore.',
|
||||
'bac_FILE_TO_RESTORE' => 'Backup file to restore from',
|
||||
'bac_FINISHED_AT' => 'and finished at: ',
|
||||
'bac_FREE_SPACE' => 'You have approximately [_1] free space on the server.
|
||||
Check that desktop backup file is less than [_2] before
|
||||
commencing the restore.',
|
||||
'bac_MUST_REBOOT_AFTER_RESTORE' => 'After the restore completes you must reboot the server.',
|
||||
'bac_nfs' => 'nfs',
|
||||
'bac_NO_BACKUPS_TO_RESTORE' => 'There is no backup set on configured workstation shared folder. Verify your configuration settings.',
|
||||
'bac_NOW_RESTORING_FROM_TAPE' => 'Your server configuration and user data
|
||||
files are now being restored from tape.',
|
||||
'bac_NOW_RESTORING_FROM_WORKSTN' => 'Your server configuration and user data
|
||||
files are now being restored from workstation shared folder.',
|
||||
'bac_PAGE_REFRESH_IN' => 'This page will refresh to the status display in [_1] seconds, or
|
||||
click <a href="/server-manager/cgi-bin/backup">here</a>.',
|
||||
'bac_PM' => 'PM',
|
||||
'bac_REFRESH_THIS_DISPLAY' => 'Refresh this display',
|
||||
'bac_RESTORE_COMPLETED' => 'A system restore has completed',
|
||||
'bac_RESTORE_CONF_FROM_WORKSTN' => 'Restore server configuration from workstation backup',
|
||||
'bac_RESTORE_IN_PROGRESS' => 'Restore in progress',
|
||||
'bac_RESTORE_IN_PROGRESS_BEGAN_AT' => 'A system restore is in progress. It began at: ',
|
||||
'bac_RESTORE_IN_PROGRESS_DESC' => 'After the restore completes you must reboot the server. Your restore is
|
||||
complete when the words "Restore complete" appear at the bottom of your screen.
|
||||
',
|
||||
'bac_RESTORE_SERVER_CONFIG' => 'Restore server configuration',
|
||||
'bac_RESTORING_FROM_TAPE' => 'Restoring From Tape',
|
||||
'bac_RESTORING_FROM_WORKSTN' => 'Restoring From Workstation',
|
||||
'bac_STARTED_AT' => 'It began at: ',
|
||||
'bac_UPDATING_TAPE_CONF' => 'Updating tape backup configuration',
|
||||
'bac_UPDATING_WORKSTN_CONF' => 'Updating workstation backup configuration',
|
||||
'bac_VERIFY_BACKUP_DESC' => '
|
||||
<p>This option will display the names of all files
|
||||
in a previously created desktop backup file. You
|
||||
can use this option to verify the contents of the
|
||||
backup file.</p> ',
|
||||
'bac_WORKSTN_NOT_SET' => 'You must first correctly configure your workstation backup',
|
||||
'bac_X_BACKUP_OR_RESTORE' => 'X Backup or restore server data',
|
||||
'Backup or restore' => 'Backup or restore',
|
283
output/Backup/backup_en.lex.new1
Normal file
283
output/Backup/backup_en.lex.new1
Normal file
@@ -0,0 +1,283 @@
|
||||
#
|
||||
# Lex file for Backup generated on 2025-07-17 09:52:30
|
||||
#
|
||||
'bac_ALL_BACKUPS' => 'All backups',
|
||||
'bac_AM' => 'AM',
|
||||
'bac_AM/PM' => 'AM/PM',
|
||||
'bac_ANOTHER_RESTORE_IN_PROGRESS' => 'Another restore is in progress. Please try again later.',
|
||||
'bac_BACKUP_CHOICE' => 'Selecting files to display',
|
||||
'bac_BACKUP_CONFIG_STATUS' => 'Backup configuration and status',
|
||||
'bac_BACKUP_DESC' => '<P>The server provides two ways to back up and restore
|
||||
your server: using your local desktop or a tape drive.</P>
|
||||
<P>The first method creates a copy of your server configuration and user
|
||||
data files, and downloads it to your local desktop via your web browser.
|
||||
Currently your configuration and data files total approximately
|
||||
<b>[_1]</b>. The backup file will be somewhat less than this,
|
||||
depending on how compressible the data are. The \"Verify desktop backup
|
||||
file\" option can be used to check the integrity of a desktop backup
|
||||
file.</P>
|
||||
<P>The tape backup method uses a software package called <I>[_2]</I>
|
||||
to back up your entire hard disk to tape every night. This requires a
|
||||
supported tape drive and a tape that is not write-protected. The backup
|
||||
is performed automatically at the selected time every night (with a
|
||||
reminder automatically e-mailed to the administrator during the day).
|
||||
Currently your hard disk contains <b>[_3]</b> of data.</P>
|
||||
<P>Both restore methods allow you to restore your configuration and user
|
||||
data files. <b>Ideally, the restore should be performed on a freshly
|
||||
installed server</b>.</P>',
|
||||
'bac_BACKUP_DESC_DAR' => '<P>Three ways are provided to back up and restore your
|
||||
server: using a tape drive, using a network share or a local
|
||||
removable disk, or using your local desktop.</P>
|
||||
<P>Tape Backup. This method uses a software package called <I>[_1]</I>
|
||||
to back up your entire hard disk to tape every night. This requires a
|
||||
supported tape drive and a tape that is not write-protected. The backup
|
||||
is performed automatically at the selected time every night (with a
|
||||
reminder automatically e-mailed to the administrator during the day).
|
||||
Currently your hard disk contains <b>[_2]</b> of data.</P>
|
||||
<P>Workstation backup. This method uses a software package called <I>dar</I>
|
||||
to back up your server configuration and data files to a network share
|
||||
or a local removable disk such as a USB disk.
|
||||
You can manage how many rotating sets of backups are kept,
|
||||
and how many incremental backups to have in each set.
|
||||
The backup is performed automatically at the selected time every day. Currently
|
||||
configuration and data files total approximately <b>[_3]</b> uncompressed.
|
||||
Twice the compressed data size must be available on the backup share.</P>
|
||||
<P>Backup to Desktop. This method creates a copy of your server
|
||||
configuration and user data files, and downloads it to your
|
||||
local desktop via your web browser.
|
||||
Currently your configuration and data files total approximately
|
||||
<b>[_3]</b>. The backup file will be somewhat less than this,
|
||||
depending on how much the data can be compressed.
|
||||
This file can be used to restore the server from the console if you
|
||||
copy it to a local removable disk such as a USB disk.</P>
|
||||
<P>All backup methods allow you to restore your configuration and user
|
||||
data files. Workstation backup provides individual file restore. <b>Ideally,
|
||||
full restore should be performed on a freshly installed server</b>.</P>',
|
||||
'bac_BACKUP_DESKTOP_TOO_BIG' => 'Your server has too much data for a reliable backup to desktop.',
|
||||
'bac_BACKUP_FILE_INCOMPLETE' => 'The backup file was incomplete',
|
||||
'bac_BACKUP_TITLE' => 'Backup or restore server data',
|
||||
'bac_BACKUPS_RUN_AT' => 'Regular tape backups will run at: ',
|
||||
'bac_BETWEEN_0_AND_12' => 'Please choose an hour between 0 and 12.',
|
||||
'bac_BETWEEN_0_AND_59' => 'Please choose a minute between 0 and 59.',
|
||||
'bac_CHECK_INTEGRITY_WARNING' => 'Warning : For large backups, checking integrity may be a long task and should be made with daily workstation backup disabled.',
|
||||
'bac_CHECK_TO_VERIFY_FULL_RESTORE' => 'Check here to test integrity of all backups needed for a full restore with the selected backup ',
|
||||
'bac_cifs' => 'cifs',
|
||||
'bac_COMPRESSION_LEVEL' => 'Backup compression level ~[0-9~]',
|
||||
'bac_CONFIGURATION_TO_BE_DONE' => 'Please configure the backup settings.',
|
||||
'bac_CONFIGURE_TAPE_BACKUP' => 'Configure tape backup',
|
||||
'bac_CONFIGURE_WORKSTN_BACKUP' => 'Configure Workstation Backup',
|
||||
'bac_CONFIGURE_WORKSTN_BACKUP_DESC' => 'You can set the number of
|
||||
successive backup sets to keep on the workstation, with automatic rotation.
|
||||
Each set may contain saved data for several consecutive days.
|
||||
In this case first backup of the set is full backup, others daily backups are
|
||||
incremental. You can also set a time limit for each backup session or for incremental
|
||||
backups only. When this limit occurs, backup is cleanly stopped and the next
|
||||
incremental backup will safely continue with unsaved and modified datas.',
|
||||
'bac_COULD_NOT_DECODE' => 'Could not decode backup file: ',
|
||||
'bac_COULD_NOT_EXEC_PIPELINE' => 'Could not execute backup pipeline: ',
|
||||
'bac_COULD_NOT_FORK' => 'Could not fork: ',
|
||||
'bac_DESKTOP_BACKUP' => 'Backup to desktop',
|
||||
'bac_DESKTOP_RESTORE' => 'Restore from desktop',
|
||||
'bac_DESKTOP_RESTORE_DESC' => 'This process will upload a server backup file from your local desktop to your server and restore the configuration and user data files. <B>The restore should be performed on a freshly installed server</B>.',
|
||||
'bac_DESKTOP_VERIFY' => 'Verify desktop backup file',
|
||||
'bac_DOW' => 'Sunday Monday Tuesday Wednesday Thursday Friday Saturday Everyday',
|
||||
'bac_ENABLE_DISABLE_TAPE' => 'Enable/Disable Nightly Tape Backup',
|
||||
'bac_ENABLE_DISABLE_WORKSTN' => 'Enable/Disable Daily Workstation Backup',
|
||||
'bac_ENABLE_TAPE_BACKUP' => 'Enable tape backup',
|
||||
'bac_ENABLE_WORKSTN_BACKUP' => 'Enable Workstation Backup',
|
||||
'bac_ERR_ALREADY_MOUNTED' => 'Backup directory is already mounted',
|
||||
'bac_ERR_CONF_BACKUP' => 'Error occurred during conf-backup event.',
|
||||
'bac_ERR_DAR_CATALOG' => 'Error when using Dar catalog',
|
||||
'bac_ERR_EXTRACT' => 'Error when extracting with Dar',
|
||||
'bac_ERR_INVALID_COMPRESSION' => 'Compression level must be set between 0 (no compression) and 9 (maximum compression)',
|
||||
'bac_ERR_INVALID_FILES_IN_SET_NUMBER' => 'This number must be 1 or greater. First backup in set is <b>full</b> others are <b>incrementals</b>',
|
||||
'bac_ERR_INVALID_FOLDER' => 'Invalid share name',
|
||||
'bac_ERR_INVALID_HOUR' => 'Error: invalid backup hour: ',
|
||||
'bac_ERR_INVALID_LOGIN' => 'Invalid Login',
|
||||
'bac_ERR_INVALID_MINUTE' => 'Error: invalid backup minute: ',
|
||||
'bac_ERR_INVALID_PASSWORD' => 'Invalid Password',
|
||||
'bac_ERR_INVALID_REMINDER_HOUR' => 'Error: invalid reminder hour: ',
|
||||
'bac_ERR_INVALID_REMINDER_MINUTE' => 'Error: invalid reminder minute: ',
|
||||
'bac_ERR_INVALID_SELDATE' => 'Date format is invalid, must be ~[~[~[yyyy/~]mm/~]dd-~]hh:mm~[:ss~]. ie: 2005/12/31-08:23:32 or
|
||||
10-08:32 or 08:32',
|
||||
'bac_ERR_INVALID_SETS_NUMBER' => 'Sets number must be 1 or greater',
|
||||
'bac_ERR_INVALID_TIMEOUT' => 'Maximum backup time must be set between 1 and 24 hours',
|
||||
'bac_ERR_INVALID_WORKSTN' => 'Invalid Workstation IP or Hostname ',
|
||||
'bac_ERR_MOUNTING_SMBSHARE' => 'Unable to mount workstation shared folder',
|
||||
'bac_ERR_NO_FULL_BACKUP' => 'Aborting restore because needed full backup is missing or unreadable.',
|
||||
'bac_ERR_NO_HOST_DIR' => 'No directory for your host in shared folder. Maybe your host name is different from backup ones',
|
||||
'bac_ERR_NO_INC_BACKUP' => 'Aborting restore because the set has missing or unreadable incremental backup number',
|
||||
'bac_ERR_NO_MOUNTED_DISK' => 'Error : No mounted disk available. Please mount a disk or select another type of workstation backup.',
|
||||
'bac_ERR_NO_USB_DISK' => 'Error : No removable disk available. Please connect a removable disk or select another type of workstation backup.',
|
||||
'bac_ERR_NOT_MOUNTED' => 'Backup directory is not mounted',
|
||||
'bac_ERR_POST_BACKUP' => 'Error occurred during post-backup actions.',
|
||||
'bac_ERR_PRE_BACKUP' => 'Error occurred during pre-backup actions.',
|
||||
'bac_ERR_PRE_RESTORE' => 'Error occurred during pre-restore actions.',
|
||||
'bac_ERR_READING_FILE' => 'There was an error in reading the backup file.',
|
||||
'bac_ERR_RESTORING_FROM_TAPE' => 'Error occurred restoring files from tape.',
|
||||
'bac_ERR_RESTORING_FROM_WORKSTN' => 'Error occurred restoring files from workstation.',
|
||||
'bac_ERR_RESTORING_GID' => 'Error occurred while restoring gid of "www"',
|
||||
'bac_ERR_RESTORING_INITIAL_GRP' => 'Error occurred while restoring initial group of "www".',
|
||||
'bac_ERR_UPDATING_CONF_AFTER_TAPE_RESTORE' => 'Error occurred while updating system configuration after tape
|
||||
restore.',
|
||||
'bac_ERR_UPDATING_CONF_AFTER_WORKSTN_RESTORE' => 'Error occurred while updating system configuration after workstation
|
||||
restore.',
|
||||
'bac_ERR_WHILE_UNMOUNTING' => 'Error occurs when unmounting distant share',
|
||||
'bac_ERROR_READING_FILE' => 'Error while reading files from',
|
||||
'bac_ERROR_WHEN_TESTING_REMOTE_SERVER' => 'The parameters have been saved, however the remote host is not reachable, please check your settings.',
|
||||
'bac_FILE_TO_RESTORE' => 'Backup file to restore from',
|
||||
'bac_FILES_HAVE_BEEN_RESTORED' => 'The following files and directories have been restored:',
|
||||
'bac_FILES_IN_BACKUP' => 'The following files are considered in the backup :',
|
||||
'bac_FILTER_EXPRESSION' => 'Names filtered by',
|
||||
'bac_FINISHED_AT' => 'and finished at: ',
|
||||
'bac_FREE_SPACE' => 'You have approximately [_1] free space on the server.
|
||||
Check that desktop backup file is less than [_2] before
|
||||
commencing the restore.',
|
||||
'bac_FULL_ONLY_ON' => 'Full backup is allowed on',
|
||||
'bac_HOURS' => 'hours.',
|
||||
'bac_INC_ONLY_TIMEOUT' => 'Don"t timeout full backup sessions',
|
||||
'bac_LOAD_TAPE_REMINDER_TIME' => 'Load tape reminder time of day (hour/min)',
|
||||
'bac_local removable disk' => 'Local removable disk',
|
||||
'bac_LOGIN' => 'Login is ',
|
||||
'bac_Mounted disk' => 'Mounted disk',
|
||||
'bac_MUST_REBOOT_AFTER_RESTORE' => 'After the restore completes you must reboot the server.',
|
||||
'bac_nfs' => 'nfs',
|
||||
'bac_No suitable local devices found' => 'No suitable local devices found',
|
||||
'bac_NO_BACKUPS_TO_RESTORE' => 'There is no backup set on configured workstation shared folder. Verify your configuration settings.',
|
||||
'bac_NO_UID_FOR_NAME' => 'Could not get uid for user named: ',
|
||||
'bac_NOW_RESTORING_FROM_TAPE' => 'Your server configuration and user data
|
||||
files are now being restored from tape.',
|
||||
'bac_NOW_RESTORING_FROM_WORKSTN' => 'Your server configuration and user data
|
||||
files are now being restored from workstation shared folder.',
|
||||
'bac_NUMBER_OF_FILES_IN_SET' => 'Daily backups in each set',
|
||||
'bac_NUMBER_OF_SETS' => 'Number of rotating backup sets',
|
||||
'bac_PAGE_REFRESH_IN' => 'This page will refresh to the status display in [_1] seconds, or
|
||||
click <a href="/server-manager/cgi-bin/backup">here</a>.',
|
||||
'bac_PASSWORD' => 'Password is ',
|
||||
'bac_PM' => 'PM',
|
||||
'bac_READ_COMPLETE' => 'You can choose all the directories and files you want to restore in the displayed list
|
||||
(use ctrl or shift for multiple selection). <br/> <b>Warning :</b> If you select a directory,
|
||||
all contained files and directories will be restored.<p/>
|
||||
By default the most recent version of selected files is restored, but if you specify a date
|
||||
in the format <i>~[~[~[yyyy/~]mm/~]dd-~]hh:mm~[:ss~]</i> the process
|
||||
will restore only the most recent version modified <b>before the given date</b>.',
|
||||
'bac_REFRESH_THIS_DISPLAY' => 'Refresh this display',
|
||||
'bac_REMINDER_MESSAGE_AT' => 'Reminder messages will be sent at: ',
|
||||
'bac_RESTORE_CANNOT_PROCEED' => 'Unable to proceed with restore of server configuration',
|
||||
'bac_RESTORE_COMPLETE' => 'Restore complete',
|
||||
'bac_RESTORE_COMPLETED' => 'A system restore has completed',
|
||||
'bac_RESTORE_CONF_FROM_TAPE' => 'Restore server configuration from tape backup',
|
||||
'bac_RESTORE_CONF_FROM_TAPE_DESC' => '<P>This process will restore the configuration and user data files from a
|
||||
server tape backup. <B>The restore should be performed on a freshly installed server</B>.</P>
|
||||
<P>Ensure that you have loaded the desired backup tape into the tape drive
|
||||
before proceeding.</P>
|
||||
<P>After the restore completes you must reboot the server.</P>',
|
||||
'bac_RESTORE_CONF_FROM_WORKSTN' => 'Restore server configuration from workstation backup',
|
||||
'bac_RESTORE_CONF_FROM_WORKSTN_DESC' => '<p>This process will restore the configuration and user data files from a
|
||||
Server workstation backup. <b>The restore
|
||||
should be performed on a freshly installed Server</b>.</p>
|
||||
<p>Ensure that choose the right backup to restore below
|
||||
before proceeding.</p>
|
||||
<p>After the restore completes you must reboot the server.</p>
|
||||
Backup will be restored from : ',
|
||||
'bac_RESTORE_FAILED' => 'Restore failed! The backup file was incomplete.',
|
||||
'bac_RESTORE_FAILED_MSG' => 'Restore failed! There was an error in reading the backup file.',
|
||||
'bac_RESTORE_FROM_TAPE' => 'Restore From Tape',
|
||||
'bac_RESTORE_FROM_WORKSTN' => 'Restore From Workstation',
|
||||
'bac_RESTORE_IN_PROGRESS' => 'Restore in progress',
|
||||
'bac_RESTORE_IN_PROGRESS_BEGAN_AT' => 'A system restore is in progress. It began at: ',
|
||||
'bac_RESTORE_IN_PROGRESS_DESC' => 'After the restore completes you must reboot the server. Your restore is
|
||||
complete when the words "Restore complete" appear at the bottom of your screen.
|
||||
',
|
||||
'bac_RESTORE_SERVER_CONFIG' => 'Restore server configuration',
|
||||
'bac_RESTORE_VERIFY_FAILED' => 'Verify integrity failed',
|
||||
'bac_RESTORING_FROM_TAPE' => 'Restoring From Tape',
|
||||
'bac_RESTORING_FROM_WORKSTN' => 'Restoring From Workstation',
|
||||
'bac_SELECT_AN_ACTION' => 'Select an action',
|
||||
'bac_SELECT_BACKUP_FILE' => 'Select backup file',
|
||||
'bac_SELECT_DATE_BEFORE' => 'Restore most recent before',
|
||||
'bac_SELECT_FILES_TO_RESTORE' => 'Select files to restore',
|
||||
'bac_SELECT_VFS_TYPE' => 'Select the type of share for backup destination',
|
||||
'bac_SERVER_REBOOT' => 'Server reboot',
|
||||
'bac_SERVER_WILL_REBOOT' => 'Your server will now reboot.',
|
||||
'bac_SHARED_FOLDER_NAME' => 'Backup share',
|
||||
'bac_STARTED_AT' => 'It began at: ',
|
||||
'bac_SUCCESSFULLY_DISABLED' => 'Successfully disabled tape backups',
|
||||
'bac_SUCCESSFULLY_DISABLED_WORKSTN' => 'Successfully disabled workstation backups',
|
||||
'bac_SUCCESSFULLY_ENABLED_TAPE' => 'Successfully enabled tape backups',
|
||||
'bac_SUCCESSFULLY_ENABLED_WORKSTN' => 'Successfully enabled workstation backups',
|
||||
'bac_TAPE_BACKUP_TIME' => 'Tape backup time of day (hour/min)',
|
||||
'bac_TAPE_BACKUPS' => 'Tape backups are ',
|
||||
'bac_TAPE_CONFIG_DESC' => '<p>Select whether you wish to enable nightly backups. Then indicate the
|
||||
desired times for the backup and the load tape reminder.</p> <p>The tape
|
||||
backup requires a supported tape drive. A warning message will be sent to
|
||||
the administrator at the designated reminder time if the tape drive is
|
||||
empty.</p>',
|
||||
'bac_TAPE_CONFIGURE' => 'Configure tape backup',
|
||||
'bac_TAPE_RESTORE' => 'Restore from tape',
|
||||
'bac_TESTED_BACKUP' => 'Testing integrity of backup',
|
||||
'bac_TESTING_NEEDED_BACKUPS_FOR_RESTORE' => 'Testing all backups needed for a full restore with selected backup',
|
||||
'bac_UNABLE_TO_RESTORE_CONF' => 'Unable to restore server configuration',
|
||||
'bac_UPDATING_TAPE_CONF' => 'Updating tape backup configuration',
|
||||
'bac_UPDATING_WORKSTN_CONF' => 'Updating workstation backup configuration',
|
||||
'bac_VERIFY_BACKUP_DESC' => '
|
||||
<p>This option will display the names of all files
|
||||
in a previously created desktop backup file. You
|
||||
can use this option to verify the contents of the
|
||||
backup file.</p> ',
|
||||
'bac_VERIFY_COMPLETE' => 'Verification is complete',
|
||||
'bac_VERIFY_WORKSTN_BACKUP_DESC' => '<p>This option will display the names of all files
|
||||
in a previously created workstation daily backup. You
|
||||
can use this option to verify the contents of the
|
||||
backup.<b>You must choose the backup you want to verify</b></p>
|
||||
<p>Only files flagged with (Saved) are contained in the backup.</p>
|
||||
<br/>Backup files are verified from shared folder :',
|
||||
'bac_VERIFY_WORKSTN_BACKUP_FILE' => 'Verify workstation backup',
|
||||
'bac_WITH_BACKUP_TIME' => 'with backup time: ',
|
||||
'bac_WITH_REMINDER_TIME' => 'and load tape reminder time: ',
|
||||
'bac_WKBACKUPS_RUN_AT' => 'Regular workstation backups will run at: ',
|
||||
'bac_WORKSTATION_BACKUP_DEST' => 'Backup workstation settings',
|
||||
'bac_WORKSTATION_BACKUP_SETCONF' => 'Create or modify workstation backup configuration',
|
||||
'bac_WORKSTN_BACKUP_COMPRESSION' => 'Compression level (0-9) of backup is ',
|
||||
'bac_WORKSTN_BACKUP_DAYSINSET' => 'Number of daily backups contained in each set is ',
|
||||
'bac_WORKSTN_BACKUP_DESC' => '<p>This panel displays the present workstation backup configuration. You can
|
||||
change it in this panel and the next one.</p><p/>',
|
||||
'bac_WORKSTN_BACKUP_ENABLED' => 'Backup is ',
|
||||
'bac_WORKSTN_BACKUP_HOST' => 'Backup is made on LAN workstation ',
|
||||
'bac_WORKSTN_BACKUP_INCONLY_TIMEOUT' => 'except full backups which are cleanly timed out after 24 hours',
|
||||
'bac_WORKSTN_BACKUP_MNT' => 'Backup is made on mounted disk',
|
||||
'bac_WORKSTN_BACKUP_NOT_CONFIGURED' => '<p>Presently, workstation backup is not configured. You can set this configuration
|
||||
with this panel and the next one.</p><p/>',
|
||||
'bac_WORKSTN_BACKUP_SETSNUM' => 'Number of rotating backup sets is ',
|
||||
'bac_WORKSTN_BACKUP_SETTINGS' => 'Workstation Backup Settings',
|
||||
'bac_WORKSTN_BACKUP_SHARE' => 'Destination backup share folder is ',
|
||||
'bac_WORKSTN_BACKUP_TIME' => 'Workstation backup time of day (hour/min)',
|
||||
'bac_WORKSTN_BACKUP_TIMEOUT' => 'Each daily backup session is cleanly timed out after ',
|
||||
'bac_WORKSTN_BACKUP_TOD' => 'Daily backup occurs at ',
|
||||
'bac_WORKSTN_BACKUP_USB' => 'Backup is made on local removable disk',
|
||||
'bac_WORKSTN_BACKUP_VFSTYPE' => ' via ',
|
||||
'bac_WORKSTN_BACKUPS' => 'Workstation backups are ',
|
||||
'bac_WORKSTN_CONFIGURE' => 'Configure workstation backup',
|
||||
'bac_WORKSTN_FULL_BACKUP_DAY' => 'Full backup session (new backup sets) is allowed only on',
|
||||
'bac_WORKSTN_FULL_BACKUP_EVERYDAY' => 'Full backup sessions (new backup set) are allowed everyday',
|
||||
'bac_WORKSTN_LOGIN' => 'Login name',
|
||||
'bac_WORKSTN_NAME' => 'Workstation IP or hostname',
|
||||
'bac_WORKSTN_NOT_SET' => 'You must first correctly configure your workstation backup',
|
||||
'bac_WORKSTN_RESTORE' => 'Restore from workstation',
|
||||
'bac_WORKSTN_SEL_REST_DESC' => 'This process will restore only specified files and directories. You must first choose
|
||||
the backup from which the files will be restored. If you don"t know in which backup
|
||||
are the required files, you can select "All backups" option. <br/><br/>
|
||||
The next panel will display available files and directories,
|
||||
so you can choose the ones to restore. To restrict the number of files and directories
|
||||
displayed in this panel, you have the option to give now a filtering expression,
|
||||
applied as a regular expression to the displayed names.<br/><br/>
|
||||
You have the responsibility not to restore files which could break the
|
||||
functioning of your server.<br/> <br/>Currently, files will be restored from :',
|
||||
'bac_WORKSTN_SEL_RESTORE' => 'Selective file restore from workstation',
|
||||
'bac_WORKSTN_SELECTIVE_RESTORE' => 'Workstation selective file restore',
|
||||
'bac_WORKSTN_TIMEOUT' => 'Optional backup session timeout (hours)',
|
||||
'bac_WORKSTN_VERIFY' => 'Verify workstation backup',
|
||||
'bac_X_BACKUP_OR_RESTORE' => 'X Backup or restore server data',
|
||||
'bac_YOU_MUST_REBOOT' => 'You must reboot the server to activate any configuration changes that were
|
||||
made as a result of this restore.',
|
||||
'Backup or restore' => 'Backup or restore',
|
81
output/Backup/default/back_tape_configure.html.new.ep
Normal file
81
output/Backup/default/back_tape_configure.html.new.ep
Normal file
@@ -0,0 +1,81 @@
|
||||
% layout "default", title => "Sme server 2 - backup";
|
||||
|
||||
% content_for "module" => begin
|
||||
|
||||
<div id="module" class="module back_tape_configure-panel">
|
||||
% if (config->{debug} == 1) {
|
||||
<p>
|
||||
%= dumper $c->current_route
|
||||
%= dumper $bac_datas
|
||||
</p>
|
||||
% }
|
||||
|
||||
% if ( stash "error" ) {
|
||||
<br><div class=sme-error>
|
||||
%= $c->render_to_string(inline => stash "error")
|
||||
</div>
|
||||
%}
|
||||
|
||||
<h1><%= $title%></h1>
|
||||
|
||||
<h2>
|
||||
%=l "bac_ENABLE_DISABLE_TAPE"
|
||||
</h2><br>
|
||||
|
||||
%= $c->render_to_string(inline => (l "bac_TAPE_CONFIG_DESC"))
|
||||
|
||||
%= form_for "/backupd" => (method => "POST") => begin
|
||||
|
||||
<p>
|
||||
<span class=label>
|
||||
%=l "bac_ENABLE_TAPE_BACKUP"
|
||||
</span><span class=data>
|
||||
% if ( $bac_datas->{status} eq "checked" ) {
|
||||
<input type="checkbox" name="Tapebackup" checked >
|
||||
%} else {
|
||||
%= check_box "Tapebackup"
|
||||
%}
|
||||
</span>
|
||||
</p>
|
||||
|
||||
|
||||
<p>
|
||||
<span class=label>
|
||||
%=l "bac_TAPE_BACKUP_TIME"
|
||||
</span><span class=data>
|
||||
% 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=label-->
|
||||
%=l "AM/PM:"
|
||||
<!--/span--><span class=data>
|
||||
% param "BackupAMPM" => $bac_datas->{backupAMPM} unless param "BackupAMPM";
|
||||
%= select_field "BackupAMPM" => ["AM", "PM"], class => "input"
|
||||
</span>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
<span class=label>
|
||||
%=l "bac_LOAD_TAPE_REMINDER_TIME"
|
||||
</span><span class=data>
|
||||
% 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=label-->
|
||||
%=l "AM/PM:"
|
||||
<!--/span--><span class=data>
|
||||
% param "ReminderAMPM" => $bac_datas->{reminderAMPM} unless param "ReminderAMPM";
|
||||
%= select_field "ReminderAMPM" => ["AM", "PM"], class => "input"
|
||||
</span>
|
||||
</p><br>
|
||||
|
||||
%= hidden_field "Function" => $bac_datas->{"function"}
|
||||
%= submit_button $c->l("Update"), class => "action"
|
||||
|
||||
% end
|
||||
</div>
|
||||
% end
|
154
output/Backup/default/back_workstn_configure1.html.new.ep
Normal file
154
output/Backup/default/back_workstn_configure1.html.new.ep
Normal file
@@ -0,0 +1,154 @@
|
||||
% layout "default", title => "Sme server 2 - backup - conf";
|
||||
|
||||
% content_for "module" => begin
|
||||
|
||||
<div id="module" class="module back_workstn_configure1-panel">
|
||||
% if (config->{debug} == 1) {
|
||||
<p>
|
||||
%= dumper $c->current_route
|
||||
%= dumper $bac_datas
|
||||
</p>
|
||||
% }
|
||||
|
||||
% if ( stash "error" ) {
|
||||
<br><div class=sme-error>
|
||||
%= $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=label>
|
||||
%=l "bac_ENABLE_WORKSTN_BACKUP"
|
||||
</span><span class=data>
|
||||
% 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=label>
|
||||
%=l "bac_WORKSTN_NAME"
|
||||
</span><span class=data>
|
||||
% param "BackupwkStation" => $bac_datas->{station} unless param "BackupwkStation";
|
||||
%= text_field "BackupwkStation", size => 20, class => "input"
|
||||
</span><br>
|
||||
%}
|
||||
% if ( $bac_datas->{vfstype} eq "usb" ) {
|
||||
<span class=label>
|
||||
%=l "bac_local removable disk"
|
||||
</span><span class=data>
|
||||
% param "BackupwkFolder" => $bac_datas->{mount} unless param "BackupwkFolder";
|
||||
%= select_field "BackupwkFolder" => $c->get_BackupwkDest_options( $bac_datas->{vfstype}), class => "input"
|
||||
</span><br>
|
||||
% } elsif ( $bac_datas->{vfstype} eq "mnt") {
|
||||
<span class=label>
|
||||
%=l "bac_Mounted disk"
|
||||
</span><span class=data>
|
||||
% param "BackupwkFolder" => $bac_datas->{folder} unless param "BackupwkFolder";
|
||||
%= select_field "BackupwkFolder" => $c->get_BackupwkDest_options( $bac_datas->{vfstype}), class => "input"
|
||||
</span><br>
|
||||
% } else {
|
||||
<span class=label>
|
||||
%=l "bac_SHARED_FOLDER_NAME"
|
||||
</span><span class=data>
|
||||
% param "BackupwkFolder" => $bac_datas->{folder} unless param "BackupwkFolder";
|
||||
%= text_field "BackupwkFolder", size => 20, class => "input"
|
||||
</span><br>
|
||||
%}
|
||||
% if ( $bac_datas->{vfstype} eq "cifs" ) {
|
||||
<span class=label>
|
||||
%=l "bac_WORKSTN_LOGIN"
|
||||
</span><span class=data>
|
||||
% param "BackupwkLogin" => $bac_datas->{login} unless param "BackupwkLogin";
|
||||
%= text_field "BackupwkLogin", size => 12, class => "input"
|
||||
</span><br><span class=label>
|
||||
%=l "bac_PASSWORD"
|
||||
</span><span class=data>
|
||||
% param "BackupwkPassword" => $bac_datas->{password} unless param "BackupwkPassword";
|
||||
%= password_field "BackupwkPassword", size => 12, class => "input"
|
||||
</span>
|
||||
%}
|
||||
</p><br><h3>
|
||||
%= l "bac_WORKSTN_BACKUP_SETTINGS"
|
||||
</h3><br>
|
||||
|
||||
<p><span class=label>
|
||||
%=l "bac_NUMBER_OF_SETS"
|
||||
</span><span class=data>
|
||||
% param "SetsNumber" => $bac_datas->{setsNumber} unless param "SetsNumber";
|
||||
%= text_field "SetsNumber", size => "3"
|
||||
</span>
|
||||
%=l "bac_NUMBER_OF_FILES_IN_SET"
|
||||
<span class=data>
|
||||
% param "Filesinset" => $bac_datas->{filesinset} unless param "Filesinset";
|
||||
%= text_field "Filesinset", size => "3"
|
||||
</span></p>
|
||||
|
||||
<p>
|
||||
<span class=label>
|
||||
%=l "bac_WORKSTN_BACKUP_TIME"
|
||||
</span><span class=data>
|
||||
% 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=data>
|
||||
% param "BackupwkAMPM" => $bac_datas->{ampm} unless param "BackupwkAMPM";
|
||||
%= select_field "BackupwkAMPM" => ["AM", "PM"], class => "input"
|
||||
</span>
|
||||
</p>
|
||||
|
||||
<p><span class=label>
|
||||
%=l "bac_WORKSTN_TIMEOUT"
|
||||
</span><span class=data>
|
||||
% param "BackupwkTimeout" => $bac_datas->{timeout} unless param "BackupwkTimeout";
|
||||
%= text_field "BackupwkTimeout", size => "2"
|
||||
</span>
|
||||
%=l "bac_INC_ONLY_TIMEOUT"
|
||||
<span class=data>
|
||||
% if ( $bac_datas->{incOnlyTimeout} eq "checked" ) {
|
||||
<input type="checkbox" name="IncOnlyTimeout" checked >
|
||||
%} else {
|
||||
%= check_box "IncOnlyTimeout"
|
||||
%}
|
||||
</span></p>
|
||||
|
||||
<p>
|
||||
<span class=label>
|
||||
%=l "bac_COMPRESSION_LEVEL"
|
||||
</span><span class=data>
|
||||
% param "Compression" => $bac_datas->{compression} unless param "Compression";
|
||||
%= text_field "Compression", size => "1"
|
||||
</span>
|
||||
%=l "bac_FULL_ONLY_ON"
|
||||
<span class=data>
|
||||
% param "Dof" => $bac_datas->{dof} unless param "Dof";
|
||||
%= select_field "Dof" => $c->get_dow_list(), class => "input"
|
||||
</p><br>
|
||||
|
||||
|
||||
%= hidden_field "Function" => $bac_datas->{function}
|
||||
%= hidden_field "VFSType" => $bac_datas->{vfstype}
|
||||
%= submit_button $c->l("Update"), class => "action"
|
||||
% end
|
||||
</div>
|
||||
% end
|
36
output/Backup/default/back_workstn_restore1.html.new.ep
Normal file
36
output/Backup/default/back_workstn_restore1.html.new.ep
Normal file
@@ -0,0 +1,36 @@
|
||||
% layout "default", title => "Sme server 2 - restore";
|
||||
|
||||
% content_for "module" => begin
|
||||
|
||||
<div id="module" class="module back_workstn_restore1-panel">
|
||||
% if (config->{debug} == 1) {
|
||||
<p>
|
||||
%= dumper $c->current_route
|
||||
%= dumper $bac_datas
|
||||
</p>
|
||||
% }
|
||||
|
||||
% if ( stash "error" ) {
|
||||
<br><div class=sme-error>
|
||||
%= $c->render_to_string(inline => stash "error")
|
||||
</div>
|
||||
%}
|
||||
|
||||
<h1><%= $title%></h1>
|
||||
|
||||
%= form_for "/backupd" => (method => "POST") => begin
|
||||
|
||||
<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("Reboot"), class => "action"
|
||||
% end
|
||||
</div>
|
||||
|
||||
% end
|
51
output/Backup/default/back_workstn_verify.html.new.ep
Normal file
51
output/Backup/default/back_workstn_verify.html.new.ep
Normal file
@@ -0,0 +1,51 @@
|
||||
% layout "default", title => "Sme server 2 - backup - verify";
|
||||
% content_for "module" => begin
|
||||
|
||||
<div id="module" class="module back_workstn_verify-panel">
|
||||
% if (config->{debug} == 1) {
|
||||
<p>
|
||||
%= dumper $c->current_route
|
||||
%= dumper $bac_datas
|
||||
</p>
|
||||
% }
|
||||
|
||||
% if ( stash "error" ) {
|
||||
<br><div class=sme-error>
|
||||
%= $c->render_to_string(inline => stash "error")
|
||||
</div>
|
||||
%}
|
||||
|
||||
<h1><%= $title%></h1>
|
||||
|
||||
<h2>
|
||||
%=l "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 "Verify_WORKSTN_BACKUP_DESC") . " " . $c->get_shared_folder_to_verify())
|
||||
%}
|
||||
<br><br><span class=label>
|
||||
%=l "bac_SELECT_BACKUP_FILE"
|
||||
</span><span class=data>
|
||||
%= select_field "Backupset" => $c->get_Backupset_options(), class => "input"
|
||||
</span><br>
|
||||
|
||||
<p><span class=label>
|
||||
%=l "bac_CHECK_TO_VERIFY_FULL_RESTORE"
|
||||
</span><span class=data>
|
||||
%= check_box "Verifyall"
|
||||
</span></p><br>
|
||||
|
||||
%=l "bac_CHECK_INTEGRITY_WARNING"
|
||||
|
||||
<br><br>
|
||||
%= hidden_field "Function" => $bac_datas->{"function"} . "1"
|
||||
%= submit_button $c->l("Verify"), class => "action"
|
||||
|
||||
% end
|
||||
</div>
|
||||
% end
|
1
output/Bugreport/bugreport_en.lex.diff
Normal file
1
output/Bugreport/bugreport_en.lex.diff
Normal file
@@ -0,0 +1 @@
|
||||
'Report a bug' => 'Report a bug',
|
27
output/Bugreport/bugreport_en.lex.new1
Normal file
27
output/Bugreport/bugreport_en.lex.new1
Normal file
@@ -0,0 +1,27 @@
|
||||
#
|
||||
# Lex file for Bugreport generated on 2025-07-17 09:52:30
|
||||
#
|
||||
'bugr_ALTERED_EVENTS' => 'A list of SME events that have been altered on your server from a base install',
|
||||
'bugr_ALTERED_TEMPLATES' => 'A list of SME templates that have been altered on your server from a base install',
|
||||
'bugr_AWARE_SME' => 'You are probaly aware that SME server is developed and supported by a collaborative community of volunteers from all over the world. While SME server is free to download and use, maintaining the infrastructure behind the project (eg. hosting the forums and wiki, providing repositories and build servers etc.) costs real money in the real world.',
|
||||
'bugr_CONSIDER_DONATING' => 'Please consider donating to the project by clicking on the image link below:',
|
||||
'bugr_CREATE_REPORT' => 'Create configuration report',
|
||||
'bugr_DO_NOT_PANIC' => 'Don"t Panic!',
|
||||
'bugr_DONATING' => 'Have you considered donating?',
|
||||
'bugr_Download this report' => 'Download this report !',
|
||||
'bugr_FOLLOWING_REPORT_MIGHT_HELP' => 'It will also help if you provide some vital information on the configuration of your SME-server in your bug report. By clicking on the "Create configuration report" button below, you can create and download a text file containing this information. Please attach this file to your bug report as well.',
|
||||
'bugr_FORM_TITLE' => 'Report a Bug',
|
||||
'bugr_INSTALLED_RPMS' => 'A list of additional RPMs installed on your server',
|
||||
'bugr_KERNEL_AND_ARCH' => 'Current running kernel version and architecture',
|
||||
'bugr_PLEASE_REPORT_HERE' => 'In order to help developers to diagnose and fix your issue, please download one of the following text templates, fill it out and paste it into your bug report at',
|
||||
'bugr_PREVIOUS_SERVER_MODE' => 'Previous server mode',
|
||||
'bugr_PRIVACY' => 'No privacy related data (ie. users, passwords, IP addresses) will be included in the report.',
|
||||
'bugr_REPORT_CONTENT' => 'The report will contain the following information',
|
||||
'bugr_SERVER_MODE' => 'Server mode',
|
||||
'bugr_SME_EXPERIENCE' => 'Unfortunately there is no software without bugs, and you probably came to this page because of an issue you are experiencing with your SME-server installation.',
|
||||
'bugr_SME_VERSION' => 'Koozali SME Server version',
|
||||
'bugr_THANK_YOU' => 'Thank you for your support!',
|
||||
'bugr_USE_TEMPLATE' => 'Please refer to the following link on how to report efficiency a bug and use its template',
|
||||
'bugr_YOUR_HELP' => 'In very much the same way you need us to address your current issue, we need YOUR help to keep this project alive!',
|
||||
'bugr_YUM_REPOS' => 'A list of additional software repositories configured on your server',
|
||||
'Report a bug' => 'Report a bug',
|
68
output/Clamav/AdminLTE/clamav.html.new.ep
Normal file
68
output/Clamav/AdminLTE/clamav.html.new.ep
Normal file
@@ -0,0 +1,68 @@
|
||||
% layout "AdminLTE", title => "Sme server 2 - clamav";
|
||||
|
||||
% content_for "module" => begin
|
||||
|
||||
<div class="card-body">
|
||||
|
||||
% if (config->{debug} == 1) {
|
||||
<pre>
|
||||
Route: <%= dumper $c->current_route %><br>
|
||||
FsS stat: <%= dumper $clm_datas->{FilesystemScan}%> <br>
|
||||
Quar stat: <%= dumper $clm_datas->{Quarantine} %>
|
||||
</pre>
|
||||
% }
|
||||
|
||||
<h1><%= $title %></h1>
|
||||
<!-- 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-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 "Daily") => "daily"], [ (l "Never") => "disabled"], [ (l "Weekly") => "weekly"]], class => "form-select" %>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<br>
|
||||
|
||||
<div class="row g-3 align-items-center">
|
||||
<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" %>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<br>
|
||||
|
||||
<div>
|
||||
<div>
|
||||
<h6><%= l "clm_LABEL_CLAM_VERSIONS" %>:</h6>
|
||||
</div>
|
||||
<div>
|
||||
<%= $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-sm"><%= $btn %></button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</form>
|
||||
</div>
|
||||
%end
|
0
output/Clamav/clamav_en.lex.diff
Normal file
0
output/Clamav/clamav_en.lex.diff
Normal file
12
output/Clamav/clamav_en.lex.new1
Normal file
12
output/Clamav/clamav_en.lex.new1
Normal file
@@ -0,0 +1,12 @@
|
||||
#
|
||||
# Lex file for Clamav generated on 2025-07-17 09:52:30
|
||||
#
|
||||
'clm_DESC_FILESYSTEM_SCAN_PERIOD' => '<h2>General Settings</h2>
|
||||
If this option is enabled then the filesystem will be
|
||||
scanned for viruses. A report of any found viruses will be
|
||||
emailed to the administrator.',
|
||||
'clm_FORM_TITLE' => 'Antivirus settings',
|
||||
'clm_LABEL_CLAM_VERSIONS' => 'ClamAV and db versions',
|
||||
'clm_LABEL_FILESYSTEM_SCAN_PERIOD' => 'Scan filesystem',
|
||||
'clm_LABEL_QUARANTINE' => 'Quarantine infected files',
|
||||
'clm_SUCCESS' => 'The new clamav antivirus settings have been saved.',
|
45
output/Clamav/default/clamav.html.new.ep
Normal file
45
output/Clamav/default/clamav.html.new.ep
Normal file
@@ -0,0 +1,45 @@
|
||||
% layout "default", title => "Sme server 2 - clamav";
|
||||
|
||||
% content_for "module" => begin
|
||||
<div id="module" class="module clamav-panel">
|
||||
%if (config->{debug} == 1) {
|
||||
<p>(DBG)route: <%= $c->current_route %><br>
|
||||
(DBG)FsS stat: <%= $clm_datas->{FilesystemScan}%> <br>
|
||||
(DBG)Quar stat: <%=$clm_datas->{Quarantine} %>
|
||||
</p>
|
||||
%}
|
||||
<h1><%= $title %></h1>
|
||||
<br>
|
||||
<%= $modul %>
|
||||
<% my $btn = l("SAVE"); %>
|
||||
|
||||
%= form_for "clamav" => (method => "POST") => begin
|
||||
<p>
|
||||
<span class=label>
|
||||
%=l "clm_LABEL_FILESYSTEM_SCAN_PERIOD"
|
||||
</span><span class=data>
|
||||
% param "FilesystemScan" => $clm_datas->{FilesystemScan} unless param "FilesystemScan";
|
||||
%= select_field "FilesystemScan" => [[ (l "Daily") => "daily"], [ (l "Never") => "disabled"], [ (l "Weekly") => "weekly"]], class => "input"
|
||||
</span>
|
||||
</p>
|
||||
<p>
|
||||
<span class=label>
|
||||
%=l "clm_LABEL_QUARANTINE"
|
||||
</span><span class=data>
|
||||
% param "Quarantine" => $clm_datas->{Quarantine} unless param "Quarantine";
|
||||
%= select_field "Quarantine" => [[ (l "ENABLED") => "enabled"], [ (l "DISABLED") => "disabled"]], class => "input"
|
||||
<br>
|
||||
</span>
|
||||
</p>
|
||||
<p>
|
||||
<span class=label>
|
||||
%=l "clm_LABEL_CLAM_VERSIONS"
|
||||
</span><span class=data>
|
||||
%= $clm_datas->{clam_versions}
|
||||
<br>
|
||||
</span>
|
||||
</p>
|
||||
%= submit_button "$btn", class => "action"
|
||||
% end
|
||||
</div>
|
||||
%end
|
41
output/Datetime/datetime_en.lex.diff
Normal file
41
output/Datetime/datetime_en.lex.diff
Normal file
@@ -0,0 +1,41 @@
|
||||
'dat_APRIL' => 'April',
|
||||
'dat_AUGUST' => 'August',
|
||||
'dat_BETWEEN_1_AND_12' => 'Please choose an hour between 1 and 12.',
|
||||
'dat_BETWEEN_1_AND_31' => 'Please choose a day between 1 and 31.',
|
||||
'dat_COULD_NOT_OPEN_TZ_FILE' => 'Error: Could not open timezone file for reading: ',
|
||||
'dat_CURRENT_SETTING' => 'Current setting',
|
||||
'dat_DECEMBER' => 'December',
|
||||
'dat_ERR_CHANGING_TS' => 'Error while changing network time server setting',
|
||||
'dat_ERR_SETTING_CLOCK' => 'Error occurred while setting system time and hardware clock.',
|
||||
'dat_FEBRUARY' => 'February',
|
||||
'dat_FOUR_DIGIT_YEAR' => 'Please choose a four-digit year between 1900 and 2200.',
|
||||
'dat_INVALID_DAY' => 'Error: invalid day of month: ',
|
||||
'dat_INVALID_MONTH' => 'Error: invalid month',
|
||||
'dat_INVALID_NTP_ADDR' => 'Invalid NTP server address: ',
|
||||
'dat_INVALID_YEAR' => 'Error: invalid year: ',
|
||||
'dat_JANUARY' => 'January',
|
||||
'dat_JULY' => 'July',
|
||||
'dat_JUNE' => 'June',
|
||||
'dat_MARCH' => 'March',
|
||||
'dat_MAY' => 'May',
|
||||
'dat_MONTH_BETWEEN_1_AND_12' => 'Please choose a month value between 1 and 12.',
|
||||
'dat_NETWORK_TIME_SERVER' => 'Network Time Server',
|
||||
'dat_NEW_DATE_AND_TIME' => 'New date and time setting:',
|
||||
'dat_NEW_H/M/S' => 'New hour/min/sec:',
|
||||
'dat_NEW_M/D/Y' => 'New month/day/year:',
|
||||
'dat_NOVEMBER' => 'November',
|
||||
'dat_NTP_CONFIGURE_TITLE' => 'Configure Network Time Server',
|
||||
'dat_NTP_DISABLE_TITLE' => 'Disable Network Time Server',
|
||||
'dat_NTP_ENABLE_TITLE' => 'Enable Network Time Server',
|
||||
'dat_NTP_SERVER' => 'NTP Server',
|
||||
'dat_OCTOBER' => 'October',
|
||||
'dat_SEPTEMBER' => 'September',
|
||||
'dat_SERVER_DISABLED' => 'Network time server disabled successfully',
|
||||
'dat_SERVER_DISABLED_DESC' => 'You have disabled this service: The server will rely on its internal
|
||||
clock, and <b>will not</b> try to synchronize from a time server.',
|
||||
'dat_SET_DATE_TITLE' => 'Set Date and Time',
|
||||
'dat_SETTING_DATE_AND_TIME' => 'Setting date and time',
|
||||
'dat_SYNC_WITH' => 'This server is now configured to synchronize periodically
|
||||
(via the Internet) with:',
|
||||
'dat_VERIFY_DATE_AND_TIME' => 'Verify date and time',
|
||||
'Date and time' => 'Date and time',
|
65
output/Datetime/datetime_en.lex.new1
Normal file
65
output/Datetime/datetime_en.lex.new1
Normal file
@@ -0,0 +1,65 @@
|
||||
#
|
||||
# Lex file for Datetime generated on 2025-07-17 09:52:31
|
||||
#
|
||||
'dat_APRIL' => 'April',
|
||||
'dat_AUGUST' => 'August',
|
||||
'dat_BETWEEN_0_AND_59' => 'Please choose a minute between 0 and 59.',
|
||||
'dat_BETWEEN_1_AND_12' => 'Please choose an hour between 1 and 12.',
|
||||
'dat_BETWEEN_1_AND_31' => 'Please choose a day between 1 and 31.',
|
||||
'dat_COULD_NOT_OPEN_TZ_FILE' => 'Error: Could not open timezone file for reading: ',
|
||||
'dat_CURRENT_SETTING' => 'Current setting',
|
||||
'dat_DECEMBER' => 'December',
|
||||
'dat_ERR_CHANGING_TS' => 'Error while changing network time server setting',
|
||||
'dat_ERR_SETTING_CLOCK' => 'Error occurred while setting system time and hardware clock.',
|
||||
'dat_FEBRUARY' => 'February',
|
||||
'dat_FORM_TITLE' => 'Date and time configuration',
|
||||
'dat_FOUR_DIGIT_YEAR' => 'Please choose a four-digit year between 1900 and 2200.',
|
||||
'dat_INITIAL_DESC' => 'This is where you configure the date and time of this server. You may use an existing network time server or
|
||||
manually set the date and time for your time zone.',
|
||||
'dat_Invalid_date' => 'Invalid date',
|
||||
'dat_INVALID_DAY' => 'Error: invalid day of month: ',
|
||||
'dat_INVALID_HOUR' => 'Error: invalid hour: ',
|
||||
'dat_INVALID_MINUTE' => 'Error: invalid minute: ',
|
||||
'dat_INVALID_MONTH' => 'Error: invalid month',
|
||||
'dat_INVALID_NTP_ADDR' => 'Invalid NTP server address: ',
|
||||
'dat_INVALID_NTP_SERVER' => 'Invalid NTP server, the server <b>will not</b> try to synchronize from a time server.',
|
||||
'dat_INVALID_SECOND' => 'Error: invalid second',
|
||||
'dat_INVALID_YEAR' => 'Error: invalid year: ',
|
||||
'dat_JANUARY' => 'January',
|
||||
'dat_JULY' => 'July',
|
||||
'dat_JUNE' => 'June',
|
||||
'dat_manually_set' => 'Set manually',
|
||||
'dat_MARCH' => 'March',
|
||||
'dat_MAY' => 'May',
|
||||
'dat_MONTH_BETWEEN_1_AND_12' => 'Please choose a month value between 1 and 12.',
|
||||
'dat_NETWORK_TIME_SERVER' => 'Network Time Server',
|
||||
'dat_NEW_DATE_AND_TIME' => 'New date and time setting:',
|
||||
'dat_NEW_H/M/S' => 'New hour/min/sec:',
|
||||
'dat_NEW_M/D/Y' => 'New month/day/year:',
|
||||
'dat_NOVEMBER' => 'November',
|
||||
'dat_NTP_CONFIGURE_DESC' => 'The server is periodically synchronizing the system clock to the network time protocol (NTP) server specified below. To synchronize to a different NTP server, enter a different hostname or IP address in the field below.',
|
||||
'dat_NTP_CONFIGURE_TITLE' => 'Configure Network Time Server',
|
||||
'dat_NTP_DISABLE_DESC' => 'Choose this option to stop syncronizing the system clock to the NTP
|
||||
server.When the NTP service is disabled, you can set the system date and time manually from this page.',
|
||||
'dat_NTP_DISABLE_TITLE' => 'Disable Network Time Server',
|
||||
'dat_NTP_ENABLE_DESC' => 'The server can periodically synchronize the system clock to a network time protocol (NTP) server. If you select this option, enter the hostname or IP address of the NTP server below.',
|
||||
'dat_NTP_ENABLE_TITLE' => 'Enable Network Time Server',
|
||||
'dat_NTP_SERVER' => 'NTP Server',
|
||||
'dat_ntp_server' => 'NTP server',
|
||||
'dat_NTP_Server_URL' => 'NTP Server URL:',
|
||||
'dat_OCTOBER' => 'October',
|
||||
'dat_SEPTEMBER' => 'September',
|
||||
'dat_SERVER_DISABLED' => 'Network time server disabled successfully',
|
||||
'dat_SERVER_DISABLED_DESC' => 'You have disabled this service: The server will rely on its internal
|
||||
clock, and <b>will not</b> try to synchronize from a time server.',
|
||||
'dat_SET_DATE_TITLE' => 'Set Date and Time',
|
||||
'dat_set_manually' => 'Set Date and Time:',
|
||||
'dat_SETTING_DATE_AND_TIME' => 'Setting date and time',
|
||||
'dat_SETTINGS_CHANGED' => 'Network time server setting changed successfully',
|
||||
'dat_SYNC_WITH' => 'This server is now configured to synchronize periodically
|
||||
(via the Internet) with:',
|
||||
'dat_The_time_is_currently' => 'The time is currently:',
|
||||
'dat_TZ' => 'Time zone:',
|
||||
'dat_UPDATING_CLOCK' => 'System clock is being updated',
|
||||
'dat_VERIFY_DATE_AND_TIME' => 'Verify date and time',
|
||||
'Date and time' => 'Date and time',
|
1
output/Directory/directory_en.lex.diff
Normal file
1
output/Directory/directory_en.lex.diff
Normal file
@@ -0,0 +1 @@
|
||||
'Directory' => 'Directory',
|
30
output/Directory/directory_en.lex.new1
Normal file
30
output/Directory/directory_en.lex.new1
Normal file
@@ -0,0 +1,30 @@
|
||||
#
|
||||
# Lex file for Directory generated on 2025-07-17 09:52:31
|
||||
#
|
||||
'dir_CITY' => 'Default City',
|
||||
'dir_COMPANY' => 'Default company',
|
||||
'dir_DEPARTMENT' => 'Default department',
|
||||
'dir_DESC_DEPARTMENT' => 'These fields are the LDAP defaults for your organization.
|
||||
Whenever you create a new user account, you will be prompted
|
||||
to enter all of these fields (they can be different for each
|
||||
user) but the values you set here
|
||||
will show up as defaults. This is a convenience to make it
|
||||
faster to create user accounts.',
|
||||
'dir_DESC_DIRECTORY_ACCESS' => ' You can control access to your LDAP directory:
|
||||
the private setting allows access only from your local network, and the public setting allows access from anywhere on the Internet. ',
|
||||
'dir_DESC_EXISTING' => 'You can either leave existing user accounts as they are, using the above defaults only for
|
||||
new users, or you can apply the above defaults to all existing users as well.',
|
||||
'dir_DESCRIPTION' => 'The LDAP server provides a network-available listing of the user accounts
|
||||
and groups on your server, and can be accessed using an LDAP client such as the Address Book feature
|
||||
in Netscape Communicator. Configure your LDAP client with the local IP address of your server,
|
||||
port number 389, and the server root parameter shown below.',
|
||||
'dir_DIRECTORY_ACCESS' => 'LDAP directory access',
|
||||
'dir_EXISTING' => 'Existing users',
|
||||
'dir_FORM_TITLE' => 'Change LDAP directory settings',
|
||||
'dir_LABEL_ROOT' => 'Server root',
|
||||
'dir_LEAVE' => 'Leave as they are',
|
||||
'dir_PHONENUMBER' => 'Default Phone Number',
|
||||
'dir_STREET' => 'Default Street address',
|
||||
'dir_SUCCESS' => 'The new LDAP default settings have been saved.',
|
||||
'dir_UPDATE' => 'Update with new defaults',
|
||||
'Directory' => 'Directory',
|
13
output/Domains/domains_en.lex.diff
Normal file
13
output/Domains/domains_en.lex.diff
Normal file
@@ -0,0 +1,13 @@
|
||||
'dom_corporate' => 'Corporate DNS servers',
|
||||
'dom_DOMAIN_DESCRIPTION_VALIDATION_ERROR' => 'Error: unexpected or missing characters in domain description
|
||||
[_1]. Did not create new domain.',
|
||||
'dom_DOMAIN_NAME_VALIDATION_ERROR' => 'Error: unexpected or missing characters in domain name
|
||||
[_1].The domain name should contain one or more
|
||||
letters, numbers, periods and minus signs. Did not create new domain.',
|
||||
'dom_internet' => 'Internet DNS servers',
|
||||
'dom_localhost' => 'Resolve locally',
|
||||
'dom_NO_VIRTUAL_DOMAINS' => 'There are no domains in the system',
|
||||
'dom_REMOVE_DESC' => 'You are about to remove the domain ',
|
||||
'dom_REMOVE_DESC2' => ' Are you sure you wish to remove this Domain ? ',
|
||||
'dom_SYSTEM_DOMAIN_ERROR' => 'Error: domain [_1] is your system domain name. You
|
||||
cannot have a domain with the same name. Did not create new domain.',
|
60
output/Domains/domains_en.lex.new1
Normal file
60
output/Domains/domains_en.lex.new1
Normal file
@@ -0,0 +1,60 @@
|
||||
#
|
||||
# Lex file for Domains generated on 2025-07-17 09:52:31
|
||||
#
|
||||
'dom_ABOUT_TO_REMOVE' => 'Are you sure you wish to remove this domain ?',
|
||||
'dom_ADD_DOMAIN' => 'Add domain',
|
||||
'dom_CONTENT' => '[_1] i-bay',
|
||||
'dom_CONTENT_FIELD_DESCRIPTION' => 'For the web site, you may choose your primary web site or any
|
||||
i-bay as the content.',
|
||||
'dom_corporate' => 'Corporate DNS servers',
|
||||
'dom_CREATE_TITLE' => 'Create a new domain',
|
||||
'dom_CURRENT_DOMAINS' => 'Current list of domains',
|
||||
'dom_DESC_CORPORATE_DNS' => 'If this server does not have access to the Internet, or
|
||||
you have special requirements for DNS resolution,
|
||||
enter the DNS server IP addresses here.
|
||||
These fields should be left blank unless
|
||||
you have a specific reason to configure other DNS servers.
|
||||
You should not enter the address of your ISP"s DNS servers
|
||||
here, as the server is capable of resolving all
|
||||
Internet DNS names without this additional configuration.',
|
||||
'dom_DESC_CORPORATE_DNS_CURRENT' => 'Corporate DNS Settings',
|
||||
'dom_DESC_NAMESERVERS' => 'You can select whether this domain is resolved locally,
|
||||
passed to the corporate DNS servers, or resolved by
|
||||
the Internet DNS servers. The default will be correct
|
||||
for most networks.',
|
||||
'dom_DOMAIN_DESCRIPTION_VALIDATION_ERROR' => 'Error: unexpected or missing characters in domain description
|
||||
[_1]. Did not create new domain.',
|
||||
'dom_DOMAIN_IN_USE_ERROR' => 'Error: domain [_1] is already in use. Did not create
|
||||
new domain.',
|
||||
'dom_DOMAIN_NAME_VALIDATION_ERROR' => 'Error: unexpected or missing characters in domain name
|
||||
[_1].The domain name should contain one or more
|
||||
letters, numbers, periods and minus signs. Did not create new domain.',
|
||||
'dom_DOMAINS_PAGE_CORPORATE_DNS' => 'Modify corporate DNS settings',
|
||||
'dom_ERROR_WHILE_REMOVING_DOMAIN' => 'Error: internal failure while removing domain [_1].',
|
||||
'dom_FORM_DESCRIPTION' => 'When you create a domain, your server will be able to
|
||||
receive e-mail for that domain and will also be able to host a
|
||||
web site for that domain.',
|
||||
'dom_FORM_TITLE' => 'Manage domains',
|
||||
'dom_internet' => 'Internet DNS servers',
|
||||
'dom_LABEL_CORPORATE_DNS_PRIMARY' => 'Primary corporate DNS server',
|
||||
'dom_LABEL_CORPORATE_DNS_SECONDARY' => 'Secondary corporate DNS server',
|
||||
'dom_LABEL_NAMESERVERS' => 'Domain DNS servers',
|
||||
'dom_localhost' => 'Resolve locally',
|
||||
'dom_MODIFY_TITLE' => 'Modify domain',
|
||||
'dom_NO_VIRTUAL_DOMAINS' => 'There are no domains in the system',
|
||||
'dom_NONEXISTENT_DOMAIN_ERROR' => 'Error: [_1] is not an existing domain.',
|
||||
'dom_PRIMARY_SITE' => 'primary site',
|
||||
'dom_REMOVE_DESC' => 'You are about to remove the domain ',
|
||||
'dom_REMOVE_DESC2' => ' Are you sure you wish to remove this Domain ? ',
|
||||
'dom_REMOVE_DESCRIPTION' => 'You are about to remove the domain "[_1]" ([_2]).',
|
||||
'dom_REMOVE_TITLE' => 'Remove domain',
|
||||
'dom_SUCCESSFULLY_CREATED' => 'Successfully created domain [_1].Your web
|
||||
server is now being restarted. The links on this page will be
|
||||
inactive until the web server restart is complete.',
|
||||
'dom_SUCCESSFULLY_DELETED' => 'Successfully deleted domain [_1]. Your web server
|
||||
is now being restarted. The links on this page will be inactive
|
||||
until the web server restart is complete.',
|
||||
'dom_SUCCESSFULLY_MODIFIED' => 'Successfully modified domain [_1].Your web
|
||||
server is now being restarted. The links on this page will be inactive until the web server restart is complete.',
|
||||
'dom_SYSTEM_DOMAIN_ERROR' => 'Error: domain [_1] is your system domain name. You
|
||||
cannot have a domain with the same name. Did not create new domain.',
|
272
output/Emailsettings/AdminLTE/_mai_REC.html.new.ep
Normal file
272
output/Emailsettings/AdminLTE/_mai_REC.html.new.ep
Normal file
@@ -0,0 +1,272 @@
|
||||
%# layout "AdminLTE", title => "Sme server 2 - emailreceive";
|
||||
|
||||
%# content_for "module" => begin
|
||||
|
||||
%# use constant FALSE => 0;
|
||||
%# use constant TRUE => 1;
|
||||
|
||||
<!-- <div class="card-body"> -->
|
||||
|
||||
% if (config->{debug} == 1) {
|
||||
<pre>
|
||||
<<%= dumper $c->current_route %>
|
||||
<<%= dumper $mai_data %>
|
||||
<<%= dumper $c->param("SMTPAuth") %>
|
||||
</pre>
|
||||
% }
|
||||
|
||||
% if ( stash "error" ) {
|
||||
<br>
|
||||
<div class="text-danger">
|
||||
<<%= $c->render_to_string(inline => stash "error") %>
|
||||
</div>
|
||||
% }
|
||||
|
||||
<!--<h1><%#= $title %></h1> -->
|
||||
|
||||
<h2><%= $c->l("mai_DESC_STATE_RECEPTION_BUTTON") %></h2>
|
||||
|
||||
<br>
|
||||
|
||||
<form action="/smanager/emailsettingsu" method="POST">
|
||||
|
||||
<div>
|
||||
<%= l "mai_DESC_MODE" %>
|
||||
</div>
|
||||
|
||||
<br>
|
||||
|
||||
<div class="row g-3 align-items-center">
|
||||
<div class="col-md-2">
|
||||
<%= l "mai_LABEL_MODE" %>
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
% param "FetchmailMethod" => $mai_data->{fetchmailmethod} unless param "FetchmailMethod";
|
||||
<%= select_field "FetchmailMethod" => $c->get_retrieval_opt(), class =>"form-select" %>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<br>
|
||||
|
||||
|
||||
<div>
|
||||
<div>
|
||||
<b><i>Note - this first line was disabled?</b></i>
|
||||
|
||||
<br>
|
||||
<%= l "mai_DESC_SMTP_AUTH_CONTROL" %>
|
||||
<br>
|
||||
<b><i>/end</b></i>
|
||||
</div>
|
||||
|
||||
<br>
|
||||
|
||||
<div>
|
||||
<%= l "SMTP port (25) main purpose is to receive emails from another server, STARTTLS is always offered, but auth if offered is only if STARTTLS is also used by client." %>
|
||||
</div>
|
||||
|
||||
<br>
|
||||
|
||||
<div>
|
||||
<%= l "SMTPS port (465) will require implicit SSL/TLS then authenticate to send." %>
|
||||
</div>
|
||||
|
||||
<br>
|
||||
|
||||
<div>
|
||||
<%= l "SMTP Submission port (587) will require STARTTLS, then authenticate to send." %>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<br>
|
||||
|
||||
% my $smtp_mesg=l("SMTP port %u allow client to authenticate:");
|
||||
% param "SMTPAuth" => $c->get_current_smtp_auth( FALSE ) unless param "SMTPAuth";
|
||||
|
||||
<div class="row g-3 align-items-center">
|
||||
<div class="col-md-2">
|
||||
<%= sprintf($smtp_mesg,$c->get_db_prop("qpsmtpd","TCPPort",25)); %>
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
<%= select_field "SMTPAuth" => $c->get_smtp_auth_opt(), class => "form-select" %>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<br>
|
||||
|
||||
% my $smtp_mesg=l("SMTPS SSL/TLS auth: port %u status:");
|
||||
% param "sSMTPAuth" => $c->get_current_smtp_ssl_auth(FALSE,"s", TRUE) unless param "sSMTPAuth";
|
||||
|
||||
<div class="row g-3 align-items-center">
|
||||
<div class="col-md-2">
|
||||
<%= sprintf($smtp_mesg,$c->get_db_prop("sqpsmtpd","TCPPort",465)); %>
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
<%= select_field "sSMTPAuth" => $c->get_smtp_ssl_auth_opt(), class => "form-select" %>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<br>
|
||||
|
||||
% my $smtp_mesg=l("Submission port %u status:");
|
||||
% param "uSMTPAuth" => $c->get_current_smtp_ssl_auth(FALSE,"u", TRUE) unless param "uSMTPAuth";
|
||||
|
||||
<div class="row g-3 align-items-center">
|
||||
<div class="col-md-2">
|
||||
<%= sprintf($smtp_mesg,$c->get_db_prop("uqpsmtpd","TCPPort",587)); %>
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
<!--
|
||||
<pre>
|
||||
<%= dumper $c->get_smtp_ssl_auth_opt() %>
|
||||
<%= dumper $c->get_current_smtp_ssl_auth(FALSE,"s", TRUE) %>
|
||||
<%= dumper $c->get_current_smtp_ssl_auth(FALSE,"u", TRUE) %>
|
||||
<%= dumper $c->get_db_prop("uqpsmtpd","access") %>
|
||||
<%= param "uSMTPAuth" %>
|
||||
</pre>
|
||||
-->
|
||||
<%= select_field "uSMTPAuth" => $c->get_smtp_ssl_auth_opt(), class => "form-select" %>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<br>
|
||||
|
||||
<h2><%= l "mai_TITLE_SECONDARY" %></h2>
|
||||
|
||||
<br>
|
||||
|
||||
<div>
|
||||
<%= l "mai_DESC_SECONDARY" %>
|
||||
</div>
|
||||
|
||||
<br>
|
||||
|
||||
% param "SecondaryMailServer" => $mai_data->{secondarymailserver} unless param "SecondaryMailServer";
|
||||
|
||||
<div class="row g-3 align-items-center">
|
||||
<div class="col-md-2">
|
||||
<label for="inputSecondaryMailServer" class="col-form-label"><%= l "mai_LABEL_SECONDARY" %></label>
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
<input type="text" name="SecondaryMailServer" id="inputSecondaryMailServer" class="form-control" aria-describedby="SecondaryMailServer" value="<%= $mai_data->{secondarymailserver} %>">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<br>
|
||||
|
||||
<div>
|
||||
<%= l "mai_DESC_FETCH_PERIOD" %>
|
||||
</div>
|
||||
|
||||
% param "FreqOffice" => $mai_data->{freqoffice} unless param "FreqOffice";
|
||||
|
||||
<div class="row g-3 align-items-center">
|
||||
<div class="col-md-2">
|
||||
<%= l "mai_LABEL_FETCH_PERIOD" %>
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
<%= select_field "FreqOffice" => $c->fetchmail_freq(), class => "form-select" %>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<br>
|
||||
|
||||
% param "FreqOutside" => $mai_data->{freqoutside} unless param "FreqOutside";
|
||||
|
||||
<div class="row g-3 align-items-center">
|
||||
<div class="col-md-2">
|
||||
<%= l "mai_LABEL_FETCH_PERIOD_NIGHTS" %>
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
<%= select_field "FreqOutside" => $c->fetchmail_freq(), class => "form-select" %>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<br>
|
||||
|
||||
% param "FreqWeekend" => $mai_data->{freqweekend} unless param "FreqWeekend";
|
||||
|
||||
<div class="row g-3 align-items-center">
|
||||
<div class="col-md-2">
|
||||
<%= l "mai_LABEL_FETCH_PERIOD_WEEKENDS" %>
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
<%= select_field "FreqWeekend" => $c->fetchmail_freq(), class => "form-select" %>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<br>
|
||||
|
||||
% param "SecondaryMailAccount" => $mai_data->{secondarymailaccount} unless param "SecondaryMailAccount";
|
||||
|
||||
<div class="row g-3 align-items-center">
|
||||
<div class="col-md-2">
|
||||
<label for="inputSecondaryMailAccount" class="col-form-label"><%= l "mai_LABEL_POP_ACCOUNT" %></label>
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
<input type="text" name="SecondaryMailAccount" id="inputSecondaryMailAccount" class="form-control" aria-describedby="SecondaryMailAccount" value="<%= $mai_data->{secondarymailaccount} %>">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<br>
|
||||
|
||||
% param "SecondaryMailPassword" => $mai_data->{secondarymailpassword} unless param "SecondaryMailPassword";
|
||||
|
||||
<div class="row g-3 align-items-center">
|
||||
<div class="col-md-2">
|
||||
<label for="password" class="col-form-label"><%= l "mai_LABEL_POP_PASS" %></label>
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
<input type="password" name="SecondaryMailPassword" id="password" class="form-control" aria-describedby="SecondaryMailPassword" value="<%= $mai_data->{secondarymailpassword} %>">
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
<span id="togglePassword" class="bi bi-eye"></span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<br>
|
||||
|
||||
% param "SpecifyHeader" => $mai_data->{specifyheader} unless param "SpecifyHeader";
|
||||
|
||||
<div class="row g-3 align-items-center">
|
||||
<div class="col-md-2">
|
||||
<%= l "mai_LABEL_SORT_METHOD" %>
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
<%= select_field "SpecifyHeader" => [[(l "Default") => "off"], [(l "mai_SPECIFY_BELOW") => "on"]], class => "form-select" %>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<br>
|
||||
|
||||
% param "SecondaryMailEnvelope" => $mai_data->{secondarymailenvelope} unless param "SecondaryMailEnvelope";
|
||||
|
||||
<div class="row g-3 align-items-center">
|
||||
<div class="col-md-2">
|
||||
<label for="inputSecondaryMailEnvelope" class="col-form-label"><%= l "mai_LABEL_SORT_HEADER" %></label>
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
<input type="text" name="SecondaryMailEnvelope" id="inputSecondaryEnvelope" class="form-control" aria-describedby="SecondaryMailEnvelope" value="<%= $mai_data->{secondarymailenvelope} %>">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<br>
|
||||
|
||||
% my $btn = l("SAVE");
|
||||
% param "trt" => $mai_data->{trt} unless param "trt";
|
||||
<%= hidden_field "trt" => "REC" %>
|
||||
|
||||
<div class="row g-3 align-items-center">
|
||||
<div class="col-md-2">
|
||||
<button type="submit" class="btn btn-primary btn-sm"><%= $btn %></button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</form>
|
||||
|
||||
</div>
|
||||
|
||||
%#end
|
||||
|
1171
output/Emailsettings/Emailsettings-Custom.new.pm
Normal file
1171
output/Emailsettings/Emailsettings-Custom.new.pm
Normal file
File diff suppressed because it is too large
Load Diff
159
output/Emailsettings/default/_mai_REC.html.new.ep
Normal file
159
output/Emailsettings/default/_mai_REC.html.new.ep
Normal file
@@ -0,0 +1,159 @@
|
||||
%#
|
||||
%# Generated by SM2Gen version:0.9(20Jan2025) Chameleon version:4.5.4 On Python:3.12.3 at 2025-06-29 08:53:20
|
||||
%#
|
||||
<div id="Emailsettings-REC" class="partial Emailsettings-REC">
|
||||
%# <script>
|
||||
%# window.onload = function() {
|
||||
%# SelectInput();
|
||||
%# };
|
||||
%# </script>
|
||||
% if (config->{debug} == 1) {
|
||||
<pre>
|
||||
%= dumper $mai_data
|
||||
</pre>
|
||||
% }
|
||||
% my $btn = l("SAVE");
|
||||
% $c->param(Selected => undef); #This may need deleting for a params panel - only needed for a table
|
||||
|
||||
<h2><%= $c->l("mai_DESC_STATE_RECEPTION_BUTTON") %></h2><br>
|
||||
%= form_for "emailsettingsu" => (method => "POST") => begin
|
||||
% param "trt" => $mai_data->{trt} unless param "trt";
|
||||
%= hidden_field "trt" => $mai_data->{trt}
|
||||
%# Inputs etc in here.
|
||||
%=l "mai_DESC_MODE"
|
||||
|
||||
<p><span class=label>
|
||||
%=l "mai_LABEL_MODE"
|
||||
</span><span class=input>
|
||||
% param "FetchmailMethod" => $mai_data->{fetchmailmethod} unless param "FetchmailMethod";
|
||||
<!--
|
||||
<pre>
|
||||
%= dumper $mai_data->{fetchmailmethod}
|
||||
%= dumper $c->get_retrieval_opt()
|
||||
%= param "FetchmailMethod"
|
||||
</pre>
|
||||
-->
|
||||
%= select_field "FetchmailMethod" => $c->get_retrieval_opt(), class => "input"
|
||||
</span></p>
|
||||
|
||||
%#=l "mai_DESC_SMTP_AUTH_CONTROL"
|
||||
<br />
|
||||
%= l "mai_SMTP_port_(25)"
|
||||
<br />
|
||||
%= l "mai_SMTPS_port_(465)"
|
||||
<br />
|
||||
%= l "mai_SMTP_Submission"
|
||||
<br />
|
||||
|
||||
% my $smtp_mesg=l("mai_SMTP_port_authenticate");
|
||||
<p><span class=label>
|
||||
%= sprintf($smtp_mesg,$c->get_db_prop("qpsmtpd","TCPPort",25));
|
||||
</span><span class=input>
|
||||
% param "SMTPAuth" => $c->get_current_smtp_auth( FALSE ) unless param "SMTPAuth";
|
||||
<!--
|
||||
<pre>
|
||||
%= dumper $c->get_smtp_auth_opt()
|
||||
%= dumper $c->get_current_smtp_auth(FALSE)
|
||||
%= dumper $c->get_db_prop("qpsmtpd","Authentication")
|
||||
%= param "SMTPAuth"
|
||||
</pre>
|
||||
-->
|
||||
%= select_field "SMTPAuth" => $c->get_smtp_auth_opt(), class => "input"
|
||||
</span></p>
|
||||
|
||||
% my $smtp_mesg=l("SMTPS SSL/TLS auth: port %u status:");
|
||||
<p><span class=label>
|
||||
%= sprintf($smtp_mesg,$c->get_db_prop("sqpsmtpd","TCPPort",465));
|
||||
</span><span class=input>
|
||||
% param "sSMTPAuth" => $c->get_current_smtp_ssl_auth(FALSE,"s", TRUE) unless param "sSMTPAuth";
|
||||
|
||||
%= select_field "sSMTPAuth" => $c->get_smtp_ssl_auth_opt(), class => "input"
|
||||
</span></p>
|
||||
|
||||
%my $smtp_mesg=l("Submission port %u status:");
|
||||
<p><span class=label>
|
||||
%= sprintf($smtp_mesg,$c->get_db_prop("uqpsmtpd","TCPPort",587));
|
||||
</span><span class=input>
|
||||
% param "uSMTPAuth" => $c->get_current_smtp_ssl_auth(FALSE,"u", TRUE) unless param "uSMTPAuth";
|
||||
<!--
|
||||
<pre>
|
||||
%= dumper $c->get_smtp_ssl_auth_opt()
|
||||
%= dumper $c->get_current_smtp_ssl_auth(FALSE,"s", TRUE)
|
||||
%= dumper $c->get_current_smtp_ssl_auth(FALSE,"u", TRUE)
|
||||
%= dumper $c->get_db_prop("uqpsmtpd","access")
|
||||
%= param "uSMTPAuth"
|
||||
</pre>
|
||||
-->
|
||||
%= select_field "uSMTPAuth" => $c->get_smtp_ssl_auth_opt(), class => "input"
|
||||
</span></p>
|
||||
|
||||
<!--<hr class="sectionbar" />-->
|
||||
<h2>
|
||||
%=l "mai_TITLE_SECONDARY"
|
||||
</h2><br>
|
||||
|
||||
%=l "mai_DESC_SECONDARY"
|
||||
|
||||
<p><span class=label>
|
||||
%=l "mai_LABEL_SECONDARY"
|
||||
</span><span class=input>
|
||||
% param "SecondaryMailServer" => $mai_data->{secondarymailserver} unless param "SecondaryMailServer";
|
||||
%= text_field "SecondaryMailServer", class => "input"
|
||||
</span></p>
|
||||
|
||||
%=l "mai_DESC_FETCH_PERIOD"
|
||||
|
||||
<p><span class=label>
|
||||
%=l "mai_LABEL_FETCH_PERIOD"
|
||||
</span><span class=input>
|
||||
% param "FreqOffice" => $mai_data->{freqoffice} unless param "FreqOffice";
|
||||
%= select_field "FreqOffice" => $c->fetchmail_freq(), class => "input"
|
||||
</span></p>
|
||||
|
||||
<p><span class=label>
|
||||
%=l "mai_LABEL_FETCH_PERIOD_NIGHTS"
|
||||
</span><span class=input>
|
||||
% param "FreqOutside" => $mai_data->{freqoutside} unless param "FreqOutside";
|
||||
%= select_field "FreqOutside" => $c->fetchmail_freq(), class => "input"
|
||||
</span></p>
|
||||
|
||||
<p><span class=label>
|
||||
%=l "mai_LABEL_FETCH_PERIOD_WEEKENDS"
|
||||
</span><span class=input>
|
||||
% param "FreqWeekend" => $mai_data->{freqweekend} unless param "FreqWeekend";
|
||||
%= select_field "FreqWeekend" => $c->fetchmail_freq(), class => "input"
|
||||
</span></p>
|
||||
|
||||
<p><span class=label>
|
||||
%=l "mai_LABEL_POP_ACCOUNT"
|
||||
</span><span class=input>
|
||||
% param "SecondaryMailAccount" => $mai_data->{secondarymailaccount} unless param "SecondaryMailAccount";
|
||||
%= text_field "SecondaryMailAccount", class => "input"
|
||||
</span></p>
|
||||
|
||||
<p><span class=label>
|
||||
%=l "mai_LABEL_POP_PASS"
|
||||
</span><span class=input>
|
||||
% param "SecondaryMailPassword" => $mai_data->{secondarymailpassword} unless param "SecondaryMailPassword";
|
||||
%= password_field "SecondaryMailPassword", class => "input"
|
||||
</span></p>
|
||||
|
||||
<p><span class=label>
|
||||
%=l "mai_LABEL_SORT_METHOD"
|
||||
</span><span class=input>
|
||||
% param "SpecifyHeader" => $mai_data->{specifyheader} unless param "SpecifyHeader";
|
||||
%= select_field "SpecifyHeader" => [[(l "Default") => "off"], [(l "mai_SPECIFY_BELOW") => "on"]], class => "input"
|
||||
</span></p>
|
||||
|
||||
<p><span class=label>
|
||||
%=l "mai_LABEL_SORT_HEADER"
|
||||
</span><span class=input>
|
||||
% param "SecondaryMailEnvelope" => $mai_data->{secondarymailenvelope} unless param "SecondaryMailEnvelope";
|
||||
%= text_field "SecondaryMailEnvelope", class => "input"
|
||||
</span></p>
|
||||
|
||||
%# ....
|
||||
%# Probably finally by a submit.
|
||||
%= submit_button $btn, class => "action"
|
||||
%end
|
||||
</div>
|
17
output/Emailsettings/emailsettings_en.lex.diff
Normal file
17
output/Emailsettings/emailsettings_en.lex.diff
Normal file
@@ -0,0 +1,17 @@
|
||||
'mai_ALLOW_PRIVATE' => 'Allow private',
|
||||
'mai_AUTO' => 'Automatic',
|
||||
'mai_DESC_POP_ACCOUNT' => 'For multi-drop e-mail, specify the POP user account and password.
|
||||
(If using standard or ETRN e-mail, these fields can be blank.)
|
||||
Also, for multi-drop, you can either use the default mail sorting
|
||||
method, or you can specify a particular message header to use for
|
||||
mail sorting.',
|
||||
'mai_DESC_STATE_ACCESS' => 'E-mail access',
|
||||
'mai_DESC_STATE_DELIVERY' => 'E-mail delivery',
|
||||
'mai_DESC_STATE_RECEPTION' => 'E-mail reception',
|
||||
'mai_ENABLED_BOTH' => 'Allow both HTTP and HTTPS',
|
||||
'mai_INSECURE_SMTP' => 'Allow both SMTP and SSMTP',
|
||||
'mai_LABEL_FETCH_PROTO' => 'Protocol (for multi-drop)',
|
||||
'mai_LABEL_FETCH_SECURE' => 'Tunnel over SSL (for multi-drop)',
|
||||
'mai_LABEL_SMTP_AUTH_CONTROL' => 'SMTP authentication',
|
||||
'mai_UNACCEPTABLE_CHARS' => 'This field requires a valid e-mail address, which must include
|
||||
the @ symbol and a domain name.',
|
159
output/Emailsettings/emailsettings_en.lex.new1
Normal file
159
output/Emailsettings/emailsettings_en.lex.new1
Normal file
@@ -0,0 +1,159 @@
|
||||
#
|
||||
# Lex file for Emailsettings generated on 2025-07-17 09:52:31
|
||||
#
|
||||
'mai_ACC_panel_action_was_successful' => 'Email access settings saved sucessfully',
|
||||
'mai_ALLOW_PRIVATE' => 'Allow private',
|
||||
'mai_AUTO' => 'Automatic',
|
||||
'mai_DEL_panel_action_was_successful' => 'Email delivery settings saved sucessfully',
|
||||
'mai_DESC_BLOCK_EXECUTABLE_CONTENT' => 'You can block executable content in e-mail attachments
|
||||
by highlighting the executable attachment types you wish to
|
||||
block. E-mail containing these attachment types will
|
||||
be automatically returned to the sender.',
|
||||
'mai_DESC_DELEGATE' => 'Your server includes a complete, full-featured e-mail server. However,
|
||||
if for some reason you wish to delegate e-mail processing to
|
||||
another system, specify the IP address of the delegate system
|
||||
here. For normal operation, leave this field blank.',
|
||||
'mai_DESC_FETCH_PERIOD' => 'For ETRN or multi-drop, you can control how frequently this server
|
||||
contacts your secondary e-mail server to fetch e-mail. More
|
||||
frequent connections mean that you receive your e-mail more
|
||||
quickly, but also cause Internet requests to be sent more often,
|
||||
possibly increasing your phone and Internet charges.',
|
||||
'mai_DESC_IMAP_ACCESS_CONTROL' => 'You can control IMAP server access. The setting "Allow access
|
||||
only from local networks" allows IMAP access only from your
|
||||
local network(s). The IMAPS setting can be used to provide
|
||||
encrypted external access to your IMAP server. We recommend
|
||||
leaving this setting "Allow access only from local networks"
|
||||
unless you have a specific reason to do otherwise.',
|
||||
'mai_DESC_MODE' => 'The e-mail retrieval mode can be set to
|
||||
standard (for dedicated Internet connections), ETRN (recommended
|
||||
for dialup connections), or multi-drop (for dialup connections if
|
||||
ETRN is not supported by your Internet provider). Note that
|
||||
multi-drop mode is the only option available when the server is
|
||||
configured in private server and gateway mode.',
|
||||
'mai_DESC_POP_ACCESS_CONTROL' => 'You can control POP3 server access. The setting "Allow access
|
||||
only from local networks" allows POP3 access only from your
|
||||
local network(s). The POP3S setting can be used to provide
|
||||
encrypted external access to your POP3 server. We recommend
|
||||
leaving this setting "Allow access only from local networks"
|
||||
unless you have a specific reason to do otherwise.',
|
||||
'mai_DESC_POP_ACCOUNT' => 'For multi-drop e-mail, specify the POP user account and password.
|
||||
(If using standard or ETRN e-mail, these fields can be blank.)
|
||||
Also, for multi-drop, you can either use the default mail sorting
|
||||
method, or you can specify a particular message header to use for
|
||||
mail sorting.',
|
||||
'mai_DESC_SECONDARY' => 'For ETRN or multi-drop, specify the hostname or IP address of your
|
||||
secondary mail server. (If using the standard e-mail setup, this
|
||||
field can be left blank.)',
|
||||
'mai_DESC_SMARTHOST' => 'The server can deliver outgoing messages directly to their
|
||||
destination (recommended in most cases) or can deliver them via
|
||||
your Internet provider"s SMTP server (recommended if you have an
|
||||
unreliable Internet connection or are using a residential Internet
|
||||
service). If using your Internet provider"s SMTP server, specify
|
||||
its hostname or IP address below. Otherwise leave this field blank.',
|
||||
'mai_DESC_SMTP_AUTH_CONTROL' => 'You can provide authenticated access to your SMTP server, or
|
||||
set it to Disabled.
|
||||
The SSMTP setting requires <b>all</b> users to use SSL/TLS
|
||||
authentication. The SMTP and SSMTP option additionally allows
|
||||
STARTTLS to be used to ensure secure authentication.',
|
||||
'mai_DESC_SPAM_SCAN' => 'You can scan e-mail for spam. If Spam filtering is
|
||||
enabled, an X-Spam-Status: header is added to each
|
||||
message, which can be used for filtering spam.
|
||||
You can adjust the sensitivity of the Spam detection
|
||||
process from the default of medium. For fine-grained
|
||||
control, you can set the Spam sensitivity to Custom
|
||||
and then choose a custom tagging level, and
|
||||
optionally a level at which to reject the message.',
|
||||
'mai_DESC_SPAM_SUBJECT' => 'You can enable to add a tag to the subject of each
|
||||
message that is classified as SPAM.
|
||||
The value for this tag can be defined below.',
|
||||
'mai_DESC_STATE_ACCESS' => 'E-mail access',
|
||||
'mai_DESC_STATE_ACCESS_BUTTON' => 'Change e-mail access settings',
|
||||
'mai_DESC_STATE_DELIVERY' => 'E-mail delivery',
|
||||
'mai_DESC_STATE_DELIVERY_BUTTON' => 'Change e-mail delivery settings',
|
||||
'mai_DESC_STATE_FILTERING_BUTTON' => 'Change e-mail filtering settings',
|
||||
'mai_DESC_STATE_RECEPTION' => 'E-mail reception',
|
||||
'mai_DESC_STATE_RECEPTION_BUTTON' => 'Change e-mail reception settings',
|
||||
'mai_DESC_UNKNOWN' => 'Selecting Reject (recommended setting) will configure the server to only
|
||||
accept mail for valid email addresses (for example users, groups, pseudonyms).
|
||||
Mail for other addresses will be rejected.',
|
||||
'mai_DESC_VIRUS_SCAN' => 'You can scan incoming and outgoing e-mail for viruses. If scanning is enabled and a virus is detected, the e-mail will be rejected and returned to the
|
||||
sender.',
|
||||
'mai_DESC_WEBMAIL' => 'You can enable or disable webmail on this system. Webmail allows
|
||||
users to access their mail through a regular web browser by
|
||||
pointing the browser to https://[_1]/webmail,and
|
||||
logging in to their account.',
|
||||
'mai_E-Mail' => 'E-mail',
|
||||
'mai_ENABLED_BOTH' => 'Allow both HTTP and HTTPS',
|
||||
'mai_ENABLED_SECURE_ONLY' => 'Allow HTTPS (secure)',
|
||||
'mai_ETRN' => 'ETRN (SMTP with client request)',
|
||||
'mai_EVERY15MIN' => 'Every 15 minutes',
|
||||
'mai_EVERY2HRS' => 'Every 2 hours',
|
||||
'mai_EVERY30MIN' => 'Every 30 minutes',
|
||||
'mai_EVERY5MIN' => 'Every 5 minutes',
|
||||
'mai_EVERYHOUR' => 'Every hour',
|
||||
'mai_FIL_panel_action_was_successful' => 'Email filtering settings saved sucessfully',
|
||||
'mai_FORM_TITLE' => 'E-mail settings',
|
||||
'mai_FORWARD_TO' => 'Send to',
|
||||
'mai_FORWARD_TO_ADMIN' => 'Send to administrator',
|
||||
'mai_INSECURE_IMAP' => 'Allow both IMAP and IMAPS',
|
||||
'mai_INSECURE_POP3' => 'Allow both POP3 and POP3S',
|
||||
'mai_INSECURE_SMTP' => 'Allow both SMTP and SSMTP',
|
||||
'mai_INVALID_DELEGATE' => 'The delegate host name you entered is not a valid IP Address and is not blank',
|
||||
'mai_INVALID_SMARTHOST' => 'The smarthost name you entered is not a valid internet domain name and is not blank',
|
||||
'mai_LABEL_BLOCK_EXECUTABLE_CONTENT' => 'Executable content blocking',
|
||||
'mai_LABEL_CONTENT_TO_BLOCK' => 'Content to block',
|
||||
'mai_LABEL_DELEGATE' => 'IP Address of internal mail server',
|
||||
'mai_LABEL_FETCH_PERIOD' => 'During office hours (8:00 AM to 6:00 PM) on weekdays',
|
||||
'mai_LABEL_FETCH_PERIOD_NIGHTS' => 'Outside office hours (6:00 PM to 8:00 AM) on weekdays',
|
||||
'mai_LABEL_FETCH_PERIOD_WEEKENDS' => 'During the weekend',
|
||||
'mai_LABEL_FETCH_PROTO' => 'Protocol (for multi-drop)',
|
||||
'mai_LABEL_FETCH_SECURE' => 'Tunnel over SSL (for multi-drop)',
|
||||
'mai_LABEL_IMAP_ACCESS_CONTROL' => 'IMAP server access',
|
||||
'mai_LABEL_MODE' => 'E-mail retrieval mode',
|
||||
'mai_LABEL_POP_ACCESS_CONTROL' => 'POP3 server access',
|
||||
'mai_LABEL_POP_ACCOUNT' => 'POP user account (for multi-drop)',
|
||||
'mai_LABEL_POP_PASS' => 'POP user password (for multi-drop)',
|
||||
'mai_LABEL_SECONDARY' => 'Secondary mail server',
|
||||
'mai_LABEL_SMARTHOST' => 'Address of Internet provider"s mail server',
|
||||
'mai_LABEL_SMARTHOST_SMTPAUTH_PASSWD' => 'Mail server password',
|
||||
'mai_LABEL_SMARTHOST_SMTPAUTH_STATUS' => 'SMTP Authentication for Internet provider',
|
||||
'mai_LABEL_SMARTHOST_SMTPAUTH_USERID' => 'Mail server user id',
|
||||
'mai_LABEL_SMTP_AUTH_CONTROL' => 'SMTP authentication',
|
||||
'mai_LABEL_SORT_HEADER' => 'Select sort header (for multi-drop)',
|
||||
'mai_LABEL_SORT_METHOD' => 'Select sort method (for multi-drop)',
|
||||
'mai_LABEL_SORTSPAM' => 'Sort spam into junkmail folder',
|
||||
'mai_LABEL_SPAM_REJECTLEVEL' => 'Custom spam rejection level',
|
||||
'mai_LABEL_SPAM_SCAN' => 'Spam filtering',
|
||||
'mai_LABEL_SPAM_SENSITIVITY' => 'Spam sensitivity',
|
||||
'mai_LABEL_SPAM_SUBJECT' => 'SPAM subject prefix',
|
||||
'mai_LABEL_SPAM_SUBJECTTAG' => 'Modify subject of spam messages',
|
||||
'mai_LABEL_SPAM_TAGLEVEL' => 'Custom spam tagging level',
|
||||
'mai_LABEL_UNKNOWN' => 'E-mail to unknown users',
|
||||
'mai_LABEL_VIRUS_SCAN' => 'Virus scanning',
|
||||
'mai_LABEL_WEBMAIL' => 'Webmail access',
|
||||
'mai_MULTIDROP' => 'multi-drop',
|
||||
'mai_NEVER' => 'not at all',
|
||||
'mai_ONLY_LOCAL_NETWORK_SSL' => 'Allow HTTPS (secure) from local networks',
|
||||
'mai_REC_panel_action_was_successful' => 'Email receive settings saved sucessfully',
|
||||
'mai_SECURE_IMAP' => 'Allow private and public (secure IMAPS)',
|
||||
'mai_SECURE_POP3' => 'Allow private and public (secure POP3S)',
|
||||
'mai_SECURE_SMTP' => 'Allow SSMTP (secure)',
|
||||
'mai_SMTP_port_(25)' => 'Smtp port (25) main purpose is to receive emails from another server, starttls is always offered, but auth if offered is only if starttls is also used by client.',
|
||||
'mai_SMTP_port_authenticate' => 'Smtp port %u allow client to authenticate:',
|
||||
'mai_SMTP_Submission' => 'Smtp submission port (587) will require starttls, then authenticate to send.',
|
||||
'mai_SMTPS_port_(465)' => 'Smtps port (465) will require implicit ssl/tls then authenticate to send.',
|
||||
'mai_SMTPS_SSL/TLS' => 'Smtps ssl/tls auth: port %u status:',
|
||||
'mai_SPECIFY_BELOW' => 'Specify below',
|
||||
'mai_STANDARD' => 'Standard (SMTP)',
|
||||
'mai_Submission_port' => 'Submission port %u status:',
|
||||
'mai_SUCCESS' => 'The new e-mail settings have been saved.',
|
||||
'mai_TITLE_DELEGATE' => 'Delegate mail servers',
|
||||
'mai_TITLE_SECONDARY' => 'ETRN or multi-drop settings',
|
||||
'mai_TITLE_SMARTHOST' => 'SMTP server',
|
||||
'mai_TITLE_UNKNOWN' => 'Unknown Users',
|
||||
'mai_UNACCEPTABLE_CHARS' => 'This field requires a valid e-mail address, which must include
|
||||
the @ symbol and a domain name.',
|
||||
'mai_VALIDATION_SMTPAUTH_NONBLANK' => 'The user id and password fields cannot be left blank if SMTP Authentication is
|
||||
enabled.',
|
||||
'mai_VERYHIGH' => 'Very high',
|
||||
'mai_VERYLOW' => 'Very low',
|
154
output/General/general_en.lex.new1
Normal file
154
output/General/general_en.lex.new1
Normal file
@@ -0,0 +1,154 @@
|
||||
#
|
||||
# Lex file for General generated on 2025-07-17 09:52:34
|
||||
#
|
||||
'ACCOUNT' => 'Account',
|
||||
'ACCOUNT_GROUP_NONE' => 'There are no user groups in the system.',
|
||||
'ACCOUNT_LOCKED' => 'Account is locked',
|
||||
'ACCOUNT_USER_NONE' => 'There are no user accounts in the system.',
|
||||
'ACTION' => 'Action',
|
||||
'ADD' => 'Add',
|
||||
'ALL_BACKUPS' => 'All backups',
|
||||
'Allow_local_access_only' => 'Allow local access only',
|
||||
'Allow_public_access' => 'Allow public access',
|
||||
'AM/PM:' => 'Am/pm:',
|
||||
'Apply' => 'Apply',
|
||||
'Back' => 'Back',
|
||||
'Blocked' => 'Blocked',
|
||||
'Check' => 'Check',
|
||||
'Check_Domain' => 'Check domain',
|
||||
'cifs' => 'Cifs',
|
||||
'City' => 'City',
|
||||
'COMMENT' => 'Comment',
|
||||
'Company' => 'Company',
|
||||
'Config' => 'Config',
|
||||
'Content' => 'Content',
|
||||
'COULD_NOT_GET_UID' => 'Could not get uid',
|
||||
'COULD_NOT_OPEN_TZ_FILE' => 'Could not open tz file',
|
||||
'CREATE_GROUP' => 'Create user group',
|
||||
'Custom' => 'Custom',
|
||||
'Daily' => 'Daily',
|
||||
'Date' => 'Date',
|
||||
'Day:' => 'Day:',
|
||||
'Default' => 'Default',
|
||||
'DELETE_ERROR' => 'Delete error',
|
||||
'Department' => 'Department',
|
||||
'DESCRIPTION' => 'Description',
|
||||
'DESCRIPTION_BRIEF' => 'Brief description',
|
||||
'DISABLED' => 'Disabled',
|
||||
'DOMAIN' => 'Domain',
|
||||
'DOMAIN_NAME' => 'Domain name',
|
||||
'DOWNLOAD' => 'Download',
|
||||
'Email' => 'Email',
|
||||
'ENABLED' => 'Enabled',
|
||||
'END_OF_REPORT' => 'End of Report',
|
||||
'ENTIRE_INTERNET_NO_PASSWORD' => 'Entire internet no password',
|
||||
'ENTIRE_INTERNET_PASSWORD' => 'Entire internet password',
|
||||
'ENTIRE_INTERNET_PASSWORD_REMOTE' => 'Entire internet password remote',
|
||||
'Error_occurred_while_modifying_password_for_admin.' => 'Error occurred while modifying password for admin.',
|
||||
'ERROR_UPDATING' => 'Error updating',
|
||||
'ERROR_UPDATING_CONFIGURATION' => 'Error occurred while updating system configuration.',
|
||||
'EVERYONE' => 'Everyone',
|
||||
'Everyone' => 'Everyone',
|
||||
'Expiry' => 'Expiry',
|
||||
'files' => 'files',
|
||||
'firstname' => 'firstname',
|
||||
'FM_ERR_UNEXPECTED_DESC' => 'Error: unexpected or missing characters in description',
|
||||
'FM_IP_NUMBER1' => 'This field must contain a valid IP number and can not be left blank.',
|
||||
'FM_IP_NUMBER2' => 'Invalid IP address format (expected X.X.X.X)',
|
||||
'FM_MAC_ADDRESS1' => 'You must provide a MAC address.',
|
||||
'FM_MAC_ADDRESS2' => 'The MAC address you provided was not valid.',
|
||||
'FM_NONBLANK' => 'This field must not be left blank',
|
||||
'Gateway' => 'Gateway',
|
||||
'GROUP' => 'Group',
|
||||
'GROUP_ADD' => 'Add group',
|
||||
'GROUP_MEMBERS' => 'Group Members',
|
||||
'GROUP_NAME' => 'Group Name',
|
||||
'High' => 'High',
|
||||
'Hostname' => 'Hostname',
|
||||
'Hour:' => 'Hour:',
|
||||
'Install' => 'Install',
|
||||
'INVALID_REPORT_TYPE' => 'Invalid report type',
|
||||
'INVALID_SERVERNAME' => 'Invalid servername',
|
||||
'INVALID_WORKGROUP' => 'Invalid workgroup',
|
||||
'INVALID_WORKGROUP_MATCHES_SERVERNAME' => 'Invalid workgroup matches servername',
|
||||
'IP_ADDRESS_OR_FQDN' => 'IP Address or FQDN',
|
||||
'Issuer' => 'Issuer',
|
||||
'lastname' => 'lastname',
|
||||
'LOCAL' => 'Local',
|
||||
'LOCAL_NETWORK_NO_PASSWORD' => 'Local network no password',
|
||||
'LOCAL_NETWORK_PASSWORD' => 'Local network password',
|
||||
'local_removable_disk' => 'Local removable disk',
|
||||
'LOCATION' => 'Location',
|
||||
'Location' => 'Location',
|
||||
'Lock' => 'Lock',
|
||||
'Low' => 'Low',
|
||||
'Medium' => 'Medium',
|
||||
'megabytes' => 'megabytes',
|
||||
'Minute:' => 'Minute:',
|
||||
'MODIFY' => 'Modify',
|
||||
'Modify' => 'Modify',
|
||||
'MODIFY_USER_GROUP' => 'Modify user group',
|
||||
'Month:' => 'Month:',
|
||||
'Monthly' => 'Monthly',
|
||||
'Mounted_disk' => 'Mounted disk',
|
||||
'NAME' => 'Name',
|
||||
'NETWORK' => 'Network',
|
||||
'NETWORKS_ALLOW_LOCAL' => 'Allow access only from local networks',
|
||||
'NETWORKS_ALLOW_PUBLIC' => 'Allow public access (entire Internet)',
|
||||
'Never' => 'Never',
|
||||
'NEXT' => 'Next',
|
||||
'nfs' => 'Nfs',
|
||||
'NO' => 'No',
|
||||
'NONE' => 'None',
|
||||
'NOT_A_PSEUDONYM' => 'Not a pseudonym',
|
||||
'NUM_OF_HOSTS' => 'Num of hosts',
|
||||
'Only_allow_insecure_access' => 'Only allow insecure access',
|
||||
'Operation' => 'Operation',
|
||||
'PASSWORD' => 'Password',
|
||||
'PASSWORD_NEW' => 'New password:',
|
||||
'PASSWORD_RESET' => 'Reset password',
|
||||
'PASSWORD_VERIFY_ERROR' => 'The passwords you entered did not match.',
|
||||
'PASSWORD_VERIFY_NEW' => 'New password (verify):',
|
||||
'PERFORM' => 'Perform',
|
||||
'PptpSessions' => 'Pptpsessions',
|
||||
'Protocol' => 'Protocol',
|
||||
'Pseudonym' => 'Pseudonym',
|
||||
'Reboot' => 'Reboot',
|
||||
'RECONFIGURE' => 'Reconfigure',
|
||||
'Reject' => 'Reject',
|
||||
'REMOTE' => 'Remote',
|
||||
'REMOVE' => 'Remove',
|
||||
'REMOVE_USER_GROUP' => 'Remove user group',
|
||||
'REPORT_GENERATED' => 'Report generated',
|
||||
'RESET_PASSWORD_TITLE' => 'Reset user password',
|
||||
'ROUTER' => 'Router',
|
||||
'SAVE' => 'Save',
|
||||
'Save' => 'Save',
|
||||
'Second:' => 'Second:',
|
||||
'SELF' => 'Self',
|
||||
'SHUTDOWN' => 'Shutdown',
|
||||
'SMTP_port_%u_allow_client_to_authenticate:' => 'Smtp port %u allow client to authenticate:',
|
||||
'SMTP_port_(25)_main_purpose_is_to_receive_emails_from_another_server,_STARTTLS_is_always_offered,_but_auth_if_offered_is_only_if_STARTTLS_is_also_used_by_client.' => 'Smtp port (25) main purpose is to receive emails from another server, starttls is always offered, but auth if offered is only if starttls is also used by client.',
|
||||
'SMTP_Submission_port_(587)_will_require_STARTTLS,_then_authenticate_to_send.' => 'Smtp submission port (587) will require starttls, then authenticate to send.',
|
||||
'SMTPS_port_(465)_will_require_implicit_SSL/TLS_then_authenticate_to_send.' => 'Smtps port (465) will require implicit ssl/tls then authenticate to send.',
|
||||
'SMTPS_SSL/TLS_auth:_port_%u_status:' => 'Smtps ssl/tls auth: port %u status:',
|
||||
'Submission_port_%u_status:' => 'Submission port %u status:',
|
||||
'SUBNET_MASK' => 'Subnet mask',
|
||||
'SUCCESS' => 'Success',
|
||||
'Time' => 'Time',
|
||||
'Time_Configuration' => 'Time configuration',
|
||||
'Time_Setting_Mode:' => 'Time setting mode:',
|
||||
'Update' => 'Update',
|
||||
'USER_DIFFERENT' => 'User different',
|
||||
'USER_NAME' => 'User Name',
|
||||
'useraccount' => 'useraccount',
|
||||
'ValidFromMask' => 'Validfrommask',
|
||||
'ValidFromNetwork' => 'Validfromnetwork',
|
||||
'Verify' => 'Verify',
|
||||
'WARG' => 'Warg',
|
||||
'Webmail' => 'Webmail',
|
||||
'Weekly' => 'Weekly',
|
||||
'WGRE' => 'Wgre',
|
||||
'WGRG' => 'Wgrg',
|
||||
'Year:' => 'Year:',
|
||||
'YES' => 'Yes',
|
154
output/General/general_en.lex.new11
Normal file
154
output/General/general_en.lex.new11
Normal file
@@ -0,0 +1,154 @@
|
||||
#
|
||||
# Lex file for General generated on 2025-07-19 12:54:37
|
||||
#
|
||||
'ACCOUNT' => 'Account',
|
||||
'ACCOUNT_GROUP_NONE' => 'There are no user groups in the system.',
|
||||
'ACCOUNT_LOCKED' => 'Account is locked',
|
||||
'ACCOUNT_USER_NONE' => 'There are no user accounts in the system.',
|
||||
'ACTION' => 'Action',
|
||||
'ADD' => 'Add',
|
||||
'ALL_BACKUPS' => 'All backups',
|
||||
'Allow_local_access_only' => 'Allow local access only',
|
||||
'Allow_public_access' => 'Allow public access',
|
||||
'AM/PM:' => 'Am/pm:',
|
||||
'Apply' => 'Apply',
|
||||
'Back' => 'Back',
|
||||
'Blocked' => 'Blocked',
|
||||
'Check' => 'Check',
|
||||
'Check_Domain' => 'Check domain',
|
||||
'cifs' => 'Cifs',
|
||||
'City' => 'City',
|
||||
'COMMENT' => 'Comment',
|
||||
'Company' => 'Company',
|
||||
'Config' => 'Config',
|
||||
'Content' => 'Content',
|
||||
'COULD_NOT_GET_UID' => 'Could not get uid',
|
||||
'COULD_NOT_OPEN_TZ_FILE' => 'Could not open tz file',
|
||||
'CREATE_GROUP' => 'Create user group',
|
||||
'Custom' => 'Custom',
|
||||
'Daily' => 'Daily',
|
||||
'Date' => 'Date',
|
||||
'Day:' => 'Day:',
|
||||
'Default' => 'Default',
|
||||
'DELETE_ERROR' => 'Delete error',
|
||||
'Department' => 'Department',
|
||||
'DESCRIPTION' => 'Description',
|
||||
'DESCRIPTION_BRIEF' => 'Brief description',
|
||||
'DISABLED' => 'Disabled',
|
||||
'DOMAIN' => 'Domain',
|
||||
'DOMAIN_NAME' => 'Domain name',
|
||||
'DOWNLOAD' => 'Download',
|
||||
'Email' => 'Email',
|
||||
'ENABLED' => 'Enabled',
|
||||
'END_OF_REPORT' => 'End of Report',
|
||||
'ENTIRE_INTERNET_NO_PASSWORD' => 'Entire internet no password',
|
||||
'ENTIRE_INTERNET_PASSWORD' => 'Entire internet password',
|
||||
'ENTIRE_INTERNET_PASSWORD_REMOTE' => 'Entire internet password remote',
|
||||
'Error_occurred_while_modifying_password_for_admin.' => 'Error occurred while modifying password for admin.',
|
||||
'ERROR_UPDATING' => 'Error updating',
|
||||
'ERROR_UPDATING_CONFIGURATION' => 'Error occurred while updating system configuration.',
|
||||
'EVERYONE' => 'Everyone',
|
||||
'Everyone' => 'Everyone',
|
||||
'Expiry' => 'Expiry',
|
||||
'files' => 'files',
|
||||
'firstname' => 'firstname',
|
||||
'FM_ERR_UNEXPECTED_DESC' => 'Error: unexpected or missing characters in description',
|
||||
'FM_IP_NUMBER1' => 'This field must contain a valid IP number and can not be left blank.',
|
||||
'FM_IP_NUMBER2' => 'Invalid IP address format (expected X.X.X.X)',
|
||||
'FM_MAC_ADDRESS1' => 'You must provide a MAC address.',
|
||||
'FM_MAC_ADDRESS2' => 'The MAC address you provided was not valid.',
|
||||
'FM_NONBLANK' => 'This field must not be left blank',
|
||||
'Gateway' => 'Gateway',
|
||||
'GROUP' => 'Group',
|
||||
'GROUP_ADD' => 'Add group',
|
||||
'GROUP_MEMBERS' => 'Group Members',
|
||||
'GROUP_NAME' => 'Group Name',
|
||||
'High' => 'High',
|
||||
'Hostname' => 'Hostname',
|
||||
'Hour:' => 'Hour:',
|
||||
'Install' => 'Install',
|
||||
'INVALID_REPORT_TYPE' => 'Invalid report type',
|
||||
'INVALID_SERVERNAME' => 'Invalid servername',
|
||||
'INVALID_WORKGROUP' => 'Invalid workgroup',
|
||||
'INVALID_WORKGROUP_MATCHES_SERVERNAME' => 'Invalid workgroup matches servername',
|
||||
'IP_ADDRESS_OR_FQDN' => 'IP Address or FQDN',
|
||||
'Issuer' => 'Issuer',
|
||||
'lastname' => 'lastname',
|
||||
'LOCAL' => 'Local',
|
||||
'LOCAL_NETWORK_NO_PASSWORD' => 'Local network no password',
|
||||
'LOCAL_NETWORK_PASSWORD' => 'Local network password',
|
||||
'local_removable_disk' => 'Local removable disk',
|
||||
'LOCATION' => 'Location',
|
||||
'Location' => 'Location',
|
||||
'Lock' => 'Lock',
|
||||
'Low' => 'Low',
|
||||
'Medium' => 'Medium',
|
||||
'megabytes' => 'megabytes',
|
||||
'Minute:' => 'Minute:',
|
||||
'MODIFY' => 'Modify',
|
||||
'Modify' => 'Modify',
|
||||
'MODIFY_USER_GROUP' => 'Modify user group',
|
||||
'Month:' => 'Month:',
|
||||
'Monthly' => 'Monthly',
|
||||
'Mounted_disk' => 'Mounted disk',
|
||||
'NAME' => 'Name',
|
||||
'NETWORK' => 'Network',
|
||||
'NETWORKS_ALLOW_LOCAL' => 'Allow access only from local networks',
|
||||
'NETWORKS_ALLOW_PUBLIC' => 'Allow public access (entire Internet)',
|
||||
'Never' => 'Never',
|
||||
'NEXT' => 'Next',
|
||||
'nfs' => 'Nfs',
|
||||
'NO' => 'No',
|
||||
'NONE' => 'None',
|
||||
'NOT_A_PSEUDONYM' => 'Not a pseudonym',
|
||||
'NUM_OF_HOSTS' => 'Num of hosts',
|
||||
'Only_allow_insecure_access' => 'Only allow insecure access',
|
||||
'Operation' => 'Operation',
|
||||
'PASSWORD' => 'Password',
|
||||
'PASSWORD_NEW' => 'New password:',
|
||||
'PASSWORD_RESET' => 'Reset password',
|
||||
'PASSWORD_VERIFY_ERROR' => 'The passwords you entered did not match.',
|
||||
'PASSWORD_VERIFY_NEW' => 'New password (verify):',
|
||||
'PERFORM' => 'Perform',
|
||||
'PptpSessions' => 'Pptpsessions',
|
||||
'Protocol' => 'Protocol',
|
||||
'Pseudonym' => 'Pseudonym',
|
||||
'Reboot' => 'Reboot',
|
||||
'RECONFIGURE' => 'Reconfigure',
|
||||
'Reject' => 'Reject',
|
||||
'REMOTE' => 'Remote',
|
||||
'REMOVE' => 'Remove',
|
||||
'REMOVE_USER_GROUP' => 'Remove user group',
|
||||
'REPORT_GENERATED' => 'Report generated',
|
||||
'RESET_PASSWORD_TITLE' => 'Reset user password',
|
||||
'ROUTER' => 'Router',
|
||||
'SAVE' => 'Save',
|
||||
'Save' => 'Save',
|
||||
'Second:' => 'Second:',
|
||||
'SELF' => 'Self',
|
||||
'SHUTDOWN' => 'Shutdown',
|
||||
'SMTP_port_%u_allow_client_to_authenticate:' => 'Smtp port %u allow client to authenticate:',
|
||||
'SMTP_port_(25)_main_purpose_is_to_receive_emails_from_another_server,_STARTTLS_is_always_offered,_but_auth_if_offered_is_only_if_STARTTLS_is_also_used_by_client.' => 'Smtp port (25) main purpose is to receive emails from another server, starttls is always offered, but auth if offered is only if starttls is also used by client.',
|
||||
'SMTP_Submission_port_(587)_will_require_STARTTLS,_then_authenticate_to_send.' => 'Smtp submission port (587) will require starttls, then authenticate to send.',
|
||||
'SMTPS_port_(465)_will_require_implicit_SSL/TLS_then_authenticate_to_send.' => 'Smtps port (465) will require implicit ssl/tls then authenticate to send.',
|
||||
'SMTPS_SSL/TLS_auth:_port_%u_status:' => 'Smtps ssl/tls auth: port %u status:',
|
||||
'Submission_port_%u_status:' => 'Submission port %u status:',
|
||||
'SUBNET_MASK' => 'Subnet mask',
|
||||
'SUCCESS' => 'Success',
|
||||
'Time' => 'Time',
|
||||
'Time_Configuration' => 'Time configuration',
|
||||
'Time_Setting_Mode:' => 'Time setting mode:',
|
||||
'Update' => 'Update',
|
||||
'USER_DIFFERENT' => 'User different',
|
||||
'USER_NAME' => 'User Name',
|
||||
'useraccount' => 'useraccount',
|
||||
'ValidFromMask' => 'Validfrommask',
|
||||
'ValidFromNetwork' => 'Validfromnetwork',
|
||||
'Verify' => 'Verify',
|
||||
'WARG' => 'Warg',
|
||||
'Webmail' => 'Webmail',
|
||||
'Weekly' => 'Weekly',
|
||||
'WGRE' => 'Wgre',
|
||||
'WGRG' => 'Wgrg',
|
||||
'Year:' => 'Year:',
|
||||
'YES' => 'Yes',
|
193
output/General/general_en.lex.new2
Normal file
193
output/General/general_en.lex.new2
Normal file
@@ -0,0 +1,193 @@
|
||||
#
|
||||
# Lex file for General generated on 2025-07-19 12:54:37
|
||||
#
|
||||
'ACCOUNT' => 'Account',
|
||||
'ACCOUNT_GROUP_NONE' => 'There are no user groups in the system.',
|
||||
'ACCOUNT_LOCKED' => 'Account is locked',
|
||||
'ACCOUNT_USER_NONE' => 'There are no user accounts in the system.',
|
||||
'ACTION' => 'Action',
|
||||
'ADD' => 'Add',
|
||||
'ALL_BACKUPS' => 'All backups',
|
||||
'Allow_local_access_only' => 'Allow local access only',
|
||||
'Allow_public_access' => 'Allow public access',
|
||||
'AM/PM:' => 'Am/pm:',
|
||||
'Antivirus (ClamAV)' => 'Antivirus (ClamAV)',
|
||||
'Apply' => 'Apply',
|
||||
'Back' => 'Back',
|
||||
'Backup or restore' => 'Backup or restore',
|
||||
'Blocked' => 'Blocked',
|
||||
'Change password' => 'Change password',
|
||||
'Check' => 'Check',
|
||||
'Check_Domain' => 'Check domain',
|
||||
'cifs' => 'Cifs',
|
||||
'City' => 'City',
|
||||
'COMMENT' => 'Comment',
|
||||
'Company' => 'Company',
|
||||
'Config' => 'Config',
|
||||
'Content' => 'Content',
|
||||
'COULD_NOT_GET_UID' => 'Could not get uid',
|
||||
'COULD_NOT_OPEN_TZ_FILE' => 'Could not open tz file',
|
||||
'CREATE_GROUP' => 'Create user group',
|
||||
'Current User' => 'Current User',
|
||||
'Custom' => 'Custom',
|
||||
'Daily' => 'Daily',
|
||||
'Date' => 'Date',
|
||||
'Date and time' => 'Date and time',
|
||||
'Day:' => 'Day:',
|
||||
'Default' => 'Default',
|
||||
'DELETE_ERROR' => 'Delete error',
|
||||
'Department' => 'Department',
|
||||
'DESCRIPTION' => 'Description',
|
||||
'DESCRIPTION_BRIEF' => 'Brief description',
|
||||
'Directory' => 'Directory',
|
||||
'DISABLED' => 'Disabled',
|
||||
'DOMAIN' => 'Domain',
|
||||
'DOMAIN_NAME' => 'Domain name',
|
||||
'Domains' => 'Domains',
|
||||
'DOWNLOAD' => 'Download',
|
||||
'E-Mail' => 'E-Mail',
|
||||
'Email' => 'Email',
|
||||
'ENABLED' => 'Enabled',
|
||||
'END_OF_REPORT' => 'End of Report',
|
||||
'ENTIRE_INTERNET_NO_PASSWORD' => 'Entire internet no password',
|
||||
'ENTIRE_INTERNET_PASSWORD' => 'Entire internet password',
|
||||
'ENTIRE_INTERNET_PASSWORD_REMOTE' => 'Entire internet password remote',
|
||||
'Error_occurred_while_modifying_password_for_admin.' => 'Error occurred while modifying password for admin.',
|
||||
'ERROR_UPDATING' => 'Error updating',
|
||||
'ERROR_UPDATING_CONFIGURATION' => 'Error occurred while updating system configuration.',
|
||||
'EVERYONE' => 'Everyone',
|
||||
'Everyone' => 'Everyone',
|
||||
'Expiry' => 'Expiry',
|
||||
'files' => 'files',
|
||||
'firstname' => 'firstname',
|
||||
'FM_ERR_UNEXPECTED_DESC' => 'Error: unexpected or missing characters in description',
|
||||
'FM_IP_NUMBER1' => 'This field must contain a valid IP number and can not be left blank.',
|
||||
'FM_IP_NUMBER2' => 'Invalid IP address format (expected X.X.X.X)',
|
||||
'FM_MAC_ADDRESS1' => 'You must provide a MAC address.',
|
||||
'FM_MAC_ADDRESS2' => 'The MAC address you provided was not valid.',
|
||||
'FM_NONBLANK' => 'This field must not be left blank',
|
||||
'Gateway' => 'Gateway',
|
||||
'GROUP' => 'Group',
|
||||
'GROUP_ADD' => 'Add group',
|
||||
'GROUP_MEMBERS' => 'Group Members',
|
||||
'GROUP_NAME' => 'Group Name',
|
||||
'GROUPS' => 'GROUPS',
|
||||
'High' => 'High',
|
||||
'Home' => 'Home',
|
||||
'Hostname' => 'Hostname',
|
||||
'Hostnames and addresses' => 'Hostnames and addresses',
|
||||
'Hour:' => 'Hour:',
|
||||
'Ibays' => 'Ibays',
|
||||
'Install' => 'Install',
|
||||
'INVALID_REPORT_TYPE' => 'Invalid report type',
|
||||
'INVALID_SERVERNAME' => 'Invalid servername',
|
||||
'INVALID_WORKGROUP' => 'Invalid workgroup',
|
||||
'INVALID_WORKGROUP_MATCHES_SERVERNAME' => 'Invalid workgroup matches servername',
|
||||
'Investigation' => 'Investigation',
|
||||
'IP_ADDRESS_OR_FQDN' => 'IP Address or FQDN',
|
||||
'Issuer' => 'Issuer',
|
||||
'lastname' => 'lastname',
|
||||
'Legacy' => 'Legacy',
|
||||
'Legacy panel' => 'Legacy panel',
|
||||
'Letsencrypt certificate' => 'Letsencrypt certificate',
|
||||
'LOCAL' => 'Local',
|
||||
'Local networks' => 'Local networks',
|
||||
'LOCAL_NETWORK_NO_PASSWORD' => 'Local network no password',
|
||||
'LOCAL_NETWORK_PASSWORD' => 'Local network password',
|
||||
'local_removable_disk' => 'Local removable disk',
|
||||
'LOCATION' => 'Location',
|
||||
'Location' => 'Location',
|
||||
'Lock' => 'Lock',
|
||||
'Logout' => 'Logout',
|
||||
'Low' => 'Low',
|
||||
'Mail log file analysis' => 'Mail log file analysis',
|
||||
'Medium' => 'Medium',
|
||||
'megabytes' => 'megabytes',
|
||||
'Minute:' => 'Minute:',
|
||||
'MODIFY' => 'Modify',
|
||||
'Modify' => 'Modify',
|
||||
'MODIFY_USER_GROUP' => 'Modify user group',
|
||||
'Month:' => 'Month:',
|
||||
'Monthly' => 'Monthly',
|
||||
'Mounted_disk' => 'Mounted disk',
|
||||
'NAME' => 'Name',
|
||||
'NETWORK' => 'Network',
|
||||
'Network' => 'Network',
|
||||
'NETWORKS_ALLOW_LOCAL' => 'Allow access only from local networks',
|
||||
'NETWORKS_ALLOW_PUBLIC' => 'Allow public access (entire Internet)',
|
||||
'Never' => 'Never',
|
||||
'NEXT' => 'Next',
|
||||
'nfs' => 'Nfs',
|
||||
'NO' => 'No',
|
||||
'NONE' => 'None',
|
||||
'NOT_A_PSEUDONYM' => 'Not a pseudonym',
|
||||
'NUM_OF_HOSTS' => 'Num of hosts',
|
||||
'NutUPS configuration' => 'NutUPS configuration',
|
||||
'Online manual' => 'Online manual',
|
||||
'Only_allow_insecure_access' => 'Only allow insecure access',
|
||||
'Operation' => 'Operation',
|
||||
'PASSWORD' => 'Password',
|
||||
'PASSWORD_NEW' => 'New password:',
|
||||
'PASSWORD_RESET' => 'Reset password',
|
||||
'PASSWORD_VERIFY_ERROR' => 'The passwords you entered did not match.',
|
||||
'PASSWORD_VERIFY_NEW' => 'New password (verify):',
|
||||
'PERFORM' => 'Perform',
|
||||
'Port forwarding' => 'Port forwarding',
|
||||
'PptpSessions' => 'Pptpsessions',
|
||||
'Printers' => 'Printers',
|
||||
'Protocol' => 'Protocol',
|
||||
'Proxy settings' => 'Proxy settings',
|
||||
'Pseudonym' => 'Pseudonym',
|
||||
'Pseudonyms' => 'Pseudonyms',
|
||||
'Quotas' => 'Quotas',
|
||||
'Reboot' => 'Reboot',
|
||||
'Reboot or shutdown' => 'Reboot or shutdown',
|
||||
'RECONFIGURE' => 'Reconfigure',
|
||||
'Reject' => 'Reject',
|
||||
'REMOTE' => 'Remote',
|
||||
'Remote access' => 'Remote access',
|
||||
'REMOVE' => 'Remove',
|
||||
'REMOVE_USER_GROUP' => 'Remove user group',
|
||||
'Report a bug' => 'Report a bug',
|
||||
'REPORT_GENERATED' => 'Report generated',
|
||||
'RESET_PASSWORD_TITLE' => 'Reset user password',
|
||||
'Review configuration' => 'Review configuration',
|
||||
'ROUTER' => 'Router',
|
||||
'Samba workgroup' => 'Samba workgroup',
|
||||
'SAVE' => 'Save',
|
||||
'Save' => 'Save',
|
||||
'Second:' => 'Second:',
|
||||
'SELF' => 'Self',
|
||||
'SHUTDOWN' => 'Shutdown',
|
||||
'SMTP_port_%u_allow_client_to_authenticate:' => 'Smtp port %u allow client to authenticate:',
|
||||
'SMTP_port_(25)_main_purpose_is_to_receive_emails_from_another_server,_STARTTLS_is_always_offered,_but_auth_if_offered_is_only_if_STARTTLS_is_also_used_by_client.' => 'Smtp port (25) main purpose is to receive emails from another server, starttls is always offered, but auth if offered is only if starttls is also used by client.',
|
||||
'SMTP_Submission_port_(587)_will_require_STARTTLS,_then_authenticate_to_send.' => 'Smtp submission port (587) will require starttls, then authenticate to send.',
|
||||
'SMTPS_port_(465)_will_require_implicit_SSL/TLS_then_authenticate_to_send.' => 'Smtps port (465) will require implicit ssl/tls then authenticate to send.',
|
||||
'SMTPS_SSL/TLS_auth:_port_%u_status:' => 'Smtps ssl/tls auth: port %u status:',
|
||||
'Software installer' => 'Software installer',
|
||||
'Submission_port_%u_status:' => 'Submission port %u status:',
|
||||
'SUBNET_MASK' => 'Subnet mask',
|
||||
'SUCCESS' => 'Success',
|
||||
'Support' => 'Support',
|
||||
'Support and licensing' => 'Support and licensing',
|
||||
'System' => 'System',
|
||||
'Time' => 'Time',
|
||||
'Time_Configuration' => 'Time configuration',
|
||||
'Time_Setting_Mode:' => 'Time setting mode:',
|
||||
'Update' => 'Update',
|
||||
'User management' => 'User management',
|
||||
'USER_DIFFERENT' => 'User different',
|
||||
'USER_NAME' => 'User Name',
|
||||
'useraccount' => 'useraccount',
|
||||
'Users' => 'Users',
|
||||
'ValidFromMask' => 'Validfrommask',
|
||||
'ValidFromNetwork' => 'Validfromnetwork',
|
||||
'Verify' => 'Verify',
|
||||
'View log files' => 'View log files',
|
||||
'WARG' => 'Warg',
|
||||
'Webmail' => 'Webmail',
|
||||
'Weekly' => 'Weekly',
|
||||
'WGRE' => 'Wgre',
|
||||
'WGRG' => 'Wgrg',
|
||||
'Year:' => 'Year:',
|
||||
'YES' => 'Yes',
|
3
output/Groups/groups_en.lex.diff
Normal file
3
output/Groups/groups_en.lex.diff
Normal file
@@ -0,0 +1,3 @@
|
||||
'grp_CONFIRM_DELETE_GROUP' => 'Are you sure you wish to remove this group?',
|
||||
'grp_DELETE_ERROR' => 'An error occurred while removing user group.',
|
||||
'grp_INVALID_GROUP_DESCRIPTION' => 'Error: unexpected or missing characters in group description',
|
33
output/Groups/groups_en.lex.new1
Normal file
33
output/Groups/groups_en.lex.new1
Normal file
@@ -0,0 +1,33 @@
|
||||
#
|
||||
# Lex file for Groups generated on 2025-07-17 09:52:31
|
||||
#
|
||||
'grp_ACCOUNT_CONFLICT' => 'Error: the group "[_1]" can"t be created because there is
|
||||
already a [_2] account of that name.',
|
||||
'grp_CONFIRM_DELETE_GROUP' => 'Are you sure you wish to remove this group?',
|
||||
'grp_CREATE_ERROR' => 'An error occurred while creating user group.',
|
||||
'grp_CREATED_GROUP' => 'Successfully created user group',
|
||||
'grp_CURRENT_LIST' => 'Current list of User Groups',
|
||||
'grp_DELETE_DESCRIPTION' => 'You are about to remove the user group "[_1]."',
|
||||
'grp_DELETE_ERROR' => 'An error occurred while removing user group.',
|
||||
'grp_DELETED_GROUP' => 'Successfully removed user group',
|
||||
'grp_FORM_TITLE' => 'Create, modify, or remove user groups',
|
||||
'grp_GROUP_DESC' => 'Brief Description/Windows Group Alias',
|
||||
'grp_GROUP_DESC_EXPL' => 'Input a brief group description in the field below.
|
||||
This field also designates the group name viewable by
|
||||
Windows clients.',
|
||||
'grp_GROUP_HAS_MEMBERS' => 'This group contains the following members:',
|
||||
'grp_GROUP_NAMING' => 'The group name should contain only lower-case
|
||||
letters, numbers, hyphens, periods, and underscores,
|
||||
and should start with a lower-case letter. For
|
||||
example "sales", "beta5", and "reseller_partners" are
|
||||
all valid group names, but "3rd-event", "Marketing Team"
|
||||
and "lost&found" are not.',
|
||||
'grp_GROUP_TOO_LONG' => 'Error: group name is too long. The maximum is [_1] characters.',
|
||||
'grp_IBAYS_WILL_BE_CHANGED' => 'The following information bays were assigned to this group and
|
||||
will be changed to the Administrator group (you can change them to
|
||||
something else afterward):',
|
||||
'grp_INVALID_GROUP_DESCRIPTION' => 'Error: unexpected or missing characters in group description',
|
||||
'grp_MODIFIED_GROUP' => 'Successfully modifed user group',
|
||||
'grp_MODIFY_ERROR' => 'An error occurred while modifying user group.',
|
||||
'grp_NO_MEMBERS' => 'Error: no members in group. Did not create new group.',
|
||||
'grp_NOT_A_GROUP' => 'Error: That is not an existing group account.',
|
74
output/Hostentries/AdminLTE/_hos_list.html.new.ep
Normal file
74
output/Hostentries/AdminLTE/_hos_list.html.new.ep
Normal file
@@ -0,0 +1,74 @@
|
||||
<div>
|
||||
|
||||
% my $btn = l("hos_ADD_HOSTNAME");
|
||||
|
||||
<form action="/smanager/hostentriesd" method="POST">
|
||||
<div class="row g-3 align-items-center">
|
||||
<div class="col-md-2">
|
||||
<button type="submit" class="btn btn-primary btn-sm"><%= $btn %></button>
|
||||
</div>
|
||||
</div>
|
||||
<%= hidden_field "trt" => $hos_datas->{trt} %>
|
||||
</form>
|
||||
|
||||
% my %dom_hos = %{$dom_hosts};
|
||||
% foreach my $domain ( sort ( keys %dom_hos ) ) {
|
||||
|
||||
<br>
|
||||
<%= $c->l("hos_CURRENT_HOSTNAMES_FOR_LOCAL_DOMAIN", $domain); %>
|
||||
<br>
|
||||
|
||||
<table class="table table-bordered">
|
||||
<thead>
|
||||
<tr class="">
|
||||
<th class="col-sm"><%= l "Hostname" %></th>
|
||||
<th class="col-auto"><%= l "Location" %></th>
|
||||
<th class="col-auto"><%= l "IP_ADDRESS_OR_FQDN" %></th>
|
||||
<th class="col-auto"><%= l "hos_ETHERNET_ADDRESS" %></th>
|
||||
<th class="col-auto"><%= l "COMMENT" %></th>
|
||||
<th class="align-middle" colspan="2"><%= l "ACTION" %></th>
|
||||
</tr>
|
||||
</thead>
|
||||
|
||||
<tbody>
|
||||
% foreach (@{$dom_hos{$domain}{"HOSTS"}}) {
|
||||
<tr>
|
||||
<td><%= $_->{"HostName"}; %></td>
|
||||
<td><%= $_->{"HostType"}; %></td>
|
||||
<td><%= $_->{"IP"}; %></td>
|
||||
<td><%= $_->{"MACAddress"}; %></td>
|
||||
<td><%= $_->{"Comment"}; %></td>
|
||||
|
||||
% my ($actionModify, $actionRemove) = " ";
|
||||
% my $static = $_->{"static"} || "no";
|
||||
% if ($static ne "yes") {
|
||||
%my $modify_text = l("MODIFY"); # Localized text
|
||||
%my $csrf_token = "TOKEN"; # CSRF token for security
|
||||
%my $hostentries_name = $_->{"HostName"}; # hostentries name extracted from the data structure
|
||||
%$actionModify = qq{
|
||||
% <a href="hostentriesd?CsrfDef=$csrf_token&trt=UPD&Hostname=$hostentries_name">
|
||||
% <button type="button" class="btn btn-primary btn-sm" title="$modify_text" >
|
||||
% $modify_text
|
||||
% </button>
|
||||
% </a>
|
||||
%};
|
||||
%my $remove_text = l("REMOVE"); # Localized text
|
||||
%$csrf_token = "TOKEN"; # CSRF token for security
|
||||
%#my $hostentries_name = $_->{"HostName"}; # hostentries name extracted from the data structure
|
||||
%$actionRemove = qq{
|
||||
% <a href="hostentriesd?CsrfDef=$csrf_token&trt=DEL&Hostname=$hostentries_name">
|
||||
% <button type="button" class="btn btn-primary btn-sm" title="$remove_text" >
|
||||
% $remove_text
|
||||
% </button>
|
||||
% </a>
|
||||
%};
|
||||
% }
|
||||
<td class="align-middle"><%= $c->render_to_string(inline => $actionModify) %></td>
|
||||
<td class="align-middle"><%= $c->render_to_string(inline => $actionRemove) %></td>
|
||||
|
||||
</tr>
|
||||
% }
|
||||
</tbody>
|
||||
</table>
|
||||
% }
|
||||
</div>
|
92
output/Hostentries/AdminLTE/_hos_upd.html.new.ep
Normal file
92
output/Hostentries/AdminLTE/_hos_upd.html.new.ep
Normal file
@@ -0,0 +1,92 @@
|
||||
<div>
|
||||
|
||||
% my $btn = l("NEXT");
|
||||
|
||||
<form action="/smanager/hostentriesd" method="POST">
|
||||
|
||||
% if ( $hos_datas->{trt} eq "ADD" ) {
|
||||
<h2><%=l "hos_CREATE_TITLE" %></h2>
|
||||
% } else {
|
||||
<h2><%=l "hos_MODIFY_TITLE" %></h2>
|
||||
% $btn = l("MODIFY");
|
||||
% }
|
||||
|
||||
<div>
|
||||
<%= l "Hostname_DESCRIPTION" %>
|
||||
</div>
|
||||
<br>
|
||||
<div class="row g-3 align-items-center">
|
||||
<div class="col-md-2">
|
||||
<%=l "Hostname" %>
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
% if ( $hos_datas->{trt} eq "ADD" ) {
|
||||
% param "Name" => $hos_datas->{name} unless param "Name";
|
||||
<%= text_field "Name" %>
|
||||
% } else {
|
||||
<%= hidden_field "Name" => $hos_datas->{name} %>
|
||||
<%= $hos_datas->{name} %>
|
||||
% }
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<br>
|
||||
|
||||
<div class="row g-3 align-items-center">
|
||||
<div class="col-md-2">
|
||||
<%= l "DOMAIN" %>
|
||||
</div>
|
||||
|
||||
<div class="col-auto">
|
||||
% if ( $hos_datas->{trt} eq "ADD" ) {
|
||||
% param "Domain" => $hos_datas->{domain} unless param "Domain";
|
||||
<%= select_field "Domain", $c->domains_list() %>
|
||||
% } else {
|
||||
<%= hidden_field "Domain" => $hos_datas->{domain} %>
|
||||
<%= $hos_datas->{domain} %>
|
||||
% }
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<br>
|
||||
|
||||
<div class="row g-3 align-items-center">
|
||||
<div class="col-md-2">
|
||||
<label for="inputHostComment" class="col-form-label"><%= $c->l("COMMENT", ""); %></label>
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
% param "Comment" => $hos_datas->{comment} unless param "Comment";
|
||||
<input type="text" name="Comment" id="inputHostComment" class="form-control" aria-describedby="inputHostComment" value="<%= $hos_datas->{comment} %>">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<br>
|
||||
|
||||
<div class="row g-3 align-items-center">
|
||||
<div class="col-md-2">
|
||||
<%=l "LOCATION" %>
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
% param "Hosttype" => $hos_datas->{hosttype} unless param "Hosttype";
|
||||
<%= select_field "Hosttype", $c->hosttype_list(), class => "form-select"; %>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<br>
|
||||
|
||||
<div class="row g-3 align-items-center">
|
||||
<div class="col-md-2">
|
||||
<button type="submit" class="btn btn-primary btn-sm"><%= $btn %></button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<%= hidden_field "trt" => $hos_datas->{trt} %>
|
||||
<%= hidden_field "Hostname" => $hos_datas->{hostname} %>
|
||||
<%= hidden_field "Internalip" => $hos_datas->{internalip} %>
|
||||
<%= hidden_field "Externalip" => $hos_datas->{externalip} %>
|
||||
<%= hidden_field "Macaddress" => $hos_datas->{macaddress} %>
|
||||
|
||||
</form>
|
||||
|
||||
</div>
|
84
output/Hostentries/default/_hos_list.html.new.ep
Normal file
84
output/Hostentries/default/_hos_list.html.new.ep
Normal file
@@ -0,0 +1,84 @@
|
||||
<div id="hos_list">
|
||||
|
||||
% my $btn = l("hos_ADD_HOSTNAME");
|
||||
|
||||
%= form_for "/hostentries" => (method => "POST") => begin
|
||||
|
||||
<p>
|
||||
%= submit_button "$btn", class => "action"
|
||||
<br></p>
|
||||
|
||||
%= hidden_field "trt" => $hos_datas->{trt}
|
||||
|
||||
% end
|
||||
|
||||
% my %dom_hos = %{$dom_hosts};
|
||||
% foreach my $domain ( sort ( keys %dom_hos ) ) {
|
||||
|
||||
<p><br><b>
|
||||
%= $c->l("hos_CURRENT_HOSTNAMES_FOR_LOCAL_DOMAIN", $domain);
|
||||
</b><br></p>
|
||||
|
||||
<table class="sme-border TableSort"><thead>
|
||||
<tr>
|
||||
<th class="sme-border">
|
||||
%=l "Hostname"
|
||||
</th>
|
||||
<th class="sme-border">
|
||||
%=l "Location"
|
||||
</th>
|
||||
<th class="sme-border">
|
||||
%=l "IP_ADDRESS_OR_FQDN"
|
||||
</th>
|
||||
<th class="sme-border">
|
||||
%=l "hos_ETHERNET_ADDRESS"
|
||||
</th>
|
||||
<th class="sme-border">
|
||||
%=l "COMMENT"
|
||||
</th>
|
||||
<th class="sme-border">
|
||||
%=l "ACTION"
|
||||
</th>
|
||||
</tr>
|
||||
</thead><tbody>
|
||||
|
||||
% foreach (@{$dom_hos{$domain}{"HOSTS"}}) {
|
||||
<tr>
|
||||
%= t td => (class => "sme-border") => $_->{"HostName"};
|
||||
%= t td => (class => "sme-border") => $_->{"HostType"};
|
||||
%= t td => (class => "sme-border") => $_->{"IP"};
|
||||
%= t td => (class => "sme-border") => $_->{"MACAddress"};
|
||||
%= t td => (class => "sme-border") => $_->{"Comment"};
|
||||
<td class="sme-border" style="min-width:15em">
|
||||
%my ($actionModify, $actionRemove) = " ";
|
||||
%my $static = $_->{"static"} || "no";
|
||||
%if ($static ne "yes") {
|
||||
%my $modify_text = l("MODIFY"); # Localized text
|
||||
%my $csrf_token = "TOKEN"; # CSRF token for security
|
||||
%my $hostentries_name = $_->{"HostName"}; # hostentries name extracted from the data structure
|
||||
%$actionModify = qq{
|
||||
% <a href="hostentriesd?CsrfDef=$csrf_token&trt=UPD&Hostname=$hostentries_name">
|
||||
% <button type="button" class="sme-modify-button" title="$modify_text" >
|
||||
% $modify_text
|
||||
% </button>
|
||||
% </a>
|
||||
%};
|
||||
%my $remove_text = l("REMOVE"); # Localized text
|
||||
%$csrf_token = "TOKEN"; # CSRF token for security
|
||||
%#my $hostentries_name = $_->{"HostName"}; # hostentries name extracted from the data structure
|
||||
%$actionRemove = qq{
|
||||
% <a href="hostentriesd?CsrfDef=$csrf_token&trt=DEL&Hostname=$hostentries_name">
|
||||
% <button type="button" class="sme-remove-button" title="$remove_text" >
|
||||
% $remove_text
|
||||
% </button>
|
||||
% </a>
|
||||
%};
|
||||
%}
|
||||
<%= $c->render_to_string(inline => $actionModify) %> <%= $c->render_to_string(inline => $actionRemove) %>
|
||||
</td>
|
||||
</tr>
|
||||
% }
|
||||
</tbody>
|
||||
</table>
|
||||
% }
|
||||
</div>
|
77
output/Hostentries/default/_hos_upd.html.new.ep
Normal file
77
output/Hostentries/default/_hos_upd.html.new.ep
Normal file
@@ -0,0 +1,77 @@
|
||||
<div id="hos_upd">
|
||||
|
||||
% my $btn = l("NEXT");
|
||||
|
||||
%= form_for "/hostentriesd" => (method => "POST") => begin
|
||||
<p><h2>
|
||||
% if ( $hos_datas->{trt} eq "ADD" ) {
|
||||
%=l "hos_CREATE_TITLE"
|
||||
% } else {
|
||||
%=l "hos_MODIFY_TITLE"
|
||||
% $btn = l("MODIFY");
|
||||
% }
|
||||
</h2></p>
|
||||
|
||||
<p>
|
||||
%=l "Hostname_DESCRIPTION"
|
||||
</p>
|
||||
|
||||
<p>
|
||||
<span class=label>
|
||||
%=l "Hostname", class => "label"
|
||||
</span><span class=data>
|
||||
% if ( $hos_datas->{trt} eq "ADD" ) {
|
||||
% param "Name" => $hos_datas->{name} unless param "Name";
|
||||
%= text_field "Name", class => "input"
|
||||
% } else {
|
||||
%= hidden_field "Name" => $hos_datas->{name}
|
||||
%= $hos_datas->{name}, class => "data"
|
||||
% }
|
||||
</span>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
<span class=label>
|
||||
%=l "DOMAIN", class => "label"
|
||||
</span><span class=data>
|
||||
% if ( $hos_datas->{trt} eq "ADD" ) {
|
||||
% param "Domain" => $hos_datas->{domain} unless param "Domain";
|
||||
%= select_field "Domain", $c->domains_list(), class => "input"
|
||||
% } else {
|
||||
%= hidden_field "Domain" => $hos_datas->{domain}
|
||||
%= $hos_datas->{domain}, class => "data"
|
||||
% }
|
||||
</span>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
<span class=label>
|
||||
%= $c->l("COMMENT", "");
|
||||
</span><span class=data>
|
||||
% param "Comment" => $hos_datas->{comment} unless param "Comment";
|
||||
%= text_field "Comment", class => "input"
|
||||
</span>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
<span class=label>
|
||||
%=l "LOCATION", class => "label"
|
||||
</span><span class=data>
|
||||
% param "Hosttype" => $hos_datas->{hosttype} unless param "Hosttype";
|
||||
%= select_field "Hosttype", $c->hosttype_list(), class => "input"
|
||||
</span>
|
||||
</p>
|
||||
|
||||
<p><br>
|
||||
%= submit_button "$btn", class => "action"
|
||||
</p>
|
||||
|
||||
%= hidden_field "trt" => $hos_datas->{trt}
|
||||
%= hidden_field "Hostname" => $hos_datas->{hostname}
|
||||
%= hidden_field "Internalip" => $hos_datas->{internalip}
|
||||
%= hidden_field "Externalip" => $hos_datas->{externalip}
|
||||
%= hidden_field "Macaddress" => $hos_datas->{macaddress}
|
||||
|
||||
%end
|
||||
|
||||
</div>
|
38
output/Hostentries/hostentries_en.lex.diff
Normal file
38
output/Hostentries/hostentries_en.lex.diff
Normal file
@@ -0,0 +1,38 @@
|
||||
'hos_CONFIRM_DESCRIPTION' => 'Please confirm the following details.',
|
||||
'hos_CREATE_LOCAL_HOST_TITLE' => 'Create a new hostname referring to a local host.',
|
||||
'hos_CREATE_REMOTE_HOST_TITLE' => 'Create a new hostname referring to a remote host',
|
||||
'hos_CURRENT_HOSTNAMES_FOR_DOMAIN' => 'Current list of hostnames for [_1].',
|
||||
'hos_DIDNT_ENTER_LOCAL_IP' => 'Error: You did not specify a Local IP address. IP
|
||||
addresses must contain only numbers and periods and
|
||||
be in the form "aaa.bbb.ccc.ddd".Did not create hostname.',
|
||||
'hos_DNS_FORWARDER_ENABLED' => 'A DNS forwarder has been configured. This means that all DNS
|
||||
lookups will be handled by the DNS forwarder. Hostnames
|
||||
and addresses cannot be modified on this server while
|
||||
a DNS forwarder is configured.',
|
||||
'hos_DOMAIN_VALIDATION_ERROR' => 'Error: unexpected or missing characters in domain name
|
||||
[_1]. The domain name should contain one or more
|
||||
letters, numbers, periods and minus signs. Did not create new
|
||||
domain.',
|
||||
'hos_HOSTNAME_LENGTH_ERROR' => 'Error: account name [_1] is too long. The
|
||||
maximum is 32 characters.',
|
||||
'hos_HOSTNAME_VALIDATION_ERROR' => 'Error: unexpected characters in host name: "[_1]".
|
||||
The host name should contain only
|
||||
letters, numbers, and hyphens and must start
|
||||
with a letter or a number.',
|
||||
'hos_IP_VALIDATION_ERROR' => 'Error: IP Address [_1] is
|
||||
invalid. IP Addresses must contain only numbers and periodsand be in the form "aaa.bbb.ccc.ddd". Did not create hostname.',
|
||||
'hos_MAC_ADDRESS_VALIDATION_ERROR' => 'Error: Ethernet address [_1]
|
||||
is invalid. Ethernet addresses must be in the
|
||||
form "AA:BB:CC:DD:EE:FF" and only contain the
|
||||
numbers 0-9 and the letters A-F. Did not create
|
||||
hostname.',
|
||||
'hos_MUST_BE_VALID_HOSTNAME_OR_IP' => 'Must be a valid hostname or IP number',
|
||||
'hos_NO_HOSTNAMES_FOR_LOCAL_DOMAIN' => 'There are no hostnames in the system for [_1].',
|
||||
'hos_NO_HOSTNAMES_FOR_SERVICENAME' => 'There are no hostnames in the system for [_1].',
|
||||
'hos_NO_HOSTS_FOR_THIS_DOMAIN' => 'There are no hosts for this domain.',
|
||||
'hos_STATIC_HOST_MESSAGE' => '- This host represents your system name and cannot be modifiedor removed.',
|
||||
'hos_SUCCESSFULLY_CREATED' => 'Successfully created hostname.',
|
||||
'hos_SUCCESSFULLY_DELETED' => 'Successfully deleted host.',
|
||||
'hos_SUCCESSFULLY_MODIFIED' => 'Successfully modified host.',
|
||||
'hos_UNABLE_TO_OPEN_CONFIGDB' => 'Unable to open configuration database',
|
||||
'Hostnames and addresses' => 'Hostnames and addresses',
|
73
output/Hostentries/hostentries_en.lex.new1
Normal file
73
output/Hostentries/hostentries_en.lex.new1
Normal file
@@ -0,0 +1,73 @@
|
||||
#
|
||||
# Lex file for Hostentries generated on 2025-07-17 09:52:32
|
||||
#
|
||||
'hos_ABOUT_TO_REMOVE' => 'Are you sure you wish to remove this hostname?',
|
||||
'hos_ADD_HOSTNAME' => 'Add hostname',
|
||||
'hos_ADDR_IN_DHCP_RANGE' => 'Address is inside the DHCP assigned dynamic range',
|
||||
'hos_CONFIRM_DESCRIPTION' => 'Please confirm the following details.',
|
||||
'hos_CREATE_LOCAL_HOST_TITLE' => 'Create a new hostname referring to a local host.',
|
||||
'hos_CREATE_REMOTE_HOST_TITLE' => 'Create a new hostname referring to a remote host',
|
||||
'hos_CREATE_TITLE' => 'Create or modify hostname',
|
||||
'hos_CURRENT_HOSTNAMES_FOR_DOMAIN' => 'Current list of hostnames for [_1].',
|
||||
'hos_CURRENT_HOSTNAMES_FOR_LOCAL_DOMAIN' => 'Current list of hostnames for [_1]',
|
||||
'hos_DIDNT_ENTER_LOCAL_IP' => 'Error: You did not specify a Local IP address. IP
|
||||
addresses must contain only numbers and periods and
|
||||
be in the form "aaa.bbb.ccc.ddd".Did not create hostname.',
|
||||
'hos_DNS_FORWARDER_ENABLED' => 'A DNS forwarder has been configured. This means that all DNS
|
||||
lookups will be handled by the DNS forwarder. Hostnames
|
||||
and addresses cannot be modified on this server while
|
||||
a DNS forwarder is configured.',
|
||||
'hos_DOMAIN_VALIDATION_ERROR' => 'Error: unexpected or missing characters in domain name
|
||||
[_1]. The domain name should contain one or more
|
||||
letters, numbers, periods and minus signs. Did not create new
|
||||
domain.',
|
||||
'hos_ERR_IP_IS_LOCAL_OR_GATEWAY' => 'Error: IP cannot be server IP or Gateway IP.',
|
||||
'hos_ERR_IP_NOT_LOCAL' => 'Error: This IP address is not on any of our local networks.',
|
||||
'hos_ERROR_WHILE_CREATING_HOST' => 'Error occurred while creating hostname.',
|
||||
'hos_ERROR_WHILE_DELETING_HOST' => 'Error occurred while deleting hostname.',
|
||||
'hos_ERROR_WHILE_MODIFYING_HOST' => 'Error occurred while modifying hostname.',
|
||||
'hos_ETHERNET_ADDRESS' => 'Ethernet address',
|
||||
'hos_ETHERNET_ADDRESS_DESCRIPTION' => 'The ethernet address is optional and causes the DHCP server to
|
||||
statically bind the local IP address to the computer with this
|
||||
ethernet address. If specified, it must be of the form
|
||||
"AA:BB:CC:DD:EE:FF" and must contain only the numbers 0-9 and
|
||||
the letters A-F.',
|
||||
'hos_FORM_TITLE' => 'Hostnames and addresses',
|
||||
'hos_HOSTNAME_COMMENT_ERROR' => 'Error: unexpected characters in the comment of "[_1]".
|
||||
The comment must contain only letters, spaces, numbers, dots, commas, undescores, hyphens and must start with a letter or number.',
|
||||
'hos_HOSTNAME_DESCRIPTION' => 'The hostname must contain only letters, numbers, and hyphens, and must start with a letter or number. ',
|
||||
'hos_HOSTNAME_EXISTS_ERROR' => 'Error: account [_1] hostname.',
|
||||
'hos_HOSTNAME_LENGTH_ERROR' => 'Error: account name [_1] is too long. The
|
||||
maximum is 32 characters.',
|
||||
'hos_HOSTNAME_VALIDATION_ERROR' => 'Error: unexpected characters in host name: "[_1]".
|
||||
The host name should contain only
|
||||
letters, numbers, and hyphens and must start
|
||||
with a letter or a number.',
|
||||
'hos_HOSTNAME_VALIDATOR_ERROR' => 'Error: unexpected characters in host name: "[_1]". The host name should contain only
|
||||
letters, numbers, and hyphens and must start with a letter or a number. ',
|
||||
'hos_IP_VALIDATION_ERROR' => 'Error: IP Address [_1] is
|
||||
invalid. IP Addresses must contain only numbers and periodsand be in the form "aaa.bbb.ccc.ddd". Did not create hostname.',
|
||||
'hos_LOCAL_IP' => 'Local IP',
|
||||
'hos_LOCAL_IP_DESCRIPTION' => 'The Local IP address is the IP address of another machine on
|
||||
the local network. Please enter a valid IP address in the
|
||||
format "aaa.bbb.ccc.ddd".',
|
||||
'hos_LOCAL_PAGE_DESCRIPTION' => 'Please enter the following additional details for a localhost:',
|
||||
'hos_MAC_ADDRESS_VALIDATION_ERROR' => 'Error: Ethernet address [_1]
|
||||
is invalid. Ethernet addresses must be in the
|
||||
form "AA:BB:CC:DD:EE:FF" and only contain the
|
||||
numbers 0-9 and the letters A-F. Did not create
|
||||
hostname.',
|
||||
'hos_MODIFY_TITLE' => 'Modify hostname',
|
||||
'hos_MUST_BE_VALID_HOSTNAME_OR_IP' => 'Must be a valid hostname or IP number',
|
||||
'hos_NO_HOSTNAMES_FOR_LOCAL_DOMAIN' => 'There are no hostnames in the system for [_1].',
|
||||
'hos_NO_HOSTNAMES_FOR_SERVICENAME' => 'There are no hostnames in the system for [_1].',
|
||||
'hos_NO_HOSTS_FOR_THIS_DOMAIN' => 'There are no hosts for this domain.',
|
||||
'hos_REMOTE_PAGE_DESCRIPTION' => 'Please enter the following additional details for a remotehost:',
|
||||
'hos_REMOVE_PAGE_DESCRIPTION' => 'You are about to remove the hostname "[_1]"',
|
||||
'hos_REMOVE_TITLE' => 'Remove hostname',
|
||||
'hos_STATIC_HOST_MESSAGE' => '- This host represents your system name and cannot be modifiedor removed.',
|
||||
'hos_SUCCESSFULLY_CREATED' => 'Successfully created hostname.',
|
||||
'hos_SUCCESSFULLY_DELETED' => 'Successfully deleted host.',
|
||||
'hos_SUCCESSFULLY_MODIFIED' => 'Successfully modified host.',
|
||||
'hos_UNABLE_TO_OPEN_CONFIGDB' => 'Unable to open configuration database',
|
||||
'Hostnames and addresses' => 'Hostnames and addresses',
|
20
output/Ibays/ibays_en.lex.diff
Normal file
20
output/Ibays/ibays_en.lex.diff
Normal file
@@ -0,0 +1,20 @@
|
||||
'ENTIRE_INTERNET_NO_PASSWORD' => 'Entire Internet (no password required)',
|
||||
'ENTIRE_INTERNET_PASSWORD' => 'Entire Internet (password required)',
|
||||
'ENTIRE_INTERNET_PASSWORD_REMOTE' => 'Entire Internet (password required outside local network)',
|
||||
'iba_IBAY_PASSWD_VALIDATION_ERROR' => 'The password may contain only letters and numbers.',
|
||||
'iba_PUBLIC_ACCESS_DESCRIPTION' => 'The public access mode "password required outside local
|
||||
network" is not supported by the FTP server component. If
|
||||
you select this mode, the FTP server will require a
|
||||
password both inside and outside the local network for this
|
||||
i-bay.',
|
||||
'iba_VIRTUAL_HOST_MESSAGE' => 'The following virtual domains were using this information
|
||||
bay as their content and will be changed to the primary web
|
||||
site (you can change them to something else afterward).',
|
||||
'Information bays' => 'Information bays',
|
||||
'INVALID_IBAY_DESCRIPTION' => 'Error: unexpected or missing characters in i-bay description',
|
||||
'LOCAL_NETWORK_NO_PASSWORD' => 'Local network (no password required)',
|
||||
'LOCAL_NETWORK_PASSWORD' => 'Local network (password required)',
|
||||
'NONE' => 'No access',
|
||||
'WARG' => 'Write = admin, Read = group',
|
||||
'WGRE' => 'Write = group, Read = everyone',
|
||||
'WGRG' => 'Write = group, Read = group',
|
73
output/Ibays/ibays_en.lex.new1
Normal file
73
output/Ibays/ibays_en.lex.new1
Normal file
@@ -0,0 +1,73 @@
|
||||
#
|
||||
# Lex file for Ibays generated on 2025-07-17 09:52:32
|
||||
#
|
||||
'ENTIRE_INTERNET_NO_PASSWORD' => 'Entire Internet (no password required)',
|
||||
'ENTIRE_INTERNET_PASSWORD' => 'Entire Internet (password required)',
|
||||
'ENTIRE_INTERNET_PASSWORD_REMOTE' => 'Entire Internet (password required outside local network)',
|
||||
'iba_ACCOUNT_EXISTS' => 'The account "[_1]" is an existing [_2] account.',
|
||||
'iba_ACCT_CLASHES_WITH_PSEUDONYM' => 'The account "[_1]" clashes with pseudonym
|
||||
details for [_2] account "[_3]".
|
||||
<p>[_1] is a pseudonym for [_2].</p>',
|
||||
'iba_ACCT_NAME_HAS_INVALID_CHARS' => 'The i-bay name "[_1]" contains invalid characters.
|
||||
I-bay names must start with a lower case letter and contain
|
||||
only lower case letters, numbers, and hyphens.',
|
||||
'iba_ADD_IBAY' => 'Add ibay',
|
||||
'iba_ADD_TITLE' => 'Create or modify an i-bay',
|
||||
'iba_ALLOW_DYNAMIC_CONTENT' => 'Execution of dynamic content (CGI, PHP, SSI)',
|
||||
'iba_CANT_CREATE_IBAY' => 'Can"t create new account for [_1] (does it already exist?)',
|
||||
'iba_CANT_FIND_IBAY' => 'Can"t find account for [_1] (does it exist?)',
|
||||
'iba_ERROR_WHILE_CREATING_IBAY' => 'An error occurred while creating the i-bay.',
|
||||
'iba_ERROR_WHILE_DELETING_IBAY' => 'An error occurred while deleting the i-bay.',
|
||||
'iba_ERROR_WHILE_MODIFYING_IBAY' => 'An error occurred while modifying the i-bay.',
|
||||
'iba_ERROR_WHILE_RESETTING_PASSWORD' => 'Error while resetting password.',
|
||||
'iba_FIRSTPAGE_DESC' => 'You can remove any information bay or reset its password by
|
||||
clicking on the corresponding command
|
||||
next to the information bay. If the information bay shows up
|
||||
in red, that means that the password has not
|
||||
yet been changed from the default, and should be changed
|
||||
soon.',
|
||||
'iba_FORM_TITLE' => 'Create, modify, or remove i-bays',
|
||||
'iba_HTTPS_Only' => 'Force secure connections',
|
||||
'iba_IBAY_PASSWD_VALIDATION_ERROR' => 'The password may contain only letters and numbers.',
|
||||
'iba_IBAY_PASSWD_VERIFY_ERROR' => 'The passwords do not match.',
|
||||
'iba_MAX_IBAY_NAME_LENGTH_ERROR' => 'The i-bay name "[_1]" is too long. The maximum is
|
||||
[_2] characters.',
|
||||
'iba_NAME_FIELD_DESC' => 'The information bay name should contain only lower-case
|
||||
letters, numbers, periods, hyphens and underscores, and
|
||||
should start with a lower-case letter. For example
|
||||
"johnson", "intra", and "cust3.prj12" are all valid
|
||||
names, but "3associates", "John Smith" and
|
||||
"Bus!Partner" are not. The name is limited to [_1] characters.',
|
||||
'iba_NAME_LABEL' => 'Information bay name',
|
||||
'iba_NO_IBAYS' => 'There are no i-bays currently configured.',
|
||||
'iba_PASSWORD_DESC' => 'You are about to change the password for the i-bay [_1].',
|
||||
'iba_PUBLIC_ACCESS' => 'Public access via web or anonymous ftp',
|
||||
'iba_PUBLIC_ACCESS_DESCRIPTION' => 'The public access mode "password required outside local
|
||||
network" is not supported by the FTP server component. If
|
||||
you select this mode, the FTP server will require a
|
||||
password both inside and outside the local network for this
|
||||
i-bay.',
|
||||
'iba_REMOVE_DESC' => '<p>You are about to remove the information bay [_1] ([_2]).
|
||||
</p><p>All files belonging to this information bay will be deleted.
|
||||
</p><p>Are you sure you wish to remove this information bay?
|
||||
</p>',
|
||||
'iba_REMOVE_TITLE' => 'Remove information bay',
|
||||
'iba_SUCCESSFULLY_CREATED_IBAY' => 'Successfully created i-bay.',
|
||||
'iba_SUCCESSFULLY_DELETED_IBAY' => 'Successfully deleted i-bay.',
|
||||
'iba_SUCCESSFULLY_MODIFIED_IBAY' => 'Successfully modified i-bay.',
|
||||
'iba_SUCCESSFULLY_RESET_PASSWORD' => 'Successfully reset password.',
|
||||
'iba_USER_ACCESS' => 'User access via file sharing or user ftp',
|
||||
'iba_VHOST_MESSAGE' => '<P>The following virtual domains were using this information bay
|
||||
as their content and will be changed to the primary web site
|
||||
(you can change them to something else afterward):</P>',
|
||||
'iba_VIRTUAL_HOST_MESSAGE' => 'The following virtual domains were using this information
|
||||
bay as their content and will be changed to the primary web
|
||||
site (you can change them to something else afterward).',
|
||||
'Information bays' => 'Information bays',
|
||||
'INVALID_IBAY_DESCRIPTION' => 'Error: unexpected or missing characters in i-bay description',
|
||||
'LOCAL_NETWORK_NO_PASSWORD' => 'Local network (no password required)',
|
||||
'LOCAL_NETWORK_PASSWORD' => 'Local network (password required)',
|
||||
'NONE' => 'No access',
|
||||
'WARG' => 'Write = admin, Read = group',
|
||||
'WGRE' => 'Write = group, Read = everyone',
|
||||
'WGRG' => 'Write = group, Read = group',
|
@@ -0,0 +1,47 @@
|
||||
%#
|
||||
%# Generated by SM2Gen version:0.8 Chameleon version:4.5.4 On Python:3.12.3 at 2024-12-01 15:22:43
|
||||
%#
|
||||
<div>
|
||||
<script>
|
||||
window.onload = function() {
|
||||
SelectInput();
|
||||
};
|
||||
</script>
|
||||
|
||||
% if (config->{debug} == 1) {
|
||||
<pre>
|
||||
%= dumper $lets_data
|
||||
</pre>
|
||||
% }
|
||||
|
||||
% my $btn = l("Apply");
|
||||
%= form_for "letsencryptu" => (method => "POST") => begin
|
||||
% param "trt" => $lets_data->{trt} unless param "trt";
|
||||
%= hidden_field "trt" => $lets_data->{trt}
|
||||
%# Inputs etc in here.
|
||||
|
||||
<h1 class=""><%=l("lets_Check_all_domains")%></h1>
|
||||
|
||||
<h2 class=""><%=l("lets_Loop_through_checking_the_letsencrypt")%></h2>
|
||||
|
||||
<span class="">
|
||||
%=l("lets_All_domains_check_result")
|
||||
</span>
|
||||
<span class="">
|
||||
% param "AllDomainsCheck" => $lets_data->{AllDomainsCheck} unless param "AllDomainsCheck";
|
||||
%= text_area "AllDomainsCheck", cols=>40, rows=>10, Readonly=>"true"
|
||||
</span><br>
|
||||
|
||||
<span class="">
|
||||
%my $back_text = l("Back"); # Localized text
|
||||
%my $actionBack = qq{
|
||||
% <a href="letsencryptd">
|
||||
% <input class="" type="submit" value="$back_text">
|
||||
% </a>
|
||||
%};
|
||||
<%= $c->render_to_string(inline => $actionBack) %>
|
||||
</span>
|
||||
|
||||
%# Probably finally by a submit.
|
||||
%end
|
||||
</div>
|
@@ -0,0 +1,68 @@
|
||||
%#
|
||||
%# Generated by SM2Gen version:0.8 Chameleon version:4.5.4 On Python:3.12.3 at 2024-12-01 15:22:43
|
||||
%#
|
||||
<div>
|
||||
|
||||
<!-- reetp Move to JS file -->
|
||||
<!--
|
||||
<script>
|
||||
window.onload = function() {
|
||||
SelectInput();
|
||||
};
|
||||
</script>
|
||||
-->
|
||||
|
||||
% if (config->{debug} == 1) {
|
||||
<pre>
|
||||
<%= dumper $lets_data %>
|
||||
</pre>
|
||||
% }
|
||||
|
||||
% my $btn = l("Apply");
|
||||
|
||||
<!-- reetp could change this to a form -->
|
||||
|
||||
<!-- <form action="/smanager/letsencryptu" method="POST"> -->
|
||||
|
||||
%# Inputs etc in here.
|
||||
|
||||
<h1><%= l ("lets_Check_all_enabled_domains")%></h1>
|
||||
|
||||
<br>
|
||||
|
||||
<h2><%= l ("lets_Loop_through_checking_the_letsencrypt")%></h2>
|
||||
|
||||
<br>
|
||||
|
||||
<!-- Domains being checked -->
|
||||
|
||||
<div class="row g-3 align-items-center">
|
||||
<div class="col-md-1">
|
||||
<%= l ("lets_Enabled_domains_check_result") %>
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
% param "EnabledDomainsCheck" => $lets_data->{EnabledDomainsCheck} unless param "EnabledDomainsCheck";
|
||||
%= text_area "EnabledDomainsCheck", cols=>40, rows=>10, Readonly=>"true"
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<br>
|
||||
|
||||
<!-- results box-->
|
||||
|
||||
% my $back_text = l("Back"); # Localized text
|
||||
%# param "trt" => $lets_data->{trt} unless param "trt";
|
||||
%#= hidden_field "trt" => $lets_data->{trt}
|
||||
|
||||
<div class="row g-3 align-items-center">
|
||||
<div class="col-md-2">
|
||||
<a href="letsencryptd" class="btn btn-primary btn-sm btn-sm" role="button"><%= $back_text %></a>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!--
|
||||
</form>
|
||||
-->
|
||||
|
||||
</div>
|
77
output/Letsencrypt/AdminLTE/_lets_CHECKONEDOMAIN.html.new.ep
Normal file
77
output/Letsencrypt/AdminLTE/_lets_CHECKONEDOMAIN.html.new.ep
Normal file
@@ -0,0 +1,77 @@
|
||||
%#
|
||||
%# Generated by SM2Gen version:0.8 Chameleon version:4.5.4 On Python:3.12.3 at 2024-12-01 15:22:43
|
||||
%#
|
||||
<div>
|
||||
|
||||
<!--
|
||||
<script>
|
||||
window.onload = function() {
|
||||
SelectInput();
|
||||
};
|
||||
</script>
|
||||
-->
|
||||
|
||||
% if (config->{debug} == 1) {
|
||||
<pre>
|
||||
%= dumper $lets_data
|
||||
</pre>
|
||||
% }
|
||||
|
||||
% my $btn = l("Apply");
|
||||
|
||||
<!-- <form action="/smanager/letsencrypt" method="POST"> -->
|
||||
|
||||
%# Inputs etc in here.
|
||||
|
||||
<h1><%=l("lets_Check_just_one_domain")%></h1>
|
||||
|
||||
<br>
|
||||
|
||||
<h2><%=l("lets_Loop_through_and_check_the")%></h2>
|
||||
|
||||
<br>
|
||||
|
||||
|
||||
<!-- Domain being checked -->
|
||||
|
||||
<div class="row g-3 align-items-center">
|
||||
<div class="col-md-1">
|
||||
<%= l ("lets_Domains_name") %>
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
% param "OneDomainToCheck" => $lets_data->{OneDomainToCheck} unless param "OneDomainToCheck";
|
||||
%= text_field "OneDomainToCheck", size => "50", class => "" , pattern=>".*" , placeholder=>"OneDomainToCheck", Readonly=>"true"
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<br>
|
||||
|
||||
<!-- results box-->
|
||||
|
||||
<div class="row g-3 align-items-center">
|
||||
<div class="col-md-1">
|
||||
<%= l ("lets_One_domain_check_result") %>
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
% param "OneDomainsCheck" => $lets_data->{OneDomainsCheck} unless param "OneDomainsCheck";
|
||||
%= text_area "OneDomainsCheck", cols=>40, rows=>10, Readonly=>"true"
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<br>
|
||||
|
||||
|
||||
% my $back_text = l("Back"); # Localized text
|
||||
%# param "trt" => $lets_data->{trt} unless param "trt";
|
||||
%#= hidden_field "trt" => $lets_data->{trt}
|
||||
|
||||
<div class="row g-3 align-items-center">
|
||||
<div class="col-md-2">
|
||||
<a href="letsencryptd" class="btn btn-primary btn-sm btn-sm" role="button"><%= $back_text %></a>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- </form> -->
|
||||
|
||||
</div>
|
208
output/Letsencrypt/AdminLTE/_lets_LIST.html.new.ep
Normal file
208
output/Letsencrypt/AdminLTE/_lets_LIST.html.new.ep
Normal file
@@ -0,0 +1,208 @@
|
||||
%#
|
||||
%# Generated by SM2Gen version:0.8 Chameleon version:4.5.4 On Python:3.12.3 at 2024-12-01 15:22:43
|
||||
%#
|
||||
<div>
|
||||
|
||||
<!-- reetp Move to JS file -->
|
||||
<!--
|
||||
<script>
|
||||
window.onload = function() {
|
||||
SelectInput();
|
||||
};
|
||||
</script>
|
||||
-->
|
||||
|
||||
% if (config->{debug} == 1) {
|
||||
<pre>
|
||||
<%= dumper $lets_data %>
|
||||
</pre>
|
||||
% }
|
||||
|
||||
|
||||
<br>
|
||||
|
||||
<!-- reetp could change this to a form -->
|
||||
|
||||
<!-- <form action="/smanager/letsencryptu" method="POST"> -->
|
||||
|
||||
%# my $btn = l("Apply");
|
||||
%# param "trt" => $lets_data->{trt} unless param "trt";
|
||||
%#= hidden_field "trt" => $lets_data->{trt}
|
||||
|
||||
% my $linkbtn = l ("MODIFY");
|
||||
|
||||
%# Inputs etc in here.
|
||||
%# reetp Needs some language translations?
|
||||
<div class="row g-3 align-items-center">
|
||||
<div class="col-md-1">
|
||||
<%= l("Config") %>
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
<a href="letsencryptd?trt=PARAMS" class="btn btn-outline-primary btn-sm" role="button"><%= $linkbtn %></a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<br>
|
||||
|
||||
%#= link_to l("Config"), "letsencryptd?trt=PARAMS" , class=> "link link2"
|
||||
|
||||
<div class="row g-3 align-items-center">
|
||||
<div class="col-md-1">
|
||||
<%= l ("Check_ALL_DOMAINS") %>
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
<a href="letsencryptd?trt=CHECKALLDOMAINS" class="btn btn-outline-primary btn-sm" role="button"><%= $linkbtn %></a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
%#= link_to l("Check_ALL_DOMAINS"), "letsencryptd?trt=CHECKALLDOMAINS" , class=> "link link3"
|
||||
|
||||
<br>
|
||||
|
||||
<div class="row g-3 align-items-center">
|
||||
<div class="col-md-1">
|
||||
<%= l ("Check_ALL_ENABLED_DOMAINS") %>
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
<a href="letsencryptd?trt=CHECKALLENABLEDDOMAINS" class="btn btn-outline-primary btn-sm" role="button"><%= $linkbtn %></a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
%#= link_to l("Check_ALL_ENABLED_DOMAINS"), "letsencryptd?trt=CHECKALLENABLEDDOMAINS" , class=> "link link4"
|
||||
|
||||
|
||||
<!-- </form> -->
|
||||
|
||||
|
||||
<br><br>
|
||||
|
||||
<h2><%=l("lets_For_this_Server") %></h2>
|
||||
|
||||
<br>
|
||||
|
||||
<div class="row g-3 align-items-center">
|
||||
<div class="col-md-1">
|
||||
<%= l ("lets_Internal_IP") %>
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
% param "InternalIP" => $lets_data->{InternalIP} unless param "InternalIP";
|
||||
%= text_field "InternalIP", size => "50", class => "" , pattern=>".*" , placeholder=>"InternalIP", Readonly=>"true"
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<br>
|
||||
|
||||
<div class="row g-3 align-items-center">
|
||||
<div class="col-md-1">
|
||||
<%= l ("lets_External_Interface_IP") %>
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
% param "ExternalIP" => $lets_data->{ExternalIP} unless param "ExternalIP";
|
||||
%= text_field "ExternalIP", size => "50", class => "" , pattern=>".*" , placeholder=>"ExternalIP", Readonly=>"true"
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<br>
|
||||
|
||||
<div class="row g-3 align-items-center">
|
||||
<div class="col-md-1">
|
||||
<%= l ("lets_Internet_IP") %>
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
% param "InternetIP" => $lets_data->{InternetIP} unless param "InternetIP";
|
||||
%= text_field "InternetIP", size => "50", class => "" , pattern=>".*" , placeholder=>"InternetIP", Readonly=>"true"
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<br><br>
|
||||
|
||||
<h2><%=l("lets_Current_certificate_details") %></h2>
|
||||
|
||||
<br>
|
||||
|
||||
<div class="row g-3 align-items-center">
|
||||
<div class="col-md-1">
|
||||
<%= l ("Issuer") %>
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
% param "Issuer" => $lets_data->{Issuer} unless param "Issuer";
|
||||
%= text_field "Issuer", size => "50", class => "" , pattern=>".*" , placeholder=>"Issuer", Readonly=>"true"
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<br>
|
||||
|
||||
<div class="row g-3 align-items-center">
|
||||
<div class="col-md-1">
|
||||
<%= l ("Expiry") %>
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
% param "Expiry" => $lets_data->{Expiry} unless param "Expiry";
|
||||
%= text_field "Expiry", size => "50", class => "" , pattern=>".*" , placeholder=>"Expiry", Readonly=>"true"
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<br>
|
||||
|
||||
<div class="row g-3 align-items-center">
|
||||
<div class="col-md-1">
|
||||
<%= l ("lets_Not_Before") %>
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
% param "NotBefore" => $lets_data->{NotBefore} unless param "NotBefore";
|
||||
%= text_field "NotBefore", size => "50", class => "" , pattern=>".*" , placeholder=>"NotBefore", Readonly=>"true"
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<br><br>
|
||||
|
||||
<h2 class=""><%=l("lets_List_of_Domains_and_Hosts") %></h2>
|
||||
|
||||
<br>
|
||||
|
||||
% $linkbtn = l "Check";
|
||||
|
||||
<table class="table table-bordered">
|
||||
<thead>
|
||||
<tr table-head-row>
|
||||
<th><%= l ("lets_Domain_name_/_HOSTNAME") %></th>
|
||||
<th><%= l ("lets_Brief_description") %></th>
|
||||
<th><%= l ("Content") %></th>
|
||||
<th><%= l ("lets_LABEL_NAMESERVERS") %></th>
|
||||
<th><%= l ("lets_LABEL_POINT") %></th>
|
||||
<th><%= l ("lets_LABEL_LECERT") %></th>
|
||||
<th><%= l ("lets_IS_IN_CERT") %></th>
|
||||
<th><%= l ("Check") %></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
% my $control_data = $c->stash("DomainList");
|
||||
% foreach my $row (@$control_data) {
|
||||
% my $link = $c->render_to_string(inline=>$row->{"Table1-CHECK"});
|
||||
% my $type = $c->render_to_string(inline=>$row->{"Table1-TYPE"});
|
||||
<tr>
|
||||
% if ($type eq "Domain\n"){
|
||||
<td><%=$c->render_to_string(inline=>$row->{"Table1-Domain name / HOSTNAME"}) %></td>
|
||||
% }
|
||||
% if ($type eq "Host\n") {
|
||||
<td><i class="bi bi-arrow-return-right"> </i><%=$c->render_to_string(inline=>$row->{"Table1-Domain name / HOSTNAME"}) %></td>
|
||||
% }
|
||||
|
||||
<td><%=$c->render_to_string(inline=>$row->{"Table1-Brief description"}) %></td>
|
||||
<td><%=$c->render_to_string(inline=>$row->{"Table1-Content"}) %></td>
|
||||
<td><%=$c->render_to_string(inline=>$row->{"Table1-LABEL_NAMESERVERS"}) %></td>
|
||||
<td><%=$c->render_to_string(inline=>$row->{"Table1-LABEL_POINT"}) %></td>
|
||||
<td><%=$c->render_to_string(inline=>$row->{"Table1-LABEL_LECERT"}) %></td>
|
||||
<td><%=$c->render_to_string(inline=>$row->{"Table1-IS_IN_CERT"}) %></td>
|
||||
|
||||
% if ($link ne "") {
|
||||
<td><a href= "<%= $link %>" class="btn btn-outline-primary btn-sm" role="button" > <%= $linkbtn %></a></td>
|
||||
% } else {
|
||||
<td> </td>
|
||||
% }
|
||||
</tr>
|
||||
% }
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
</div>
|
152
output/Letsencrypt/AdminLTE/_lets_PARAMS.html.new.ep
Normal file
152
output/Letsencrypt/AdminLTE/_lets_PARAMS.html.new.ep
Normal file
@@ -0,0 +1,152 @@
|
||||
%#
|
||||
%# Generated by SM2Gen version:0.8 Chameleon version:4.5.4 On Python:3.12.3 at 2024-12-01 15:22:43
|
||||
%#
|
||||
<div>
|
||||
|
||||
<!-- reetp This needs fixing -->
|
||||
<!--
|
||||
<script>
|
||||
window.onload = function() {
|
||||
SelectInput();
|
||||
};
|
||||
</script>
|
||||
-->
|
||||
% if (config->{debug} == 1) {
|
||||
<pre>
|
||||
<%= dumper $lets_data %>
|
||||
</pre>
|
||||
% }
|
||||
|
||||
<form action="/smanager/letsencryptu" method="POST">
|
||||
|
||||
% param "trt" => $lets_data->{trt} unless param "trt";
|
||||
%= hidden_field "trt" => $lets_data->{trt}
|
||||
%# Inputs etc in here.
|
||||
|
||||
<h2 class=""><%=l("lets_Manage_letsencrypt-config_settings:") %></h2>
|
||||
|
||||
<br>
|
||||
|
||||
<div>
|
||||
<%= l ("lets_CONFIG_LETSENCRYPT") %>
|
||||
</div>
|
||||
|
||||
<div class="row g-3 align-items-center">
|
||||
<div class="col-md-1">
|
||||
<%= l ("lets_SERVICE_STATUS") %>
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
% my @status_options = selected_field([["Disabled" => "disabled"], ["Enabled" => "enabled"], ["TEST" => "test"]], $lets_data->{status});
|
||||
%= select_field "status" => @status_options, class => "form-select"
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<br>
|
||||
|
||||
|
||||
<div class="row g-3 align-items-center">
|
||||
<div class="col-md-1">
|
||||
<%= l ("lets_HOOKSCRIPT_STATUS") %>
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
% my @hookScript_options = [["Disabled" => "disabled"], ["Enabled" => "enabled"]];
|
||||
% param "hookScript" => $lets_data->{hookScript} unless param "hookScript";
|
||||
%= select_field "hookScript" => @hookScript_options, class => "form-select"
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<br>
|
||||
|
||||
|
||||
<div class="row g-3 align-items-center">
|
||||
<div class="col-md-1">
|
||||
<%= l ("lets_HOSTOVERRIDE_STATUS") %>
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
% my @hostOverride_options = [["Disabled" => "disabled"], ["Yes" => "yes"]];
|
||||
% param "hostOverride" => $lets_data->{hostOverride} unless param "hostOverride";
|
||||
%= select_field "hostOverride" => @hostOverride_options, class => "form-select"
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<br>
|
||||
|
||||
|
||||
<div class="row g-3 align-items-center">
|
||||
<div class="col-md-1">
|
||||
<%= l ("lets_ACCEPT_TERMS_STATUS") %>
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
% my @ACCEPT_TERMS_options = [["Disabled" => "disabled"], ["Yes" => "yes"]];
|
||||
% param "ACCEPT_TERMS" => $lets_data->{ACCEPT_TERMS} unless param "ACCEPT_TERMS";
|
||||
%= select_field "ACCEPT_TERMS" => @ACCEPT_TERMS_options, class => "form-select"
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<br>
|
||||
|
||||
|
||||
<div class="row g-3 align-items-center">
|
||||
<div class="col-md-1">
|
||||
<%= l ("lets_API_STATUS") %>
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
% my @API_options = [["2" => "2"]];
|
||||
% param "API" => $lets_data->{API} unless param "API";
|
||||
%= select_field "API" => @API_options, class => "form-select"
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<br>
|
||||
|
||||
|
||||
<div class="row g-3 align-items-center">
|
||||
<div class="col-md-1">
|
||||
<%= l ("lets_KEYSIZE_STATUS") %>
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
% my @keysize_options = [["2048" => "2048"], ["3072" => "3072"], ["4096" => "4096"]];
|
||||
% param "keysize" => $lets_data->{keysize} unless param "keysize";
|
||||
%= select_field "keysize" => @keysize_options, class => "form-select"
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<br>
|
||||
|
||||
|
||||
<div class="row g-3 align-items-center">
|
||||
<div class="col-md-1">
|
||||
<%= l ("lets_CONFIGUREMODE_STATUS") %>
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
% my @configure_options = [["ALL" => "all"], ["Domains" => "domains"], ["HOSTS" => "hosts"], ["NONE" => "none"]];
|
||||
% param "configure" => $lets_data->{configure} unless param "configure";
|
||||
%= select_field "configure" => @configure_options, class => "form-select"
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<br>
|
||||
|
||||
|
||||
<div class="row g-3 align-items-center">
|
||||
<div class="col-md-1">
|
||||
<label for="email_address" class="col-form-label"><%= l ("Email") %></label>
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
% param "email" => $lets_data->{email} unless param "email";
|
||||
<input type="email" name="email" id="email_address" class="form-control" aria-describedby="Email Address" value="<%= $lets_data->{email} %>">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<br>
|
||||
|
||||
% my $btn = l("Apply");
|
||||
|
||||
<div class="row g-3 align-items-center">
|
||||
<div class="col-md-1">
|
||||
<button type="submit" class="btn btn-primary btn-sm"><%= $btn %></button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</form>
|
||||
</div>
|
45
output/Letsencrypt/default/_lets_CHECKALLDOMAINS.html.new.ep
Normal file
45
output/Letsencrypt/default/_lets_CHECKALLDOMAINS.html.new.ep
Normal file
@@ -0,0 +1,45 @@
|
||||
%#
|
||||
%# Generated by SM2Gen version:0.8 Chameleon version:4.5.4 On Python:3.12.3 at 2024-12-01 15:22:43
|
||||
%#
|
||||
<div id="Letsencrypt-CHECKALLDOMAINS" class="partial Letsencrypt-CHECKALLDOMAINS">
|
||||
<script>
|
||||
window.onload = function() {
|
||||
SelectInput();
|
||||
};
|
||||
</script>
|
||||
% if (config->{debug} == 1) {
|
||||
<pre>
|
||||
%= dumper $lets_data
|
||||
</pre>
|
||||
% }
|
||||
% my $btn = l("Apply");
|
||||
%= form_for "letsencryptu" => (method => "POST") => begin
|
||||
% param "trt" => $lets_data->{trt} unless param "trt";
|
||||
%= hidden_field "trt" => $lets_data->{trt}
|
||||
%# Inputs etc in here.
|
||||
|
||||
<h1 class="head"><%=l("lets_Check_all_domains")%></h1>
|
||||
|
||||
<h2 class="subh"><%=l("lets_Loop_through_checking_the_letsencrypt")%></h2>
|
||||
|
||||
<span class=label>
|
||||
%=l("lets_All_domains_check_result")
|
||||
</span><span class=data>
|
||||
% param "AllDomainsCheck" => $lets_data->{AllDomainsCheck} unless param "AllDomainsCheck";
|
||||
%= text_area "AllDomainsCheck", cols=>40, rows=>10, Readonly=>"true"
|
||||
</span><br>
|
||||
|
||||
<span class="data">
|
||||
%my $back_text = l("Back"); # Localized text
|
||||
%my $actionBack = qq{
|
||||
% <a href="letsencryptd">
|
||||
% <input class="action back" type="submit" value="$back_text">
|
||||
% </a>
|
||||
%};
|
||||
<%= $c->render_to_string(inline => $actionBack) %>
|
||||
</span>
|
||||
|
||||
|
||||
%# Probably finally by a submit.
|
||||
%end
|
||||
</div>
|
@@ -0,0 +1,45 @@
|
||||
%#
|
||||
%# Generated by SM2Gen version:0.8 Chameleon version:4.5.4 On Python:3.12.3 at 2024-12-01 15:22:43
|
||||
%#
|
||||
<div id="Letsencrypt-CHECKALLENABLEDDOMAINS" class="partial Letsencrypt-CHECKALLENABLEDDOMAINS">
|
||||
<script>
|
||||
window.onload = function() {
|
||||
SelectInput();
|
||||
};
|
||||
</script>
|
||||
% if (config->{debug} == 1) {
|
||||
<pre>
|
||||
%= dumper $lets_data
|
||||
</pre>
|
||||
% }
|
||||
% my $btn = l("Apply");
|
||||
%= form_for "letsencryptu" => (method => "POST") => begin
|
||||
% param "trt" => $lets_data->{trt} unless param "trt";
|
||||
%= hidden_field "trt" => $lets_data->{trt}
|
||||
%# Inputs etc in here.
|
||||
|
||||
<h1 class="head"><%=l("lets_Check_all_enabled_domains")%></h1>
|
||||
|
||||
<h2 class="subh"><%=l("lets_Loop_through_checking_the_letsencrypt")%></h2>
|
||||
|
||||
<span class=label>
|
||||
%=l("lets_Enabled_domains_check_result")
|
||||
</span><span class=data>
|
||||
% param "EnabledDomainsCheck" => $lets_data->{EnabledDomainsCheck} unless param "EnabledDomainsCheck";
|
||||
%= text_area "EnabledDomainsCheck", cols=>40, rows=>10, Readonly=>"true"
|
||||
</span><br>
|
||||
|
||||
<span class="data">
|
||||
%my $back_text = l("Back"); # Localized text
|
||||
%my $actionBack = qq{
|
||||
% <a href="letsencryptd">
|
||||
% <input class="action back" type="submit" value="$back_text">
|
||||
% </a>
|
||||
%};
|
||||
<%= $c->render_to_string(inline => $actionBack) %>
|
||||
</span>
|
||||
|
||||
|
||||
%# Probably finally by a submit.
|
||||
%end
|
||||
</div>
|
52
output/Letsencrypt/default/_lets_CHECKONEDOMAIN.html.new.ep
Normal file
52
output/Letsencrypt/default/_lets_CHECKONEDOMAIN.html.new.ep
Normal file
@@ -0,0 +1,52 @@
|
||||
%#
|
||||
%# Generated by SM2Gen version:0.8 Chameleon version:4.5.4 On Python:3.12.3 at 2024-12-01 15:22:43
|
||||
%#
|
||||
<div id="Letsencrypt-CHECKONEDOMAIN" class="partial Letsencrypt-CHECKONEDOMAIN">
|
||||
<script>
|
||||
window.onload = function() {
|
||||
SelectInput();
|
||||
};
|
||||
</script>
|
||||
% if (config->{debug} == 1) {
|
||||
<pre>
|
||||
%= dumper $lets_data
|
||||
</pre>
|
||||
% }
|
||||
% my $btn = l("Apply");
|
||||
%= form_for "letsencryptu" => (method => "POST") => begin
|
||||
% param "trt" => $lets_data->{trt} unless param "trt";
|
||||
%= hidden_field "trt" => $lets_data->{trt}
|
||||
%# Inputs etc in here.
|
||||
|
||||
<h1 class="head"><%=l("lets_Check_just_one_domain")%></h1>
|
||||
|
||||
<h2 class="subh"><%=l("lets_Loop_through_and_check_the")%></h2>
|
||||
|
||||
<p><span class=label>
|
||||
%=l("lets_Domains_name")
|
||||
</span><span class=data>
|
||||
% param "OneDomainToCheck" => $lets_data->{OneDomainToCheck} unless param "OneDomainToCheck";
|
||||
%= text_field "OneDomainToCheck", size => "50", class => "textinput OneDomainToCheck" , pattern=>".*" , placeholder=>"OneDomainToCheck", Readonly=>"true"
|
||||
<br></span></p>
|
||||
|
||||
<span class=label>
|
||||
%=l("lets_One_domain_check_result")
|
||||
</span><span class=data>
|
||||
% param "OneDomainsCheck" => $lets_data->{OneDomainsCheck} unless param "OneDomainsCheck";
|
||||
%= text_area "OneDomainsCheck", cols=>40, rows=>10, Readonly=>"true"
|
||||
</span><br>
|
||||
|
||||
<span class="data">
|
||||
%my $back_text = l("Back"); # Localized text
|
||||
%my $actionBack = qq{
|
||||
% <a href="letsencryptd">
|
||||
% <input class="action back" type="submit" value="$back_text">
|
||||
% </a>
|
||||
%};
|
||||
<%= $c->render_to_string(inline => $actionBack) %>
|
||||
</span>
|
||||
|
||||
|
||||
%# Probably finally by a submit.
|
||||
%end
|
||||
</div>
|
133
output/Letsencrypt/default/_lets_LIST.html.new.ep
Normal file
133
output/Letsencrypt/default/_lets_LIST.html.new.ep
Normal file
@@ -0,0 +1,133 @@
|
||||
%#
|
||||
%# Generated by SM2Gen version:0.8 Chameleon version:4.5.4 On Python:3.12.3 at 2024-12-01 15:22:43
|
||||
%#
|
||||
<div id="Letsencrypt-LIST" class="partial Letsencrypt-LIST">
|
||||
<script>
|
||||
window.onload = function() {
|
||||
SelectInput();
|
||||
};
|
||||
</script>
|
||||
% if (config->{debug} == 1) {
|
||||
<pre>
|
||||
%= dumper $lets_data
|
||||
</pre>
|
||||
% }
|
||||
% my $btn = l("Apply");
|
||||
%= form_for "letsencryptu" => (method => "POST") => begin
|
||||
% param "trt" => $lets_data->{trt} unless param "trt";
|
||||
%= hidden_field "trt" => $lets_data->{trt}
|
||||
%# Inputs etc in here.
|
||||
|
||||
<div class=inline-buttons>
|
||||
|
||||
|
||||
<a href="letsencryptd?trt=PARAMS" class="link link2">
|
||||
%= l("Config")
|
||||
</a>
|
||||
%#= link_to l("Config"), "letsencryptd?trt=PARAMS" , class=>"link link2"
|
||||
|
||||
|
||||
<a href="letsencryptd?trt=CHECKALLDOMAINS" class="link link3">
|
||||
%= l("Check_ALL_DOMAINS")
|
||||
</a>
|
||||
%#= link_to l("Check_ALL_DOMAINS"), "letsencryptd?trt=CHECKALLDOMAINS" , class=>"link link3"
|
||||
|
||||
|
||||
<a href="letsencryptd?trt=CHECKALLENABLEDDOMAINS" class="link link4">
|
||||
%= l("Check_ALL_ENABLED_DOMAINS")
|
||||
</a>
|
||||
%#= link_to l("Check_ALL_ENABLED_DOMAINS"), "letsencryptd?trt=CHECKALLENABLEDDOMAINS" , class=>"link link4"
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<h2 class="subh2"><%=l("lets_For_this_Server")%></h2>
|
||||
|
||||
<p><span class=label>
|
||||
%=l("lets_Internal_IP")
|
||||
</span><span class=data>
|
||||
% param "InternalIP" => $lets_data->{InternalIP} unless param "InternalIP";
|
||||
%= text_field "InternalIP", size => "50", class => "textinput InternalIP" , pattern=>".*" , placeholder=>"InternalIP", Readonly=>"true"
|
||||
<br></span></p>
|
||||
|
||||
<p><span class=label>
|
||||
%=l("lets_External_Interface_IP")
|
||||
</span><span class=data>
|
||||
% param "ExternalIP" => $lets_data->{ExternalIP} unless param "ExternalIP";
|
||||
%= text_field "ExternalIP", size => "50", class => "textinput ExternalIP" , pattern=>".*" , placeholder=>"ExternalIP", Readonly=>"true"
|
||||
<br></span></p>
|
||||
|
||||
<p><span class=label>
|
||||
%=l("lets_Internet_IP")
|
||||
</span><span class=data>
|
||||
% param "InternetIP" => $lets_data->{InternetIP} unless param "InternetIP";
|
||||
%= text_field "InternetIP", size => "50", class => "textinput InternetIP" , pattern=>".*" , placeholder=>"InternetIP", Readonly=>"true"
|
||||
<br></span></p>
|
||||
|
||||
<h2 class="subh3"><%=l("lets_Current_certificate_details")%></h2>
|
||||
|
||||
<p><span class=label>
|
||||
%=l("Issuer")
|
||||
</span><span class=data>
|
||||
% param "Issuer" => $lets_data->{Issuer} unless param "Issuer";
|
||||
%= text_field "Issuer", size => "50", class => "textinput Issuer" , pattern=>".*" , placeholder=>"Issuer", Readonly=>"true"
|
||||
<br></span></p>
|
||||
|
||||
<p><span class=label>
|
||||
%=l("Expiry")
|
||||
</span><span class=data>
|
||||
% param "Expiry" => $lets_data->{Expiry} unless param "Expiry";
|
||||
%= text_field "Expiry", size => "50", class => "textinput Expiry" , pattern=>".*" , placeholder=>"Expiry", Readonly=>"true"
|
||||
<br></span></p>
|
||||
|
||||
<p><span class=label>
|
||||
%=l("lets_Not_Before")
|
||||
</span><span class=data>
|
||||
% param "NotBefore" => $lets_data->{NotBefore} unless param "NotBefore";
|
||||
%= text_field "NotBefore", size => "50", class => "textinput NotBefore" , pattern=>".*" , placeholder=>"NotBefore", Readonly=>"true"
|
||||
<br></span></p>
|
||||
|
||||
<h2 class="subh4"><%=l("lets_List_of_Domains_and_Hosts")%></h2>
|
||||
|
||||
% my $linkbtn = l "Check";
|
||||
|
||||
<br /><table class="sme-border TableSort sme-table tabl1 ">
|
||||
<thead class="tabl1">
|
||||
<tr table-head-row>
|
||||
<th class="sme-border table-head-col table-head-col-Domain name / HOSTNAME "><%=l("lets_Domain_name_/_HOSTNAME")%></th>
|
||||
<th class="sme-border table-head-col table-head-col-Brief description "><%=l("lets_Brief_description")%></th>
|
||||
<th class="sme-border table-head-col table-head-col-Content "><%=l("Content")%></th>
|
||||
<th class="sme-border table-head-col table-head-col-LABEL_NAMESERVERS "><%=l("lets_LABEL_NAMESERVERS")%></th>
|
||||
<th class="sme-border table-head-col table-head-col-LABEL_POINT "><%=l("lets_LABEL_POINT")%></th>
|
||||
<th class="sme-border table-head-col table-head-col-LABEL_LECERT "><%=l("lets_LABEL_LECERT")%></th>
|
||||
<th class="sme-border table-head-col table-head-col-IS_IN_CERT "><%=l("lets_IS_IN_CERT")%></th>
|
||||
<th class="sme-border table-head-col table-head-col-CHECK "><%=l("Check")%></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody class="tabl1">
|
||||
% my $control_data = $c->stash("DomainList");
|
||||
% foreach my $row (@$control_data) {
|
||||
% my $link = $c->render_to_string(inline=>$row->{"Table1-CHECK"});
|
||||
<tr class="table-row">
|
||||
<td class="sme-border table-col table-col-Table1-Domain name / HOSTNAME"><%=$c->render_to_string(inline=>$row->{"Table1-Domain name / HOSTNAME"})%></td>
|
||||
<td class="sme-border table-col table-col-Table1-Brief description"><%=$c->render_to_string(inline=>$row->{"Table1-Brief description"})%></td>
|
||||
<td class="sme-border table-col table-col-Table1-Content"><%=$c->render_to_string(inline=>$row->{"Table1-Content"})%></td>
|
||||
<td class="sme-border table-col table-col-Table1-LABEL_NAMESERVERS"><%=$c->render_to_string(inline=>$row->{"Table1-LABEL_NAMESERVERS"})%></td>
|
||||
<td class="sme-border table-col table-col-Table1-LABEL_POINT"><%=$c->render_to_string(inline=>$row->{"Table1-LABEL_POINT"})%></td>
|
||||
<td class="sme-border table-col table-col-Table1-LABEL_LECERT"><%=$c->render_to_string(inline=>$row->{"Table1-LABEL_LECERT"})%></td>
|
||||
<td class="sme-border table-col table-col-Table1-IS_IN_CERT"><%=$c->render_to_string(inline=>$row->{"Table1-IS_IN_CERT"})%></td>
|
||||
% if ($link ne "") {
|
||||
<td><a href= "<%= $link %>" class="btn btn-outline-primary btn-sm" role="button" > <%= $linkbtn %></a></td>
|
||||
% } else {
|
||||
<td> </td>
|
||||
% }
|
||||
</tr>
|
||||
%}
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
|
||||
%# Probably finally by a submit.
|
||||
%end
|
||||
</div>
|
98
output/Letsencrypt/default/_lets_PARAMS.html.new.ep
Normal file
98
output/Letsencrypt/default/_lets_PARAMS.html.new.ep
Normal file
@@ -0,0 +1,98 @@
|
||||
%#
|
||||
%# Generated by SM2Gen version:0.8 Chameleon version:4.5.4 On Python:3.12.3 at 2024-12-01 15:22:43
|
||||
%#
|
||||
<div id="Letsencrypt-PARAMS" class="partial Letsencrypt-PARAMS">
|
||||
<script>
|
||||
window.onload = function() {
|
||||
SelectInput();
|
||||
};
|
||||
</script>
|
||||
% if (config->{debug} == 1) {
|
||||
<pre>
|
||||
%= dumper $lets_data
|
||||
</pre>
|
||||
% }
|
||||
% my $btn = l("Apply");
|
||||
%= form_for "letsencryptu" => (method => "POST") => begin
|
||||
% param "trt" => $lets_data->{trt} unless param "trt";
|
||||
%= hidden_field "trt" => $lets_data->{trt}
|
||||
%# Inputs etc in here.
|
||||
|
||||
<h2 class="subh"><%=l("lets_Manage_letsencrypt-config_settings:")%></h2>
|
||||
|
||||
<p class="paragraph para1">
|
||||
%=l("lets_CONFIG_LETSENCRYPT")
|
||||
</p>
|
||||
|
||||
<p><span class=label>
|
||||
%=l("lets_SERVICE_STATUS")
|
||||
</span><span class=data>
|
||||
%# my @status_options = [["Disabled" => "disabled"], ["Enabled" => "enabled"], ["TEST" => "test"]];
|
||||
% my @status_options = selected_field([["Disabled" => "disabled"], ["Enabled" => "enabled"], ["TEST" => "test"]], $lets_data->{status});
|
||||
%# param "status" => $lets_data->{status} unless param "status";
|
||||
%= select_field "status" => @status_options, class => "input"
|
||||
<br></span> </p>
|
||||
|
||||
<p><span class=label>
|
||||
%=l("lets_HOOKSCRIPT_STATUS")
|
||||
</span><span class=data>
|
||||
% my @hookScript_options = [["Disabled" => "disabled"], ["Enabled" => "enabled"]];
|
||||
% param "hookScript" => $lets_data->{hookScript} unless param "hookScript";
|
||||
%= select_field "hookScript" => @hookScript_options, class => "input"
|
||||
<br></span> </p>
|
||||
|
||||
<p><span class=label>
|
||||
%=l("lets_HOSTOVERRIDE_STATUS")
|
||||
</span><span class=data>
|
||||
% my @hostOverride_options = [["Disabled" => "disabled"], ["Yes" => "yes"]];
|
||||
% param "hostOverride" => $lets_data->{hostOverride} unless param "hostOverride";
|
||||
%= select_field "hostOverride" => @hostOverride_options, class => "input"
|
||||
<br></span> </p>
|
||||
|
||||
<p><span class=label>
|
||||
%=l("lets_ACCEPT_TERMS_STATUS")
|
||||
</span><span class=data>
|
||||
% my @ACCEPT_TERMS_options = [["Disabled" => "disabled"], ["Yes" => "yes"]];
|
||||
% param "ACCEPT_TERMS" => $lets_data->{ACCEPT_TERMS} unless param "ACCEPT_TERMS";
|
||||
%= select_field "ACCEPT_TERMS" => @ACCEPT_TERMS_options, class => "input"
|
||||
<br></span> </p>
|
||||
|
||||
<p><span class=label>
|
||||
%=l("lets_API_STATUS")
|
||||
</span><span class=data>
|
||||
% my @API_options = [["2" => "2"]];
|
||||
% param "API" => $lets_data->{API} unless param "API";
|
||||
%= select_field "API" => @API_options, class => "input"
|
||||
<br></span> </p>
|
||||
|
||||
<p><span class=label>
|
||||
%=l("lets_KEYSIZE_STATUS")
|
||||
</span><span class=data>
|
||||
% my @keysize_options = [["2048" => "2048"], ["3072" => "3072"], ["4096" => "4096"]];
|
||||
% param "keysize" => $lets_data->{keysize} unless param "keysize";
|
||||
%= select_field "keysize" => @keysize_options, class => "input"
|
||||
<br></span> </p>
|
||||
|
||||
<p><span class=label>
|
||||
%=l("lets_CONFIGUREMODE_STATUS")
|
||||
</span><span class=data>
|
||||
% my @configure_options = [["ALL" => "all"], ["Domains" => "domains"], ["HOSTS" => "hosts"], ["NONE" => "none"]];
|
||||
% param "configure" => $lets_data->{configure} unless param "configure";
|
||||
%= select_field "configure" => @configure_options, class => "input"
|
||||
<br></span> </p>
|
||||
|
||||
<p><span class=label>
|
||||
%=l("Email")
|
||||
</span><span class=data>
|
||||
% param "email" => $lets_data->{email} unless param "email";
|
||||
%=email_field "email", class => "emai8"
|
||||
</span></p>
|
||||
|
||||
|
||||
<span class="data">
|
||||
%= submit_button l("Save"), class => "action subm9"
|
||||
</span>
|
||||
|
||||
%# Probably finally by a submit.
|
||||
%end
|
||||
</div>
|
0
output/Letsencrypt/letsencrypt_en.lex.diff
Normal file
0
output/Letsencrypt/letsencrypt_en.lex.diff
Normal file
44
output/Letsencrypt/letsencrypt_en.lex.new1
Normal file
44
output/Letsencrypt/letsencrypt_en.lex.new1
Normal file
@@ -0,0 +1,44 @@
|
||||
#
|
||||
# Lex file for Letsencrypt generated on 2025-07-17 09:52:29
|
||||
#
|
||||
'lets_ACCEPT_TERMS_STATUS' => 'Accept Terms Status',
|
||||
'lets_All_domains_check_result' => 'All domains check result',
|
||||
'lets_API_STATUS' => 'API Status',
|
||||
'lets_Brief_description' => 'Brief description',
|
||||
'lets_Check_all_domains' => 'Check all domains',
|
||||
'lets_CHECK_ALL_DOMAINS' => 'Check All Domains',
|
||||
'lets_Check_all_enabled_domains' => 'Check all enabled domains',
|
||||
'lets_CHECK_ALL_ENABLED_DOMAINS' => 'Check All Enabled Domains',
|
||||
'lets_Check_just_one_domain' => 'Check just one domain',
|
||||
'lets_CHECKALLDOMAINS_panel_action_was_successful' => 'Check all domains panel action was successful',
|
||||
'lets_CHECKALLENABLEDDOMAINS_panel_action_was_successful' => 'Check all enabled domains panel action was successful',
|
||||
'lets_CHECKONEDOMAIN_panel_action_was_successful' => 'Check one domain panel action was successful',
|
||||
'lets_CONFIG_LETSENCRYPT' => 'Configure Letsencrypt',
|
||||
'lets_CONFIGUREMODE_STATUS' => 'Configure mode Status',
|
||||
'lets_Current_certificate_details' => 'Current certificate details',
|
||||
'lets_Domain_name_/_HOSTNAME' => 'Domain name / HOSTNAME',
|
||||
'lets_Domains_name' => 'Domains name',
|
||||
'lets_Enabled_domains_check_result' => 'Enabled domains check result',
|
||||
'lets_Error_Status_Report' => 'Error Status Report',
|
||||
'lets_External_Interface_IP' => 'External Interface IP',
|
||||
'lets_For_this_Server' => 'For this Server',
|
||||
'lets_HOOKSCRIPT_STATUS' => 'Hookscript Status',
|
||||
'lets_HOSTOVERRIDE_STATUS' => 'Hostoverride Status',
|
||||
'lets_Internal_IP' => 'Internal IP',
|
||||
'lets_Internet_IP' => 'Internet IP',
|
||||
'lets_IS_IN_CERT' => 'Is in certificate',
|
||||
'lets_KEYSIZE_STATUS' => 'Keysize Status',
|
||||
'lets_LABEL_LECERT' => 'Label secret',
|
||||
'lets_LABEL_NAMESERVERS' => 'Label timeservers',
|
||||
'lets_LABEL_POINT' => 'Label Point',
|
||||
'lets_Letsencrypt_certificate' => 'Letsencrypt certificate',
|
||||
'lets_List_of_Domains_and_Hosts' => 'List of Domains and Hosts',
|
||||
'lets_LIST_panel_action_was_successful' => 'List panel action was successful',
|
||||
'lets_Loop_through_and_check_the' => 'Loop through and check the letsencrypt status for a specific domain',
|
||||
'lets_Loop_through_checking_the_letsencrypt' => 'Loop through checking the letsencrypt status for each configured domain which is enabled',
|
||||
'lets_Manage_letsencrypt-config_settings:' => 'Manage letsencrypt-config settings',
|
||||
'lets_Not_Before' => 'Not Before',
|
||||
'lets_One_domain_check_result' => 'One domain check result',
|
||||
'lets_PARAMS_panel_action_was_successful' => 'Parameter panel action was successful',
|
||||
'lets_SERVICE_STATUS' => 'Service Status',
|
||||
'lets_Status_Report' => 'Status Report',
|
7
output/Localnetworks/localnetworks_en.lex.diff
Normal file
7
output/Localnetworks/localnetworks_en.lex.diff
Normal file
@@ -0,0 +1,7 @@
|
||||
'ln_DEFAULT' => 'default',
|
||||
'ln_extra' => '[_1]/[_2] via router $networkRouter}.',
|
||||
'ln_NETWORK_ADDRESS' => 'Network address',
|
||||
'ln_NO_ADDITIONAL_NETWORKS' => 'No additional networks',
|
||||
'ln_REMOVE_CONFIRM' => 'Are you sure you wish to remove this network?',
|
||||
'ln_SUCCESS' => 'Successfully added network [_1]/[_2] via router [_3].',
|
||||
'Local networks' => 'Local networks',
|
34
output/Localnetworks/localnetworks_en.lex.new1
Normal file
34
output/Localnetworks/localnetworks_en.lex.new1
Normal file
@@ -0,0 +1,34 @@
|
||||
#
|
||||
# Lex file for Localnetworks generated on 2025-07-17 09:52:32
|
||||
#
|
||||
'ln_ADD_DESC' => 'Each parameter must be in the form #.#.#.# (each # is a number from 0 to 255). The server software will zero out the ending (host identifier) part of the network address according to the subnet mask, to ensure that the network address is valid. </P><P> "Router" should be the IP address of the router on your local network via which the additional network is reached.',
|
||||
'ln_ADD_TITLE' => 'Add a local network ',
|
||||
'ln_DEFAULT' => 'default',
|
||||
'ln_ERROR_CREATING_NETWORK' => 'Error occurred while creating network.',
|
||||
'ln_ERROR_DELETING_NETWORK' => 'Error occurred while deleting network.',
|
||||
'ln_extra' => '[_1]/[_2] via router $networkRouter}.',
|
||||
'ln_Failed to find network in Db' => 'Failed to find network in Db',
|
||||
'ln_FIRSTPAGE_DESC' => 'For security reasons, several services on your server are available only to your local network. However you can grant these local access privileges to additional networks by listing them below. Most installations should leave this list empty.',
|
||||
'ln_INVALID_IP_ADDRESS' => 'Invalid IP address - [_1]',
|
||||
'ln_INVALID_SUBNET_MASK' => 'Invalid subnet mask',
|
||||
'ln_LOCAL NETWORKS' => 'Local networks',
|
||||
'ln_LOCALNETWORK_ADD' => 'Add network',
|
||||
'ln_NETWORK_ADDRESS' => 'Network address',
|
||||
'ln_NETWORK_ALREADY_ADDED' => 'Error: network [_1] (derived from network [_1] and subnet mask [_2]) has already been added. Did not add new network.',
|
||||
'ln_NETWORK_ALREADY_LOCAL' => ' Error: network [_1] (derived from network [_1] and subnet mask [_2]) is already considered local. Did not add new network. ',
|
||||
'ln_NO_ADDITIONAL_NETWORKS' => 'No additional networks',
|
||||
'ln_NO_SUCH_NETWORK' => 'Network not found in network db',
|
||||
'ln_NOT_ACCESSIBLE_FROM_LOCAL_NETWORK' => 'Error: router address [_3] is not accessible from local network. Did not add network.',
|
||||
'ln_NUMBER_OF_HOSTS' => 'Number of hosts',
|
||||
'ln_REMOVE_CONFIRM' => 'Are you sure you wish to remove this network?',
|
||||
'ln_REMOVE_DESC' => 'You are about to remove the following local network.',
|
||||
'ln_REMOVE_HOSTS_DESC' => 'Local hosts configured on the network you are about to remove have been detected. By default, they will also be removed. Uncheck this box if, for some reason, you do not wish this to happen. Note that they will not be treated as local, and may not even be reachable, after this network is removed. ',
|
||||
'ln_REMOVE_HOSTS_LABEL' => 'Remove hosts on network',
|
||||
'ln_REMOVE_TITLE' => 'Remove local network',
|
||||
'ln_SUBNET_MASK' => 'Subnet mask',
|
||||
'ln_SUCCESS' => 'Successfully added network [_1]/[_2] via router [_3].',
|
||||
'ln_SUCCESS_NETWORK_RANGE' => 'Successfully added network [_1]/[_2] via router [_3]. Your server will grant local access privileges to [_4] IP addresses in the range [_5] to [_6]. ',
|
||||
'ln_SUCCESS_NONSTANDARD_RANGE' => '<p>Successfully added network [_1]/[_2] via router [_3].</p><p> Your server will grant local access privileges to [_4] IP addresses in the range [_5] to [_6].</p><p> Warning: the ProFTPd FTP server cannot handle this nonstandard subnet mask. The simpler specification <b>[_7]</b> will be used instead.</p>',
|
||||
'ln_SUCCESS_REMOVED_NETWORK' => 'Successfully removed network [_1]/[_2] via router [_3].',
|
||||
'ln_SUCCESS_SINGLE_ADDRESS' => 'Successfully added network [_1]/[_2] via router [_3]. Your server will grant local access privileges to the single IP address [_1]. ',
|
||||
'Local networks' => 'Local networks',
|
232
output/Nutups/AdminLTE/_nut_CONFIG.html.new.ep
Normal file
232
output/Nutups/AdminLTE/_nut_CONFIG.html.new.ep
Normal file
@@ -0,0 +1,232 @@
|
||||
%#
|
||||
%# Generated by SM2Gen version:0.9(20Jan2025) Chameleon version:4.5.4 On Python:3.12.3 at 2025-01-20 16:21:33
|
||||
%#
|
||||
<div>
|
||||
|
||||
|
||||
|
||||
% if (config->{debug} == 1) {
|
||||
<pre>
|
||||
%= dumper $nut_data
|
||||
</pre>
|
||||
% }
|
||||
|
||||
|
||||
<form action="/smanager/nutupsu" method="POST">
|
||||
|
||||
%# Inputs etc in here.
|
||||
|
||||
<!-- reetp - autocomplete="off" ? -->
|
||||
|
||||
<h2><%=l("nut_Manage_Nutups-config_settings:")%></h2>
|
||||
|
||||
<br>
|
||||
|
||||
<div class="row g-3 align-items-center">
|
||||
<div class="col-md-1">
|
||||
<%= l ("nut_Nut_status") %>
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
%# my @status_options = [["Disabled" => "disabled"], ["Enabled" => "enabled"]];
|
||||
%# param "status" => $nut_data->{status} unless param "status";
|
||||
|
||||
% my @status_options = selected_field([["Disabled" => "disabled"], ["Enabled" => "enabled"]], $nut_data->{status});
|
||||
<%= select_field "status" => @status_options, class => "form-select", id => "status_select" %>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<br>
|
||||
|
||||
<div class="row g-3 align-items-center">
|
||||
<div class="col-md-1">
|
||||
<%= l ("nut_Nut_mode") %>
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
% my @Nutmode_options = [["Standalone" => "standalone"], ["Net Server" => "netserver"], ["Net Client " => "netclient"]];
|
||||
% param "Nutmode" => $nut_data->{Nutmode} unless param "Nutmode";
|
||||
<%= select_field "Nutmode" => @Nutmode_options, class => "input form-select", id => "Nutmode_select" %>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<br><br>
|
||||
|
||||
<div class="masterups">
|
||||
<div class="secondaryups">
|
||||
|
||||
<h2><%=l("nut_if_Net_Server")%></h2>
|
||||
|
||||
<br>
|
||||
|
||||
<div class="row g-3 align-items-center">
|
||||
<div class="col-md-1">
|
||||
<label for="inputMasterUPSName" class="col-form-label"><%= l ("nut_MasterUPS_UPSNAME@IP") %></label>
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
% param "MasterUPS_Name" => $nut_data->{MasterUPS_Name} unless param "MasterUPS_Name";
|
||||
<%= "ups@". $nut_data->{"localip"} %>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row g-3 align-items-center">
|
||||
<div class="col-md-1">
|
||||
<%= l ("nut_SlaveUPS_User") %>
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
<%= "upssecondary" %>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row g-3 align-items-center">
|
||||
<div class="col-md-1">
|
||||
%=l("nut_SlaveUPS_Password")
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
<%= $nut_data->{"SlaveUPS_Pass"}%>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<br>
|
||||
|
||||
</div>
|
||||
|
||||
<br>
|
||||
|
||||
<div>
|
||||
|
||||
<h2><%= l ("nut_UPS_Device") %></h2>
|
||||
|
||||
<br>
|
||||
|
||||
<div class="row g-3 align-items-center">
|
||||
<div class="col-md-1">
|
||||
<label for="UPS_Model_select" class="col-form-label"><%= l ("nut_UPS_Model") %></label>
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
% my @UPS_Model_options = $c->get_model_options();
|
||||
% param "UPS_Model" => $nut_data->{UPS_Model} unless param "UPS_Model";
|
||||
<%= select_field "UPS_Model" => \@UPS_Model_options, class => "form-select", id => "UPS_Model_select" %>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<br>
|
||||
|
||||
<div class="row g-3 align-items-center">
|
||||
<div class="col-md-1">
|
||||
<label for="inputUPSDevice" class="col-form-label"><%= l ("nut_UPS_Device") %></label>
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
% param "UPS_Device" => $nut_data->{UPS_Device} unless param "UPS_Device";
|
||||
<input type="text" name="UPS_Device" pattern=".*" size="50" id="inputUPSDevice" class="form-control" aria-describedby="UPS Device" placeholder="auto (for usb)" value="<%= $nut_data->{UPS_Device} %>" >
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="slaveups">
|
||||
|
||||
<h2><%=l("nut_if_Net_Client")%></h2>
|
||||
|
||||
<br>
|
||||
|
||||
<div class="row g-3 align-items-center">
|
||||
<div class="col-md-1">
|
||||
<label for="inputClientUPSDevice" class="col-form-label"><%= l ("nut_SlaveUPS_UPSNAME@IP") %></label>
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
% param "ClientUPS_Name" => $nut_data->{ClientUPS_Name} unless param "ClientUPS_Name";
|
||||
<input type="text" name="ClientUPS_Name" pattern=".*" size="50" id="inputClientUPSDevice" class="form-control" aria-describedby="Client UPS Name" placeholder="upsname@IP[:port]" value="<%= $nut_data->{ClientUPS_Name} %>" >
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<br>
|
||||
|
||||
<div class="row g-3 align-items-center">
|
||||
<div class="col-md-1">
|
||||
<label for="ClientUPSUsername" class="col-form-label"><%= l ("nut_ClientUPS_Username") %></label>
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
% param "ClientUPS_User" => $nut_data->{ClientUPS_User} unless param "ClientUPS_User";
|
||||
<input type="text" name="ClientUPS_User" id="ClientUPSUsername" class="form-control" aria-describedby="Client UPS Username" placeholder="Client username" value="<%= $nut_data->{ClientUPS_User} %>" >
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<br>
|
||||
|
||||
<div class="row g-3 align-items-center">
|
||||
<div class="col-md-1">
|
||||
<label for="password" class="col-form-label"><%= l ("nut_ClientUPS_Password") %></label>
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
% param "ClientUPS_Pass" => $nut_data->{ClientUPS_Pass} unless param "ClientUPS_Pass";
|
||||
<input type="password" name="ClientUPS_Pass" id="password" class="form-control" aria-describedby="Client UPS Password" placeholder="Client password" value="<%= $nut_data->{ClientUPS_Pass} %>" >
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
<span id="togglePassword" class="bi bi-eye"></span>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<br><br>
|
||||
|
||||
<div class="generics">
|
||||
|
||||
<h2><%=l("nut_if_genericups")%></h2>
|
||||
|
||||
<br><br>
|
||||
|
||||
<div class="row g-3 align-items-center">
|
||||
<div class="col-md-1">
|
||||
<label for="inputUPSGenericType" class="col-form-label"><%= l ("nut_UPS_Generic_Type") %></label>
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
% param "UPS_gen_Type" => $nut_data->{UPS_gen_Type} unless param "UPS_gen_Type";
|
||||
<input type="text" name="UPS_gen_Type" pattern=".*" size="50" id="inputUPSGenericType" class="form-control" aria-describedby="UPS Generic Type" placeholder="UPS_Gen_Type" value="<%= $nut_data->{UPS_gen_Type} %>" >
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<br>
|
||||
|
||||
<div class="row g-3 align-items-center">
|
||||
<div class="col-md-1">
|
||||
<label for="inputUPSManufacturer" class="col-form-label"><%= l ("nut_UPS_Generic_Manufacturer") %></label>
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
% param "UPS_gen_Mfr" => $nut_data->{UPS_gen_Mfr} unless param "UPS_gen_Mfr";
|
||||
<input type="text" name="UPS_gen_Mfr" pattern=".*" size="50" id="inputUPSManufacturer" class="form-control" aria-describedby="UPS Generic Manufacturer" placeholder="UPS_sen_Mfr" value="<%= $nut_data->{UPS_gen_Mfr} %>" >
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<br>
|
||||
|
||||
<div class="row g-3 align-items-center">
|
||||
<div class="col-md-1">
|
||||
<label for="inputUPSModel" class="col-form-label"><%= l ("nut_UPS_Generic_Model") %></label>
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
% param "UPS_gen_Model" => $nut_data->{UPS_gen_Model} unless param "UPS_gen_Model";
|
||||
<input type="text" name="UPS_gen_Model" pattern=".*" size="50" id="inputUPSModel" class="form-control" aria-describedby="UPS Generic Model" placeholder="UPS_gen_Model" value="<%= $nut_data->{UPS_gen_Model} %>" >
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<br>
|
||||
|
||||
% param "trt" => $nut_data->{trt} unless param "trt";
|
||||
<%= hidden_field "trt" => $nut_data->{trt} %>
|
||||
|
||||
% my $btn = l ("Save");
|
||||
|
||||
<div class="row g-3 align-items-center">
|
||||
<div class="col-md-1">
|
||||
<button type="submit" class="btn btn-primary btn-sm"><%= $btn %></button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</form>
|
||||
|
||||
<br>
|
||||
|
||||
</div>
|
60
output/Nutups/AdminLTE/_nut_STATUS.html.new.ep
Normal file
60
output/Nutups/AdminLTE/_nut_STATUS.html.new.ep
Normal file
@@ -0,0 +1,60 @@
|
||||
%#
|
||||
%# Generated by SM2Gen version:0.9(20Jan2025) Chameleon version:4.5.4 On Python:3.12.3 at 2025-01-20 16:21:33
|
||||
%#
|
||||
<div>
|
||||
|
||||
<!--
|
||||
<script>
|
||||
window.onload = function() {
|
||||
SelectInput();
|
||||
};
|
||||
</script>
|
||||
-->
|
||||
|
||||
% if (config->{debug} == 1) {
|
||||
<pre>
|
||||
<%= dumper $nut_data %>
|
||||
</pre>
|
||||
% }
|
||||
|
||||
% my $btn = l("Apply");
|
||||
|
||||
<form action="/smanager/nutupsu" method="POST">
|
||||
% param "trt" => $nut_data->{trt} unless param "trt";
|
||||
<%= hidden_field "trt" => $nut_data->{trt} %>
|
||||
|
||||
%# Inputs etc in here.
|
||||
|
||||
<div>
|
||||
<a href="nutupsd?trt=CONFIG" class = "btn btn-sm btn-primary">
|
||||
<%= l ("nut_Configure_NutUPS") %>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<br>
|
||||
|
||||
<h2><%= l ("nut_Status_of_the_controlled_UPS")%></h2>
|
||||
|
||||
<div >
|
||||
<%= l ("nut_Descriptive_paragraph") %>
|
||||
</div>
|
||||
|
||||
<br>
|
||||
|
||||
<!--
|
||||
<span class="">
|
||||
%=l("nut_Status_(from_upsc)")
|
||||
</span>
|
||||
<span class="">
|
||||
% param "UPSStatus" => $nut_data->{UPSStatus} unless param "UPSStatus";
|
||||
%= text_area "UPSStatus", cols=>55, rows=>35, Readonly=>"true"
|
||||
</span>
|
||||
<br>
|
||||
-->
|
||||
|
||||
<%= include "partials/_nut_UPS_STATUS" %>
|
||||
|
||||
%# Probably finally by a submit.
|
||||
</form>
|
||||
|
||||
</div>
|
136
output/Nutups/default/_nut_CONFIG.html.new.ep
Normal file
136
output/Nutups/default/_nut_CONFIG.html.new.ep
Normal file
@@ -0,0 +1,136 @@
|
||||
%#
|
||||
%# Generated by SM2Gen version:0.9(20Jan2025) Chameleon version:4.5.4 On Python:3.12.3 at 2025-01-20 16:21:33
|
||||
%#
|
||||
<div id="Nutups-CONFIG" class="partial Nutups-CONFIG">
|
||||
<script>
|
||||
window.onload = function() {
|
||||
SelectInput();
|
||||
};
|
||||
</script>
|
||||
% if (config->{debug} == 1) {
|
||||
<pre>
|
||||
%= dumper $nut_data
|
||||
</pre>
|
||||
% }
|
||||
% my $btn = l("Apply");
|
||||
%= form_for "nutupsu" => (method => "POST") => (autocomplete => "off" ) => begin
|
||||
% param "trt" => $nut_data->{trt} unless param "trt";
|
||||
%= hidden_field "trt" => $nut_data->{trt}
|
||||
%# Inputs etc in here.
|
||||
|
||||
<h2 class="subh2"><%=l("nut_Manage_Nutups-config_settings:")%></h2>
|
||||
|
||||
<p><span class=label>
|
||||
%=l("nut_Nut_status")
|
||||
</span><span class=data>
|
||||
%# my @status_options = [["Disabled" => "disabled"], ["Enabled" => "enabled"]];
|
||||
%# param "status" => $nut_data->{status} unless param "status";
|
||||
|
||||
% my @status_options = selected_field([["Disabled" => "disabled"], ["Enabled" => "enabled"]], $nut_data->{status});
|
||||
%= select_field "status" => @status_options, class => "input", id => "status_select"
|
||||
<br></span> </p>
|
||||
|
||||
<p><span class=label>
|
||||
%=l("nut_Nut_mode")
|
||||
</span><span class=data>
|
||||
% my @Nutmode_options = [["Standalone" => "standalone"], ["Net Server" => "netserver"], ["Net Client " => "netclient"]];
|
||||
% param "Nutmode" => $nut_data->{Nutmode} unless param "Nutmode";
|
||||
%= select_field "Nutmode" => @Nutmode_options, class => "input", id => "Nutmode_select"
|
||||
<br></span> </p>
|
||||
|
||||
<div class=masterups>
|
||||
<div class=secondaryups>
|
||||
<h2 class="subh3"><%=l("nut_if_Net_Server")%></h2>
|
||||
<p><span class=label>
|
||||
%=l("nut_MasterUPS_UPSNAME@IP")
|
||||
</span><span class=data>
|
||||
% param "MasterUPS_Name" => $nut_data->{MasterUPS_Name} unless param "MasterUPS_Name";
|
||||
%= "ups@". $nut_data->{"localip"}
|
||||
<br></span></p>
|
||||
|
||||
<p><span class="label">
|
||||
%=l("nut_SlaveUPS_User")
|
||||
</span><span class=data>
|
||||
%= "upssecondary"
|
||||
</span></p>
|
||||
|
||||
<p><span class="label">
|
||||
%=l("nut_SlaveUPS_Password")
|
||||
</span><span class=data>
|
||||
<%= $nut_data->{"SlaveUPS_Pass"}%>
|
||||
</span></p>
|
||||
</div>
|
||||
<div>
|
||||
<h2><%= l ("nut_UPS_Device") %></h2>
|
||||
<p><span class=label>
|
||||
%=l("nut_UPS_Model")
|
||||
</span><span class=data>
|
||||
% my @UPS_Model_options = $c->get_model_options();
|
||||
% param "UPS_Model" => $nut_data->{UPS_Model} unless param "UPS_Model";
|
||||
%= select_field "UPS_Model" => \@UPS_Model_options, class => "input", id => "UPS_Model_select"
|
||||
<br></span> </p>
|
||||
|
||||
<p><span class=label>
|
||||
%=l("nut_UPS_Device")
|
||||
</span><span class=data>
|
||||
% param "UPS_Device" => $nut_data->{UPS_Device} unless param "UPS_Device";
|
||||
%= text_field "UPS_Device", size => "50", class => "textinput UPS_Device" , pattern=>".*" , placeholder=>"auto (for usb)"
|
||||
<br></span></p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class=slaveups>
|
||||
<h2 class="subh4"><%=l("nut_if_Net_Client")%></h2>
|
||||
<p><span class=label>
|
||||
%=l("nut_SlaveUPS_UPSNAME@IP")
|
||||
</span><span class=data>
|
||||
% param "ClientUPS_Name" => $nut_data->{ClientUPS_Name} unless param "ClientUPS_Name";
|
||||
%= text_field "ClientUPS_Name", size => "50", class => "textinput ClientUPS_Name" , pattern=>".*" , placeholder=>"upsname@IP[:port]"
|
||||
<br></span></p>
|
||||
|
||||
<p><span class="label">
|
||||
%=l("nut_ClientUPS_Username")
|
||||
</span><span class=data>
|
||||
% param "ClientUPS_User" => $nut_data->{ClientUPS_User} unless param "ClientUPS_User";
|
||||
%=text_field "ClientUPS_User", class => "textinput"
|
||||
</span></p>
|
||||
|
||||
<p><span class="label">
|
||||
%=l("nut_ClientUPS_Password")
|
||||
</span><span class=data>
|
||||
% param "ClientUPS_Pass" => $nut_data->{ClientUPS_Pass} unless param "ClientUPS_Pass";
|
||||
%=password_field "ClientUPS_Pass", class => "pass4 sme-password", autocomplete => "off"
|
||||
</span></p>
|
||||
</div>
|
||||
|
||||
<div class=generics>
|
||||
<h2 class="subh5"><%=l("nut_if_genericups")%></h2>
|
||||
<p><span class=label>
|
||||
%=l("nut_UPS_Generic_Type")
|
||||
</span><span class=data>
|
||||
% param "UPS_gen_Type" => $nut_data->{UPS_gen_Type} unless param "UPS_gen_Type";
|
||||
%= text_field "UPS_gen_Type", size => "50", class => "textinput UPS_gen_Type" , pattern=>".*" , placeholder=>"UPS_gen_Type"
|
||||
<br></span></p>
|
||||
|
||||
<p><span class=label>
|
||||
%=l("nut_UPS_Generic_Manufacturer")
|
||||
</span><span class=data>
|
||||
% param "UPS_gen_Mfr" => $nut_data->{UPS_gen_Mfr} unless param "UPS_gen_Mfr";
|
||||
%= text_field "UPS_gen_Mfr", size => "50", class => "textinput UPS_gen_Mfr" , pattern=>".*" , placeholder=>"UPS_gen_Mfr"
|
||||
<br></span></p>
|
||||
|
||||
<p><span class=label>
|
||||
%=l("nut_UPS_Generic_Model")
|
||||
</span><span class=data>
|
||||
% param "UPS_gen_Model" => $nut_data->{UPS_gen_Model} unless param "UPS_gen_Model";
|
||||
%= text_field "UPS_gen_Model", size => "50", class => "textinput UPS_gen_Model" , pattern=>".*" , placeholder=>"UPS_gen_Model"
|
||||
<br></span></p>
|
||||
</div>
|
||||
|
||||
<span class="data">
|
||||
%= submit_button l("Save"), class => "action subm12"
|
||||
</span>
|
||||
|
||||
%# Probably finally by a submit.
|
||||
%end
|
||||
</div>
|
83
output/Nutups/default/_nut_STATUS.html.new.ep
Normal file
83
output/Nutups/default/_nut_STATUS.html.new.ep
Normal file
@@ -0,0 +1,83 @@
|
||||
%#
|
||||
%# Generated by SM2Gen version:0.9(20Jan2025) Chameleon version:4.5.4 On Python:3.12.3 at 2025-01-20 16:21:33
|
||||
%#
|
||||
<div id="Nutups-STATUS" class="partial Nutups-STATUS">
|
||||
<script>
|
||||
window.onload = function() {
|
||||
SelectInput();
|
||||
};
|
||||
</script>
|
||||
% if (config->{debug} == 1) {
|
||||
<pre>
|
||||
%= dumper $nut_data
|
||||
</pre>
|
||||
% }
|
||||
% my $btn = l("Apply");
|
||||
%= form_for "nutupsu" => (method => "POST") => begin
|
||||
% param "trt" => $nut_data->{trt} unless param "trt";
|
||||
%= hidden_field "trt" => $nut_data->{trt}
|
||||
%# Inputs etc in here.
|
||||
|
||||
<div class=inline-buttons>
|
||||
|
||||
|
||||
<a href="nutupsd?trt=CONFIG" class="link link1">
|
||||
%= l("nut_Configure_NutUPS")
|
||||
</a>
|
||||
%#= link_to l("nut_Configure_NutUPS"), "nutupsd?trt=CONFIG" , class=>"link link1"
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<h2 class="subh1"><%=l("nut_Status_of_the_controlled_UPS")%></h2>
|
||||
|
||||
<p class="paragraph para1">
|
||||
%=l("nut_Descriptive_paragraph")
|
||||
</p>
|
||||
<br />
|
||||
|
||||
|
||||
<!--
|
||||
<span class=label>
|
||||
%=l("nut_Status_(from_upsc)")
|
||||
</span><span class=data>
|
||||
% param "UPSStatus" => $nut_data->{UPSStatus} unless param "UPSStatus";
|
||||
%= text_area "UPSStatus", cols=>55, rows=>35, Readonly=>"true"
|
||||
</span><br>
|
||||
-->
|
||||
|
||||
<span class=label>
|
||||
%=l("nut_Nut_mode")
|
||||
</span><span class=data>
|
||||
%= $nut_data->{Nutmode}
|
||||
</span><br>
|
||||
|
||||
% if ($nut_data->{Nutmode} eq "nutserver") {
|
||||
<div class=secondaryups>
|
||||
<p><span class=label>
|
||||
%=l("nut_MasterUPS_UPSNAME@IP")
|
||||
</span><span class=data>
|
||||
% param "MasterUPS_Name" => $nut_data->{MasterUPS_Name} unless param "MasterUPS_Name";
|
||||
%= "ups@". $nut_data->{"localip"}
|
||||
<br></span></p>
|
||||
|
||||
<p><span class="label">
|
||||
%=l("nut_SlaveUPS_User")
|
||||
</span><span class=data>
|
||||
%= "upssecondary"
|
||||
</span></p>
|
||||
|
||||
<p><span class="label">
|
||||
%=l("nut_SlaveUPS_Password")
|
||||
</span><span class=data>
|
||||
<%= $nut_data->{"SlaveUPS_Pass"}%>
|
||||
</span></p>
|
||||
</div>
|
||||
% }
|
||||
|
||||
%= include "partials/_nut_UPS_STATUS"
|
||||
|
||||
%# Probably finally by a submit.
|
||||
%end
|
||||
</div>
|
0
output/Nutups/nutups_en.lex.diff
Normal file
0
output/Nutups/nutups_en.lex.diff
Normal file
30
output/Nutups/nutups_en.lex.new1
Normal file
30
output/Nutups/nutups_en.lex.new1
Normal file
@@ -0,0 +1,30 @@
|
||||
#
|
||||
# Lex file for Nutups generated on 2025-07-17 09:52:27
|
||||
#
|
||||
'nut_ClientUPS_Password' => 'Client UPS password',
|
||||
'nut_ClientUPS_Username' => 'Client UPS username',
|
||||
'nut_CONFIG_panel_action_was_successful' => 'CONFIG panel action was successful',
|
||||
'nut_Configure_NutUPS' => 'Configure NutUPS',
|
||||
'nut_Descriptive_paragraph' => 'You can use your UPS connected directly to your server in a standalone mode or you can act as a Primary whereby other servers can also react to the status of your connected UPS, or you can connect to another server as a Secondary and react to the status of the UPS connected to that server.',
|
||||
'nut_Error_Status_Report' => 'Error Status Report',
|
||||
'nut_if_genericups' => 'Generic UPS details',
|
||||
'nut_if_Net_Client' => 'Net Client details',
|
||||
'nut_if_Net_Server' => 'Net Server details',
|
||||
'nut_Manage_Nutups-config_settings:' => 'Manage Nutups configuration settings',
|
||||
'nut_MasterUPS_Password' => 'Local server password',
|
||||
'nut_MasterUPS_UPSNAME@IP' => 'UPS name@localhost',
|
||||
'nut_Nut_mode' => 'Nut mode',
|
||||
'nut_Nut_status' => 'Nut status',
|
||||
'nut_NutUPS_configuration' => 'NutUPS configuration',
|
||||
'nut_SlaveUPS_Password' => 'Secondary->Primary ->Server',
|
||||
'nut_SlaveUPS_UPSNAME@IP' => 'Secondary->Primary UPSNAME@IP',
|
||||
'nut_SlaveUPS_User' => 'Secondary UPS user',
|
||||
'nut_Status_(from_upsc)' => 'Status (from running upsc)',
|
||||
'nut_Status_of_the_controlled_UPS' => 'Status of the controlled UPS',
|
||||
'nut_STATUS_panel_action_was_successful' => 'STATUS panel action was successful',
|
||||
'nut_Status_Report' => 'Status Report',
|
||||
'nut_UPS_Device' => 'UPS Device',
|
||||
'nut_UPS_Generic_Manufacturer' => 'UPS Generic Manufacturer',
|
||||
'nut_UPS_Generic_Model' => 'UPS Generic Model',
|
||||
'nut_UPS_Generic_Type' => 'UPS Generic Type',
|
||||
'nut_UPS_Model' => 'UPS Model',
|
122
output/Portforwarding/AdminLTE/_pf_add.html.new.ep
Normal file
122
output/Portforwarding/AdminLTE/_pf_add.html.new.ep
Normal file
@@ -0,0 +1,122 @@
|
||||
<div>
|
||||
|
||||
% my $retref = $c->stash("ret");
|
||||
% my %ret = $retref ? %$retref : (ret => "");
|
||||
% my @vars = split(/,/, $ret{vars} // "");
|
||||
% my ($var1, $var2, $var3, $var4, $var5, $var6, $var7) = @vars;
|
||||
|
||||
<br>
|
||||
|
||||
% if (config->{debug} == 1) {
|
||||
<pre>
|
||||
<%= dumper $c->current_route %>
|
||||
<%= dumper $c->stash("ret") %>
|
||||
</pre>
|
||||
% }
|
||||
|
||||
% if ($ret{"ret"} eq "") {
|
||||
<div>
|
||||
<%= $c->render_to_string(inline => l("pf_FIRST_PAGE_DESCRIPTION")); %>
|
||||
</div>
|
||||
% } elsif (index($ret{ret},"SUCCESS") != -1) {
|
||||
<div>
|
||||
<!--<h2> Operation Status Report</h2>-->
|
||||
<%= $c->render_to_string(inline => l($ret{ret}, @vars[0..6])) %>
|
||||
</div>
|
||||
% } else {
|
||||
<div class="text-danger">
|
||||
<!--<h2> Operation Status Report - Error</h2>-->
|
||||
<%= $c->render_to_string(inline => l($ret{ret}, @vars[0..6])) %>
|
||||
</div>
|
||||
% }
|
||||
|
||||
<br>
|
||||
|
||||
<h2><%= l "pf_CREATE_RULE" %></h2>
|
||||
|
||||
<form action="/smanager/portforwardingb" method="POST">
|
||||
|
||||
<br>
|
||||
<div>
|
||||
<%= l "pf_SUMMARY_ADD_DESC" %>
|
||||
</div>
|
||||
|
||||
<br>
|
||||
|
||||
<div class="row g-3 align-items-center">
|
||||
<div class="col-md-1">
|
||||
<%= l "Protocol" %>
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
<%=select_field "proto"=>["TCP","UDP"], class => "form-select" %>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<br>
|
||||
|
||||
<div class="row g-3 align-items-center">
|
||||
<div class="col-md-1">
|
||||
<label for="inputSourcePort" class="col-form-label"><%= l "pf_LABEL_SOURCE_PORT" %></label>
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
<input type="text" name="sport" id="inputSourcePort" class="form-control" aria-describedby="Source Port">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<br>
|
||||
|
||||
<div class="row g-3 align-items-center">
|
||||
<div class="col-md-1">
|
||||
<label for="inputDestinationPort" class="col-form-label"><%= l "pf_LABEL_DESTINATION_PORT" %></label>
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
<input type="text" name="port" id="inputDestinationPort" class="form-control" aria-describedby="Destination Port">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<br>
|
||||
|
||||
<div class="row g-3 align-items-center">
|
||||
<div class="col-md-1">
|
||||
<label for="inputDestinationHost" class="col-form-label"><%= l "pf_LABEL_DESTINATION_HOST" %></label>
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
<input type="text" name="dhost" id="inputDestinationHost" class="form-control" aria-describedby="Destination Host">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<br>
|
||||
|
||||
<div class="row g-3 align-items-center">
|
||||
<div class="col-md-1">
|
||||
<label for="inputAllowHosts" class="col-form-label"><%= l "pf_ALLOW_HOSTS" %></label>
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
<input type="text" name="allow" id="inputAllowHosts" class="form-control" aria-describedby="Allow Hosts">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<br>
|
||||
|
||||
<div class="row g-3 align-items-center">
|
||||
<div class="col-md-1">
|
||||
<label for="inputRuleComment" class="col-form-label"><%= l "pf_RULE_COMMENT" %></label>
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
<input type="text" name="cmmnt" id="inputRuleComment" class="form-control" aria-describedby="Comment">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<br>
|
||||
|
||||
% 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-sm"><%= $btn %></button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
</div>
|
98
output/Portforwarding/AdminLTE/_pf_del.html.new.ep
Normal file
98
output/Portforwarding/AdminLTE/_pf_del.html.new.ep
Normal file
@@ -0,0 +1,98 @@
|
||||
<div>
|
||||
|
||||
% my $proto = $pf_datas->{proto};
|
||||
% my $sport = $pf_datas->{sport};
|
||||
% my $dport = $pf_datas->{dport};
|
||||
% my $dhost = $pf_datas->{dhost};
|
||||
% my $cmmnt = $pf_datas->{cmmnt};
|
||||
% my $allow = $pf_datas->{allow};
|
||||
|
||||
% if (config->{debug} == 1) {
|
||||
<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>
|
||||
|
||||
<br>
|
||||
|
||||
<table>
|
||||
<thead>
|
||||
<th class="col-md-4"> </th>
|
||||
<th class="col-md-4"> </th>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr >
|
||||
<td>
|
||||
<%= l "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>
|
||||
|
||||
<br>
|
||||
|
||||
<%= hidden_field sport=>$sport %>
|
||||
<%= hidden_field proto=>$proto %>
|
||||
|
||||
% 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-sm"><%= $btn %></button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
</div>
|
111
output/Portforwarding/AdminLTE/_pf_list.html.new.ep
Normal file
111
output/Portforwarding/AdminLTE/_pf_list.html.new.ep
Normal file
@@ -0,0 +1,111 @@
|
||||
<div>
|
||||
|
||||
% 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 $numtcpforwards = @$tcpforwards;
|
||||
% my $numudpforwards = @$udpforwards;
|
||||
|
||||
% if ($c->app->config->{debug}) {
|
||||
<pre>
|
||||
<%= dumper { ret_data => \%ret } %>
|
||||
</pre>
|
||||
% }
|
||||
|
||||
% if ($ret{ret} eq "") {
|
||||
<div>
|
||||
<%= $c->render_to_string(inline => l("pf_FIRST_PAGE_DESCRIPTION")); %>
|
||||
</div>
|
||||
% } elsif (index($ret{ret},"SUCCESS") != -1) {
|
||||
|
||||
<div>
|
||||
<h2> Operation Status Report</h2>
|
||||
<%= $c->render_to_string(inline => l($ret{ret}, @vars[0..6])) %>
|
||||
</div>
|
||||
% } else {
|
||||
<br>
|
||||
<div class="text-danger">
|
||||
<h2> Operation Status Report - Error</h2>
|
||||
<%= $c->render_to_string(inline => l($ret{ret}, @vars[0..6])) %>
|
||||
</div>
|
||||
% }
|
||||
|
||||
<br>
|
||||
|
||||
<form action="/smanager/portforwardinga" method="POST">
|
||||
|
||||
% 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-sm"><%= $btn %></button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</form>
|
||||
|
||||
<br>
|
||||
|
||||
% if ($empty) {
|
||||
<br>
|
||||
<%= l "pf_NO_FORWARDS" %>
|
||||
% } else {
|
||||
<br>
|
||||
<%= l "pf_SHOW_FORWARDS" %>
|
||||
<br><br>
|
||||
<table class="table table-bordered">
|
||||
<thead>
|
||||
<tr>
|
||||
<th><%= l "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>
|
||||
</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 btn-sm" 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} %>
|
||||
|
||||
</div>
|
85
output/Portforwarding/default/_pf_add.html.new.ep
Normal file
85
output/Portforwarding/default/_pf_add.html.new.ep
Normal file
@@ -0,0 +1,85 @@
|
||||
<div id="pf_add">
|
||||
|
||||
% 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 ($c->app->config->{debug}) {
|
||||
<pre>
|
||||
%= dumper { ret_data => \%ret }
|
||||
</pre>
|
||||
% }
|
||||
|
||||
% if ($ret{ret} eq "") {
|
||||
|
||||
% } elsif (index($ret{ret},"SUCCESS") != -1) {
|
||||
<br>
|
||||
<div class="success">
|
||||
%= $c->render_to_string(inline => l($ret{ret}, @vars[0..6]))
|
||||
</div>
|
||||
% } else {
|
||||
<br>
|
||||
<div class="sme-error">
|
||||
%= $c->render_to_string(inline => l($ret{ret}, @vars[0..6]))
|
||||
</div>
|
||||
% }
|
||||
<br />
|
||||
% my $btn = l("ADD");
|
||||
|
||||
% if (config->{debug} == 1) {
|
||||
</pre>
|
||||
%= dumper $c->current_route
|
||||
%= dumper $c->stash("ret")
|
||||
</pre>
|
||||
% }
|
||||
|
||||
%= form_for "/portforwardingb" => (method => "POST") => begin
|
||||
<h2>
|
||||
%=l "pf_CREATE_RULE"
|
||||
</h2>
|
||||
<p>
|
||||
%=l "pf_SUMMARY_ADD_DESC"
|
||||
</p><br>
|
||||
<span class=label>
|
||||
%=l "Protocol"
|
||||
</span><span class=data>
|
||||
%=select_field "proto"=>["TCP","UDP"]
|
||||
</span><br><br>
|
||||
<span class=label>
|
||||
%=l "pf_LABEL_SOURCE_PORT"
|
||||
</span><span class=data>
|
||||
%=text_field "sport"
|
||||
</span><br><br>
|
||||
<span class=label>
|
||||
%=l "pf_LABEL_DESTINATION_PORT"
|
||||
</span>
|
||||
<span class=data>
|
||||
%=text_field "dport"
|
||||
</span><br><br>
|
||||
<span class=label>
|
||||
%=l "pf_LABEL_DESTINATION_HOST"
|
||||
</span>
|
||||
<span class=data>
|
||||
%=text_field "dhost"
|
||||
</span><br><br>
|
||||
<span class=label>
|
||||
%=l "pf_ALLOW_HOSTS"
|
||||
</span>
|
||||
<span class=data>
|
||||
%=text_field "allow"
|
||||
</span><br><br>
|
||||
<span class=label>
|
||||
%=l "pf_RULE_COMMENT"
|
||||
</span>
|
||||
<span class=data>
|
||||
%=text_field "cmmnt"
|
||||
</span><br><br>
|
||||
<p>
|
||||
<br>
|
||||
%= submit_button "$btn", class => "action"
|
||||
</p>
|
||||
|
||||
%end
|
||||
|
||||
</div>
|
66
output/Portforwarding/default/_pf_del.html.new.ep
Normal file
66
output/Portforwarding/default/_pf_del.html.new.ep
Normal file
@@ -0,0 +1,66 @@
|
||||
<div id="ln_del">
|
||||
|
||||
% my $btn = l("REMOVE");
|
||||
% my $proto = $pf_datas->{proto};
|
||||
% my $sport = $pf_datas->{sport};
|
||||
% my $dport = $pf_datas->{dport};
|
||||
% my $dhost = $pf_datas->{dhost};
|
||||
% my $cmmnt = $pf_datas->{cmmnt};
|
||||
% my $allow = $pf_datas->{allow};
|
||||
|
||||
% if (config->{debug} == 1) {
|
||||
<pre>
|
||||
%= dumper $c->current_route
|
||||
%= dumper $c->stash("ret")
|
||||
%= dumper %$pf_datas
|
||||
</pre>
|
||||
% }
|
||||
|
||||
%= form_for "/portforwardinge" => (method => "POST") => begin
|
||||
<br>
|
||||
%= l "pf_SUMMARY_REMOVE_DESC"
|
||||
</p><br>
|
||||
<span class=label>
|
||||
%=l "Protocol"
|
||||
</span><span class=data>
|
||||
%=$proto
|
||||
</span><br><br>
|
||||
<span class=label>
|
||||
%=l "pf_LABEL_SOURCE_PORT"
|
||||
</span><span class=data>
|
||||
%=$sport
|
||||
</span><br><br>
|
||||
<span class=label>
|
||||
%=l "pf_LABEL_DESTINATION_HOST"
|
||||
</span>
|
||||
<span class=data>
|
||||
%=$dport
|
||||
</span><br><br>
|
||||
<span class=label>
|
||||
%=l "pf_LABEL_DESTINATION_PORT"
|
||||
</span>
|
||||
<span class=data>
|
||||
%=$dhost
|
||||
</span><br><br>
|
||||
<span class=label>
|
||||
%=l "pf_RULE_COMMENT"
|
||||
</span>
|
||||
<span class=data>
|
||||
%=$cmmnt
|
||||
</span><br><br>
|
||||
<span class=label>
|
||||
%=l "pf_ALLOW_HOSTS"
|
||||
</span>
|
||||
<span class=data>
|
||||
%=$allow
|
||||
</span><br><br>
|
||||
%#}
|
||||
%= hidden_field sport=>$sport
|
||||
%= hidden_field proto=>$proto
|
||||
<br>
|
||||
%= submit_button "$btn", class => "action"
|
||||
</p>
|
||||
|
||||
%end
|
||||
|
||||
</div>
|
116
output/Portforwarding/default/_pf_list.html.new.ep
Normal file
116
output/Portforwarding/default/_pf_list.html.new.ep
Normal file
@@ -0,0 +1,116 @@
|
||||
<div id="pf_list">
|
||||
% my $btn = l("pf_CREATE_RULE");
|
||||
%= form_for "/portforwardinga" => (method => "POST") => begin
|
||||
|
||||
% my $numtcpforwards = @$tcpforwards;
|
||||
% my $numudpforwards = @$udpforwards;
|
||||
|
||||
% 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 ($c->app->config->{debug}) {
|
||||
<pre>
|
||||
%= dumper { ret_data => \%ret }
|
||||
</pre>
|
||||
% }
|
||||
|
||||
% if ($ret{ret} eq "") {
|
||||
%=l "pf_FIRST_PAGE_DESCRIPTION"
|
||||
% } elsif (index($ret{ret},"SUCCESS") != -1) {
|
||||
<br>
|
||||
<div class="success">
|
||||
%= $c->render_to_string(inline => l($ret{ret}, @vars[0..6]))
|
||||
</div>
|
||||
% } else {
|
||||
<br>
|
||||
<div class="sme-error">
|
||||
%= $c->render_to_string(inline => l($ret{ret}, @vars[0..6]))
|
||||
</div>
|
||||
% }
|
||||
<br />
|
||||
|
||||
|
||||
<p>
|
||||
<br>
|
||||
%= submit_button "$btn", class => "action"
|
||||
</p>
|
||||
|
||||
|
||||
% end
|
||||
|
||||
% if ($empty){
|
||||
<br>
|
||||
%=l "pf_NO_FORWARDS"
|
||||
% } else {
|
||||
<br>
|
||||
%=l "pf_SHOW_FORWARDS"
|
||||
<br><br />
|
||||
<table class="sme-border TableSort"><thead>
|
||||
<tr>
|
||||
<th class="sme-border">
|
||||
%=l "Protocol"
|
||||
</th>
|
||||
<th class="sme-border">
|
||||
%=l "pf_LABEL_SOURCE_PORT"
|
||||
</th>
|
||||
<th class="sme-border">
|
||||
%=l "pf_LABEL_DESTINATION_HOST"
|
||||
</th>
|
||||
<th class="sme-border">
|
||||
%=l "pf_LABEL_DESTINATION_PORT"
|
||||
</th>
|
||||
<th class="sme-border">
|
||||
%=l "pf_ALLOW_HOSTS"
|
||||
</th>
|
||||
<th class="sme-border">
|
||||
%=l "pf_RULE_COMMENT"
|
||||
</th>
|
||||
<th class="sme-border">
|
||||
%=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} }) {
|
||||
<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 => "sme-border") => $proto
|
||||
%= t td => (class => "sme-border") => $sport
|
||||
%= t td => (class => "sme-border") => $dhost
|
||||
%= t td => (class => "sme-border") => $dport
|
||||
%= t td => (class => "sme-border") => $allow
|
||||
%= t td => (class => "sme-border") => $cmmnt
|
||||
<td class="sme-border">
|
||||
%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="sme-remove-button" title="$remove_text" >
|
||||
% $remove_text
|
||||
% </button>
|
||||
% </a>
|
||||
%};
|
||||
<%= $c->render_to_string(inline => $actionRemove) %>
|
||||
</td>
|
||||
</tr>
|
||||
% }
|
||||
% }
|
||||
%}
|
||||
%}
|
||||
</tbody>
|
||||
</table>
|
||||
%= hidden_field "trt" => $pf_datas->{trt}
|
||||
|
||||
</div>
|
14
output/Portforwarding/portforwarding_en.lex.diff
Normal file
14
output/Portforwarding/portforwarding_en.lex.diff
Normal file
@@ -0,0 +1,14 @@
|
||||
'pf_CREATE_PAGE_DESCRIPTION' => 'Select the protocol, the port you wish to forward, the
|
||||
destination host, and the port on the destination host
|
||||
that you wish to forward to. If you wish to specify a port
|
||||
range, enter the lower and upper boundaries separated by a
|
||||
hyphen. The destination port may be left blank, which will
|
||||
instruct the firewall to leave the source port
|
||||
unaltered',
|
||||
'pf_ERR_CANNOT_REMOVE_NORULE' => 'Cannot remove non-existant rule.',
|
||||
'pf_ERR_DUPRULE' => 'This rule has already been added, it cannot be added twice.',
|
||||
'pf_ERR_NO_MASQ_RECORD' => 'Cannot retrieve masq record from the configuration database.',
|
||||
'pf_ERR_UNSUPPORTED_MODE' => 'Unsupported mode.',
|
||||
'pf_LABEL_ALLOW_HOSTS' => 'Allow Hosts',
|
||||
'pf_LABEL_RULE_COMMENT' => 'Rule Comment',
|
||||
'Port forwarding' => 'Port forwarding',
|
55
output/Portforwarding/portforwarding_en.lex.new1
Normal file
55
output/Portforwarding/portforwarding_en.lex.new1
Normal file
@@ -0,0 +1,55 @@
|
||||
#
|
||||
# Lex file for Portforwarding generated on 2025-07-17 09:52:32
|
||||
#
|
||||
'pf_ALLOW_HOSTS' => 'Allow Hosts',
|
||||
'pf_CREATE_PAGE_DESCRIPTION' => 'Select the protocol, the port you wish to forward, the
|
||||
destination host, and the port on the destination host
|
||||
that you wish to forward to. If you wish to specify a port
|
||||
range, enter the lower and upper boundaries separated by a
|
||||
hyphen. The destination port may be left blank, which will
|
||||
instruct the firewall to leave the source port
|
||||
unaltered',
|
||||
'pf_CREATE_RULE' => 'Create portforwarding rule',
|
||||
'pf_ERR_BADAHOST' => 'This does not appear to be a valid IP address list.
|
||||
ie: 192.168.0.1,192.168.1.1/24',
|
||||
'pf_ERR_BADIP' => 'This does not appear to be an IP address. You must use
|
||||
dotted-quad notation, and each of the four numbers should be less
|
||||
than 256. ie: 192.168.0.5',
|
||||
'pf_ERR_BADPORT' => 'The ports must be a positive integer less than 65536.',
|
||||
'pf_ERR_CANNOT_REMOVE_NORULE' => 'Cannot remove non-existant rule.',
|
||||
'pf_ERR_DUPRULE' => 'This rule has already been added, it cannot be added twice.',
|
||||
'pf_ERR_NO_MASQ_RECORD' => 'Cannot retrieve masq record from the configuration database.',
|
||||
'pf_ERR_NONZERO_RETURN_EVENT' => 'Event returned a non-zero return value.',
|
||||
'pf_ERR_PORT_COLLISION' => 'ERROR: This port or port range conflicts with an existing
|
||||
rule. Please modify this new rule, or remove the old rule.',
|
||||
'pf_ERR_UNSUPPORTED_MODE' => 'Unsupported mode.',
|
||||
'pf_FIRST_PAGE_DESCRIPTION' => 'You can use this panel to modify your firewall rules so
|
||||
as to open a specific port on this server and forward it
|
||||
to another port on another host. Doing so will permit
|
||||
incoming traffic to directly access a private host on
|
||||
your LAN.
|
||||
WARNING: Misuse of this feature can seriously compromise the
|
||||
security of your network. Do not use this feature
|
||||
lightly, or without fully understanding the implications
|
||||
of your actions.',
|
||||
'pf_FORM_TITLE' => 'Configure Port Forwarding',
|
||||
'pf_IN_SERVERONLY' => 'This server is currently in serveronly mode and portforwarding
|
||||
is possible only to localhost.',
|
||||
'pf_LABEL_ALLOW_HOSTS' => 'Allow Hosts',
|
||||
'pf_LABEL_DESTINATION_HOST' => 'Destination Host IP Address',
|
||||
'pf_LABEL_DESTINATION_PORT' => 'Destination Port(s)',
|
||||
'pf_LABEL_RULE_COMMENT' => 'Rule Comment',
|
||||
'pf_LABEL_SOURCE_PORT' => 'Source Port(s)',
|
||||
'pf_NO_FORWARDS' => 'There are currently no forwarded ports on the system.',
|
||||
'pf_RULE_COMMENT' => 'Rule Comment',
|
||||
'pf_SHOW_FORWARDS' => 'Below you will find a table summarizing the current
|
||||
port-forwarding rules installed on this server. Click on the
|
||||
"Remove" link to remove the corresponding rule.',
|
||||
'pf_SUCCESS' => 'Your change to the port forwarding rules has been successfully saved.',
|
||||
'pf_SUMMARY_ADD_DESC' => 'The following summarizes the port-forwarding rule
|
||||
that you are about to add. If you are satisfied with the rule,
|
||||
click the "Add" button.',
|
||||
'pf_SUMMARY_REMOVE_DESC' => 'The following summarizes the port-forwarding rule
|
||||
that you are about to remove. If you are sure you want to
|
||||
remove the rule, click the "Remove" button.',
|
||||
'Port forwarding' => 'Port forwarding',
|
5
output/Printers/printers_en.lex.diff
Normal file
5
output/Printers/printers_en.lex.diff
Normal file
@@ -0,0 +1,5 @@
|
||||
'Printers' => 'Printers',
|
||||
'prt_ERR_CREATING' => 'Error occurred while creating printer.',
|
||||
'prt_ERR_DELETING' => 'Error occurred while deleting printer.',
|
||||
'prt_ERR_OPENING_DB' => 'Error occurred while opening accounts database.',
|
||||
'prt_INITIAL_DESC' => '<P><A class="button-like" HREF="printers?page=0&Next=Add">Add printer</A></P>',
|
54
output/Printers/printers_en.lex.new1
Normal file
54
output/Printers/printers_en.lex.new1
Normal file
@@ -0,0 +1,54 @@
|
||||
#
|
||||
# Lex file for Printers generated on 2025-07-17 09:52:33
|
||||
#
|
||||
'Printers' => 'Printers',
|
||||
'prt_ABOUT_TO_REMOVE' => 'You are about to remove the printer: ',
|
||||
'prt_ARE_YOU_SURE' => 'Are you sure you wish to remove this printer?',
|
||||
'prt_CREATE_NETWORK_DESC' => 'Please enter the address and name of the network printer',
|
||||
'prt_CREATE_NETWORK_PRINTER' => 'Create a new network printer',
|
||||
'prt_CREATE_NEW_DESC' => 'Please choose a unique name for the printer and enter a brief
|
||||
description. The printer name should contain only lower-case
|
||||
letters and numbers, and should start with a lower-case
|
||||
letter. For example "hplaser", "epsonlp", and
|
||||
"canonbj" are valid choices, but "HP Laser Jet",
|
||||
"Canon BubbleJet", and
|
||||
"HP JetDirect Printer" are not.
|
||||
Avoid names and descriptions that contain these terms,
|
||||
"offline", "disabled", "down", "off", "waiting", "jam",
|
||||
"paper", "error" and "responding". ',
|
||||
'prt_CREATE_NEW_PRINTER' => 'Create a new printer',
|
||||
'prt_CREATED_SUCCESSFULLY' => 'Successfully created printer: ',
|
||||
'prt_CURRENT_LIST' => 'Current List of printers',
|
||||
'prt_DELETED_SUCCESSFULLY' => 'Successfully deleted printer: ',
|
||||
'prt_ERR_CREATING' => 'Error occurred while creating printer.',
|
||||
'prt_ERR_DELETING' => 'Error occurred while deleting printer.',
|
||||
'prt_ERR_EXISTS' => 'Error: An account with the same name exists with type: ',
|
||||
'prt_ERR_INTERNAL_FAILURE' => 'Error: internal failure while removing printer: ',
|
||||
'prt_ERR_INVALID_ADDRESS' => 'Error: invalid network address. Did not create new printer.',
|
||||
'prt_ERR_INVALID_REMOTE_NAME' => 'Error: invalid network printer name. Did not create new printer.',
|
||||
'prt_ERR_OPENING_DB' => 'Error occurred while opening accounts database.',
|
||||
'prt_ERR_UNEXPECTED_DESC' => 'Error: unexpected or missing characters in description.
|
||||
Did not create new printer.',
|
||||
'prt_ERR_UNEXPECTED_NAME' => '<P>Error: unexpected characters in printer name.</P>
|
||||
<P>The printer name should contain only lower-case
|
||||
letters and numbers, and should start with a lower-case
|
||||
letter. For example "hplaser", "epsonlp", and
|
||||
"canonbj" are valid names.</P>',
|
||||
'prt_FIRST_USB_PRINTER' => 'First USB attached printer',
|
||||
'prt_FORM_TITLE' => 'Add or remove printers',
|
||||
'prt_HOSTNAME_OR_IP' => 'Hostname or IP address of the network printer',
|
||||
'prt_INITIAL_BTN' => 'Add printer',
|
||||
'prt_INITIAL_DESC' => '<P><A class="button-like" HREF="printers?page=0&Next=Add">Add printer</A></P>',
|
||||
'prt_LOCAL_PRINTER_0' => 'Local printer port 0 (LPT1)',
|
||||
'prt_LOCAL_PRINTER_1' => 'Local printer port 1 (LPT2)',
|
||||
'prt_LOCAL_PRINTER_2' => 'Local printer port 2 (LPT3)',
|
||||
'prt_MUST_BE_VALID_HOSTNAME_OR_IP' => 'Must be a valid hostname or IP number',
|
||||
'prt_NET_PRINTER' => 'Network printer ...',
|
||||
'prt_NO_PRINTERS' => 'There are no printers in the system.',
|
||||
'prt_PRINTER_NAME' => 'Printer name',
|
||||
'prt_REMOTE_ADDRESS' => 'Remote address',
|
||||
'prt_REMOTE_NAME' => 'Remote name',
|
||||
'prt_REMOTE_NAME_DESC' => 'Network printer name (enter raw if not sure)',
|
||||
'prt_REMOVE_PRINTER' => 'Remove printer',
|
||||
'prt_SECOND_USB_PRINTER' => 'Second USB attached printer',
|
||||
'prt_SPOOL_FILE_WARNING' => 'All the spool files for this printer will be deleted.',
|
78
output/Proxy/AdminLTE/proxy.html.new.ep
Normal file
78
output/Proxy/AdminLTE/proxy.html.new.ep
Normal file
@@ -0,0 +1,78 @@
|
||||
% layout "AdminLTE", title => "Sme server 2 - proxy";
|
||||
|
||||
% content_for "module" => begin
|
||||
|
||||
<div class="card-body">
|
||||
|
||||
% if (config->{debug} == 1) {
|
||||
<pre>
|
||||
<%= dumper $c->current_route %>
|
||||
<%= dumper $prx_datas->{http_proxy_status} %>
|
||||
<%= dumper $prx_datas->{smtp_proxy_status} %>
|
||||
</pre>
|
||||
% }
|
||||
|
||||
|
||||
<h1><%= $title %></h1>
|
||||
|
||||
<br>
|
||||
|
||||
<%= $modul %>
|
||||
|
||||
<form action="/smanager/hostentriesd" method="POST">
|
||||
|
||||
<br>
|
||||
|
||||
<div>
|
||||
<%=l "prx_HTTP_PROXY_STATUS_DESCRIPTION" %>
|
||||
</div>
|
||||
|
||||
<br>
|
||||
|
||||
<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"]], class => "form-select" %>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
% if ( $prx_datas->{smtp_proxy_status} ) {
|
||||
|
||||
<br>
|
||||
|
||||
<div>
|
||||
<%=l "prx_SMTP_PROXY_STATUS_DESCRIPTION" %>
|
||||
</div>
|
||||
|
||||
<br>
|
||||
|
||||
<div class="row g-3 align-items-center">
|
||||
<div class="col-md-2">
|
||||
<%=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 "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-sm"><%= $btn %></button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</form>
|
||||
|
||||
</div>
|
||||
|
||||
%end
|
43
output/Proxy/default/proxy.html.new.ep
Normal file
43
output/Proxy/default/proxy.html.new.ep
Normal file
@@ -0,0 +1,43 @@
|
||||
% layout "default", title => "Sme server 2 - proxy";
|
||||
|
||||
% content_for "module" => begin
|
||||
<div id="module" class="module proxy-panel">
|
||||
%if (config->{debug} == 1) {
|
||||
<p>(DBG)route: <%= $c->current_route %><br>
|
||||
(DBG)ht stat: <%= $prx_datas->{http_proxy_status}%> <br>
|
||||
(DBG)sm stat: <%=$prx_datas->{smtp_proxy_status} %>
|
||||
</p>
|
||||
%}
|
||||
<h1><%= $title %></h1>
|
||||
<br>
|
||||
<%= $modul %>
|
||||
<% my $btn = l("SAVE"); %>
|
||||
|
||||
%= form_for "proxy" => (method => "POST") => begin
|
||||
<p>
|
||||
%=l "prx_HTTP_PROXY_STATUS_DESCRIPTION"
|
||||
<br><br>
|
||||
<span class=label>
|
||||
%=l "prx_HTTP_PROXY_STATUS_LABEL"
|
||||
</span><span class=data>
|
||||
% 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"]], class => "input", id => "htproxstat"
|
||||
</span>
|
||||
</p>
|
||||
%if ( $prx_datas->{smtp_proxy_status} ) {
|
||||
<p>
|
||||
%=l "prx_SMTP_PROXY_STATUS_DESCRIPTION"
|
||||
<br><br>
|
||||
<span class=label>
|
||||
%=l "prx_SMTP_PROXY_STATUS_LABEL"
|
||||
</span><span class=data>
|
||||
% 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 "Blocked") => "blocked"]], class => "input", id => "smproxstat", default => $prx_datas->{smtp_proxy_status}
|
||||
<br><br>
|
||||
</span>
|
||||
</p>
|
||||
%}
|
||||
%= submit_button "$btn", class => "action"
|
||||
% end
|
||||
</div>
|
||||
%end
|
1
output/Proxy/proxy_en.lex.diff
Normal file
1
output/Proxy/proxy_en.lex.diff
Normal file
@@ -0,0 +1 @@
|
||||
'Proxy settings' => 'Proxy settings',
|
30
output/Proxy/proxy_en.lex.new1
Normal file
30
output/Proxy/proxy_en.lex.new1
Normal file
@@ -0,0 +1,30 @@
|
||||
#
|
||||
# Lex file for Proxy generated on 2025-07-17 09:52:33
|
||||
#
|
||||
'Proxy settings' => 'Proxy settings',
|
||||
'prx_ERR_NO_SQUID_REC' => 'ERROR: There is no squid record in the configuration database.',
|
||||
'prx_ERR_PROXY_UPDATE_FAILED' => 'ERROR: The proxy-update event returned an error.',
|
||||
'prx_FIRST_PAGE_DESCRIPTION' => 'This page allows configuration of the server"s
|
||||
proxy settings.
|
||||
The server includes a transparent proxy and cache for
|
||||
HTTP traffic. This is enabled by default, but not enforced
|
||||
if the server is in "serveronly" mode.
|
||||
If this server is acting as an e-mail server, connections
|
||||
from local network clients to external SMTP servers
|
||||
will default to being redirected to the local e-mail server.',
|
||||
'prx_HTTP_PROXY_STATUS_DESCRIPTION' => 'The server"s HTTP proxy works to reduce overall uplink usage by
|
||||
caching recently-visited pages. It is transparent to web browsers
|
||||
using this server as their gateway. Enable or disable this proxy
|
||||
with the following toggle.',
|
||||
'prx_HTTP_PROXY_STATUS_LABEL' => 'HTTP proxy status',
|
||||
'prx_SMTP_PROXY_STATUS_DESCRIPTION' => 'The server"s transparent SMTP proxy works to reduce virus traffic
|
||||
from infected client hosts by forcing all outgoing SMTP traffic
|
||||
through this server if set to "enabled".
|
||||
If you wish to use an alternate SMTP server, and this server is
|
||||
your gateway to it, set this proxy to "disabled". Setting the
|
||||
proxy to "blocked" prevents all SMTP traffic to other servers,
|
||||
this is the default. The proxy only intercepts/blocks normal smtp
|
||||
(port 25) traffic.',
|
||||
'prx_SMTP_PROXY_STATUS_LABEL' => 'SMTP proxy status',
|
||||
'prx_SUCCESS' => 'The new proxy settings were applied successfully.',
|
||||
'prx_TITLE' => 'Proxy settings',
|
85
output/Pseudonyms/AdminLTE/_pse_list.html.new.ep
Normal file
85
output/Pseudonyms/AdminLTE/_pse_list.html.new.ep
Normal file
@@ -0,0 +1,85 @@
|
||||
<div>
|
||||
|
||||
% my $btn = l("pse_CLICK_TO_CREATE");
|
||||
|
||||
<form action="/smanager/pseudonyms" method="POST">
|
||||
<%= $c->render_to_string(inline => l("pse_DESCRIPTION")); %>
|
||||
<div class="row g-3 align-items-center">
|
||||
<div class="col-md-2">
|
||||
<button type="submit" class="btn btn-primary btn-sm"><%= $btn %></button>
|
||||
</div>
|
||||
</div>
|
||||
<%= hidden_field "trt" => "ADD" %>
|
||||
</form>
|
||||
|
||||
<br>
|
||||
<h2><%= l "pse_CURRENT_PSEUDONYMS" %></h2>
|
||||
<br>
|
||||
% my $numPseudonyms = @$pseudonyms;
|
||||
% if ($numPseudonyms == 0) {
|
||||
<%= l "pse_ACCOUNT_PSEUDONYM_NONE" %>
|
||||
% } else {
|
||||
<table class="table table-bordered user-table-max-width">
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="col-sm"><%= l "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>
|
||||
<tbody>
|
||||
|
||||
% foreach my $pseudonym ( @$pseudonyms ) {
|
||||
% my $modifiable = $pseudonym->prop("Changeable") || "yes";
|
||||
% my $removable = $pseudonym->prop("Removable") || "yes";
|
||||
|
||||
% my $account = $pseudonym->prop("Account");
|
||||
% $account = "Administrator" if ($account eq "admin");
|
||||
% $account = $c->l("Everyone") if ($account eq "shared");
|
||||
|
||||
% my $visible = $pseudonym->prop("Visible");
|
||||
% $account .= $c->l("pse_LOCAL_ONLY")
|
||||
% if (defined $visible && $visible eq "internal");
|
||||
|
||||
<tr>
|
||||
<td><%= $pseudonym->key%></td>
|
||||
<td><%= $account%></td>
|
||||
|
||||
% my ($actionModify, $actionRemove) = " ";
|
||||
% if ($modifiable eq "yes") {
|
||||
%my $modify_text = l("MODIFY"); # Localized text
|
||||
%my $csrf_token = "TOKEN"; # CSRF token for security
|
||||
%my $pseudonyms_entry_name = $pseudonym->key; # pseudonyms_entry name extracted from the data structure
|
||||
%$actionModify = qq{
|
||||
% <a href="pseudonyms2?CsrfDef=$csrf_token&trt=UPD&pseudonym=$pseudonyms_entry_name">
|
||||
% <button type="button" class="btn btn-primary btn-sm" title="$modify_text" >
|
||||
% $modify_text
|
||||
% </button>
|
||||
% </a>
|
||||
% };
|
||||
% }
|
||||
|
||||
% if ($removable eq "yes") {
|
||||
%my $remove_text = l("REMOVE"); # Localized text
|
||||
%my $csrf_token = "TOKEN"; # CSRF token for security
|
||||
%my $pseudonyms_entry_name = $pseudonym->key; # pseudonyms_entry name extracted from the data structure
|
||||
%$actionRemove = qq{
|
||||
% <a href="pseudonyms2?CsrfDef=$csrf_token&trt=DEL&pseudonym=$pseudonyms_entry_name">
|
||||
% <button type="button" class="btn btn-primary btn-sm" title="$remove_text" >
|
||||
% $remove_text
|
||||
% </button>
|
||||
% </a>
|
||||
% };
|
||||
% }
|
||||
|
||||
<td class="align-middle"><%= $c->render_to_string(inline => $actionModify) %></td>
|
||||
<td class="align-middle"><%= $c->render_to_string(inline => $actionRemove) %></td>
|
||||
|
||||
</tr>
|
||||
% }
|
||||
</tbody>
|
||||
</table>
|
||||
% }
|
||||
|
||||
</div>
|
96
output/Pseudonyms/default/_pse_list.html.new.ep
Normal file
96
output/Pseudonyms/default/_pse_list.html.new.ep
Normal file
@@ -0,0 +1,96 @@
|
||||
<div id="pse_list">
|
||||
|
||||
% my $btn = l("pse_CLICK_TO_CREATE");
|
||||
|
||||
%= $c->render_to_string(inline => l("pse_DESCRIPTION"));
|
||||
|
||||
%= form_for "/pseudonyms" => (method => "POST") => begin
|
||||
|
||||
%= hidden_field "trt" => "ADD"
|
||||
|
||||
<p><br>
|
||||
%= submit_button "$btn", class => "action"
|
||||
</p>
|
||||
|
||||
% end
|
||||
|
||||
|
||||
<p><h2>
|
||||
%=l "pse_CURRENT_PSEUDONYMS"
|
||||
</h2><br>
|
||||
% my $numPseudonyms = @$pseudonyms;
|
||||
% if ($numPseudonyms == 0){
|
||||
%=l "pse_ACCOUNT_PSEUDONYM_NONE"
|
||||
% } else {
|
||||
<table class="sme-border TableSort"><thead>
|
||||
<tr>
|
||||
<th class="sme-border">
|
||||
%=l "Pseudonym"
|
||||
</th>
|
||||
<th class="sme-border">
|
||||
%=l "pse_USER_OR_GROUP"
|
||||
</th>
|
||||
<th class="sme-border">
|
||||
%=l "ACTION"
|
||||
</th>
|
||||
<!-- <th class="sme-border" style="display: normal;"></th> -->
|
||||
</tr></thead>
|
||||
<tbody>
|
||||
|
||||
% foreach my $pseudonym ( @$pseudonyms )
|
||||
% {
|
||||
% my $modifiable = $pseudonym->prop("Changeable") || "yes";
|
||||
% my $removable = $pseudonym->prop("Removable") || "yes";
|
||||
|
||||
% my $account = $pseudonym->prop("Account");
|
||||
% $account = "Administrator" if ($account eq "admin");
|
||||
% $account = $c->l("Everyone") if ($account eq "shared");
|
||||
|
||||
% my $visible = $pseudonym->prop("Visible");
|
||||
% $account .= $c->l("pse_LOCAL_ONLY")
|
||||
% if (defined $visible && $visible eq "internal");
|
||||
|
||||
<tr>
|
||||
%= t td => (class => "sme-border") => $pseudonym->key
|
||||
%= t td => (class => "sme-border") => $account
|
||||
|
||||
<td class="sme-border">
|
||||
%my ($actionModify, $actionRemove) = " ";
|
||||
%if ($modifiable eq "yes") {
|
||||
%my $modify_text = l("MODIFY"); # Localized text
|
||||
%my $csrf_token = "TOKEN"; # CSRF token for security
|
||||
%my $pseudonyms_entry_name = $pseudonym->key; # pseudonyms_entry name extracted from the data structure
|
||||
%$actionModify = qq{
|
||||
% <a href="pseudonyms2?CsrfDef=$csrf_token&trt=UPD&pseudonym=$pseudonyms_entry_name">
|
||||
% <button type="button" class="sme-modify-button" title="$modify_text" >
|
||||
% $modify_text
|
||||
% </button>
|
||||
% </a>
|
||||
%};
|
||||
%}
|
||||
|
||||
%if ($removable eq "yes") {
|
||||
%my $remove_text = l("REMOVE"); # Localized text
|
||||
%my $csrf_token = "TOKEN"; # CSRF token for security
|
||||
%my $pseudonyms_entry_name = $pseudonym->key; # pseudonyms_entry name extracted from the data structure
|
||||
%$actionRemove = qq{
|
||||
% <a href="pseudonyms2?CsrfDef=$csrf_token&trt=DEL&pseudonym=$pseudonyms_entry_name">
|
||||
% <button type="button" class="sme-remove-button" title="$remove_text" >
|
||||
% $remove_text
|
||||
% </button>
|
||||
% </a>
|
||||
%};
|
||||
%}
|
||||
<%= $c->render_to_string(inline => $actionModify) %> <%= $c->render_to_string(inline => $actionRemove) %>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
% }
|
||||
</tbody>
|
||||
</table>
|
||||
<%} %>
|
||||
</p>
|
||||
|
||||
|
||||
|
||||
</div>
|
3
output/Pseudonyms/pseudonyms_en.lex.diff
Normal file
3
output/Pseudonyms/pseudonyms_en.lex.diff
Normal file
@@ -0,0 +1,3 @@
|
||||
'pse_NO_PSEUDONYMS' => ' <b>There are no pseudonyms in the system.</b> ',
|
||||
'pse_PSEUDONYM_INVALID_NOACCT' => 'That account is not hosted on this server',
|
||||
'Pseudonyms' => 'Pseudonyms',
|
67
output/Pseudonyms/pseudonyms_en.lex.new1
Normal file
67
output/Pseudonyms/pseudonyms_en.lex.new1
Normal file
@@ -0,0 +1,67 @@
|
||||
#
|
||||
# Lex file for Pseudonyms generated on 2025-07-17 09:52:33
|
||||
#
|
||||
'pse_ABOUT_TO_REMOVE' => 'You are about to remove the pseudonym: [_1]<br>
|
||||
<b>Are you sure you wish to continue?</b>',
|
||||
'pse_CLICK_TO_CREATE' => 'Add pseudonym',
|
||||
'pse_CREATE_SUCCEEDED' => 'Successfully created pseudonym',
|
||||
'pse_CURRENT_PSEUDONYMS' => 'Current List of Pseudonyms',
|
||||
'pse_DESC_PSEUDONYM_NAME' => ' Please select an existing account or group for the pseudonym from the pulldown menu below',
|
||||
'pse_DESCRIPTION' => '<p>The server automatically creates
|
||||
an e-mail alias for each group. If you want to define an e-mail
|
||||
alias for a list of users, simply create a group and the
|
||||
list will automatically be maintained by the server.</p>
|
||||
<p>Pseudonyms allow you to
|
||||
create other names for existing users or groups.
|
||||
For example, you may wish to create a pseudonym
|
||||
"webmaster" for your "webdevelopers" group or a
|
||||
pseudonym "joe" for the user "joseph".</p>
|
||||
<p>The server automatically creates pseudonyms of the form
|
||||
firstname. lastname and firstname_lastname for every user
|
||||
on the system and a pseudonym "everyone" which contains
|
||||
all users on the system.</p>
|
||||
<p>Pseudonyms also allow you to create e-mail aliases for valid
|
||||
(virtual) domains & users. For example you can forward
|
||||
"sales@virtualdomain1.com" to user "mary" and
|
||||
"sales@virtualdomain2.com" to user "john".
|
||||
You must create the domains and user accounts before creating
|
||||
the email aliases.</p>
|
||||
<p>Pseudonyms can also forward to other pseudonyms, although this
|
||||
is limited to one further level. For example the pseudonym
|
||||
"webmaster" can forward to the pseudonym "techsupport" which
|
||||
then forwards to a specified user "ray". This is useful where
|
||||
one user is responsiblefor multiple roles and saves having
|
||||
to change the pseudonym"s associated with that user many times
|
||||
in the event that the user departs the organisation.</p>
|
||||
<p>You can modify or remove a
|
||||
pseudonym by clicking on the corresponding
|
||||
command next to the pseudonym.</p>',
|
||||
'pse_FORM_TITLE' => 'Create, modify, or remove pseudonyms',
|
||||
'pse_LOCAL_ONLY' => '(local network only)',
|
||||
'pse_MODIFY_PSEUDONYM' => 'Modify Pseudonym',
|
||||
'pse_MODIFY_SUCCEEDED' => 'Successfully modified pseudonym',
|
||||
'pse_NAME_IN_USE' => 'Error: That name is in use You cannot create a pseudonym with that name.',
|
||||
'pse_NO_PSEUDONYMS' => ' <b>There are no pseudonyms in the system.</b> ',
|
||||
'pse_NOT_A_PSEUDONYM' => 'That account is not a pseudonym',
|
||||
'pse_PSEUDONYM_INVALID_DOMAIN' => 'That domain is not hosted on this server',
|
||||
'pse_PSEUDONYM_INVALID_NOACCT' => 'That account is not hosted on this server',
|
||||
'pse_PSEUDONYM_INVALID_SAMEACCT' => 'A pseudonym cannot point to the same account',
|
||||
'pse_PSEUDONYM_NAME' => 'Pseudonym name',
|
||||
'pse_REMOVE_PSEUDONYM' => 'Remove pseudonym',
|
||||
'pse_REMOVE_SUCCEEDED' => 'Successfully removed pseudonym',
|
||||
'pse_SELECT_ACCOUNT' => 'Select account or group',
|
||||
'pse_SELECT_INTERNAL' => 'Local network only',
|
||||
'pse_TITLE_CREATE' => 'Create a pseudonym',
|
||||
'pse_USER_OR_GROUP' => 'User or group',
|
||||
'pse_VALID_PSEUDONYM_NAMES' => ' The pseudonym
|
||||
should contain only lower-case letters, numbers, period,
|
||||
hyphen and underscore
|
||||
and should start with a lower-case letter or
|
||||
number. For example "sales", "john.holland", "123"
|
||||
and "email-administrator" are all valid pseudonyms,
|
||||
but "John Smith" and "Henry Miller" are not.
|
||||
<p>You can also create email aliases for accounts and (virtual)
|
||||
domains that are valid on this server. For example
|
||||
"fred@virtualdomain.com" can be forwarded to "mary"
|
||||
(or to another valid user account).</p> ',
|
||||
'Pseudonyms' => 'Pseudonyms',
|
17
output/Qmailanalog/qmailanalog_en.lex.diff
Normal file
17
output/Qmailanalog/qmailanalog_en.lex.diff
Normal file
@@ -0,0 +1,17 @@
|
||||
'Mail log file analysis' => 'Mail log file analysis',
|
||||
'qma_BASIC_STATS' => 'Basic statistics',
|
||||
'qma_END_OF_REPORT' => 'End of Report',
|
||||
'qma_INVALID_REPORT_TYPE' => 'Invalid report type: ',
|
||||
'qma_LIST_OUTGOING' => 'List outgoing messages and recipients',
|
||||
'qma_REASONS_DEFERRAL' => 'Reasons for deferral',
|
||||
'qma_REASONS_FAILURE' => 'Reasons for failure',
|
||||
'qma_REASONS_SUCCESS' => 'Reasons for success',
|
||||
'qma_RECIP_HOSTS' => 'Recipient hosts',
|
||||
'qma_RECIP_ORDERED' => 'Recipients in best order for mailing lists',
|
||||
'qma_RECIP_STATS' => 'Recipients statistics',
|
||||
'qma_REPORT_GENERATED' => 'Report generated: ',
|
||||
'qma_SENDER_STATS' => 'Sender statistics',
|
||||
'qma_SENDER_UIDS' => 'Sender uids',
|
||||
'qma_SENDMAIL_STYLE' => 'Sendmail style log',
|
||||
'qma_SUCCESSFUL_DELIVERY_DELAY' => 'Successful delivery delay distribution',
|
||||
'qma_SUMMARIZE_QUEUE' => 'Summarize status of mail queue',
|
32
output/Qmailanalog/qmailanalog_en.lex.new1
Normal file
32
output/Qmailanalog/qmailanalog_en.lex.new1
Normal file
@@ -0,0 +1,32 @@
|
||||
#
|
||||
# Lex file for Qmailanalog generated on 2025-07-17 09:52:33
|
||||
#
|
||||
'Mail log file analysis' => 'Mail log file analysis',
|
||||
'qma_BASIC_STATS' => 'Basic statistics',
|
||||
'qma_Daily_Summary_Report_all' => 'Summary report for all time up to now',
|
||||
'qma_Daily_Summary_Report_today' => 'Summary report for today up to now',
|
||||
'qma_Daily_Summary_Report_yesterday' => 'Summary report for yesterday',
|
||||
'qma_END_OF_REPORT' => 'End of Report',
|
||||
'qma_FORM_TITLE' => 'Mail Log File Analysis',
|
||||
'qma_GENERATE_REPORT' => 'Generate report',
|
||||
'qma_INITIAL_DESC' => '<P>Analysing the mail system log files can aid both in
|
||||
understanding how your system is performing and in
|
||||
diagnosing delivery problems. Several different
|
||||
reports are available.</P>
|
||||
<P>Please note that it may take several minutes to generate
|
||||
these reports</P>',
|
||||
'qma_INVALID_REPORT_TYPE' => 'Invalid report type: ',
|
||||
'qma_LIST_OUTGOING' => 'List outgoing messages and recipients',
|
||||
'qma_REASONS_DEFERRAL' => 'Reasons for deferral',
|
||||
'qma_REASONS_FAILURE' => 'Reasons for failure',
|
||||
'qma_REASONS_SUCCESS' => 'Reasons for success',
|
||||
'qma_RECIP_HOSTS' => 'Recipient hosts',
|
||||
'qma_RECIP_ORDERED' => 'Recipients in best order for mailing lists',
|
||||
'qma_RECIP_STATS' => 'Recipients statistics',
|
||||
'qma_REPORT_GENERATED' => 'Report generated: ',
|
||||
'qma_REPORT_TYPE' => 'Choose a report type',
|
||||
'qma_SENDER_STATS' => 'Sender statistics',
|
||||
'qma_SENDER_UIDS' => 'Sender uids',
|
||||
'qma_SENDMAIL_STYLE' => 'Sendmail style log',
|
||||
'qma_SUCCESSFUL_DELIVERY_DELAY' => 'Successful delivery delay distribution',
|
||||
'qma_SUMMARIZE_QUEUE' => 'Summarize status of mail queue',
|
97
output/Quota/AdminLTE/_quo_upd.html.new.ep
Normal file
97
output/Quota/AdminLTE/_quo_upd.html.new.ep
Normal file
@@ -0,0 +1,97 @@
|
||||
<div>
|
||||
|
||||
% my $btn = l("SAVE");
|
||||
|
||||
<form action="/smanager/quota2" method="POST">
|
||||
|
||||
<h2><%= l "quo_MODIFY_USER_TITLE" %></h2>
|
||||
|
||||
% my $userid = $quo_datas->{user};
|
||||
% my $user = $quo_datas->{userRec};
|
||||
<!--
|
||||
for my $user @$userAccounts
|
||||
{
|
||||
unless ( $user->key eq $userid) {
|
||||
warn(l("USER_DIFFERENT"),$user->key);
|
||||
next;
|
||||
}
|
||||
}
|
||||
-->
|
||||
% my $uid = getpwnam($user->key);
|
||||
% unless ($uid) {
|
||||
% warn(l("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);
|
||||
|
||||
<div>
|
||||
<%= l "quo_USER" %> <%= "$name (\"$userid\")" %>
|
||||
 
|
||||
<%= l "quo_CURRENTLY_HAS" %> <%= $ic %>
|
||||
<%= l "files" %>
|
||||
 
|
||||
<%= l "quo_OCCUPYING" %> <%= $c->toMB($bc) %> <%= l "megabytes" %>
|
||||
</div>
|
||||
<br>
|
||||
|
||||
<div>
|
||||
<%= l "quo_INSTRUCTIONS" %>
|
||||
</div>
|
||||
<br>
|
||||
|
||||
<div class="row g-3 align-items-center">
|
||||
<div class="col-md-2">
|
||||
<%= l "quo_USER" %>
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
<%= $name %>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<br>
|
||||
|
||||
% param "Soft" => $quo_datas->{softlim} unless param "Soft";
|
||||
|
||||
<div class="row g-3 align-items-center">
|
||||
<div class="col-md-2">
|
||||
<label for="inputQuotaDesc" class="col-form-label"><%=l "quo_LIMIT_WITH_GRACE" %></label>
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
<!-- text_field "Soft" -->
|
||||
<input type="text" name="Soft" id="inputQuotaDesc" class="form-control" aria-describedby="QuotaDesc" value="<%= $quo_datas->{softlim} %>">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<br>
|
||||
|
||||
% param "Hard" => $quo_datas->{hardlim} unless param "Hard";
|
||||
|
||||
<div class="row g-3 align-items-center">
|
||||
<div class="col-md-2">
|
||||
<label for="inputQuotaABS" class="col-form-label"><%= l "quo_ABS_LIMIT" %></label>
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
<!-- text_field "Hard" -->
|
||||
<input type="text" name="Hard" id="inputQuotaABS" class="form-control" aria-describedby="QuotaABS" value="<%= $quo_datas->{hardlim} %>">
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<br><br>
|
||||
|
||||
<div class="row g-3 align-items-center">
|
||||
<div class="col-md-2">
|
||||
<button type="submit" class="btn btn-primary btn-sm"><%= $btn %></button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<%= hidden_field "trt" => $quo_datas->{trt} %>
|
||||
<%= hidden_field "user" => $quo_datas->{user} %>
|
||||
|
||||
</form>
|
||||
|
||||
</div>
|
84
output/Quota/default/_quo_upd.html.new.ep
Normal file
84
output/Quota/default/_quo_upd.html.new.ep
Normal file
@@ -0,0 +1,84 @@
|
||||
<div id="quo_upd">
|
||||
|
||||
% my $btn = l("SAVE");
|
||||
|
||||
%= form_for "/quota2" => (method => "POST") => begin
|
||||
<p>
|
||||
<h2>
|
||||
%=l "quo_MODIFY_USER_TITLE"
|
||||
</h2>
|
||||
</p>
|
||||
|
||||
% my $userid = $quo_datas->{user};
|
||||
% my $user = $quo_datas->{userRec};
|
||||
<!--
|
||||
for my $user @$userAccounts
|
||||
{
|
||||
unless ( $user->key eq $userid) {
|
||||
warn(l("USER_DIFFERENT"),$user->key);
|
||||
next;
|
||||
}
|
||||
}
|
||||
-->
|
||||
% my $uid = getpwnam($user->key);
|
||||
% unless ($uid) {
|
||||
% warn(l("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);
|
||||
|
||||
<p>
|
||||
%=l "quo_USER"
|
||||
%= "$name (\"$userid\")"
|
||||
%=l "quo_CURRENTLY_HAS"
|
||||
%= $ic
|
||||
%=l "files"
|
||||
%=l "quo_OCCUPYING"
|
||||
%= $c->toMB($bc)
|
||||
%=l "megabytes"
|
||||
</p>
|
||||
|
||||
<p>
|
||||
%=l "quo_INSTRUCTIONS"
|
||||
</p>
|
||||
|
||||
<p>
|
||||
<span class=label>
|
||||
%=l "quo_USER", class => "label"
|
||||
</span><span class=data>
|
||||
%= $name, class => "input"
|
||||
</span>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
<span class=label>
|
||||
%=l "quo_LIMIT_WITH_GRACE", class => "label"
|
||||
</span><span class=data>
|
||||
% param "Soft" => $quo_datas->{softlim} unless param "Soft";
|
||||
%= text_field "Soft", class => "input"
|
||||
</span>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
<span class=label>
|
||||
%=l "quo_ABS_LIMIT", class => "label"
|
||||
</span><span class=data>
|
||||
% param "Hard" => $quo_datas->{hardlim} unless param "Hard";
|
||||
%= text_field "Hard", class => "input"
|
||||
</span>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
<br><br>
|
||||
%= submit_button "$btn", class => "action"
|
||||
</p>
|
||||
|
||||
%= hidden_field "trt" => $quo_datas->{trt}
|
||||
%= hidden_field "user" => $quo_datas->{user}
|
||||
|
||||
% end
|
||||
|
||||
</div>
|
2
output/Quota/quota_en.lex.diff
Normal file
2
output/Quota/quota_en.lex.diff
Normal file
@@ -0,0 +1,2 @@
|
||||
'quo_UNABLE_TO_OPEN_ACCOUNTS' => 'Unable to open accounts db',
|
||||
'Quotas' => 'Quotas',
|
39
output/Quota/quota_en.lex.new1
Normal file
39
output/Quota/quota_en.lex.new1
Normal file
@@ -0,0 +1,39 @@
|
||||
#
|
||||
# Lex file for Quota generated on 2025-07-17 09:52:33
|
||||
#
|
||||
'quo_ABS_LIMIT' => 'Absolute limit',
|
||||
'quo_ABS_LIMIT_MB' => 'Absolute limit (MB)',
|
||||
'quo_ACCOUNT_IS_TYPE' => 'It is an account of type: ',
|
||||
'quo_COULD_NOT_GET_UID' => 'Could not determine the uid for user: ',
|
||||
'quo_CURRENT_USAGE' => 'Current usage (MB)',
|
||||
'quo_CURRENT_USAGE_AND_SETTINGS' => 'Current Quota Usage and Settings',
|
||||
'quo_CURRENTLY_HAS' => 'currently has: ',
|
||||
'quo_ERR_HARD_LT_SOFT' => ' Error: absolute limit must be greater than limit with grace time. ',
|
||||
'quo_ERR_MODIFYING' => 'Error occurred while modifying user.',
|
||||
'quo_ERR_NO_SUCH_ACCT' => 'Error: there is no account named: ',
|
||||
'quo_ERR_NOT_A_USER_ACCT' => 'Error: the account is not a user account: ',
|
||||
'quo_FORM_TITLE' => 'Create, modify, or remove user account quotas',
|
||||
'quo_HARD_VAL_MUST_BE_NUMBER' => 'Error: absolute limit must be a number, optionally followed by one of the unit suffixes K, M, G, or T.',
|
||||
'quo_INSTRUCTIONS' => 'Enter the quota with optional unit suffix of "K" for kilobytes, "M" for megabytes,
|
||||
"G" for gigabytes or "T" for terabytes.
|
||||
Entries with no suffix are assumed to be in megabytes. A setting of "0"
|
||||
for either limit disables that limit for the corresponding user.',
|
||||
'quo_LIMIT_WITH_GRACE' => 'Limit with grace period',
|
||||
'quo_LIMIT_WITH_GRACE_MB' => 'Limit with grace period (MB)',
|
||||
'quo_MODIFY_USER_TITLE' => 'Modify user quota limits',
|
||||
'quo_OCCUPYING' => 'occupying: ',
|
||||
'quo_QUOTA_DESC' => '<p>You can set filesystem quotas for users on your system by clicking
|
||||
the "Modify" button next to the user you wish to update.
|
||||
<p>If the user exceeds the "Limit with grace period", warnings will be
|
||||
generated. If this limit is exceeded for longer than a week or if the
|
||||
"Absolute limit" is reached, the user will be unable to store any more
|
||||
files or receive any more e-mail.
|
||||
<p>A setting of "0" for either limit disables that limit for the
|
||||
corresponding user.
|
||||
<p>The disk space for each user includes the user"s home directory,
|
||||
e-mail, and any files owned by the user in information bays.',
|
||||
'quo_SOFT_VAL_MUST_BE_NUMBER' => 'Error: limit with grace period must be a number, optionally followed by one of the unit suffixes K, M, G, or T.',
|
||||
'quo_SUCCESSFULLY_MODIFIED' => 'Successfully modified quota for user account: ',
|
||||
'quo_UNABLE_TO_OPEN_ACCOUNTS' => 'Unable to open accounts db',
|
||||
'quo_USER' => 'User: ',
|
||||
'Quotas' => 'Quotas',
|
78
output/Reboot/Reboot.new.pm
Normal file
78
output/Reboot/Reboot.new.pm
Normal file
@@ -0,0 +1,78 @@
|
||||
package SrvMngr::Controller::Reboot;
|
||||
|
||||
#----------------------------------------------------------------------
|
||||
# heading : System
|
||||
# description : Reboot or shutdown
|
||||
# navigation : 4000 700
|
||||
#
|
||||
# routes : end
|
||||
#----------------------------------------------------------------------
|
||||
use strict;
|
||||
use warnings;
|
||||
use Mojo::Base "Mojolicious::Controller";
|
||||
use Locale::gettext;
|
||||
use SrvMngr::I18N;
|
||||
use SrvMngr qw(theme_list init_session);
|
||||
|
||||
sub main {
|
||||
my $c = shift;
|
||||
$c->app->log->info($c->log_req);
|
||||
my $title = $c->l("rbo_FORM_TITLE");
|
||||
my $modul = "";
|
||||
$c->stash(title => $title, modul => $modul);
|
||||
$c->render(template => "reboot");
|
||||
} ## end sub main
|
||||
|
||||
sub do_action {
|
||||
my $c = shift;
|
||||
$c->app->log->info($c->log_req);
|
||||
my $title = $c->l("rbo_FORM_TITLE");
|
||||
my $result = "";
|
||||
my $function = $c->param("function");
|
||||
my $debug = $c->param("debug");
|
||||
|
||||
if ($function eq "reboot") {
|
||||
$result = $c->l("Reboot_SUCCEEDED") . "<br>" . $c->l("rbo_DESC_REBOOT");
|
||||
|
||||
unless ($debug) {
|
||||
esmith::util::backgroundCommand(1, "/sbin/e-smith/signal-event", "reboot");
|
||||
|
||||
# system( "/sbin/e-smith/signal-event", "reboot" ) == 0
|
||||
# or die ("Error occurred while rebooting.\n");
|
||||
} ## end unless ($debug)
|
||||
} elsif ($function eq "shutdown") {
|
||||
$result = $c->l("rbo_SHUTDOWN_SUCCEEDED") . "<br>" . $c->l("rbo_DESC_SHUTDOWN");
|
||||
|
||||
unless ($debug) {
|
||||
esmith::util::backgroundCommand(1, "/sbin/e-smith/signal-event", "halt");
|
||||
|
||||
# system( "/sbin/e-smith/signal-event", "halt" ) == 0
|
||||
# or die ("Error occurred while halting.\n");
|
||||
} ## end unless ($debug)
|
||||
} elsif ($function eq "reconfigure") {
|
||||
$result = $c->l("rbo_RECONFIGURE_SUCCEEDED") . "<br>" . $c->l("rbo_DESC_RECONFIGURE");
|
||||
|
||||
unless ($debug) {
|
||||
|
||||
# esmith::util::backgroundCommand( 1, "/sbin/e-smith/signal-event", "post-upgrade",
|
||||
# "; ", "/sbin/e-smith/signal-event", "reboot" );
|
||||
esmith::util::backgroundCommand( 1, "/sbin/e-smith/signal-event", "post-upgrade-and-reboot");
|
||||
#system("/sbin/e-smith/signal-event", "post-upgrade") == 0
|
||||
#or die("Error occurred while running post-upgrade.\n");
|
||||
#system("/sbin/e-smith/signal-event", "reboot") == 0
|
||||
#or die("Error occurred while rebooting.\n");
|
||||
} ## end unless ($debug)
|
||||
} ## end elsif ($function eq "reconfigure")
|
||||
$c->stash(title => $title, modul => $result);
|
||||
$c->render(template => "module");
|
||||
} ## end sub do_action
|
||||
|
||||
sub rebootFunction_list {
|
||||
my $c = shift;
|
||||
return [
|
||||
[ $c->l("Reboot") => "reboot" ],
|
||||
[ $c->l("RECONFIGURE") => "reconfigure" ],
|
||||
[ $c->l("SHUTDOWN") => "shutdown" ]
|
||||
];
|
||||
} ## end sub rebootFunction_list
|
||||
1;
|
1
output/Reboot/reboot_en.lex.diff
Normal file
1
output/Reboot/reboot_en.lex.diff
Normal file
@@ -0,0 +1 @@
|
||||
'Reboot or shutdown' => 'Reboot or shutdown',
|
19
output/Reboot/reboot_en.lex.new1
Normal file
19
output/Reboot/reboot_en.lex.new1
Normal file
@@ -0,0 +1,19 @@
|
||||
#
|
||||
# Lex file for Reboot generated on 2025-07-17 09:52:33
|
||||
#
|
||||
'rbo_DESC_REBOOT' => 'Your server has initiated the reboot process.',
|
||||
'rbo_DESC_RECONFIGURE' => 'Your server has initiated a full system reconfiguration and reboot.',
|
||||
'rbo_DESC_SHUTDOWN' => 'Your server has initiated the shutdown process.
|
||||
The process will take several minutes to complete, after which
|
||||
you can switch off the power.',
|
||||
'rbo_DESCRIPTION' => 'You can reboot, shut down your server or perform a full system
|
||||
reconfiguration from this screen. You must perform a shutdown
|
||||
before switching the power off. All of these functions take
|
||||
several minutes to complete.
|
||||
When you click <b>perform</b> the operation will be initiated immediately, so be ready!',
|
||||
'rbo_FORM_TITLE' => 'Shutdown or reboot',
|
||||
'rbo_LABEL_REBOOT' => 'Select Shutdown, Reboot or Reconfigure',
|
||||
'rbo_REBOOT_SUCCEEDED' => 'Reboot request initiated successfully.',
|
||||
'rbo_RECONFIGURE_SUCCEEDED' => 'Reconfiguration request initiated successfully.',
|
||||
'rbo_SHUTDOWN_SUCCEEDED' => 'Shutdown request initiated successfully.',
|
||||
'Reboot or shutdown' => 'Reboot or shutdown',
|
16
output/Remoteaccess/remoteaccess_en.lex.diff
Normal file
16
output/Remoteaccess/remoteaccess_en.lex.diff
Normal file
@@ -0,0 +1,16 @@
|
||||
'Remote access' => 'Remote access',
|
||||
'rma_DESC_SERIAL_CONSOLE_ACCESS' => ' <hr class="sectionbar" /><h2>Serial console</h2>
|
||||
You can allow access to the server console from a terminal
|
||||
connected to a server serial port.',
|
||||
'rma_DESCRIPTION' => 'For each of the options below, the private setting allows anyone
|
||||
from your local network to access your server. The
|
||||
public setting allows access from anywhere on the Internet. The no
|
||||
access setting disables access. To understand the security
|
||||
implications of changing these options from the default settings, you
|
||||
should read the user's guide section on remote access.',
|
||||
'rma_ERR_NO_RECORD' => 'Unable to locate httpd-admin record in configuration db',
|
||||
'rma_LABEL_PPTP_ACCESS' => 'PPTP default user access',
|
||||
'rma_LABEL_SERIAL_CONSOLE_ACCESS' => 'Serial console',
|
||||
'rma_PORT1_ENABLED' => 'Enabled on serial port 1',
|
||||
'rma_PORT2_ENABLED' => 'Enabled on serial port 2',
|
||||
'rma_VALUE_ZERO_OR_POSITIVE' => 'Value must be zero or a positive integer',
|
97
output/Remoteaccess/remoteaccess_en.lex.new1
Normal file
97
output/Remoteaccess/remoteaccess_en.lex.new1
Normal file
@@ -0,0 +1,97 @@
|
||||
#
|
||||
# Lex file for Remoteaccess generated on 2025-07-17 09:52:33
|
||||
#
|
||||
'Remote access' => 'Remote access',
|
||||
'rma_DESC_FTP_ACCESS' => 'You can also control <b>FTP</b> access to your server. We
|
||||
recommend leaving this parameter set to "no access" unless you
|
||||
have a specific reason to do otherwise.
|
||||
<p>
|
||||
Note: these settings limit access to the server and override other
|
||||
settings, including those for individual information bays.</p>',
|
||||
'rma_DESC_FTP_LOGIN' => 'You can also control authenticated FTP access to information
|
||||
bays and user accounts. We strongly recommend leaving this
|
||||
parameter set to private unless you have a specific reason to
|
||||
do otherwise.
|
||||
<p>
|
||||
Note: a secure shell sftp client can also be used to access the
|
||||
server, if remote access via the secure shell is enabled.
|
||||
This method of access protects the
|
||||
passwords and data of the FTP session, whereas standard FTP
|
||||
provides no protection.</p>',
|
||||
'rma_DESC_IPSECRW' => 'You can allow IPSEC client access to your server, authenticated by
|
||||
digital certificates. You should leave this feature disabled by setting the value
|
||||
to the number 0 unless you require IPSEC client access.',
|
||||
'rma_DESC_IPSECRW_RESET' => 'If you wish to reset all digital certificates, you
|
||||
can do so here.<br>Any old certificates will no longer
|
||||
authenticate against the server, so <b><i>all IPSEC clients will
|
||||
need to import a new certificate!</i></b>.',
|
||||
'rma_DESC_PPTP' => 'You can allow PPTP access to your server.
|
||||
You should leave this feature disabled by setting the value
|
||||
to the number 0 unless you require PPTP access.',
|
||||
'rma_DESC_SERIAL_CONSOLE_ACCESS' => ' <hr class="sectionbar" /><h2>Serial console</h2>
|
||||
You can allow access to the server console from a terminal
|
||||
connected to a server serial port.',
|
||||
'rma_DESC_SSH' => 'You can control Secure Shell access to your server.
|
||||
The public setting should only be enabled by
|
||||
experienced administrators
|
||||
for remote problem diagnosis and resolution.
|
||||
We recommend leaving this
|
||||
parameter set to "No Access"
|
||||
unless you have a specific reason to do otherwise.
|
||||
Note that an "Autoblock" feature is enabled by default when public access is enabled; to disable or tune this feature, refer to the manual at https://wiki.koozali.org/AutoBlock
|
||||
',
|
||||
'rma_DESC_TELNET_ACCESS' => 'WARNING:Telnet is currently enabled, but this feature is
|
||||
no longer supported. Telnet is inherently insecure and should only
|
||||
be used in circumstances where no practical alternative exists. You
|
||||
should change option to [_1] and use
|
||||
secure shell if remote access is
|
||||
required. Once disabled, telnet will no longer appear on this
|
||||
screen. ',
|
||||
'rma_DESC_VALID_FROM_ENTRIES' => 'To add a new remote management network,
|
||||
enter the details below.',
|
||||
'rma_DESCRIPTION' => 'For each of the options below, the private setting allows anyone
|
||||
from your local network to access your server. The
|
||||
public setting allows access from anywhere on the Internet. The no
|
||||
access setting disables access. To understand the security
|
||||
implications of changing these options from the default settings, you
|
||||
should read the user"s guide section on remote access.',
|
||||
'rma_ERR_INVALID_PARAMS' => 'Either provide both a network and subnet mask, or leave both
|
||||
fields blank.',
|
||||
'rma_ERR_NO_RECORD' => 'Unable to locate httpd-admin record in configuration db',
|
||||
'rma_FORM_TITLE' => 'Change remote access settings',
|
||||
'rma_INVALID_SUBNET_MASK' => 'Invalid subnet mask',
|
||||
'rma_LABEL_FTP_ACCESS' => 'FTP access',
|
||||
'rma_LABEL_FTP_LOGIN' => 'FTP password access',
|
||||
'rma_LABEL_IPSECRW_RESET' => 'Reset digital certificates',
|
||||
'rma_LABEL_IPSECRW_SESS' => 'Number of IPSEC clients',
|
||||
'rma_LABEL_PPTP' => 'Number of PPTP clients',
|
||||
'rma_LABEL_PPTP_ACCESS' => 'PPTP default user access',
|
||||
'rma_LABEL_SERIAL_CONSOLE_ACCESS' => 'Serial console',
|
||||
'rma_LABEL_SSH' => 'Secure shell access',
|
||||
'rma_LABEL_SSH_ADMIN' => 'Allow administrative command line access over secure shell',
|
||||
'rma_LABEL_SSH_PASSWORD_ACCESS' => 'Allow secure shell access using standard passwords',
|
||||
'rma_LABEL_SSH_PORT' => 'TCP Port for secure shell access',
|
||||
'rma_LABEL_TELNET_ACCESS' => 'Telnet access',
|
||||
'rma_NO_ACCESS' => 'No Access',
|
||||
'rma_NO_ENTRIES_YET' => 'There are no entries yet',
|
||||
'rma_NUM_OF_HOSTS' => 'Number of hosts',
|
||||
'rma_NUMBER_OF_PPTP_CLIENTS_MUST_BE_LESSER_THAN_NUMBER_OF_IP_IN_DHCP_RANGE' => 'The number of pptp clients is greater than the number of reserved IP for DHCP. You should take a smaller number.',
|
||||
'rma_PASSWORD_LOGIN_PRIVATE' => 'Accept passwords only from local networks',
|
||||
'rma_PASSWORD_LOGIN_PUBLIC' => 'Accept passwords from anywhere',
|
||||
'rma_PORT1_ENABLED' => 'Enabled on serial port 1',
|
||||
'rma_PORT2_ENABLED' => 'Enabled on serial port 2',
|
||||
'rma_REMOTE_MANAGEMENT' => 'Remote Management',
|
||||
'rma_SUBNET_MASK' => 'Subnet mask',
|
||||
'rma_SUCCESS' => 'The new remote access settings have been saved.',
|
||||
'rma_TITLE_FTP_ACCESS' => 'FTP Settings',
|
||||
'rma_TITLE_IPSECRW' => 'IPSEC Client (Roadwarrior) Settings',
|
||||
'rma_TITLE_PPTP' => 'PPTP Settings',
|
||||
'rma_TITLE_SSH' => 'Secure Shell Settings',
|
||||
'rma_TITLE_TELNET_ACCESS' => 'Telnet Settings',
|
||||
'rma_VALIDFROM_DESC' => 'It is possible to allow hosts on remote networks to access the
|
||||
server manager by entering those networks here. Use a subnet
|
||||
mask of 255.255.255.255 to limit the access to the specified host.
|
||||
Any hosts within the specified range will be able to access the
|
||||
server manager using HTTPS.',
|
||||
'rma_VALIDFROM_TITLE' => '[_1]',
|
||||
'rma_VALUE_ZERO_OR_POSITIVE' => 'Value must be zero or a positive integer',
|
121
output/Review/AdminLTE/_rvw_content.html.new.ep
Normal file
121
output/Review/AdminLTE/_rvw_content.html.new.ep
Normal file
@@ -0,0 +1,121 @@
|
||||
<div>
|
||||
<table class="table table-bordered">
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="col-md-2"><%= l "rvw_NETWORKING_PARAMS" %></th>
|
||||
<th class="col-auto"> </th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><%= l "rvw_SERVER_MODE" %></td>
|
||||
<td><%= $rvw_datas->{servermode} %></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td><%= l "rvw_LOCAL_IP_ADDRESS_SUBNET_MASK" %></td>
|
||||
<td><%= $rvw_datas->{localip} %></td>
|
||||
</tr>
|
||||
|
||||
% if ( $rvw_datas->{publicip} ) {
|
||||
<tr>
|
||||
<td><%=l "rvw_INTERNET_VISIBLE_ADDRESS" %></td>
|
||||
<td><%= $rvw_datas->{publicip} %></td>
|
||||
</tr>
|
||||
% }
|
||||
|
||||
<tr>
|
||||
<td><%= l "Gateway"%></td>
|
||||
<td>
|
||||
<%= $rvw_datas->{gateway} %>
|
||||
<%= $rvw_datas->{serveronly} %>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>Local Networks (not translated?)</td>
|
||||
<td><%= $c->render_to_string( inline => $rvw_datas->{addlocalnetworks} );%> </td>
|
||||
<tr>
|
||||
|
||||
<tr>
|
||||
<td><%= l "rvw_DHCP_SERVER" %></td>
|
||||
<td><%= $rvw_datas->{dhcpserver} %></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<table class="table table-bordered">
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="col-md-2"><%= l "rvw_SERVER_NAMES" %></th>
|
||||
<th class="col-auto"> </th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><%= l "rvw_DNS_SERVER" %></td>
|
||||
<td><%= $rvw_datas->{dnsserver} %></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td><%= l "rvw_WEB_SERVER" %></td>
|
||||
<td><%= $rvw_datas->{webserver} %></tr>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td><%= l "rvw_PROXY_SERVER" %></td>
|
||||
<td><%= $rvw_datas->{proxyserver} %></tr>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td><%= l "rvw_FTP_SERVER" %></td>
|
||||
<td><%= $rvw_datas->{ftpserver} %></tr>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td><%= l "rvw_SMTP_POP_AND_IMAP_MAIL_SERVERS" %></td>
|
||||
<td><%= $rvw_datas->{smtpserver} %></tr>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<table class="table table-bordered">
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="col-md-2"><%= l "rvw_DOMAIN_INFORMATION" %></th>
|
||||
<th class="col-auto"> </th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><%= l "rvw_PRIMARY_DOMAIN" %></td>
|
||||
<td><%= $rvw_datas->{domainname} %></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td><%= l "rvw_VIRTUAL_DOMAINS" %></td>
|
||||
<td><%= $rvw_datas->{virtualdomains} %></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><%= l "rvw_PRIMARY_WEB_SITE" %></td>
|
||||
<td><%= $rvw_datas->{primarywebsite} %></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td><%= l "rvw_SERVER_MANAGER" %></td>
|
||||
<td><%= $rvw_datas->{servermanager} %></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td><%= l "rvw_USER_PASSWORD_PANEL" %></td>
|
||||
<td><%= $rvw_datas->{usermanager} %></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td><%= l "rvw_EMAIL_ADDRESSES" %></td>
|
||||
<td><%= $rvw_datas->{emailaddresses} %></td>
|
||||
</tr>
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
318
output/Review/Review.new.pm
Normal file
318
output/Review/Review.new.pm
Normal file
@@ -0,0 +1,318 @@
|
||||
package SrvMngr::Controller::Review;
|
||||
|
||||
#----------------------------------------------------------------------
|
||||
# heading : Investigation
|
||||
# description : Review configuration
|
||||
# navigation : 7000 400
|
||||
# routes : end
|
||||
#----------------------------------------------------------------------
|
||||
use strict;
|
||||
use warnings;
|
||||
use Mojo::Base "Mojolicious::Controller";
|
||||
use Locale::gettext;
|
||||
use SrvMngr::I18N;
|
||||
use SrvMngr qw(theme_list init_session);
|
||||
use SrvMngr qw(gen_locale_date_string);
|
||||
use esmith::ConfigDB::UTF8;
|
||||
use esmith::DomainsDB::UTF8;
|
||||
use esmith::NetworksDB::UTF8;
|
||||
|
||||
#use SrvMngr::Review_sub qw(print_page);
|
||||
#use smeserver::Panel::review;
|
||||
our $db;
|
||||
our $domains ;
|
||||
our $networks;
|
||||
|
||||
sub main {
|
||||
my $c = shift;
|
||||
$c->app->log->info($c->log_req);
|
||||
$db = esmith::ConfigDB::UTF8->open_ro || die "Couldn"t open config db\";
|
||||
my $title = $c->l("rvw_FORM_TITLE");
|
||||
my $modul = $c->render_to_string(inline => $c->l("rvw_DESCRIPTION"));
|
||||
my %rvw_datas = ();
|
||||
$rvw_datas{"servermode"} = (get_value("", "SystemMode") || "");
|
||||
$rvw_datas{"localip"} = get_value("$c", "LocalIP") . "/" . get_value("$c", "LocalNetmask");
|
||||
$rvw_datas{"publicip"} = $c->get_public_ip_address($c);
|
||||
$rvw_datas{"gateway"} = $c->render_to_string(inline => print2_gateway_stanza($c));
|
||||
$rvw_datas{"serveronly"} = $c->render_to_string(inline => print2_serveronly_stanza($c));
|
||||
$rvw_datas{"addlocalnetworks"} = get_local_networks($c);
|
||||
$rvw_datas{"dhcpserver"} = $c->render_to_string(inline => print2_dhcp_stanza($c));
|
||||
$rvw_datas{"dnsserver"} = (get_value("", "LocalIP") || "");
|
||||
$rvw_datas{"webserver"} = "www." . (get_local_domain());
|
||||
my $port = $db->get_prop(\"squid\", \"TransparentPort\") || 3128;
|
||||
$rvw_datas{"proxyserver"} = "proxy." . get_local_domain() . \":$port\";
|
||||
$rvw_datas{"ftpserver"} = "ftp." . get_local_domain();
|
||||
$rvw_datas{"smtpserver"} = "mail." . get_local_domain();
|
||||
$rvw_datas{"domainname"} = (get_value("", "DomainName") || "");
|
||||
$rvw_datas{"virtualdomains"} = $c->render_to_string(inline => gen2_domains($c));
|
||||
$rvw_datas{"primarywebsite"} = "http://www." . get_value("", "DomainName");
|
||||
$rvw_datas{"servermanager"} = "https://" . (get_value("", "SystemName") || "localhost") . "/server-manager/";
|
||||
$rvw_datas{"usermanager"} = "https://" . (get_value("", "SystemName") || "localhost") . "/user-password/";
|
||||
$rvw_datas{"emailaddresses"} = $c->render_to_string(inline => gen2_email_addresses($c));
|
||||
|
||||
#$c->stash( releaseVersion => $c->session->{releaseVersion}, copyRight => $c->session->{copyRight},
|
||||
#PwdSet => $c->session->{PwdSet}, Unsafe => $c->session->{Unsafe},
|
||||
$c->stash(
|
||||
title => $title,
|
||||
modul => $modul,
|
||||
rvw_datas => \%rvw_datas,
|
||||
);
|
||||
$c->render(template => "review");
|
||||
} ## end sub main
|
||||
|
||||
=head2 gen2_email_addresses
|
||||
|
||||
Returns a string of the various forms of email addresses that work
|
||||
on an SMEServer (mojo v.)
|
||||
|
||||
=cut
|
||||
|
||||
sub gen2_email_addresses {
|
||||
my $c = shift;
|
||||
my $domain = get_value($c, "DomainName");
|
||||
my $useraccount = $c->l(\"useraccount\");
|
||||
my $firstname = $c->l(\"firstname\");
|
||||
my $lastname = $c->l(\"lastname\");
|
||||
my $out
|
||||
= \"<I>\"
|
||||
. $useraccount
|
||||
. \"</I>\@\"
|
||||
. $domain . \"<BR>\" . \"<I>\"
|
||||
. $firstname
|
||||
. \"</I>.<I>\"
|
||||
. $lastname
|
||||
. \"</I>\@\"
|
||||
. $domain . \"<BR>\" . \"<I>\"
|
||||
. $firstname
|
||||
. \"</I>_<I>\"
|
||||
. $lastname
|
||||
. \"</I>\@\"
|
||||
. $domain . \"<BR>\";
|
||||
return $out;
|
||||
} ## end sub gen2_email_addresses
|
||||
|
||||
=head2 gen2_domains
|
||||
|
||||
Returns a string of the domains this SME Server serves or a localized string
|
||||
saying \"no domains defined\" (mojo ver)
|
||||
|
||||
=cut
|
||||
|
||||
sub gen2_domains {
|
||||
my $c = shift;
|
||||
$domains = esmith::DomainsDB::UTF8->open_ro || die \"Couldn"t open domains";
|
||||
my @virtual = $domains->get_all_by_prop(type => "domain");
|
||||
my $numvirtual = @virtual;
|
||||
|
||||
if ($numvirtual == 0) {
|
||||
$c->localise("NO_VIRTUAL_DOMAINS");
|
||||
} else {
|
||||
my $out = "";
|
||||
my $domain;
|
||||
|
||||
foreach $domain (sort @virtual) {
|
||||
if ($out ne "") {
|
||||
$out .= "<BR>";
|
||||
}
|
||||
$out .= $domain->key;
|
||||
} ## end foreach $domain (sort @virtual)
|
||||
return $out;
|
||||
} ## end else [ if ($numvirtual == 0) ]
|
||||
} ## end sub gen2_domains
|
||||
|
||||
=head2 get2_local_networks
|
||||
|
||||
Return a <br> delimited string of all the networks this SMEServer is
|
||||
serving. (mojo ver)
|
||||
|
||||
=cut
|
||||
|
||||
sub get2_local_networks {
|
||||
my $c = shift;
|
||||
$networks = esmith::NetworksDB::UTF8->open_ro || die "Couldn"t open networks\";
|
||||
my @nets = $networks->get_all_by_prop("type" => "network");
|
||||
my $numNetworks = @nets;
|
||||
|
||||
if ($numNetworks == 0) {
|
||||
return $c->l("rvw_NO_NETWORKS");
|
||||
} else {
|
||||
my $out = \"\";
|
||||
|
||||
foreach my $network (sort @nets) {
|
||||
if ($out ne \"\") {
|
||||
$out .= \"<BR>\";
|
||||
}
|
||||
$out .= $network->key . \"/\" . get_net_prop($c, $network->key, "Mask");
|
||||
|
||||
if (defined get_net_prop($c, $network->key, "Router")) {
|
||||
$out .= \" via \" . get_net_prop($c, $network->key, "Router");
|
||||
}
|
||||
} ## end foreach my $network (sort @nets)
|
||||
return $out;
|
||||
} ## end else [ if ($numNetworks == 0)]
|
||||
} ## end sub get2_local_networks
|
||||
|
||||
sub get_net_prop {
|
||||
my $fm = shift;
|
||||
my $item = shift;
|
||||
my $prop = shift;
|
||||
$networks = esmith::NetworksDB::UTF8->open_ro || die \"Couldn"t open networks";
|
||||
my $record = $networks->get($item);
|
||||
if ($record) {
|
||||
return $record->prop($prop);
|
||||
}
|
||||
else {
|
||||
return "";
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
sub get_local_networks {
|
||||
my $fm = shift;
|
||||
$networks = esmith::NetworksDB::UTF8->open_ro || die "Couldn"t open networks\";
|
||||
my @nets = $networks->get_all_by_prop("type" => "network");
|
||||
|
||||
my $numNetworks = @nets;
|
||||
if ($numNetworks == 0) {
|
||||
return $fm->localise("NO_NETWORKS");
|
||||
}
|
||||
else {
|
||||
my $out = \"\";
|
||||
foreach my $network (sort @nets) {
|
||||
if ($out ne \"\") {
|
||||
$out .= \"<BR>\";
|
||||
}
|
||||
|
||||
$out .= $network->key.\"/\" . get_net_prop($fm, $network->key, "Mask");
|
||||
|
||||
if ( defined get_net_prop($fm, $network->key, "Router") ) {
|
||||
$out .= \" via \" . get_net_prop ($fm, $network->key, "Router");
|
||||
}
|
||||
}
|
||||
return $out;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
sub get_local_domain
|
||||
{
|
||||
return (get_value("","DomainName"));
|
||||
}
|
||||
|
||||
|
||||
=head2 print2_gateway_stanza
|
||||
|
||||
If this system is a server gateway, show the external ip and gateway ip (mojo ver)
|
||||
|
||||
=cut
|
||||
|
||||
sub print2_gateway_stanza {
|
||||
my $c = shift;
|
||||
|
||||
if (get_value($c, "SystemMode") =~ /servergateway/) {
|
||||
my $ip = get_value($c, "ExternalIP");
|
||||
my $static
|
||||
= (get_value($c, "AccessType") eq "dedicated")
|
||||
&& (get_value($c, "ExternalDHCP") eq "off")
|
||||
&& (get_prop($c, "pppoe", "status") eq "disabled");
|
||||
|
||||
if ($static) {
|
||||
$ip .= \"/\" . get_value($c, "ExternalNetmask");
|
||||
}
|
||||
my $out = $c->l("rvw_EXTERNAL_IP_ADDRESS_SUBNET_MASK") . ":" . $ip;
|
||||
|
||||
if ($static) {
|
||||
$out .= $c->l("Gateway") . ":" . get_value($c, "GatewayIP");
|
||||
}
|
||||
return $out;
|
||||
} ## end if (get_value($c, "SystemMode"...))
|
||||
} ## end sub print2_gateway_stanza
|
||||
|
||||
=head2 print2_serveronly_stanza
|
||||
|
||||
If this system is a standalone server with net access, show the external
|
||||
gateway IP (mojo ver)
|
||||
|
||||
=cut
|
||||
|
||||
sub print2_serveronly_stanza {
|
||||
my $c = shift;
|
||||
|
||||
if ( (get_value($c, "SystemMode") eq "serveronly")
|
||||
&& get_value($c, "AccessType")
|
||||
&& (get_value($c, "AccessType") ne \"off\"))
|
||||
{
|
||||
return (get_value($c, "GatewayIP"));
|
||||
} ## end if ((get_value($c, "SystemMode"...)))
|
||||
} ## end sub print2_serveronly_stanza
|
||||
|
||||
=head2 print2_dhcp_stanza
|
||||
|
||||
Prints out the current state of dhcp service (mojo ver)
|
||||
|
||||
|
||||
=cut
|
||||
|
||||
sub print2_dhcp_stanza {
|
||||
my $c = shift;
|
||||
my $out = (get_prop($c, "dhcpd", "status") || "disabled");
|
||||
|
||||
if (get_prop($c, "dhcpd", "status") eq "enabled") {
|
||||
$out .= "<br>" . $c->l("rvw_BEGINNING_OF_DHCP_ADDRESS_RANGE") . ":";
|
||||
$out .= (get_prop($c, "dhcpd", "start") || "") . "<br>";
|
||||
$out .= $c->l("rvw_END_OF_DHCP_ADDRESS_RANGE") . ":";
|
||||
$out .= (get_prop($c, "dhcpd", "end") || "");
|
||||
} ## end if (get_prop($c, "dhcpd"...))
|
||||
return $out;
|
||||
} ## end sub print2_dhcp_stanza
|
||||
|
||||
sub get_value {
|
||||
my $fm = shift;
|
||||
my $item = shift;
|
||||
$db = esmith::ConfigDB::UTF8->open_ro || die \"Couldn"t open config db";
|
||||
my $record = $db->get($item);
|
||||
if ($record) {
|
||||
return $record->value();
|
||||
}
|
||||
else {
|
||||
return "";
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
sub get_prop {
|
||||
my $fm = shift if (ref($_[0]) ); # If we"re being called in a formmagick context
|
||||
# The first argument will always be a fm.
|
||||
#otherwise, we don"t want to grab it
|
||||
my $item = shift;
|
||||
my $prop = shift;
|
||||
$db = esmith::ConfigDB::UTF8->open_ro || die "Couldn"t open config db\";
|
||||
my $record = $db->get($item);
|
||||
if ($record) {
|
||||
return $record->prop($prop);
|
||||
}
|
||||
else {
|
||||
return "";
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
sub get_public_ip_address
|
||||
{
|
||||
my $self = shift;
|
||||
$db = esmith::ConfigDB::UTF8->open_ro || die \"Couldn"t open config db";
|
||||
my $sysconfig = $db->get("sysconfig");
|
||||
if ($sysconfig)
|
||||
{
|
||||
my $publicIP = $sysconfig->prop("PublicIP");
|
||||
if ($publicIP)
|
||||
{
|
||||
return $publicIP;
|
||||
}
|
||||
}
|
||||
return undef;
|
||||
}
|
||||
|
||||
|
||||
1;
|
137
output/Review/default/review.html.new.ep
Normal file
137
output/Review/default/review.html.new.ep
Normal file
@@ -0,0 +1,137 @@
|
||||
% layout "default", title => "Sme server 2 - Review";
|
||||
|
||||
% content_for "module" => begin
|
||||
<div id="central" class="central review-panel module">
|
||||
<h1> <%= $title %> </h1>
|
||||
<%= $modul %><br><br>
|
||||
|
||||
%= form_for "review" => begin
|
||||
<b>
|
||||
%=l "rvw_NETWORKING_PARAMS"
|
||||
</b><br>
|
||||
|
||||
<p><span class=label>
|
||||
%=l "rvw_SERVER_MODE"
|
||||
</span>
|
||||
%= $rvw_datas->{servermode}
|
||||
</p>
|
||||
|
||||
<p><span class=label>
|
||||
%=l "rvw_LOCAL_IP_ADDRESS_SUBNET_MASK"
|
||||
</span>
|
||||
%= $rvw_datas->{localip}
|
||||
</p>
|
||||
|
||||
% if ( $rvw_datas->{publicip} ) {
|
||||
<p><span class=label>
|
||||
%=l "rvw_INTERNET_VISIBLE_ADDRESS"
|
||||
</span>
|
||||
%= $rvw_datas->{publicip}
|
||||
</p>
|
||||
% }
|
||||
|
||||
<p><span class=label>
|
||||
%=l "Gateway"
|
||||
</span>
|
||||
%= $rvw_datas->{gateway}
|
||||
%= $rvw_datas->{serveronly}
|
||||
</p>
|
||||
|
||||
<p><table width="100%"><tr><td class=label><!--span class=label-->
|
||||
%=l "rvw_ADDITIONAL_LOCAL_NETWORKS"
|
||||
<!--/span--></td><td>
|
||||
%= $c->render_to_string( inline => $rvw_datas->{addlocalnetworks} );
|
||||
</td></tr></table>
|
||||
</p>
|
||||
|
||||
<p><table width="100%"><tr><td class=label>
|
||||
<!--<p><span class=label>-->
|
||||
%=l "rvw_DHCP_SERVER"
|
||||
<!--</span>-->
|
||||
</td><td>
|
||||
%= $rvw_datas->{dhcpserver}
|
||||
<!--</p>-->
|
||||
</td></tr></table></p>
|
||||
|
||||
<br><br><b>
|
||||
%=l "rvw_SERVER_NAMES"
|
||||
</b><br>
|
||||
|
||||
<p><span class=label>
|
||||
%=l "rvw_DNS_SERVER"
|
||||
</span>
|
||||
%= $rvw_datas->{dnsserver}
|
||||
</p>
|
||||
|
||||
<p><span class=label>
|
||||
%=l "rvw_WEB_SERVER"
|
||||
</span>
|
||||
%= $rvw_datas->{webserver}
|
||||
</p>
|
||||
|
||||
<p><span class=label>
|
||||
%=l "rvw_PROXY_SERVER"
|
||||
</span>
|
||||
%= $rvw_datas->{proxyserver}
|
||||
</p>
|
||||
|
||||
<p><span class=label>
|
||||
%=l "rvw_FTP_SERVER"
|
||||
</span>
|
||||
%= $rvw_datas->{ftpserver}
|
||||
</p>
|
||||
|
||||
<p><span class=label>
|
||||
%=l "rvw_SMTP_POP_AND_IMAP_MAIL_SERVERS"
|
||||
</span>
|
||||
%= $rvw_datas->{smtpserver}
|
||||
</p>
|
||||
|
||||
<br><br><b>
|
||||
%=l "rvw_DOMAIN_INFORMATION"
|
||||
</b><br>
|
||||
|
||||
<p><span class=label>
|
||||
%=l "rvw_PRIMARY_DOMAIN"
|
||||
</span>
|
||||
%= $rvw_datas->{domainname}
|
||||
</p>
|
||||
|
||||
<!---<p><span class=label>-->
|
||||
<p><table width="100%"><tr><td class=label>
|
||||
%=l "rvw_VIRTUAL_DOMAINS"
|
||||
</td><td>
|
||||
<!--</span>-->
|
||||
%= $rvw_datas->{virtualdomains}
|
||||
</td></tr></table></p>
|
||||
<!--</p>-->
|
||||
|
||||
<p><span class=label>
|
||||
%=l "rvw_PRIMARY_WEB_SITE"
|
||||
</span>
|
||||
%= $rvw_datas->{primarywebsite}
|
||||
</p>
|
||||
|
||||
<p><span class=label>
|
||||
%=l "rvw_SERVER_MANAGER"
|
||||
</span>
|
||||
%= $rvw_datas->{servermanager}
|
||||
</p>
|
||||
|
||||
<p><span class=label>
|
||||
%=l "rvw_USER_PASSWORD_PANEL"
|
||||
</span>
|
||||
%= $rvw_datas->{usermanager}
|
||||
</p>
|
||||
|
||||
<p><table width="100%"><tr><td class=label>
|
||||
%=l "rvw_EMAIL_ADDRESSES"
|
||||
</td><td>
|
||||
%= $rvw_datas->{emailaddresses}
|
||||
</td></tr></table></p>
|
||||
|
||||
% end
|
||||
|
||||
</div>
|
||||
|
||||
% end
|
3
output/Review/review_en.lex.diff
Normal file
3
output/Review/review_en.lex.diff
Normal file
@@ -0,0 +1,3 @@
|
||||
'Review configuration' => 'Review configuration',
|
||||
'rvw_HOSTS' => 'Hosts',
|
||||
'rvw_NO_VIRTUAL_DOMAINS' => 'No virtual domains defined',
|
34
output/Review/review_en.lex.new1
Normal file
34
output/Review/review_en.lex.new1
Normal file
@@ -0,0 +1,34 @@
|
||||
#
|
||||
# Lex file for Review generated on 2025-07-17 09:52:34
|
||||
#
|
||||
'Review configuration' => 'Review configuration',
|
||||
'rvw_ADDITIONAL_LOCAL_NETWORKS' => 'Additional local networks',
|
||||
'rvw_BEGINNING_OF_DHCP_ADDRESS_RANGE' => 'Beginning of DHCP address range',
|
||||
'rvw_DESCRIPTION' => 'This report summarizes the networking, server, and domain
|
||||
parameters on this server relevant to configuring
|
||||
the client computers on your network. You may wish to print this
|
||||
page and use it as a reference.',
|
||||
'rvw_DHCP_SERVER' => 'DHCP server',
|
||||
'rvw_DNS_SERVER' => 'DNS server',
|
||||
'rvw_DOMAIN_INFORMATION' => 'Domain information',
|
||||
'rvw_EMAIL_ADDRESSES' => 'Email Addresses',
|
||||
'rvw_END_OF_DHCP_ADDRESS_RANGE' => 'End of DHCP address range',
|
||||
'rvw_EXTERNAL_IP_ADDRESS_SUBNET_MASK' => 'External IP address / subnet mask',
|
||||
'rvw_FORM_TITLE' => 'Review configuration',
|
||||
'rvw_FTP_SERVER' => 'FTP server',
|
||||
'rvw_HOSTS' => 'Hosts',
|
||||
'rvw_INTERNET_VISIBLE_ADDRESS' => 'Internet Visible IP Address',
|
||||
'rvw_LOCAL_IP_ADDRESS_SUBNET_MASK' => 'Local IP address / subnet mask',
|
||||
'rvw_NETWORKING_PARAMS' => 'Networking Parameters',
|
||||
'rvw_NO_NETWORKS' => 'No additional networks defined',
|
||||
'rvw_NO_VIRTUAL_DOMAINS' => 'No virtual domains defined',
|
||||
'rvw_PRIMARY_DOMAIN' => 'Primary domain',
|
||||
'rvw_PRIMARY_WEB_SITE' => 'Primary web site',
|
||||
'rvw_PROXY_SERVER' => 'Proxy server',
|
||||
'rvw_SERVER_MANAGER' => 'Server manager',
|
||||
'rvw_SERVER_MODE' => 'Server Mode',
|
||||
'rvw_SERVER_NAMES' => 'Server names',
|
||||
'rvw_SMTP_POP_AND_IMAP_MAIL_SERVERS' => 'SMTP, POP, and IMAP mail servers',
|
||||
'rvw_USER_PASSWORD_PANEL' => 'User password panel',
|
||||
'rvw_VIRTUAL_DOMAINS' => 'Virtual domains',
|
||||
'rvw_WEB_SERVER' => 'Web server',
|
161
output/Useraccounts/AdminLTE/_usr_list.html.new.ep
Normal file
161
output/Useraccounts/AdminLTE/_usr_list.html.new.ep
Normal file
@@ -0,0 +1,161 @@
|
||||
<div>
|
||||
|
||||
% my $btn = l("usr_ADD_USER");
|
||||
|
||||
<form action="/smanager/useraccounts" method="POST">
|
||||
<br>
|
||||
<div>
|
||||
<button type="submit" class="btn btn-primary btn-sm"><%= $btn %> </button>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
<br>
|
||||
<%= $c->render_to_string(inline => $c->l("usr_FIRSTPAGE_DESC")) %>
|
||||
<br>
|
||||
|
||||
%#= dumper @$users
|
||||
|
||||
% my $numUsers = @$users;
|
||||
% if ($numUsers == 0) {
|
||||
<%=l "usr_NO_USER_ACCOUNTS" %>
|
||||
% } else {
|
||||
<div class="table-responsive">
|
||||
<table class="table table-bordered">
|
||||
<thead>
|
||||
<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>
|
||||
|
||||
% foreach my $user (@$users) {
|
||||
|
||||
% my $username = $user->key();
|
||||
% my $first = $user->prop("FirstName");
|
||||
% my $last = $user->prop("LastName");
|
||||
% my $lockable = $user->prop("Lockable") || "yes";
|
||||
% my $removable = $user->prop("Removable") || "yes";
|
||||
% my $fwd = (($user->prop("EmailForward") || "local") =~ m/^forward|both$/) ?
|
||||
% $user->prop("ForwardAddress") : "";
|
||||
% my $vpnaccess = $user->prop("VPNClientAccess") || "no";
|
||||
% $vpnaccess = $vpnaccess eq "yes" ? $c->l("YES") : $c->l("NO");
|
||||
% my $password_set = $user->prop("PasswordSet");
|
||||
% my $useraccounts_user_name = $user->key; # useraccountss_entry name extracted from the data structure
|
||||
% my $csrf_token = "TOKEN"; # CSRF token for security
|
||||
% my $modify_text = l("MODIFY"); # Localized text
|
||||
% my $remove_text = l("REMOVE"); # Localized text
|
||||
% my $password_text = l("PASSWORD_RESET");
|
||||
% my $lock_text = l("Lock"); # Localized text
|
||||
% my $roundcube_text = l("Webmail"); # Localized text
|
||||
% my ($actionModify, $actionLock, $actionResetPw, $actionRemove,$actionroundcube) = " ";
|
||||
% my $thisdomain = $c->req->url->to_abs->host;
|
||||
|
||||
<tr class="align-middle">
|
||||
<td><%= $username %></td>
|
||||
<td><%= $first %> <%=$last %></td>
|
||||
<td><%= $vpnaccess %></td>
|
||||
<td><%= $fwd %></td>
|
||||
|
||||
% if ($useraccounts_user_name eq "admin") {
|
||||
%$actionModify = qq{
|
||||
%<a href="useraccountsd?CsrfDef=$csrf_token&trt=UPS&user=$useraccounts_user_name">
|
||||
% <button type="button" class="btn btn-primary btn-sm" title="$modify_text">
|
||||
% $modify_text
|
||||
% </button>
|
||||
%</a>
|
||||
%};
|
||||
%$actionResetPw = qq{
|
||||
%<a href="useraccountsd?CsrfDef=$csrf_token&trt=PWS&user=$useraccounts_user_name">
|
||||
% <button type="button" class="btn btn-primary btn-sm" title="$password_text" >
|
||||
% $password_text
|
||||
% </button>
|
||||
%</a>
|
||||
%};
|
||||
% } else {
|
||||
%$actionModify = qq{
|
||||
%<a href="useraccountsd?CsrfDef=$csrf_token&trt=UPD&user=$useraccounts_user_name">
|
||||
% <button type="button" class="btn btn-primary btn-sm" title="$modify_text" >
|
||||
% $modify_text
|
||||
% </button>
|
||||
%</a>
|
||||
%};
|
||||
% }
|
||||
|
||||
|
||||
% if ($password_set ne "yes") {
|
||||
|
||||
<!-- Needs a fix here -->
|
||||
%#$actionLock = l("ACCOUNT_LOCKED");
|
||||
<!-- Sets BOTH columns - possibly leave out Reset Password here?-->
|
||||
%$actionLock = qq{
|
||||
%<a href="useraccountsd?CsrfDef=$csrf_token&trt=PWD&user=$useraccounts_user_name">
|
||||
% <button type="button" class="btn btn-danger btn-sm" title="$password_text - currently unset">
|
||||
% Unlock
|
||||
% </button>
|
||||
%</a>
|
||||
%};
|
||||
%$actionResetPw = qq{
|
||||
%<a href="useraccountsd?CsrfDef=$csrf_token&trt=PWD&user=$useraccounts_user_name">
|
||||
% <button type="button" class="btn btn-primary btn-sm" title="$password_text - currently unset">
|
||||
% $password_text
|
||||
% </button>
|
||||
%</a>
|
||||
%};
|
||||
|
||||
% } elsif ($useraccounts_user_name ne "admin") {
|
||||
%$actionLock = qq{
|
||||
%<a href="useraccountsd?CsrfDef=$csrf_token&trt=LCK&user=$useraccounts_user_name">
|
||||
% <button type="button" class="btn btn-primary btn-sm" title="$lock_text" >
|
||||
% $lock_text
|
||||
% </button>
|
||||
%</a>
|
||||
%};
|
||||
%$actionResetPw = qq{
|
||||
%<a href="useraccountsd?CsrfDef=$csrf_token&trt=PWD&user=$useraccounts_user_name">
|
||||
% <button type="button" class="btn btn-primary btn-sm" title="$password_text" >
|
||||
% $password_text
|
||||
% </button>
|
||||
%</a>
|
||||
%};
|
||||
% }
|
||||
|
||||
% if ( $removable eq "yes" ) {
|
||||
%$actionRemove = qq{
|
||||
%<a href="useraccountsd?CsrfDef=$csrf_token&trt=DEL&user=$useraccounts_user_name">
|
||||
% <button type="button" class="btn btn-primary btn-sm" title="$remove_text" >
|
||||
% $remove_text
|
||||
% </button>
|
||||
%</a>
|
||||
%};
|
||||
% }
|
||||
|
||||
<!-- 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 btn-sm" title="$roundcube_text" >
|
||||
% $roundcube_text
|
||||
% </button>
|
||||
%</a>
|
||||
%};
|
||||
|
||||
<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>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
% }
|
||||
|
||||
<%= hidden_field "trt" => $usr_datas->{trt} %>
|
||||
|
||||
</div>
|
||||
|
57
output/Useraccounts/AdminLTE/_usr_lock.html.new.ep
Normal file
57
output/Useraccounts/AdminLTE/_usr_lock.html.new.ep
Normal file
@@ -0,0 +1,57 @@
|
||||
<div>
|
||||
|
||||
% my $btn = l("Lock");
|
||||
|
||||
<form action="/smanager/useraccountsd" method="POST">
|
||||
|
||||
%#= form_for "/useraccountsd" => (method => "POST") => begin
|
||||
|
||||
<div>
|
||||
<h2><%= l "Lock_ACCOUNT_TITLE" %></h2>
|
||||
</div>
|
||||
<br>
|
||||
<div>
|
||||
Needs a text change in the Lex files
|
||||
<br>
|
||||
<%= $c->l("Lock_DESC", $usr_datas->{user}, $usr_datas->{name} ) %>
|
||||
</div>
|
||||
|
||||
<br><br>
|
||||
|
||||
<table class="table table-bordered user-table-max-wdith">
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="col-sm">
|
||||
%=l "ACCOUNT"
|
||||
</th>
|
||||
<th class="col-sm">
|
||||
%=l "USER_NAME"
|
||||
</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><%= $usr_datas->{user} %></td>
|
||||
<td><%= $usr_datas->{name} %></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<br>
|
||||
%= $c->render_to_string(inline => $c->l("Lock_DESC2"))
|
||||
|
||||
<div class="row g-3 align-items-center">
|
||||
<div class="col-md-2">
|
||||
<button type="submit" class="btn btn-primary btn-sm"><%= $btn %></button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
%= hidden_field "trt" => $usr_datas->{trt}
|
||||
%= hidden_field "user" => $usr_datas->{user}
|
||||
%= hidden_field "name" => $usr_datas->{name}
|
||||
|
||||
</form>
|
||||
%# end
|
||||
|
||||
</div>
|
296
output/Useraccounts/AdminLTE/_usr_upd.html.new.ep
Normal file
296
output/Useraccounts/AdminLTE/_usr_upd.html.new.ep
Normal file
@@ -0,0 +1,296 @@
|
||||
|
||||
<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");
|
||||
|
||||
<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>
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
<input type="text" name="user" id="inputAccountName" class="form-control" aria-describedby="AccountName" value="<%= $usr_datas->{user} %>" >
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
<span id="passwordHelpInline" class="form-text">
|
||||
User
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
% } else {
|
||||
<!-- If not user set Button Save not Add -->
|
||||
% $btn = l("SAVE");
|
||||
|
||||
<div class="row g-3 align-items-center">
|
||||
<div class="col-md-2">
|
||||
<label for="inputLastNAme" class="col-form-label"><%= l "usr_ACCOUNT_NAME" %></label>
|
||||
</div>
|
||||
<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>
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
<input type="text" name="FirstName" id="inputFirstName" class="form-control" aria-describedby="FirstName" value="<%= $usr_datas->{firstname} %>" >
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
<span id="passwordHelpInline" class="form-text">
|
||||
First Name
|
||||
</span>
|
||||
</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>
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
<input type="text" name="LastName" id="inputLastName" class="form-control" aria-describedby="LastName" value="<%= $usr_datas->{lastname} %>" >
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
<span id="passwordHelpInline" class="form-text">
|
||||
Last Name
|
||||
</span>
|
||||
</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 "Department" %></label>
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
<input type="text" name="Dept" id="inputEmail" class="form-control" aria-describedby="Dept" value="<%= $usr_datas->{dept} %>" >
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
<span id="passwordHelpInline" class="form-text">
|
||||
Department
|
||||
</span>
|
||||
</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 "Company" %></label>
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
<input type="text" name="Company" id="inputCompany" class="form-control" aria-describedby="Company" value="<%= $usr_datas->{company} %>" >
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
<span id="passwordHelpInline" class="form-text">
|
||||
Company
|
||||
</span>
|
||||
</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>
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
<input type="text" name="Street" id="inputCompany" class="form-control" aria-describedby="Street" value="<%= $usr_datas->{street} %>" >
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
<span id="passwordHelpInline" class="form-text">
|
||||
Street
|
||||
</span>
|
||||
</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 "City" %></label>
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
<input type="text" name="City" id="inputCity" class="form-control" aria-describedby="City" value="<%= $usr_datas->{city} %>" >
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
<span id="passwordHelpInline" class="form-text">
|
||||
City
|
||||
</span>
|
||||
</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>
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
<input type="text" name="Phone" id="inputPhone" class="form-control" aria-describedby="City" value="<%= $usr_datas->{phone} %>" >
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
<span id="passwordHelpInline" class="form-text">
|
||||
Phone
|
||||
</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"
|
||||
</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>
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
<input type="email" name="ForwardAddresss" id="inputEmail" class="form-control" aria-describedby="Email" value=<%= $usr_datas->{forwardaddress} %>>
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
<span id="passwordHelpInline" class="form-text">
|
||||
Email forwarding address
|
||||
</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"
|
||||
</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");
|
||||
%= form_for "/useraccountso" => (method => "POST") => begin
|
||||
%= l "usr_LABEL_IPSECRW_DOWNLOAD"
|
||||
%= submit_button $btn2, class => ""
|
||||
%= hidden_field "trt" => "CRT"
|
||||
%= hidden_field "user" => $usr_datas->{user}
|
||||
% 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>
|
||||
<th class="col-sm-1"><%= l "usr_MEMBER" %></th>
|
||||
<th class="col-sm-1"><%=l "GROUP" %></th>
|
||||
<th class="col-sm-1"><%=l "DESCRIPTION" %></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
|
||||
% foreach my $g ( @groups) {
|
||||
% my $user = $usr_datas->{user};
|
||||
% my $groupname = $g->key();
|
||||
% my $description = $g->prop("Description");
|
||||
% my $checked = "";
|
||||
% if ( $user and $c->is_user_in_group($user, $groupname) ) {
|
||||
% $checked = "checked";
|
||||
% }
|
||||
|
||||
<tr>
|
||||
<td>
|
||||
% if ( $checked eq "checked" ) {
|
||||
<input type="checkbox" name="groupMemberships" checked value="<%= $groupname %>">
|
||||
%} else {
|
||||
%= check_box "groupMemberships" => $groupname
|
||||
%}
|
||||
</td>
|
||||
<td><%= $groupname %></td>
|
||||
<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-sm"><%= $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>
|
||||
|
||||
<!-- End of containers-sm -->
|
28
output/Useraccounts/default/_usr_lock.html.new.ep
Normal file
28
output/Useraccounts/default/_usr_lock.html.new.ep
Normal file
@@ -0,0 +1,28 @@
|
||||
<div id="usr_lock">
|
||||
|
||||
% my $btn = l("Lock");
|
||||
|
||||
%= form_for "/useraccountsd" => (method => "POST") => begin
|
||||
<p>
|
||||
<h2>
|
||||
%=l "Lock_ACCOUNT_TITLE"
|
||||
</h2>
|
||||
|
||||
<br>
|
||||
%= $c->l("Lock_DESC", $usr_datas->{user}, $usr_datas->{name} );
|
||||
<br>
|
||||
%= $c->render_to_string(inline => $c->l("Lock_DESC2"))
|
||||
</p>
|
||||
|
||||
<p>
|
||||
<br>
|
||||
%= submit_button "$btn", class => "action"
|
||||
</p>
|
||||
|
||||
%= hidden_field "trt" => $usr_datas->{trt}
|
||||
%= hidden_field "user" => $usr_datas->{user}
|
||||
%= hidden_field "name" => $usr_datas->{name}
|
||||
|
||||
% end
|
||||
|
||||
</div>
|
185
output/Useraccounts/default/_usr_upd.html.new.ep
Normal file
185
output/Useraccounts/default/_usr_upd.html.new.ep
Normal file
@@ -0,0 +1,185 @@
|
||||
<div id="usr_upd">
|
||||
|
||||
|
||||
% my $btn = l("ADD");
|
||||
|
||||
%= form_for "/useraccountsd" => (method => "POST") => begin
|
||||
<p>
|
||||
<h2>
|
||||
%=l "usr_P2_TITLE"
|
||||
</h2>
|
||||
<br>
|
||||
%= $c->render_to_string(inline => l ("usr_CREATE_MODIFY_DESC"))
|
||||
</p>
|
||||
|
||||
<p>
|
||||
<span class=label>
|
||||
%=l "usr_ACCOUNT_NAME"
|
||||
</span><span class=data>
|
||||
% if ( $usr_datas->{trt} eq "ADD" ) {
|
||||
% param "user" => $usr_datas->{user} unless param "user";
|
||||
%= text_field "user", class => "input"
|
||||
% } else {
|
||||
% $btn = l("SAVE");
|
||||
%= $usr_datas->{user}, class => "data"
|
||||
% }
|
||||
</span>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
<span class=label>
|
||||
%=l "usr_FIRSTNAME"
|
||||
</span><span class=data>
|
||||
% param "FirstName" => $usr_datas->{firstname} unless param "FirstName";
|
||||
%= text_field "FirstName", class => "input"
|
||||
</span>
|
||||
</p>
|
||||
<p>
|
||||
<span class=label>
|
||||
%=l "usr_LASTNAME"
|
||||
</span><span class=data>
|
||||
% param "LastName" => $usr_datas->{lastname} unless param "LastName";
|
||||
%= text_field "LastName", class => "input"
|
||||
</span>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
<span class=label>
|
||||
%=l "Department"
|
||||
</span><span class=data>
|
||||
% param "Dept" => $usr_datas->{dept} unless param "Dept";
|
||||
%= text_field "Dept", class => "input"
|
||||
</span>
|
||||
</p>
|
||||
<p>
|
||||
<span class=label>
|
||||
%=l "Company"
|
||||
</span><span class=data>
|
||||
% param "Company" => $usr_datas->{company} unless param "Company";
|
||||
%= text_field "Company", class => "input"
|
||||
</span>
|
||||
</p>
|
||||
<p>
|
||||
<span class=label>
|
||||
%=l "usr_STREET_ADDRESS"
|
||||
</span><span class=data>
|
||||
% param "Street" => $usr_datas->{street} unless param "Street";
|
||||
%= text_field "Street", class => "input"
|
||||
</span>
|
||||
</p>
|
||||
<p>
|
||||
<span class=label>
|
||||
%=l "City"
|
||||
</span><span class=data>
|
||||
% param "City" => $usr_datas->{city} unless param "City";
|
||||
%= text_field "City", class => "input"
|
||||
</span>
|
||||
</p>
|
||||
<p>
|
||||
<span class=label>
|
||||
%=l "usr_PHONE_NUMBER"
|
||||
</span><span class=data>
|
||||
% param "Phone" => $usr_datas->{phone} unless param "Phone";
|
||||
%= text_field "Phone", class => "input"
|
||||
</span>
|
||||
</p>
|
||||
<p>
|
||||
<span class=label>
|
||||
%=l "usr_EMAIL_DELIVERY"
|
||||
</span><span class=data>
|
||||
% param "EmailForward" => $usr_datas->{emailforward} unless param "EmailForward";
|
||||
%= select_field "EmailForward" => $c->emailForward_list(), class => "input"
|
||||
</span>
|
||||
</p>
|
||||
<p>
|
||||
<span class=label>
|
||||
%=l "usr_FORWARDING_ADDRESS"
|
||||
</span><span class=data>
|
||||
% param "ForwardAddress" => $usr_datas->{forwardaddress} unless param "ForwardAddress";
|
||||
%= text_field "ForwardAddress", class => "input"
|
||||
</span>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
<span class=label>
|
||||
%=l "usr_VPN_CLIENT_ACCESS"
|
||||
</span><span class=data>
|
||||
% param "VPNClientAccess" => $usr_datas->{vpnclientaccess} unless param "VPNClientAccess";
|
||||
%= select_field "VPNClientAccess" => [[ (l "NO") => "no"], [ (l "YES") => "yes"]], class => "input"
|
||||
</span>
|
||||
</p>
|
||||
|
||||
% if ( $usr_datas->{trt} eq "UPD" and $c->ipsec_for_acct eq "OK" ) {
|
||||
% my $btn2 = $c->l("DOWNLOAD");
|
||||
%= form_for "/useraccountso" => (method => "POST") => begin
|
||||
<p>
|
||||
<span class=label>
|
||||
%=l "usr_LABEL_IPSECRW_DOWNLOAD"
|
||||
</span><span class=data>
|
||||
%= submit_button $btn2, class => "action"
|
||||
</span>
|
||||
</p>
|
||||
%= hidden_field "trt" => "CRT"
|
||||
%= hidden_field "user" => $usr_datas->{user}
|
||||
%end
|
||||
% }
|
||||
|
||||
% my @groups = @{$c->get_groups()};
|
||||
% if ( @groups ) {
|
||||
<p>
|
||||
<span class=label>
|
||||
%=l "usr_GROUP_MEMBERSHIPS"
|
||||
</span>
|
||||
<span class=data>
|
||||
<table class="sme-border "><thead>
|
||||
<tr><th class="sme-border">
|
||||
%=l "usr_MEMBER"
|
||||
</th><th class="sme-border">
|
||||
%=l "GROUP"
|
||||
</th><th class="sme-border">
|
||||
%=l "DESCRIPTION"
|
||||
</th></tr>
|
||||
</thead><tbody>
|
||||
|
||||
% foreach my $g ( @groups) {
|
||||
% my $user = $usr_datas->{user};
|
||||
% my $groupname = $g->key();
|
||||
% my $description = $g->prop("Description");
|
||||
% my $checked = "";
|
||||
% if ( $user and $c->is_user_in_group($user, $groupname) ) {
|
||||
% $checked = "checked";
|
||||
% }
|
||||
<tr>
|
||||
|
||||
<td>
|
||||
% if ( $checked eq "checked" ) {
|
||||
<!-- % = check_box "groupMemberships", value => $groupname, checked => $checked -->
|
||||
<input type="checkbox" name="groupMemberships" checked value="<%= $groupname %>">
|
||||
%} else {
|
||||
%= check_box "groupMemberships" => $groupname
|
||||
%}
|
||||
</td>
|
||||
<!-- t td => (class => "sme-border") => (check_box " groupMemberships" => $groupname $checked) -->
|
||||
%= t td => (class => "sme-border") => $groupname
|
||||
%= t td => (class => "sme-border") => "$description"
|
||||
</tr>
|
||||
% }
|
||||
</tbody>
|
||||
</table>
|
||||
</span>
|
||||
</p>
|
||||
% }
|
||||
|
||||
<p>
|
||||
<br><br>
|
||||
%= submit_button $btn, class => "action"
|
||||
</p>
|
||||
|
||||
%= hidden_field "trt" => $usr_datas->{trt}
|
||||
% if ( $usr_datas->{trt} eq "UPD" ) {
|
||||
%= hidden_field "user" => $usr_datas->{user}
|
||||
% }
|
||||
|
||||
% end
|
||||
|
||||
</div>
|
4
output/Useraccounts/useraccounts_en.lex.diff
Normal file
4
output/Useraccounts/useraccounts_en.lex.diff
Normal file
@@ -0,0 +1,4 @@
|
||||
'Users' => 'Users',
|
||||
'usr_CANNOT_MODIFY_USER_GROUPS' => 'Error: an internal error occurred while attempting to modify the group "[_1]" for user "[_2]".',
|
||||
'usr_LOCK_ACCOUNT' => 'Lock account',
|
||||
'usr_SYSTEM_PASSWORD_FORM_TITLE' => 'Change system password',
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user