mirror of
https://github.com/webmin/webmin.git
synced 2026-08-21 14:30:41 +01:00
Compare commits
147 Commits
dev/deb-nm
...
2.650
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5aa69015f6 | ||
|
|
061a4ae0d3 | ||
|
|
031a8b8261 | ||
|
|
18296d3a55 | ||
|
|
18bf94af6a | ||
|
|
d2f9e339f2 | ||
|
|
1a2046b1e3 | ||
|
|
db8e34e528 | ||
|
|
6a1200bc03 | ||
|
|
c94ddc5ec8 | ||
|
|
0290ec16a5 | ||
|
|
41b476c87a | ||
|
|
7a68b1b994 | ||
|
|
0dbb5d2f89 | ||
|
|
27dcd2db4a | ||
|
|
147e53e5db | ||
|
|
a970bce5a5 | ||
|
|
d1d1bad4ae | ||
|
|
7878ef466f | ||
|
|
14c8d9b61e | ||
|
|
fa09b191b9 | ||
|
|
c72d232e2f | ||
|
|
6091f08e37 | ||
|
|
d42a6dc725 | ||
|
|
fac6b478b5 | ||
|
|
a0b67db65b | ||
|
|
26311baab9 | ||
|
|
7ba1a39271 | ||
|
|
45ca170c20 | ||
|
|
4064f0675c | ||
|
|
886352c6e8 | ||
|
|
f2fe6c930f | ||
|
|
762e400156 | ||
|
|
f5bf2be07b | ||
|
|
57d650cf9f | ||
|
|
859169bbae | ||
|
|
3f48d37e7a | ||
|
|
d3be11911e | ||
|
|
65f5beeb11 | ||
|
|
8ba6a02122 | ||
|
|
74fd072551 | ||
|
|
b75a95dd42 | ||
|
|
8c631bceeb | ||
|
|
0cf6654fd9 | ||
|
|
c08468ec48 | ||
|
|
cb4a322042 | ||
|
|
f2782073ce | ||
|
|
090aed60df | ||
|
|
b53ca5b618 | ||
|
|
7ebe3f7dfa | ||
|
|
fc546e1e65 | ||
|
|
29c14acf98 | ||
|
|
ea02aeb04a | ||
|
|
d306a63744 | ||
|
|
a9c6fe724a | ||
|
|
7fd89fb350 | ||
|
|
ccd2b13942 | ||
|
|
74bd78ae35 | ||
|
|
74fd0ca12d | ||
|
|
8157ff60d2 | ||
|
|
104b353476 | ||
|
|
bd051635fb | ||
|
|
8574c70d6b | ||
|
|
845f4a40e4 | ||
|
|
b97756b9fb | ||
|
|
8cca3a117f | ||
|
|
e580dcdd40 | ||
|
|
f4b121c059 | ||
|
|
25fea8f568 | ||
|
|
69548c4bb8 | ||
|
|
29f35302ae | ||
|
|
baad7081d3 | ||
|
|
7105021e80 | ||
|
|
30fb29a300 | ||
|
|
a1c88df428 | ||
|
|
cbebe22a14 | ||
|
|
5f72e2e97e | ||
|
|
9fb08dd8f0 | ||
|
|
13a1021661 | ||
|
|
4add8b2e0f | ||
|
|
7884e5f413 | ||
|
|
2187f96d21 | ||
|
|
899c8e270e | ||
|
|
3d26bc80b7 | ||
|
|
841c3e0442 | ||
|
|
5577c1d50f | ||
|
|
e62ee2bb4d | ||
|
|
2007354f27 | ||
|
|
bf397eac7b | ||
|
|
3325cc717e | ||
|
|
305b228c0e | ||
|
|
7ca3819d2b | ||
|
|
162a103c45 | ||
|
|
605e575908 | ||
|
|
1445cd7641 | ||
|
|
5b0b6fbf1f | ||
|
|
de57c42f4a | ||
|
|
ce998ac478 | ||
|
|
f65554cec1 | ||
|
|
8953add81e | ||
|
|
630de14410 | ||
|
|
804591f892 | ||
|
|
a56748a3fc | ||
|
|
854b8e8c2b | ||
|
|
b0fbe87592 | ||
|
|
bf722a658d | ||
|
|
02bdfc20db | ||
|
|
7d6af20741 | ||
|
|
ebbbf7cecb | ||
|
|
da12554998 | ||
|
|
84943943fc | ||
|
|
8dd06e3c34 | ||
|
|
8f8199a4bf | ||
|
|
53c3ee1c5d | ||
|
|
d94000afbd | ||
|
|
ed5bc3e4b6 | ||
|
|
2024a48acf | ||
|
|
db38923b20 | ||
|
|
0d4c65ec04 | ||
|
|
3215c0d0a3 | ||
|
|
c11d67d989 | ||
|
|
6457a1d7d1 | ||
|
|
91c9f6b4ce | ||
|
|
ad06644617 | ||
|
|
d788bbe9c2 | ||
|
|
9577737aeb | ||
|
|
ee50fa41cd | ||
|
|
80497c60b9 | ||
|
|
6026a20424 | ||
|
|
501bddabc8 | ||
|
|
e434d0b138 | ||
|
|
42a5838d9e | ||
|
|
e10b9eeb40 | ||
|
|
1e5f3dbb83 | ||
|
|
e8a3d9d21b | ||
|
|
4e6204f774 | ||
|
|
95197bb0af | ||
|
|
80da8d1915 | ||
|
|
f7b8ef379f | ||
|
|
758aa4a9f7 | ||
|
|
b2dc27c063 | ||
|
|
8dfee31542 | ||
|
|
a113309310 | ||
|
|
1eb4eb85a7 | ||
|
|
034d0a09ce | ||
|
|
c68d03b211 | ||
|
|
76833b9e68 |
2
.github/workflows/webmin.dev+webmin.yml
vendored
2
.github/workflows/webmin.dev+webmin.yml
vendored
@@ -1,4 +1,4 @@
|
||||
name: Build
|
||||
name: Package and upload artifacts
|
||||
|
||||
on:
|
||||
push:
|
||||
|
||||
49
CHANGELOG.md
49
CHANGELOG.md
@@ -1,5 +1,53 @@
|
||||
## Changelog
|
||||
|
||||
#### 2.650 (June 25, 2026)
|
||||
* Add new Systemd Services and Units module
|
||||
* Add new GRUB 2 Boot Loader module
|
||||
* Add new Kea DHCP Server module
|
||||
* Add WebSocket proxy support to the Webmin Servers Index module
|
||||
* Add basic Alpine Linux support
|
||||
* Add IP-based Let's Encrypt certificate support with Certbot 5.3
|
||||
* Add editable SSH public keys for newly added Unix users in Users and Groups module
|
||||
* Add improvements to custom Webmin temporary directory handling
|
||||
* Add quick service and port forwarding controls to the nftables module
|
||||
* Add optional pre- and post-scripts for scheduled package updates
|
||||
* Add option to control when scheduled package update email is sent
|
||||
* Add per-user RPC/API-only access option to the Webmin Users module
|
||||
* Add Apache 2.4 MPM process limit directives [#1821](https://github.com/webmin/webmin/issues/1821)
|
||||
* Add dhcpcd network backend for Debian and Raspberry Pi OS [#1607](https://github.com/webmin/webmin/issues/1607)
|
||||
* Add hardware RAID passthrough devices config in the SMART Status module [#1704](https://github.com/webmin/webmin/issues/1704)
|
||||
* Update Xterm.js to fix Control-C handling on iPadOS/Safari terminals
|
||||
* Update Webmin systemd service unit to run without forking
|
||||
* Fix IPv6 CIDR access control matching [#1570](https://github.com/webmin/webmin/issues/1570)
|
||||
* Fix Bootup and Shutdown module to show only services and not all units on systemd systems
|
||||
* Fix Let's Encrypt renewal scheduling to count from the last successful request
|
||||
* Fix NetworkManager detection on Debian and IPv6 DNS nameserver saving
|
||||
* Fix Dovecot configuration file handling when saving extra configs
|
||||
* Fix mailbox listing to skip unusable Maildir entries and remove stale deleted or moved entries
|
||||
* Fix Postfix module labels to identify virtual alias maps instead of virtual mailbox domains #1541
|
||||
* Fix Apache module to hide disabled default virtual hosts from the active server list
|
||||
* Fix Netplan DNS saving to preserve YAML structure
|
||||
* Fix BIND DNS handling of underscores, trailing dots, and mass record length checks
|
||||
* Fix MariaDB user creation when using auth plugin syntax
|
||||
* Fix PHP-FPM monitor on EL systems when using `/etc/php.ini` as the config file
|
||||
* Fix RPC-only accounts to block browser/module access before module ACL checks
|
||||
* Fix reflected XSS in Webmin status messages
|
||||
* Fix authentication state handling for SSL certificate logins and proxied keep-alive requests
|
||||
* Fix path validation in File Manager, package delete helpers, and Apache virtual host files
|
||||
* Update the Authentic theme to the latest version with various improvements and fixes:
|
||||
- Add zooming to stats history graphs by holding shift and scrolling in the dashboard
|
||||
- Add support for saving live stats history for up to 24 hours without performance impact
|
||||
- Add better support for the new Nginx, nftables, and upcoming systemd, Kea-DHCP, and GRUB 2 Webmin modules
|
||||
- Add ability to always show available dashboard panels in theme configuration
|
||||
- Add support for live stats and terminal WebSocket connections through Webmin Servers Index proxy links
|
||||
- Fix proxying when Webmin is accessed with a webprefix using Webmin Servers Index module
|
||||
- Fix theme UI helpers to escape generated markup more safely
|
||||
- Fix iOS terminal viewport sizing
|
||||
- Fix editor save handling, clean-state indication and dirty reload guard
|
||||
- Fix popover positioning, z-index and border color for help bubbles
|
||||
- Fix the active product switch border in the navigation menu for the dark palette
|
||||
- Fix to validate password reset return URLs
|
||||
|
||||
#### 2.641 (May 10, 2026)
|
||||
* Fixed a bug when editing monitors in the System and Server Status module
|
||||
* Fix Fail2Ban default jail options
|
||||
@@ -912,4 +960,3 @@ This updated includes the latest Authentic theme, a new IPv6 Firewall module for
|
||||
#### Version 1.140
|
||||
* Fixed a security hole that allowed any user to view the configuration of any module, even those that they should not have access to.
|
||||
* Fixed a security hole that could allow an attacker to lock valid users by sending a bogus username or password.
|
||||
|
||||
|
||||
File diff suppressed because one or more lines are too long
143
acl/acl-lib.pl
143
acl/acl-lib.pl
@@ -1433,6 +1433,148 @@ dbmclose(%sessiondb);
|
||||
return $sid;
|
||||
}
|
||||
|
||||
=head2 set_module_access(&modules, enabled, [&users-groups])
|
||||
|
||||
Grants or revokes Webmin module access for users and groups. The modules
|
||||
parameter must be an array ref of module names. The enabled flag should be
|
||||
1 to grant access, or 0 to revoke access. If the users-groups parameter is
|
||||
not given, all users and groups are updated. Otherwise, it must be an array
|
||||
ref of usernames and group names. Group names may be prefixed with @ to
|
||||
target only a group.
|
||||
|
||||
Returns the number of directly updated user and group records.
|
||||
|
||||
=cut
|
||||
sub set_module_access
|
||||
{
|
||||
my ($mods, $enabled, $usersgroups) = @_;
|
||||
$mods ||= [];
|
||||
return 0 if (!@$mods);
|
||||
my $set_module_access_list = sub {
|
||||
my ($obj, $key, $addmods) = @_;
|
||||
$addmods ||= $mods;
|
||||
my @old = @{$obj->{$key} || []};
|
||||
my @new;
|
||||
if ($enabled) {
|
||||
@new = &unique(@old, @$addmods);
|
||||
}
|
||||
else {
|
||||
my %remove = map { $_, 1 } @$mods;
|
||||
@new = grep { !$remove{$_} } @old;
|
||||
}
|
||||
return 0 if (join("\0", @old) eq join("\0", @new));
|
||||
$obj->{$key} = \@new;
|
||||
return 1;
|
||||
};
|
||||
my $own_module_updates = sub {
|
||||
my ($obj, $inherited) = @_;
|
||||
return $mods if (!$enabled);
|
||||
return [] if (!@{$obj->{'ownmods'} || []} && !@$inherited);
|
||||
return [ grep { &indexof($_, @$inherited) < 0 } @$mods ];
|
||||
};
|
||||
my @users = &list_users();
|
||||
my @groups = &list_groups();
|
||||
my $all = !defined($usersgroups);
|
||||
my (%target_user, %target_group);
|
||||
if (!$all) {
|
||||
foreach my $ug (@$usersgroups) {
|
||||
if ($ug =~ /^\@(.*)$/) {
|
||||
$target_group{$1} = 1;
|
||||
}
|
||||
else {
|
||||
$target_user{$ug} = 1;
|
||||
$target_group{$ug} = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
my $changed = 0;
|
||||
my (%user_group, %group_parent);
|
||||
foreach my $g (@groups) {
|
||||
foreach my $m (@{$g->{'members'} || []}) {
|
||||
if ($m =~ /^\@(.*)$/) {
|
||||
$group_parent{$1} = $g;
|
||||
}
|
||||
else {
|
||||
$user_group{$m} = $g;
|
||||
}
|
||||
}
|
||||
}
|
||||
my (@ordered_groups, %ordered_group, %ordering_group);
|
||||
my $add_ordered_group;
|
||||
$add_ordered_group = sub {
|
||||
my ($g) = @_;
|
||||
return if (!$g || $ordered_group{$g->{'name'}});
|
||||
return if ($ordering_group{$g->{'name'}}++);
|
||||
$add_ordered_group->($group_parent{$g->{'name'}});
|
||||
delete($ordering_group{$g->{'name'}});
|
||||
push(@ordered_groups, $g);
|
||||
$ordered_group{$g->{'name'}}++;
|
||||
};
|
||||
foreach my $g (@groups) {
|
||||
$add_ordered_group->($g);
|
||||
}
|
||||
|
||||
# Update groups first, so member users and sub-groups inherit the new set
|
||||
foreach my $g (@ordered_groups) {
|
||||
next if (!$all && !$target_group{$g->{'name'}});
|
||||
my $gchanged = 0;
|
||||
my $parent = $group_parent{$g->{'name'}};
|
||||
my $ownmods = $own_module_updates->(
|
||||
$g, [ @{$parent ? $parent->{'modules'} || [] : []} ]);
|
||||
$gchanged += $set_module_access_list->($g, "modules");
|
||||
$gchanged += $set_module_access_list->($g, "ownmods", $ownmods);
|
||||
if ($gchanged) {
|
||||
&modify_group($g->{'name'}, $g);
|
||||
&update_members(\@users, \@groups, $g->{'modules'},
|
||||
$g->{'members'});
|
||||
$changed++;
|
||||
}
|
||||
}
|
||||
|
||||
# Update directly targeted users
|
||||
foreach my $u (@users) {
|
||||
next if (!$all && !$target_user{$u->{'name'}});
|
||||
my $uchanged = 0;
|
||||
my $group = $user_group{$u->{'name'}};
|
||||
my $ownmods = $own_module_updates->(
|
||||
$u, [ @{$group ? $group->{'modules'} || [] : []} ]);
|
||||
$uchanged += $set_module_access_list->($u, "modules");
|
||||
$uchanged += $set_module_access_list->($u, "ownmods", $ownmods);
|
||||
if ($uchanged) {
|
||||
&modify_user($u->{'name'}, $u);
|
||||
$changed++;
|
||||
}
|
||||
}
|
||||
|
||||
if ($changed) {
|
||||
undef(%main::acl_hash_cache);
|
||||
undef(%main::acl_array_cache);
|
||||
}
|
||||
return $changed;
|
||||
}
|
||||
|
||||
=head2 enable_module_access(&modules, [&users-groups])
|
||||
|
||||
Grants users and groups access to one or more modules. This is a wrapper
|
||||
around set_module_access.
|
||||
|
||||
=cut
|
||||
sub enable_module_access
|
||||
{
|
||||
return &set_module_access($_[0], 1, $_[1]);
|
||||
}
|
||||
|
||||
=head2 disable_module_access(&modules, [&users-groups])
|
||||
|
||||
Revokes users and groups access to one or more modules. This is a wrapper
|
||||
around set_module_access.
|
||||
|
||||
=cut
|
||||
sub disable_module_access
|
||||
{
|
||||
return &set_module_access($_[0], 0, $_[1]);
|
||||
}
|
||||
|
||||
=head2 update_members(&allusers, &allgroups, &modules, &members)
|
||||
|
||||
Update the modules for members users and groups of some group. The parameters
|
||||
@@ -2368,4 +2510,3 @@ return $mailbox."\@".join(".", @doms);
|
||||
}
|
||||
|
||||
1;
|
||||
|
||||
|
||||
100
acl/lang/no
100
acl/lang/no
@@ -1,9 +1,9 @@
|
||||
index_title=Webmin Brukere
|
||||
index_user=Brukere
|
||||
index_modules=Moduler
|
||||
index_create=Opprett ny Webmin bruker
|
||||
index_create=Opprett ny Webmin-bruker
|
||||
index_screate=Opprett ny sikker bruker
|
||||
index_convert=Konverter Unix til Webmin brukere
|
||||
index_convert=Konverter Unix til Webmin-brukere
|
||||
index_cert=Krever SSL sertifikat
|
||||
index_twofactor=To-faktor autentisering
|
||||
index_certmsg=Klikk på denne knappen for å spørre etter et SSL sertifikat som vil gi deg sikker login i Webmin uten å måtte skrive brukernavn og passord.
|
||||
@@ -14,7 +14,7 @@ index_global=Global ACL
|
||||
index_users=Webmin Brukere
|
||||
index_groups=Webmin Grupper
|
||||
index_group=Gruppe
|
||||
index_nousers=Ingen editerbar Webmin bruker er definert.
|
||||
index_nousers=Ingen editerbar Webmin-bruker er definert.
|
||||
index_nogroups=Ingen editerbar Webmin gruppe er definert.
|
||||
index_gcreate=Lag en ny Webmin gruppe
|
||||
index_members=Medlemmer
|
||||
@@ -30,11 +30,11 @@ index_eglist=Kunne ikke liste grupper : $1
|
||||
|
||||
edit_title=Rediger Webmin Bruker
|
||||
edit_title2=Lag Webmin Bruker
|
||||
edit_title3=Opprett sikker Webmin bruker
|
||||
edit_readonly=Denne Webmin brukeren bør ikke redigeres siden den vedlikeholdes av modulen $1. <a href='$2'>Klikk her</a> for å ignorere denne advarselen og redigere brukeren allikevel - men vær oppmerksom på at manuelle endringer kan bli overskrevet!
|
||||
edit_rights=Tilgangsrettigheter for Webmin bruker
|
||||
edit_title3=Opprett sikker Webmin-bruker
|
||||
edit_readonly=Denne Webmin-brukeren bør ikke redigeres siden den vedlikeholdes av modulen $1. <a href='$2'>Klikk her</a> for å ignorere denne advarselen og redigere brukeren allikevel - men vær oppmerksom på at manuelle endringer kan bli overskrevet!
|
||||
edit_rights=Tilgangsrettigheter for Webmin-bruker
|
||||
edit_user=Brukernavn
|
||||
edit_cloneof=Klober Webmin bruker
|
||||
edit_cloneof=Klober Webmin-bruker
|
||||
edit_real=Virkelig navn
|
||||
edit_group=Medlem av gruppe
|
||||
edit_pass=Passord
|
||||
@@ -89,7 +89,7 @@ edit_selall=Velg alle
|
||||
edit_invert=Inverter valg
|
||||
edit_hide=Skjul ubrukte
|
||||
edit_switch=Bytt til bruker
|
||||
edit_return=Webmin bruker
|
||||
edit_return=Webmin-bruker
|
||||
edit_return2=Webmin gruppe
|
||||
edit_rbacdeny=RBAC tilgangsmodus
|
||||
edit_rbacdeny0=RBAC kontrollerer valgte modul ACLer
|
||||
@@ -126,21 +126,21 @@ save_eoverlay=Et tema-overlegg kan ikke velges med mindre et tema er
|
||||
save_edeny=Du kan ikke nekte deg selv tilgang til Webmin Bruker modulen
|
||||
save_eos=Det samme som Unix passord opsjonen er ikke støttet på ditt operativsystem.
|
||||
save_emd5=Det samme som Unix passord opsjonen kan ikke brukes på systemer med MD5 kryptering
|
||||
save_eunix=Unix bruker '$1' eksisterer ikke
|
||||
save_eunix=Unix-brukeren '$1' eksisterer ikke
|
||||
save_emod=Du kan ikke bevilge tilgang til modul '$1'
|
||||
save_ecreate=Du har ikke tilgang til å opprette brukere
|
||||
save_euser=Du har ikke tilgang til å editere denne brukeren
|
||||
save_euser=Du har ikke tilgang til å redigere denne brukeren
|
||||
save_ecolon=Passord kan ikke inneholde : karakteren
|
||||
save_epass=Passord er ikke gyldig : $1
|
||||
save_eself=Din vanlige IP adresse ($1) vil bli nektet
|
||||
save_eself=Din vanlige IP-adresse ($1) vil bli nektet
|
||||
save_epam=PAM autentisering er ikke tilgjengelig fordi <tt>Authen::PAM</tt> Perl modulen ikke er installert eller ikke virker ordentlig.
|
||||
save_epam2=Du kan bruke Webmin's Perl Modules modul til <a href='$1'>laste ned å installere Authen::PAM</a> nå.
|
||||
save_egroup=Du har ikke rettigheter til å tildele til den gruppen
|
||||
save_enone=Ingen adresse er tastet inn
|
||||
save_enet='$1' er ikke en gyldig nettverks adresse
|
||||
save_enet='$1' er ikke en gyldig nettverksadresse
|
||||
save_emask='$1' er ikke en gyldig nettmaske
|
||||
save_eip='$1' er ikke en komplett IP eller nettverks adresse
|
||||
save_ehost=Kunne ikke finne IP adresse for '$1'
|
||||
save_eip='$1' er ikke en komplett IP eller nettverksadresse
|
||||
save_ehost=Kunne ikke finne IP-adresse for '$1'
|
||||
save_elogouttime=Manglende eller ikke-numerisk tid for utlogging ved inaktivitet
|
||||
save_eminsize=Manglende eller ikke-numerisk minimum passordlengde
|
||||
save_edays=Ingen tillatte dager valgt
|
||||
@@ -223,11 +223,11 @@ acl_times=Kan endre tillatte innloggings-tider?
|
||||
acl_pass=Kan endre passord-begrensinger?
|
||||
acl_sql=Kan konfigurere databasen for brukere og grupper?
|
||||
|
||||
log_modify=Modifisert Webmin bruker $1
|
||||
log_rename=Skiftet navn på Webmin bruker $1 til $2
|
||||
log_create=Opprettet Webmin bruker $1
|
||||
log_clone=Klonet Webmin bruker $1 til $2
|
||||
log_delete=Slettet Webmin bruker $1
|
||||
log_modify=Modifisert Webmin-bruker $1
|
||||
log_rename=Skiftet navn på Webmin-bruker $1 til $2
|
||||
log_create=Opprettet Webmin-bruker $1
|
||||
log_clone=Klonet Webmin-bruker $1 til $2
|
||||
log_delete=Slettet Webmin-bruker $1
|
||||
log_acl=Oppdatert tilgang for $1 i $2
|
||||
log_reset=Tilbakestilte tilgang for $1 i $2
|
||||
log_cert=Utlevert sertifikat for bruker $1
|
||||
@@ -235,10 +235,10 @@ log_modify_g=Modifisert Webmin gruppe $1
|
||||
log_rename_g=Forandret navn på Webmin gruppe $1 til $2
|
||||
log_create_g=Opprettet Webmin gruppe $1
|
||||
log_delete_g=Slettet Webmin gruppe $1
|
||||
log_switch=Byttet til Webmin bruker $1
|
||||
log_delete_users=Slettet $1 Webmin brukere
|
||||
log_switch=Byttet til Webmin-bruker $1
|
||||
log_delete_users=Slettet $1 Webmin-brukere
|
||||
log_delete_groups=Slettet $1 Webmin grupper
|
||||
log_joingroup=La til $1 Webmin brukere i gruppe $2
|
||||
log_joingroup=La til $1 Webmin-brukere i gruppe $2
|
||||
log_pass=Endret passord-begrensinger
|
||||
log_unix=Endret unix bruker-autentisering
|
||||
log_sync=Endret unix bruker-synkronisering
|
||||
@@ -273,7 +273,7 @@ gsave_edesc=Ugyldig beskrivelse - tegnet : er ikke tillatt
|
||||
convert_title=Konverter Brukere
|
||||
convert_ecannot=Du har ikke tilgang til å konvertere Unix brukere
|
||||
convert_nogroups=Ingen Webmin gruppe er definert på ditt system. Du må i det minste lage en gruppe før du konverterer brukere, dette for å kunne sette rettigheter for konverterte brukere.
|
||||
convert_desc=Denne Dette feltet lar deg konvertere eksisterende Unix brukere til Webmin brukere. Rettighetene til hver nye Webmin bruker vil bestemmes av rettighetene til gruppen som valgt over.
|
||||
convert_desc=Denne Dette feltet lar deg konvertere eksisterende Unix-brukere til Webmin-brukere. Rettighetene til hver nye Webmin-bruker vil bestemmes av rettighetene til gruppen som valgt over.
|
||||
convert_0=Alle brukere
|
||||
convert_1=Bare brukere
|
||||
convert_2=Alle unntagen brukere
|
||||
@@ -284,43 +284,43 @@ convert_sync2=Synk. passord med Unix-bruker i fremtiden?
|
||||
convert_ok=Konverter nå
|
||||
convert_err=Kunne ikke konvertere brukere
|
||||
convert_eusers=Ingen brukere inntastet
|
||||
convert_egroup=Unix gruppe eksisterer ikke
|
||||
convert_emin=Ugyldig minimum bruker ID (UID)
|
||||
convert_emax=Ugyldig maksimum bruker ID (UID)
|
||||
convert_egroup=Unix-gruppen eksisterer ikke
|
||||
convert_emin=Ugyldig minimum bruker-ID (UID)
|
||||
convert_emax=Ugyldig maksimum bruker-ID (UID)
|
||||
convert_ewgroup=Ingen sånn Webmin gruppe
|
||||
convert_ewgroup2=Du har ikke rettigheter til å tilordne nye brukere til denne gruppen
|
||||
convert_skip=Hoppet over $1
|
||||
convert_exists=$1 Eksisterer allerede
|
||||
convert_invalid=$1 er ikke et gyldig Webmin brukernavn
|
||||
convert_invalid=$1 er ikke et gyldig Webmin-brukernavn
|
||||
convert_added=$1 er lagt til
|
||||
convert_msg=Konverterer Unix brukere...
|
||||
convert_msg=Konverterer Unix-brukere...
|
||||
convert_user=Unix-bruker
|
||||
convert_action=Handling utført
|
||||
convert_action=Handling utført
|
||||
convert_done=$1 brukere konvertert, $2 ugyldig, $3 finnes allerede, $4 ekskludert.
|
||||
convert_users=Brukere som skal konverteres
|
||||
|
||||
sync_title=Unix Bruker Synkronisering
|
||||
sync_desc=Dette feltet lar deg konfigurere automatisk synkronisering av Unix brukere laget via Webmin og brukere i denne modulen.
|
||||
sync_title=Unix-brukersynkronisering
|
||||
sync_desc=Dette feltet lar deg konfigurere automatisk synkronisering av Unix-brukere laget via Webmin og brukere i denne modulen.
|
||||
sync_nogroups=Ingen Webmin gruppe er definert på ditt system. Du må i det minste lage en gruppe før du konverterer brukere, dette for å kunne sette rettigheter for konverterte brukere.
|
||||
sync_when=Synkroniser når
|
||||
sync_create=Opprett Webmin bruker når en Unix bruker blir laget.
|
||||
sync_update=Oppdater passende Webmin bruker når Unix brukere blir oppdatert.
|
||||
sync_delete=Slett passende Webmin bruker når Unix brukere blir slettet.
|
||||
sync_create=Opprett Webmin-bruker når en Unix bruker blir laget.
|
||||
sync_update=Oppdater passende Webmin-bruker når Unix-brukere blir oppdatert.
|
||||
sync_delete=Slett passende Webmin-bruker når Unix-brukere blir slettet.
|
||||
sync_group=Tilordne ny bruker til Webmin gruppe
|
||||
sync_unix=Sett passord for nye brukere til Unix autentisering
|
||||
sync_ecannot=Du har ikke rettigheter til å konfigurere bruker synkronisering.
|
||||
|
||||
unix_title=Unix Bruker Autentisering
|
||||
unix_title=Unix-brukerautentisering
|
||||
unix_err=Kunne ikke lagre Unix autentisering
|
||||
unix_desc=Denne siden lar deg konfigurere Webmin til verifisere login forsøk med systemets bruker liste og PAM. Dette kan være nyttig hvis du har mange eksisterende Unix brukere som du ønsker å gi tilgang til Webmin.
|
||||
unix_def=Tillat bare login av Webmin brukere
|
||||
unix_sel=Tillat Unix brukere i listen nedenfor å logge inn ..
|
||||
unix_desc=Denne siden lar deg konfigurere Webmin til verifisere login forsøk med systemets bruker liste og PAM. Dette kan være nyttig hvis du har mange eksisterende Unix-brukere som du ønsker å gi tilgang til Webmin.
|
||||
unix_def=Tillat bare login av Webmin-brukere
|
||||
unix_sel=Tillat Unix-brukere i listen nedenfor å logge inn ..
|
||||
unix_mode=Tillat
|
||||
unix_mall=Alle brukere
|
||||
unix_group=Medlemmer i gruppen..
|
||||
unix_user=Tillat alle Unix brukere login med rettigheter som Users
|
||||
unix_user=Tillat alle Unix-brukere login med rettigheter som Users
|
||||
unix_who=Bruker eller gruppe
|
||||
unix_to=Som Webmin bruker
|
||||
unix_to=Som Webmin-bruker
|
||||
unix_ecannot=Du har ikke rettigheter til å konfigurere Unix bruker autentisering
|
||||
unix_epam=Unix autentisering er ikke tilgjengelig fordi <tt>Authen::PAM</tt> Perl modul ikke er installert eller ikke virker som den skal.
|
||||
unix_all=Tillat alle Unix brukere
|
||||
@@ -329,12 +329,12 @@ unix_deny=Nekt listede Unix brukere
|
||||
unix_none=Ingen brukere angitt
|
||||
unix_euser='$1' er ikke et gyldig brukernavn
|
||||
unix_egroup='$1' er ikke et gyldig gruppenavn
|
||||
unix_shells=Nekt Unix brukere hvis skall ikke finnes i filen
|
||||
unix_shells=Nekt Unix-brukere hvis skall ikke finnes i filen
|
||||
unix_eshells=Manglende eller ikke-eksisterende shells fil
|
||||
unix_restrict2=Ekstra restriksjoner
|
||||
unix_ewhogroup=Manglende tillatt gruppe i rad $1
|
||||
unix_ewhouser=Manglende tilllatt bruker i rad $1
|
||||
unix_enone=Ingen tillatte Unix brukere og grupper ble angitt
|
||||
unix_enone=Ingen tillatte Unix-brukere og grupper ble angitt
|
||||
unix_same=<Samme bruker eller gruppe>
|
||||
unix_sudo=TIllatt brukere som kan kjøre alle kommandoer via <tt>sudo</tt> å logge inn som <tt>root</tt>
|
||||
unix_pamany=Behandle brukere som bare sender PAM validering som $1
|
||||
@@ -345,9 +345,9 @@ unix_utable=Tillatte Unix brukere
|
||||
|
||||
sessions_title=Aktuell Login Session
|
||||
sessions_id=Sessions ID
|
||||
sessions_user=Webmin bruker
|
||||
sessions_user=Webmin-bruker
|
||||
sessions_login=Innlogget
|
||||
sessions_host=IP adresse
|
||||
sessions_host=IP-adresse
|
||||
sessions_lview=Se logger..
|
||||
sessions_actions=Handlinger..
|
||||
sessions_logouts=Vis også utloggede sesjoner..
|
||||
@@ -357,7 +357,7 @@ sessions_in=Innlogget
|
||||
sessions_out=Logget ut
|
||||
sessions_kill=Koble fra..
|
||||
|
||||
logins_title=Siste Webmin innlogginger
|
||||
logins_title=Siste Webmin-innlogginger
|
||||
|
||||
hide_title=Skjul ubrukte moduler
|
||||
hide_desc=Følgende moduler vil bli fjernet fra modul tilgangslisten for $1 siden deres tilhørende tjenere ikke er installert på systemet ditt ..
|
||||
@@ -374,7 +374,7 @@ rbac_desc=Webmin's RBAC integration provides a way for user module and ACL permi
|
||||
rbac_esolaris=RBAC støttes bare på Solaris systemer for øyeblikket, og kan derfor ikke brukes på dette $1 systemet.
|
||||
rbac_eperl=Perl-modulen $1, som behøves for RBAC integrasjon, er ikke installert. <a href='$2'>Klikk her</a> for å installere den nå.
|
||||
rbac_ecpan=Du har ikke tilgang til Webmins Perl Moduler side for å kunne installere den nødvendige $1 modulen for RBAC integrasjon.
|
||||
rbac_ok=RBAC integrasjon er tilgjengelig for dette systemet, og kan aktiveres per bruker på siden Rediger Webmin bruker.
|
||||
rbac_ok=RBAC integrasjon er tilgjengelig for dette systemet, og kan aktiveres per bruker på siden Rediger Webmin-bruker.
|
||||
|
||||
udeletes_err=Kunne ikke slette brukere
|
||||
udeletes_jerr=Kunne ikke legg til brukere i gruppe
|
||||
@@ -391,7 +391,7 @@ gdeletes_rusure=Er du sikker på at du ønsker å slette de $1 valgte gruppene o
|
||||
gdeletes_users=Valgte grupper: $1
|
||||
gdeletes_ok=Slett grupper
|
||||
|
||||
pass_title=Passord begrensinger
|
||||
pass_title=Passordbegrensinger
|
||||
pass_ecannot=Du har ikke lov til å redigere passord-begrensinger
|
||||
pass_header=Innstillinger for Webmin passord begrensinger
|
||||
pass_minsize=Minimum passordlengde
|
||||
@@ -424,7 +424,7 @@ cpass_old=Gamle passord kan ikke brukes på nytt
|
||||
|
||||
sql_title=Bruker- og gruppe-database
|
||||
sql_ecannot=Du har ikke lov til å konfigurere bruker- og gruppedatabasen
|
||||
sql_header=Instillinger for database backend for brukere og grupper
|
||||
sql_header=Innstillinger for database backend for brukere og grupper
|
||||
sql_host=Vertsnavn
|
||||
sql_user=Brukernavn
|
||||
sql_pass=Passord
|
||||
@@ -456,7 +456,7 @@ sql_edb=Ugyldig databasenavn (mellomrom ikke tillatt)
|
||||
sql_eprefix=Manglende eller ugyldig base DN (mellomrom ikke tillatt)
|
||||
sql_eprefix2=Ugyldig-utseende base DN - skal være på formen <tt>dc=mittdomene,dc=no</tt>
|
||||
sql_title2=Opprett manglende tabeller
|
||||
sql_tableerr=Instillinger for bruker- og gruppedatabase er gyldig, men noen tabeller som Webmin trenger, mangler : $1
|
||||
sql_tableerr=Innstillinger for bruker- og gruppedatabase er gyldig, men noen tabeller som Webmin trenger, mangler : $1
|
||||
sql_tableerr2=Klikk på knappen <b>Opprett tabeller</b> nedenfor, for å få opprettet dem automatisk, eller du kan kjøre SQL uttrykket nedenfor manuelt.
|
||||
sql_make=Opprett tabeller
|
||||
sql_title3=Opprett manglende DN
|
||||
@@ -489,7 +489,7 @@ twofactor_title=To-faktor autentisering
|
||||
twofactor_disable=Deaktiver to-faktor autentisering
|
||||
twofactor_already=Din Webmin-bruker har allerede to-faktor autentisering aktivert med leverandør %1 og konto ID %2.
|
||||
twofactor_already2=Webmin-brukeren %3 har allerede to-faktor autentisering aktivert med leverandør %1 og konto ID %2.
|
||||
twofactor_desc=Denne siden lar deg aktivere to-faktor autentisering for din Webmin bruker vha. <a href='$2' target=_blank>$1</a>. Når denne er aktivert kreves det et ekstra autentiserings-token når du logger inn på Webmin.
|
||||
twofactor_desc=Denne siden lar deg aktivere to-faktor autentisering for din Webmin-bruker vha. <a href='$2' target=_blank>$1</a>. Når denne er aktivert kreves det et ekstra autentiserings-token når du logger inn på Webmin.
|
||||
twofactor_desc2=Denne siden lar deg aktivere to-faktor autentisering for Webmin-brukeren $1 vha. <a href='$2' target=_blank>$1</a>. Når denne er aktivert vil det kreves et ekstra autentiserings-token for å logge inn på Webmin.
|
||||
twofactor_enable=Meld inn til to-faktor autentisering
|
||||
twofactor_header=Detaljer for innmelding til to-faktor autentisering
|
||||
|
||||
@@ -701,6 +701,152 @@ is(group_line({ name => 'empty' }),
|
||||
'delete_group removes the only group');
|
||||
}
|
||||
|
||||
# set_module_access and wrappers: batch enable/disable module visibility for
|
||||
# users and groups, while keeping ownmods in sync for future group refreshes.
|
||||
{
|
||||
_reset_fixture();
|
||||
create_user({ name => 'alice',
|
||||
pass => 'x',
|
||||
modules => [ 'useradmin', 'apache' ],
|
||||
ownmods => [ 'apache' ] });
|
||||
create_group({ name => 'wheel',
|
||||
members => [ 'alice' ],
|
||||
modules => [ 'useradmin', 'apache' ],
|
||||
desc => 'Sysadmins',
|
||||
ownmods => [ 'apache' ] });
|
||||
_clear_caches();
|
||||
|
||||
is(disable_module_access([ 'apache' ]), 2,
|
||||
'disable_module_access without targets updates all users and groups');
|
||||
|
||||
my $alice = get_user('alice');
|
||||
my $wheel = get_group('wheel');
|
||||
is_deeply($alice->{'modules'}, [ 'useradmin' ],
|
||||
'global disable removes module from user modules');
|
||||
is_deeply($alice->{'ownmods'}, [],
|
||||
'global disable removes module from user ownmods');
|
||||
is_deeply($wheel->{'modules'}, [ 'useradmin' ],
|
||||
'global disable removes module from group modules');
|
||||
is_deeply($wheel->{'ownmods'}, [],
|
||||
'global disable removes module from group ownmods');
|
||||
}
|
||||
|
||||
{
|
||||
_reset_fixture();
|
||||
create_user({ name => 'alice',
|
||||
pass => 'x',
|
||||
modules => [ 'useradmin' ] });
|
||||
create_group({ name => 'wheel',
|
||||
members => [ 'alice' ],
|
||||
modules => [ 'useradmin' ],
|
||||
desc => 'Sysadmins' });
|
||||
_clear_caches();
|
||||
|
||||
is(enable_module_access([ 'apache' ], [ '@wheel' ]), 1,
|
||||
'enable_module_access can target one group by @name');
|
||||
|
||||
my $alice = get_user('alice');
|
||||
my $wheel = get_group('wheel');
|
||||
is_deeply($wheel->{'modules'}, [ 'useradmin', 'apache' ],
|
||||
'targeted group enable adds module to group modules');
|
||||
is_deeply($wheel->{'ownmods'}, [],
|
||||
'targeted group enable leaves top-level group ownmods unchanged');
|
||||
is_deeply($alice->{'modules'}, [ 'useradmin', 'apache' ],
|
||||
'targeted group enable propagates to member user modules');
|
||||
is_deeply($alice->{'ownmods'}, [],
|
||||
'targeted group enable leaves member user ownmods unchanged');
|
||||
|
||||
is(disable_module_access([ 'apache' ], [ '@wheel' ]), 1,
|
||||
'disable_module_access can target one group by @name');
|
||||
|
||||
$alice = get_user('alice');
|
||||
$wheel = get_group('wheel');
|
||||
is_deeply($wheel->{'modules'}, [ 'useradmin' ],
|
||||
'targeted group disable removes module from group modules');
|
||||
is_deeply($wheel->{'ownmods'}, [],
|
||||
'targeted group disable removes module from group ownmods');
|
||||
is_deeply($alice->{'modules'}, [ 'useradmin' ],
|
||||
'targeted group disable propagates to member user modules');
|
||||
}
|
||||
|
||||
{
|
||||
_reset_fixture();
|
||||
create_user({ name => 'carol',
|
||||
pass => 'x',
|
||||
modules => [ 'useradmin' ] });
|
||||
create_group({ name => 'child',
|
||||
members => [ 'carol' ],
|
||||
modules => [ 'useradmin' ],
|
||||
desc => 'Child group' });
|
||||
create_group({ name => 'parent',
|
||||
members => [ '@child' ],
|
||||
modules => [ 'useradmin' ],
|
||||
desc => 'Parent group' });
|
||||
_clear_caches();
|
||||
|
||||
is(enable_module_access([ 'apache' ]), 1,
|
||||
'enable_module_access handles all nested groups');
|
||||
|
||||
my $child = get_group('child');
|
||||
my $carol = get_user('carol');
|
||||
is_deeply($child->{'modules'}, [ 'useradmin', 'apache' ],
|
||||
'child group inherits module from parent enabled later in file');
|
||||
is_deeply($child->{'ownmods'}, [],
|
||||
'child group does not record inherited module as ownmod');
|
||||
is_deeply($carol->{'modules'}, [ 'useradmin', 'apache' ],
|
||||
'child group member inherits module through nested groups');
|
||||
is_deeply($carol->{'ownmods'}, [],
|
||||
'child group member does not record inherited module as ownmod');
|
||||
}
|
||||
|
||||
{
|
||||
_reset_fixture();
|
||||
create_user({ name => 'root',
|
||||
pass => 'x',
|
||||
modules => [ 'useradmin' ] });
|
||||
_clear_caches();
|
||||
|
||||
is(enable_module_access([ 'apache' ], [ 'root' ]), 1,
|
||||
'enable_module_access can target a standalone user');
|
||||
my $root = get_user('root');
|
||||
is_deeply($root->{'modules'}, [ 'useradmin', 'apache' ],
|
||||
'standalone user enable adds module to user modules');
|
||||
is_deeply($root->{'ownmods'}, [],
|
||||
'standalone user enable does not create ownmods');
|
||||
}
|
||||
|
||||
{
|
||||
_reset_fixture();
|
||||
create_user({ name => 'bob',
|
||||
pass => 'x',
|
||||
modules => [ 'useradmin' ] });
|
||||
create_group({ name => 'wheel',
|
||||
members => [ 'bob' ],
|
||||
modules => [ 'useradmin' ],
|
||||
desc => 'Sysadmins' });
|
||||
_clear_caches();
|
||||
|
||||
is(enable_module_access([ 'apache' ], [ 'bob' ]), 1,
|
||||
'enable_module_access can target one user by name');
|
||||
|
||||
my $bob = get_user('bob');
|
||||
is_deeply($bob->{'modules'}, [ 'useradmin', 'apache' ],
|
||||
'targeted user enable adds module to user modules');
|
||||
is_deeply($bob->{'ownmods'}, [ 'apache' ],
|
||||
'targeted user enable records explicit user ownmod');
|
||||
|
||||
# A later group refresh must not erase a directly granted user module.
|
||||
my @users = list_users();
|
||||
my @groups = list_groups();
|
||||
my ($wheel) = grep { $_->{'name'} eq 'wheel' } @groups;
|
||||
update_members(\@users, \@groups, $wheel->{'modules'},
|
||||
$wheel->{'members'});
|
||||
_clear_caches();
|
||||
$bob = get_user('bob');
|
||||
is_deeply($bob->{'modules'}, [ 'useradmin', 'apache' ],
|
||||
'targeted user enable survives later group refresh');
|
||||
}
|
||||
|
||||
# copy_acl_files (file mode): copy a module ACL file from one name to another.
|
||||
{
|
||||
_reset_fixture();
|
||||
|
||||
103
apache/core.pl
103
apache/core.pl
@@ -109,7 +109,7 @@ return ();
|
||||
sub edit_MaxClients
|
||||
{
|
||||
return (1,
|
||||
$text{'core_maxconc'},
|
||||
&hlink($text{'core_maxconc'}, "MaxClients"),
|
||||
&opt_input($_[0]->{'value'}, "MaxClients", $text{'core_default'}, 4));
|
||||
}
|
||||
sub save_MaxClients
|
||||
@@ -118,6 +118,19 @@ return &parse_opt("MaxClients", '^\d+$',
|
||||
$text{'core_emaxconc'});
|
||||
}
|
||||
|
||||
sub edit_MaxRequestWorkers
|
||||
{
|
||||
return (1,
|
||||
&hlink($text{'core_maxconc'}, "MaxRequestWorkers"),
|
||||
&opt_input($_[0]->{'value'}, "MaxRequestWorkers",
|
||||
$text{'core_default'}, 4));
|
||||
}
|
||||
sub save_MaxRequestWorkers
|
||||
{
|
||||
return &parse_opt("MaxRequestWorkers", '^\d+$',
|
||||
$text{'core_emaxconc'});
|
||||
}
|
||||
|
||||
sub edit_MaxKeepAliveRequests
|
||||
{
|
||||
return (1,
|
||||
@@ -133,7 +146,7 @@ return &parse_opt("MaxKeepAliveRequests", '^\d+$',
|
||||
sub edit_MaxRequestsPerChild
|
||||
{
|
||||
return (1,
|
||||
$text{'core_maxreq'},
|
||||
&hlink($text{'core_maxreq'}, "MaxRequestsPerChild"),
|
||||
&opt_input($_[0]->{'value'}, "MaxRequestsPerChild", $text{'core_default'}, 5));
|
||||
}
|
||||
sub save_MaxRequestsPerChild
|
||||
@@ -145,7 +158,7 @@ return &parse_opt("MaxRequestsPerChild", '^\d+$',
|
||||
sub edit_MinSpareServers
|
||||
{
|
||||
return (1,
|
||||
$text{'core_minspare'},
|
||||
&hlink($text{'core_minspare'}, "MinSpareServers"),
|
||||
&opt_input($_[0]->{'value'},"MinSpareServers",$text{'core_default'}, 4));
|
||||
}
|
||||
sub save_MinSpareServers
|
||||
@@ -157,7 +170,7 @@ return &parse_opt("MinSpareServers", '^\d+$',
|
||||
sub edit_MaxSpareServers
|
||||
{
|
||||
return (1,
|
||||
$text{'core_maxspare'},
|
||||
&hlink($text{'core_maxspare'}, "MaxSpareServers"),
|
||||
&opt_input($_[0]->{'value'},"MaxSpareServers",$text{'core_default'}, 4));
|
||||
}
|
||||
sub save_MaxSpareServers
|
||||
@@ -169,7 +182,7 @@ return &parse_opt("MaxSpareServers", '^\d+$',
|
||||
sub edit_StartServers
|
||||
{
|
||||
return (1,
|
||||
$text{'core_initial'},
|
||||
&hlink($text{'core_initial'}, "StartServers"),
|
||||
&opt_input($_[0]->{'value'}, "StartServers", $text{'core_default'}, 4));
|
||||
}
|
||||
sub save_StartServers
|
||||
@@ -178,9 +191,70 @@ return &parse_opt("StartServers", '^\d+$',
|
||||
$text{'core_einitial'});
|
||||
}
|
||||
|
||||
sub edit_ServerLimit
|
||||
{
|
||||
return (1,
|
||||
&hlink($text{'core_serverlimit'}, "ServerLimit"),
|
||||
&opt_input($_[0]->{'value'}, "ServerLimit", $text{'core_default'}, 4));
|
||||
}
|
||||
sub save_ServerLimit
|
||||
{
|
||||
return &parse_opt("ServerLimit", '^\d+$',
|
||||
$text{'core_eserverlimit'});
|
||||
}
|
||||
|
||||
sub edit_MinSpareThreads
|
||||
{
|
||||
return (1,
|
||||
&hlink($text{'worker_minspare'}, "MinSpareThreads"),
|
||||
&opt_input($_[0]->{'value'},"MinSpareThreads",$text{'core_default'}, 4));
|
||||
}
|
||||
sub save_MinSpareThreads
|
||||
{
|
||||
return &parse_opt("MinSpareThreads", '^\d+$',
|
||||
$text{'worker_eminspare'});
|
||||
}
|
||||
|
||||
sub edit_MaxSpareThreads
|
||||
{
|
||||
return (1,
|
||||
&hlink($text{'worker_maxspare'}, "MaxSpareThreads"),
|
||||
&opt_input($_[0]->{'value'},"MaxSpareThreads",$text{'core_default'}, 4));
|
||||
}
|
||||
sub save_MaxSpareThreads
|
||||
{
|
||||
return &parse_opt("MaxSpareThreads", '^\d+$',
|
||||
$text{'worker_emaxspare'});
|
||||
}
|
||||
|
||||
sub edit_ThreadLimit
|
||||
{
|
||||
return (1,
|
||||
&hlink($text{'worker_threadlimit'}, "ThreadLimit"),
|
||||
&opt_input($_[0]->{'value'},"ThreadLimit",$text{'core_default'}, 4));
|
||||
}
|
||||
sub save_ThreadLimit
|
||||
{
|
||||
return &parse_opt("ThreadLimit", '^\d+$',
|
||||
$text{'worker_ethreadlimit'});
|
||||
}
|
||||
|
||||
sub edit_ThreadsPerChild
|
||||
{
|
||||
return (1,
|
||||
&hlink($text{'worker_threads'}, "ThreadsPerChild"),
|
||||
&opt_input($_[0]->{'value'},"ThreadsPerChild",$text{'core_default'}, 4));
|
||||
}
|
||||
sub save_ThreadsPerChild
|
||||
{
|
||||
return &parse_opt("ThreadsPerChild", '^\d+$',
|
||||
$text{'worker_ethreads'});
|
||||
}
|
||||
|
||||
sub edit_RLimitCPU
|
||||
{
|
||||
return &rlimit_input("RLimitCPU", $text{'core_cpulimit'}, $_[0]);
|
||||
return &rlimit_input("RLimitCPU",
|
||||
&hlink($text{'core_cpulimit'}, "RLimitCPU"), $_[0]);
|
||||
}
|
||||
sub save_RLimitCPU
|
||||
{
|
||||
@@ -189,7 +263,8 @@ return &parse_rlimit("RLimitCPU", $text{'core_cpulimit2'});
|
||||
|
||||
sub edit_RLimitMEM
|
||||
{
|
||||
return &rlimit_input("RLimitMEM", $text{'core_memlimit'}, $_[0]);
|
||||
return &rlimit_input("RLimitMEM",
|
||||
&hlink($text{'core_memlimit'}, "RLimitMEM"), $_[0]);
|
||||
}
|
||||
sub save_RLimitMEM
|
||||
{
|
||||
@@ -198,7 +273,8 @@ return &parse_rlimit("RLimitMEM", $text{'core_memlimit2'});
|
||||
|
||||
sub edit_RLimitNPROC
|
||||
{
|
||||
return &rlimit_input("RLimitNPROC", $text{'core_proclimit'}, $_[0]);
|
||||
return &rlimit_input("RLimitNPROC",
|
||||
&hlink($text{'core_proclimit'}, "RLimitNPROC"), $_[0]);
|
||||
}
|
||||
sub save_RLimitNPROC
|
||||
{
|
||||
@@ -1280,7 +1356,7 @@ return &parse_opt("LockFile", '^\S+', $text{'core_elock'});
|
||||
|
||||
sub edit_LimitRequestBody
|
||||
{
|
||||
return (1, $text{'core_maxbody'},
|
||||
return (1, &hlink($text{'core_maxbody'}, "LimitRequestBody"),
|
||||
&opt_input($_[0]->{'value'}, "LimitRequestBody", $text{'core_default'}, 8)
|
||||
.&ui_space(2).$text{'bytes'});
|
||||
}
|
||||
@@ -1291,7 +1367,7 @@ return &parse_opt("LimitRequestBody", '^\d+$', $text{'core_ebody'});
|
||||
|
||||
sub edit_LimitXMLRequestBody
|
||||
{
|
||||
return (1, $text{'core_maxxml'},
|
||||
return (1, &hlink($text{'core_maxxml'}, "LimitXMLRequestBody"),
|
||||
&opt_input($_[0]->{'value'}, "LimitXMLRequestBody",
|
||||
$text{'core_default'}, 8).&ui_space(2).$text{'bytes'});
|
||||
}
|
||||
@@ -1304,7 +1380,7 @@ return &parse_opt("LimitXMLRequestBody", '^\d+$', $text{'core_exml'});
|
||||
|
||||
sub edit_LimitRequestFields
|
||||
{
|
||||
return (1, $text{'core_maxhead'},
|
||||
return (1, &hlink($text{'core_maxhead'}, "LimitRequestFields"),
|
||||
&opt_input($_[0]->{'value'}, "LimitRequestFields", $text{'core_default'}, 6));
|
||||
}
|
||||
sub save_LimitRequestFields
|
||||
@@ -1314,7 +1390,7 @@ return &parse_opt("LimitRequestFields", '^\d+$', $text{'core_ehead'});
|
||||
|
||||
sub edit_LimitRequestFieldsize
|
||||
{
|
||||
return (1, $text{'core_maxshead'},
|
||||
return (1, &hlink($text{'core_maxshead'}, "LimitRequestFieldsize"),
|
||||
&opt_input($_[0]->{'value'}, "LimitRequestFieldsize", $text{'core_default'}, 6));
|
||||
}
|
||||
sub save_LimitRequestFieldsize
|
||||
@@ -1324,7 +1400,7 @@ return &parse_opt("LimitRequestFieldsize", '^\d+$', $text{'core_eshead'});
|
||||
|
||||
sub edit_LimitRequestLine
|
||||
{
|
||||
return (1, $text{'core_maxline'},
|
||||
return (1, &hlink($text{'core_maxline'}, "LimitRequestLine"),
|
||||
&opt_input($_[0]->{'value'}, "LimitRequestLine", $text{'core_default'}, 6));
|
||||
}
|
||||
sub save_LimitRequestLine
|
||||
@@ -1631,4 +1707,3 @@ else { return ( [ ], [ ] ); }
|
||||
}
|
||||
|
||||
1;
|
||||
|
||||
|
||||
7
apache/help/AssignUserId.html
Normal file
7
apache/help/AssignUserId.html
Normal file
@@ -0,0 +1,7 @@
|
||||
<header>Tie virtual to child process</header>
|
||||
The <tt>AssignUserId</tt> directive assigns a virtual host to a child process
|
||||
running with the selected user ID and group ID for the legacy perchild MPM.
|
||||
<p>
|
||||
This directive is only available for Apache versions and MPMs that support
|
||||
perchild.
|
||||
<p><footer>
|
||||
7
apache/help/ChildPerUserId.html
Normal file
7
apache/help/ChildPerUserId.html
Normal file
@@ -0,0 +1,7 @@
|
||||
<header>Child process UID assignments</header>
|
||||
The <tt>ChildPerUserId</tt> directive defines how many child processes should
|
||||
run for a selected user ID and group ID in the legacy perchild MPM.
|
||||
<p>
|
||||
This directive is only available for Apache versions and MPMs that support
|
||||
perchild.
|
||||
<p><footer>
|
||||
7
apache/help/LimitRequestBody.html
Normal file
7
apache/help/LimitRequestBody.html
Normal file
@@ -0,0 +1,7 @@
|
||||
<header>Maximum request body size</header>
|
||||
The <tt>LimitRequestBody</tt> directive sets the maximum allowed size of an HTTP
|
||||
request body in bytes.
|
||||
<p>
|
||||
This can be used to limit upload or form submission size for the server,
|
||||
virtual host, directory, or location where the directive is applied.
|
||||
<p><footer>
|
||||
7
apache/help/LimitRequestFields.html
Normal file
7
apache/help/LimitRequestFields.html
Normal file
@@ -0,0 +1,7 @@
|
||||
<header>Maximum headers in request</header>
|
||||
The <tt>LimitRequestFields</tt> directive sets the maximum number of HTTP
|
||||
request header fields that Apache will accept.
|
||||
<p>
|
||||
Lowering this limit can reduce exposure to unusually large requests, but values
|
||||
that are too low can reject legitimate clients.
|
||||
<p><footer>
|
||||
7
apache/help/LimitRequestFieldsize.html
Normal file
7
apache/help/LimitRequestFieldsize.html
Normal file
@@ -0,0 +1,7 @@
|
||||
<header>Maximum request header size</header>
|
||||
The <tt>LimitRequestFieldSize</tt> directive sets the maximum size of each HTTP
|
||||
request header field in bytes.
|
||||
<p>
|
||||
Lowering this limit can reject oversized request headers, but values that are
|
||||
too low can break clients that send larger cookies or authorization headers.
|
||||
<p><footer>
|
||||
7
apache/help/LimitRequestLine.html
Normal file
7
apache/help/LimitRequestLine.html
Normal file
@@ -0,0 +1,7 @@
|
||||
<header>Maximum request line size</header>
|
||||
The <tt>LimitRequestLine</tt> directive sets the maximum size of the HTTP
|
||||
request line in bytes.
|
||||
<p>
|
||||
This line contains the method, requested URI, and HTTP protocol version. Values
|
||||
that are too low can reject legitimate long URLs.
|
||||
<p><footer>
|
||||
6
apache/help/LimitXMLRequestBody.html
Normal file
6
apache/help/LimitXMLRequestBody.html
Normal file
@@ -0,0 +1,6 @@
|
||||
<header>Maximum XML request body size</header>
|
||||
The <tt>LimitXMLRequestBody</tt> directive sets the maximum allowed size of an
|
||||
XML request body in bytes.
|
||||
<p>
|
||||
It is mainly used by modules that parse XML request bodies, such as WebDAV.
|
||||
<p><footer>
|
||||
8
apache/help/MaxClients.html
Normal file
8
apache/help/MaxClients.html
Normal file
@@ -0,0 +1,8 @@
|
||||
<header>Maximum simultaneous requests</header>
|
||||
The <tt>MaxClients</tt> directive is the old Apache name for the maximum number
|
||||
of requests that can be served at the same time. On Apache 2.4 and newer, the
|
||||
equivalent directive is <tt>MaxRequestWorkers</tt>.
|
||||
<p>
|
||||
For prefork MPM, this limits child server processes. For threaded MPMs, it
|
||||
limits the total number of worker threads across all child processes.
|
||||
<p><footer>
|
||||
9
apache/help/MaxRequestWorkers.html
Normal file
9
apache/help/MaxRequestWorkers.html
Normal file
@@ -0,0 +1,9 @@
|
||||
<header>Maximum simultaneous requests</header>
|
||||
The <tt>MaxRequestWorkers</tt> directive sets the maximum number of requests
|
||||
that Apache can serve at the same time. Requests above this limit wait until an
|
||||
existing worker is free.
|
||||
<p>
|
||||
For prefork MPM, this limits child server processes. For threaded MPMs, it
|
||||
limits the total number of worker threads across all child processes. Raising
|
||||
this value may also require increasing <tt>ServerLimit</tt>.
|
||||
<p><footer>
|
||||
8
apache/help/MaxRequestsPerChild.html
Normal file
8
apache/help/MaxRequestsPerChild.html
Normal file
@@ -0,0 +1,8 @@
|
||||
<header>Maximum requests per child process</header>
|
||||
The <tt>MaxRequestsPerChild</tt> directive sets how many requests an Apache
|
||||
child process will handle before it exits and is replaced. A value of
|
||||
<tt>0</tt> means the process is not recycled because of this limit.
|
||||
<p>
|
||||
Recycling can help contain memory growth in long-running processes, but setting
|
||||
this too low can create unnecessary process churn.
|
||||
<p><footer>
|
||||
8
apache/help/MaxSpareServers.html
Normal file
8
apache/help/MaxSpareServers.html
Normal file
@@ -0,0 +1,8 @@
|
||||
<header>Maximum idle server processes</header>
|
||||
The <tt>MaxSpareServers</tt> directive sets the maximum number of idle child
|
||||
server processes Apache tries to keep when using prefork-style process
|
||||
handling.
|
||||
<p>
|
||||
If more idle child processes are available, Apache stops some of them to avoid
|
||||
keeping unnecessary processes running.
|
||||
<p><footer>
|
||||
7
apache/help/MaxSpareThreads.html
Normal file
7
apache/help/MaxSpareThreads.html
Normal file
@@ -0,0 +1,7 @@
|
||||
<header>Maximum idle worker threads</header>
|
||||
The <tt>MaxSpareThreads</tt> directive sets the maximum number of idle worker
|
||||
threads Apache tries to keep when using a threaded MPM such as worker or event.
|
||||
<p>
|
||||
If more idle threads are available, Apache can reduce the number of running
|
||||
workers instead of keeping excess capacity open.
|
||||
<p><footer>
|
||||
6
apache/help/MaxThreadsPerChild.html
Normal file
6
apache/help/MaxThreadsPerChild.html
Normal file
@@ -0,0 +1,6 @@
|
||||
<header>Maximum threads per child process</header>
|
||||
The <tt>MaxThreadsPerChild</tt> directive sets the maximum number of worker
|
||||
threads allowed in each child process for the legacy perchild MPM.
|
||||
<p>
|
||||
This directive only appears for Apache versions and MPMs that support perchild.
|
||||
<p><footer>
|
||||
8
apache/help/MinSpareServers.html
Normal file
8
apache/help/MinSpareServers.html
Normal file
@@ -0,0 +1,8 @@
|
||||
<header>Minimum idle server processes</header>
|
||||
The <tt>MinSpareServers</tt> directive sets the minimum number of idle child
|
||||
server processes Apache tries to keep ready when using prefork-style process
|
||||
handling.
|
||||
<p>
|
||||
If fewer idle child processes are available, Apache starts more so new
|
||||
connections can be accepted without waiting for a process to be created.
|
||||
<p><footer>
|
||||
8
apache/help/MinSpareThreads.html
Normal file
8
apache/help/MinSpareThreads.html
Normal file
@@ -0,0 +1,8 @@
|
||||
<header>Minimum idle worker threads</header>
|
||||
The <tt>MinSpareThreads</tt> directive sets the minimum number of idle worker
|
||||
threads Apache tries to keep ready when using a threaded MPM such as worker or
|
||||
event.
|
||||
<p>
|
||||
If fewer idle threads are available, Apache starts or adjusts child processes
|
||||
so new connections can be accepted without waiting for threads to become free.
|
||||
<p><footer>
|
||||
6
apache/help/NumServers.html
Normal file
6
apache/help/NumServers.html
Normal file
@@ -0,0 +1,6 @@
|
||||
<header>Number of child processes</header>
|
||||
The <tt>NumServers</tt> directive sets the number of child server processes for
|
||||
the legacy perchild MPM.
|
||||
<p>
|
||||
This directive only appears for Apache versions and MPMs that support perchild.
|
||||
<p><footer>
|
||||
8
apache/help/RLimitCPU.html
Normal file
8
apache/help/RLimitCPU.html
Normal file
@@ -0,0 +1,8 @@
|
||||
<header>CPU resource limit</header>
|
||||
The <tt>RLimitCPU</tt> directive sets a CPU time resource limit for processes
|
||||
started by Apache in this context, such as CGI programs where supported by the
|
||||
operating system.
|
||||
<p>
|
||||
The soft limit is applied first. If a hard limit is also set, it is the maximum
|
||||
value that the process can raise the soft limit to.
|
||||
<p><footer>
|
||||
8
apache/help/RLimitMEM.html
Normal file
8
apache/help/RLimitMEM.html
Normal file
@@ -0,0 +1,8 @@
|
||||
<header>Memory resource limit</header>
|
||||
The <tt>RLimitMEM</tt> directive sets a memory resource limit for processes
|
||||
started by Apache in this context, such as CGI programs where supported by the
|
||||
operating system.
|
||||
<p>
|
||||
The soft limit is applied first. If a hard limit is also set, it is the maximum
|
||||
value that the process can raise the soft limit to.
|
||||
<p><footer>
|
||||
8
apache/help/RLimitNPROC.html
Normal file
8
apache/help/RLimitNPROC.html
Normal file
@@ -0,0 +1,8 @@
|
||||
<header>Process limit</header>
|
||||
The <tt>RLimitNPROC</tt> directive sets a process count resource limit for
|
||||
processes started by Apache in this context, such as CGI programs where
|
||||
supported by the operating system.
|
||||
<p>
|
||||
The soft limit is applied first. If a hard limit is also set, it is the maximum
|
||||
value that the process can raise the soft limit to.
|
||||
<p><footer>
|
||||
9
apache/help/ServerLimit.html
Normal file
9
apache/help/ServerLimit.html
Normal file
@@ -0,0 +1,9 @@
|
||||
<header>Server process limit</header>
|
||||
The <tt>ServerLimit</tt> directive sets the hard upper limit on the number of
|
||||
Apache child server processes. It caps values such as
|
||||
<tt>MaxRequestWorkers</tt> for prefork MPM, and works with
|
||||
<tt>ThreadsPerChild</tt> for threaded MPMs.
|
||||
<p>
|
||||
Increasing this value may require a full Apache stop and start before it takes
|
||||
effect.
|
||||
<p><footer>
|
||||
7
apache/help/StartServers.html
Normal file
7
apache/help/StartServers.html
Normal file
@@ -0,0 +1,7 @@
|
||||
<header>Server processes at startup</header>
|
||||
The <tt>StartServers</tt> directive sets how many child server processes Apache
|
||||
starts when the server first launches.
|
||||
<p>
|
||||
Apache adjusts the number of child processes after startup based on traffic and
|
||||
the spare process or spare thread limits.
|
||||
<p><footer>
|
||||
7
apache/help/StartThreads.html
Normal file
7
apache/help/StartThreads.html
Normal file
@@ -0,0 +1,7 @@
|
||||
<header>Initial threads per child process</header>
|
||||
The <tt>StartThreads</tt> directive sets how many worker threads are created at
|
||||
startup for legacy threaded MPMs that support this directive.
|
||||
<p>
|
||||
Apache may adjust the number of running workers after startup based on traffic
|
||||
and the configured spare thread limits.
|
||||
<p><footer>
|
||||
7
apache/help/ThreadLimit.html
Normal file
7
apache/help/ThreadLimit.html
Normal file
@@ -0,0 +1,7 @@
|
||||
<header>Thread limit per child process</header>
|
||||
The <tt>ThreadLimit</tt> directive sets the hard upper limit for the number of
|
||||
worker threads that can be configured in each child process.
|
||||
<p>
|
||||
It must be high enough for <tt>ThreadsPerChild</tt>. Increasing this value may
|
||||
require a full Apache stop and start before it takes effect.
|
||||
<p><footer>
|
||||
7
apache/help/ThreadsPerChild.html
Normal file
7
apache/help/ThreadsPerChild.html
Normal file
@@ -0,0 +1,7 @@
|
||||
<header>Worker threads per child process</header>
|
||||
The <tt>ThreadsPerChild</tt> directive sets how many worker threads Apache
|
||||
creates in each child process when using a threaded MPM.
|
||||
<p>
|
||||
The total request capacity for threaded MPMs is controlled by this value
|
||||
together with <tt>ServerLimit</tt> and <tt>MaxRequestWorkers</tt>.
|
||||
<p><footer>
|
||||
@@ -346,13 +346,15 @@ core_maxkeep=Maximum keepalives per connection
|
||||
core_maxreq=Maximum requests per server process
|
||||
core_minspare=Minimum spare server processes
|
||||
core_maxspare=Maximum spare server processes
|
||||
core_initial=Initial server processes
|
||||
core_initial=Server processes at startup
|
||||
core_serverlimit=Server process limit
|
||||
core_emaxconc=Maximum concurrent requests must be an integer
|
||||
core_emaxkeep=Maximum keepalives per connection must be an integer
|
||||
core_emaxreq=Maximum requests per server process must be an integer
|
||||
core_eminspare=Minimum spare server processes must be an integer
|
||||
core_emaxspare=Maximum spare server processes must be an integer
|
||||
core_einitial=Initial server processes must be an integer
|
||||
core_einitial=Server processes at startup must be an integer
|
||||
core_eserverlimit=Server process limit must be an integer
|
||||
core_default=Default
|
||||
core_cpulimit=CPU resource limit
|
||||
core_memlimit=Memory resource limit
|
||||
@@ -1064,6 +1066,8 @@ worker_eminspare=Minimum spare threads must be an integer
|
||||
worker_emaxspare=Maximum spare threads must be an integer
|
||||
worker_threads=Threads per child process
|
||||
worker_ethreads=Number of threads per child process must be an integer
|
||||
worker_threadlimit=Thread limit per child process
|
||||
worker_ethreadlimit=Thread limit per child process must be an integer
|
||||
|
||||
perchild_sthreads=Initial threads per child process
|
||||
perchild_esthreads=Number of threads per child process must be an integer
|
||||
|
||||
@@ -32,8 +32,8 @@ index_addr=Adresse
|
||||
index_nv=Legg til adresse for navnebasert virtuell server (hvis nødvendig)
|
||||
index_listen=Lytt på adresse (hvis nødvendig)
|
||||
index_port=Port
|
||||
index_name=Tjener Navn
|
||||
index_root=Dokument Rot
|
||||
index_name=Tjenernavn
|
||||
index_root=Dokumentrot
|
||||
index_url=URL
|
||||
index_view=Åpne..
|
||||
index_adddir=Gi tilgang til denne katalogen
|
||||
@@ -243,8 +243,8 @@ htfile_header2=$1 for $2
|
||||
reconfig_title=Rekonfigurer kjente moduler
|
||||
reconfig_ecannot=Du har ikke lov til å rekonfigurere apache
|
||||
reconfig_ever=Kunne ikke hente versjonsnummer på Apache server programmet $1. Sjekk din <a href='$2'>modul konfigurasjon</a> for å forsikre deg om at dette er riktig sti.
|
||||
reconfig_desc1=Din Apache konfigurasjon er endret, eller har ikke blit undersøkt av Webmin enda. Nedenfor finner du en liste over alle Apache moduler som støttes av Webmin, med de installerte modulene avmerket. Du kan velge eller velge bort moduler dersom listen ikke er korrekt.
|
||||
reconfig_desc2=Nedenfor finner du en liste over alle Apache moduler som støttes av Webmin, med de installerte modulene avmerket. Dersom du benytter dynamisk lastede moduler kan det være nødvendig å velge de modulene som er dynamisk lastet.
|
||||
reconfig_desc1=Din Apache konfigurasjon er endret, eller har ikke blit undersøkt av Webmin enda. Nedenfor finner du en liste over alle Apache-moduler som støttes av Webmin, med de installerte modulene avmerket. Du kan velge eller velge bort moduler dersom listen ikke er korrekt.
|
||||
reconfig_desc2=Nedenfor finner du en liste over alle Apache-moduler som støttes av Webmin, med de installerte modulene avmerket. Dersom du benytter dynamisk lastede moduler kan det være nødvendig å velge de modulene som er dynamisk lastet.
|
||||
reconfig_desc3=Dersom du er usikker på hvilke moduler som støttes av Apache på ditt system, kan du klikke Konfigurer, siden Webmin normalt autmatisk vil kunne finne ut hvilke moduler som er støttet.
|
||||
reconfig_ok=Konfigurer
|
||||
|
||||
@@ -272,9 +272,9 @@ authu_euser=Ikke noe brukernavn oppgitt
|
||||
authu_euser2=Brukernavn kan ikke inneholde en :
|
||||
authu_edup=En bruker ved navn '$1' finnes allerede
|
||||
authu_sync=Innstillingene nedenfor lar deg konfigurerer Webmin til å automatisk legge til, oppdatere eller slette en bruker fra denne passordfilen når en bruker er lagt til, endret eller fjernet i modulen <tt>Brukere og grupper</tt>.
|
||||
authu_screate=Legg til en bruker når en Unix bruker blir lagt til
|
||||
authu_sdelete=Slett brukeren når en Unix bruker slettes
|
||||
authu_smodify=Endre brukeren når en Unix bruker endres
|
||||
authu_screate=Legg til en bruker når en Unix-bruker blir lagt til
|
||||
authu_sdelete=Slett brukeren når en Unix-bruker slettes
|
||||
authu_smodify=Endre brukeren når en Unix-bruker endres
|
||||
|
||||
authg_ecannot='$1' er ikke en tillatt grupper tekstfil
|
||||
authg_title=Gruppeliste
|
||||
@@ -465,8 +465,8 @@ core_group=Gruppenavn
|
||||
core_gid=Gruppe ID
|
||||
core_user=Brukernavn
|
||||
core_uid=Bruker ID
|
||||
core_asgroup=Kjør som Unix gruppe
|
||||
core_asuser=Kjør som Unix bruker
|
||||
core_asgroup=Kjør som Unix-gruppe
|
||||
core_asuser=Kjør som Unix-bruker
|
||||
core_euid='$1' er ikke en gyldig gruppe ID
|
||||
core_egid='$1' er ikke en gyldig bruker ID
|
||||
core_tourl=Gå til URL..
|
||||
@@ -990,7 +990,7 @@ log_mime_modify=Endret MIME type $1
|
||||
log_mime_create=Lagt til MIME type $1
|
||||
log_defines=Endret definerte parametere
|
||||
log_reconfig=Rekonfigurert kjente moduler
|
||||
log_mods=Endret konfigurerte Apache moduler
|
||||
log_mods=Endret konfigurerte Apache-moduler
|
||||
log_start=Startet webserver
|
||||
log_stop=Stoppet webserver
|
||||
log_apply=Endringer lagret
|
||||
@@ -1063,7 +1063,7 @@ cache_emaxoc=Antall objekter å cache i minne må være et heltall
|
||||
|
||||
suexec_su=Kjør CGI programmer som
|
||||
suexec_none=Bruker fra global konfigurasjon
|
||||
suexec_user=Unix bruker
|
||||
suexec_user=Unix-bruker
|
||||
suexec_group=og gruppe
|
||||
suexec_euser=Manglende eller ugyldig bruker å kjøre CGI programmer som
|
||||
suexec_egroup=Manglende eller ugyldig gruppe å kjøre CGI programmer som
|
||||
@@ -1078,8 +1078,8 @@ filter_out=Output Filter definisjoner
|
||||
filter_ename=Ugyldig filter navn '$1'
|
||||
filter_ecmd=Mangler kommando for filter '$1'
|
||||
|
||||
cdir_err=Kunne ikke opprette per-directory instillinger
|
||||
cdir_err2=Kunne ikke lagre per-directory innstillinger
|
||||
cdir_err=Kunne ikke opprette per-mappe-innstillinger
|
||||
cdir_err2=Kunne ikke lagre per-mappe-innstillinger
|
||||
cdir_epath=Manglende sti
|
||||
cdir_eproxy=Proxy innstillinger kan ikke opprettes med match regexp innstillingen slått på
|
||||
cdir_ecannot=Du har ikke tilgang til å opprette per-katalog innstillinger for den angitte stien
|
||||
@@ -1126,12 +1126,12 @@ mod_auth_digest_al=Hashing algoritme
|
||||
mod_auth_digest_domain=URLer og stier i samme domene
|
||||
mod_auth_digest_edomain=Manglende URLer og stier i samme domene
|
||||
|
||||
mods_title=Konfigurer Apache moduler
|
||||
mods_title=Konfigurer Apache-moduler
|
||||
mods_mod=Modul
|
||||
mods_state=Gjeldende tilstand
|
||||
mods_enabled=Slått på
|
||||
mods_disabled=Slått av
|
||||
mods_available=Tilgjengelig for installasjon
|
||||
mods_ecannot=Du har ikke tilgang til å konfigurere Apache moduler
|
||||
mods_ecannot=Du har ikke tilgang til å konfigurere Apache-moduler
|
||||
mods_save=Slå på valgte moduler
|
||||
mods_desc=Denne siden lar deg velge hvilke valgfrie Apache moduler som er slått på, ved å bruke sjekkboksen ved siden av hvert modulnavn. Vær forsiktig når du slår av en modul, siden alle eksisterende direktiver for den modulen, ikke lenger vil gjenkjennes.
|
||||
mods_desc=Denne siden lar deg velge hvilke valgfrie Apache-moduler som er slått på, ved å bruke sjekkboksen ved siden av hvert modulnavn. Vær forsiktig når du slår av en modul, siden alle eksisterende direktiver for den modulen, ikke lenger vil gjenkjennes.
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# mod_mpm_event.pl
|
||||
# Defines editors for the pre-forking module in apache 2.4.
|
||||
# Defines editors for the event MPM module in apache 2.4.
|
||||
# The actual functions for all of these are still in core.pl
|
||||
|
||||
sub mod_mpm_event_directives
|
||||
@@ -9,13 +9,17 @@ $rv = [ [ 'CoreDumpDirectory', 0, 9, 'global', 2.0 ],
|
||||
[ 'BindAddress Listen Port', 1, 1, 'global', 2.0, 10 ],
|
||||
[ 'ListenBacklog', 0, 1, 'global', 2.0 ],
|
||||
[ 'LockFile', 0, 9, 'global', 2.0 ],
|
||||
[ 'MaxRequestWorkers', 0, 0, 'global', 2.313 ],
|
||||
[ 'MaxRequestsPerChild', 0, 0, 'global', 2.0 ],
|
||||
[ 'MinSpareServers', 0, 0, 'global', 2.0 ],
|
||||
[ 'MaxSpareServers', 0, 0, 'global', 2.0 ],
|
||||
[ 'MinSpareThreads', 0, 0, 'global', 2.0 ],
|
||||
[ 'MaxSpareThreads', 0, 0, 'global', 2.0 ],
|
||||
[ 'PidFile', 0, 9, 'global', 2.0 ],
|
||||
[ 'ScoreBoardFile', 0, 9, 'global', 2.0 ],
|
||||
[ 'SendBufferSize', 0, 1, 'global', 2.0 ],
|
||||
[ 'ServerLimit', 0, 0, 'global', 2.0 ],
|
||||
[ 'StartServers', 0, 0, 'global', 2.0 ],
|
||||
[ 'ThreadLimit', 0, 0, 'global', 2.0 ],
|
||||
[ 'ThreadsPerChild', 0, 0, 'global', 2.0 ],
|
||||
[ 'Group', 0, 8, 'global', 2.0 ],
|
||||
[ 'User', 0, 8, 'global', 2.0, 10 ] ];
|
||||
return &make_directives($rv, $_[0], "mod_mpm_event");
|
||||
|
||||
@@ -9,12 +9,14 @@ $rv = [ [ 'CoreDumpDirectory', 0, 9, 'global', 2.0 ],
|
||||
[ 'BindAddress Listen Port', 1, 1, 'global', 2.0, 10 ],
|
||||
[ 'ListenBacklog', 0, 1, 'global', 2.0 ],
|
||||
[ 'LockFile', 0, 9, 'global', 2.0 ],
|
||||
[ 'MaxRequestWorkers', 0, 0, 'global', 2.313 ],
|
||||
[ 'MaxRequestsPerChild', 0, 0, 'global', 2.0 ],
|
||||
[ 'MinSpareServers', 0, 0, 'global', 2.0 ],
|
||||
[ 'MaxSpareServers', 0, 0, 'global', 2.0 ],
|
||||
[ 'PidFile', 0, 9, 'global', 2.0 ],
|
||||
[ 'ScoreBoardFile', 0, 9, 'global', 2.0 ],
|
||||
[ 'SendBufferSize', 0, 1, 'global', 2.0 ],
|
||||
[ 'ServerLimit', 0, 0, 'global', 2.0 ],
|
||||
[ 'StartServers', 0, 0, 'global', 2.0 ],
|
||||
[ 'Group', 0, 8, 'global', 2.0 ],
|
||||
[ 'User', 0, 8, 'global', 2.0, 10 ] ];
|
||||
|
||||
27
apache/mod_mpm_worker.pl
Normal file
27
apache/mod_mpm_worker.pl
Normal file
@@ -0,0 +1,27 @@
|
||||
# mod_mpm_worker.pl
|
||||
# Defines editors for the worker MPM module in apache 2.4.
|
||||
# The actual functions for all of these are still in core.pl
|
||||
|
||||
sub mod_mpm_worker_directives
|
||||
{
|
||||
local $rv;
|
||||
$rv = [ [ 'CoreDumpDirectory', 0, 9, 'global', 2.0 ],
|
||||
[ 'BindAddress Listen Port', 1, 1, 'global', 2.0, 10 ],
|
||||
[ 'ListenBacklog', 0, 1, 'global', 2.0 ],
|
||||
[ 'LockFile', 0, 9, 'global', 2.0 ],
|
||||
[ 'MaxRequestWorkers', 0, 0, 'global', 2.313 ],
|
||||
[ 'MaxRequestsPerChild', 0, 0, 'global', 2.0 ],
|
||||
[ 'MinSpareThreads', 0, 0, 'global', 2.0 ],
|
||||
[ 'MaxSpareThreads', 0, 0, 'global', 2.0 ],
|
||||
[ 'PidFile', 0, 9, 'global', 2.0 ],
|
||||
[ 'ScoreBoardFile', 0, 9, 'global', 2.0 ],
|
||||
[ 'SendBufferSize', 0, 1, 'global', 2.0 ],
|
||||
[ 'ServerLimit', 0, 0, 'global', 2.0 ],
|
||||
[ 'StartServers', 0, 0, 'global', 2.0 ],
|
||||
[ 'ThreadLimit', 0, 0, 'global', 2.0 ],
|
||||
[ 'ThreadsPerChild', 0, 0, 'global', 2.0 ],
|
||||
[ 'Group', 0, 8, 'global', 2.0 ],
|
||||
[ 'User', 0, 8, 'global', 2.0, 10 ] ];
|
||||
return &make_directives($rv, $_[0], "mod_mpm_worker");
|
||||
}
|
||||
|
||||
@@ -18,7 +18,7 @@ return &make_directives($rv, $_[0], "mpm_netware");
|
||||
sub edit_MinSpareThreads
|
||||
{
|
||||
return (1,
|
||||
$text{'worker_minspare'},
|
||||
&hlink($text{'worker_minspare'}, "MinSpareThreads"),
|
||||
&opt_input($_[0]->{'value'},"MinSpareThreads",$text{'default'}, 4));
|
||||
}
|
||||
sub save_MinSpareThreads
|
||||
@@ -30,7 +30,7 @@ return &parse_opt("MinSpareThreads", '^\d+$',
|
||||
sub edit_MaxSpareThreads
|
||||
{
|
||||
return (1,
|
||||
$text{'worker_maxspare'},
|
||||
&hlink($text{'worker_maxspare'}, "MaxSpareThreads"),
|
||||
&opt_input($_[0]->{'value'},"MaxSpareThreads",$text{'default'}, 4));
|
||||
}
|
||||
sub save_MaxSpareThreads
|
||||
@@ -42,7 +42,7 @@ return &parse_opt("MaxSpareThreads", '^\d+$',
|
||||
sub edit_StartThreads
|
||||
{
|
||||
return (1,
|
||||
$text{'perchild_sthreads'},
|
||||
&hlink($text{'perchild_sthreads'}, "StartThreads"),
|
||||
&opt_input($_[0]->{'value'},"StartThreads",$text{'default'}, 4));
|
||||
}
|
||||
sub save_StartThreads
|
||||
@@ -51,4 +51,3 @@ return &parse_opt("StartThreads", '^\d+$',
|
||||
$text{'perchild_esthreads'});
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -18,7 +18,7 @@ return &make_directives($rv, $_[0], "mpm_winnt");
|
||||
sub edit_ThreadsPerChild
|
||||
{
|
||||
return (1,
|
||||
$text{'worker_threads'},
|
||||
&hlink($text{'worker_threads'}, "ThreadsPerChild"),
|
||||
&opt_input($_[0]->{'value'},"ThreadsPerChild",$text{'default'}, 4));
|
||||
}
|
||||
sub save_ThreadsPerChild
|
||||
@@ -26,4 +26,3 @@ sub save_ThreadsPerChild
|
||||
return &parse_opt("ThreadsPerChild", '^\d+$',
|
||||
$text{'worker_ethreads'});
|
||||
}
|
||||
|
||||
|
||||
@@ -35,7 +35,7 @@ $rv .= sprintf "<input type=radio name=AssignUserId_def value=0 %s>\n",
|
||||
$rv .= &text('perchild_assignug',
|
||||
"<input name=AssignUserId_uid size=8 value='$_[0]->{'words'}->[0]'>",
|
||||
"<input name=AssignUserId_gid size=8 value='$_[0]->{'words'}->[1]'>");
|
||||
return (2, $text{'perchild_assign'}, $rv);
|
||||
return (2, &hlink($text{'perchild_assign'}, "AssignUserId"), $rv);
|
||||
}
|
||||
sub save_AssignUserId
|
||||
{
|
||||
@@ -66,7 +66,7 @@ foreach $c (@{$_[0]}, undef) {
|
||||
$i++;
|
||||
}
|
||||
$rv .= "</table>\n";
|
||||
return (2, $text{'perchild_child'}, $rv);
|
||||
return (2, &hlink($text{'perchild_child'}, "ChildPerUserId"), $rv);
|
||||
}
|
||||
sub save_ChildPerUserId
|
||||
{
|
||||
@@ -88,7 +88,7 @@ return ( \@rv );
|
||||
sub edit_MinSpareThreads
|
||||
{
|
||||
return (1,
|
||||
$text{'worker_minspare'},
|
||||
&hlink($text{'worker_minspare'}, "MinSpareThreads"),
|
||||
&opt_input($_[0]->{'value'},"MinSpareThreads",$text{'default'}, 4));
|
||||
}
|
||||
sub save_MinSpareThreads
|
||||
@@ -100,7 +100,7 @@ return &parse_opt("MinSpareThreads", '^\d+$',
|
||||
sub edit_MaxSpareThreads
|
||||
{
|
||||
return (1,
|
||||
$text{'worker_maxspare'},
|
||||
&hlink($text{'worker_maxspare'}, "MaxSpareThreads"),
|
||||
&opt_input($_[0]->{'value'},"MaxSpareThreads",$text{'default'}, 4));
|
||||
}
|
||||
sub save_MaxSpareThreads
|
||||
@@ -112,7 +112,7 @@ return &parse_opt("MaxSpareThreads", '^\d+$',
|
||||
sub edit_StartThreads
|
||||
{
|
||||
return (1,
|
||||
$text{'perchild_sthreads'},
|
||||
&hlink($text{'perchild_sthreads'}, "StartThreads"),
|
||||
&opt_input($_[0]->{'value'},"StartThreads",$text{'default'}, 4));
|
||||
}
|
||||
sub save_StartThreads
|
||||
@@ -124,7 +124,7 @@ return &parse_opt("StartThreads", '^\d+$',
|
||||
sub edit_NumServers
|
||||
{
|
||||
return (1,
|
||||
$text{'perchild_numservers'},
|
||||
&hlink($text{'perchild_numservers'}, "NumServers"),
|
||||
&opt_input($_[0]->{'value'},"NumServers",$text{'default'}, 4));
|
||||
}
|
||||
sub save_NumServers
|
||||
@@ -136,7 +136,7 @@ return &parse_opt("NumServers", '^\d+$',
|
||||
sub edit_MaxThreadsPerChild
|
||||
{
|
||||
return (1,
|
||||
$text{'perchild_maxthreads'},
|
||||
&hlink($text{'perchild_maxthreads'}, "MaxThreadsPerChild"),
|
||||
&opt_input($_[0]->{'value'},"MaxThreadsPerChild",$text{'default'}, 4));
|
||||
}
|
||||
sub save_MaxThreadsPerChild
|
||||
|
||||
@@ -9,12 +9,15 @@ $rv = [ [ 'CoreDumpDirectory', 0, 9, 'global', 2.0 ],
|
||||
[ 'BindAddress Listen Port', 1, 1, 'global', 2.0, 10 ],
|
||||
[ 'ListenBacklog', 0, 1, 'global', 2.0 ],
|
||||
[ 'LockFile', 0, 9, 'global', 2.0 ],
|
||||
[ 'MaxClients', 0, 0, 'global', '2.0-2.313' ],
|
||||
[ 'MaxRequestWorkers', 0, 0, 'global', 2.313 ],
|
||||
[ 'MaxRequestsPerChild', 0, 0, 'global', 2.0 ],
|
||||
[ 'MinSpareServers', 0, 0, 'global', 2.0 ],
|
||||
[ 'MaxSpareServers', 0, 0, 'global', 2.0 ],
|
||||
[ 'PidFile', 0, 9, 'global', 2.0 ],
|
||||
[ 'ScoreBoardFile', 0, 9, 'global', 2.0 ],
|
||||
[ 'SendBufferSize', 0, 1, 'global', 2.0 ],
|
||||
[ 'ServerLimit', 0, 0, 'global', 2.0 ],
|
||||
[ 'StartServers', 0, 0, 'global', 2.0 ],
|
||||
[ 'Group', 0, 8, 'global', 2.0 ],
|
||||
[ 'User', 0, 8, 'global', 2.0, 10 ] ];
|
||||
|
||||
@@ -9,14 +9,17 @@ $rv = [ [ 'CoreDumpDirectory', 0, 9, 'global', 2.0 ],
|
||||
[ 'BindAddress Listen Port', 1, 1, 'global', 2.0, 10 ],
|
||||
[ 'ListenBacklog', 0, 1, 'global', 2.0 ],
|
||||
[ 'LockFile', 0, 9, 'global', 2.0 ],
|
||||
[ 'MaxClients', 0, 0, 'global', 2.0 ],
|
||||
[ 'MaxClients', 0, 0, 'global', '2.0-2.313' ],
|
||||
[ 'MaxRequestWorkers', 0, 0, 'global', 2.313 ],
|
||||
[ 'MaxRequestsPerChild', 0, 0, 'global', 2.0 ],
|
||||
[ 'MinSpareThreads', 0, 0, 'global', 2.0 ],
|
||||
[ 'MaxSpareThreads', 0, 0, 'global', 2.0 ],
|
||||
[ 'PidFile', 0, 9, 'global', 2.0 ],
|
||||
[ 'ScoreBoardFile', 0, 9, 'global', 2.0 ],
|
||||
[ 'SendBufferSize', 0, 1, 'global', 2.0 ],
|
||||
[ 'ServerLimit', 0, 0, 'global', 2.0 ],
|
||||
[ 'StartServers', 0, 0, 'global', 2.0 ],
|
||||
[ 'ThreadLimit', 0, 0, 'global', 2.0 ],
|
||||
[ 'ThreadsPerChild', 0, 0, 'global', 2.0 ],
|
||||
[ 'Group', 0, 8, 'global', 2.0 ],
|
||||
[ 'User', 0, 8, 'global', 2.0, 10 ] ];
|
||||
@@ -26,7 +29,7 @@ return &make_directives($rv, $_[0], "worker");
|
||||
sub edit_MinSpareThreads
|
||||
{
|
||||
return (1,
|
||||
$text{'worker_minspare'},
|
||||
&hlink($text{'worker_minspare'}, "MinSpareThreads"),
|
||||
&opt_input($_[0]->{'value'},"MinSpareThreads",$text{'default'}, 4));
|
||||
}
|
||||
sub save_MinSpareThreads
|
||||
@@ -38,7 +41,7 @@ return &parse_opt("MinSpareThreads", '^\d+$',
|
||||
sub edit_MaxSpareThreads
|
||||
{
|
||||
return (1,
|
||||
$text{'worker_maxspare'},
|
||||
&hlink($text{'worker_maxspare'}, "MaxSpareThreads"),
|
||||
&opt_input($_[0]->{'value'},"MaxSpareThreads",$text{'default'}, 4));
|
||||
}
|
||||
sub save_MaxSpareThreads
|
||||
@@ -50,7 +53,7 @@ return &parse_opt("MaxSpareThreads", '^\d+$',
|
||||
sub edit_ThreadsPerChild
|
||||
{
|
||||
return (1,
|
||||
$text{'worker_threads'},
|
||||
&hlink($text{'worker_threads'}, "ThreadsPerChild"),
|
||||
&opt_input($_[0]->{'value'},"ThreadsPerChild",$text{'default'}, 4));
|
||||
}
|
||||
sub save_ThreadsPerChild
|
||||
@@ -58,4 +61,3 @@ sub save_ThreadsPerChild
|
||||
return &parse_opt("ThreadsPerChild", '^\d+$',
|
||||
$text{'worker_ethreads'});
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
name=At
|
||||
desc=Scheduled Commands
|
||||
os_support=solaris slackware-linux redhat-linux mandrake-linux debian-linux suse-linux united-linux open-linux turbo-linux corel-linux msc-linux freebsd netbsd openbsd generic-linux openserver macos gentoo-linux irix sol-linux coherent-linux openmamba-linux syno-linux
|
||||
os_support=solaris slackware-linux redhat-linux mandrake-linux debian-linux suse-linux united-linux open-linux turbo-linux corel-linux msc-linux freebsd netbsd openbsd generic-linux alpine-linux openserver macos gentoo-linux irix sol-linux coherent-linux openmamba-linux syno-linux
|
||||
category=system
|
||||
longdesc=Schedule the execution of one-off commands or scripts.
|
||||
depends=proc
|
||||
|
||||
@@ -100,16 +100,21 @@ if ($file) {
|
||||
}
|
||||
|
||||
# Create the structure
|
||||
my @mdirs = map { { 'name' => $_ } } @masters;
|
||||
my @mdirs;
|
||||
foreach my $m (@masters) {
|
||||
my $mdir = { 'name' => $m,
|
||||
'values' => [ ] };
|
||||
if ($masterkey) {
|
||||
push(@{$mdir->{'values'}}, 'key', $masterkey);
|
||||
}
|
||||
push(@mdirs, $mdir);
|
||||
}
|
||||
my $masters = { 'name' => 'masters',
|
||||
'type' => 1,
|
||||
'members' => \@mdirs };
|
||||
'type' => 1,
|
||||
'members' => \@mdirs };
|
||||
if (defined($masterport)) {
|
||||
$masters->{'values'} = [ 'port', $masterport ];
|
||||
}
|
||||
if ($masterkey) {
|
||||
$masters->{'values'} = [ 'key', $masterkey ];
|
||||
}
|
||||
my $dir = { 'name' => 'zone',
|
||||
'values' => [ $in{'zone'} ],
|
||||
'type' => 1,
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
name=Cluster Software
|
||||
desc=Cluster Software Packages
|
||||
os_support=cobalt-linux mandrake-linux redhat-linux open-linux msc-linux suse-linux united-linux turbo-linux debian-linux solaris openserver gentoo-linux trustix-linux coherent-linux slackware-linux windows pardus-linux
|
||||
os_support=cobalt-linux mandrake-linux redhat-linux open-linux msc-linux suse-linux united-linux turbo-linux debian-linux solaris openserver gentoo-linux alpine-linux trustix-linux coherent-linux slackware-linux windows pardus-linux
|
||||
depends=software servers
|
||||
category=cluster
|
||||
longdesc=Install RPMs, debian and solaris packages across multiple servers from one source.
|
||||
|
||||
10
cpan/lang/no
10
cpan/lang/no
@@ -1,11 +1,11 @@
|
||||
index_title=Perl moduler
|
||||
index_title=Perl-moduler
|
||||
index_name=Modul
|
||||
index_sub=Undermoduler
|
||||
index_version=Versjon
|
||||
index_desc=Beskrivelse
|
||||
index_ver=Versjon
|
||||
index_date=Installert
|
||||
index_installmsg=Velg en ny Perl modul som skal kompileres og installeres på systemet ditt.
|
||||
index_installmsg=Velg en ny Perl-modul som skal kompileres og installeres på systemet ditt.
|
||||
index_cpan=Fra CPAN, med navn
|
||||
index_refresh=Oppfrisk modulliste fra CPAN
|
||||
index_forcecpan=Installer alltid siste versjon fra kilde
|
||||
@@ -20,9 +20,9 @@ index_upgrade=Oppgrader moduler
|
||||
index_recs=Følgende Perl moduler anbefales for installasjon av Webmin:
|
||||
index_user=$1 (brukt av $2)
|
||||
index_recsok=Installer valgte moduler
|
||||
index_recsgot=Alle følgende Perl moduler anbefalt av Webmin er installert : $1
|
||||
index_recsgot=Alle følgende Perl-moduler anbefalt av Webmin er installert : $1
|
||||
index_ezone=Det ser ut til at Perl deles med den globale sonen, så du kan ikke installere moduler her. Du må installere moduler i den globale sonen i stedet.
|
||||
index_none=Ingen installerte Perl moduler ble funnet på systemet ditt.
|
||||
index_none=Ingen installerte Perl-moduler ble funnet på systemet ditt.
|
||||
index_tabmods=Eksisterende moduler
|
||||
index_tabinstall=Installer modul
|
||||
index_tabsuggest=Foreslåtte moduler
|
||||
@@ -38,7 +38,7 @@ download_edir=Ikke en gyldig $1 katalog
|
||||
download_etar=Kunne ikke pakke ut tar fil : $1
|
||||
download_emod=Ikke en gyldig Perl modul
|
||||
download_title=Installer modul
|
||||
download_header=Instillinger for installasjon av Perl modul
|
||||
download_header=Innstillinger for installasjon av Perl-modul
|
||||
download_mod=Modul navn
|
||||
download_mods=Modulnavn
|
||||
download_ver=Versjon
|
||||
|
||||
17
dhcpd/config-alpine-linux
Normal file
17
dhcpd/config-alpine-linux
Normal file
@@ -0,0 +1,17 @@
|
||||
dhcpd_conf=/etc/dhcp/dhcpd.conf
|
||||
pid_file=/var/run/dhcp/dhcpd.pid
|
||||
dhcpd_path=/usr/sbin/dhcpd
|
||||
lease_file=/var/lib/dhcp/dhcpd.leases
|
||||
lease_sort=0
|
||||
dhcpd_nocols=5
|
||||
lease_tz=0
|
||||
start_cmd=/etc/init.d/dhcpd start
|
||||
stop_cmd=/etc/init.d/dhcpd stop
|
||||
restart_cmd=/etc/init.d/dhcpd restart
|
||||
show_ip=0
|
||||
show_mac=0
|
||||
group_name=0
|
||||
display_max=100
|
||||
desc_name=0
|
||||
interfaces_type=alpine
|
||||
lease_vendor=0
|
||||
@@ -19,5 +19,5 @@ restart_cmd=Command to apply configuration,3,Kill and re-start
|
||||
stop_cmd=Command to stop DHCP server,3,Kill process
|
||||
pid_file=Path to DHCP server PID file,3,None
|
||||
lease_file=DHCP server lease file,0
|
||||
interfaces_type=Interfaces file type,4,redhat-Redhat,mandrake-Mandrake,suse-SuSE,debian-Debian,caldera-Caldera,gentoo-Gentoo,freebsd-FreeBSD,-Webmin
|
||||
interfaces_type=Interfaces file type,4,redhat-Redhat,mandrake-Mandrake,suse-SuSE,debian-Debian,caldera-Caldera,gentoo-Gentoo,alpine-Alpine,freebsd-FreeBSD,-Webmin
|
||||
version=DHCP server version,3,Work out automatically
|
||||
|
||||
@@ -73,6 +73,11 @@ elsif ($config{'interfaces_type'} eq 'gentoo') {
|
||||
&read_env_file("/etc/conf.d/dhcp", \%dhcp);
|
||||
$iface = $dhcp{'IFACE'};
|
||||
}
|
||||
elsif ($config{'interfaces_type'} eq 'alpine') {
|
||||
# Interfaces are set in a file on Alpine
|
||||
&read_env_file("/etc/conf.d/dhcpd", \%dhcp);
|
||||
$iface = $dhcp{'DHCPD_IFACE'};
|
||||
}
|
||||
elsif ($config{'interfaces_type'} eq 'freebsd') {
|
||||
# From FreeBSD rc.conf file
|
||||
&foreign_require("init");
|
||||
@@ -114,4 +119,3 @@ print &ui_submit($text{'save'});
|
||||
print &ui_form_end(undef,undef,1);
|
||||
|
||||
&ui_print_footer("", $text{'listl_return'});
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
name=DHCPD
|
||||
category=servers
|
||||
os_support=debian-linux freebsd osf1 redhat-linux mandrake-linux slackware-linux solaris suse-linux united-linux unixware openserver open-linux turbo-linux openbsd corel-linux cobalt-linux irix netbsd msc-linux generic-linux gentoo-linux hpux trustix-linux macos sol-linux coherent-linux openmamba-linux pardus-linux
|
||||
os_support=debian-linux freebsd osf1 redhat-linux mandrake-linux slackware-linux solaris suse-linux united-linux unixware openserver open-linux turbo-linux openbsd corel-linux cobalt-linux irix netbsd msc-linux generic-linux alpine-linux gentoo-linux hpux trustix-linux macos sol-linux coherent-linux openmamba-linux pardus-linux
|
||||
desc=DHCP Server
|
||||
longdesc=Manage shared networks, subnets, hosts and groups for ISC DHCPD.
|
||||
|
||||
@@ -103,6 +103,12 @@ elsif ($config{'interfaces_type'} eq 'gentoo') {
|
||||
$dhcp{'IFACE'} = $iface;
|
||||
&write_env_file("/etc/conf.d/dhcp", \%dhcp);
|
||||
}
|
||||
elsif ($config{'interfaces_type'} eq 'alpine') {
|
||||
# Interfaces are set in a file on Alpine
|
||||
&read_env_file("/etc/conf.d/dhcpd", \%dhcp);
|
||||
$dhcp{'DHCPD_IFACE'} = $iface;
|
||||
&write_env_file("/etc/conf.d/dhcpd", \%dhcp);
|
||||
}
|
||||
elsif ($config{'interfaces_type'} eq 'freebsd') {
|
||||
# Update FreeBSD rc.conf file
|
||||
&foreign_require("init");
|
||||
@@ -110,4 +116,3 @@ elsif ($config{'interfaces_type'} eq 'freebsd') {
|
||||
}
|
||||
|
||||
&redirect("");
|
||||
|
||||
|
||||
16
dovecot/config_info.pl
Normal file
16
dovecot/config_info.pl
Normal file
@@ -0,0 +1,16 @@
|
||||
require 'dovecot-lib.pl';
|
||||
|
||||
# config_post_save(&newconfig, &oldconfig)
|
||||
# Called after the module's configuration has been saved
|
||||
sub config_post_save
|
||||
{
|
||||
my ($newconfig, $oldconfig) = @_;
|
||||
my $f = $newconfig->{'add_config'};
|
||||
$f =~ s/^\s+|\s+$//g;
|
||||
if ($f && $f =~ /^\// && !-r $f && !-e $f && !-l $f) {
|
||||
&open_lock_tempfile(ADDCONF, ">$f");
|
||||
&close_tempfile(ADDCONF);
|
||||
}
|
||||
}
|
||||
|
||||
1;
|
||||
@@ -26,7 +26,9 @@ return undef;
|
||||
# directives
|
||||
sub get_add_config_file
|
||||
{
|
||||
foreach my $f (split(/\s+/, $config{'add_config'})) {
|
||||
my $f = $config{'add_config'} || "";
|
||||
$f =~ s/^\s+|\s+$//g;
|
||||
if ($f) {
|
||||
return $f if (-r $f);
|
||||
}
|
||||
return &get_config_file();
|
||||
@@ -364,7 +366,7 @@ if ($parent) {
|
||||
}
|
||||
else {
|
||||
# Add to the global config file
|
||||
$file = &get_config_file();
|
||||
$file = $before ? $before->{'file'} : &get_add_config_file();
|
||||
$lref = &read_file_lines($file);
|
||||
if ($before) {
|
||||
# Add before another block
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
index_ecmd=Fant ikke Dovecot tjenerprogrammet $1 på systemet ditt. Kanskje det ikke er installert, eller så er <a href='$2'>modulkonfigurasjonen</a> feil.
|
||||
index_econf=Fant ikke Dovecot konfigurasjonsfilen $1 på systemet ditt. Kanskjer den ikke er installert, eller så er <a href='$2'>modulkonfigurasjonen</a> feil.
|
||||
index_ecmd=Fant ikke Dovecot-tjenerprogrammet $1 på systemet ditt. Kanskje det ikke er installert, eller så er <a href='$2'>modulkonfigurasjonen</a> feil.
|
||||
index_econf=Fant ikke Dovecot-konfigurasjonsfilen $1 på systemet ditt. Kanskje den ikke er installert, eller så er <a href='$2'>modulkonfigurasjonen</a> feil.
|
||||
index_dovecot=Dovecot
|
||||
index_stop=Stopp Dovecot tjener
|
||||
index_stopdesc=Steng ned den kjørende Dovecot IMAP/POP3 tjenerprosessen. Dette vil hindre brukere i å laste ned e-posten sin.
|
||||
index_stopdesc=Steng ned den kjørende Dovecot IMAP/POP3-tjenerprosessen. Dette vil hindre brukere i å laste ned e-posten sin.
|
||||
index_start=Start Dovecot tjener
|
||||
index_startdesc=Start Dovecot IMAP/POP3 tjenerprosessen, slik at brukere kan laste ned e-posten sin.
|
||||
index_startdesc=Start Dovecot IMAP/POP3-tjenerprosessen, slik at brukere kan laste ned e-posten sin.
|
||||
index_apply=Bruk konfigurasjon
|
||||
index_applydesc=Aktiver gjeldende Dovecot konfigurasjon ved å stoppe og omstarte tjener prosessen.
|
||||
index_boot=Start ved systemetoppstart?
|
||||
index_bootdesc=Endre denne innstillingen for å aktivere eller deaktivere oppstart av Dovecot tjeneren ved systemoppstart.
|
||||
index_return=modul indeks
|
||||
index_return=modulindeks
|
||||
index_version=Versjon $1
|
||||
|
||||
stop_err=Kunne ikke stoppe Dovecot
|
||||
@@ -19,52 +19,52 @@ apply_err=Kunne ikke ta i bruk konfigurasjon
|
||||
|
||||
net_title=Nettverk og protokoller
|
||||
net_header=Innstillinger for Dovecot nettverk og protokoller
|
||||
net_protocols=Betjen e-post protokoller
|
||||
net_protocols=Betjen e-postprotokoller
|
||||
net_pop3=POP3
|
||||
net_imap=IMAP
|
||||
net_pop3s=POP3 (SSL)
|
||||
net_imaps=IMAP (SSL)
|
||||
net_lmtp=LMTP
|
||||
net_ssl_disable=Godta SSL tilkoblinger?
|
||||
net_imap_listen=Grensesnitt for IMAP tilkoblinger
|
||||
net_pop3_listen=Grensesnitt for POP3 tilkoblinger
|
||||
net_imaps_listen=Grensesnitt for IMAP SSL tilkoblinger
|
||||
net_pop3s_listen=Grensesnitt for POP3 SSL tilkoblinger
|
||||
net_listen=Grensesnitt for ikke-SSL tilkoblinger
|
||||
net_ssl_listen=Grensesnitt for SSL tilkoblinger
|
||||
net_ssl_disable=Godta SSL-tilkoblinger?
|
||||
net_imap_listen=Grensesnitt for IMAP-tilkoblinger
|
||||
net_pop3_listen=Grensesnitt for POP3-tilkoblinger
|
||||
net_imaps_listen=Grensesnitt for IMAP SSL-tilkoblinger
|
||||
net_pop3s_listen=Grensesnitt for POP3 SSL-tilkoblinger
|
||||
net_listen=Grensesnitt for ikke-SSL-tilkoblinger
|
||||
net_ssl_listen=Grensesnitt for SSL-tilkoblinger
|
||||
net_listen0=Standard
|
||||
net_listen1=Alle IPv4 og IPv6
|
||||
net_listen2=Alle IPv4
|
||||
net_listen3=IP adresse
|
||||
net_err=Kunne ikke lagre nettverksinnstillinger
|
||||
net_eimap_listen=Ugyldig IP adresse for IMAP tilkoblinger
|
||||
net_epop3_listen=Ugyldig IP adresse for POP3 tilkoblinger
|
||||
net_eimaps_listen=Ugyldig IP adresse for IMAP SSL tilkoblinger
|
||||
net_epop3s_listen=Ugyldig IP adresse for POP3 SSL tilkoblinger
|
||||
net_elisten=Ugyldig IP adresse for ikke-SSL tilkoblinger
|
||||
net_essl_listen=Ugyldig IP adresse for SSL tilkoblinger
|
||||
net_eimap_listen=Ugyldig IP adresse for IMAP-tilkoblinger
|
||||
net_epop3_listen=Ugyldig IP adresse for POP3-tilkoblinger
|
||||
net_eimaps_listen=Ugyldig IP adresse for IMAP SSL-tilkoblinger
|
||||
net_epop3s_listen=Ugyldig IP adresse for POP3 SSL-tilkoblinger
|
||||
net_elisten=Ugyldig IP adresse for ikke-SSL-tilkoblinger
|
||||
net_essl_listen=Ugyldig IP adresse for SSL-tilkoblinger
|
||||
|
||||
imap_title=IMAP innstillinger
|
||||
|
||||
pop3_title=POP3 innstillinger
|
||||
|
||||
ssl_title=SSL Konfigurasjon
|
||||
ssl_header=Instillinger for IMAP og POP3 SSL modus
|
||||
ssl_header=Innstillinger for IMAP og POP3 SSL modus
|
||||
ssl_key=Fil med SSL privat nøkkel
|
||||
ssl_cert=SSL sertifikatfil
|
||||
ssl_ca=SSL CA sertifikatfil
|
||||
ssl_cert=SSL-sertifikatfil
|
||||
ssl_ca=SSL CA-sertifikatfil
|
||||
ssl_pass=Passord for nøkkelfil
|
||||
ssl_prompt=Ingen nødvendig
|
||||
ssl_regen=Intervall mellom regenerering av SSL parametere
|
||||
ssl_hours=timer
|
||||
ssl_none=Ingen
|
||||
ssl_plain=Forby vanlig-tekst autentisering i ikke-SSL modus?
|
||||
ssl_err=Kunne ikke lagre SSL konfigurasjon
|
||||
ssl_ekey=Manglende eller ikke-eksisterende fil med privat nøkkel
|
||||
ssl_ecert=Manglende eller ikke-eksisterende sertifikat fil
|
||||
ssl_eca=Manglende eller ikke-eksisterende CA sertifikat fil
|
||||
ssl_err=Kunne ikke lagre SSL-konfigurasjon
|
||||
ssl_ekey=Manglende eller ikke-eksisterende privat nøkkelfil
|
||||
ssl_ecert=Manglende eller ikke-eksisterende sertifikatfil
|
||||
ssl_eca=Manglende eller ikke-eksisterende CA-sertifikatfil
|
||||
ssl_eregen=Manglende eller ikke-numerisk intervall for regenerering av parametere
|
||||
ssl_epass=Ingen passord for SSL nøkkel-fil angitt
|
||||
ssl_epass=Ingen passord for SSL-nøkkelfil angitt
|
||||
|
||||
misc_title=Andre innstillinger
|
||||
|
||||
@@ -87,7 +87,7 @@ login_realms=SASL autentiseringsområde
|
||||
login_realm=Standard autentiseringsområde
|
||||
login_mechs=Autentiserings-metoder
|
||||
login_anonymous=Anonym
|
||||
login_plain=Vanlig-tekst
|
||||
login_plain=Vanlig tekst
|
||||
login_digest-md5=Digest-MD5
|
||||
login_cram-md5=Cram-MD5
|
||||
login_apop=APOP
|
||||
@@ -105,19 +105,19 @@ login_shadow=Unix <tt>shadow</tt> fil
|
||||
login_dpam=Standard PAM tjeneste (<tt>dovecot</tt>)
|
||||
login_pam=PAM tjeneste $1
|
||||
login_session=Åpne og lukk PAM sesjoner
|
||||
login_pam2=PAM tjeneste $1<br> $2<br> Bruk cache nøkkel $3
|
||||
login_pam2=PAM tjeneste $1<br> $2<br> Bruk cache-nøkkel $3
|
||||
login_other=Annen Dovecot innstilling $1
|
||||
login_epasswdfile=Manglende eller ikke-eksisterende egendefinert passordfil
|
||||
login_euid=Manglende eller ikke-numerisk UID
|
||||
login_egid=Manglende eller ikke-numerisk GID
|
||||
login_ehome=Manglende hjemmekatalog
|
||||
login_eldap=Manglende eller ikke-eksisterende KDAP konfigurasjonsfil
|
||||
login_epgsql=Manglende eller ikke-eksisterende PortgreSQL konfigurasjonsfil
|
||||
login_esql=Manglende eller ikke-eksisterende SQL konfigurasjonsfil
|
||||
login_eppam=Manglende eller ugyldig PAM tjeneste
|
||||
login_bsdauth=BSD autentisering<br> Bruk cache nøkkel $1
|
||||
login_eldap=Manglende eller ikke-eksisterende LDAP-konfigurasjonsfil
|
||||
login_epgsql=Manglende eller ikke-eksisterende PostgreSQL-konfigurasjonsfil
|
||||
login_esql=Manglende eller ikke-eksisterende SQL-konfigurasjonsfil
|
||||
login_eppam=Manglende eller ugyldig PAM-tjeneste
|
||||
login_bsdauth=BSD-autentisering<br> Bruk cache-nøkkel $1
|
||||
login_checkpassword=Eksternt program $1
|
||||
login_eckey=Manglende eller ugyldig cache nøkkel
|
||||
login_eckey=Manglende eller ugyldig cache-nøkkel
|
||||
login_echeckpassword=Manglende eller ugyldig eksternt passord-sjekk program
|
||||
login_procs=Maks. antall innloggingsprosesser
|
||||
login_count=Innledende innloggingsprosesser
|
||||
@@ -180,10 +180,10 @@ mail_econtrol=Manglende eller ugyldig absolutt sti for kontrollfiler
|
||||
log_net=Endrett nettverk og protokoller
|
||||
log_login=Endret bruker og innloggingsinnstillinger
|
||||
log_mail=Endret e-post filer
|
||||
log_ssl=Endret SSL konfigurasjon
|
||||
log_ssl=Endret SSL-konfigurasjon
|
||||
log_apply=Tok i bruk konfigurasjon
|
||||
log_start=Startet Dovecot tjener
|
||||
log_stop=Stoppet Dovecot tjener
|
||||
log_start=Startet Dovecot-tjener
|
||||
log_stop=Stoppet Dovecot-tjener
|
||||
log_bootup=Aktiverte Dovecot ved oppstart
|
||||
log_bootdown=Deaktiverte Dovecot ved oppstart
|
||||
log_manual=Redigerte konfigfilen $1 manuelt
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
index_title=Fetchmail e-post henting
|
||||
index_title=Fetchmail e-posthenting
|
||||
index_poll=Tjener som skal sjekkes
|
||||
index_proto=Protokoll
|
||||
index_active=Aktiv?
|
||||
index_users=Eksterne og lokale brukere
|
||||
index_add=Legg til ny tjener.
|
||||
index_run=Sjekk alle tjenere
|
||||
index_global=Rediger standard innstillinger.
|
||||
index_user=Unix bruker
|
||||
index_conf=Fetchmail konfigurasjon
|
||||
index_file=Fetchmail konfigurasjon i $1
|
||||
index_global=Rediger standardinnstillinger.
|
||||
index_user=Unix-bruker
|
||||
index_conf=Fetchmail-konfigurasjon
|
||||
index_file=Fetchmail-konfigurasjon i $1
|
||||
index_return=tjenerliste
|
||||
index_start=Start Fetchmail Daemon
|
||||
index_stop=Stopp Fetchmail Daemon
|
||||
@@ -17,24 +17,24 @@ index_stopmsg=Klikk på denne knappen for å stoppe fetchmail daemon som for øy
|
||||
index_efetchmail=Fant ikke fetchmail programmet $1. Kanskje fetchmail ikke er installert på systemet ditt, eller så er ikke <a href='$2'>modulkonfigurasjonen</a> korrekt.
|
||||
index_none=Ingen Unix brukere har <tt>.fetchmailrc</tt> filer.
|
||||
index_cron=Tidsplanlagt sjekking
|
||||
index_crondesc=Klikk på denne knappen for å opprette, endre eller fjerne en Cronjobb som kjører Fettchmail ihht. en tidsplan for å se etter og laste ned e-post vha. konfigurasjonen ovenfor.
|
||||
index_crondesc=Klikk på denne knappen for å opprette, endre eller fjerne en Cronjobb som kjører Fetchmail ihht. en tidsplan for å se etter og laste ned e-post vha. konfigurasjonen ovenfor.
|
||||
index_crondesc2=Klikk på denne knappen for å opprette, endre eller fjerne en Cronjobb som kjører Fetchmail automatisk ihht tidsplan, og ser etter og laster ned e-post for alle angitte brukere.
|
||||
index_version=Fetchmail versjon $1
|
||||
index_header=Brukere med Fatchmail konfigurasjoner
|
||||
index_search=Vis Fetchmail konfigurasjon for:
|
||||
index_header=Brukere med Fatchmail-konfigurasjoner
|
||||
index_search=Vis Fetchmail-konfigurasjon for:
|
||||
index_show=Vis
|
||||
index_toomany=Det er for mange brukere på systemet ditt til å vises.
|
||||
|
||||
poll_create=Legg til tjener
|
||||
poll_edit=Rediger tjener
|
||||
poll_header=Innstillinger for e-post tjener
|
||||
poll_poll=Tjener navn
|
||||
poll_header=Innstillinger for e-posttjener
|
||||
poll_poll=Tjenernavn
|
||||
poll_auth=Autentiseringsmetode
|
||||
poll_skip=Spørring aktivert?
|
||||
poll_via=E-post tjener som skal kontaktes
|
||||
poll_via_def=Samme som tjener navn
|
||||
poll_via=E-posttjener som skal kontaktes
|
||||
poll_via_def=Samme som tjenernavn
|
||||
poll_proto=Protokoll
|
||||
poll_port=Tjener port
|
||||
poll_port=Tjenerport
|
||||
poll_uheader=Brukerdetaljer for e-post tjener
|
||||
poll_user=Ekstern bruker
|
||||
poll_pass=Eksternt passord
|
||||
@@ -42,7 +42,7 @@ poll_is=Lokal(e) bruker(e)
|
||||
poll_keep=La meldinger være igjen på tjener?
|
||||
poll_fetchall=Alltid hent alle meldinger?
|
||||
poll_usually=Vanligvis nei
|
||||
poll_ssl=Koble til i SSL modus?
|
||||
poll_ssl=Koble til i SSL-modus?
|
||||
poll_err=Kunne ikke lagre tjener
|
||||
poll_epoll=Manglende eller ugyldig tjenernavn
|
||||
poll_evia=Ugyldig e-posttjener navn
|
||||
@@ -109,7 +109,7 @@ acl_daemon=Kan konfigurere Fetchmail daemon?
|
||||
|
||||
cron_title=Tidsplanlagt sjekking
|
||||
cron_desc=Denne siden kan brukes til å aktivere og deaktivere Cronjobben som sjekker e-post tjenerne i din Fetchmail konfigurasjon ihht tidsplan. Det er bedre å bruke en Cron jobb enn å bruke Fetchmail daemon siden den ikke behøver å omstartes ved oppstart av systemet.
|
||||
cron_header=Instillinger for tidsplanlagt Fetchmail
|
||||
cron_header=Innstillinger for tidsplanlagt Fetchmail
|
||||
cron_enabled=Tidsplanlagt sjekking aktivert?
|
||||
cron_yes=Ja, på tidspunktene angitt nedenfor ..
|
||||
cron_output=Måt for utdata fra FetchMail
|
||||
@@ -120,9 +120,9 @@ cron_cron=Output til cron
|
||||
cron_owner=Send e-post til den brukeren som får konfigurasjonen sjekket
|
||||
cron_user=Kjør Fetchmail som brukeren
|
||||
cron_err=Kunne ikke lagre tidsplanlagt sjekking
|
||||
cron_efile=Manglende eller ugyldig output filnavn
|
||||
cron_email=Manglende eller ugyldig e-post adresse
|
||||
cron_euser=Manglende eller ugyldig Unix bruker
|
||||
cron_efile=Manglende eller ugyldig utdatafilnavn
|
||||
cron_email=Manglende eller ugyldig e-postadresse
|
||||
cron_euser=Manglende eller ugyldig Unix-bruker
|
||||
cron_errors=Vis bare utdata dersom det oppstår en feil?
|
||||
cron_ecannot2=Du har ikke lov til å konfigurere tidsplanlagt sjekking
|
||||
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
index_title=Filsystem sikkerhetskopi
|
||||
index_title=Filsystem-sikkerhetskopi
|
||||
index_add=Legg til en ny sikkerhetskopi av katalog:
|
||||
index_none=Det er ikke opprettet noen konfigurasjoner for sikkerhetskopier av filsystemer enda.
|
||||
index_none2=Det finnes ingen konfigurasjoner for sikkerhetskopiering av filsystemer som du har tilgang til.
|
||||
index_restore=Gjenopprett sikkerhetskopi av filsystem type:
|
||||
index_restore=Gjenopprett sikkerhetskopi av filsystemtype:
|
||||
index_restoremsg=Velg filsystemtype og klikk på denne knappen for å begynne prosessen med å velge en filsystem-sikkerhetskopi som skal gjenopprettes.
|
||||
index_restore2=Gjenopprett sikkerhetskopi av filsystem
|
||||
index_restoremsg2=Klikk på denne knappen for å starte prosessen med å velge en filsyste,-sikkerhetskopi som skal gjenopprettes.
|
||||
index_restoremsg2=Klikk på denne knappen for å starte prosessen med å velge en filsystem-sikkerhetskopi som skal gjenopprettes.
|
||||
index_ecommands=Ingen av kommandoene for sikkerhetskopiering av filsystemer (som f.eks. $1) som er nødvendige for denne modulen, ble funnet på systemet ditt. Kanskje de ikke er installert.
|
||||
index_return=liste med sikkerhetskopier
|
||||
index_running=Kjørende sikkerhetskopi jobber
|
||||
@@ -20,7 +20,7 @@ index_newtape=Tape lastet
|
||||
index_noact=Ingen tilgjengelig
|
||||
index_now=Sikkerhetskopi..
|
||||
index_follow=Etter $1
|
||||
index_forcetar=I TAR format
|
||||
index_forcetar=I TAR-format
|
||||
index_delete=Slett valgte sikkerhetskopier
|
||||
index_nostrftime=Advarsel - noen sikkerhetskopi-jobber bruker % i filnavn, men strftime erstatning er ikke aktivert på modulens konfig.side.
|
||||
|
||||
@@ -30,7 +30,7 @@ dump_fs=Filsystem
|
||||
dump_sched=Tidsplanlagt?
|
||||
dump_when=På tidspunktene
|
||||
dump_dest=Sikkerhetskopier til
|
||||
dump_file=Fil eller tape enhet
|
||||
dump_file=Fil eller tape-enhet
|
||||
dump_host=Vert $1 som bruker $2 i fil eller enhet $3
|
||||
dump_level=Dump nivå
|
||||
dump_level_0=0 (Full sikkerhetskopi)
|
||||
@@ -51,7 +51,7 @@ dump_ebsize=Manglende eller ugyldig blokkstørrelse for dump record
|
||||
dump_max=Maks. filstørrelse som skal tas med
|
||||
dump_unlimited=Ubegrenset
|
||||
dump_attribs=Ta med fil-attributter?
|
||||
dump_over=Spø før tape overskrives?
|
||||
dump_over=Spør før tape overskrives?
|
||||
dump_overwrite=Skirv alltid over sikkerhetskopi?
|
||||
dump_invent=Loggfør sikkerhetskopi i inventar?
|
||||
dump_emax=Manglende eller ugyldig maksimum filstørrelse
|
||||
@@ -71,12 +71,12 @@ dump_after=Kommando som skal kjøres etter sikkerhetskopiering
|
||||
dump_fok=Stopp dersom kommando feiler
|
||||
dump_fok2=Rapporter feil dersom kommando feiler
|
||||
dump_aok=Hopp over kommando selv om backup feiler
|
||||
dump_extra=Ekstra kommando-linje parametere
|
||||
dump_extra=Ekstra kommandolinjeparametere
|
||||
dump_rsh=Ekstern sikkerhetskopieringskommando
|
||||
dump_rsh0=Standard (RSH)
|
||||
dump_rsh1=SSH
|
||||
dump_rsh3=FTP
|
||||
dump_rsh2=Annen kommando ..
|
||||
dump_rsh2=Annen kommando ...
|
||||
dump_pass=Passord for SSH innlogging
|
||||
dump_pass2=Passord for SSH/FTP innlogging
|
||||
dump_ersh=Manglende eller ugyldig ekstern sikkerhetskopieringskommando
|
||||
@@ -98,9 +98,9 @@ dump_ignoreread=Ignorer lese-feil på filer?
|
||||
dump_notape=Spør etter ny tape hvis nødvendig?
|
||||
dump_rmt=Sti til <tt>rms</tt> på eksternt system
|
||||
dump_links=Følg symbolske lenker?
|
||||
dump_egzip=Instillingen for gzip komprimering er ikke kompatibel med innstillingen for tape størrelse
|
||||
dump_egzip2=Instillingen for gzip komprimering er ikke kompatibel med innstillingen for fler-filers sikkerhetskopi
|
||||
dump_egzip3=Instillingen for gzip komprimering er ikke kompatibel med innstillingen for kun å legge til nye filer i arkivet
|
||||
dump_egzip=Innstillingen for gzip-komprimering er ikke kompatibel med innstillingen for tape størrelse
|
||||
dump_egzip2=Innstillingen for gzip-komprimering er ikke kompatibel med innstillingen for fler-filers sikkerhetskopi
|
||||
dump_egzip3=Innstillingen for gzip-komprimering er ikke kompatibel med innstillingen for kun å legge til nye filer i arkivet
|
||||
dump_emulti=Fler-filers sikkerhetskopiering kan ikke kjøres mot en tape-enhet
|
||||
dump_emulti2=Fler-filers sikkerhetskopiering kan ikke kjøres mot en ekstern tjener
|
||||
dump_ermt=Manglende eller ugyldig sti til <tt>rmt</tt> programmet
|
||||
@@ -219,7 +219,7 @@ acl_cmds=Kan redigere før og etter kommandoer?
|
||||
acl_extra=Kan redigere ekstra kommando-linje parametere?
|
||||
acl_dirs=Tillatte kataloger for sikkerhetskopiering
|
||||
acl_all=Alle kataloger
|
||||
acl_list=Bare i listen ..
|
||||
acl_list=Bare i listen ...
|
||||
|
||||
delete_err=Kunne ikke slette sikkerhetskopier
|
||||
delete_enone=Ingen valgt
|
||||
|
||||
@@ -2,6 +2,6 @@ name=Dump
|
||||
desc=Filesystem Backup
|
||||
category=system
|
||||
depends=mount cron proc mailboxes
|
||||
os_support=redhat-linux mandrake-linux slackware-linux debian-linux suse-linux united-linux open-linux turbo-linux corel-linux cobalt-linux msc-linux generic-linux solaris freebsd macos gentoo-linux irix trustix-linux coherent-linux pardus-linux
|
||||
os_support=redhat-linux mandrake-linux slackware-linux debian-linux suse-linux united-linux open-linux turbo-linux corel-linux cobalt-linux msc-linux generic-linux alpine-linux solaris freebsd macos gentoo-linux irix trustix-linux coherent-linux pardus-linux
|
||||
longdesc=Backup and restore filesystems using the dump and restore family of commands.
|
||||
readonly=1
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -124,6 +124,15 @@ elsif ($init_mode eq "systemd") {
|
||||
# Create systemd
|
||||
# See updateboot.pl
|
||||
}
|
||||
elsif ($init_mode eq "openrc") {
|
||||
# Create OpenRC script, if missing
|
||||
&enable_at_boot($product, $ucproduct,
|
||||
"$config_directory/.start-init",
|
||||
"$config_directory/.stop-init",
|
||||
undef,
|
||||
{ 'fork' => 1,
|
||||
'pidfile' => $var_directory."/miniserv.pid" });
|
||||
}
|
||||
elsif ($init_mode eq "rc" || $init_mode eq "upstart") {
|
||||
# Create RC or upstart script
|
||||
&enable_at_boot($product, $ucproduct,
|
||||
@@ -141,4 +150,3 @@ elsif ($init_mode eq "launchd") {
|
||||
|
||||
$config{'atboot_product'} = $product;
|
||||
&save_module_config();
|
||||
|
||||
|
||||
11
init/config-alpine-linux
Normal file
11
init/config-alpine-linux
Normal file
@@ -0,0 +1,11 @@
|
||||
init_mode=openrc
|
||||
init_base=/etc/runlevels
|
||||
init_dir=/etc/init.d
|
||||
reboot_command=reboot
|
||||
shutdown_command=poweroff
|
||||
expert=0
|
||||
desc=1
|
||||
status_check=1
|
||||
order=0
|
||||
sort_mode=0
|
||||
boot_levels=default
|
||||
@@ -1,11 +1,12 @@
|
||||
line1=Configurable options,11
|
||||
expert=Allow selection of individual runlevels?,1,1-Yes,0-No
|
||||
desc=Display actions with descriptions,1,2-Yes, and show all runlevels,1-Yes,0-No
|
||||
systemd_dedicated=Hide systemd services table?,1,-No,1-Yes
|
||||
order=Show boot order of actions?,1,1-Yes,0-No
|
||||
status_check=Show current status of actions,1,2-On index and action pages,1-On action page only,0-No
|
||||
sort_mode=Sort actions by,1,1-Boot order,0-Name
|
||||
line2=System configuration,11
|
||||
init_mode=Boot system,4,-Detect automatically,init-SysV init,upstart-Upstart,systemd-Systemd,osx-MacOS,rc-FreeBSD RC scripts,win32-Windows services,local-Single boot script
|
||||
init_mode=Boot system,4,-Detect automatically,systemd-Systemd,init-SysV init,openrc-OpenRC,upstart-Upstart,local-Single boot script,rc-FreeBSD RC scripts,launchd-macOS launchd,osx-Legacy macOS StartupItems,win32-Windows services
|
||||
init_base=Directory in which runlevel directories are located,0
|
||||
init_dir=Directory containing master init scripts,0
|
||||
order_digits=Number of digits in action order,0
|
||||
@@ -17,8 +18,8 @@ shutdown_command=Command to shutdown the system,0
|
||||
inittab_id=inittab ID for bootup runlevel,0
|
||||
rc_dir=FreeBSD rc scripts directories,3,None
|
||||
rc_conf=FreeBSD configuration files,3,None
|
||||
line3=OSX system configuration,11
|
||||
startup_dirs=Darwin StartupItems directories,0
|
||||
line3=macOS StartupItems configuration,11
|
||||
startup_dirs=macOS StartupItems directories,0
|
||||
darwin_setup=Directory for custom StartupItems,0
|
||||
hostconfig=Darwin hostconfig file,0
|
||||
hostconfig=Legacy hostconfig file,0
|
||||
plist=Name of plist in a StartupItems directory,0
|
||||
|
||||
@@ -5,7 +5,7 @@ order=Mostra l'ordre d'engegada de les accions,1,1-Sí,0-No
|
||||
status_check=Mostra l'estat actual de les accions,1,2-A les pàgines d'índex i de l'acció,1-Només a la pàgina de l'acció,0-No
|
||||
sort_mode=Ordena les accions per,1,1-Ordre d'engegada,0-Nom
|
||||
line2=Configuració del sistema,11
|
||||
init_mode=Engegada del sistema,4,-Detecta-ho automàticament,init-Init de SysV,upstart-Upstart,systemd-Systemd,osx-MacOS,rc-Scripts RC de FreeBSD,win32-Serveis Windows,local-Script únic d'engegada
|
||||
init_mode=Engegada del sistema,4,-Detecta-ho automàticament,systemd-Systemd,init-Init de SysV,openrc-OpenRC,upstart-Upstart,local-Script únic d'engegada,rc-Scripts RC de FreeBSD,launchd-macOS launchd,osx-Legacy macOS StartupItems,win32-Serveis Windows
|
||||
init_base=Directori on s'allotgen els directoris de nivells d'execució,0
|
||||
init_dir=Directori que conté els scripts init mestres,0
|
||||
order_digits=Nombre de dígits de l'ordre de l'acció,0
|
||||
|
||||
@@ -5,7 +5,7 @@ order=Zeige die Aktionen in Reihenfolge des Starts an?,1,1-Ja,0-Nein
|
||||
status_check=Zeige aktuellen Status der Aktionen,1,2-Auf Index- und Aktionen-Seite,1-Nur auf der Aktionen-Seite,0-Nein
|
||||
sort_mode=Sortiere Aktionen nach,1,1-Boot-Reihenfolge,0-Name
|
||||
line2=Systemkonfiguration,11
|
||||
init_mode=Boot-System,4,-automatisch erkennen,init-SysV init,upstart-Upstart,systemd-Systemd,osx-MacOS,rc-FreeBSD RC Script,win32-Windows-Dienste,local-Single Bootskript
|
||||
init_mode=Boot-System,4,-automatisch erkennen,systemd-Systemd,init-SysV init,openrc-OpenRC,upstart-Upstart,local-Single Bootskript,rc-FreeBSD RC Script,launchd-macOS launchd,osx-Legacy macOS StartupItems,win32-Windows-Dienste
|
||||
init_base=Verzeichnis, in dem die Runlevel-Verzeichnisse liegen,0
|
||||
init_dir=Verzeichnis, in dem das Haupt-Skript liegt,0
|
||||
order_digits=Anzahl Ziffern in Aktionsreihenfolge,0
|
||||
|
||||
@@ -5,7 +5,7 @@ order=Vis handlingenes oppstartsrekkefølge?1,1-Ja,0-Nei
|
||||
status_check=Vis handlingenes gjeldende status,1,2-På indeks- og handlingssider,1-Bare på handlingssider,0-Nei
|
||||
sort_mode=Sorter handlinger etter,1,1-Oppstartrekkefølge,0-Navn
|
||||
line2=System konfigurasjon,11
|
||||
init_mode=Oppstartssystem,4,-Oppdag automatisk,init-SysV init,upstart-Upstart,systemd-Systemd,osx-MacOS,rc-FreeBSD RC scripts,win32-Windows tjenester,local-Enkelt oppstartsscript
|
||||
init_mode=Oppstartssystem,4,-Oppdag automatisk,systemd-Systemd,init-SysV init,openrc-OpenRC,upstart-Upstart,local-Enkelt oppstartsscript,rc-FreeBSD RC scripts,launchd-macOS launchd,osx-Legacy macOS StartupItems,win32-Windows tjenester
|
||||
init_base=Katalog hvor kjøretids-kataloger finnes,0
|
||||
init_dir=Katalog som inneholder master init scripts,0
|
||||
order_digits=Antall sifre i handlingssortering,0
|
||||
|
||||
129
init/index.cgi
129
init/index.cgi
@@ -329,70 +329,74 @@ elsif ($init_mode eq "upstart" && $access{'bootup'}) {
|
||||
|
||||
}
|
||||
elsif ($init_mode eq "systemd" && $access{'bootup'}) {
|
||||
# Show systemd actions
|
||||
print &ui_form_start("mass_systemd.cgi", "post");
|
||||
@links = ( &select_all_link("d"),
|
||||
&select_invert_link("d"),
|
||||
&ui_link("edit_systemd.cgi?new=1", $text{'index_sadd'}) );
|
||||
print &ui_links_row(\@links);
|
||||
print &ui_columns_start([ "", $text{'systemd_name'},
|
||||
$config{'desc'} ? $text{'systemd_desc'} : (),
|
||||
$text{'systemd_type'},
|
||||
$text{'systemd_status'},
|
||||
$text{'systemd_boot'},
|
||||
$text{'index_ustatus'} ]);
|
||||
my $units_piped = join('|', map { quotemeta } &get_systemd_unit_types());
|
||||
foreach $u (&list_systemd_services()) {
|
||||
if ($u->{'legacy'}) {
|
||||
$l = "edit_action.cgi?0+".&urlize($u->{'name'});
|
||||
}
|
||||
else {
|
||||
$l = "edit_systemd.cgi?name=".&urlize($u->{'name'});
|
||||
}
|
||||
my $sname = $u->{'name'};
|
||||
my ($type) = $sname =~ /\.([^.]+)$/;
|
||||
if (defined($type) && $type =~ /^(?:$units_piped)$/) {
|
||||
$sname =~ s/\.$type$//;
|
||||
}
|
||||
else {
|
||||
$type = '';
|
||||
}
|
||||
my $title = ($u->{'boot'} == -1 ?
|
||||
&html_escape($sname) :
|
||||
&ui_link($l, &html_escape($sname)));
|
||||
my $desc = $config{'desc'} ? &html_escape($u->{'desc'}) : undef;
|
||||
print &ui_columns_row([
|
||||
&ui_checkbox("d", $u->{'name'}, undef),
|
||||
$title,
|
||||
$desc // (),
|
||||
$type,
|
||||
$u->{'fullstatus'} || "<i>$text{'index_unknown'}</i>",
|
||||
$u->{'boot'} == 1 ?
|
||||
&ui_text_color("$text{'yes'}", 'success') :
|
||||
$u->{'boot'} == 2 ?
|
||||
&ui_text_color("$text{'index_sboot6'}", 'success') :
|
||||
$u->{'boot'} == -1 ?
|
||||
&ui_text_color("$text{'index_sboot5'}", 'warn') :
|
||||
&ui_text_color("$text{'no'}", 'warn'),
|
||||
$u->{'status'} == 1 ? &ui_text_color("$text{'yes'}", 'success') :
|
||||
$u->{'status'} == 0 ?
|
||||
&ui_text_color("$text{'no'}", 'warn') :
|
||||
"<i>$text{'index_unknown'}</i>",
|
||||
]);
|
||||
if (!&init_show_systemd_services()) {
|
||||
my $systemd_link = &ui_tag('a',
|
||||
$text{'index_systemd_module'},
|
||||
{ 'href' => '../systemd/' });
|
||||
print &ui_alert_box(
|
||||
&text('index_systemd_dedicated', $systemd_link),
|
||||
'info', undef, undef, ""),"\n";
|
||||
}
|
||||
print &ui_columns_end();
|
||||
print &ui_links_row(\@links);
|
||||
print &ui_form_end([ [ "start", $text{'index_start'} ],
|
||||
[ "stop", $text{'index_stop'} ],
|
||||
[ "restart", $text{'index_restart'} ],
|
||||
undef,
|
||||
[ "addboot", $text{'index_addboot'} ],
|
||||
[ "delboot", $text{'index_delboot'} ],
|
||||
undef,
|
||||
[ "addboot_start", $text{'index_addboot_start'} ],
|
||||
[ "delboot_stop", $text{'index_delboot_stop'} ],
|
||||
]);
|
||||
else {
|
||||
# Show systemd actions
|
||||
print &ui_form_start("mass_systemd.cgi", "post");
|
||||
@links = ( &select_all_link("d"),
|
||||
&select_invert_link("d"),
|
||||
&ui_link("edit_systemd.cgi?new=1",
|
||||
$text{'index_sadd'}) );
|
||||
print &ui_links_row(\@links);
|
||||
print &ui_columns_start([ "", $text{'systemd_name'},
|
||||
$config{'desc'} ?
|
||||
$text{'systemd_desc'} : (),
|
||||
$text{'systemd_status'},
|
||||
$text{'systemd_boot'},
|
||||
$text{'index_ustatus'} ]);
|
||||
foreach $u (&list_systemd_services()) {
|
||||
if ($u->{'legacy'}) {
|
||||
$l = "edit_action.cgi?0+".&urlize($u->{'name'});
|
||||
}
|
||||
else {
|
||||
$l = "edit_systemd.cgi?name=".&urlize($u->{'name'});
|
||||
}
|
||||
my $sname = $u->{'name'};
|
||||
$sname =~ s/\.service$//;
|
||||
my $title = ($u->{'boot'} == -1 ?
|
||||
&html_escape($sname) :
|
||||
&ui_link($l, &html_escape($sname)));
|
||||
my $desc = $config{'desc'} ?
|
||||
&html_escape($u->{'desc'}) : undef;
|
||||
print &ui_columns_row([
|
||||
&ui_checkbox("d", $u->{'name'}, undef),
|
||||
$title,
|
||||
$desc // (),
|
||||
$u->{'fullstatus'} || "<i>$text{'index_unknown'}</i>",
|
||||
$u->{'boot'} == 1 ?
|
||||
&ui_text_color("$text{'yes'}", 'success') :
|
||||
$u->{'boot'} == 2 ?
|
||||
&ui_text_color("$text{'index_sboot6'}", 'success') :
|
||||
$u->{'boot'} == -1 ?
|
||||
&ui_text_color("$text{'index_sboot5'}", 'warn') :
|
||||
&ui_text_color("$text{'no'}", 'warn'),
|
||||
$u->{'status'} == 1 ? &ui_text_color("$text{'yes'}", 'success') :
|
||||
$u->{'status'} == 0 ?
|
||||
&ui_text_color("$text{'no'}", 'warn') :
|
||||
"<i>$text{'index_unknown'}</i>",
|
||||
]);
|
||||
}
|
||||
print &ui_columns_end();
|
||||
print &ui_links_row(\@links);
|
||||
print &ui_form_end([ [ "start", $text{'index_start'} ],
|
||||
[ "stop", $text{'index_stop'} ],
|
||||
[ "restart", $text{'index_restart'} ],
|
||||
undef,
|
||||
[ "addboot", $text{'index_addboot'} ],
|
||||
[ "delboot", $text{'index_delboot'} ],
|
||||
undef,
|
||||
[ "addboot_start", $text{'index_addboot_start'} ],
|
||||
[ "delboot_stop", $text{'index_delboot_stop'} ],
|
||||
]);
|
||||
|
||||
}
|
||||
}
|
||||
elsif ($init_mode eq "launchd" && $access{'bootup'}) {
|
||||
# Show launchd agents
|
||||
@@ -449,4 +453,3 @@ if ($access{'shutdown'}) {
|
||||
print &ui_buttons_end();
|
||||
|
||||
&ui_print_footer("/", $text{'index'});
|
||||
|
||||
|
||||
249
init/init-lib.pl
249
init/init-lib.pl
@@ -28,9 +28,9 @@ use WebminCore;
|
||||
|
||||
This variable is set based on the bootup system in use. Possible values are :
|
||||
|
||||
=item osx - MacOSX hostconfig files, for older versions
|
||||
=item osx - Legacy macOS StartupItems and hostconfig files
|
||||
|
||||
=item launchd - MacOS Launchd, for newer versions
|
||||
=item launchd - macOS launchd, for newer versions
|
||||
|
||||
=item rc - FreeBSD 6+ RC files
|
||||
|
||||
@@ -44,6 +44,8 @@ This variable is set based on the bootup system in use. Possible values are :
|
||||
|
||||
=item systemd - SystemD, seen on Fedora 16
|
||||
|
||||
=item openrc - OpenRC, seen on Alpine Linux and Gentoo
|
||||
|
||||
=cut
|
||||
if ($config{'init_mode'}) {
|
||||
$init_mode = $config{'init_mode'};
|
||||
@@ -100,6 +102,14 @@ local($dir, $f, @stbuf, @rv);
|
||||
$dir = &runlevel_dir($_[0]);
|
||||
opendir(DIR, $dir);
|
||||
foreach $f (readdir(DIR)) {
|
||||
if ($init_mode eq "openrc") {
|
||||
next if ($_[1] ne "S" || $f eq "." || $f eq "..");
|
||||
next if (-d "$dir/$f");
|
||||
if (@stbuf = stat("$dir/$f")) {
|
||||
push(@rv, "00 $f $stbuf[1]");
|
||||
}
|
||||
next;
|
||||
}
|
||||
if ($f !~ /^([A-Z])(\d+)(.*)$/ || $1 ne $_[1]) { next; }
|
||||
if (!(@stbuf = stat("$dir/$f"))) { next; }
|
||||
push(@rv, "$2 $3 $stbuf[1]");
|
||||
@@ -120,7 +130,11 @@ sub list_runlevels
|
||||
local(@rv);
|
||||
opendir(DIR, $config{init_base});
|
||||
foreach (readdir(DIR)) {
|
||||
if (/^rc([A-z0-9])\.d$/ || /^(boot)\.d$/) {
|
||||
if ($init_mode eq "openrc") {
|
||||
push(@rv, $_) if ($_ ne "." && $_ ne ".." &&
|
||||
-d "$config{init_base}/$_");
|
||||
}
|
||||
elsif (/^rc([A-z0-9])\.d$/ || /^(boot)\.d$/) {
|
||||
push(@rv, $1);
|
||||
}
|
||||
}
|
||||
@@ -174,6 +188,16 @@ foreach $rl (&list_runlevels()) {
|
||||
$dir = &runlevel_dir($rl);
|
||||
opendir(DIR, $dir);
|
||||
foreach $f (readdir(DIR)) {
|
||||
if ($init_mode eq "openrc") {
|
||||
next if ($_[0] ne "S" || $f eq "." || $f eq "..");
|
||||
next if (-d "$dir/$f");
|
||||
@stbuf2 = stat("$dir/$f");
|
||||
if ($stbuf[1] == $stbuf2[1]) {
|
||||
push(@rv, "$rl 00 $f");
|
||||
last;
|
||||
}
|
||||
next;
|
||||
}
|
||||
if ($f =~ /^([A-Z])(\d+)(.*)$/ && $1 eq $_[0]) {
|
||||
@stbuf2 = stat("$dir/$f");
|
||||
if ($stbuf[1] == $stbuf2[1]) {
|
||||
@@ -242,6 +266,14 @@ Add some existing action to a runlevel. The parameters are :
|
||||
=cut
|
||||
sub add_rl_action
|
||||
{
|
||||
if ($init_mode eq "openrc") {
|
||||
return if ($_[2] ne "S");
|
||||
my $file = &runlevel_dir($_[1])."/$_[0]";
|
||||
&lock_file($file);
|
||||
&symlink_file(&action_filename($_[0]), $file) if (!-e $file);
|
||||
&unlock_file($file);
|
||||
return;
|
||||
}
|
||||
$file = &runlevel_filename($_[1], $_[2], $_[3], $_[0]);
|
||||
while(-r $file) {
|
||||
if ($file =~ /^(.*)_(\d+)$/) { $file = "$1_".($2+1); }
|
||||
@@ -269,6 +301,11 @@ sub delete_rl_action
|
||||
local(@stbuf, $dir, $f, @stbuf2);
|
||||
@stbuf = stat(&action_filename($_[0]));
|
||||
$dir = &runlevel_dir($_[1]);
|
||||
if ($init_mode eq "openrc") {
|
||||
my $file = "$dir/$_[0]";
|
||||
&unlink_logged($file) if ($_[2] eq "S" && -e $file);
|
||||
return;
|
||||
}
|
||||
opendir(DIR, $dir);
|
||||
foreach $f (readdir(DIR)) {
|
||||
if ($f =~ /^([A-Z])(\d+)(.+)$/ && $1 eq $_[2]) {
|
||||
@@ -565,6 +602,11 @@ elsif ($init_mode eq "systemd") {
|
||||
return 1 if ($out eq "disabled");
|
||||
}
|
||||
}
|
||||
elsif ($init_mode eq "openrc") {
|
||||
my $exists = -r &action_filename($name);
|
||||
my @boot = &action_levels("S", $name);
|
||||
return !$exists ? 0 : @boot ? 2 : 1;
|
||||
}
|
||||
if ($init_mode eq "init" || $init_mode eq "upstart" ||
|
||||
$init_mode eq "systemd") {
|
||||
# Look for init script
|
||||
@@ -710,6 +752,48 @@ if ($init_mode eq "systemd" && (!-r "$config{'init_dir'}/$action" ||
|
||||
quotemeta($unit)." >/dev/null 2>&1");
|
||||
return;
|
||||
}
|
||||
if ($init_mode eq "openrc") {
|
||||
if ($st == 0) {
|
||||
$start || $stop || &error("OpenRC service $action does not exist");
|
||||
my $fn = &action_filename($action);
|
||||
my $qdesc = $desc || "";
|
||||
$qdesc =~ s/\\/\\\\/g;
|
||||
$qdesc =~ s/"/\\"/g;
|
||||
&lock_file($fn);
|
||||
&open_tempfile(ACTION, ">$fn");
|
||||
&print_tempfile(ACTION, "#!/sbin/openrc-run\n\n");
|
||||
&print_tempfile(ACTION, "description=\"$qdesc\"\n\n") if ($desc);
|
||||
&print_tempfile(ACTION, "start() {\n");
|
||||
&print_tempfile(ACTION, &tab_indent($start));
|
||||
&print_tempfile(ACTION, "}\n\n");
|
||||
if ($stop) {
|
||||
&print_tempfile(ACTION, "stop() {\n");
|
||||
&print_tempfile(ACTION, &tab_indent($stop));
|
||||
&print_tempfile(ACTION, "}\n\n");
|
||||
}
|
||||
if ($status) {
|
||||
&print_tempfile(ACTION, "status() {\n");
|
||||
&print_tempfile(ACTION, &tab_indent($status));
|
||||
&print_tempfile(ACTION, "}\n");
|
||||
}
|
||||
&close_tempfile(ACTION);
|
||||
chmod(0755, $fn);
|
||||
&unlock_file($fn);
|
||||
}
|
||||
my @levels = &get_start_runlevels();
|
||||
if (&has_command("rc-update")) {
|
||||
foreach my $level (@levels) {
|
||||
&system_logged("rc-update add ".quotemeta($action)." ".
|
||||
quotemeta($level)." >/dev/null 2>&1");
|
||||
}
|
||||
}
|
||||
else {
|
||||
foreach my $level (@levels) {
|
||||
&add_rl_action($action, $level, "S", 0);
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
if ($init_mode eq "init" || $init_mode eq "local" || $init_mode eq "upstart" ||
|
||||
$init_mode eq "systemd") {
|
||||
# In these modes, we create a script to run
|
||||
@@ -1087,6 +1171,18 @@ elsif ($init_mode eq "systemd") {
|
||||
&system_logged("systemctl disable ".quotemeta($unit).
|
||||
" >/dev/null 2>&1");
|
||||
}
|
||||
elsif ($init_mode eq "openrc") {
|
||||
if (&has_command("rc-update")) {
|
||||
&system_logged("rc-update del ".quotemeta($_[0]).
|
||||
" >/dev/null 2>&1");
|
||||
}
|
||||
else {
|
||||
foreach my $a (&action_levels('S', $_[0])) {
|
||||
$a =~ /^(\S+)\s+(\S+)\s+(\S+)$/ &&
|
||||
&delete_rl_action($_[0], $1, 'S');
|
||||
}
|
||||
}
|
||||
}
|
||||
if ($init_mode eq "init" || $init_mode eq "upstart" ||
|
||||
$init_mode eq "systemd") {
|
||||
# Unlink or disable init script
|
||||
@@ -1251,6 +1347,11 @@ elsif ($mode eq "init") {
|
||||
my $fn = &action_filename($name);
|
||||
&unlink_logged($fn);
|
||||
}
|
||||
elsif ($mode eq "openrc") {
|
||||
&disable_at_boot($name);
|
||||
my $fn = &action_filename($name);
|
||||
&unlink_logged($fn);
|
||||
}
|
||||
elsif ($mode eq "win32") {
|
||||
# Delete windows service
|
||||
&delete_win32_service($name);
|
||||
@@ -1303,6 +1404,16 @@ if ($action_mode eq "init" || $action_mode eq "local") {
|
||||
my $ex = $?;
|
||||
return (!$ex, $out);
|
||||
}
|
||||
elsif ($action_mode eq "openrc") {
|
||||
my $cmd = &has_command("rc-service") ?
|
||||
"rc-service ".quotemeta($name)." start" :
|
||||
&action_filename($name)." start";
|
||||
&clean_environment();
|
||||
my $out = &backquote_logged("$cmd 2>&1 </dev/null");
|
||||
&reset_environment();
|
||||
my $ex = $?;
|
||||
return (!$ex, $out);
|
||||
}
|
||||
elsif ($action_mode eq "rc") {
|
||||
# Run FreeBSD RC script
|
||||
return &start_rc_script($name);
|
||||
@@ -1351,6 +1462,14 @@ if ($action_mode eq "init" || $action_mode eq "local") {
|
||||
my $ex = $?;
|
||||
return (!$ex, $out);
|
||||
}
|
||||
elsif ($action_mode eq "openrc") {
|
||||
my $cmd = &has_command("rc-service") ?
|
||||
"rc-service ".quotemeta($name)." stop" :
|
||||
&action_filename($name)." stop";
|
||||
my $out = &backquote_logged("$cmd 2>&1 </dev/null");
|
||||
my $ex = $?;
|
||||
return (!$ex, $out);
|
||||
}
|
||||
elsif ($action_mode eq "rc") {
|
||||
# Run FreeBSD RC script
|
||||
return &stop_rc_script($name);
|
||||
@@ -1392,6 +1511,11 @@ if ($action_mode eq "upstart") {
|
||||
elsif ($action_mode eq "systemd") {
|
||||
return &restart_systemd_service($name);
|
||||
}
|
||||
elsif ($action_mode eq "openrc" && &has_command("rc-service")) {
|
||||
my $out = &backquote_logged("rc-service ".quotemeta($name).
|
||||
" restart 2>&1 </dev/null");
|
||||
return $? ? (0, $out) : (1, $out);
|
||||
}
|
||||
else {
|
||||
&stop_action($name);
|
||||
return &start_action($name);
|
||||
@@ -1413,6 +1537,11 @@ if ($action_mode eq "upstart") {
|
||||
elsif ($action_mode eq "systemd") {
|
||||
return &reload_systemd_service($name);
|
||||
}
|
||||
elsif ($action_mode eq "openrc" && &has_command("rc-service")) {
|
||||
my $out = &backquote_logged("rc-service ".quotemeta($name).
|
||||
" reload 2>&1 </dev/null");
|
||||
return $? ? (0, $out) : (1, $out);
|
||||
}
|
||||
elsif ($action_mode eq "init") {
|
||||
my $file = &action_filename($name);
|
||||
my $hasarg = &get_action_args($file);
|
||||
@@ -1438,6 +1567,13 @@ if ($action_mode eq "init") {
|
||||
# Run init script to get status
|
||||
return &action_running(&action_filename($name));
|
||||
}
|
||||
elsif ($action_mode eq "openrc") {
|
||||
my $cmd = &has_command("rc-service") ?
|
||||
"rc-service ".quotemeta($name)." status" :
|
||||
&action_filename($name)." status";
|
||||
my $out = &backquote_command("$cmd 2>&1 </dev/null");
|
||||
return $? == 0 ? 1 : $out =~ /stopped|inactive/i ? 0 : -1;
|
||||
}
|
||||
elsif ($action_mode eq "win32") {
|
||||
# Check with Windows if it is running
|
||||
my ($w) = &list_win32_services($name);
|
||||
@@ -1519,6 +1655,9 @@ elsif ($init_mode eq "systemd") {
|
||||
elsif ($init_mode eq "init") {
|
||||
return map { my @w = split(/\s+/, $_); $w[0] } &list_actions();
|
||||
}
|
||||
elsif ($init_mode eq "openrc") {
|
||||
return map { my @w = split(/\s+/, $_); $w[0] } &list_actions();
|
||||
}
|
||||
elsif ($init_mode eq "win32") {
|
||||
return map { $_->{'name'} } &list_win32_services();
|
||||
}
|
||||
@@ -1595,7 +1734,10 @@ like /etc/rc2.d.
|
||||
=cut
|
||||
sub runlevel_dir
|
||||
{
|
||||
if ($_[0] eq "boot") {
|
||||
if ($init_mode eq "openrc") {
|
||||
return "$config{init_base}/$_[0]";
|
||||
}
|
||||
elsif ($_[0] eq "boot") {
|
||||
return "$config{init_base}/boot.d";
|
||||
}
|
||||
else {
|
||||
@@ -2169,16 +2311,15 @@ if (@list_systemd_services_cache && !$noinit) {
|
||||
return @list_systemd_services_cache;
|
||||
}
|
||||
|
||||
my $units_piped = join('|', &get_systemd_unit_types());
|
||||
|
||||
# Get all systemd unit names
|
||||
my $out = &backquote_command("systemctl list-units --full --all -t service --no-legend");
|
||||
my $ex = $?;
|
||||
foreach my $l (split(/\r?\n/, $out)) {
|
||||
$l =~ s/^[^a-z0-9\-\_\.]+//i;
|
||||
my ($unit, $loaded, $active, $sub, $desc) = split(/\s+/, $l, 5);
|
||||
next if ($unit !~ /\.service$/);
|
||||
my $a = $unit;
|
||||
$a =~ s/\.($units_piped)$//;
|
||||
$a =~ s/\.service$//;
|
||||
my $f = &action_filename($a);
|
||||
if ($unit ne "UNIT" && $loaded eq "loaded" && !-r $f) {
|
||||
push(@units, $unit);
|
||||
@@ -2190,29 +2331,26 @@ foreach my $l (split(/\r?\n/, $out)) {
|
||||
# and so don't show up in systemctl list-units
|
||||
my $root = &get_systemd_root(undef, 1);
|
||||
opendir(UNITS, $root);
|
||||
push(@units, grep { !/\.wants$/ && !/^\./ && !-d "$root/$_" } readdir(UNITS));
|
||||
push(@units, grep { /\.service$/ && !-d "$root/$_" } readdir(UNITS));
|
||||
closedir(UNITS);
|
||||
|
||||
# Also add units from list-unit-files that also don't show up
|
||||
$out = &backquote_command("systemctl list-unit-files -t service --no-legend");
|
||||
foreach my $l (split(/\r?\n/, $out)) {
|
||||
if ($l =~ /^(\S+\.($units_piped))\s+disabled/ ||
|
||||
$l =~ /^(\S+)\s+disabled/) {
|
||||
if ($l =~ /^(\S+\.service)\s+disabled/) {
|
||||
push(@units, $1);
|
||||
}
|
||||
}
|
||||
|
||||
# Skip useless units
|
||||
@units = grep { !/^sys-devices-/ &&
|
||||
!/^\-\.mount/ &&
|
||||
!/^\-\.slice/ &&
|
||||
!/^dev-/ &&
|
||||
!/^systemd-/ } @units;
|
||||
@units = &unique(@units);
|
||||
|
||||
# Filter out templates
|
||||
my @templates = grep { /\@$/ || /\@\.($units_piped)$/ } @units;
|
||||
@units = grep { !/\@$/ && !/\@\.($units_piped)$/ } @units;
|
||||
my @templates = grep { /\@$/ || /\@\.service$/ } @units;
|
||||
@units = grep { !/\@$/ && !/\@\.service$/ } @units;
|
||||
|
||||
# Dump state of all of them, 100 at a time
|
||||
my %info;
|
||||
@@ -3000,11 +3138,90 @@ return $name =~ /\./ ? $name : "com.webmin.".$name;
|
||||
}
|
||||
|
||||
# config_pre_load(mod-info, [mod-order])
|
||||
# Check if some config options are conditional
|
||||
# Hides config options that do not apply to the detected boot system.
|
||||
sub config_pre_load
|
||||
{
|
||||
my ($modconf_info, $modconf_order) = @_;
|
||||
$modconf_info->{'desc'} =~ s/2-[^,]+,// if ($init_mode eq "systemd");
|
||||
return if (ref($modconf_info) ne 'HASH');
|
||||
|
||||
if ($init_mode eq "systemd" && $modconf_info->{'desc'}) {
|
||||
# Systemd has no runlevels, so keep only the plain yes/no choices.
|
||||
$modconf_info->{'desc'} =~ s/2-[^,]+,//;
|
||||
}
|
||||
|
||||
my %keep = map { $_, 1 } &init_config_options_for_mode($init_mode);
|
||||
foreach my $key (keys %$modconf_info) {
|
||||
delete($modconf_info->{$key}) if (!$keep{$key});
|
||||
}
|
||||
if (ref($modconf_order) eq 'ARRAY') {
|
||||
@$modconf_order = grep { $keep{$_} } @$modconf_order;
|
||||
}
|
||||
&hide_single_init_config_section($modconf_info, $modconf_order);
|
||||
}
|
||||
|
||||
# init_config_options_for_mode(mode)
|
||||
# Returns config.info keys that should be visible for a boot system.
|
||||
sub init_config_options_for_mode
|
||||
{
|
||||
my ($mode) = @_;
|
||||
my @display = ( 'expert', 'desc', 'order', 'status_check', 'sort_mode' );
|
||||
my @common = ( 'init_mode', 'reboot_command', 'shutdown_command' );
|
||||
my @sysv = ( @common, 'init_base', 'init_dir', 'order_digits',
|
||||
'boot_levels', 'local_script', 'local_down', 'inittab_id' );
|
||||
my @systemd_display = ( 'desc' );
|
||||
push(@systemd_display, 'systemd_dedicated')
|
||||
if (&init_dedicated_systemd_module_available());
|
||||
|
||||
return ( 'line1', @systemd_display, 'line2', @common )
|
||||
if ($mode eq 'systemd');
|
||||
return ( 'line1', @display, 'line2', @sysv )
|
||||
if ($mode eq 'init' || $mode eq 'upstart' || $mode eq 'openrc');
|
||||
return ( 'line2', @common, 'local_script', 'local_down',
|
||||
'rc_dir', 'rc_conf' )
|
||||
if ($mode eq 'rc');
|
||||
return ( 'line2', @common, 'local_script', 'local_down' )
|
||||
if ($mode eq 'local');
|
||||
return ( 'line2', @common, 'line3', 'startup_dirs', 'darwin_setup',
|
||||
'hostconfig', 'plist' )
|
||||
if ($mode eq 'osx');
|
||||
return ( 'line2', @common )
|
||||
if ($mode eq 'launchd' || $mode eq 'win32');
|
||||
return ( 'line1', @display, 'line2', @sysv, 'rc_dir', 'rc_conf',
|
||||
'line3', 'startup_dirs', 'darwin_setup', 'hostconfig', 'plist' );
|
||||
}
|
||||
|
||||
# hide_single_init_config_section(&config-info, [&config-order])
|
||||
# Removes the lone section header when filtering leaves only one group.
|
||||
sub hide_single_init_config_section
|
||||
{
|
||||
my ($modconf_info, $modconf_order) = @_;
|
||||
my @sections = grep {
|
||||
exists($modconf_info->{$_}) &&
|
||||
(split(/,/, $modconf_info->{$_}))[1] == 11
|
||||
} keys %$modconf_info;
|
||||
return if (@sections != 1);
|
||||
|
||||
delete($modconf_info->{$sections[0]});
|
||||
if (ref($modconf_order) eq 'ARRAY') {
|
||||
@$modconf_order = grep { $_ ne $sections[0] } @$modconf_order;
|
||||
}
|
||||
}
|
||||
|
||||
# init_dedicated_systemd_module_available()
|
||||
# Returns 1 if the standalone Systemd module can be used by this Webmin user.
|
||||
sub init_dedicated_systemd_module_available
|
||||
{
|
||||
return &foreign_available("systemd") && &foreign_installed("systemd");
|
||||
}
|
||||
|
||||
# init_show_systemd_services()
|
||||
# Returns 1 if this module should show its legacy systemd service table.
|
||||
sub init_show_systemd_services
|
||||
{
|
||||
return 1 if (!&init_dedicated_systemd_module_available());
|
||||
return 0 if ($config{'systemd_dedicated'} &&
|
||||
$config{'systemd_dedicated'} eq '1');
|
||||
return 1;
|
||||
}
|
||||
|
||||
1;
|
||||
|
||||
@@ -188,13 +188,14 @@ change_title=Switch Runlevel
|
||||
change_cmd=Switching to runlevel $1 with command $2. This may take some time, and Webmin might not be available anymore after switching.
|
||||
|
||||
mode_init=SysV init
|
||||
mode_osx=MacOS
|
||||
mode_osx=Legacy macOS StartupItems
|
||||
mode_local=Single boot script
|
||||
mode_win32=Windows services
|
||||
mode_rc=FreeBSD RC scripts
|
||||
mode_upstart=Upstart
|
||||
mode_systemd=Systemd
|
||||
mode_launchd=LaunchD
|
||||
mode_launchd=macOS launchd
|
||||
mode_openrc=OpenRC
|
||||
|
||||
upstart_title1=Create Upstart Service
|
||||
upstart_title2=Edit Upstart Service
|
||||
@@ -246,6 +247,8 @@ systemd_edesc=Missing unit description
|
||||
systemd_return=systemd unit
|
||||
systemd_econf=No systemd unit configuration entered
|
||||
systemd_estart=Missing commands to run on startup
|
||||
index_systemd_module=Systemd Services and Units
|
||||
index_systemd_dedicated=Use the dedicated $1 module to manage systemd services and units. This page now shows only system reboot and shutdown controls.
|
||||
|
||||
launchd_title1=Create Launchd Agent
|
||||
launchd_title2=Edit Launchd Agent
|
||||
|
||||
@@ -56,6 +56,26 @@ if ($product) {
|
||||
quotemeta($product).".service >/dev/null 2>&1");
|
||||
}
|
||||
}
|
||||
elsif ($init_mode eq "openrc") {
|
||||
my $status = &action_status($product);
|
||||
my %miniserv;
|
||||
&get_miniserv_config(\%miniserv);
|
||||
my $want_boot = $miniserv{'atboot'} ? 1 : 0;
|
||||
my $temp = &transname();
|
||||
$ENV{'WEBMIN_KILLCMD'} = &has_command('kill');
|
||||
©_source_dest("$root_directory/webmin-openrc-init", "$temp");
|
||||
my $lref = &read_file_lines($temp);
|
||||
foreach my $l (@{$lref}) {
|
||||
$l =~ s/(WEBMIN_[A-Z]+)/$ENV{$1}/g;
|
||||
}
|
||||
&flush_file_lines($temp);
|
||||
©_source_dest($temp, "/etc/init.d/$product");
|
||||
chmod(0755, "/etc/init.d/$product");
|
||||
&unlink_file($temp);
|
||||
if ($status == 2 || $want_boot) {
|
||||
&enable_at_boot($product);
|
||||
}
|
||||
}
|
||||
elsif ($init_mode eq "launchd") {
|
||||
# Update or create launchd agent to use start init wrapper
|
||||
my $name = &launchd_name($product);
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
name=lpadmin
|
||||
category=hardware
|
||||
os_support=solaris coherent-linux redhat-linux mandrake-linux slackware-linux suse-linux united-linux debian-linux freebsd hpux unixware macos open-linux turbo-linux openbsd corel-linux irix netbsd msc-linux generic-linux gentoo-linux trustix-linux openmamba-linux aix pardus-linux
|
||||
os_support=solaris coherent-linux redhat-linux mandrake-linux slackware-linux suse-linux united-linux debian-linux freebsd hpux unixware macos open-linux turbo-linux openbsd corel-linux irix netbsd msc-linux generic-linux alpine-linux gentoo-linux trustix-linux openmamba-linux aix pardus-linux
|
||||
desc=Printer Administration
|
||||
longdesc=Create and edit local and remote printers. Supports Windows print servers and Ghostscript print drivers.
|
||||
readonly=1
|
||||
|
||||
@@ -2087,10 +2087,20 @@ foreach $f (@files) {
|
||||
$i++;
|
||||
next;
|
||||
}
|
||||
local $idx = $i++;
|
||||
local $mail = &read_mail_file($f, $_[3]);
|
||||
$mail->{'idx'} = $i++;
|
||||
$mail->{'id'} = $f; # ID is relative path, like cur/4535534
|
||||
$mail->{'id'} = substr($mail->{'id'}, length($_[0])+1);
|
||||
if (!$mail && !$_[4]) {
|
||||
# The cached Maildir file list can be stale if another client
|
||||
# deleted or moved a message. Re-read it once before returning
|
||||
# blank entries to the caller.
|
||||
&flush_maildir_cachefile($_[0]);
|
||||
return &list_maildir($_[0], $_[1], $_[2], $_[3], 1);
|
||||
}
|
||||
if ($mail) {
|
||||
$mail->{'idx'} = $idx;
|
||||
$mail->{'id'} = $f; # ID is relative path, like cur/4535534
|
||||
$mail->{'id'} = substr($mail->{'id'}, length($_[0])+1);
|
||||
}
|
||||
push(@rv, $mail);
|
||||
}
|
||||
return @rv;
|
||||
@@ -2110,9 +2120,11 @@ return map { substr($_, length($file)+1) } &get_maildir_files($file);
|
||||
sub select_maildir
|
||||
{
|
||||
local ($file, $ids, $headersonly) = @_;
|
||||
local $retried = $_[3];
|
||||
&mark_read_maildir($file);
|
||||
local @files = &get_maildir_files($file);
|
||||
local @rv;
|
||||
local $missing;
|
||||
foreach my $i (@$ids) {
|
||||
local $path = "$file/$i";
|
||||
local $mail = &read_mail_file($path, $headersonly);
|
||||
@@ -2139,8 +2151,15 @@ foreach my $i (@$ids) {
|
||||
# Get index in directory
|
||||
$mail->{'idx'} = &indexof($path, @files);
|
||||
}
|
||||
else {
|
||||
$missing = 1;
|
||||
}
|
||||
push(@rv, $mail);
|
||||
}
|
||||
if ($missing && !$retried) {
|
||||
&flush_maildir_cachefile($file);
|
||||
return &select_maildir($file, $ids, $headersonly, 1);
|
||||
}
|
||||
return @rv;
|
||||
}
|
||||
|
||||
@@ -2167,7 +2186,7 @@ else {
|
||||
# Check the on-disk cache file
|
||||
local $cachefile = &get_maildir_cachefile($_[0]);
|
||||
local @cst = $cachefile ? stat($cachefile) : ( );
|
||||
if ($cst[9] >= $newest) {
|
||||
if ($cst[9] > $newest) {
|
||||
# Can read the cache
|
||||
open(CACHE, "<", $cachefile);
|
||||
while(<CACHE>) {
|
||||
@@ -2188,6 +2207,32 @@ else {
|
||||
# Flagged as deleted by IMAP .. skip
|
||||
next;
|
||||
}
|
||||
# Skip entries that cannot be read as messages.
|
||||
local $path = "$_[0]/$d/$f";
|
||||
local @fst = stat($path);
|
||||
if (!@fst) {
|
||||
&error_stderr("Skipping Maildir file ".
|
||||
"$path : stat failed : ".
|
||||
"$!");
|
||||
next;
|
||||
}
|
||||
if (!$fst[7]) {
|
||||
&error_stderr("Skipping Maildir file ".
|
||||
"$path : file is zero ".
|
||||
"bytes");
|
||||
next;
|
||||
}
|
||||
if (!-r _) {
|
||||
my $m = sprintf("%04o",$fst[2] & 07777);
|
||||
my $o = getpwuid($fst[4]) || $fst[4];
|
||||
my $g = getgrgid($fst[5]) || $fst[5];
|
||||
&error_stderr("Skipping Maildir file ".
|
||||
"$path : not readable by".
|
||||
" current user, owner=".
|
||||
"$o($fst[4]):$g($fst[5])".
|
||||
" mode=$m");
|
||||
next;
|
||||
}
|
||||
push(@shorts, "$d/$f")
|
||||
}
|
||||
closedir(DIR);
|
||||
@@ -2661,11 +2706,13 @@ sub read_mail_file
|
||||
my ($file, $headersonly) = @_;
|
||||
|
||||
# Open and read the mail file
|
||||
local @st = stat($file);
|
||||
return undef if (@st && !$st[7]);
|
||||
&open_as_mail_user(MAIL, $file) || return undef;
|
||||
my $mail = &read_mail_fh(MAIL, 0, $headersonly);
|
||||
$mail->{'file'} = $file;
|
||||
close(MAIL);
|
||||
local @st = stat($file);
|
||||
|
||||
$mail->{'file'} = $file;
|
||||
$mail->{'size'} = $st[7];
|
||||
$mail->{'time'} = $st[9];
|
||||
$mail->{'ctime'} = $st[10];
|
||||
|
||||
@@ -174,6 +174,7 @@ elsif ($_[2]->{'type'} == 4) {
|
||||
local $count = $rv[2];
|
||||
return () if (!$count);
|
||||
$_[2]->{'lastchange'} = $rv[3] if ($rv[3]);
|
||||
$_[2]->{'mailcount'} = $count;
|
||||
|
||||
# Work out what range we want
|
||||
local ($start, $end) = &compute_start_end($_[0], $_[1], $count);
|
||||
@@ -458,6 +459,7 @@ elsif ($folder->{'type'} == 4) {
|
||||
}
|
||||
local $h = $irv[1];
|
||||
local $count = $irv[2];
|
||||
$folder->{'mailcount'} = $count;
|
||||
return () if (!$count);
|
||||
$folder->{'lastchange'} = $irv[3] if ($irv[3]);
|
||||
|
||||
@@ -637,8 +639,9 @@ elsif ($folder->{'type'} == 4) {
|
||||
}
|
||||
local $h = $rv[1];
|
||||
local $count = $rv[2];
|
||||
$folder->{'mailcount'} = $count;
|
||||
return () if (!$count);
|
||||
$folder->{'lastchange'} = $irv[3] if ($irv[3]);
|
||||
$folder->{'lastchange'} = $rv[3] if ($rv[3]);
|
||||
|
||||
@rv = &imap_command($h, "FETCH 1:$count UID");
|
||||
foreach my $uid (@{$rv[1]}) {
|
||||
@@ -708,6 +711,8 @@ else {
|
||||
sub mailbox_list_mails_sorted
|
||||
{
|
||||
local ($start, $end, $folder, $headersonly, $error, $field, $dir) = @_;
|
||||
local ($requested_start, $requested_end) = ($start, $end);
|
||||
local $retried = $_[7];
|
||||
print DEBUG "mailbox_list_mails_sorted from $start to $end\n";
|
||||
if (!$field) {
|
||||
# Default to current ordering
|
||||
@@ -738,11 +743,25 @@ local @rv = map { undef } (0 .. scalar(@sorter)-1);
|
||||
local @wantids = map { $sorter[$_] } ($start .. $end);
|
||||
print DEBUG "wantids = ",scalar(@wantids),"\n";
|
||||
local @mails = &mailbox_select_mails($folder, \@wantids, $headersonly);
|
||||
local @missing;
|
||||
for(my $i=0; $i<@mails; $i++) {
|
||||
if (!$mails[$i]) {
|
||||
push(@missing, $wantids[$i]);
|
||||
next;
|
||||
}
|
||||
$rv[$start+$i] = $mails[$i];
|
||||
print DEBUG "setting $start+$i to ",$mails[$i]," id ",$wantids[$i],"\n";
|
||||
$mails[$i]->{'sortidx'} = $start+$i;
|
||||
}
|
||||
if (@missing && !$retried) {
|
||||
# A sorted IMAP list can contain UIDs for messages that were
|
||||
# expunged or moved by another client. Force one rebuild so stale
|
||||
# entries don't render as blank 1969/no-subject rows.
|
||||
&force_new_index_recheck($folder);
|
||||
return &mailbox_list_mails_sorted($requested_start, $requested_end,
|
||||
$folder, $headersonly, $error,
|
||||
$field, $dir, 1);
|
||||
}
|
||||
print DEBUG "rv = ",scalar(@rv),"\n";
|
||||
return @rv;
|
||||
}
|
||||
@@ -808,7 +827,9 @@ local $ifile = &folder_new_sort_index_file($folder);
|
||||
&open_dbm_db($index, $ifile, 0600);
|
||||
print DEBUG "indexchange=$index->{'lastchange'} folderchange=$folder->{'lastchange'}\n";
|
||||
if ($index->{'lastchange'} != $folder->{'lastchange'} ||
|
||||
!$folder->{'lastchange'}) {
|
||||
!$folder->{'lastchange'} ||
|
||||
(defined($folder->{'mailcount'}) &&
|
||||
$index->{'mailcount'} != $folder->{'mailcount'})) {
|
||||
# The mail file has changed .. get IDs and update the index with any
|
||||
# that are missing
|
||||
local @ids = &mailbox_idlist($folder);
|
||||
@@ -823,6 +844,7 @@ if ($index->{'lastchange'} != $folder->{'lastchange'} ||
|
||||
local @mails = scalar(@newids) ?
|
||||
&mailbox_select_mails($folder, \@newids, 1) : ( );
|
||||
foreach my $mail (@mails) {
|
||||
next if (!$mail || !defined($mail->{'id'}));
|
||||
foreach my $f (@index_fields) {
|
||||
if ($f eq "date") {
|
||||
# Convert date to Unix time
|
||||
|
||||
@@ -17,7 +17,7 @@ index_find=العثور على المستخدمين حيث اسم المستخد
|
||||
index_equals=يساوي
|
||||
index_contains=يحتوي على
|
||||
index_eperl=The Perl module $1 needed for the selected SMTP authentication mode is not installed or is missing a dependent module. <a href='$2'>Click here</a> to install it now.
|
||||
index_file=قراءة البريد في ملف أو Maildir:
|
||||
index_file=قراءة البريد في ملف أو Maildir
|
||||
index_nousers=لم يتم العثور على المستخدمين!
|
||||
index_nousersmail=لم يتم العثور على المستخدمين الذين لديهم بريد إلكتروني.
|
||||
|
||||
|
||||
@@ -17,7 +17,7 @@ index_find=Намерете потребители, където потреби
|
||||
index_equals=се равнява
|
||||
index_contains=съдържа
|
||||
index_eperl=Модулът Perl $1, необходим за избрания режим за удостоверяване на SMTP, не е инсталиран или липсва зависим модул. <a href='$2'>Кликнете тук</a>, за да го инсталирате сега.
|
||||
index_file=Прочетете пощата във файл или Maildir:
|
||||
index_file=Прочетете пощата във файл или Maildir
|
||||
index_nousers=Не са намерени потребители!
|
||||
index_nousersmail=Не бяха намерени потребители с имейл.
|
||||
|
||||
|
||||
@@ -16,7 +16,7 @@ index_find=Busca usuaris tals que el nom d'usuari
|
||||
index_equals=sigui igual que
|
||||
index_contains=contingui
|
||||
index_eperl=El mòdul Perl $1 necessari per al mode d'autenticació SMTP seleccionat no està instal·lat o està mancat d'un mòdul dependent. <a href='$2'>Fes clic aquí</a> per instal·lar-lo ara.
|
||||
index_file=Llegeix el Correu del Fitxer o Directori:
|
||||
index_file=Llegeix el Correu del Fitxer o Directori
|
||||
index_nousers=No s'ha trobat cap usuari!
|
||||
index_nousersmail=No s'ha trobat cap usuari amb correu.
|
||||
|
||||
|
||||
@@ -13,7 +13,7 @@ index_find=Najít uživatele, kdy uživatelské jméno
|
||||
index_equals=odpovídá
|
||||
index_contains=obsahuje
|
||||
index_eperl=Perlový podul $1 potřebný pro vybraný mód ověření SMTP není instalován nebo chybí závislý modul. <a href='$2'>Klikněte zde</a> pro instalaci.
|
||||
index_file=Čtení pošty ze souboru:
|
||||
index_file=Čtení pošty ze souboru
|
||||
index_nousers=Žádní uživatelé nenalezeni!
|
||||
index_nousersmail=V e-mailu nebyli nalezeni žádní uživatelé.
|
||||
|
||||
|
||||
@@ -17,7 +17,7 @@ index_find=Find brugere, hvor brugernavn
|
||||
index_equals=lige med
|
||||
index_contains=indeholder
|
||||
index_eperl=Det Perl-modul $1, der kræves til den valgte SMTP-godkendelsestilstand, er ikke installeret eller mangler et afhængigt modul. <a href='$2'>Klik her</a> for at installere det nu.
|
||||
index_file=Læs Mail i File eller Maildir:
|
||||
index_file=Læs Mail i File eller Maildir
|
||||
index_nousers=Ingen brugere blev fundet!
|
||||
index_nousersmail=Ingen brugere med e-mail blev fundet.
|
||||
|
||||
|
||||
@@ -17,7 +17,7 @@ index_find=Finde Benutzer, bei denen der Benutzername
|
||||
index_equals=gleich ist
|
||||
index_contains=enthält
|
||||
index_eperl=Das benötigte Perl-Modul $1 für den ausgewählten SMTP-Authentifizierungsmodus ist nicht installiert oder es fehlt ein abhängiges Modul. <a href='$2'>Klicken Sie hier</a>, um es jetzt zu installieren.
|
||||
index_file=E-Mails in Datei oder Maildir lesen:
|
||||
index_file=E-Mails in Datei oder Maildir lesen
|
||||
index_nousers=Keine Benutzer gefunden!
|
||||
index_nousersmail=Keine Benutzer mit E-Mail gefunden.
|
||||
|
||||
|
||||
@@ -13,7 +13,7 @@ index_find=Έυρεση χρηστών όπου το όνομα χρήστη
|
||||
index_equals=ισούται με
|
||||
index_contains=περιέχει
|
||||
index_eperl=Το Perl module $1 που χρειάζεται για την επιλεγμένη πιστοποίηση SMTP δεν είναι εγκατεστημένο ή του λείπει κάποιο εξαρτώμενο module. <a href='$2'>Πατήστε εδώ</a> για να το εγκαταστήσετε τώρα.
|
||||
index_file=Ανάγνωση Mail από το Αρχείο:
|
||||
index_file=Ανάγνωση Mail από το Αρχείο
|
||||
index_nousers=Κανένας χρήστης δεν βρέθηκε!
|
||||
index_nousersmail=Κανένας χρήστης με email δεν βρέθηκε.
|
||||
|
||||
|
||||
@@ -17,10 +17,11 @@ index_find=Find users where username
|
||||
index_equals=equals
|
||||
index_contains=contains
|
||||
index_eperl=The Perl module $1 needed for the selected SMTP authentication mode is not installed or is missing a dependent module. <a href='$2'>Click here</a> to install it now.
|
||||
index_file=Read Mail in File or Maildir:
|
||||
index_file=Read Mail in File or Maildir
|
||||
index_nousers=No users were found!
|
||||
index_nousersmail=No users with email were found.
|
||||
|
||||
mail_eopen=Failed to open mailbox
|
||||
mail_title=User Email
|
||||
mail_from=From
|
||||
mail_date=Date
|
||||
@@ -70,6 +71,7 @@ mail_black=Block Senders
|
||||
mail_white=Allow Senders
|
||||
mail_whitemove=Allow Senders and Inbox
|
||||
mail_efile=Mail file does not exist
|
||||
mail_euser=Missing user, file or Maildir
|
||||
mail_fromsrch=Find email with same sender
|
||||
mail_subsrch=Find email with same subject
|
||||
mail_tosrch=Find email with recipient
|
||||
|
||||
@@ -17,7 +17,7 @@ index_find=Encuentra usuarios donde nombre de usuario
|
||||
index_equals=es igual
|
||||
index_contains=contiene
|
||||
index_eperl=El módulo Perl $1 necesario para el modo de autenticación SMTP seleccionado no está instalado o le falta un módulo dependiente. <a href='$2'>Haga clic aquí</a> para instalarlo ahora.
|
||||
index_file=Leer correo en archivo o Maildir:
|
||||
index_file=Leer correo en archivo o Maildir
|
||||
index_nousers=¡No se encontraron usuarios!
|
||||
index_nousersmail=No se encontraron usuarios con correo electrónico.
|
||||
|
||||
|
||||
@@ -17,7 +17,7 @@ index_find=Erabiltzaile izena erabiltzaileak aurkitu
|
||||
index_equals=berdinen
|
||||
index_contains=dauka
|
||||
index_eperl=Hautatutako SMTP autentifikazio moduan beharrezkoa den Perl modulua $1 ez dago instalatuta edo ez dago menpeko modulurik. <a href='$2'>Egin klik hemen</a> orain instalatzeko.
|
||||
index_file=Irakurri Posta Fitxategian edo Maildir-en:
|
||||
index_file=Irakurri Posta Fitxategian edo Maildir-en
|
||||
index_nousers=Ez da erabiltzailerik aurkitu!
|
||||
index_nousersmail=Ez da mezu elektronikorik aurkitu erabiltzaileak.
|
||||
|
||||
|
||||
@@ -17,7 +17,7 @@ index_find=کاربرانی را پیدا کنید که در آن نام کار
|
||||
index_equals=برابر است
|
||||
index_contains=حاوی
|
||||
index_eperl=The Perl module $1 needed for the selected SMTP authentication mode is not installed or is missing a dependent module. <a href='$2'>Click here</a> to install it now.
|
||||
index_file=نامه را در پرونده یا Maildir بخوانید:
|
||||
index_file=نامه را در پرونده یا Maildir بخوانید
|
||||
index_nousers=هیچ کاربر یافت نشد!
|
||||
index_nousersmail=هیچ کاربر با ایمیل یافت نشد.
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@ index_system2=Sähköpostipalvelin: Qmail
|
||||
index_system1=Sähköpostipalvelin: Sendmail
|
||||
index_system0=Sähköpostipalvelin: Postfix
|
||||
index_contains=Sisältää
|
||||
index_file=Luo sähköposti tiedostosta:
|
||||
index_file=Luo sähköposti tiedostosta
|
||||
index_nousers=Käyttäjiä ei löytynyt!
|
||||
index_nousersmail=Yhtään sähköpostikäyttäjää ei löytynyt.
|
||||
|
||||
|
||||
@@ -17,7 +17,7 @@ index_find=Trouver utilisateurs où nom
|
||||
index_equals=égale
|
||||
index_contains=contient
|
||||
index_eperl=Le module Perl $1 nécessaire pour le mode d'authentification SMTP sélectionné n'est pas installé ou manque un module dépend. <a href='$2'>Cliquez ici</a> pour l'installer maintenant.
|
||||
index_file=Lire le courrier du Fichier:
|
||||
index_file=Lire le courrier du Fichier
|
||||
index_nousers=Aucun membre n'a été trouvé!
|
||||
index_nousersmail=Aucun membre avec email ont été trouvés.
|
||||
|
||||
|
||||
@@ -17,7 +17,7 @@ index_find=Pronađi korisnike gdje je korisničko ime
|
||||
index_equals=jednaki
|
||||
index_contains=sadrži
|
||||
index_eperl=Perl modul $1 potreban za odabrani način provjere identiteta SMTP nije instaliran ili nedostaje ovisni modul. <a href='$2'>Kliknite ovdje</a> da biste ga sada instalirali.
|
||||
index_file=Pročitajte poštu u datoteci ili maildiru:
|
||||
index_file=Pročitajte poštu u datoteci ili maildiru
|
||||
index_nousers=Nisu pronađeni korisnici!
|
||||
index_nousersmail=Nije pronađen nijedan korisnik s e-poštom.
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@ index_system2=Levelező szerver: Qmail
|
||||
index_system1=Levelező szerver: Sendmail
|
||||
index_system0=Levelező szerver: Postfix
|
||||
index_contains=tartalom
|
||||
index_file=Levél olvasása fájlból:
|
||||
index_file=Levél olvasása fájlból
|
||||
|
||||
mail_title=Levelek
|
||||
mail_from=Feladó
|
||||
|
||||
@@ -16,7 +16,7 @@ index_find=Cerca utenti con nome utente
|
||||
index_equals=uguale
|
||||
index_contains=contiene
|
||||
index_eperl=Il modulo Perl $1 necessario per la modalità di autenticazione SMTP selezionata non è installato, o manca un modulo da cui dipende. <a href='$2'>Clicca qui</a> per installarlo adesso.
|
||||
index_file=Leggi la posta nel file:
|
||||
index_file=Leggi la posta nel file
|
||||
index_nousers=Nessun utente trovato!
|
||||
index_nousersmail=Nessun utente con messaggi trovato.
|
||||
|
||||
|
||||
@@ -13,7 +13,7 @@ index_find=Find users where username
|
||||
index_equals=equals
|
||||
index_contains=contains
|
||||
index_eperl=The Perl module $1 needed for the selected SMTP authentication mode is not installed or is missing a dependent module. <a href='$2'>Click here</a> to install it now.
|
||||
index_file=このファイルのメールを読む:
|
||||
index_file=このファイルのメールを読む
|
||||
index_nousers=No users were found!
|
||||
index_nousersmail=No users with email were found.
|
||||
|
||||
|
||||
@@ -12,7 +12,7 @@ index_toomany=시스템의 사용자가 너무 많아서 한 페이지에 모두
|
||||
index_find=유저이름에서 유저 찾기
|
||||
index_contains=포함
|
||||
index_eperl=SMTP 인증 모드를 위한 $1 펄모듈이 설치되어 있지 않거나, 의존성이 걸려있는 도뮬이 설치되어 있지 않습니다. 지금 설치 하려면 <a href='$2'>여기를 클릭</a>하십시오.
|
||||
index_file=파일의 메일 읽기:
|
||||
index_file=파일의 메일 읽기
|
||||
index_nousers=유저를 찾을 수 없습니다!
|
||||
index_nousersmail=이메일을 가지고 있는 유저가 존재하지 않습니다.
|
||||
|
||||
|
||||
@@ -17,7 +17,7 @@ index_find=Cari pengguna di mana nama pengguna
|
||||
index_equals=sama dengan
|
||||
index_contains=mengandungi
|
||||
index_eperl=Mod Perl $1 diperlukan untuk mod pengesahan SMTP yang dipilih tidak dipasang atau tiada modul yang bergantung. <a href='$2'>Klik di sini</a> untuk memasangnya sekarang.
|
||||
index_file=Baca Mel dalam Fail atau Maildir:
|
||||
index_file=Baca Mel dalam Fail atau Maildir
|
||||
index_nousers=Tiada pengguna dijumpai!
|
||||
index_nousersmail=Tiada pengguna dengan e-mel yang ditemui.
|
||||
|
||||
|
||||
@@ -16,7 +16,7 @@ index_find=Vind gebruikers met de naam
|
||||
index_equals=gelijken
|
||||
index_contains=bevat
|
||||
index_eperl=De Perl module $1 die nodig is voor de geselecteerde SMTP authenticatie mode is niet geinstalleerd of mist een afhankelijke module. <a href='$2'>Klik hier</a> om het nu te installeren.
|
||||
index_file=Lees Email in File :
|
||||
index_file=Lees Email in File
|
||||
index_nousers=Geen gebruikers gevonden!
|
||||
index_nousersmail=Geen gebruikers met email gevonden.
|
||||
|
||||
|
||||
@@ -17,7 +17,7 @@ index_find=Finn brukere hvor brukernavnet
|
||||
index_equals=er lik
|
||||
index_contains=inneholder
|
||||
index_eperl=Perl modulen $1 som er nødvendig for den valgte SMTP autentiseringsmodusen er ikke installert eller den mangler an modul den er avhangig av. <a href='$2'>Klikk her</a> for å installere den nå.
|
||||
index_file=Les e-post i fil:
|
||||
index_file=Les e-post i fil
|
||||
index_nousers=Ingen brukere funnet!
|
||||
index_nousersmail=Ingen brukere med e-post ble funnet.
|
||||
|
||||
|
||||
@@ -17,7 +17,7 @@ index_find=Wyszukaj użytkowników, gdzie nazwa użytkownika
|
||||
index_equals=jest równa
|
||||
index_contains=zawiera
|
||||
index_eperl=Moduł Perl $1 wymagany dla wybranego trybu uwierzytelniania SMTP nie jest zainstalowany lub brakuje zależnego modułu. <a href='$2'>Kliknij tutaj</a>, aby go teraz zainstalować.
|
||||
index_file=Odczytaj pocztę z pliku lub Maildir:
|
||||
index_file=Odczytaj pocztę z pliku lub Maildir
|
||||
index_nousers=Nie znaleziono żadnych użytkowników!
|
||||
index_nousersmail=Nie znaleziono użytkowników z pocztą.
|
||||
|
||||
|
||||
@@ -17,7 +17,7 @@ index_find=Encontre usuários onde nome de usuário
|
||||
index_equals=é igual a
|
||||
index_contains=contém
|
||||
index_eperl=O módulo Perl $1 necessário para o modo de autenticação SMTP selecionado não está instalado ou está faltando um módulo dependente. <a href='$2'>Clique aqui</a> para instalá-lo agora.
|
||||
index_file=Leia o Mail no arquivo ou no Maildir:
|
||||
index_file=Leia o Mail no arquivo ou no Maildir
|
||||
index_nousers=Nenhum usuário foi encontrado!
|
||||
index_nousersmail=Nenhum usuário com email foi encontrado.
|
||||
|
||||
|
||||
@@ -17,7 +17,7 @@ index_find=Encontre usuários onde nome de usuário
|
||||
index_equals=é igual a
|
||||
index_contains=contém
|
||||
index_eperl=O módulo Perl $1 necessário para o modo de autenticação SMTP selecionado não está instalado ou está faltando um módulo dependente. <a href='$2'>Clique aqui</a> para instalá-lo agora.
|
||||
index_file=Leia o Mail no arquivo ou no Maildir:
|
||||
index_file=Leia o Mail no arquivo ou no Maildir
|
||||
index_nousers=Nenhum usuário foi encontrado!
|
||||
index_nousersmail=Nenhum usuário com email foi encontrado.
|
||||
|
||||
|
||||
@@ -17,7 +17,7 @@ index_find=Найти пользователей, где имя пользова
|
||||
index_equals=равно
|
||||
index_contains=содержит
|
||||
index_eperl=Модуль Perl $1, необходимый для выбранного режима аутентификации SMTP, не установлен или отсутствует зависимый модуль. <a href='$2'>Нажмите здесь</a>, чтобы установить его сейчас.
|
||||
index_file=Читать почту в файле или Maildir:
|
||||
index_file=Читать почту в файле или Maildir
|
||||
index_nousers=Пользователи не найдены!
|
||||
index_nousersmail=Пользователи с электронной почтой не найдены.
|
||||
|
||||
|
||||
@@ -17,7 +17,7 @@ index_find=Nájdite používateľov, kde je používateľské meno
|
||||
index_equals=rovní
|
||||
index_contains=obsahuje
|
||||
index_eperl=Nie je nainštalovaný modul Perl $1 potrebný pre vybratý režim autentifikácie SMTP alebo chýba závislý modul. <a href='$2'>Kliknite sem</a> a nainštalujte ho teraz.
|
||||
index_file=Čítanie správ v súbore alebo v pošte:
|
||||
index_file=Čítanie správ v súbore alebo v pošte
|
||||
index_nousers=Nenašli sa žiadni používatelia!
|
||||
index_nousersmail=Nenašli sa žiadni používatelia s e-mailom.
|
||||
|
||||
|
||||
@@ -17,7 +17,7 @@ index_find=Hitta användare där användarnamn
|
||||
index_equals=jämlikar
|
||||
index_contains=innehåller
|
||||
index_eperl=Perl-modulen $1 som behövs för det valda SMTP-autentiseringsläget är inte installerat eller saknas en beroende modul. <a href='$2'>Klicka här</a> för att installera det nu.
|
||||
index_file=Läs Mail i File eller Maildir:
|
||||
index_file=Läs Mail i File eller Maildir
|
||||
index_nousers=Inga användare hittades!
|
||||
index_nousersmail=Inga användare med e-post hittades.
|
||||
|
||||
|
||||
@@ -16,7 +16,7 @@ index_find=Kullanıcıları bul
|
||||
index_equals=Eşitlik
|
||||
index_contains=içeriyor
|
||||
index_eperl=Seçilen STMP doğrulama modu için $1 Perl modülüne ihtiyaç. <a href='$2'>buraya tıklayara yükleyebilirsiniz</a>
|
||||
index_file=Dosyadaki postayı oku:
|
||||
index_file=Dosyadaki postayı oku
|
||||
index_nousers=Hiçbir kullanıcı bulunamadı'
|
||||
index_nousersmail=E-posta'sı olan hiçbir kullanıcı bulunamadı.
|
||||
|
||||
|
||||
@@ -17,7 +17,7 @@ index_find=Знайдіть користувачів, де ім’я корис
|
||||
index_equals=дорівнює
|
||||
index_contains=містить
|
||||
index_eperl=Модуль Perl $1, необхідний для вибраного режиму автентифікації SMTP, не встановлений або відсутній залежний модуль. <a href='$2'>Клацніть тут</a>, щоб встановити його зараз.
|
||||
index_file=Читайте пошту у файлі чи Maildir:
|
||||
index_file=Читайте пошту у файлі чи Maildir
|
||||
index_nousers=Користувачів не знайдено!
|
||||
index_nousersmail=Користувачів з електронною поштою не знайдено.
|
||||
|
||||
|
||||
@@ -17,7 +17,7 @@ index_find=查找用户名所在的用户
|
||||
index_equals=等于
|
||||
index_contains=包含
|
||||
index_eperl=所选SMTP身份验证模式所需的Perl模块$1未安装或缺少从属模块。 <a href='$2'>单击此处</a>立即安装。
|
||||
index_file=读取文件或Maildir中的邮件:
|
||||
index_file=读取文件或Maildir中的邮件
|
||||
index_nousers=找不到用户!
|
||||
index_nousersmail=找不到使用电子邮件的用户。
|
||||
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user