Move to python venv so that upto date chameleon avaiable

This commit is contained in:
Brian Read 2024-09-14 11:39:26 +01:00
parent 20d5828803
commit 3813f55f68
71 changed files with 1105 additions and 1279 deletions

5
.gitignore vendored Normal file
View File

@ -0,0 +1,5 @@
bin/
lib/
lib64
pyvenv.cfg

117
LICENSE
View File

@ -1,117 +0,0 @@
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.
Preamble
The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Lesser General Public License instead.) You can apply it to your programs, too.
When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights.
We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations.
Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and modification follow.
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program.
You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions:
a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change.
b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License.
c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program.
In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License.
3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following:
a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or,
b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or,
c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable.
If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance.
5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it.
6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License.
7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances.
It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice.
This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License.
9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns.
Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation.
10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found.
one line to give the program's name and an idea of what it does. Copyright (C) yyyy name of author
This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) year name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program.
You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker.
signature of Ty Coon, 1 April 1989 Ty Coon, President of Vice

View File

@ -1,3 +0,0 @@
# SM2Gen
Python program to take a JSON5 description of an SM2 panel and spit out the perl controller, Mojo templates and I18 localise file for English.

View File

@ -0,0 +1,63 @@
#
# Routines to be edited by the developer to provide validation for parameters
# and provison of the control data for table(s)
#
# Generated by SM2Gen version:0.8 Chameleon version:4.5.4 On Python:3.12.3 at 2024-09-13 19:20
#
use esmith::util;
use esmith::HostsDB;
use esmith::AccountsDB;
use esmith::NetworksDB;
use esmith::HostsDB;
use esmith::DomainsDB;
#The most common ones
our $cdb = esmith::ConfigDB->open() || die("Couldn't open config db");
our $adb = esmith::AccountsDB->open() || die("Couldn't open Accounts db");
our $ndb = esmith::NetworksDB->open() || die("Couldn't open Network db");
our $hdb = esmith::HostsDB->open() || die("Couldn't open Hosts db");
our $ddb = esmith::DomainsDB->open() || die("Couldn't open Domains db");
# Validation routines - parameters for each panel
sub validate_PARAMS {
my $c = shift;
my $prefix_data = shift; #Data hash as parameter
my $ret = 'ok';
return $ret;
}
# Get control data for tables(s)
# Return hash with values from row in which link clicked on table
sub get_selected_PARAMS {
my $c = shift;
my $selected = shift; #Parameter is name of selected row.
my $is_new_record = shift; #Indicates new record required (defaults)
my %ret = {};
return $ret;
}
#after sucessful modify or create or whatever and submit then perfom (if the params validate)
sub perform_PARAMS {
my $c = shift;
my $prefix_data = shift; #Data hash as parameter
my $ret = 'ok';
return $ret;
}
sub create_link{
# WIP
my ($c,$route, $panel, $index) = shift;
my $link = "$route?trt=$panel&Selected=$index";
return $link;
}
1;

View File

@ -0,0 +1,243 @@
package SrvMngr::Controller::CreateStarterWebsite;
#
# Generated by version:SM2Gen version:0.8 Chameleon version:4.5.4 On Python:3.12.3 at 2024-09-13 19:20
#
#----------------------------------------------------------------------
# heading : Miscellaneous
# description : Create Starter Website
# navigation : 2000 400
#
# name : createstarterwebsite, method : get, url : /createstarterwebsite, ctlact : CreateStarterWebsite#main
# name : createstarterwebsiteu, method : post, url : /createstarterwebsiteu, ctlact : CreateStarterWebsite#do_update
# name : createstarterwebsited, method : get, url : /createstarterwebsited, ctlact : CreateStarterWebsite#do_display
#
# routes : end
#
# Documentation: https://wiki.contribs.org/CreateStarterWebsite
#----------------------------------------------------------------------
#
# Scheme of things:
#
# TBA!!
use strict;
use warnings;
use Mojo::Base 'Mojolicious::Controller';
use constant FALSE => 0;
use constant TRUE => 1;
use Locale::gettext;
use SrvMngr::I18N;
use SrvMngr qw(theme_list init_session);
use Data::Dumper;
use esmith::util;
use esmith::HostsDB;
use esmith::AccountsDB;
use esmith::NetworksDB;
use esmith::HostsDB;
use esmith::DomainsDB;
#The most common ones
our $cdb = esmith::ConfigDB->open() || die("Couldn't open config db");
our $adb = esmith::AccountsDB->open() || die("Couldn't open Accounts db");
our $ndb = esmith::NetworksDB->open() || die("Couldn't open Network db");
our $hdb = esmith::HostsDB->open() || die("Couldn't open Hosts db");
our $ddb = esmith::DomainsDB->open() || die("Couldn't open Domains db");
require '/usr/share/smanager/lib/SrvMngr/Controller/CreateStarterWebsite-Custom.pm'; #The code that is to be added by the developer
sub main {
#
# Initial entry - route is "/<whatever>"
#
#set initial panel
#for initial panel:
#Specifiy panel to enter
#load up _data hash with DB fields
#load up stash with pointer(s) to control fields hash(= get-))
#and a pointer to the prefix_data hash
#render initial panel
my $c = shift;
$c->app->log->info( $c->log_req );
my %csw_data = ();
my $title = $c->l('csw_Create_Starter_Website');
my $modul = '';
$csw_data{'trt'} = 'PARAMS';
#Load any DB entries into the <prefix>_data area so as they are preset in the form
# which DB - this only really works if the initial panel is a PARAMS type panel and not a TABLE
my $db = $cdb; #pickup local or global db or Default to config
# and table control fields
$c->stash(
title => $title,
modul => $modul,
csw_data => \%csw_data
);
$c->render( template => "createstarterwebsite" );
}
# Post request with params - submit from the form
sub do_update {
#
# Return after submit pushed on panel (this is a post) - route is "/<whatever>u"
# parameters in the params hash.
#
#load up all params into prefix_data hash:
#By panel (series of if statements - only one executed):
#call validate-PANEL() - return ret = ok or error message
#if validation not ok:
#render back to current panel with error message in stash
#otherwise:
#By panel (series of if statements - only one executed):
#do whatever is required: call perform-PANEL() - return "ok" or Error Message
#call signal-event for any global actions specified (check it exists - error and continue?)
#if action smeserver-<whatever>-update exists
#signal_event smeserver-<whatever>-update
#call signal-event for any specific actions for thids panel (check it exists first - error and continue)
#set success in stash
#if no "nextpanel" entry:
#set firstpanel
#else
#set nextpanel
#call render
my $c = shift;
$c->app->log->info($c->log_req);
my %csw_data = ();
my $title = $c->l('csw_Create_Starter_Website');
# Accessing all POST parameters
my %params = $c->req->params->to_hash;
# Get number of POST parameters
my $num_params = keys %params;
#Params are available in the hash "params" - copy to the prefix_data hash
while (my ($key, $value) = each %{$c->req->params->to_hash}) {
$csw_data{$key} = $value;
}
# the value of trt will tell you which panel has returned
my $trt = $c->param('trt') || 'PARAMS'; #hidden control on every form.
my $ret = 'ok';
#Validate the parameters in a custom sub one for each panel (although only one of these will be executed)
my $thispanel;
if ($trt eq 'PARAMS'){
#Validate form parameters for panel PARAMS
$ret = $c->validate_PARAMS(\%csw_data);
$thispanel = 'PARAMS';
}
if ($ret ne "ok") {
# return to the panel with error message
$c->stash(error => $c->l($ret));
$c->render("createstarterwebsite");
} else {
#Do whatever is needed, including writing values to the DB
if ($trt eq 'PARAMS'){
#do whatever is required ...
$ret = $c->perform_PARAMS(\%csw_data);
if ($ret ne "ok") {
# return to the panel with error message
$c->stash(error => $c->l($ret));
$c->render("createstarterwebsite");
} else {
$c->stash( success => $c->l('csw_PARAMS_panel_action_was_successful')); #A bit bland - edit it in the lex file
}
}
# and call any signal-events needed
# Setup shared data and call panel
$c->stash(
title => $title,
csw_data => \%csw_data
);
if ('none' eq 'none') {
$csw_data{'trt'} = 'PARAMS';
} else {
$csw_data{'trt'} = 'none';
}
$c->render("createstarterwebsite");
}
}
sub do_display {
#
# Return after link clicked in table (this is a get) - route is "/<whatever>d"
# Expects ?trt=PANEL&selected="TableRowName" plus any other required
#
# OR it maybe a post from the main panel to add a new record
#
#load up all supplied params into prefix_data hash
#call get-selected-PANEL() - returns hash of all relevent parameters
#load up returned hash into prefix_data
#render - to called panel
my $c = shift;
$c->app->log->info($c->log_req);
my %csw_data = ();
my $title = $c->l('csw_Create_Starter_Website');
# Accessing all parameters
my %params = $c->req->params->to_hash;
# Get number of parameters
my $num_params = keys %params;
#Tag as Post or Get (ie. create new entry or edit existing one
my $is_new_record = ($c->req->method() eq 'POST');
#Params are available in the hash "params" - copy to the prefix_data hash
while (my ($key, $value) = each %{$c->req->params->to_hash}) {
$csw_data{$key} = $value;
}
# the value of trt will tell you which panel has returned
my $trt = $c->param('trt') || 'PARAMS'; #Indicates where to go now
# Now add in the params from the selected row from the table
my %selectedrow;
if ($trt eq 'PARAMS'){
#Validate form parameters for panel PARAMS
%selectedrow = $c->get_selected_PARAMS($csw_data{'Selected'},$is_new_record);
}
#Copy in the selected row params to the prefix_data hash to pass to the panel
while (my ($key, $value) = each %selectedrow){
$csw_data{$key} = $value;
}
# Where to go now
$csw_data{'trt'} = $trt;
# Data for panel
$c->stash(
title => $title,
csw_data => \%csw_data
);
$c->render("createstarterwebsite");
}
1;

View File

@ -1,5 +1,5 @@
%#
%# Generated by SM2Gen version:0.8 Chameleon version:3.8.1 On Python:3.12.3 ( at 2024-09-12 19:31
%# Generated by SM2Gen version:0.8 Chameleon version:4.5.4 On Python:3.12.3 at 2024-09-13 19:20
%#
<div id="CreateStarterWebsite-PARAMS" class="partial CreateStarterWebsite-PARAMS">
<script>
@ -8,16 +8,16 @@
};
</script>
<h2>
%= l('csw Hello PARAMS');
%= l('csw_Hello_PARAMS');
</h2>
% my $btn = l('APPLY');
% my $btn = l('csw_APPLY');
%= form_for "CreateStarterWebsited" => (method => 'POST') => begin
% param 'trt' => ${prefix}_data->{trt} unless param 'trt';
%= hidden_field 'trt' => ${prefix}_data->{trt}
% param 'trt' => $csw_data->{trt} unless param 'trt';
%= hidden_field 'trt' => $csw_data->{trt}
%# Inputs etc in here.
<h2><%=l('Manage CreateStarterWebsite settings:')%></h2>
<h2><%=l('csw_Manage_CreateStarterWebsite_settings:')%></h2>
<p>
%= l('To create a simple web page for your company, fill
@ -25,7 +25,7 @@
</p>
<p>
%= l('You can leave any field blank if you do not need it.')
%= l('csw_You_can_leave_any_field')
</p>
<p>
@ -38,7 +38,7 @@
</p>
<p>
%= l('Do not use this optionif you have already customized your web site, since it will
%= l('Do not use this option if you have already customized your web site, since it will
overwrite the 'index.htm' file in your web site directory.')
</p>
@ -67,7 +67,7 @@
<span class=label>
%=l('csw_')
</span><span class=data>
% param 'text1' => ${prefix}_data->{text1} unless param 'text1';
% param 'text1' => $csw_data->{text1} unless param 'text1';
%= text_area 'text1', cols=>40, rows=>10
</span><br>
@ -90,7 +90,7 @@
<span class=label>
%=l('csw_')
</span><span class=data>
% param 'text2' => ${prefix}_data->{text2} unless param 'text2';
% param 'text2' => $csw_data->{text2} unless param 'text2';
%= text_area 'text2', cols=>40, rows=>10
</span><br>
@ -101,7 +101,7 @@
</p>
<p>
%= l('Do you wish to proceed?')
%= l('csw_Do_you_wish_to_proceed?')
</p>
%# Probably finally by a submit.

View File

@ -1,6 +1,6 @@
% layout 'default', title => "Sme server 2 - Create Starter Website", share_dir => './';
%#
%# Generated by SM2Gen version:0.8 Chameleon version:3.8.1 On Python:3.12.3 ( at 2024-09-12 19:31
%# Generated by SM2Gen version:0.8 Chameleon version:4.5.4 On Python:3.12.3 at 2024-09-13 19:20
%#
% content_for 'module' => begin
<div id="module" class="module CreateStarterWebsite-panel">
@ -17,22 +17,22 @@
%= $c->render_to_string(inline => stash('modul') );
% }
%if (${prefix}_data->{first}) {
%if ($csw_data->{first}) {
<br><p>
%=$c->render_to_string(inline =>$c->l(${prefix}_data->{first}))
%=$c->render_to_string(inline =>$c->l($csw_data->{first}))
</p>
%} elsif (${prefix}_data->{success}) {
%} elsif ($csw_data->{success}) {
<div class='sme-border'>
<h2> Operation Status Report</h2><p>
%= $c->l(${prefix}_data->{success});
%= $c->l($csw_data->{success});
</p>
</div>
%} elsif (${prefix}_data->{error}) {
%} elsif ($csw_data->{error}) {
<div class='sme-error'>
<h2> Operation Status Report - error</h2><p>
%= $c->l(${prefix}_data->{error});
%= $c->l($csw_data->{error});
</p>
</div>
%}
@ -40,7 +40,7 @@
%#Routing to partials according to trt parameter.
%#This ought to be cascading if/then/elsif, but is easier to just stack the if/then's rather like a case statement'
% if (${prefix}_data->{trt} eq "PARAMS") {
% if ($csw_data->{trt} eq "PARAMS") {
%= include 'partials/_csw_PARAMS'
%}

View File

@ -0,0 +1,8 @@
'csw_APPLY' => 'Apply',
'csw_Do_you_wish_to_proceed?' => 'Do you wish to proceed?',
'csw_PARAMS_panel_action_was_successful' => 'PARAMS panel action was successful',
'csw_Manage_CreateStarterWebsite_settings:' => 'Manage CreateStarterWebsite settings:',
'csw_Hello_PARAMS' => 'Hello PARAMS',
'csw_' => '',
'csw_You_can_leave_any_field' => 'You can leave any field blank if you do not need it. ',
'csw_Create_Starter_Website' => 'Create Starter Website',

View File

@ -0,0 +1,75 @@
#
# Routines to be edited by the developer to provide validation for parameters
# and provison of the control data for table(s)
#
# Generated by SM2Gen version:0.8 Chameleon version:4.5.4 On Python:3.12.3 at 2024-09-13 19:18
#
use esmith::util;
use esmith::HostsDB;
use esmith::AccountsDB;
use esmith::NetworksDB;
use esmith::HostsDB;
use esmith::DomainsDB;
#The most common ones
our $cdb = esmith::ConfigDB->open() || die("Couldn't open config db");
our $adb = esmith::AccountsDB->open() || die("Couldn't open Accounts db");
our $ndb = esmith::NetworksDB->open() || die("Couldn't open Network db");
our $hdb = esmith::HostsDB->open() || die("Couldn't open Hosts db");
our $ddb = esmith::DomainsDB->open() || die("Couldn't open Domains db");
# Validation routines - parameters for each panel
sub validate_PARAMS {
my $c = shift;
my $prefix_data = shift; #Data hash as parameter
my $ret = 'ok';
return $ret;
}
# Get control data for tables(s)
sub get_Table1 {
my $c = shift;
my @ret = {};
return \@ret
}
sub get_Table2 {
my $c = shift;
my @ret = {};
return \@ret
}
# Return hash with values from row in which link clicked on table
sub get_selected_PARAMS {
my $c = shift;
my $selected = shift; #Parameter is name of selected row.
my $is_new_record = shift; #Indicates new record required (defaults)
my %ret = {};
return $ret;
}
#after sucessful modify or create or whatever and submit then perfom (if the params validate)
sub perform_PARAMS {
my $c = shift;
my $prefix_data = shift; #Data hash as parameter
my $ret = 'ok';
return $ret;
}
sub create_link{
# WIP
my ($c,$route, $panel, $index) = shift;
my $link = "$route?trt=$panel&Selected=$index";
return $link;
}
1;

View File

@ -0,0 +1,245 @@
package SrvMngr::Controller::Diskusage;
#
# Generated by version:SM2Gen version:0.8 Chameleon version:4.5.4 On Python:3.12.3 at 2024-09-13 19:18
#
#----------------------------------------------------------------------
# heading : Miscellaneous
# description : Disk Usage
# navigation : 2000 400
#
# name : diskusage, method : get, url : /diskusage, ctlact : Diskusage#main
# name : diskusageu, method : post, url : /diskusageu, ctlact : Diskusage#do_update
# name : diskusaged, method : get, url : /diskusaged, ctlact : Diskusage#do_display
#
# routes : end
#
# Documentation: https://wiki.contribs.org/Diskusage
#----------------------------------------------------------------------
#
# Scheme of things:
#
# TBA!!
use strict;
use warnings;
use Mojo::Base 'Mojolicious::Controller';
use constant FALSE => 0;
use constant TRUE => 1;
use Locale::gettext;
use SrvMngr::I18N;
use SrvMngr qw(theme_list init_session);
use Data::Dumper;
use esmith::util;
use esmith::HostsDB;
use esmith::AccountsDB;
use esmith::NetworksDB;
use esmith::HostsDB;
use esmith::DomainsDB;
#The most common ones
our $cdb = esmith::ConfigDB->open() || die("Couldn't open config db");
our $adb = esmith::AccountsDB->open() || die("Couldn't open Accounts db");
our $ndb = esmith::NetworksDB->open() || die("Couldn't open Network db");
our $hdb = esmith::HostsDB->open() || die("Couldn't open Hosts db");
our $ddb = esmith::DomainsDB->open() || die("Couldn't open Domains db");
require '/usr/share/smanager/lib/SrvMngr/Controller/Diskusage-Custom.pm'; #The code that is to be added by the developer
sub main {
#
# Initial entry - route is "/<whatever>"
#
#set initial panel
#for initial panel:
#Specifiy panel to enter
#load up _data hash with DB fields
#load up stash with pointer(s) to control fields hash(= get-))
#and a pointer to the prefix_data hash
#render initial panel
my $c = shift;
$c->app->log->info( $c->log_req );
my %du_data = ();
my $title = $c->l('du_Disk_Usage');
my $modul = '';
$du_data{'trt'} = 'PARAMS';
#Load any DB entries into the <prefix>_data area so as they are preset in the form
# which DB - this only really works if the initial panel is a PARAMS type panel and not a TABLE
my $db = $cdb; #pickup local or global db or Default to config
# and table control fields
$c->stash(Table1=>$c->get_Table1());
$c->stash(Table2=>$c->get_Table2());
$c->stash(
title => $title,
modul => $modul,
du_data => \%du_data
);
$c->render( template => "diskusage" );
}
# Post request with params - submit from the form
sub do_update {
#
# Return after submit pushed on panel (this is a post) - route is "/<whatever>u"
# parameters in the params hash.
#
#load up all params into prefix_data hash:
#By panel (series of if statements - only one executed):
#call validate-PANEL() - return ret = ok or error message
#if validation not ok:
#render back to current panel with error message in stash
#otherwise:
#By panel (series of if statements - only one executed):
#do whatever is required: call perform-PANEL() - return "ok" or Error Message
#call signal-event for any global actions specified (check it exists - error and continue?)
#if action smeserver-<whatever>-update exists
#signal_event smeserver-<whatever>-update
#call signal-event for any specific actions for thids panel (check it exists first - error and continue)
#set success in stash
#if no "nextpanel" entry:
#set firstpanel
#else
#set nextpanel
#call render
my $c = shift;
$c->app->log->info($c->log_req);
my %du_data = ();
my $title = $c->l('du_Disk_Usage');
# Accessing all POST parameters
my %params = $c->req->params->to_hash;
# Get number of POST parameters
my $num_params = keys %params;
#Params are available in the hash "params" - copy to the prefix_data hash
while (my ($key, $value) = each %{$c->req->params->to_hash}) {
$du_data{$key} = $value;
}
# the value of trt will tell you which panel has returned
my $trt = $c->param('trt') || 'PARAMS'; #hidden control on every form.
my $ret = 'ok';
#Validate the parameters in a custom sub one for each panel (although only one of these will be executed)
my $thispanel;
if ($trt eq 'PARAMS'){
#Validate form parameters for panel PARAMS
$ret = $c->validate_PARAMS(\%du_data);
$thispanel = 'PARAMS';
}
if ($ret ne "ok") {
# return to the panel with error message
$c->stash(error => $c->l($ret));
$c->render("diskusage");
} else {
#Do whatever is needed, including writing values to the DB
if ($trt eq 'PARAMS'){
#do whatever is required ...
$ret = $c->perform_PARAMS(\%du_data);
if ($ret ne "ok") {
# return to the panel with error message
$c->stash(error => $c->l($ret));
$c->render("diskusage");
} else {
$c->stash( success => $c->l('du_PARAMS_panel_action_was_successful')); #A bit bland - edit it in the lex file
}
}
# and call any signal-events needed
# Setup shared data and call panel
$c->stash(
title => $title,
du_data => \%du_data
);
if ('none' eq 'none') {
$du_data{'trt'} = 'PARAMS';
} else {
$du_data{'trt'} = 'none';
}
$c->render("diskusage");
}
}
sub do_display {
#
# Return after link clicked in table (this is a get) - route is "/<whatever>d"
# Expects ?trt=PANEL&selected="TableRowName" plus any other required
#
# OR it maybe a post from the main panel to add a new record
#
#load up all supplied params into prefix_data hash
#call get-selected-PANEL() - returns hash of all relevent parameters
#load up returned hash into prefix_data
#render - to called panel
my $c = shift;
$c->app->log->info($c->log_req);
my %du_data = ();
my $title = $c->l('du_Disk_Usage');
# Accessing all parameters
my %params = $c->req->params->to_hash;
# Get number of parameters
my $num_params = keys %params;
#Tag as Post or Get (ie. create new entry or edit existing one
my $is_new_record = ($c->req->method() eq 'POST');
#Params are available in the hash "params" - copy to the prefix_data hash
while (my ($key, $value) = each %{$c->req->params->to_hash}) {
$du_data{$key} = $value;
}
# the value of trt will tell you which panel has returned
my $trt = $c->param('trt') || 'PARAMS'; #Indicates where to go now
# Now add in the params from the selected row from the table
my %selectedrow;
if ($trt eq 'PARAMS'){
#Validate form parameters for panel PARAMS
%selectedrow = $c->get_selected_PARAMS($du_data{'Selected'},$is_new_record);
}
#Copy in the selected row params to the prefix_data hash to pass to the panel
while (my ($key, $value) = each %selectedrow){
$du_data{$key} = $value;
}
# Where to go now
$du_data{'trt'} = $trt;
# Data for panel
$c->stash(
title => $title,
du_data => \%du_data
);
$c->render("diskusage");
}
1;

View File

@ -1,5 +1,5 @@
%#
%# Generated by SM2Gen version:0.8 Chameleon version:3.8.1 On Python:3.12.3 at 2024-09-13 15:33
%# Generated by SM2Gen version:0.8 Chameleon version:4.5.4 On Python:3.12.3 at 2024-09-13 19:18
%#
<div id="Diskusage-PARAMS" class="partial Diskusage-PARAMS">
<script>
@ -8,23 +8,23 @@
};
</script>
<h2>
%= l('du Hello PARAMS');
%= l('du_Hello_PARAMS');
</h2>
% my $btn = l('APPLY');
% my $btn = l('du_APPLY');
%= form_for "Diskusaged" => (method => 'POST') => begin
% param 'trt' => ${prefix}_data->{trt} unless param 'trt';
%= hidden_field 'trt' => ${prefix}_data->{trt}
% param 'trt' => $du_data->{trt} unless param 'trt';
%= hidden_field 'trt' => $du_data->{trt}
%# Inputs etc in here.
<h2><%=l('Manage DiskUsage settings:')%></h2>
<h2><%=l('du_Manage_DiskUsage_settings:')%></h2>
<p>
%= l('&amp;nbsp')
%= l('du_&amp;nbsp')
</p>
<p>
%= l('Wed Sep 11 19:01:00 BST 2024')
%= l('du_Wed_Sep_11_19:01:00_BST')
</p>
<pre>
@ -41,18 +41,18 @@ tmpfs 2.0G 648K 2.0G 1% /run
<br /><table class="sme-border TableSort sme-table">
<thead>
<tr table-head-row>
<th class='sme-border table-head-col table-head-col-I-bays '><%=l('I-bays')%></th>
<th class='sme-border table-head-col table-head-col-Usage '><%=l('Usage')%></th>
<th class='sme-border table-head-col table-head-col-Path '><%=l('Path')%></th>
<th class='sme-border table-head-col table-head-col-I-bays '><%=l('du_I-bays')%></th>
<th class='sme-border table-head-col table-head-col-Usage '><%=l('du_Usage')%></th>
<th class='sme-border table-head-col table-head-col-Path '><%=l('du_Path')%></th>
</tr>
</thead>
<tbody>
% my $control_data = $self->stash('Table1');
% foreach my $row (@$control_data) {
<tr class='table-row'>
<td class='sme-border table-col table-col-Table1-I-bays'><%=$c->render_to_string(inline=>$row->{Table1-I-bays})%></td>
<td class='sme-border table-col table-col-Table1-Usage'><%=$c->render_to_string(inline=>$row->{Table1-Usage})%></td>
<td class='sme-border table-col table-col-Table1-Path'><%=$c->render_to_string(inline=>$row->{Table1-Path})%></td>
<td class='sme-border table-col table-col-Table1-I-bays'><%=$c->render_to_string(inline=>$row->{'Table1-I-bays'})%></td>
<td class='sme-border table-col table-col-Table1-Usage'><%=$c->render_to_string(inline=>$row->{'Table1-Usage'})%></td>
<td class='sme-border table-col table-col-Table1-Path'><%=$c->render_to_string(inline=>$row->{'Table1-Path'})%></td>
</tr>
%}
</tbody>
@ -60,15 +60,15 @@ tmpfs 2.0G 648K 2.0G 1% /run
<p>
%= l('&amp;nbsp')
%= l('du_&amp;nbsp')
</p>
<br /><table class="sme-border TableSort sme-table">
<thead>
<tr table-head-row>
<th class='sme-border table-head-col table-head-col-Users '><%=l('Users')%></th>
<th class='sme-border table-head-col table-head-col-Usage '><%=l('Usage')%></th>
<th class='sme-border table-head-col table-head-col-Path '><%=l('Path')%></th>
<th class='sme-border table-head-col table-head-col-Users '><%=l('du_Users')%></th>
<th class='sme-border table-head-col table-head-col-Usage '><%=l('du_Usage')%></th>
<th class='sme-border table-head-col table-head-col-Path '><%=l('du_Path')%></th>
</tr>
</thead>
<tbody>

View File

@ -1,6 +1,6 @@
% layout 'default', title => "Sme server 2 - Disk Usage", share_dir => './';
%#
%# Generated by SM2Gen version:0.8 Chameleon version:3.8.1 On Python:3.12.3 at 2024-09-13 15:33
%# Generated by SM2Gen version:0.8 Chameleon version:4.5.4 On Python:3.12.3 at 2024-09-13 19:18
%#
% content_for 'module' => begin
<div id="module" class="module Diskusage-panel">
@ -17,22 +17,22 @@
%= $c->render_to_string(inline => stash('modul') );
% }
%if (${prefix}_data->{first}) {
%if ($du_data->{first}) {
<br><p>
%=$c->render_to_string(inline =>$c->l(${prefix}_data->{first}))
%=$c->render_to_string(inline =>$c->l($du_data->{first}))
</p>
%} elsif (${prefix}_data->{success}) {
%} elsif ($du_data->{success}) {
<div class='sme-border'>
<h2> Operation Status Report</h2><p>
%= $c->l(${prefix}_data->{success});
%= $c->l($du_data->{success});
</p>
</div>
%} elsif (${prefix}_data->{error}) {
%} elsif ($du_data->{error}) {
<div class='sme-error'>
<h2> Operation Status Report - error</h2><p>
%= $c->l(${prefix}_data->{error});
%= $c->l($du_data->{error});
</p>
</div>
%}
@ -40,7 +40,7 @@
%#Routing to partials according to trt parameter.
%#This ought to be cascading if/then/elsif, but is easier to just stack the if/then's rather like a case statement'
% if (${prefix}_data->{trt} eq "PARAMS") {
% if ($du_data->{trt} eq "PARAMS") {
%= include 'partials/_du_PARAMS'
%}

View File

@ -0,0 +1,11 @@
'du_APPLY' => "Приложи",
'du_Usage' => "Употреба",
'du_Path' => "Път",
'du_Wed_Sep_11_19:01:00_BST' => "Сряда, 11 септември 19:01:00 BST 2024",
'du_PARAMS_panel_action_was_successful' => "Панелът PARAMS беше успешен",
'du_&amp;nbsp' => "~~~&nbsp~~~",
'du_Manage_DiskUsage_settings:' => "Управление на настройките за използване на диска:",
'du_Disk_Usage' => "Дисково използване",
'du_Hello_PARAMS' => "~~~Здравейте PARAMS~~~",
'du_I-bays' => "I-бейове",
'du_Users' => "~~~Потребители~~~",

View File

@ -0,0 +1,11 @@
'du_APPLY' => "Anwenden",
'du_Usage' => "~~~Verwendung~~~",
'du_Path' => "Pfad",
'du_Wed_Sep_11_19:01:00_BST' => "~~~Mi Sep 11 19:01:00 BST 2024~~~",
'du_PARAMS_panel_action_was_successful' => "Die PARAMS-Panel-Aktion war erfolgreich",
'du_&amp;nbsp' => "~~~&nbsp~~~",
'du_Manage_DiskUsage_settings:' => "Festplattennutzungs-Einstellungen verwalten:",
'du_Disk_Usage' => "~~~Festplattennutzung~~~",
'du_Hello_PARAMS' => "~~~Hallo PARAMS~~~",
'du_I-bays' => "I-Bays",
'du_Users' => "Benutzer",

View File

@ -0,0 +1,11 @@
'du_APPLY' => "Anvend",
'du_Usage' => "Brug",
'du_Path' => "Sti",
'du_Wed_Sep_11_19:01:00_BST' => "Ons d. 11. sep 2024 19:01:00 BST",
'du_PARAMS_panel_action_was_successful' => "~~~PARAMS-panelets handling var vellykket~~~",
'du_&amp;nbsp' => "~~~&nbsp~~~",
'du_Manage_DiskUsage_settings:' => "Administrer indstillinger for diskforbrug:",
'du_Disk_Usage' => "Diskforbrug",
'du_Hello_PARAMS' => "Hej PARAMS",
'du_I-bays' => "I-bays",
'du_Users' => "Brugere",

View File

@ -0,0 +1,11 @@
'du_APPLY' => "Εφαρμογή",
'du_Usage' => "Χρήση",
'du_Path' => "Διαδρομή",
'du_Wed_Sep_11_19:01:00_BST' => "~~~Τετ 11 Σεπ 19:01:00 EET 2024~~~",
'du_PARAMS_panel_action_was_successful' => "Η ενέργεια του πίνακα PARAMS ήταν επιτυχής",
'du_&amp;nbsp' => "~~~&nbsp~~~",
'du_Manage_DiskUsage_settings:' => "Διαχείριση ρυθμίσεων Χρήσης Δίσκου:",
'du_Disk_Usage' => "Χρήση Δίσκου",
'du_Hello_PARAMS' => "Γειά σου PARAMS",
'du_I-bays' => "Κόλποι I",
'du_Users' => "Χρήστες",

View File

@ -0,0 +1,11 @@
'du_APPLY' => 'Apply',
'du_Usage' => 'Usage',
'du_Path' => 'Path',
'du_Wed_Sep_11_19:01:00_BST' => 'Wed Sep 11 19:01:00 BST 2024',
'du_PARAMS_panel_action_was_successful' => 'PARAMS panel action was successful',
'du_&amp;nbsp' => '&amp;nbsp',
'du_Manage_DiskUsage_settings:' => 'Manage DiskUsage settings:',
'du_Disk_Usage' => 'Disk Usage',
'du_Hello_PARAMS' => 'Hello PARAMS',
'du_I-bays' => 'I-bays',
'du_Users' => 'Users',

View File

@ -0,0 +1,11 @@
'du_APPLY' => "Aplicar",
'du_Usage' => "Uso",
'du_Path' => "Ruta",
'du_Wed_Sep_11_19:01:00_BST' => "Mié Sep 11 19:01:00 BST 2024",
'du_PARAMS_panel_action_was_successful' => "La acción del panel PARAMS fue exitosa",
'du_&amp;nbsp' => "~~~&nbsp~~~",
'du_Manage_DiskUsage_settings:' => "Administrar configuraciones de uso de disco:",
'du_Disk_Usage' => "Uso de Disco",
'du_Hello_PARAMS' => "Hola PARAMS",
'du_I-bays' => "I-bays",
'du_Users' => "Usuarios",

View File

@ -0,0 +1,11 @@
'du_APPLY' => "Rakenda",
'du_Usage' => "Kasutus",
'du_Path' => "Tee",
'du_Wed_Sep_11_19:01:00_BST' => "Kolm, 11. september 2024, 19:01:00 BST",
'du_PARAMS_panel_action_was_successful' => "PARAMS paneeli toiming oli edukas",
'du_&amp;nbsp' => "~~~&nbsp~~~",
'du_Manage_DiskUsage_settings:' => "Halda kettakasutuse seadeid:",
'du_Disk_Usage' => "Kettakasutus",
'du_Hello_PARAMS' => "Tere PARAMS",
'du_I-bays' => "I-lahed",
'du_Users' => "Kasutajad",

View File

@ -0,0 +1,11 @@
'du_APPLY' => "Appliquer",
'du_Usage' => "Utilisation",
'du_Path' => "Chemin",
'du_Wed_Sep_11_19:01:00_BST' => "Mer 11 Sep 19:01:00 BST 2024",
'du_PARAMS_panel_action_was_successful' => "L\'action du panneau PARAMS a été réussie",
'du_&amp;nbsp' => "&nbsp",
'du_Manage_DiskUsage_settings:' => "Gérer les paramètres d\'utilisation du disque :",
'du_Disk_Usage' => "Utilisation du disque",
'du_Hello_PARAMS' => "~~~Bonjour PARAMÈTRES~~~",
'du_I-bays' => "Baies I",
'du_Users' => "Utilisateurs",

View File

@ -0,0 +1,11 @@
'du_APPLY' => "Alkalmazás",
'du_Usage' => "Használat",
'du_Path' => "Útvonal",
'du_Wed_Sep_11_19:01:00_BST' => "2024. szeptember 11., szerda, 19:01:00 BST",
'du_PARAMS_panel_action_was_successful' => "~~~PARAMS panel művelet sikeres volt~~~",
'du_&amp;nbsp' => "~~~&nbsp~~~",
'du_Manage_DiskUsage_settings:' => "Lemezhasználati beállítások kezelése:",
'du_Disk_Usage' => "Lemezhasználat",
'du_Hello_PARAMS' => "~~~Helló PARAMS~~~",
'du_I-bays' => "I-bayok",
'du_Users' => "Felhasználók",

View File

@ -0,0 +1,11 @@
'du_APPLY' => "Terapkan",
'du_Usage' => "Penggunaan",
'du_Path' => "Jalur",
'du_Wed_Sep_11_19:01:00_BST' => "~~~Rab 11 Sep 19:01:00 WIB 2024~~~",
'du_PARAMS_panel_action_was_successful' => "Panel PARAMS berhasil dijalankan",
'du_&amp;nbsp' => "~~~&nbsp~~~",
'du_Manage_DiskUsage_settings:' => "Kelola pengaturan Penggunaan Disk:",
'du_Disk_Usage' => "Penggunaan Disk",
'du_Hello_PARAMS' => "~~~Halo PARAMS~~~",
'du_I-bays' => "I-bays",
'du_Users' => "Pengguna",

View File

@ -0,0 +1,11 @@
'du_APPLY' => "החל",
'du_Usage' => "שימוש",
'du_Path' => "נתיב",
'du_Wed_Sep_11_19:01:00_BST' => "~~~ד׳ ספטמבר 11 19:01:00 שעון קיץ בריטי 2024~~~",
'du_PARAMS_panel_action_was_successful' => "פעולת לוח PARAMS הצליחה",
'du_&amp;nbsp' => "&nbsp",
'du_Manage_DiskUsage_settings:' => "נהל הגדרות שימוש בדיסק:",
'du_Disk_Usage' => "שימוש בדיסק",
'du_Hello_PARAMS' => "שלום PARAMS",
'du_I-bays' => "מפרצים",
'du_Users' => "משתמשים",

View File

@ -0,0 +1,11 @@
'du_APPLY' => "Applica",
'du_Usage' => "Utilizzo",
'du_Path' => "Percorso",
'du_Wed_Sep_11_19:01:00_BST' => "Mer 11 Set 19:01:00 BST 2024",
'du_PARAMS_panel_action_was_successful' => "L\'azione del pannello PARAMS è stata completata con successo",
'du_&amp;nbsp' => "&nbsp",
'du_Manage_DiskUsage_settings:' => "Gestisci impostazioni di utilizzo del disco:",
'du_Disk_Usage' => "Utilizzo del Disco",
'du_Hello_PARAMS' => "Ciao PARAMS",
'du_I-bays' => "I-bay",
'du_Users' => "Utenti",

View File

@ -0,0 +1,11 @@
'du_APPLY' => "適用",
'du_Usage' => "使用",
'du_Path' => "パス",
'du_Wed_Sep_11_19:01:00_BST' => "2024年9月11日(水) 19:01:00 BST",
'du_PARAMS_panel_action_was_successful' => "~~~PARAMSパネルの操作が成功しました~~~",
'du_&amp;nbsp' => "&nbsp",
'du_Manage_DiskUsage_settings:' => "ディスク使用量設定の管理:",
'du_Disk_Usage' => "ディスク使用量",
'du_Hello_PARAMS' => "こんにちは PARAMS",
'du_I-bays' => "I-bays",
'du_Users' => "ユーザー",

View File

@ -1,5 +1,5 @@
%#
%# Generated by SM2Gen version:0.8 Chameleon version:3.8.1 On Python:3.12.3 ( at 2024-09-12 19:29
%# Generated by SM2Gen version:0.8 Chameleon version:3.8.1 On Python:3.12.3 at 2024-09-13 18:38
%#
<div id="Nfsshare-PARAMS" class="partial Nfsshare-PARAMS">
<script>

View File

@ -1,5 +1,5 @@
%#
%# Generated by SM2Gen version:0.8 Chameleon version:3.8.1 On Python:3.12.3 ( at 2024-09-12 19:29
%# Generated by SM2Gen version:0.8 Chameleon version:3.8.1 On Python:3.12.3 at 2024-09-13 18:38
%#
<div id="Nfsshare-TABLE" class="partial Nfsshare-TABLE">
<script>

View File

@ -0,0 +1,139 @@
%#
%# Generated by SM2Gen version:0.8 Chameleon version:3.8.1 On Python:3.12.3 at 2024-09-14 05:33
%#
<div id="Nfsshare-PARAMS" class="partial Nfsshare-PARAMS">
<script>
window.onload = function() {
SelectInput();
};
</script>
<h2>
%= l('nfs_Hello_PARAMS');
</h2>
% my $btn = l('nfs_APPLY');
%= form_for "Nfsshared" => (method => 'POST') => begin
% param 'trt' => ${prefix}_data->{trt} unless param 'trt';
%= hidden_field 'trt' => ${prefix}_data->{trt}
%# Inputs etc in here.
<h2><%=l('nfs_Manage_NFS_Ibay_settings:')%></h2>
<p>
%= l('nfs_These_parameters_will_be_effective')
</p>
<p><span class=label>
%=l('nfs_Information_Bay_name')
</span><span class=data>
%= stash("IbayName")
</span></p>
<p><span class=label>
%=l('nfs_Share_owner_Group')
</span><span class=data>
% my @ShareOwnerGrp_options = ['Write = admin, Read = group', 'Write = group, Read = everyone', 'Write = group, Read = group'];
% param 'ShareOwnerGrp' => ${prefix}_data->{ShareOwnerGrp} unless param 'ShareOwnerGrp';
%= select_field 'ShareOwnerGrp' => @ShareOwnerGrp_options, class => 'input'
<br></span> </p>
<p><span class=label>
%=l('nfs_Enable_the_NFS_Share')
</span><span class=data>
% my @EnableNFSshare_options = ['Disabled', 'Enabled'];
% param 'EnableNFSshare' => ${prefix}_data->{EnableNFSshare} unless param 'EnableNFSshare';
%= select_field 'EnableNFSshare' => @EnableNFSshare_options, class => 'input'
<br></span> </p>
<p><span class=label>
%=l('nfs_EnableShare_on_local_network')
</span><span class=data>
% my @ShareOnLocalNetwork_options = ['Disabled', 'Enabled'];
% param 'ShareOnLocalNetwork' => ${prefix}_data->{ShareOnLocalNetwork} unless param 'ShareOnLocalNetwork';
%= select_field 'ShareOnLocalNetwork' => @ShareOnLocalNetwork_options, class => 'input'
<br></span> </p>
<p>
%= l('nfs_For_writing_permissions,allowing_the_root')
</p>
<span class=label>
%=l('nfs_NFS_Client(s)_allowed')
</span><span class=data>
% param 'NFSClientsAllowed' => ${prefix}_data->{NFSClientsAllowed} unless param 'NFSClientsAllowed';
%= text_area 'NFSClientsAllowed', cols=>40, rows=>5
</span><br>
<p><span class=label>
%=l('nfs_File_system_permissions')
</span><span class=data>
% my @FileSystemPermissions_options = ['Read only', 'Read and Write'];
% param 'FileSystemPermissions' => ${prefix}_data->{FileSystemPermissions} unless param 'FileSystemPermissions';
%= select_field 'FileSystemPermissions' => @FileSystemPermissions_options, class => 'input'
<br></span> </p>
<p><span class=label>
%=l('nfs_Write_(a)synchronously')
</span><span class=data>
% my @WriteAsync_options = ['Synchronous', 'Asynchronous'];
% param 'WriteAsync' => ${prefix}_data->{WriteAsync} unless param 'WriteAsync';
%= select_field 'WriteAsync' => @WriteAsync_options, class => 'input'
<br></span> </p>
<p><span class=label>
%=l('nfs_Delays_the_disk_writing')
</span><span class=data>
% my @DelayWrite_options = ['Write delay', 'No write delay'];
% param 'DelayWrite' => ${prefix}_data->{DelayWrite} unless param 'DelayWrite';
%= select_field 'DelayWrite' => @DelayWrite_options, class => 'input'
<br></span> </p>
<p><span class=label>
%=l('nfs_Squash_the_power_of_users')
</span><span class=data>
% my @Squash_options = ['All users squash', 'No root squash', 'root squash'];
% param 'Squash' => ${prefix}_data->{Squash} unless param 'Squash';
%= select_field 'Squash' => @Squash_options, class => 'input'
<br></span> </p>
<p><span class=label>
%=l('nfs_Browse_the_parent_folders')
</span><span class=data>
% my @BrowseParents_options = ['Hide folder', 'Show folder'];
% param 'BrowseParents' => ${prefix}_data->{BrowseParents} unless param 'BrowseParents';
%= select_field 'BrowseParents' => @BrowseParents_options, class => 'input'
<br></span> </p>
<p><span class=label>
%=l('nfs_Requests_on_secure_ports')
</span><span class=data>
% my @SecurePorts_options = ['Secure', 'Insecure'];
% param 'SecurePorts' => ${prefix}_data->{SecurePorts} unless param 'SecurePorts';
%= select_field 'SecurePorts' => @SecurePorts_options, class => 'input'
<br></span> </p>
<p>
%= l('nfs_Set_the_uid_and_gid')
</p>
<p><span class=label>
%=l('nfs_Set_the_UID.')
</span><span class=data>
% param 'SetUID' => ${prefix}_data->{SetUID} unless param 'SetUID';
%= text_field 'SetUID', size => '50', class => 'input' , pattern=>'.*' , placeholder=>'SetUID'
<br></span></p>
<p><span class=label>
%=l('nfs_Set_the_GID.')
</span><span class=data>
% param 'SetGID' => ${prefix}_data->{SetGID} unless param 'SetGID';
%= text_field 'SetGID', size => '50', class => 'input' , pattern=>'.*' , placeholder=>'SetGID'
<br></span></p>
<span class='data'>
%= submit_button l('nfs_Save'), class => 'action'
</span>
%# Probably finally by a submit.
%end
</div>

View File

@ -0,0 +1,47 @@
%#
%# Generated by SM2Gen version:0.8 Chameleon version:3.8.1 On Python:3.12.3 at 2024-09-14 05:33
%#
<div id="Nfsshare-TABLE" class="partial Nfsshare-TABLE">
<script>
window.onload = function() {
SelectInput();
};
</script>
<h2>
%= l('nfs_Hello_TABLE');
</h2>
% my $btn = l('nfs_APPLY');
%= form_for "Nfsshared" => (method => 'POST') => begin
% param 'trt' => ${prefix}_data->{trt} unless param 'trt';
%= hidden_field 'trt' => ${prefix}_data->{trt}
%# Inputs etc in here.
<h2><%=l('nfs_Manage_NFS_Ibay_settings:')%></h2>
<br /><table class="sme-border TableSort sme-table">
<thead>
<tr table-head-row>
<th class='sme-border table-head-col table-head-col-Name '><%=l('nfs_Name')%></th>
<th class='sme-border table-head-col table-head-col-Description '><%=l('nfs_Description')%></th>
<th class='sme-border table-head-col table-head-col-Nfs status '><%=l('Nfs_status')%></th>
<th class='sme-border table-head-col table-head-col-Action '><%=l('nfs_Action')%></th>
</tr>
</thead>
<tbody>
% my $control_data = $self->stash('ibays');
% foreach my $row (@$control_data) {
<tr class='table-row'>
<td class='sme-border table-col table-col-Name'><%=$c->render_to_string(inline=>$row->{Name})%></td>
<td class='sme-border table-col table-col-Description'><%=$c->render_to_string(inline=>$row->{Description})%></td>
<td class='sme-border table-col table-col-flag'><%=$c->render_to_string(inline=>$row->{flag})%></td>
<td class='sme-border table-col table-col-Modify'><%=$c->render_to_string(inline=>$row->{Modify})%></td>
</tr>
%}
</tbody>
</table>
%# Probably finally by a submit.
%end
</div>

View File

@ -1,6 +1,6 @@
% layout 'default', title => "Sme server 2 - NFS data share", share_dir => './';
%#
%# Generated by SM2Gen version:0.8 Chameleon version:3.8.1 On Python:3.12.3 ( at 2024-09-12 19:29
%# Generated by SM2Gen version:0.8 Chameleon version:3.8.1 On Python:3.12.3 at 2024-09-14 05:33
%#
% content_for 'module' => begin
<div id="module" class="module Nfsshare-panel">

View File

@ -1,28 +1,28 @@
'nfs_Squash_the_power_of_users' => 'Squash the power of users',
'nfs_Hello_TABLE' => 'Hello TABLE',
'nfs_Write_(a)synchronously' => 'Write (a)synchronously',
'nfs_TABLE_panel_action_was_successful' => 'TABLE panel action was successful',
'nfs_Hello_PARAMS' => 'Hello PARAMS',
'nfs_Save' => 'Save',
'nfs_For_writing_permissions,allowing_the_root' => 'For writing permissions, Allowing the root user and using insecure ports, You must configure a list of one IP per line, Being part of the local network(s). ',
'nfs_Enable_the_NFS_Share' => 'Enable the NFS Share',
'nfs_Action' => 'Action',
'nfs_EnableShare_on_local_network' => 'Enableshare on local network',
'nfs_Browse_the_parent_folders' => 'Browse the parent folders',
'Nfs_status' => 'Status',
'nfs_Manage_NFS_Ibay_settings:' => 'Manage NFS Ibay settings:',
'nfs_Set_the_uid_and_gid' => 'Set the uid and gid if you want all requests appear to be from one user or one group, Otherwise leave blank',
'nfs_Set_the_GID.' => 'Set the GID. ',
'nfs_File_system_permissions' => 'File system permissions',
'nfs_Share_owner_Group' => 'Share owner Group',
'nfs_These_parameters_will_be_effective' => 'These parameters will be effective only if the share is enabled. The share is in /home/e-smith/files/ibays//files',
'nfs_Name' => 'Name',
'nfs_NFS_Client(s)_allowed' => 'NFS Client(s) allowed',
'nfs_Requests_on_secure_ports' => 'Requests on secure ports',
'nfs_APPLY' => 'Apply',
'nfs_Delays_the_disk_writing' => 'Delays the disk writing',
'nfs_Information_Bay_name' => 'Information Bay name',
'nfs_Description' => 'Description',
'nfs_NFS_data_share' => 'NFS data share',
'nfs_Manage_NFS_Ibay_settings:' => 'Manage NFS Ibay settings:',
'nfs_PARAMS_panel_action_was_successful' => 'PARAMS panel action was successful',
'nfs_Set_the_uid_and_gid' => 'Set the uid and gid if you want all requests appear to be from one user or one group, Otherwise leave blank',
'nfs_Action' => 'Action',
'nfs_Hello_PARAMS' => 'Hello PARAMS',
'nfs_Save' => 'Save',
'nfs_Squash_the_power_of_users' => 'Squash the power of users',
'nfs_Set_the_UID.' => 'Set the UID. ',
'nfs_PARAMS_panel_action_was_successful' => 'PARAMS panel action was successful',
'nfs_TABLE_panel_action_was_successful' => 'TABLE panel action was successful',
'nfs_APPLY' => 'Apply',
'nfs_Enable_the_NFS_Share' => 'Enable the NFS Share',
'nfs_Name' => 'Name',
'nfs_EnableShare_on_local_network' => 'Enableshare on local network',
'nfs_These_parameters_will_be_effective' => 'These parameters will be effective only if the share is enabled. The share is in /home/e-smith/files/ibays//files',
'nfs_Share_owner_Group' => 'Share owner Group',
'nfs_Browse_the_parent_folders' => 'Browse the parent folders',
'nfs_NFS_Client(s)_allowed' => 'NFS Client(s) allowed',
'Nfs_status' => 'Status',
'nfs_Information_Bay_name' => 'Information Bay name',
'nfs_Requests_on_secure_ports' => 'Requests on secure ports',
'nfs_NFS_data_share' => 'NFS data share',
'nfs_Delays_the_disk_writing' => 'Delays the disk writing',
'nfs_Hello_TABLE' => 'Hello TABLE',
'nfs_For_writing_permissions,allowing_the_root' => 'For writing permissions, Allowing the root user and using insecure ports, You must configure a list of one IP per line, Being part of the local network(s). ',
'nfs_Description' => 'Description',
'nfs_Write_(a)synchronously' => 'Write (a)synchronously',

View File

@ -244,19 +244,3 @@ sub do_display {
$c->render("${lcPackageName}");
}
1;

View File

@ -66,9 +66,4 @@ sub create_link{
my $link = "$route?trt=$panel&Selected=$index";
return $link;
}
1;

View File

@ -110,7 +110,7 @@
% my $control_data = $self->stash('${TableControl}');
% foreach my $row (@$control_data) {
<tr class='table-row'><tal:block tal:repeat="ColContent Columns">
<td class='sme-border table-col table-col-${ColContent}'><%=$c->render_to_string(inline=>$row->{${ColContent}})%></td></tal:block>
<td class='sme-border table-col table-col-${ColContent}'><%=$c->render_to_string(inline=>$row->{'${ColContent}'})%></td></tal:block>
</tr>
%}
</tbody>

View File

@ -1,52 +0,0 @@
* Scheme of things:
main:
#
# Initial entry - route is "/<whatever>"
#
set initial panel
for initial panel:
load up _data hash with DB fields
load up stash with pointer(s) to control fields hash(= get-))
and a pointer to the prefix_data hash
render initial panel
do_update:
#
# Return after submit pushed on panel (this is a post) - route is "/<whatever>u"
# parameters in the params hash.
#
load up all params into prefix_data hash:
By panel (series of if statements - only one executed):
call validate-PANEL() - return ret = ok or error message
if validation not ok:
render back to current panel with error message in stash
otherwise:
By panel (series of if statements - only one executed):
Copy back to DB all relevant params (is this just the DB params for this panel?)
do whatever is required: call perform-PANEL() - return "ok" or Error Message
call signal-event for any global actions specified (check it exists - error and continue?)
if action smeserver-<whatever>-update exists
signal_event smeserver-<whatever>-update
call signal-event for any specific actions for thids panel (check it exists first - error and continue)
set success in stash
if no "nextpanel" entry:
set firstpanel
else
set nextpanel
call render
do_display:
#
# Return after link clicked in table (this is a get) - route is "/<whatever>d"
# Expects ?trt=PANEL&selected="TableRowName" plus any other required
#
load up all supplied params into prefix_data hash
call get-selected-PANEL() - returns hash of all relevent parameters
load up returned hash into prefix_data
render - to called panel

View File

@ -1,102 +0,0 @@
<!DOCTYPE html
PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>SME Server sme11.thereadclan.me.uk</title>
<link rev="made" href="mailto:bugs%40koozali.org">
<meta name="copyright" content="(head.tmpl)Copyright 2003-2004 Mitel Corporation">
<link rel="stylesheet" type="text/css" href="/server-common/css/sme_core.css">
<style type="text/css">
@import url("/server-common/css/sme_main.css");
</style>
</head>
<body>
<div class="sme-error"><h5>
Warning: a reconfigure and reboot is required before proceeding! Failure to do so now
may leave your system in an unknown state!</h5></div><div class="sme-error"><h5>
URGENT NOTICE: As per June 30th 2024, SME Server 10 is obsolete, and potentially INSECURE. NO support will be offered for any issue found with this installed version.
Please migrate IMMEDIATELY to Koozali SME Server 11 or higher version. Failure to upgrade may lead to the compromise of this server.
</br>Please, consult <a href="https://wiki.koozali.org/SME_Server:Download" target="_blank">https://wiki.koozali.org/SME_Server:Download</a> to get last available version.</h5></div>
<h1>Create a starter website</h1>
<form method="POST" action="starterwebsite" enctype="application/x-www-form-urlencoded">
<input type="hidden" name="page" value="0">
<input type="hidden" name="page_stack" value="">
<input type=hidden name=".id" value="53ee9f713d94b5ba86a563429440d21e">
<input type="hidden" name="csrf_token" value="iEskwobsBAfGQ8A05yW8QPL7guJPZVEylHcHb4RlmkB">
<table class="sme-noborders">
<tr><td colspan="2"><p><p>
To create a simple web page for your company, fill
in the fields below and click on <b>Create</b>.
</p>
<p>
You can leave any field blank if you do not need it.
</p>
<p>
The text that you enter below will be line wrapped
for a nicer appearance in your web page. Leave a blank line
whenever you want to start a new paragraph. If you need
to force a line break without starting a new paragraph (for
example after each line of a mailing address), then type
the four-character sequence
<blockquote>&lt;BR&gt;</blockquote>
where you would like each line break.
</p>
<p>
<em>Do not use this option</em>
if you have already customized your web site, since it will
overwrite the "index.htm" file in your web site directory.
</p></p></td>
</tr>
<tr>
<td class="sme-noborders-label">Company name
<td class="sme-noborders-content"><INPUT TYPE="text" SIZE="48" VALUE="" NAME="companyName"></td>
</tr>
<tr>
<td colspan="2"><p>First header, typically used for short phrases such
as "Leader in the field of textile manufacturing"</p></td>
</tr> <tr>
<td class="sme-noborders-label">
<td class="sme-noborders-content"><INPUT TYPE="text" NAME="header1" SIZE="48" VALUE=""></td>
</tr>
<tr>
<td colspan="2"><p>Text following first header, typically used for a
paragraph of marketing information.</p></td>
</tr> <tr>
<td class="sme-noborders-label">
<td class="sme-noborders-content"><TEXTAREA COLS="60" ROWS="5" NAME="text1"></TEXTAREA></td>
</tr>
<tr>
<td colspan="2"><p>Second header, typically used for short phrases such
as "For more information" or "To order our products":</p></td>
</tr> <tr>
<td class="sme-noborders-label">
<td class="sme-noborders-content"><INPUT TYPE="text" NAME="header2" VALUE="" SIZE="48"></td>
</tr>
<tr>
<td colspan="2"><p>Text following second header, typically used for contact
or ordering information:</p></td>
</tr> <tr>
<td class="sme-noborders-label">
<td class="sme-noborders-content"><TEXTAREA ROWS="5" NAME="text2" COLS="60"></TEXTAREA></td>
</tr>
<tr><td colspan=2><p>When you create this web page, the file
"index.htm" will be overwritten
in your web site directory.</p>
<p>Do you wish to proceed?</p></td></tr> </table>
<table width=100%><tr><th class="sme-layout"><input type="submit" name="Next" value="Create"></th></tr></table>
</table>
</form>
<HR class="sme-copyrightbar">
<FONT class="sme-copyright">
SME Server 11.0.0<BR>Copyright 1999-2006 Mitel Corporation<BR>All rights reserved.
<BR>Copyright (c) 2013 - 2021 Koozali Foundation Inc.<BR>
</FONT>
</BODY>
</HTML>

View File

@ -1,93 +0,0 @@
<!DOCTYPE html
PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>SME Server sme10.thereadclan.me.uk</title>
<link rev="made" href="mailto:bugs%40koozali.org">
<meta name="copyright" content="(head.tmpl)Copyright 2003-2004 Mitel Corporation">
<link rel="stylesheet" type="text/css" href="/server-common/css/sme_core.css">
<style type="text/css">
@import url("/server-common/css/sme_main.css");
</style>
</head>
<body>
<h1>Disk usage</h1>
<form method="POST" action="diskusage" enctype="application/x-www-form-urlencoded">
<input type="hidden" name="page" value="0">
<input type="hidden" name="page_stack" value="">
<input type=hidden name=".id" value="65306129a4e734ea46f31f7f8630a65d">
<input type="hidden" name="csrf_token" value="QbCmcx81coESLmdiNA5k9GiTKg2k7sJQLiY00BxtwXS">
<table class="sme-noborders">
<p>&nbsp
</p>
<p>Wed Sep 11 19:01:00 BST 2024
</p>
<p><pre>Filesystem Size Used Avail Use% Mounted on
/dev/mapper/main-root 29G 4.8G 24G 17% /
devtmpfs 2.0G 0 2.0G 0% /dev
tmpfs 2.0G 12K 2.0G 1% /dev/shm
tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
tmpfs 2.0G 648K 2.0G 1% /run
/dev/sda1 497M 111M 386M 23% /boot
</pre></p>
<table class="sme-border">
<tr>
<th colspan="1" class="sme-border">I-bays</th>
<th colspan="1" class="sme-border">Usage</th>
<th colspan="1" class="sme-border">Path</th>
</tr>
<tr>
<td colspan="1" class="sme-border">Primary</td>
<td colspan="1" class="sme-border">4.0K</td>
<td colspan="1" class="sme-border">/home/e-smith/files/ibays/Primary</td>
</tr>
<tr>
<td colspan="1" class="sme-border">anibay</td>
<td colspan="1" class="sme-border">4.0K</td>
<td colspan="1" class="sme-border">/home/e-smith/files/ibays/anibay</td>
</tr>
<tr>
<td colspan="1" class="sme-border">opt</td>
<td colspan="1" class="sme-border">410M</td>
<td colspan="1" class="sme-border">/opt</td>
</tr>
</table>
<p>&nbsp
</p>
<table class="sme-border">
<tr>
<th colspan="1" class="sme-border">Users</th>
<th colspan="1" class="sme-border">Usage</th>
<th colspan="1" class="sme-border">Path</th>
</tr>
<tr>
<td colspan="1" class="sme-border">root</td>
<td colspan="1" class="sme-border">2.1M</td>
<td colspan="1" class="sme-border">/root</td>
</tr>
<tr>
<td colspan="1" class="sme-border">brianr</td>
<td colspan="1" class="sme-border">16K</td>
<td colspan="1" class="sme-border">/home/e-smith/files/users/brianr</td>
</tr>
</table>
</table>
</form>
<HR class="sme-copyrightbar">
<FONT class="sme-copyright">
SME Server 10.1
<BR>Copyright 1999-2006 Mitel Corporation
<BR>All rights reserved.
<BR>Copyright (c) 2013 - 2021 Koozali Foundation Inc.
<BR>
</FONT>
</BODY>
</HTML>

View File

@ -1,622 +0,0 @@
Bulgarian (bg), Field: Backup or restore, English: Backup or restore, Translated: Архивиране или възстановяване
Bulgarian (bg), Field: Report a bug, English: Report a bug, Translated: Докладвай за грешка
Bulgarian (bg), Field: Antivirus (ClamAV), English: Antivirus (ClamAV), Translated: Антивирус (ClamAV)
Bulgarian (bg), Field: Date and time, English: Date and time, Translated: Дата и час
Bulgarian (bg), Field: Directory, English: Directory, Translated: Директория
Bulgarian (bg), Field: Domains, English: Domains, Translated: Домейни
Bulgarian (bg), Field: E-mail, English: E-mail, Translated: Имейл
Bulgarian (bg), Field: Hostnames and addresses, English: Hostnames and addresses, Translated: Имена на хостове и адреси
Bulgarian (bg), Field: Shared areas (was ibays), English: Shared areas (was ibays), Translated: Споделени области (беше ibays)
Bulgarian (bg), Field: Home, English: Home, Translated: Начало
Bulgarian (bg), Field: Legacy panel, English: Legacy panel, Translated: Наследствен панел
Bulgarian (bg), Field: Local networks, English: Local networks, Translated: Местни мрежи
Bulgarian (bg), Field: Logout, English: Logout, Translated: Изход
Bulgarian (bg), Field: Online manual, English: Online manual, Translated: Онлайн ръководство
Bulgarian (bg), Field: NFS data share, English: NFS data share, Translated: Дял за данни NFS
Bulgarian (bg), Field: Port forwarding, English: Port forwarding, Translated: Пренасочване на портове
Bulgarian (bg), Field: Printers, English: Printers, Translated: Принтери
Bulgarian (bg), Field: Proxy settings, English: Proxy settings, Translated: Настройки на прокси
Bulgarian (bg), Field: Pseudonyms, English: Pseudonyms, Translated: Псевдоними
Bulgarian (bg), Field: Mail log file analysis, English: Mail log file analysis, Translated: Анализ на журнали с поща
Bulgarian (bg), Field: Quotas, English: Quotas, Translated: Квоти
Bulgarian (bg), Field: Reboot or shutdown, English: Reboot or shutdown, Translated: Рестартиране или изключване
Bulgarian (bg), Field: Review configuration, English: Review configuration, Translated: Преглед на конфигурацията
Bulgarian (bg), Field: Support and licensing, English: Support and licensing, Translated: Поддръжка и лицензиране
Bulgarian (bg), Field: Users, English: Users, Translated: Потребители
Bulgarian (bg), Field: User Panel Access, English: User Panel Access, Translated: Достъп до потребителския панел
Bulgarian (bg), Field: Change password, English: Change password, Translated: Промяна на паролата
Bulgarian (bg), Field: View log files, English: View log files, Translated: Преглед на log файлове
Bulgarian (bg), Field: Samba workgroup, English: Samba workgroup, Translated: Работна група Samba
Bulgarian (bg), Field: Software installer, English: Software installer, Translated: Инсталиране на софтуер
File not found for language: Danish (dk)
German (de), Field: Antivirus (ClamAV), English: Antivirus (ClamAV), Translated: Antivirus (ClamAV)
German (de), Field: Domains, English: Domains, Translated: Domains: Domänen
German (de), Field: Shared areas (was ibays), English: Shared areas (was ibays), Translated: Geteilte Bereiche (ehemals ibays)
German (de), Field: Home, English: Home, Translated: Startseite
German (de), Field: Legacy panel, English: Legacy panel, Translated: Altes Bedienfeld
German (de), Field: Logout, English: Logout, Translated: Abmelden
German (de), Field: NFS data share, English: NFS data share, Translated: NFS-Datenfreigabe
German (de), Field: User Panel Access, English: User Panel Access, Translated: Benutzerbereich Zugriff
German (de), Field: Change password, English: Change password, Translated: Passwort ändern
German (de), Field: Samba workgroup, English: Samba workgroup, Translated: Samba-Arbeitsgruppe
File not found for language: Greek (gr)
Spanish (es), Field: Report a bug, English: Report a bug, Translated: Informar de un error
Spanish (es), Field: Antivirus (ClamAV), English: Antivirus (ClamAV), Translated: Antivirus (ClamAV)
Spanish (es), Field: Domains, English: Domains, Translated: Dominios
Spanish (es), Field: E-mail, English: E-mail, Translated: Correo electrónico
Spanish (es), Field: Shared areas (was ibays), English: Shared areas (was ibays), Translated: Áreas compartidas (anteriormente ibays)
Spanish (es), Field: Home, English: Home, Translated: Inicio
Spanish (es), Field: Legacy panel, English: Legacy panel, Translated: Panel heredado
Spanish (es), Field: Logout, English: Logout, Translated: Cerrar sesión
Spanish (es), Field: NFS data share, English: NFS data share, Translated: Comparte de datos NFS
Spanish (es), Field: User Panel Access, English: User Panel Access, Translated: Acceso al Panel de Usuario
Spanish (es), Field: Change password, English: Change password, Translated: Cambiar contraseña
Spanish (es), Field: Samba workgroup, English: Samba workgroup, Translated: Grupo de trabajo de Samba
Estonian (et), Field: Backup or restore, English: Backup or restore, Translated: Varundamine või taastamine
Estonian (et), Field: Report a bug, English: Report a bug, Translated: Teata veast
Estonian (et), Field: Antivirus (ClamAV), English: Antivirus (ClamAV), Translated: Viirusevastane (ClamAV)
Estonian (et), Field: Date and time, English: Date and time, Translated: Kuupäev ja kellaaeg
Estonian (et), Field: Directory, English: Directory, Translated: Kataloog
Estonian (et), Field: Domains, English: Domains, Translated: Domeenid
Estonian (et), Field: E-mail, English: E-mail, Translated: E-post
Estonian (et), Field: Hostnames and addresses, English: Hostnames and addresses, Translated: Hostinimed ja aadressid
Estonian (et), Field: Shared areas (was ibays), English: Shared areas (was ibays), Translated: Jagatud alad (oli ibays)
Estonian (et), Field: Home, English: Home, Translated: Kodu
Estonian (et), Field: Legacy panel, English: Legacy panel, Translated: Pärandpaneel
Estonian (et), Field: Local networks, English: Local networks, Translated: Kohalikud võrgud
Estonian (et), Field: Logout, English: Logout, Translated: Logi välja
Estonian (et), Field: Online manual, English: Online manual, Translated: Veebimanuaal
Estonian (et), Field: NFS data share, English: NFS data share, Translated: NFS andmete jagamine
Estonian (et), Field: Port forwarding, English: Port forwarding, Translated: Pordi edastamine
Estonian (et), Field: Printers, English: Printers, Translated: Printerid
Estonian (et), Field: Proxy settings, English: Proxy settings, Translated: Puhverserveri seaded
Estonian (et), Field: Pseudonyms, English: Pseudonyms, Translated: Pseudonüümid
Estonian (et), Field: Mail log file analysis, English: Mail log file analysis, Translated: Posti logifaili analüüs
Estonian (et), Field: Quotas, English: Quotas, Translated: Kvoodid
Estonian (et), Field: Reboot or shutdown, English: Reboot or shutdown, Translated: Taaskäivitus või sulgemine
Estonian (et), Field: Remote access, English: Remote access, Translated: Kaugjuurdepääs
Estonian (et), Field: Review configuration, English: Review configuration, Translated: Konfiguratsiooni ülevaade
Estonian (et), Field: Support and licensing, English: Support and licensing, Translated: Toetus ja litsentsimine
Estonian (et), Field: Users, English: Users, Translated: Kasutajad
Estonian (et), Field: User Panel Access, English: User Panel Access, Translated: Kasutajapaneeli Juurdepääs
Estonian (et), Field: Change password, English: Change password, Translated: Muuda parooli
Estonian (et), Field: View log files, English: View log files, Translated: Vaata logifaile
Estonian (et), Field: Samba workgroup, English: Samba workgroup, Translated: Samba töögrupp
Estonian (et), Field: Software installer, English: Software installer, Translated: Tarkvara paigaldaja
French (fr), Field: Antivirus (ClamAV), English: Antivirus (ClamAV), Translated: Antivirus (ClamAV)
French (fr), Field: Domains, English: Domains, Translated: Domaines
French (fr), Field: Shared areas (was ibays), English: Shared areas (was ibays), Translated: Zones partagées (anciennement ibays)
French (fr), Field: Legacy panel, English: Legacy panel, Translated: Panneau Hérité
French (fr), Field: NFS data share, English: NFS data share, Translated: Partage de données NFS
French (fr), Field: Quotas, English: Quotas, Translated: Quotas
French (fr), Field: User Panel Access, English: User Panel Access, Translated: Accès au Panneau Utilisateur
French (fr), Field: Change password, English: Change password, Translated: Changer le mot de passe
French (fr), Field: Samba workgroup, English: Samba workgroup, Translated: Groupe de travail Samba
Hebrew (il), Field: Backup or restore, English: Backup or restore, Translated: גיבוי או שחזור
Hebrew (il), Field: Report a bug, English: Report a bug, Translated: דווח על באג
Hebrew (il), Field: Antivirus (ClamAV), English: Antivirus (ClamAV), Translated: אנטי וירוס (ClamAV)
Hebrew (il), Field: Date and time, English: Date and time, Translated: תאריך ושעה
Hebrew (il), Field: Directory, English: Directory, Translated: ספרייה
Hebrew (il), Field: Domains, English: Domains, Translated: דומיינים
Hebrew (il), Field: E-mail, English: E-mail, Translated: אימייל
Hebrew (il), Field: Groups, English: Groups, Translated: קבוצות
Hebrew (il), Field: Hostnames and addresses, English: Hostnames and addresses, Translated: שמות מארחים וכתובות
Hebrew (il), Field: Shared areas (was ibays), English: Shared areas (was ibays), Translated: אזורים משותפים (היו ibays)
Hebrew (il), Field: Home, English: Home, Translated: דף הבית
Hebrew (il), Field: Legacy panel, English: Legacy panel, Translated: לוח מיושן
Hebrew (il), Field: Local networks, English: Local networks, Translated: רשתות מקומיות
Hebrew (il), Field: Logout, English: Logout, Translated: התנתקות
Hebrew (il), Field: Online manual, English: Online manual, Translated: מדריך מקוון
Hebrew (il), Field: NFS data share, English: NFS data share, Translated: שיתוף נתונים NFS
Hebrew (il), Field: Port forwarding, English: Port forwarding, Translated: העברת פורטים
Hebrew (il), Field: Printers, English: Printers, Translated: מדפסות
Hebrew (il), Field: Proxy settings, English: Proxy settings, Translated: הגדרות פרוקסי
Hebrew (il), Field: Pseudonyms, English: Pseudonyms, Translated: פסבדונים
Hebrew (il), Field: Mail log file analysis, English: Mail log file analysis, Translated: ניתוח קובץ יומן דואר
Hebrew (il), Field: Quotas, English: Quotas, Translated: מכסות
Hebrew (il), Field: Reboot or shutdown, English: Reboot or shutdown, Translated: אתחל או כבה
Hebrew (il), Field: Remote access, English: Remote access, Translated: גישה מרחוק
Hebrew (il), Field: Review configuration, English: Review configuration, Translated: סקירת תצורה
Hebrew (il), Field: Support and licensing, English: Support and licensing, Translated: תמיכה ורישוי
Hebrew (il), Field: Users, English: Users, Translated: משתמשים
Hebrew (il), Field: User Panel Access, English: User Panel Access, Translated: גישה לפאנל המשתמש
Hebrew (il), Field: Change password, English: Change password, Translated: שנה סיסמה
Hebrew (il), Field: View log files, English: View log files, Translated: צפה בקבצי יומן
Hebrew (il), Field: Samba workgroup, English: Samba workgroup, Translated: קבוצת עבודה של Samba
Hebrew (il), Field: Software installer, English: Software installer, Translated: מתקין תוכנה
Hungarian (hu), Field: Backup or restore, English: Backup or restore, Translated: Biztonsági mentés vagy visszaállítás
Hungarian (hu), Field: Report a bug, English: Report a bug, Translated: Hiba jelentése
Hungarian (hu), Field: Antivirus (ClamAV), English: Antivirus (ClamAV), Translated: Vírusirtó (ClamAV)
Hungarian (hu), Field: Date and time, English: Date and time, Translated: Dátum és idő
Hungarian (hu), Field: Directory, English: Directory, Translated: Könyvtár
Hungarian (hu), Field: Domains, English: Domains, Translated: Tartományok
Hungarian (hu), Field: E-mail, English: E-mail, Translated: E-mail
Hungarian (hu), Field: Hostnames and addresses, English: Hostnames and addresses, Translated: Hosztnevek és címek
Hungarian (hu), Field: Shared areas (was ibays), English: Shared areas (was ibays), Translated: Megosztott területek (korábban ibays)
Hungarian (hu), Field: Home, English: Home, Translated: Kezdőlap
Hungarian (hu), Field: Legacy panel, English: Legacy panel, Translated: Klasszikus panel
Hungarian (hu), Field: Local networks, English: Local networks, Translated: Helyi hálózatok
Hungarian (hu), Field: Logout, English: Logout, Translated: Kijelentkezés
Hungarian (hu), Field: Online manual, English: Online manual, Translated: Online kézikönyv
Hungarian (hu), Field: NFS data share, English: NFS data share, Translated: NFS adatmegosztás
Hungarian (hu), Field: Port forwarding, English: Port forwarding, Translated: Port továbbítás
Hungarian (hu), Field: Printers, English: Printers, Translated: Nyomtatók
Hungarian (hu), Field: Proxy settings, English: Proxy settings, Translated: Proxy beállítások
Hungarian (hu), Field: Pseudonyms, English: Pseudonyms, Translated: Pseudonimok
Hungarian (hu), Field: Mail log file analysis, English: Mail log file analysis, Translated: Levél naplófájl elemzése
Hungarian (hu), Field: Quotas, English: Quotas, Translated: Kvóták
Hungarian (hu), Field: Reboot or shutdown, English: Reboot or shutdown, Translated: Újraindítás vagy leállítás
Hungarian (hu), Field: Remote access, English: Remote access, Translated: Távoli hozzáférés
Hungarian (hu), Field: Review configuration, English: Review configuration, Translated: Konfiguráció áttekintése
Hungarian (hu), Field: Support and licensing, English: Support and licensing, Translated: Támogatás és licencelés
Hungarian (hu), Field: Users, English: Users, Translated: Felhasználók
Hungarian (hu), Field: User Panel Access, English: User Panel Access, Translated: Felhasználói panel hozzáférés
Hungarian (hu), Field: Change password, English: Change password, Translated: Jelszó megváltoztatása
Hungarian (hu), Field: View log files, English: View log files, Translated: Naplófájlok megtekintése
Hungarian (hu), Field: Samba workgroup, English: Samba workgroup, Translated: Samba munkacsoport
Hungarian (hu), Field: Software installer, English: Software installer, Translated: Szoftvertelepítő
Indonesian (id), Field: Backup or restore, English: Backup or restore, Translated: Cadangkan atau pulihkan
Indonesian (id), Field: Report a bug, English: Report a bug, Translated: Laporkan Bug
Indonesian (id), Field: Antivirus (ClamAV), English: Antivirus (ClamAV), Translated: Antivirus (ClamAV)
Indonesian (id), Field: Date and time, English: Date and time, Translated: Tanggal dan waktu
Indonesian (id), Field: Directory, English: Directory, Translated: Direktori
Indonesian (id), Field: Domains, English: Domains, Translated: Domain
Indonesian (id), Field: E-mail, English: E-mail, Translated: E-mail
Indonesian (id), Field: Hostnames and addresses, English: Hostnames and addresses, Translated: Nama host dan alamat
Indonesian (id), Field: Shared areas (was ibays), English: Shared areas (was ibays), Translated: Area bersama (sebelumnya ibays)
Indonesian (id), Field: Home, English: Home, Translated: Beranda
Indonesian (id), Field: Legacy panel, English: Legacy panel, Translated: Panel warisan
Indonesian (id), Field: Local networks, English: Local networks, Translated: Jaringan lokal
Indonesian (id), Field: Logout, English: Logout, Translated: Keluar
Indonesian (id), Field: Online manual, English: Online manual, Translated: Manual daring
Indonesian (id), Field: NFS data share, English: NFS data share, Translated: Berbagi data NFS
Indonesian (id), Field: Port forwarding, English: Port forwarding, Translated: Penerusan port
Indonesian (id), Field: Printers, English: Printers, Translated: Printer
Indonesian (id), Field: Proxy settings, English: Proxy settings, Translated: Pengaturan proxy
Indonesian (id), Field: Pseudonyms, English: Pseudonyms, Translated: Nama Samaran
Indonesian (id), Field: Mail log file analysis, English: Mail log file analysis, Translated: Analisis file log surat
Indonesian (id), Field: Quotas, English: Quotas, Translated: Kuota
Indonesian (id), Field: Reboot or shutdown, English: Reboot or shutdown, Translated: Mulai Ulang atau Matikan
Indonesian (id), Field: Remote access, English: Remote access, Translated: Akses jarak jauh
Indonesian (id), Field: Review configuration, English: Review configuration, Translated: Tinjau konfigurasi
Indonesian (id), Field: Support and licensing, English: Support and licensing, Translated: Dukungan dan Lisensi
Indonesian (id), Field: Users, English: Users, Translated: Pengguna
Indonesian (id), Field: User Panel Access, English: User Panel Access, Translated: Akses Panel Pengguna
Indonesian (id), Field: Change password, English: Change password, Translated: Ubah kata sandi
Indonesian (id), Field: View log files, English: View log files, Translated: Lihat file log
Indonesian (id), Field: Samba workgroup, English: Samba workgroup, Translated: Grup kerja Samba
Indonesian (id), Field: Software installer, English: Software installer, Translated: Penginstal perangkat lunak
Italian (it), Field: Report a bug, English: Report a bug, Translated: Segnala un bug
Italian (it), Field: Antivirus (ClamAV), English: Antivirus (ClamAV), Translated: Antivirus (ClamAV)
Italian (it), Field: Domains, English: Domains, Translated: Domini
Italian (it), Field: E-mail, English: E-mail, Translated: E-mail
Italian (it), Field: Shared areas (was ibays), English: Shared areas (was ibays), Translated: Aree condivise (precedentemente ibay)
Italian (it), Field: Home, English: Home, Translated: Home
Italian (it), Field: Legacy panel, English: Legacy panel, Translated: Pannello legacy
Italian (it), Field: Logout, English: Logout, Translated: Esci
Italian (it), Field: NFS data share, English: NFS data share, Translated: Condivisione dati NFS
Italian (it), Field: Port forwarding, English: Port forwarding, Translated: Inoltro delle porte
Italian (it), Field: User Panel Access, English: User Panel Access, Translated: Accesso Pannello Utente
Italian (it), Field: Change password, English: Change password, Translated: Cambia password
Italian (it), Field: Samba workgroup, English: Samba workgroup, Translated: Gruppo di lavoro Samba
Japanese (jp), Field: Report a bug, English: Report a bug, Translated: バグを報告
Japanese (jp), Field: Antivirus (ClamAV), English: Antivirus (ClamAV), Translated: アンチウイルス (ClamAV)
Japanese (jp), Field: Date and time, English: Date and time, Translated: 日付と時刻
Japanese (jp), Field: Domains, English: Domains, Translated: ドメイン
Japanese (jp), Field: E-mail, English: E-mail, Translated: Eメール
Japanese (jp), Field: Hostnames and addresses, English: Hostnames and addresses, Translated: ホスト名とアドレス
Japanese (jp), Field: Shared areas (was ibays), English: Shared areas (was ibays), Translated: 共有エリア(以前のアイベイズ)
Japanese (jp), Field: Home, English: Home, Translated: ホーム
Japanese (jp), Field: Legacy panel, English: Legacy panel, Translated: レガシーパネル
Japanese (jp), Field: Local networks, English: Local networks, Translated: ローカルネットワーク
Japanese (jp), Field: Logout, English: Logout, Translated: ログアウト
Japanese (jp), Field: NFS data share, English: NFS data share, Translated: NFSデータ共有
Japanese (jp), Field: Port forwarding, English: Port forwarding, Translated: ポートフォワーディング
Japanese (jp), Field: Printers, English: Printers, Translated: プリンター
Japanese (jp), Field: Proxy settings, English: Proxy settings, Translated: プロキシ設定
Japanese (jp), Field: Pseudonyms, English: Pseudonyms, Translated: 仮名
Japanese (jp), Field: Mail log file analysis, English: Mail log file analysis, Translated: メールログファイル解析
Japanese (jp), Field: Quotas, English: Quotas, Translated: クォータ
Japanese (jp), Field: Reboot or shutdown, English: Reboot or shutdown, Translated: 再起動またはシャットダウン
Japanese (jp), Field: Remote access, English: Remote access, Translated: リモートアクセス
Japanese (jp), Field: Review configuration, English: Review configuration, Translated: 構成の確認
Japanese (jp), Field: User Panel Access, English: User Panel Access, Translated: ユーザーパネルアクセス
Japanese (jp), Field: Change password, English: Change password, Translated: パスワードの変更
Japanese (jp), Field: View log files, English: View log files, Translated: ログファイルを表示
Japanese (jp), Field: Samba workgroup, English: Samba workgroup, Translated: Samba ワークグループ
Japanese (jp), Field: Software installer, English: Software installer, Translated: ソフトウェアインストーラ
Norwegian Bokmål (no), Field: Backup or restore, English: Backup or restore, Translated: Sikkerhetskopiere eller gjenopprette
Norwegian Bokmål (no), Field: Report a bug, English: Report a bug, Translated: Rapporter en feil
Norwegian Bokmål (no), Field: Antivirus (ClamAV), English: Antivirus (ClamAV), Translated: Antivirus (ClamAV)
Norwegian Bokmål (no), Field: Date and time, English: Date and time, Translated: Dato og tid
Norwegian Bokmål (no), Field: Directory, English: Directory, Translated: Katalog
Norwegian Bokmål (no), Field: Domains, English: Domains, Translated: Domener
Norwegian Bokmål (no), Field: E-mail, English: E-mail, Translated: E-post
Norwegian Bokmål (no), Field: Hostnames and addresses, English: Hostnames and addresses, Translated: Vertsnavn og adresser
Norwegian Bokmål (no), Field: Shared areas (was ibays), English: Shared areas (was ibays), Translated: Delte områder (tidligere ibays)
Norwegian Bokmål (no), Field: Home, English: Home, Translated: Hjem
Norwegian Bokmål (no), Field: Legacy panel, English: Legacy panel, Translated: Legacy-panel
Norwegian Bokmål (no), Field: Local networks, English: Local networks, Translated: Lokale nettverk
Norwegian Bokmål (no), Field: Logout, English: Logout, Translated: Logg ut
Norwegian Bokmål (no), Field: Online manual, English: Online manual, Translated: Online manual → Online brukerveiledning
Norwegian Bokmål (no), Field: NFS data share, English: NFS data share, Translated: NFS-datalagring
Norwegian Bokmål (no), Field: Port forwarding, English: Port forwarding, Translated: Port videresending
Norwegian Bokmål (no), Field: Printers, English: Printers, Translated: Skrivere
Norwegian Bokmål (no), Field: Proxy settings, English: Proxy settings, Translated: Proxy-innstillinger
Norwegian Bokmål (no), Field: Pseudonyms, English: Pseudonyms, Translated: Pseudonymer
Norwegian Bokmål (no), Field: Mail log file analysis, English: Mail log file analysis, Translated: Analyser postloggfil
Norwegian Bokmål (no), Field: Quotas, English: Quotas, Translated: Kvoter
Norwegian Bokmål (no), Field: Reboot or shutdown, English: Reboot or shutdown, Translated: Omstart eller avstenging
Norwegian Bokmål (no), Field: Remote access, English: Remote access, Translated: Fjernstyring
Norwegian Bokmål (no), Field: Review configuration, English: Review configuration, Translated: Gjennomgå konfigurasjon
Norwegian Bokmål (no), Field: Support and licensing, English: Support and licensing, Translated: Støtte og lisensiering
Norwegian Bokmål (no), Field: Users, English: Users, Translated: Brukere
Norwegian Bokmål (no), Field: User Panel Access, English: User Panel Access, Translated: Brukerpanelets tilgang
Norwegian Bokmål (no), Field: Change password, English: Change password, Translated: Endre passord
Norwegian Bokmål (no), Field: View log files, English: View log files, Translated: Vis loggfiler
Norwegian Bokmål (no), Field: Samba workgroup, English: Samba workgroup, Translated: Samba arbeidsgruppe
Norwegian Bokmål (no), Field: Software installer, English: Software installer, Translated: Programvareinstallatør
Dutch (nl), Field: Report a bug, English: Report a bug, Translated: Een bug melden
Dutch (nl), Field: Antivirus (ClamAV), English: Antivirus (ClamAV), Translated: Antivirus (ClamAV)
Dutch (nl), Field: Domains, English: Domains, Translated: Domeinen
Dutch (nl), Field: E-mail, English: E-mail, Translated: E-mail
Dutch (nl), Field: Shared areas (was ibays), English: Shared areas (was ibays), Translated: Gedeelde gebieden (voorheen ibays)
Dutch (nl), Field: Home, English: Home, Translated: Startpagina
Dutch (nl), Field: Legacy panel, English: Legacy panel, Translated: Ouder paneel
Dutch (nl), Field: Local networks, English: Local networks, Translated: Lokale netwerken
Dutch (nl), Field: Logout, English: Logout, Translated: Uitloggen
Dutch (nl), Field: NFS data share, English: NFS data share, Translated: NFS-gegevensdeling
Dutch (nl), Field: Printers, English: Printers, Translated: Printers
Dutch (nl), Field: Support and licensing, English: Support and licensing, Translated: Ondersteuning en licenties
Dutch (nl), Field: User Panel Access, English: User Panel Access, Translated: Gebruikerspaneel Toegang
Dutch (nl), Field: Change password, English: Change password, Translated: Wijzig wachtwoord
Dutch (nl), Field: Samba workgroup, English: Samba workgroup, Translated: Samba-werkgroep
Dutch (nl), Field: Software installer, English: Software installer, Translated: Software-installatieprogramma
Polish (pl), Field: Backup or restore, English: Backup or restore, Translated: Kopia zapasowa lub przywracanie
Polish (pl), Field: Report a bug, English: Report a bug, Translated: Zgłoś błąd
Polish (pl), Field: Antivirus (ClamAV), English: Antivirus (ClamAV), Translated: Antywirus (ClamAV)
Polish (pl), Field: Date and time, English: Date and time, Translated: Data i godzina
Polish (pl), Field: Directory, English: Directory, Translated: Katalog
Polish (pl), Field: Domains, English: Domains, Translated: Domeny
Polish (pl), Field: E-mail, English: E-mail, Translated: E-mail
Polish (pl), Field: Hostnames and addresses, English: Hostnames and addresses, Translated: Nazwy hostów i adresy
Polish (pl), Field: Shared areas (was ibays), English: Shared areas (was ibays), Translated: Obszary udostępnione (dawniej ibays)
Polish (pl), Field: Home, English: Home, Translated: Strona główna
Polish (pl), Field: Legacy panel, English: Legacy panel, Translated: Starszy panel
Polish (pl), Field: Local networks, English: Local networks, Translated: Sieci lokalne
Polish (pl), Field: Logout, English: Logout, Translated: Wyloguj się
Polish (pl), Field: Online manual, English: Online manual, Translated: Instrukcja online
Polish (pl), Field: NFS data share, English: NFS data share, Translated: Udostępnianie danych NFS
Polish (pl), Field: Port forwarding, English: Port forwarding, Translated: Przekierowanie portów
Polish (pl), Field: Printers, English: Printers, Translated: Drukarki
Polish (pl), Field: Proxy settings, English: Proxy settings, Translated: Ustawienia proxy
Polish (pl), Field: Pseudonyms, English: Pseudonyms, Translated: Pseudonimy
Polish (pl), Field: Mail log file analysis, English: Mail log file analysis, Translated: Analiza pliku dziennika poczty
Polish (pl), Field: Quotas, English: Quotas, Translated: Limity
Polish (pl), Field: Reboot or shutdown, English: Reboot or shutdown, Translated: Uruchom ponownie lub wyłącz
Polish (pl), Field: Remote access, English: Remote access, Translated: Zdalny dostęp
Polish (pl), Field: Review configuration, English: Review configuration, Translated: Przegląd konfiguracji
Polish (pl), Field: Support and licensing, English: Support and licensing, Translated: Wsparcie i licencjonowanie
Polish (pl), Field: Users, English: Users, Translated: Użytkownicy
Polish (pl), Field: User Panel Access, English: User Panel Access, Translated: Dostęp do Panelu Użytkownika
Polish (pl), Field: Change password, English: Change password, Translated: Zmień hasło
Polish (pl), Field: View log files, English: View log files, Translated: Wyświetl pliki dziennika
Polish (pl), Field: Samba workgroup, English: Samba workgroup, Translated: Grupa robocza Samba
Polish (pl), Field: Software installer, English: Software installer, Translated: Instalator oprogramowania
Brazilian Portuguese (pt-br), Field: Report a bug, English: Report a bug, Translated: Relatar um bug
Brazilian Portuguese (pt-br), Field: Antivirus (ClamAV), English: Antivirus (ClamAV), Translated: Antivírus (ClamAV)
Brazilian Portuguese (pt-br), Field: Date and time, English: Date and time, Translated: Data e hora
Brazilian Portuguese (pt-br), Field: Directory, English: Directory, Translated: Diretório
Brazilian Portuguese (pt-br), Field: Domains, English: Domains, Translated: Domínios
Brazilian Portuguese (pt-br), Field: E-mail, English: E-mail, Translated: E-mail
Brazilian Portuguese (pt-br), Field: Hostnames and addresses, English: Hostnames and addresses, Translated: Nomes de host e endereços
Brazilian Portuguese (pt-br), Field: Shared areas (was ibays), English: Shared areas (was ibays), Translated: Áreas compartilhadas (eram ibays)
Brazilian Portuguese (pt-br), Field: Home, English: Home, Translated: Início
Brazilian Portuguese (pt-br), Field: Legacy panel, English: Legacy panel, Translated: Painel Legado
Brazilian Portuguese (pt-br), Field: Local networks, English: Local networks, Translated: Redes locais
Brazilian Portuguese (pt-br), Field: Logout, English: Logout, Translated: Finalizar Sessão
Brazilian Portuguese (pt-br), Field: Online manual, English: Online manual, Translated: Manual online
Brazilian Portuguese (pt-br), Field: NFS data share, English: NFS data share, Translated: Compartilhamento de dados NFS
Brazilian Portuguese (pt-br), Field: Port forwarding, English: Port forwarding, Translated: Encaminhamento de porta
Brazilian Portuguese (pt-br), Field: Printers, English: Printers, Translated: Impressoras
Brazilian Portuguese (pt-br), Field: Proxy settings, English: Proxy settings, Translated: Configurações de proxy
Brazilian Portuguese (pt-br), Field: Pseudonyms, English: Pseudonyms, Translated: Pseudônimos
Brazilian Portuguese (pt-br), Field: Mail log file analysis, English: Mail log file analysis, Translated: Análise de arquivo de log de email
Brazilian Portuguese (pt-br), Field: Quotas, English: Quotas, Translated: Quotas
Brazilian Portuguese (pt-br), Field: Reboot or shutdown, English: Reboot or shutdown, Translated: Reiniciar ou desligar
Brazilian Portuguese (pt-br), Field: Remote access, English: Remote access, Translated: Acesso remoto
Brazilian Portuguese (pt-br), Field: Review configuration, English: Review configuration, Translated: Revisar configuração
Brazilian Portuguese (pt-br), Field: Support and licensing, English: Support and licensing, Translated: Suporte e licenciamento
Brazilian Portuguese (pt-br), Field: Users, English: Users, Translated: Usuários
Brazilian Portuguese (pt-br), Field: User Panel Access, English: User Panel Access, Translated: Acesso ao Painel do Usuário
Brazilian Portuguese (pt-br), Field: Change password, English: Change password, Translated: Alterar senha
Brazilian Portuguese (pt-br), Field: View log files, English: View log files, Translated: Ver arquivos de log
Brazilian Portuguese (pt-br), Field: Samba workgroup, English: Samba workgroup, Translated: Grupo de trabalho do Samba
Brazilian Portuguese (pt-br), Field: Software installer, English: Software installer, Translated: Instalador de software
Portuguese (pt), Field: Report a bug, English: Report a bug, Translated: Relatar um erro
Portuguese (pt), Field: Antivirus (ClamAV), English: Antivirus (ClamAV), Translated: Antivírus (ClamAV)
Portuguese (pt), Field: Date and time, English: Date and time, Translated: Data e hora
Portuguese (pt), Field: Domains, English: Domains, Translated: Domínios
Portuguese (pt), Field: E-mail, English: E-mail, Translated: E-mail
Portuguese (pt), Field: Shared areas (was ibays), English: Shared areas (was ibays), Translated: Áreas compartilhadas (antigamente ibays)
Portuguese (pt), Field: Home, English: Home, Translated: Início
Portuguese (pt), Field: Legacy panel, English: Legacy panel, Translated: Painel legado
Portuguese (pt), Field: Local networks, English: Local networks, Translated: Redes Locais
Portuguese (pt), Field: Logout, English: Logout, Translated: Logout
Portuguese (pt), Field: NFS data share, English: NFS data share, Translated: Compartilhamento de dados NFS
Portuguese (pt), Field: Port forwarding, English: Port forwarding, Translated: Encaminhamento de portas
Portuguese (pt), Field: Proxy settings, English: Proxy settings, Translated: Configurações de proxy
Portuguese (pt), Field: Remote access, English: Remote access, Translated: Acesso remoto
Portuguese (pt), Field: User Panel Access, English: User Panel Access, Translated: Acesso ao Painel do Usuário
Portuguese (pt), Field: Change password, English: Change password, Translated: Alterar senha
Portuguese (pt), Field: Samba workgroup, English: Samba workgroup, Translated: Grupo de trabalho Samba
Portuguese (pt), Field: Software installer, English: Software installer, Translated: Instalador de software
Romanian (ro), Field: Backup or restore, English: Backup or restore, Translated: Backup sau restaurare
Romanian (ro), Field: Report a bug, English: Report a bug, Translated: Raportați o eroare
Romanian (ro), Field: Antivirus (ClamAV), English: Antivirus (ClamAV), Translated: Antivirus (ClamAV)
Romanian (ro), Field: Date and time, English: Date and time, Translated: Data și ora
Romanian (ro), Field: Directory, English: Directory, Translated: Director
Romanian (ro), Field: Domains, English: Domains, Translated: Domenii
Romanian (ro), Field: E-mail, English: E-mail, Translated: E-mail
Romanian (ro), Field: Groups, English: Groups, Translated: Grupuri
Romanian (ro), Field: Hostnames and addresses, English: Hostnames and addresses, Translated: Nume gazdă și adrese
Romanian (ro), Field: Shared areas (was ibays), English: Shared areas (was ibays), Translated: Zone partajate (au fost ibays)
Romanian (ro), Field: Home, English: Home, Translated: Acasă
Romanian (ro), Field: Legacy panel, English: Legacy panel, Translated: Panou vechi
Romanian (ro), Field: Local networks, English: Local networks, Translated: Rețele locale
Romanian (ro), Field: Logout, English: Logout, Translated: Deconectare
Romanian (ro), Field: Online manual, English: Online manual, Translated: Manual online
Romanian (ro), Field: NFS data share, English: NFS data share, Translated: Partajare date NFS
Romanian (ro), Field: Port forwarding, English: Port forwarding, Translated: Port forwarding
Romanian (ro), Field: Printers, English: Printers, Translated: Imprimante
Romanian (ro), Field: Proxy settings, English: Proxy settings, Translated: Setări proxy
Romanian (ro), Field: Pseudonyms, English: Pseudonyms, Translated: Pseudonime
Romanian (ro), Field: Mail log file analysis, English: Mail log file analysis, Translated: Analiza fișierului jurnal de e-mail
Romanian (ro), Field: Quotas, English: Quotas, Translated: Cote
Romanian (ro), Field: Reboot or shutdown, English: Reboot or shutdown, Translated: Repornește sau oprește
Romanian (ro), Field: Remote access, English: Remote access, Translated: Acces de la distanță
Romanian (ro), Field: Review configuration, English: Review configuration, Translated: Revizuire configurație
Romanian (ro), Field: Support and licensing, English: Support and licensing, Translated: Suport și licențiere
Romanian (ro), Field: Users, English: Users, Translated: Utilizatori
Romanian (ro), Field: User Panel Access, English: User Panel Access, Translated: Acces Panou Utilizator
Romanian (ro), Field: Change password, English: Change password, Translated: Schimbă parola
Romanian (ro), Field: View log files, English: View log files, Translated: Vizualizare fișiere jurnal
Romanian (ro), Field: Samba workgroup, English: Samba workgroup, Translated: Grup de lucru Samba
Romanian (ro), Field: Software installer, English: Software installer, Translated: Instalator software
Russian (ru), Field: Backup or restore, English: Backup or restore, Translated: Резервное копирование или восстановление
Russian (ru), Field: Report a bug, English: Report a bug, Translated: Сообщить об ошибке
Russian (ru), Field: Antivirus (ClamAV), English: Antivirus (ClamAV), Translated: Антивирус (ClamAV)
Russian (ru), Field: Date and time, English: Date and time, Translated: Дата и время
Russian (ru), Field: Directory, English: Directory, Translated: Каталог
Russian (ru), Field: Domains, English: Domains, Translated: Домены
Russian (ru), Field: E-mail, English: E-mail, Translated: Электронная почта
Russian (ru), Field: Hostnames and addresses, English: Hostnames and addresses, Translated: Имена хостов и адреса
Russian (ru), Field: Shared areas (was ibays), English: Shared areas (was ibays), Translated: Общие области (бывшие ibays)
Russian (ru), Field: Home, English: Home, Translated: Главная
Russian (ru), Field: Legacy panel, English: Legacy panel, Translated: Панель наследия
Russian (ru), Field: Local networks, English: Local networks, Translated: Местные сети
Russian (ru), Field: Logout, English: Logout, Translated: Выйти
Russian (ru), Field: Online manual, English: Online manual, Translated: Онлайн-руководство
Russian (ru), Field: NFS data share, English: NFS data share, Translated: Общий доступ к данным NFS
Russian (ru), Field: Port forwarding, English: Port forwarding, Translated: Переадресация портов
Russian (ru), Field: Printers, English: Printers, Translated: Принтеры
Russian (ru), Field: Proxy settings, English: Proxy settings, Translated: Настройки прокси
Russian (ru), Field: Pseudonyms, English: Pseudonyms, Translated: Псевдонимы
Russian (ru), Field: Mail log file analysis, English: Mail log file analysis, Translated: Анализ журнала почты
Russian (ru), Field: Quotas, English: Quotas, Translated: Квоты
Russian (ru), Field: Reboot or shutdown, English: Reboot or shutdown, Translated: Перезагрузить или завершить работу
Russian (ru), Field: Remote access, English: Remote access, Translated: Удаленный доступ
Russian (ru), Field: Review configuration, English: Review configuration, Translated: Просмотр конфигурации
Russian (ru), Field: Support and licensing, English: Support and licensing, Translated: Поддержка и лицензирование
Russian (ru), Field: Users, English: Users, Translated: Пользователи
Russian (ru), Field: User Panel Access, English: User Panel Access, Translated: Доступ к панели пользователя
Russian (ru), Field: Change password, English: Change password, Translated: Сменить пароль
Russian (ru), Field: View log files, English: View log files, Translated: Просмотр файлов журнала
Russian (ru), Field: Samba workgroup, English: Samba workgroup, Translated: Рабочая группа Samba
Russian (ru), Field: Software installer, English: Software installer, Translated: Установщик программного обеспечения
Slovenian (sl), Field: Backup or restore, English: Backup or restore, Translated: Varnostna kopija ali obnovitev
Slovenian (sl), Field: Report a bug, English: Report a bug, Translated: Prijavi hrošča
Slovenian (sl), Field: Antivirus (ClamAV), English: Antivirus (ClamAV), Translated: Antivirus (ClamAV)
Slovenian (sl), Field: Date and time, English: Date and time, Translated: Datum in čas
Slovenian (sl), Field: Directory, English: Directory, Translated: Imenik
Slovenian (sl), Field: Domains, English: Domains, Translated: Domene
Slovenian (sl), Field: E-mail, English: E-mail, Translated: E-pošta
Slovenian (sl), Field: Hostnames and addresses, English: Hostnames and addresses, Translated: Imena gostiteljev in naslovi
Slovenian (sl), Field: Shared areas (was ibays), English: Shared areas (was ibays), Translated: Skupna območja (prej ibays)
Slovenian (sl), Field: Home, English: Home, Translated: Domov
Slovenian (sl), Field: Legacy panel, English: Legacy panel, Translated: Zapuščena plošča
Slovenian (sl), Field: Local networks, English: Local networks, Translated: Lokalna omrežja
Slovenian (sl), Field: Logout, English: Logout, Translated: Odjava
Slovenian (sl), Field: Online manual, English: Online manual, Translated: Spletni priročnik
Slovenian (sl), Field: NFS data share, English: NFS data share, Translated: Souporaba podatkov NFS
Slovenian (sl), Field: Port forwarding, English: Port forwarding, Translated: Posredovanje vrat
Slovenian (sl), Field: Printers, English: Printers, Translated: Tiskalniki
Slovenian (sl), Field: Proxy settings, English: Proxy settings, Translated: Nastavitve proxyja
Slovenian (sl), Field: Pseudonyms, English: Pseudonyms, Translated: Psevdonimi
Slovenian (sl), Field: Mail log file analysis, English: Mail log file analysis, Translated: Analiza datotek dnevnika pošte
Slovenian (sl), Field: Quotas, English: Quotas, Translated: Kvote
Slovenian (sl), Field: Reboot or shutdown, English: Reboot or shutdown, Translated: Znova zaženi ali izklopi
Slovenian (sl), Field: Remote access, English: Remote access, Translated: Oddaljen dostop
Slovenian (sl), Field: Review configuration, English: Review configuration, Translated: Preglej konfiguracijo
Slovenian (sl), Field: Support and licensing, English: Support and licensing, Translated: Podpora in licenciranje
Slovenian (sl), Field: Users, English: Users, Translated: Uporabniki
Slovenian (sl), Field: User Panel Access, English: User Panel Access, Translated: Dostop do uporabniške plošče
Slovenian (sl), Field: Change password, English: Change password, Translated: Spremeni geslo
Slovenian (sl), Field: View log files, English: View log files, Translated: Ogled dnevniških datotek
Slovenian (sl), Field: Samba workgroup, English: Samba workgroup, Translated: Delovna skupina Samba
Slovenian (sl), Field: Software installer, English: Software installer, Translated: Namestitveni program
Swedish (sv), Field: Backup or restore, English: Backup or restore, Translated: Säkerhetskopiera eller återställ
Swedish (sv), Field: Report a bug, English: Report a bug, Translated: Rapportera ett fel
Swedish (sv), Field: Antivirus (ClamAV), English: Antivirus (ClamAV), Translated: Antivirus (ClamAV)
Swedish (sv), Field: Date and time, English: Date and time, Translated: Datum och tid
Swedish (sv), Field: Directory, English: Directory, Translated: Katalog
Swedish (sv), Field: Domains, English: Domains, Translated: Domäner
Swedish (sv), Field: E-mail, English: E-mail, Translated: E-post
Swedish (sv), Field: Hostnames and addresses, English: Hostnames and addresses, Translated: Värdnamn och adresser
Swedish (sv), Field: Shared areas (was ibays), English: Shared areas (was ibays), Translated: Delade områden (tidigare ibays)
Swedish (sv), Field: Home, English: Home, Translated: Hem
Swedish (sv), Field: Legacy panel, English: Legacy panel, Translated: Äldre panel
Swedish (sv), Field: Local networks, English: Local networks, Translated: Lokala nätverk
Swedish (sv), Field: Logout, English: Logout, Translated: Logga ut
Swedish (sv), Field: Online manual, English: Online manual, Translated: Online-manual
Swedish (sv), Field: NFS data share, English: NFS data share, Translated: NFS-datadelning
Swedish (sv), Field: Port forwarding, English: Port forwarding, Translated: Portvidarebefordran
Swedish (sv), Field: Printers, English: Printers, Translated: Skrivare
Swedish (sv), Field: Proxy settings, English: Proxy settings, Translated: Proxyinställningar
Swedish (sv), Field: Pseudonyms, English: Pseudonyms, Translated: Pseudonymer
Swedish (sv), Field: Mail log file analysis, English: Mail log file analysis, Translated: Analys av e-postloggfiler
Swedish (sv), Field: Quotas, English: Quotas, Translated: Kvoter
Swedish (sv), Field: Reboot or shutdown, English: Reboot or shutdown, Translated: Starta om eller stäng av
Swedish (sv), Field: Remote access, English: Remote access, Translated: Fjärråtkomst
Swedish (sv), Field: Review configuration, English: Review configuration, Translated: Granska konfiguration
Swedish (sv), Field: Support and licensing, English: Support and licensing, Translated: Support och licensiering
Swedish (sv), Field: Users, English: Users, Translated: Användare
Swedish (sv), Field: User Panel Access, English: User Panel Access, Translated: Användarpanel Åtkomst
Swedish (sv), Field: Change password, English: Change password, Translated: Byt lösenord
Swedish (sv), Field: View log files, English: View log files, Translated: Visa loggfiler
Swedish (sv), Field: Samba workgroup, English: Samba workgroup, Translated: Samba arbetsgrupp
Swedish (sv), Field: Software installer, English: Software installer, Translated: Programvaruinstallatör
Thai (th), Field: Backup or restore, English: Backup or restore, Translated: สำรองหรือกู้คืน
Thai (th), Field: Report a bug, English: Report a bug, Translated: รายงานข้อบกพร่อง
Thai (th), Field: Antivirus (ClamAV), English: Antivirus (ClamAV), Translated: แอนติไวรัส (ClamAV)
Thai (th), Field: Date and time, English: Date and time, Translated: วันที่และเวลา
Thai (th), Field: Directory, English: Directory, Translated: ไดเรกทอรี
Thai (th), Field: Domains, English: Domains, Translated: โดเมน
Thai (th), Field: E-mail, English: E-mail, Translated: อีเมล
Thai (th), Field: Hostnames and addresses, English: Hostnames and addresses, Translated: ชื่อโฮสต์และที่อยู่
Thai (th), Field: Shared areas (was ibays), English: Shared areas (was ibays), Translated: พื้นที่ใช้ร่วมกัน (เดิมเรียกว่า ibays)
Thai (th), Field: Home, English: Home, Translated: หน้าแรก
Thai (th), Field: Legacy panel, English: Legacy panel, Translated: แผงควบคุมแบบเก่า
Thai (th), Field: Local networks, English: Local networks, Translated: เครือข่ายภายใน
Thai (th), Field: Logout, English: Logout, Translated: ออกจากระบบ
Thai (th), Field: Online manual, English: Online manual, Translated: คู่มือออนไลน์
Thai (th), Field: NFS data share, English: NFS data share, Translated: การแบ่งปันข้อมูล NFS
Thai (th), Field: Port forwarding, English: Port forwarding, Translated: การส่งต่อพอร์ต
Thai (th), Field: Printers, English: Printers, Translated: เครื่องพิมพ์
Thai (th), Field: Proxy settings, English: Proxy settings, Translated: การตั้งค่า Proxy
Thai (th), Field: Pseudonyms, English: Pseudonyms, Translated: ชื่อแฝง
Thai (th), Field: Mail log file analysis, English: Mail log file analysis, Translated: การวิเคราะห์ไฟล์บันทึกจดหมาย
Thai (th), Field: Quotas, English: Quotas, Translated: โควตา
Thai (th), Field: Reboot or shutdown, English: Reboot or shutdown, Translated: รีบูตหรือปิดระบบ
Thai (th), Field: Remote access, English: Remote access, Translated: การเข้าถึงระยะไกล
Thai (th), Field: Review configuration, English: Review configuration, Translated: ตรวจสอบการกำหนดค่า
Thai (th), Field: Support and licensing, English: Support and licensing, Translated: การสนับสนุนและการอนุญาตใช้งาน
Thai (th), Field: Users, English: Users, Translated: ผู้ใช้
Thai (th), Field: User Panel Access, English: User Panel Access, Translated: การเข้าถึงแผงผู้ใช้
Thai (th), Field: Change password, English: Change password, Translated: เปลี่ยนรหัสผ่าน
Thai (th), Field: View log files, English: View log files, Translated: ดูไฟล์บันทึก
Thai (th), Field: Samba workgroup, English: Samba workgroup, Translated: กลุ่มการทำงานของ Samba
Thai (th), Field: Software installer, English: Software installer, Translated: เครื่องมือติดตั้งซอฟต์แวร์
Turkish (tr), Field: Backup or restore, English: Backup or restore, Translated: Yedekleme veya geri yükleme
Turkish (tr), Field: Report a bug, English: Report a bug, Translated: Bir hata bildir
Turkish (tr), Field: Antivirus (ClamAV), English: Antivirus (ClamAV), Translated: Antivirüs (ClamAV)
Turkish (tr), Field: Date and time, English: Date and time, Translated: Tarih ve Saat
Turkish (tr), Field: Directory, English: Directory, Translated: Dizin
Turkish (tr), Field: Domains, English: Domains, Translated: Alanlar
Turkish (tr), Field: E-mail, English: E-mail, Translated: E-posta
Turkish (tr), Field: Hostnames and addresses, English: Hostnames and addresses, Translated: Ana Bilgisayar İsimleri ve Adresler
Turkish (tr), Field: Shared areas (was ibays), English: Shared areas (was ibays), Translated: Paylaşılan alanlar (önceki ibays)
Turkish (tr), Field: Home, English: Home, Translated: Ana Sayfa
Turkish (tr), Field: Legacy panel, English: Legacy panel, Translated: Eski panel
Turkish (tr), Field: Local networks, English: Local networks, Translated: Yerel ağlar
Turkish (tr), Field: Logout, English: Logout, Translated: Oturumu Kapat
Turkish (tr), Field: Online manual, English: Online manual, Translated: Çevrimiçi Kılavuz
Turkish (tr), Field: NFS data share, English: NFS data share, Translated: NFS veri paylaşımı
Turkish (tr), Field: Port forwarding, English: Port forwarding, Translated: Port yönlendirme
Turkish (tr), Field: Printers, English: Printers, Translated: Yazıcılar
Turkish (tr), Field: Proxy settings, English: Proxy settings, Translated: Proxy ayarları
Turkish (tr), Field: Pseudonyms, English: Pseudonyms, Translated: Takma Adlar
Turkish (tr), Field: Mail log file analysis, English: Mail log file analysis, Translated: Posta günlük dosyası analizi
Turkish (tr), Field: Quotas, English: Quotas, Translated: Kotalar
Turkish (tr), Field: Reboot or shutdown, English: Reboot or shutdown, Translated: Yeniden Başlat veya Kapat
Turkish (tr), Field: Remote access, English: Remote access, Translated: Uzaktan erişim
Turkish (tr), Field: Review configuration, English: Review configuration, Translated: Yapılandırmayı İncele
Turkish (tr), Field: Support and licensing, English: Support and licensing, Translated: Destek ve lisanslama
Turkish (tr), Field: Users, English: Users, Translated: Kullanıcılar
Turkish (tr), Field: User Panel Access, English: User Panel Access, Translated: Kullanıcı Paneli Erişimi
Turkish (tr), Field: Change password, English: Change password, Translated: Şifreyi değiştir
Turkish (tr), Field: View log files, English: View log files, Translated: Günlük dosyalarını görüntüle
Turkish (tr), Field: Samba workgroup, English: Samba workgroup, Translated: Samba çalışma grubu
Turkish (tr), Field: Software installer, English: Software installer, Translated: Yazılım Yükleyici
Simplified Chinese (zh-cn), Field: Backup or restore, English: Backup or restore, Translated: 备份或还原
Simplified Chinese (zh-cn), Field: Report a bug, English: Report a bug, Translated: 报告错误
Simplified Chinese (zh-cn), Field: Antivirus (ClamAV), English: Antivirus (ClamAV), Translated: 杀毒软件ClamAV
Simplified Chinese (zh-cn), Field: Date and time, English: Date and time, Translated: 日期和时间
Simplified Chinese (zh-cn), Field: Directory, English: Directory, Translated: 目录
Simplified Chinese (zh-cn), Field: Domains, English: Domains, Translated: 域名
Simplified Chinese (zh-cn), Field: E-mail, English: E-mail, Translated: 电子邮件
Simplified Chinese (zh-cn), Field: Hostnames and addresses, English: Hostnames and addresses, Translated: 主机名和地址
Simplified Chinese (zh-cn), Field: Shared areas (was ibays), English: Shared areas (was ibays), Translated: 共享区域(原 ibays
Simplified Chinese (zh-cn), Field: Home, English: Home, Translated: 主页
Simplified Chinese (zh-cn), Field: Legacy panel, English: Legacy panel, Translated: 旧版控制面板
Simplified Chinese (zh-cn), Field: Local networks, English: Local networks, Translated: 本地网络
Simplified Chinese (zh-cn), Field: Logout, English: Logout, Translated: 注销
Simplified Chinese (zh-cn), Field: Online manual, English: Online manual, Translated: 在线手册
Simplified Chinese (zh-cn), Field: NFS data share, English: NFS data share, Translated: NFS 数据共享
Simplified Chinese (zh-cn), Field: Port forwarding, English: Port forwarding, Translated: 端口转发
Simplified Chinese (zh-cn), Field: Printers, English: Printers, Translated: 打印机
Simplified Chinese (zh-cn), Field: Proxy settings, English: Proxy settings, Translated: 代理设置
Simplified Chinese (zh-cn), Field: Pseudonyms, English: Pseudonyms, Translated: 假名
Simplified Chinese (zh-cn), Field: Mail log file analysis, English: Mail log file analysis, Translated: 邮件日志文件分析
Simplified Chinese (zh-cn), Field: Quotas, English: Quotas, Translated: 配额
Simplified Chinese (zh-cn), Field: Reboot or shutdown, English: Reboot or shutdown, Translated: 重新启动或关机
Simplified Chinese (zh-cn), Field: Remote access, English: Remote access, Translated: 远程访问
Simplified Chinese (zh-cn), Field: Review configuration, English: Review configuration, Translated: 查看配置
Simplified Chinese (zh-cn), Field: Support and licensing, English: Support and licensing, Translated: 支持与授权
Simplified Chinese (zh-cn), Field: Users, English: Users, Translated: 用户
Simplified Chinese (zh-cn), Field: User Panel Access, English: User Panel Access, Translated: 用户面板访问
Simplified Chinese (zh-cn), Field: Change password, English: Change password, Translated: 更改密码
Simplified Chinese (zh-cn), Field: View log files, English: View log files, Translated: 查看日志文件
Simplified Chinese (zh-cn), Field: Samba workgroup, English: Samba workgroup, Translated: Samba 工作组
Simplified Chinese (zh-cn), Field: Software installer, English: Software installer, Translated: 软件安装程序
Traditional Chinese (zh-tw), Field: Backup or restore, English: Backup or restore, Translated: 備份或恢復
Traditional Chinese (zh-tw), Field: Report a bug, English: Report a bug, Translated: 回報錯誤
Traditional Chinese (zh-tw), Field: Antivirus (ClamAV), English: Antivirus (ClamAV), Translated: 防毒軟體 (ClamAV)
Traditional Chinese (zh-tw), Field: Date and time, English: Date and time, Translated: 日期和時間
Traditional Chinese (zh-tw), Field: Directory, English: Directory, Translated: 目錄
Traditional Chinese (zh-tw), Field: Domains, English: Domains, Translated: 網域
Traditional Chinese (zh-tw), Field: E-mail, English: E-mail, Translated: 電子郵件
Traditional Chinese (zh-tw), Field: Hostnames and addresses, English: Hostnames and addresses, Translated: 主機名稱和地址
Traditional Chinese (zh-tw), Field: Shared areas (was ibays), English: Shared areas (was ibays), Translated: 共享區域(原 ibays
Traditional Chinese (zh-tw), Field: Home, English: Home, Translated: 首頁
Traditional Chinese (zh-tw), Field: Legacy panel, English: Legacy panel, Translated: 傳統面板
Traditional Chinese (zh-tw), Field: Local networks, English: Local networks, Translated: 本地網路
Traditional Chinese (zh-tw), Field: Logout, English: Logout, Translated: 登出
Traditional Chinese (zh-tw), Field: Online manual, English: Online manual, Translated: 線上手冊
Traditional Chinese (zh-tw), Field: NFS data share, English: NFS data share, Translated: NFS 資料共享
Traditional Chinese (zh-tw), Field: Port forwarding, English: Port forwarding, Translated: 端口轉發
Traditional Chinese (zh-tw), Field: Printers, English: Printers, Translated: 印表機
Traditional Chinese (zh-tw), Field: Proxy settings, English: Proxy settings, Translated: 代理設定
Traditional Chinese (zh-tw), Field: Pseudonyms, English: Pseudonyms, Translated: 化名
Traditional Chinese (zh-tw), Field: Mail log file analysis, English: Mail log file analysis, Translated: 郵件日誌文件分析
Traditional Chinese (zh-tw), Field: Quotas, English: Quotas, Translated: 配額
Traditional Chinese (zh-tw), Field: Reboot or shutdown, English: Reboot or shutdown, Translated: 重新啟動或關機
Traditional Chinese (zh-tw), Field: Remote access, English: Remote access, Translated: 遠端存取
Traditional Chinese (zh-tw), Field: Review configuration, English: Review configuration, Translated: 檢視設定
Traditional Chinese (zh-tw), Field: Support and licensing, English: Support and licensing, Translated: 支援與授權
Traditional Chinese (zh-tw), Field: Users, English: Users, Translated: 用戶
Traditional Chinese (zh-tw), Field: User Panel Access, English: User Panel Access, Translated: 用戶面板存取
Traditional Chinese (zh-tw), Field: Change password, English: Change password, Translated: 更改密碼
Traditional Chinese (zh-tw), Field: View log files, English: View log files, Translated: 檢視日誌檔案
Traditional Chinese (zh-tw), Field: Samba workgroup, English: Samba workgroup, Translated: Samba 工作群組
Traditional Chinese (zh-tw), Field: Software installer, English: Software installer, Translated: 軟體安裝程式

View File

@ -1,147 +0,0 @@
{
PackageName: 'Nfsshare',
prefix: 'nfs',
MenuHeading: 'Network',
MenuDescription: 'NFS data share',
MenuNavigation: '2000 400',
firstPanel: 'TABLE',
signalEvent: 'smeserver-nfsshare-update',
html: [
{
Name: 'params',
route: 'PARAMS',
Header: 'NFS Share Contrib',
SubHeader: 'Manage NFS Ibay settings:',
Paragraph1: 'These parameters will be effective only if the share is enabled. The share is in /home/e-smith/files/ibays//files',
Input1: {
Name: 'IbayName',
Type: 'Text',
Label: 'Information Bay name',
Value: 'stash("IbayName")',
},
Input2: {
Name: 'ShareOwnerGrp',
Type: 'Selection',
Label: 'Share owner Group',
Value: [
'Write = admin, Read = group',
'Write = group, Read = everyone',
'Write = group, Read = group',
],
Default: 0,
},
Input3: {
Name: 'EnableNFSshare',
Type: 'Selection',
Label: 'Enable the NFS Share',
Value: [
'Disabled',
'Enabled',
],
Default: 0,
},
Input4: {
Name: 'ShareOnLocalNetwork',
Type: 'Selection',
Label: 'EnableShare on local network',
Value: [
'Disabled',
'Enabled',
],
Default: 0,
},
Paragraph2: 'For writing permissions,allowing the root user and using insecure ports, you must configure a list of one IP per line, being part of the local network(s).',
Input5: {
Name: 'NFSClientsAllowed',
Type: 'Textarea',
Label: 'NFS Client(s) allowed',
rows : 5
},
Input6: {
Name: 'FileSystemPermissions',
Type: 'Selection',
Label: 'File system permissions',
Value: [
'Read only',
'Read and Write',
],
Default: 0,
},
Input7: {
Name: 'WriteAsync',
Type: 'Selection',
Label: 'Write (a)synchronously',
Value: [
'Synchronous',
'Asynchronous',
],
},
Input8: {
Name: 'DelayWrite',
Type: 'Selection',
Label: 'Delays the disk writing',
Value: [
'Write delay',
'No write delay',
],
Default: 1,
},
Input9: {
Name: 'Squash',
Type: 'Selection',
Label: 'Squash the power of users',
Value: [
'All users squash',
'No root squash',
'root squash',
],
Default: 2,
},
Input10: {
Name: 'BrowseParents',
Type: 'Selection',
Label: 'Browse the parent folders',
Value: [
'Hide folder',
'Show folder',
],
Default: 0,
},
Input11: {
Name: 'SecurePorts',
Type: 'Selection',
Label: 'Requests on secure ports',
Value: [
'Secure',
'Insecure',
],
Default: 0,
},
Paragraph3: 'Set the uid and gid if you want all requests appear to be from one user or one group, otherwise leave blank',
Input12: {
Name: 'SetUID',
Type: 'Textinput',
Label: 'Set the UID.',
},
Input13: {
Name: 'SetGID',
Type: 'Textinput',
Label: 'Set the GID.',
},
Submit: 'Save',
},
{
Name: 'select_ibay',
route:'TABLE',
Header: 'NFS Share Contrib',
SubHeader: 'Manage NFS Ibay settings:',
Nextpanel: 'PARAMS',
Table1: {
Type:'Table',
TableControl:"ibays",
TopHeadings: ['Name','Description','Nfs status', 'Action'],
Columns: ['Name','Description','flag','Modify']
}
}
]
}

111
sm2gen.py
View File

@ -10,6 +10,8 @@ from datetime import datetime
from openai import OpenAI
import configparser
import json
from pathlib import Path
#
# To Do
@ -362,25 +364,31 @@ if __name__ == "__main__":
"-nco",
"--noController",
help="Stop it creating a controller file",
default="no",
default="yes",
)
parser.add_argument(
"-nh", "--noHtml", help="Stop it creating html files(s)", default="no"
"-nh", "--noHtml", help="Stop it creating html files(s)", default="yes"
)
parser.add_argument(
"-nl",
"--noLang",
help="Stop it creating language localise files(s)",
default="no",
default="yes",
)
parser.add_argument(
"-ncu", "--noCust", help="Stop it creating Custom controller file", default="no"
"-ncu", "--noCust", help="Stop it creating Custom controller file", default="yes"
)
args = parser.parse_args()
json_filename = args.filename
print(
f"JSON5 from {json_filename} with noController={args.noController}, noHtml={args.noHtml} and noLang={args.noLang}"
) # Not yet activated
#check if json5 file exists
json_file_path = Path(json_filename)
if not json_file_path.exists():
print(f"json5 file: {json_filename} not found")
quit(1)
# check syntax of JSON5
lint_json5(json_filename)
@ -400,17 +408,23 @@ if __name__ == "__main__":
lc_routes = lc_get_all_routes()
# File names
controller_file = "Targets/" + hl("PackageName") + ".pm"
custom_controller_file = "Targets/" + hl("PackageName") + "-Custom.pm"
# Define the path for the generated files
directory_path = Path("Targets/" + hl("PackageName"))
# Create the directory if it doesn't exist
directory_path.mkdir(parents=True, exist_ok=True)
target_directory_path = "Targets/" + hl("PackageName")+"/"
controller_file = target_directory_path + hl("PackageName") + ".pm"
custom_controller_file = target_directory_path + hl("PackageName") + "-Custom.pm"
# Call it .new if one is already there (and may have been editted by the developer)
if os.path.exists(custom_controller_file):
custom_controller_file = custom_controller_file + ".new"
layout_file = "Targets/" + hl("PackageName").lower() + ".html.ep"
layout_file = target_directory_path + hl("PackageName").lower() + ".html.ep"
partial_files = list()
for panel in routes:
partial_files.append("Targets/_" + hl("prefix") + "_" + panel + ".html.ep")
print(partial_files)
lex_file = "Targets/" + hl("PackageName").lower() + "_en.lex"
partial_files.append(target_directory_path + hl("prefix") + "_" + panel + ".html.ep")
print(f"Partial files to be created:{partial_files}")
lex_file = target_directory_path + hl("PackageName").lower() + "_en.lex"
tablecontrols = (
get_table_control_data()
) # arrays of hashes used to drive rows in tables
@ -619,43 +633,44 @@ if __name__ == "__main__":
file.write(file_content)
print(f"Write out modified:{filename}")
# Now generate all the translated lex files from a list of the languages and codes
#home_dir = os.path.dirname(json_filename)
languages_path = "Templates/languages.json"
with open(languages_path, "r") as file:
languages_str = file.read()
lang_dict = json.loads(languages_str)
with open(lex_file, "r") as file:
lex_str = file.read()
eng_lex_dict = convert_lex_to_dict(lex_str)
for lang_item in lang_dict:
print(f"Translating from english lex file to {lang_item['language']}")
code = lang_item["code"]
translated_lex_file = f"Targets/{hl('PackageName').lower()}_{code}.lex"
# Only do it if the lex file is missing
if not os.path.exists(translated_lex_file):
translated_dict = []
for lex_item in eng_lex_dict:
# Get it from ChatGPT
translated_text = get_translation(
lex_item["text"], lang_item["language"]
)
translated_dict.append({"id": lex_item["id"], "text": translated_text})
print(f"Writing out lex file for {lang_item['code']}")
with open(translated_lex_file, "w") as file:
for item in translated_dict:
# escape any nasties
translated_text = (
item["text"]
.replace("\\", r"\\")
.replace('"', r"\"")
.replace("'", r"\'")
# Now generate all the translated lex files from a list of the languages and codes
# if specifically requested
if not args.noLang:
languages_path = "Templates/languages.json"
with open(languages_path, "r") as file:
languages_str = file.read()
lang_dict = json.loads(languages_str)
with open(lex_file, "r") as file:
lex_str = file.read()
eng_lex_dict = convert_lex_to_dict(lex_str)
for lang_item in lang_dict:
print(f"Translating from english lex file to {lang_item['language']}")
code = lang_item["code"]
translated_lex_file = f"{target_directory_path}{hl('PackageName').lower()}_{code}.lex"
# Only do it if the lex file is missing
if not os.path.exists(translated_lex_file):
translated_dict = []
for lex_item in eng_lex_dict:
# Get it from ChatGPT
translated_text = get_translation(
lex_item["text"], lang_item["language"]
)
line = "'" + item["id"] + "' => " + '"' + translated_text + '",\n'
file.write(line)
# print(f"{item['id']} => {item['text']}\n")
else:
print(
f"Skipping the creation of {translated_lex_file} as it exists already"
)
translated_dict.append({"id": lex_item["id"], "text": translated_text})
print(f"Writing out lex file for {lang_item['code']}")
with open(translated_lex_file, "w") as file:
for item in translated_dict:
# escape any nasties
translated_text = (
item["text"]
.replace("\\", r"\\")
.replace('"', r"\"")
.replace("'", r"\'")
)
line = "'" + item["id"] + "' => " + '"' + translated_text + '",\n'
file.write(line)
# print(f"{item['id']} => {item['text']}\n")
else:
print(
f"Skipping the creation of {translated_lex_file} as it exists already"
)
quit() # end of the program