Compare commits
19 Commits
11_0_0-52_
...
11_0_0-66_
Author | SHA1 | Date | |
---|---|---|---|
63973f2bb4 | |||
82ff48e641 | |||
c5d863b3a0 | |||
4f00dfbdb1 | |||
f9bf8cf064 | |||
4f0617f6c3 | |||
4c94d768e2 | |||
1731f75cba | |||
5fe285f9f2 | |||
1c93be6e8a | |||
ce96f72726 | |||
0fd7137edd | |||
d179b06f69 | |||
c2427189d5 | |||
887af04bfe | |||
34b85b1cde | |||
a5758b4431 | |||
58aa423089 | |||
c0b4d1f90e |
9
root/usr/lib/systemd/system/bootsequence.service
Normal file
9
root/usr/lib/systemd/system/bootsequence.service
Normal file
@@ -0,0 +1,9 @@
|
||||
[Unit]
|
||||
Description=Koozali SME Server boot diagnostic tool
|
||||
After=sme-server.target
|
||||
PartOf=sme-server.target
|
||||
|
||||
[Service]
|
||||
Type=oneshot
|
||||
ExecStart=/bin/sh -c "/usr/bin/systemd-analyze plot > /usr/share/smanager/themes/default/public/images/boot.svg"
|
||||
RemainAfterExit=yes
|
@@ -43,7 +43,7 @@ $VERSION = eval $VERSION;
|
||||
use Exporter 'import';
|
||||
our @EXPORT_OK = qw(
|
||||
init_session get_mod_url theme_list
|
||||
getNavigation ip_number is_normal_password email_simple
|
||||
getNavigation ip_number validate_password is_normal_password email_simple
|
||||
mac_address_or_blank mac_address ip_number_or_blank
|
||||
lang_space get_routes_list subnet_mask get_reg_mask
|
||||
gen_locale_date_string get_public_ip_address
|
||||
@@ -212,6 +212,22 @@ sub setup_helpers {
|
||||
Mojo::JWT->new(secret => shift->app->secrets->[0] || die)
|
||||
});
|
||||
|
||||
$self->helper( selected_field => sub {
|
||||
my $self = shift;
|
||||
my @options = shift;
|
||||
my $selected = shift;
|
||||
my $count = 0;
|
||||
# search for occurence of value $selected in arrays; if found add selected => 'selected'
|
||||
for (my $i = 0; $i <= $#{$options[0]} ; $i++){
|
||||
if (grep /^$selected$/, @{$options[0][$i]}) {
|
||||
push( @{$options[0][$i]} ,'selected', 'selected' );
|
||||
$count++;last;
|
||||
}
|
||||
}
|
||||
push ( @{$options[0]} ,[ ucfirst( $selected), $selected, 'selected', 'selected'] ) if ($count <1);
|
||||
return @options;
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -772,7 +788,23 @@ sub ip_number {
|
||||
return 'OK';
|
||||
}
|
||||
|
||||
sub validate_password {
|
||||
my ($c, $strength, $pass) = @_;
|
||||
use esmith::util;
|
||||
use POSIX qw(locale_h);
|
||||
use locale;
|
||||
my $old_locale = setlocale(LC_ALL);
|
||||
setlocale(LC_ALL, "en_US");
|
||||
my $reason = esmith::util::validatePassword($pass,$strength);
|
||||
return "OK" if ($reason eq "ok");
|
||||
setlocale(LC_ALL, $old_locale);
|
||||
return
|
||||
$c->l("Bad Password Choice") . ": "
|
||||
. $c->l("The password you have chosen is not a good choice, because") . " "
|
||||
. $c->l($reason). ".";
|
||||
} ## end sub validate_password
|
||||
|
||||
# to deprecate : this is not anymore a way to validate our passwords
|
||||
sub is_normal_password {
|
||||
|
||||
# from CGI::FormMagick::Validator qw( password );
|
||||
|
@@ -32,10 +32,10 @@ use esmith::util;
|
||||
use esmith::lockfile;
|
||||
use esmith::BlockDevices;
|
||||
use constant DEBUG => $ENV{MOJO_SMANAGER_DEBUG} || 0;
|
||||
our $cdb = esmith::ConfigDB->open || die "Couldn't open config db";
|
||||
our $adb = esmith::AccountsDB->open || die "Couldn't open accounts db";
|
||||
our $rdb = esmith::ConfigDB->open('/etc/e-smith/restore')
|
||||
|| die "Couldn't open restore db";
|
||||
#our $cdb = esmith::ConfigDB->open || die "Couldn't open config db"; #remove as cached gives problems
|
||||
#our $adb = esmith::AccountsDB->open || die "Couldn't open accounts db";
|
||||
#our $rdb = esmith::ConfigDB->open('/etc/e-smith/restore') || die "Couldn't open restore db";
|
||||
my ($cdb,$adb,$rdb);
|
||||
my $es_backup = new esmith::Backup or die "Couldn't create Backup object\n";
|
||||
my @directories = $es_backup->restore_list;
|
||||
@directories = grep { -e "/$_" } @directories;
|
||||
@@ -52,6 +52,9 @@ sub main {
|
||||
my $c = shift;
|
||||
$c->app->log->info($c->log_req);
|
||||
my %bac_datas = ();
|
||||
$cdb = esmith::ConfigDB->open || die "Couldn't open config db";
|
||||
$adb = esmith::AccountsDB->open || die "Couldn't open accounts db";
|
||||
$rdb = esmith::ConfigDB->open('/etc/e-smith/restore');
|
||||
my $title = $c->l('bac_BACKUP_TITLE');
|
||||
my $notif;
|
||||
$bac_datas{'function'} = 'desktop_backup';
|
||||
@@ -108,6 +111,9 @@ sub do_display {
|
||||
my $rt = $c->current_route;
|
||||
my ($res, $result) = '';
|
||||
my $function = $c->param('Function');
|
||||
$cdb = esmith::ConfigDB->open || die "Couldn't open config db";
|
||||
$adb = esmith::AccountsDB->open || die "Couldn't open accounts db";
|
||||
$rdb = esmith::ConfigDB->open('/etc/e-smith/restore');
|
||||
|
||||
if ($function =~ /^(\S+)$/) {
|
||||
$function = $1;
|
||||
@@ -129,7 +135,11 @@ sub do_display {
|
||||
$c->stash(compressionlevel => $CompressionLevel, exclude => \@exclude, directories => \@directories);
|
||||
|
||||
# streaming download in template
|
||||
return $c->render("/backdown");
|
||||
$c->render(template=>"backdown");
|
||||
#sleep(30);
|
||||
# Redirect to the front page
|
||||
#$c->redirect_to('/backup');
|
||||
return ""
|
||||
} ## end if ($function eq 'desktop_backup')
|
||||
|
||||
if ($function eq 'tape_configure') {
|
||||
@@ -265,6 +275,9 @@ sub do_update {
|
||||
my $c = shift;
|
||||
$c->app->log->info($c->log_req);
|
||||
my $rt = $c->current_route;
|
||||
$cdb = esmith::ConfigDB->open || die "Couldn't open config db";
|
||||
$adb = esmith::AccountsDB->open || die "Couldn't open accounts db";
|
||||
$rdb = esmith::ConfigDB->open('/etc/e-smith/restore');
|
||||
my $function = $c->param('Function');
|
||||
DEBUG && warn("do_update $function");
|
||||
my %bac_datas = ();
|
||||
@@ -513,13 +526,13 @@ sub do_update {
|
||||
|
||||
# common part for all functions
|
||||
if ($res ne 'OK') {
|
||||
|
||||
if ($res eq 'NEXT') {
|
||||
$dest = 'back_' . $bac_datas{"function"};
|
||||
} else {
|
||||
$c->stash(error => $result);
|
||||
$dest = "back_$function";
|
||||
}
|
||||
$bac_datas{vfstype} = $c->param('VFSType');
|
||||
$c->stash(title => $title, bac_datas => \%bac_datas);
|
||||
return $c->render($dest);
|
||||
} ## end if ($res ne 'OK')
|
||||
@@ -1847,7 +1860,7 @@ sub showSize {
|
||||
} ## end sub showSize
|
||||
|
||||
sub desktopBackupRecordStatus {
|
||||
my ($backup, $phase, $status) = @_;
|
||||
my ($c,$backup, $phase, $status) = @_;
|
||||
my $now = time();
|
||||
warn("Backup terminated: $phase failed - status: $status\n");
|
||||
$backup->set_prop('EndEpochTime', "$now");
|
||||
@@ -2011,4 +2024,4 @@ sub vmount {
|
||||
return (qx(/bin/mount -t nfs -o nolock,timeo=30,retrans=1,retry=0 "$host:/$share" $mountdir 2>&1));
|
||||
}
|
||||
} ## end sub vmount
|
||||
1;
|
||||
1;
|
@@ -17,6 +17,9 @@ use File::Basename;
|
||||
use SrvMngr qw( gen_locale_date_string );
|
||||
our $cdb = esmith::ConfigDB->open or die "Couldn't open ConfigDB\n";
|
||||
|
||||
use constant FALSE => 0;
|
||||
use constant TRUE => 1;
|
||||
|
||||
# Get some basic info on the current SME install
|
||||
our $sysconfig = $cdb->get('sysconfig');
|
||||
our $systemmode = $cdb->get('SystemMode')->value;
|
||||
@@ -78,7 +81,7 @@ sub create_configuration_report {
|
||||
# create the reporting template
|
||||
my $configreport_template = Text::Template->new(
|
||||
TYPE => 'FILE',
|
||||
SOURCE => '/etc/e-smith/web/common/configuration_report.tmpl',
|
||||
SOURCE => '/usr/share/smanager/themes/default/public/configuration_report.tmpl',
|
||||
UNTAINT => 1
|
||||
);
|
||||
my $report_creation_time = gen_locale_date_string;
|
||||
@@ -114,13 +117,40 @@ sub create_configuration_report {
|
||||
|
||||
# prcess template
|
||||
my $result = $configreport_template->fill_in(HASH => \%vars);
|
||||
|
||||
#take out any multiple blank lines
|
||||
#$result =~ s/\n{3,}/\n/g;
|
||||
|
||||
|
||||
# write processed template to file
|
||||
open(my $cfgrep, '>', $configreportfile) or die "Could not create temporary file for config report!";
|
||||
print $cfgrep $result;
|
||||
close $cfgrep;
|
||||
|
||||
#check if boot phase has completed.
|
||||
if (wait_for_boot_completion()) {
|
||||
#And create boot analysis image - now run externally following boot.
|
||||
$result = `/usr/bin/systemctl start bootsequence.service`;
|
||||
if (!$? == 0) {
|
||||
warn "/usr/bin/systemd-analyze plot Command failed \n";
|
||||
}
|
||||
}
|
||||
|
||||
} ## end sub create_configuration_report
|
||||
|
||||
sub wait_for_boot_completion {
|
||||
my $timeout = 60; # 1-minute timeout
|
||||
my $end_time = time() + $timeout;
|
||||
while (time() < $end_time) {
|
||||
if (`systemctl list-jobs 2>&1` =~ /No jobs running/) {
|
||||
return TRUE; # Success
|
||||
}
|
||||
sleep 5;
|
||||
}
|
||||
warn "Boot did not complete within $timeout seconds.\n";
|
||||
return FALSE; # Failure
|
||||
} ## end wait_for_boot_completion
|
||||
|
||||
sub show_config_report {
|
||||
my $c = shift;
|
||||
my $out = '';
|
||||
@@ -143,4 +173,4 @@ sub download_config_report {
|
||||
'cleanup' => 1,
|
||||
);
|
||||
} ## end sub download_config_report
|
||||
1;
|
||||
1;
|
@@ -13,7 +13,7 @@ use warnings;
|
||||
use Mojo::Base 'Mojolicious::Controller';
|
||||
use Locale::gettext;
|
||||
use SrvMngr::I18N;
|
||||
use SrvMngr qw( theme_list init_session is_normal_password );
|
||||
use SrvMngr qw( theme_list init_session validate_password );
|
||||
use esmith::AccountsDB;
|
||||
use esmith::ConfigDB;
|
||||
use esmith::DomainsDB;
|
||||
@@ -385,31 +385,6 @@ sub check_password {
|
||||
return validate_password($c, $strength, $password);
|
||||
} ## end sub check_password
|
||||
|
||||
sub validate_password {
|
||||
my ($c, $strength, $pass) = @_;
|
||||
use Crypt::Cracklib;
|
||||
my $reason;
|
||||
|
||||
if ($strength eq "none") {
|
||||
return $c->l("Passwords must be at least 7 characters long") unless (length($pass) > 6);
|
||||
return "OK";
|
||||
}
|
||||
$reason = is_normal_password($c, $pass, undef);
|
||||
return $reason unless ($reason eq "OK");
|
||||
return "OK" unless ($strength eq "strong");
|
||||
|
||||
if (-f '/usr/lib64/cracklib_dict.pwd') {
|
||||
$reason = fascist_check($pass, '/usr/lib64/cracklib_dict');
|
||||
} else {
|
||||
$reason = fascist_check($pass, '/usr/lib/cracklib_dict');
|
||||
}
|
||||
$reason ||= "Software error: password check failed";
|
||||
return "OK" if ($reason eq "ok");
|
||||
return
|
||||
$c->l("Bad Password Choice") . ": "
|
||||
. $c->l("The password you have chosen is not a good choice, because") . " "
|
||||
. $c->($reason) . ".";
|
||||
} ## end sub validate_password
|
||||
|
||||
=head2 group_list()
|
||||
|
||||
|
@@ -134,7 +134,7 @@ sub networkAccess_list {
|
||||
return [
|
||||
[ $c->l('rma_NO_ACCESS') => 'off' ],
|
||||
[ $c->l('NETWORKS_ALLOW_LOCAL') => 'private' ],
|
||||
[ $c->l('NETWORKS_ALLOW_PUBLIC') => 'public' ]
|
||||
[ $c->l('NETWORKS_ALLOW_PUBLIC') => 'normal' ]
|
||||
];
|
||||
} ## end sub networkAccess_list
|
||||
|
||||
|
@@ -14,7 +14,7 @@ use Mojo::Base 'Mojolicious::Controller';
|
||||
use Locale::gettext;
|
||||
use SrvMngr::I18N;
|
||||
use SrvMngr qw(theme_list init_session
|
||||
is_normal_password email_simple);
|
||||
validate_password email_simple);
|
||||
|
||||
#use esmith::FormMagick qw( validate_password );
|
||||
#use CGI::FormMagick::Validator qw( call_fm_validation );
|
||||
@@ -434,31 +434,6 @@ sub check_password {
|
||||
return validate_password($c, $check_type, $pass1);
|
||||
} ## end sub check_password
|
||||
|
||||
sub validate_password {
|
||||
my ($c, $strength, $pass) = @_;
|
||||
use Crypt::Cracklib;
|
||||
my $reason;
|
||||
|
||||
if ($strength eq "none") {
|
||||
return $c->l("Passwords must be at least 7 characters long") unless (length($pass) > 6);
|
||||
return "OK";
|
||||
}
|
||||
$reason = is_normal_password($c, $pass, undef);
|
||||
return $reason unless ($reason eq "OK");
|
||||
return "OK" unless ($strength eq "strong");
|
||||
|
||||
if (-f '/usr/lib64/cracklib_dict.pwd') {
|
||||
$reason = fascist_check($pass, '/usr/lib64/cracklib_dict');
|
||||
} else {
|
||||
$reason = fascist_check($pass, '/usr/lib/cracklib_dict');
|
||||
}
|
||||
$reason ||= "Software error: password check failed";
|
||||
return "OK" if ($reason eq "ok");
|
||||
return $c->l("Bad Password Choice") . ": "
|
||||
. $c->l("The password you have chosen is not a good choice, because") . " "
|
||||
. $c->l($reason) . ".";
|
||||
} ## end sub validate_password
|
||||
|
||||
sub emailForward_list {
|
||||
my $c = shift;
|
||||
return [
|
||||
|
@@ -16,7 +16,7 @@ use esmith::ConfigDB;
|
||||
use esmith::AccountsDB;
|
||||
use Locale::gettext;
|
||||
use SrvMngr::I18N;
|
||||
use SrvMngr qw( theme_list init_session is_normal_password );
|
||||
use SrvMngr qw( theme_list init_session validate_password );
|
||||
#our $cdb = esmith::ConfigDB->open_ro || die "Couldn't open configuration db";
|
||||
|
||||
sub main {
|
||||
@@ -200,28 +200,4 @@ sub check_password {
|
||||
return validate_password($c, $strength, $password);
|
||||
} ## end sub check_password
|
||||
|
||||
sub validate_password {
|
||||
my ($c, $strength, $pass) = @_;
|
||||
use Crypt::Cracklib;
|
||||
|
||||
if ($strength eq "none") {
|
||||
return $c->l("Passwords must be at least 7 characters long") unless (length($pass) > 6);
|
||||
return "OK";
|
||||
}
|
||||
my $reason = is_normal_password($c, $pass, undef);
|
||||
return $reason unless ($reason eq "OK");
|
||||
return "OK" unless ($strength eq "strong");
|
||||
|
||||
if (-f '/usr/lib64/cracklib_dict.pwd') {
|
||||
$reason = fascist_check($pass, '/usr/lib64/cracklib_dict');
|
||||
} else {
|
||||
$reason = fascist_check($pass, '/usr/lib/cracklib_dict');
|
||||
}
|
||||
$reason ||= "Software error: password check failed";
|
||||
return "OK" if ($reason eq "ok");
|
||||
return
|
||||
$c->l("Bad Password Choice") . ": "
|
||||
. $c->l("The password you have chosen is not a good choice, because") . " "
|
||||
. $c->($reason) . ".";
|
||||
} ## end sub validate_password
|
||||
1;
|
||||
|
@@ -2,7 +2,7 @@
|
||||
'clm_LABEL_FILESYSTEM_SCAN_PERIOD' => 'Scan filesystem',
|
||||
'clm_DESC_FILESYSTEM_SCAN_PERIOD' => '<h2>General Settings</h2>
|
||||
If this option is enabled then the filesystem will be
|
||||
scanned for viruses.A report of any found viruses will be
|
||||
scanned for viruses. A report of any found viruses will be
|
||||
emailed to the administrator.',
|
||||
'clm_LABEL_QUARANTINE' => 'Quarantine infected files',
|
||||
'clm_LABEL_CLAM_VERSIONS' => 'ClamAV and db versions',
|
||||
|
@@ -14,26 +14,26 @@ web site for that domain.',
|
||||
i-bay as the content.',
|
||||
'dom_DOMAIN_NAME_VALIDATION_ERROR' => 'Error: unexpected or missing characters in domain name
|
||||
[_1].The domain name should contain one or more
|
||||
letters, numbers, periods and minus signs.Did not create new domain.',
|
||||
letters, numbers, periods and minus signs. Did not create new domain.',
|
||||
'dom_DOMAIN_DESCRIPTION_VALIDATION_ERROR' => 'Error: unexpected or missing characters in domain description
|
||||
[_1]. Did not create new domain.',
|
||||
'dom_DOMAIN_IN_USE_ERROR' => 'Error: domain [_1] is already in use.Did not create
|
||||
'dom_DOMAIN_IN_USE_ERROR' => 'Error: domain [_1] is already in use. Did not create
|
||||
new domain.',
|
||||
'dom_SYSTEM_DOMAIN_ERROR' => 'Error: domain [_1] is your system domain name.You
|
||||
cannot have a domain with the same name.Did not create new domain.',
|
||||
'dom_SYSTEM_DOMAIN_ERROR' => 'Error: domain [_1] is your system domain name. You
|
||||
cannot have a domain with the same name. Did not create new domain.',
|
||||
'dom_SUCCESSFULLY_CREATED' => 'Successfully created domain [_1].Your web
|
||||
server is now being restarted.The links on this page will be
|
||||
server is now being restarted. The links on this page will be
|
||||
inactive until the web server restart is complete.',
|
||||
'dom_MODIFY_TITLE' => 'Modify domain',
|
||||
'dom_NONEXISTENT_DOMAIN_ERROR' => 'Error: [_1] is not an existing domain.',
|
||||
'dom_SUCCESSFULLY_MODIFIED' => 'Successfully modified domain [_1].Your web
|
||||
server is now being restarted.The links on this page will be inactive until the web server restart is complete.',
|
||||
server is now being restarted. The links on this page will be inactive until the web server restart is complete.',
|
||||
'dom_REMOVE_TITLE' => 'Remove domain',
|
||||
'dom_REMOVE_DESCRIPTION' => 'You are about to remove the domain "[_1]" ([_2]).',
|
||||
'dom_ABOUT_TO_REMOVE' => 'Are you sure you wish to remove this domain ?',
|
||||
'dom_ERROR_WHILE_REMOVING_DOMAIN' => 'Error: internal failure while removing domain [_1].',
|
||||
'dom_SUCCESSFULLY_DELETED' => 'Successfully deleted domain [_1]. Your web server
|
||||
is now being restarted.The links on this page will be inactive
|
||||
is now being restarted. The links on this page will be inactive
|
||||
until the web server restart is complete.',
|
||||
'dom_DESC_CORPORATE_DNS_CURRENT' => 'Corporate DNS Settings',
|
||||
'dom_DOMAINS_PAGE_CORPORATE_DNS' => 'Modify corporate DNS settings',
|
||||
|
@@ -128,7 +128,7 @@
|
||||
'FM_IP_NUMBER3' => '[_1] is more than 255',
|
||||
'FM_USERNAME' => 'This field must look like a valid username (3 to 8 letters and numbers)',
|
||||
'FM_PASSWORD1' => 'You must provide a password.',
|
||||
'FM_PASSWORD2' => 'The password you provided was not a good password.A good password must contain all of the following: upper case letter, lower case letter, number, non-alphanumeric character, be at least 7 characters long.',
|
||||
'FM_PASSWORD2' => 'The password you provided was not a good password. A good password must contain all of the following: upper case letter, lower case letter, number, non-alphanumeric character, be at least 7 characters long.',
|
||||
'FM_MAC_ADDRESS1' => 'You must provide a MAC address.',
|
||||
'FM_MAC_ADDRESS2' => 'The MAC address you provided was not valid.',
|
||||
'FM_ERR_UNEXPECTED_DESC' => 'Error: unexpected or missing characters in description',
|
||||
|
@@ -4,7 +4,7 @@
|
||||
'grp_ACCOUNT_CONFLICT' => 'Error: the group "[_1]" can\'t be created because there is
|
||||
already a [_2] account of that name.',
|
||||
'grp_INVALID_GROUP_DESCRIPTION' => 'Error: unexpected or missing characters in group description',
|
||||
'grp_NO_MEMBERS' => 'Error: no members in group.Did not create new group.',
|
||||
'grp_NO_MEMBERS' => 'Error: no members in group. Did not create new group.',
|
||||
'grp_CREATED_GROUP' => 'Successfully created user group',
|
||||
'grp_DELETED_GROUP' => 'Successfully removed user group',
|
||||
'grp_MODIFIED_GROUP' => 'Successfully modifed user group',
|
||||
|
@@ -34,17 +34,17 @@ the local network. Please enter a valid IP address in the
|
||||
format "aaa.bbb.ccc.ddd".',
|
||||
'hos_ETHERNET_ADDRESS_DESCRIPTION' => 'The ethernet address is optional and causes the DHCP server to
|
||||
statically bind the local IP address to the computer with this
|
||||
ethernet address.If specified, it must be of the form
|
||||
ethernet address. If specified, it must be of the form
|
||||
"AA:BB:CC:DD:EE:FF" and must contain only the numbers 0-9 and
|
||||
the letters A-F.',
|
||||
'hos_CREATE_LOCAL_HOST_TITLE' => 'Create a new hostname referring to a local host.',
|
||||
'hos_DIDNT_ENTER_LOCAL_IP' => 'Error: You did not specify a Local IP address.IP
|
||||
'hos_DIDNT_ENTER_LOCAL_IP' => 'Error: You did not specify a Local IP address. IP
|
||||
addresses must contain only numbers and periods and
|
||||
be in the form "aaa.bbb.ccc.ddd".Did not create hostname.',
|
||||
'hos_IP_VALIDATION_ERROR' => 'Error: IP Address [_1] is
|
||||
invalid. IP Addresses must contain only numbers and periodsand be in the form "aaa.bbb.ccc.ddd". Did not create hostname.',
|
||||
'hos_MAC_ADDRESS_VALIDATION_ERROR' => 'Error: Ethernet address [_1]
|
||||
is invalid.Ethernet addresses must be in the
|
||||
is invalid. Ethernet addresses must be in the
|
||||
form "AA:BB:CC:DD:EE:FF" and only contain the
|
||||
numbers 0-9 and the letters A-F. Did not create
|
||||
hostname.',
|
||||
|
@@ -14,7 +14,7 @@ For example, you may wish to create a pseudonym
|
||||
"webmaster" for your "webdevelopers" group or a
|
||||
pseudonym "joe" for the user "joseph".</p>
|
||||
<p>The server automatically creates pseudonyms of the form
|
||||
firstname.lastname and firstname_lastname for every user
|
||||
firstname. lastname and firstname_lastname for every user
|
||||
on the system and a pseudonym "everyone" which contains
|
||||
all users on the system.</p>
|
||||
<p>Pseudonyms also allow you to create e-mail aliases for valid
|
||||
|
@@ -26,7 +26,9 @@ experienced administrators
|
||||
for remote problem diagnosis and resolution.
|
||||
We recommend leaving this
|
||||
parameter set to "No Access"
|
||||
unless you have a specific reason to do otherwise.',
|
||||
unless you have a specific reason to do otherwise.
|
||||
Note that an "Autoblock" feature is enabled by default when public access is enabled; to disable or tune this feature, refer to the manual at https://wiki.koozali.org/AutoBlock
|
||||
',
|
||||
'rma_TITLE_FTP_ACCESS' => 'FTP Settings',
|
||||
'rma_DESC_FTP_ACCESS' => 'You can also control <b>FTP</b> access to your server. We
|
||||
recommend leaving this parameter set to \'no access\' unless you
|
||||
@@ -75,11 +77,11 @@ connected to a server serial port.',
|
||||
'rma_LABEL_PPTP_ACCESS' => 'PPTP default user access',
|
||||
'rma_TITLE_TELNET_ACCESS' => 'Telnet Settings',
|
||||
'rma_DESC_TELNET_ACCESS' => 'WARNING:Telnet is currently enabled, but this feature is
|
||||
no longer supported.Telnet is inherently insecure and should only
|
||||
no longer supported. Telnet is inherently insecure and should only
|
||||
be used in circumstances where no practical alternative exists. You
|
||||
should change option to [_1] and use
|
||||
secure shell if remote access is
|
||||
required.Once disabled, telnet will no longer appear on this
|
||||
required. Once disabled, telnet will no longer appear on this
|
||||
screen. ',
|
||||
'rma_TITLE_IPSECRW' => 'IPSEC Client (Roadwarrior) Settings',
|
||||
'rma_DESC_IPSECRW' => 'You can allow IPSEC client access to your server, authenticated by
|
||||
@@ -90,4 +92,4 @@ to the number 0 unless you require IPSEC client access.',
|
||||
can do so here.<br>Any old certificates will no longer
|
||||
authenticate against the server, so <b><i>all IPSEC clients will
|
||||
need to import a new certificate!</i></b>.',
|
||||
'rma_LABEL_IPSECRW_RESET' => 'Reset digital certificates',
|
||||
'rma_LABEL_IPSECRW_RESET' => 'Reset digital certificates',
|
@@ -2,7 +2,7 @@
|
||||
'rvw_FORM_TITLE' => 'Review configuration',
|
||||
'rvw_DESCRIPTION' => 'This report summarizes the networking, server, and domain
|
||||
parameters on this server relevant to configuring
|
||||
the client computers on your network.You may wish to print this
|
||||
the client computers on your network. You may wish to print this
|
||||
page and use it as a reference.',
|
||||
'rvw_NETWORKING_PARAMS' => 'Networking Parameters',
|
||||
'rvw_SERVER_MODE' => 'Server Mode',
|
||||
|
@@ -4,7 +4,7 @@
|
||||
by the services running on your server.',
|
||||
'log_LOG_FILE_SELECT_DESC' => 'Choose a log file to view',
|
||||
'log_FILTER_PATTERN_DESC' => 'You may optionally specify a filter pattern to display only the
|
||||
lines from the log file which match this pattern.If you leave
|
||||
lines from the log file which match this pattern. If you leave
|
||||
this field blank, all available lines of the log file will be
|
||||
displayed. Note that this option is not used if you download the
|
||||
logfile.',
|
||||
|
@@ -0,0 +1,38 @@
|
||||
Configuration report created {$report_creation_time}
|
||||
|
||||
==================
|
||||
Base configuration
|
||||
==================
|
||||
SME server version: {$releaseversion}
|
||||
SME server mode: {$systemmode}
|
||||
SME server previous mode: {$previoussystemmode }
|
||||
Running Kernel: {$curkernel}
|
||||
===========================
|
||||
New RPMs not in base system
|
||||
===========================
|
||||
{ foreach $i (@newrpms) {
|
||||
$OUT .= "$i";
|
||||
}
|
||||
}
|
||||
===========================
|
||||
Custom and modified templates
|
||||
===========================
|
||||
{ foreach $i (@templates) {
|
||||
$OUT .= "$i";
|
||||
}
|
||||
}
|
||||
===========================
|
||||
Modified events
|
||||
===========================
|
||||
{ foreach $i (@events) {
|
||||
$OUT .= "$i";
|
||||
}
|
||||
}
|
||||
=======================
|
||||
Additional repositories
|
||||
=======================
|
||||
{ foreach $r (@repositories) {
|
||||
$OUT .= "$r";
|
||||
}
|
||||
}
|
||||
DONE!
|
@@ -74,10 +74,8 @@
|
||||
</p><br>
|
||||
|
||||
%= hidden_field 'Function' => $bac_datas->{'function'}
|
||||
<div class='center'>
|
||||
%= submit_button $c->l('bac_UPDATE_CONF'), class => 'action'
|
||||
</div>
|
||||
|
||||
% end
|
||||
</div>
|
||||
% end
|
||||
% end
|
@@ -30,10 +30,8 @@
|
||||
|
||||
%= hidden_field 'Function' => $bac_datas->{'function'}
|
||||
|
||||
<div class='center'>
|
||||
%= submit_button $c->l('bac_RESTORE_FROM_TAPE'), class => 'action'
|
||||
</div>
|
||||
|
||||
% end
|
||||
</div>
|
||||
% end
|
||||
% end
|
@@ -44,12 +44,10 @@
|
||||
</span></p>
|
||||
|
||||
%= hidden_field 'Function' => $bac_datas->{'function'} . '1'
|
||||
<div class='center'>
|
||||
%= submit_button $c->l('NEXT'), class => 'action'
|
||||
</div>
|
||||
|
||||
% end
|
||||
|
||||
</div>
|
||||
|
||||
% end
|
||||
% end
|
@@ -148,9 +148,7 @@
|
||||
|
||||
%= hidden_field 'Function' => $bac_datas->{function}
|
||||
%= hidden_field 'VFSType' => $bac_datas->{vfstype}
|
||||
<div class='center'>
|
||||
%= submit_button $c->l('bac_UPDATE_CONF'), class => 'action'
|
||||
</div>
|
||||
% end
|
||||
</div>
|
||||
% end
|
||||
% end
|
@@ -38,9 +38,7 @@
|
||||
</span><br><br>
|
||||
|
||||
%= hidden_field 'Function' => $bac_datas->{'function'}
|
||||
<div class='center'>
|
||||
%= submit_button $c->l('bac_RESTORE_FROM_WORKSTN'), class => 'action'
|
||||
</div>
|
||||
% end
|
||||
</div>
|
||||
% end
|
||||
% end
|
@@ -29,9 +29,7 @@
|
||||
%=l 'bac_YOU_MUST_REBOOT'
|
||||
</p>
|
||||
%= hidden_field 'Function' => $bac_datas->{'function'}
|
||||
<div class='center'>
|
||||
%= submit_button $c->l('bac_REBOOT'), class => 'action'
|
||||
</div>
|
||||
% end
|
||||
</div>
|
||||
|
||||
|
@@ -39,12 +39,10 @@
|
||||
</span><br>
|
||||
<br>
|
||||
%= hidden_field 'Function' => $bac_datas->{'function'}
|
||||
<div class='center'>
|
||||
%= submit_button $c->l('PERFORM'), class => 'action'
|
||||
</div>
|
||||
|
||||
% end
|
||||
|
||||
</div>
|
||||
|
||||
% end
|
||||
% end
|
@@ -41,9 +41,7 @@
|
||||
%= hidden_field 'Backupset' => $bac_datas->{'backupset'}
|
||||
%= hidden_field 'Filterexp' => $bac_datas->{'filterexp'}
|
||||
|
||||
<div class='center'>
|
||||
%= submit_button $c->l('PERFORM'), class => 'action'
|
||||
</div>
|
||||
|
||||
% end
|
||||
|
||||
|
@@ -24,9 +24,7 @@
|
||||
|
||||
%= form_for '/backupd' => (method => 'POST') => begin
|
||||
%= hidden_field 'Function' => $bac_datas->{'function'}
|
||||
<div class='center'>
|
||||
%= submit_button $c->l('NEXT'), class => 'action'
|
||||
</div>
|
||||
|
||||
% end
|
||||
|
||||
|
@@ -44,10 +44,8 @@
|
||||
|
||||
<br><br>
|
||||
%= hidden_field 'Function' => $bac_datas->{'function'} . '1'
|
||||
<div class='center'>
|
||||
%= submit_button $c->l('bac_VERIFY'), class => 'action'
|
||||
</div>
|
||||
|
||||
% end
|
||||
</div>
|
||||
% end
|
||||
% end
|
@@ -28,10 +28,8 @@
|
||||
|
||||
%= hidden_field 'Function' => $bac_datas->{'function'}
|
||||
|
||||
<div class='center'>
|
||||
%= submit_button $c->l('NEXT'), class => 'action'
|
||||
</div>
|
||||
|
||||
% end
|
||||
</div>
|
||||
% end
|
||||
% end
|
@@ -11,42 +11,52 @@
|
||||
# The events handle cases where mysqld is not enabled, and/or is not running.
|
||||
my $status = system("/sbin/e-smith/signal-event", "pre-backup", "desktop");
|
||||
if ($status) {
|
||||
desktopBackupRecordStatus($backup_rec, 'pre-backup', $status);
|
||||
return ($c->l('bac_OPERATION_STATUS_REPORT').
|
||||
$c->l('bac_ERR_PRE_BACKUP'));
|
||||
$c->desktopBackupRecordStatus($backup_rec, 'pre-backup', $status);
|
||||
return ($c->l('bac_OPERATION_STATUS_REPORT').$c->l('bac_ERR_PRE_BACKUP'));
|
||||
}
|
||||
|
||||
my $clvl = $c->stash('compressionlevel');
|
||||
my $cmd = "/bin/tar --directory / --create @{$c->stash('directories')} --file=-"
|
||||
. "@{$c->stash('exclude')} | /usr/bin/gzip $clvl ";
|
||||
my $cmd = "/bin/tar --create --file=- --directory / @{$c->stash('exclude')} "
|
||||
. "@{$c->stash('directories')} | /usr/bin/gzip $clvl ";
|
||||
|
||||
my $success = open my $fh, '-|', $cmd;
|
||||
unless ($success) { return "Error dowload command."; };
|
||||
|
||||
# Write chunk
|
||||
$c->res->headers->content_type('application/x-tar');
|
||||
$c->res->headers->content_disposition(qq/attachment; filename="smeserver.tgz"/);
|
||||
|
||||
my $cb;
|
||||
$cb = sub {
|
||||
my $c = shift;
|
||||
my $size = 500 * 1024;
|
||||
my $length = sysread($fh, my $buffer, $size);
|
||||
unless ($length) {
|
||||
close $fh;
|
||||
undef $cb;
|
||||
$c->finish;
|
||||
return;
|
||||
}
|
||||
$c->write_chunk($buffer, $cb);
|
||||
};
|
||||
$c->$cb;
|
||||
#unless ($success) { return "Error download command."; };
|
||||
if ($success) {
|
||||
# Try with download plugin - seems to fail to complete download and also
|
||||
# name of file deposited is not as required.
|
||||
#my $output = do { local $/; <$fh> };
|
||||
#close $fh;
|
||||
#$c->render_file(
|
||||
#data => $output,
|
||||
#filename => 'output.txt',
|
||||
#content_type => 'text/plain'
|
||||
#);
|
||||
# So organise it ourselves.
|
||||
$c->res->headers->content_type('application/x-tar');
|
||||
$c->res->headers->content_disposition(qq/attachment; filename="smeserver.tgz"/);
|
||||
my $cb;
|
||||
$cb = sub {
|
||||
my $c = shift;
|
||||
my $size = 500 * 1024;
|
||||
my $length = sysread($fh, my $buffer, $size);
|
||||
unless ($length) {
|
||||
close $fh;
|
||||
undef $cb;
|
||||
$c->finish;
|
||||
return;
|
||||
}
|
||||
$c->write_chunk($buffer, $cb);
|
||||
};
|
||||
$c->$cb;
|
||||
} else {
|
||||
$c->render(text => "Failed to execute command: $!", status => 500);
|
||||
}
|
||||
|
||||
# Remove the dumped tables.
|
||||
$status = system("/sbin/e-smith/signal-event", "post-backup", "desktop");
|
||||
if ($status) {
|
||||
desktopBackupRecordStatus($backup_rec, 'post-backup', $status);
|
||||
die ($c->l('bac_ERR_POST_BACKUP'),"\n");
|
||||
$c->desktopBackupRecordStatus($backup_rec, 'post-backup', $status);
|
||||
die ($c->l('bac_ERR_POST_BACKUP'),"\n");
|
||||
}
|
||||
|
||||
$now = time();
|
||||
@@ -54,3 +64,4 @@
|
||||
$backup_rec->set_prop('Result', "0");
|
||||
|
||||
%>
|
||||
1;
|
@@ -70,12 +70,10 @@
|
||||
</span></p>
|
||||
|
||||
<br>
|
||||
<div class='center'>
|
||||
%= submit_button $c->l('PERFORM'), class => 'action'
|
||||
</div>
|
||||
|
||||
%= submit_button $c->l('PERFORM'), class => 'action'
|
||||
|
||||
% end
|
||||
|
||||
</div>
|
||||
|
||||
% end
|
||||
% end
|
@@ -18,9 +18,16 @@
|
||||
<% my $btn = l('bugr_Download this report'); %>
|
||||
|
||||
%= form_for 'bugreportD' => (method => 'POST') => begin
|
||||
%= submit_button "$btn", class => 'action'
|
||||
%= hidden_field 'trt' => $bugr_datas->{trt}
|
||||
% end
|
||||
%= submit_button "$btn", class => 'action'
|
||||
%= hidden_field 'trt' => $bugr_datas->{trt}
|
||||
% end
|
||||
|
||||
% my $out = "================== <br />";
|
||||
% $out .= "Boot anaysis image (right click and save image to download)<br />";
|
||||
% $out .= "================== <br />";
|
||||
% $out .= "<img src='images/boot.svg' alt='boot timing image' width=95% >";
|
||||
|
||||
<br><%= $c->render_to_string(inline=>$out) %><br>
|
||||
|
||||
</div>
|
||||
|
||||
|
@@ -2,7 +2,7 @@
|
||||
<HR class="sme-copyrightbar">
|
||||
<a href="https://mojolicious.org" target="_blank"><img src="images/sme-mojo-logo-white.png" style="position:relative;"></a>
|
||||
<font class="sme-copyright">
|
||||
% if ( $c->is_logged_in ) {
|
||||
% if ( $c->is_logged_in && $c->is_admin) {
|
||||
SME Server <%= session 'releaseVersion' %>-<%= $c->app->VERSION %> Manager II
|
||||
% my $mode;
|
||||
% if (config->{mode} eq 'development'){ $mode = '-dev';} else { $mode = '';}
|
||||
|
@@ -1,3 +1,4 @@
|
||||
<% use POSIX qw(strftime); %>
|
||||
<div id="info">
|
||||
<% if (! $c->session->{PwdSet} ) { %>
|
||||
<div class="sme-error"><h5>
|
||||
@@ -13,4 +14,12 @@
|
||||
Warning: Development or debug mode enabled AND public access is offered !
|
||||
</h5></div>
|
||||
<% } %>
|
||||
<% my $curdate = strftime '%Y%m%d', localtime; %>
|
||||
<% if ( "$curdate" >= "20290531" ) { %>
|
||||
<div class="sme-error"><h5>
|
||||
URGENT NOTICE: As per May 31st 2029, SME Server 11 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 12 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 the latest version
|
||||
</h5></div>
|
||||
<% } %>
|
||||
</div>
|
@@ -2,7 +2,7 @@ Summary: Sme server navigation module : manager 2
|
||||
%define name smeserver-manager
|
||||
Name: %{name}
|
||||
%define version 11.0.0
|
||||
%define release 52
|
||||
%define release 66
|
||||
Version: %{version}
|
||||
Release: %{release}%{?dist}
|
||||
License: GPL
|
||||
@@ -143,6 +143,50 @@ true
|
||||
%defattr(-,root,root)
|
||||
|
||||
%changelog
|
||||
* Tue Mar 11 2025 Brian Read <brianr@koozali.org> 11.0.0-66.sme
|
||||
- Move the button for each backup panel to the left to conform to all the other panels.
|
||||
|
||||
* Sun Mar 09 2025 Brian Read <brianr@koozali.org> 11.0.0-65.sme
|
||||
- Sort out missing hostname on nfs and cifs workstation backup on error [SME: 12948]
|
||||
|
||||
* Sat Mar 08 2025 Brian Read <brianr@koozali.org> 11.0.0-64.sme
|
||||
- Add code to check for boot phase completion [SME: 12953]
|
||||
|
||||
* Thu Mar 06 2025 Brian Read <brianr@koozali.org> 11.0.0-63.sme
|
||||
- Add boot.svg image to Bug Report panel [SME: 12953]
|
||||
- Move report template to inside smanager tree
|
||||
- Add one-off systemd task to create boot.svg run from panel
|
||||
|
||||
* Tue Mar 04 2025 Brian Read <brianr@koozali.org> 11.0.0-62.sme
|
||||
- Update *_en.lex files to conform to standard english punctuation [SME: 11809]
|
||||
|
||||
* Tue Mar 04 2025 Brian Read <brianr@koozali.org> 11.0.0-61.sme
|
||||
- Arrange for the version in the footer to be suppressed if non admin login [SME: 12887]
|
||||
|
||||
* Thu Feb 27 2025 Brian Read <brianr@koozali.org> 11.0.0-60.sme
|
||||
- Enhance ssh security wording to mention autoblock in remoteaccess panel [SME: 8309]
|
||||
|
||||
* Thu Feb 27 2025 Brian Read <brianr@koozali.org> 11.0.0-59.sme
|
||||
- Arrange for Urgent notice to be displayed if date is past Rocky 8 EOL [SME: 12918]
|
||||
|
||||
* Tue Feb 25 2025 Brian Read <brianr@koozali.org> 11.0.0-58.sme
|
||||
- re-organise open db placement [SME: 12695]
|
||||
- Re-arrange parameters to tar to avoid warning message in logs [SME: 12943]
|
||||
|
||||
* Fri Feb 21 2025 Jean-Philippe Pialasse <jpp@koozali.org> 11.0.0-57.sme
|
||||
- upgrade validate_password sub to use esmith::util [SME: 12937]
|
||||
and deduplicate code
|
||||
|
||||
* Thu Feb 20 2025 Brian Read <brianr@koozali.org> 11.0.0-56.sme
|
||||
- open db in routes for backup controller file [SME: 12933]
|
||||
- Fix error handling for pre-backup fail [SME: 12934]
|
||||
|
||||
* Tue Feb 18 2025 Brian Read <brianr@koozali.org> 11.0.0-55.sme
|
||||
- fix public ftp access not showing on panel [SME: 12927]
|
||||
|
||||
* Sat Feb 15 2025 Jean-Philippe Pialasse <jpp@koozali.org> 11.0.0-54.sme
|
||||
- helper to set default value of select field using protected value [SME: 12923]
|
||||
|
||||
* Wed Feb 12 2025 Jean-Philippe Pialasse <jpp@koozali.org> 11.0.0-52.sme
|
||||
- move letsencrypt panel to smeserver-certificates [SME: 12916]
|
||||
|
||||
|
Reference in New Issue
Block a user