From mboxrd@z Thu Jan  1 00:00:00 1970
From: Michael Tremer <michael.tremer@ipfire.org>
To: development@lists.ipfire.org
Subject: [PATCH 50/54] samba: Refactor user management
Date: Tue, 13 Oct 2020 16:08:08 +0000
Message-ID: <20201013160812.27754-50-michael.tremer@ipfire.org>
In-Reply-To: <20201013160812.27754-1-michael.tremer@ipfire.org>
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="===============3370691445614611469=="
List-Id: <development.lists.ipfire.org>

--===============3370691445614611469==
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: quoted-printable

Signed-off-by: Michael Tremer <michael.tremer(a)ipfire.org>
---
 doc/language_issues.de     |   9 +-
 doc/language_issues.en     |   9 +-
 doc/language_issues.es     |   9 +-
 doc/language_issues.fr     |   9 +-
 doc/language_issues.it     |   9 +-
 doc/language_issues.nl     |   9 +-
 doc/language_issues.pl     |   9 +-
 doc/language_issues.ru     |   9 +-
 doc/language_issues.tr     |   9 +-
 doc/language_missings      |   8 ++
 html/cgi-bin/samba.cgi     | 276 ++++++++++++++++++++-----------------
 langs/en/cgi-bin/en.pl     |   1 +
 src/misc-progs/sambactrl.c |  10 --
 13 files changed, 220 insertions(+), 156 deletions(-)

diff --git a/doc/language_issues.de b/doc/language_issues.de
index 771e9621a..6fcafc460 100644
--- a/doc/language_issues.de
+++ b/doc/language_issues.de
@@ -35,9 +35,11 @@ WARNING: translation string unused: TOS Bits
 WARNING: translation string unused: Verbose
 WARNING: translation string unused: access allowed
 WARNING: translation string unused: access refused with this oinkcode
+WARNING: translation string unused: accounting
 WARNING: translation string unused: accounting user nonpdc
 WARNING: translation string unused: accounting user pdc
 WARNING: translation string unused: activate user
+WARNING: translation string unused: active
 WARNING: translation string unused: add a new rule
 WARNING: translation string unused: add cron
 WARNING: translation string unused: add network
@@ -148,6 +150,7 @@ WARNING: translation string unused: check for net traffic=
 update
 WARNING: translation string unused: choose config
 WARNING: translation string unused: class in use
 WARNING: translation string unused: clear cache
+WARNING: translation string unused: client
 WARNING: translation string unused: comment
 WARNING: translation string unused: compression
 WARNING: translation string unused: connect
@@ -382,6 +385,7 @@ WARNING: translation string unused: ike lifetime
 WARNING: translation string unused: import
 WARNING: translation string unused: importkey
 WARNING: translation string unused: in
+WARNING: translation string unused: inactive
 WARNING: translation string unused: incorrect password
 WARNING: translation string unused: info
 WARNING: translation string unused: insert floppy
@@ -513,6 +517,7 @@ WARNING: translation string unused: no modem selected
 WARNING: translation string unused: no set selected
 WARNING: translation string unused: nonetworkname
 WARNING: translation string unused: noservicename
+WARNING: translation string unused: not set
 WARNING: translation string unused: o-no
 WARNING: translation string unused: o-yes
 WARNING: translation string unused: online help en
@@ -589,6 +594,7 @@ WARNING: translation string unused: password crypting key
 WARNING: translation string unused: passwords must be at least 6 characters =
in length
 WARNING: translation string unused: path to directory
 WARNING: translation string unused: pc
+WARNING: translation string unused: pc add
 WARNING: translation string unused: pdc options
 WARNING: translation string unused: phase1 group
 WARNING: translation string unused: phonebook entry
@@ -659,6 +665,7 @@ WARNING: translation string unused: service removed
 WARNING: translation string unused: service updated
 WARNING: translation string unused: servicename
 WARNING: translation string unused: services settings
+WARNING: translation string unused: set
 WARNING: translation string unused: shaping list options
 WARNING: translation string unused: show last x lines
 WARNING: translation string unused: show share options
@@ -879,5 +886,5 @@ WARNING: untranslated string: samba server role member =
=3D Domain Member
 WARNING: untranslated string: samba server role standalone =3D Standalone
 WARNING: untranslated string: show tls-auth key =3D Show tls-auth key
 WARNING: untranslated string: smb daemon =3D SMB Daemon
-WARNING: untranslated string: user management =3D unknown string
+WARNING: untranslated string: user management =3D User Management
 WARNING: untranslated string: winbind daemon =3D Winbind Daemon
diff --git a/doc/language_issues.en b/doc/language_issues.en
index abba7016d..63106d66b 100644
--- a/doc/language_issues.en
+++ b/doc/language_issues.en
@@ -92,11 +92,9 @@ WARNING: untranslated string: a ca certificate with this n=
ame already exists =3D A
 WARNING: untranslated string: a connection with this common name already exi=
sts =3D A connection with this common name already exists.
 WARNING: untranslated string: a connection with this name already exists =3D=
 A connection with this name already exists.
 WARNING: untranslated string: abort =3D abort
-WARNING: untranslated string: accounting =3D Accounting
 WARNING: untranslated string: acpitemp =3D ACPI - Temperatures
 WARNING: untranslated string: action =3D Action
 WARNING: untranslated string: activate =3D Activate
-WARNING: untranslated string: active =3D Active
 WARNING: untranslated string: add =3D Add
 WARNING: untranslated string: add a host =3D Add a host
 WARNING: untranslated string: add device =3D Add device
@@ -465,7 +463,6 @@ WARNING: untranslated string: clear playlist =3D Empty pl=
aylist
 WARNING: untranslated string: clenabled =3D Provide time to local network
 WARNING: untranslated string: click to disable =3D Enabled (click to disable)
 WARNING: untranslated string: click to enable =3D Disabled (click to enable)
-WARNING: untranslated string: client =3D Workstation Name
 WARNING: untranslated string: clock has not been synchronized =3D Clock has =
not been synchronized
 WARNING: untranslated string: clock last synchronized at =3D Clock was last =
synchronized at
 WARNING: untranslated string: common name =3D Common name
@@ -1045,7 +1042,6 @@ WARNING: untranslated string: ignore filter =3D Ignore =
filter
 WARNING: untranslated string: ike lifetime should be between 1 and 24 hours =
=3D IKE lifetime should be between 1 and 24 hours.
 WARNING: untranslated string: imei =3D IMEI
 WARNING: untranslated string: imsi =3D IMSI
-WARNING: untranslated string: inactive =3D inactive
 WARNING: untranslated string: include logfiles =3D Include logfiles
 WARNING: untranslated string: incoming =3D incoming
 WARNING: untranslated string: incoming compression in bytes per second =3D I=
ncoming Compression
@@ -1323,7 +1319,6 @@ WARNING: untranslated string: not affected =3D Not Affe=
cted
 WARNING: untranslated string: not enough disk space =3D Not enough disk space
 WARNING: untranslated string: not present =3D <b>Not</b> present
 WARNING: untranslated string: not running =3D not running
-WARNING: untranslated string: not set =3D not set
 WARNING: untranslated string: not validating =3D Not validating
 WARNING: untranslated string: notice =3D Notice
 WARNING: untranslated string: november =3D November
@@ -1444,7 +1439,6 @@ WARNING: untranslated string: password =3D Password:
 WARNING: untranslated string: password not set =3D Password not set.
 WARNING: untranslated string: password too short =3D Password is too short.
 WARNING: untranslated string: passwords do not match =3D Passwords do not ma=
tch.
-WARNING: untranslated string: pc add =3D Add workstation
 WARNING: untranslated string: percentage =3D Percentage
 WARNING: untranslated string: persistent =3D Persistent
 WARNING: untranslated string: pfs yes no =3D Perfect Forward Secrecy (PFS)
@@ -1571,7 +1565,6 @@ WARNING: untranslated string: server restart =3D You ar=
e not able to save any chan
 WARNING: untranslated string: service =3D Service
 WARNING: untranslated string: service name =3D Service name:
 WARNING: untranslated string: services =3D Services
-WARNING: untranslated string: set =3D set
 WARNING: untranslated string: set time now =3D Set time now
 WARNING: untranslated string: set time now help =3D To queue a synchronizati=
on event at any time (even while using a repeating schedule), press the <i>Se=
t time now</i> button. Please note that you may have to wait for five minutes=
, or more, before a sync event occurs.
 WARNING: untranslated string: settings =3D Settings
@@ -2036,7 +2029,7 @@ WARNING: untranslated string: used memory =3D Used Memo=
ry
 WARNING: untranslated string: used swap =3D Used Swap
 WARNING: untranslated string: user =3D User
 WARNING: untranslated string: user log =3D user log
-WARNING: untranslated string: user management =3D unknown string
+WARNING: untranslated string: user management =3D User Management
 WARNING: untranslated string: user proxy logs =3D user proxy log
 WARNING: untranslated string: username =3D Username:
 WARNING: untranslated string: username not set =3D Username not set.
diff --git a/doc/language_issues.es b/doc/language_issues.es
index d0e540674..689eeca7c 100644
--- a/doc/language_issues.es
+++ b/doc/language_issues.es
@@ -14,9 +14,11 @@ WARNING: translation string unused: TOS Bits
 WARNING: translation string unused: Verbose
 WARNING: translation string unused: access allowed
 WARNING: translation string unused: access refused with this oinkcode
+WARNING: translation string unused: accounting
 WARNING: translation string unused: accounting user nonpdc
 WARNING: translation string unused: accounting user pdc
 WARNING: translation string unused: activate user
+WARNING: translation string unused: active
 WARNING: translation string unused: add a new rule
 WARNING: translation string unused: add cron
 WARNING: translation string unused: add network
@@ -137,6 +139,7 @@ WARNING: translation string unused: choose config
 WARNING: translation string unused: choose media
 WARNING: translation string unused: class in use
 WARNING: translation string unused: clear cache
+WARNING: translation string unused: client
 WARNING: translation string unused: comment
 WARNING: translation string unused: compression
 WARNING: translation string unused: connect
@@ -332,6 +335,7 @@ WARNING: translation string unused: ike lifetime
 WARNING: translation string unused: import
 WARNING: translation string unused: importkey
 WARNING: translation string unused: in
+WARNING: translation string unused: inactive
 WARNING: translation string unused: incorrect password
 WARNING: translation string unused: info
 WARNING: translation string unused: insert floppy
@@ -460,6 +464,7 @@ WARNING: translation string unused: no modem selected
 WARNING: translation string unused: no set selected
 WARNING: translation string unused: nonetworkname
 WARNING: translation string unused: noservicename
+WARNING: translation string unused: not set
 WARNING: translation string unused: notes
 WARNING: translation string unused: o-no
 WARNING: translation string unused: o-yes
@@ -513,6 +518,7 @@ WARNING: translation string unused: password crypting key
 WARNING: translation string unused: passwords must be at least 6 characters =
in length
 WARNING: translation string unused: path to directory
 WARNING: translation string unused: pc
+WARNING: translation string unused: pc add
 WARNING: translation string unused: pdc options
 WARNING: translation string unused: phase1 group
 WARNING: translation string unused: phonebook entry
@@ -583,6 +589,7 @@ WARNING: translation string unused: service removed
 WARNING: translation string unused: service updated
 WARNING: translation string unused: servicename
 WARNING: translation string unused: services settings
+WARNING: translation string unused: set
 WARNING: translation string unused: shaping add options
 WARNING: translation string unused: shaping list options
 WARNING: translation string unused: show areas
@@ -1437,7 +1444,7 @@ WARNING: untranslated string: uplink bit rate =3D Uplin=
k Bit Rate
 WARNING: untranslated string: upload dh key =3D Upload Diffie-Hellman parame=
ters
 WARNING: untranslated string: uptime load average =3D Load average
 WARNING: untranslated string: urlfilter redirect template =3D Redirect page =
template
-WARNING: untranslated string: user management =3D unknown string
+WARNING: untranslated string: user management =3D User Management
 WARNING: untranslated string: vendor =3D Vendor
 WARNING: untranslated string: visit us at =3D Visit us at
 WARNING: untranslated string: vpn broken =3D Broken
diff --git a/doc/language_issues.fr b/doc/language_issues.fr
index effe54ab2..632acf938 100644
--- a/doc/language_issues.fr
+++ b/doc/language_issues.fr
@@ -39,9 +39,11 @@ WARNING: translation string unused: TOS Bits
 WARNING: translation string unused: Verbose
 WARNING: translation string unused: access allowed
 WARNING: translation string unused: access refused with this oinkcode
+WARNING: translation string unused: accounting
 WARNING: translation string unused: accounting user nonpdc
 WARNING: translation string unused: accounting user pdc
 WARNING: translation string unused: activate user
+WARNING: translation string unused: active
 WARNING: translation string unused: add a new rule
 WARNING: translation string unused: add cron
 WARNING: translation string unused: add network
@@ -169,6 +171,7 @@ WARNING: translation string unused: choose config
 WARNING: translation string unused: choose media
 WARNING: translation string unused: class in use
 WARNING: translation string unused: clear cache
+WARNING: translation string unused: client
 WARNING: translation string unused: comment
 WARNING: translation string unused: compression
 WARNING: translation string unused: connect
@@ -410,6 +413,7 @@ WARNING: translation string unused: ike lifetime
 WARNING: translation string unused: import
 WARNING: translation string unused: importkey
 WARNING: translation string unused: in
+WARNING: translation string unused: inactive
 WARNING: translation string unused: incorrect password
 WARNING: translation string unused: info
 WARNING: translation string unused: insert floppy
@@ -542,6 +546,7 @@ WARNING: translation string unused: no modem selected
 WARNING: translation string unused: no set selected
 WARNING: translation string unused: nonetworkname
 WARNING: translation string unused: noservicename
+WARNING: translation string unused: not set
 WARNING: translation string unused: notes
 WARNING: translation string unused: o-no
 WARNING: translation string unused: o-yes
@@ -620,6 +625,7 @@ WARNING: translation string unused: password crypting key
 WARNING: translation string unused: passwords must be at least 6 characters =
in length
 WARNING: translation string unused: path to directory
 WARNING: translation string unused: pc
+WARNING: translation string unused: pc add
 WARNING: translation string unused: pdc options
 WARNING: translation string unused: phase1 group
 WARNING: translation string unused: phonebook entry
@@ -691,6 +697,7 @@ WARNING: translation string unused: service removed
 WARNING: translation string unused: service updated
 WARNING: translation string unused: servicename
 WARNING: translation string unused: services settings
+WARNING: translation string unused: set
 WARNING: translation string unused: shaping add options
 WARNING: translation string unused: shaping list options
 WARNING: translation string unused: show areas
@@ -916,5 +923,5 @@ WARNING: untranslated string: routing config changed =3D =
unknown string
 WARNING: untranslated string: samba server role member =3D Domain Member
 WARNING: untranslated string: samba server role standalone =3D Standalone
 WARNING: untranslated string: smb daemon =3D SMB Daemon
-WARNING: untranslated string: user management =3D unknown string
+WARNING: untranslated string: user management =3D User Management
 WARNING: untranslated string: winbind daemon =3D Winbind Daemon
diff --git a/doc/language_issues.it b/doc/language_issues.it
index cbd9ef611..99a7f3e8d 100644
--- a/doc/language_issues.it
+++ b/doc/language_issues.it
@@ -15,9 +15,11 @@ WARNING: translation string unused: TOS Bits
 WARNING: translation string unused: Verbose
 WARNING: translation string unused: access allowed
 WARNING: translation string unused: access refused with this oinkcode
+WARNING: translation string unused: accounting
 WARNING: translation string unused: accounting user nonpdc
 WARNING: translation string unused: accounting user pdc
 WARNING: translation string unused: activate user
+WARNING: translation string unused: active
 WARNING: translation string unused: add a new rule
 WARNING: translation string unused: add cron
 WARNING: translation string unused: add network
@@ -145,6 +147,7 @@ WARNING: translation string unused: choose config
 WARNING: translation string unused: choose media
 WARNING: translation string unused: class in use
 WARNING: translation string unused: clear cache
+WARNING: translation string unused: client
 WARNING: translation string unused: comment
 WARNING: translation string unused: compression
 WARNING: translation string unused: connect
@@ -389,6 +392,7 @@ WARNING: translation string unused: ike lifetime
 WARNING: translation string unused: import
 WARNING: translation string unused: importkey
 WARNING: translation string unused: in
+WARNING: translation string unused: inactive
 WARNING: translation string unused: incorrect password
 WARNING: translation string unused: info
 WARNING: translation string unused: insert floppy
@@ -517,6 +521,7 @@ WARNING: translation string unused: no modem selected
 WARNING: translation string unused: no set selected
 WARNING: translation string unused: nonetworkname
 WARNING: translation string unused: noservicename
+WARNING: translation string unused: not set
 WARNING: translation string unused: notes
 WARNING: translation string unused: o-no
 WARNING: translation string unused: o-yes
@@ -594,6 +599,7 @@ WARNING: translation string unused: password crypting key
 WARNING: translation string unused: passwords must be at least 6 characters =
in length
 WARNING: translation string unused: path to directory
 WARNING: translation string unused: pc
+WARNING: translation string unused: pc add
 WARNING: translation string unused: pdc options
 WARNING: translation string unused: phase1 group
 WARNING: translation string unused: phonebook entry
@@ -664,6 +670,7 @@ WARNING: translation string unused: service removed
 WARNING: translation string unused: service updated
 WARNING: translation string unused: servicename
 WARNING: translation string unused: services settings
+WARNING: translation string unused: set
 WARNING: translation string unused: shaping add options
 WARNING: translation string unused: shaping list options
 WARNING: translation string unused: show areas
@@ -1149,7 +1156,7 @@ WARNING: untranslated string: uncheck all =3D Uncheck a=
ll
 WARNING: untranslated string: unlimited =3D Unlimited
 WARNING: untranslated string: update ruleset =3D Update ruleset
 WARNING: untranslated string: uplink bit rate =3D Uplink Bit Rate
-WARNING: untranslated string: user management =3D unknown string
+WARNING: untranslated string: user management =3D User Management
 WARNING: untranslated string: vpn broken =3D Broken
 WARNING: untranslated string: vpn connecting =3D CONNECTING
 WARNING: untranslated string: vpn force mobike =3D Force using MOBIKE (only =
IKEv2)
diff --git a/doc/language_issues.nl b/doc/language_issues.nl
index 94723dad5..2afa7b0f3 100644
--- a/doc/language_issues.nl
+++ b/doc/language_issues.nl
@@ -15,9 +15,11 @@ WARNING: translation string unused: TOS Bits
 WARNING: translation string unused: Verbose
 WARNING: translation string unused: access allowed
 WARNING: translation string unused: access refused with this oinkcode
+WARNING: translation string unused: accounting
 WARNING: translation string unused: accounting user nonpdc
 WARNING: translation string unused: accounting user pdc
 WARNING: translation string unused: activate user
+WARNING: translation string unused: active
 WARNING: translation string unused: add a new rule
 WARNING: translation string unused: add cron
 WARNING: translation string unused: add network
@@ -144,6 +146,7 @@ WARNING: translation string unused: choose config
 WARNING: translation string unused: choose media
 WARNING: translation string unused: class in use
 WARNING: translation string unused: clear cache
+WARNING: translation string unused: client
 WARNING: translation string unused: comment
 WARNING: translation string unused: compression
 WARNING: translation string unused: connect
@@ -385,6 +388,7 @@ WARNING: translation string unused: ike lifetime
 WARNING: translation string unused: import
 WARNING: translation string unused: importkey
 WARNING: translation string unused: in
+WARNING: translation string unused: inactive
 WARNING: translation string unused: incorrect password
 WARNING: translation string unused: info
 WARNING: translation string unused: insert floppy
@@ -512,6 +516,7 @@ WARNING: translation string unused: no modem selected
 WARNING: translation string unused: no set selected
 WARNING: translation string unused: nonetworkname
 WARNING: translation string unused: noservicename
+WARNING: translation string unused: not set
 WARNING: translation string unused: notes
 WARNING: translation string unused: o-no
 WARNING: translation string unused: o-yes
@@ -587,6 +592,7 @@ WARNING: translation string unused: password crypting key
 WARNING: translation string unused: passwords must be at least 6 characters =
in length
 WARNING: translation string unused: path to directory
 WARNING: translation string unused: pc
+WARNING: translation string unused: pc add
 WARNING: translation string unused: pdc options
 WARNING: translation string unused: phase1 group
 WARNING: translation string unused: phonebook entry
@@ -657,6 +663,7 @@ WARNING: translation string unused: service removed
 WARNING: translation string unused: service updated
 WARNING: translation string unused: servicename
 WARNING: translation string unused: services settings
+WARNING: translation string unused: set
 WARNING: translation string unused: shaping add options
 WARNING: translation string unused: shaping list options
 WARNING: translation string unused: show areas
@@ -1188,7 +1195,7 @@ WARNING: untranslated string: unlimited =3D Unlimited
 WARNING: untranslated string: update ruleset =3D Update ruleset
 WARNING: untranslated string: uplink bit rate =3D Uplink Bit Rate
 WARNING: untranslated string: upload dh key =3D Upload Diffie-Hellman parame=
ters
-WARNING: untranslated string: user management =3D unknown string
+WARNING: untranslated string: user management =3D User Management
 WARNING: untranslated string: vendor =3D Vendor
 WARNING: untranslated string: vpn broken =3D Broken
 WARNING: untranslated string: vpn connecting =3D CONNECTING
diff --git a/doc/language_issues.pl b/doc/language_issues.pl
index d0e540674..689eeca7c 100644
--- a/doc/language_issues.pl
+++ b/doc/language_issues.pl
@@ -14,9 +14,11 @@ WARNING: translation string unused: TOS Bits
 WARNING: translation string unused: Verbose
 WARNING: translation string unused: access allowed
 WARNING: translation string unused: access refused with this oinkcode
+WARNING: translation string unused: accounting
 WARNING: translation string unused: accounting user nonpdc
 WARNING: translation string unused: accounting user pdc
 WARNING: translation string unused: activate user
+WARNING: translation string unused: active
 WARNING: translation string unused: add a new rule
 WARNING: translation string unused: add cron
 WARNING: translation string unused: add network
@@ -137,6 +139,7 @@ WARNING: translation string unused: choose config
 WARNING: translation string unused: choose media
 WARNING: translation string unused: class in use
 WARNING: translation string unused: clear cache
+WARNING: translation string unused: client
 WARNING: translation string unused: comment
 WARNING: translation string unused: compression
 WARNING: translation string unused: connect
@@ -332,6 +335,7 @@ WARNING: translation string unused: ike lifetime
 WARNING: translation string unused: import
 WARNING: translation string unused: importkey
 WARNING: translation string unused: in
+WARNING: translation string unused: inactive
 WARNING: translation string unused: incorrect password
 WARNING: translation string unused: info
 WARNING: translation string unused: insert floppy
@@ -460,6 +464,7 @@ WARNING: translation string unused: no modem selected
 WARNING: translation string unused: no set selected
 WARNING: translation string unused: nonetworkname
 WARNING: translation string unused: noservicename
+WARNING: translation string unused: not set
 WARNING: translation string unused: notes
 WARNING: translation string unused: o-no
 WARNING: translation string unused: o-yes
@@ -513,6 +518,7 @@ WARNING: translation string unused: password crypting key
 WARNING: translation string unused: passwords must be at least 6 characters =
in length
 WARNING: translation string unused: path to directory
 WARNING: translation string unused: pc
+WARNING: translation string unused: pc add
 WARNING: translation string unused: pdc options
 WARNING: translation string unused: phase1 group
 WARNING: translation string unused: phonebook entry
@@ -583,6 +589,7 @@ WARNING: translation string unused: service removed
 WARNING: translation string unused: service updated
 WARNING: translation string unused: servicename
 WARNING: translation string unused: services settings
+WARNING: translation string unused: set
 WARNING: translation string unused: shaping add options
 WARNING: translation string unused: shaping list options
 WARNING: translation string unused: show areas
@@ -1437,7 +1444,7 @@ WARNING: untranslated string: uplink bit rate =3D Uplin=
k Bit Rate
 WARNING: untranslated string: upload dh key =3D Upload Diffie-Hellman parame=
ters
 WARNING: untranslated string: uptime load average =3D Load average
 WARNING: untranslated string: urlfilter redirect template =3D Redirect page =
template
-WARNING: untranslated string: user management =3D unknown string
+WARNING: untranslated string: user management =3D User Management
 WARNING: untranslated string: vendor =3D Vendor
 WARNING: untranslated string: visit us at =3D Visit us at
 WARNING: untranslated string: vpn broken =3D Broken
diff --git a/doc/language_issues.ru b/doc/language_issues.ru
index 8a296ff3d..ac9715beb 100644
--- a/doc/language_issues.ru
+++ b/doc/language_issues.ru
@@ -15,9 +15,11 @@ WARNING: translation string unused: TOS Bits
 WARNING: translation string unused: Verbose
 WARNING: translation string unused: access allowed
 WARNING: translation string unused: access refused with this oinkcode
+WARNING: translation string unused: accounting
 WARNING: translation string unused: accounting user nonpdc
 WARNING: translation string unused: accounting user pdc
 WARNING: translation string unused: activate user
+WARNING: translation string unused: active
 WARNING: translation string unused: add a new rule
 WARNING: translation string unused: add cron
 WARNING: translation string unused: add network
@@ -138,6 +140,7 @@ WARNING: translation string unused: choose config
 WARNING: translation string unused: choose media
 WARNING: translation string unused: class in use
 WARNING: translation string unused: clear cache
+WARNING: translation string unused: client
 WARNING: translation string unused: comment
 WARNING: translation string unused: compression
 WARNING: translation string unused: connect
@@ -328,6 +331,7 @@ WARNING: translation string unused: ike lifetime
 WARNING: translation string unused: import
 WARNING: translation string unused: importkey
 WARNING: translation string unused: in
+WARNING: translation string unused: inactive
 WARNING: translation string unused: incorrect password
 WARNING: translation string unused: info
 WARNING: translation string unused: insert floppy
@@ -452,6 +456,7 @@ WARNING: translation string unused: no modem selected
 WARNING: translation string unused: no set selected
 WARNING: translation string unused: nonetworkname
 WARNING: translation string unused: noservicename
+WARNING: translation string unused: not set
 WARNING: translation string unused: notes
 WARNING: translation string unused: o-no
 WARNING: translation string unused: o-yes
@@ -516,6 +521,7 @@ WARNING: translation string unused: password crypting key
 WARNING: translation string unused: passwords must be at least 6 characters =
in length
 WARNING: translation string unused: path to directory
 WARNING: translation string unused: pc
+WARNING: translation string unused: pc add
 WARNING: translation string unused: pdc options
 WARNING: translation string unused: phase1 group
 WARNING: translation string unused: phonebook entry
@@ -586,6 +592,7 @@ WARNING: translation string unused: service removed
 WARNING: translation string unused: service updated
 WARNING: translation string unused: servicename
 WARNING: translation string unused: services settings
+WARNING: translation string unused: set
 WARNING: translation string unused: shaping add options
 WARNING: translation string unused: shaping list options
 WARNING: translation string unused: show areas
@@ -1432,7 +1439,7 @@ WARNING: untranslated string: uplink bit rate =3D Uplin=
k Bit Rate
 WARNING: untranslated string: upload dh key =3D Upload Diffie-Hellman parame=
ters
 WARNING: untranslated string: uptime load average =3D Load average
 WARNING: untranslated string: urlfilter redirect template =3D Redirect page =
template
-WARNING: untranslated string: user management =3D unknown string
+WARNING: untranslated string: user management =3D User Management
 WARNING: untranslated string: vendor =3D Vendor
 WARNING: untranslated string: visit us at =3D Visit us at
 WARNING: untranslated string: vpn broken =3D Broken
diff --git a/doc/language_issues.tr b/doc/language_issues.tr
index 1cbcdd70c..7613e2ff7 100644
--- a/doc/language_issues.tr
+++ b/doc/language_issues.tr
@@ -36,9 +36,11 @@ WARNING: translation string unused: TOS Bits
 WARNING: translation string unused: Verbose
 WARNING: translation string unused: access allowed
 WARNING: translation string unused: access refused with this oinkcode
+WARNING: translation string unused: accounting
 WARNING: translation string unused: accounting user nonpdc
 WARNING: translation string unused: accounting user pdc
 WARNING: translation string unused: activate user
+WARNING: translation string unused: active
 WARNING: translation string unused: add a new rule
 WARNING: translation string unused: add cron
 WARNING: translation string unused: add network
@@ -167,6 +169,7 @@ WARNING: translation string unused: choose config
 WARNING: translation string unused: choose media
 WARNING: translation string unused: class in use
 WARNING: translation string unused: clear cache
+WARNING: translation string unused: client
 WARNING: translation string unused: comment
 WARNING: translation string unused: compression
 WARNING: translation string unused: connect
@@ -414,6 +417,7 @@ WARNING: translation string unused: ike lifetime
 WARNING: translation string unused: import
 WARNING: translation string unused: importkey
 WARNING: translation string unused: in
+WARNING: translation string unused: inactive
 WARNING: translation string unused: incorrect password
 WARNING: translation string unused: info
 WARNING: translation string unused: insert floppy
@@ -545,6 +549,7 @@ WARNING: translation string unused: no modem selected
 WARNING: translation string unused: no set selected
 WARNING: translation string unused: nonetworkname
 WARNING: translation string unused: noservicename
+WARNING: translation string unused: not set
 WARNING: translation string unused: notes
 WARNING: translation string unused: o-no
 WARNING: translation string unused: o-yes
@@ -622,6 +627,7 @@ WARNING: translation string unused: password crypting key
 WARNING: translation string unused: passwords must be at least 6 characters =
in length
 WARNING: translation string unused: path to directory
 WARNING: translation string unused: pc
+WARNING: translation string unused: pc add
 WARNING: translation string unused: pdc options
 WARNING: translation string unused: phase1 group
 WARNING: translation string unused: phonebook entry
@@ -692,6 +698,7 @@ WARNING: translation string unused: service removed
 WARNING: translation string unused: service updated
 WARNING: translation string unused: servicename
 WARNING: translation string unused: services settings
+WARNING: translation string unused: set
 WARNING: translation string unused: shaping add options
 WARNING: translation string unused: shaping list options
 WARNING: translation string unused: show areas
@@ -1040,7 +1047,7 @@ WARNING: untranslated string: system is offline =3D The=
 system is offline.
 WARNING: untranslated string: taa zombieload2 =3D TSX Async Abort / ZombieLo=
ad v2
 WARNING: untranslated string: transport mode does not support vti =3D VTI is=
 not support in transport mode
 WARNING: untranslated string: update ruleset =3D Update ruleset
-WARNING: untranslated string: user management =3D unknown string
+WARNING: untranslated string: user management =3D User Management
 WARNING: untranslated string: vpn start action add =3D Wait for connection i=
nitiation
 WARNING: untranslated string: vpn statistics n2n =3D unknown string
 WARNING: untranslated string: vpn subjectaltname missing =3D SubjectAlternat=
iveName cannot be emtpy.
diff --git a/doc/language_missings b/doc/language_missings
index 0934f8431..a1fcdc334 100644
--- a/doc/language_missings
+++ b/doc/language_missings
@@ -58,6 +58,7 @@
 < tor errmsg invalid node id
 < updxlrtr used by
 < upload fcdsl.o
+< user management
 < vpn configuration main
 < winbind daemon
 ############################################################################
@@ -844,6 +845,7 @@
 < uptime
 < uptime load average
 < urlfilter redirect template
+< user management
 < vendor
 < visit us at
 < vpn broken
@@ -954,6 +956,7 @@
 < samba server role standalone
 < smb daemon
 < upload fcdsl.o
+< user management
 < winbind daemon
 ############################################################################
 # Checking cgi-bin translations for language: it                           #
@@ -1263,6 +1266,7 @@
 < unlimited
 < update ruleset
 < uplink bit rate
+< user management
 < vpn broken
 < vpn connecting
 < vpn force mobike
@@ -1684,6 +1688,7 @@
 < update ruleset
 < uplink bit rate
 < upload dh key
+< user management
 < vendor
 < vpn broken
 < vpn connecting
@@ -2512,6 +2517,7 @@
 < uptime
 < uptime load average
 < urlfilter redirect template
+< user management
 < vendor
 < visit us at
 < vpn broken
@@ -3379,6 +3385,7 @@
 < uptime
 < uptime load average
 < urlfilter redirect template
+< user management
 < vendor
 < visit us at
 < vpn broken
@@ -3615,6 +3622,7 @@
 < taa zombieload2
 < transport mode does not support vti
 < update ruleset
+< user management
 < vpn start action add
 < vpn subjectaltname missing
 < vpn wait
diff --git a/html/cgi-bin/samba.cgi b/html/cgi-bin/samba.cgi
index 3f2903132..cad8ebd3b 100644
--- a/html/cgi-bin/samba.cgi
+++ b/html/cgi-bin/samba.cgi
@@ -84,7 +84,6 @@ my $LOGLINES =3D '50';
 if ($sambasettings{'ACTION'} eq 'smbuserdisable'){system("/usr/local/bin/sam=
bactrl smbuserdisable $sambasettings{'NAME'}");}
 if ($sambasettings{'ACTION'} eq 'smbuserenable'){system("/usr/local/bin/samb=
actrl smbuserenable $sambasettings{'NAME'}");}
 if ($sambasettings{'ACTION'} eq 'smbuseradd'){system("/usr/local/bin/sambact=
rl smbuseradd $sambasettings{'USERNAME'} $sambasettings{'PASSWORD'} $sambaset=
tings{'GROUP'} $sambasettings{'SHELL'}");}
-if ($sambasettings{'ACTION'} eq 'smbpcadd'){system("/usr/local/bin/sambactrl=
 smbpcadd $sambasettings{'PCNAME'} $sambasettings{'GROUP'} $sambasettings{'SH=
ELL'}");}
 if ($sambasettings{'ACTION'} eq 'smbchangepw'){system("/usr/local/bin/sambac=
trl smbchangepw $sambasettings{'USERNAME'} $sambasettings{'PASSWORD'}");}
 if ($sambasettings{'ACTION'} eq 'smbrestart'){system("/usr/local/bin/sambact=
rl smbrestart");}
 if ($sambasettings{'ACTION'} eq 'smbstart'){system("/usr/local/bin/sambactrl=
 smbstart");}
@@ -360,170 +359,187 @@ END
=20
 if ($sambasettings{'ROLE'} eq 'standalone') {
 	&Header::openbox('100%', 'center', $Lang::tr{'user management'});
-	print <<END
-	<br />
-	<table class=3D"tbl" width=3D'100%' cellspacing=3D'0'>
-	<tr><td colspan=3D'6' align=3D'left'></td></tr>
-	<tr><td bgcolor=3D'$color{'color20'}' colspan=3D'7' align=3D'left'><b>$Lang=
::tr{'accounting'}</b></td></tr>
-	<tr><td align=3D'left'><u>$Lang::tr{'username'}</u></td><td align=3D'left'>=
<u>$Lang::tr{'password'}</u></td>
+
+	print <<END;
+		<table class=3D"tbl" width=3D'100%' cellspacing=3D'0'>
+			<tr>
+				<th align=3D'left'>$Lang::tr{'user'}</th>
+				<th colspan=3D'3' width=3D'5%'></th>
+			</tr>
 END
-;
=20
-	print "<td></td>";
-	print "<td align=3D'left'><u>$Lang::tr{'status'}</u></td><td colspan=3D'3' =
width=3D'5%' align=3D'center'><u>$Lang::tr{'options'}</u></td></tr>";
 	system('/usr/local/bin/sambactrl readsmbpasswd');
 	open(FILE, "<${General::swroot}/samba/private/smbpasswd") or die "Can't rea=
d user file: $!";
-	@user =3D <FILE>;
+	my @users =3D <FILE>;
 	close(FILE);
 	system('/usr/local/bin/sambactrl locksmbpasswd');
-=09
+
 	my $lines =3D 0;
-=09
-	foreach $userentry (sort @user)
-		{
-		@userline =3D split( /\:/, $userentry );
-    if ($lines % 2) {print "<tr bgcolor=3D'$color{'color20'}'>";} else {prin=
t "<tr bgcolor=3D'$color{'color22'}'>";}
-		print "<td align=3D'left'>$userline[0]</td><td align=3D'left'>";
-		if ($userline[4] =3D~ /N/)
-			{
-			print "$Lang::tr{'not set'}</td><td align=3D'left'>";
-			}
-		else
-			{
-			print "$Lang::tr{'set'}</td><td align=3D'left'>";
-			}
+	foreach $userentry (sort @users) {
+		@userline =3D split( /\:/, $userentry);
=20
-		print "</td><td align=3D'left'>";
+		if ($lines % 2) {
+			print "<tr bgcolor=3D'$color{'color20'}'>";
+		} else {
+			print "<tr bgcolor=3D'$color{'color22'}'>";
+		}
=20
-		if ($userline[4] =3D~ /D/)
-			{
-			print <<END
-			$Lang::tr{'inactive'}</td>
-			<td align=3D'center'><form method=3D'post' action=3D'$ENV{'SCRIPT_NAME'}#=
$Lang::tr{'accounting'}'>
-					<input type=3D'hidden' name=3D'NAME' value=3D'$userline[0]' />
-					<input type=3D'hidden' name=3D'ACTION' value=3D'smbuserenable' />
-					<input type=3D'image' alt=3D'$Lang::tr{'activate'}' title=3D'$Lang::tr{=
'activate'}' src=3D'/images/off.gif' />
-			</form></td>
+		# Print username
+		print "<td align=3D'left'>$userline[0]</td>";
+
+		if ($userline[4] =3D~ /D/) {
+			print <<END;
+				<td align=3D'center'>
+					<form method=3D'post' action=3D'$ENV{'SCRIPT_NAME'}'>
+						<input type=3D'hidden' name=3D'NAME' value=3D'$userline[0]' />
+						<input type=3D'hidden' name=3D'ACTION' value=3D'smbuserenable' />
+						<input type=3D'image' alt=3D'$Lang::tr{'activate'}' title=3D'$Lang::tr=
{'activate'}' src=3D'/images/off.gif' />
+					</form>
+				</td>
 END
-;
-			}
-		else
-			{
-			print <<END
-			$Lang::tr{'active'}</td>
-			<td align=3D'center'><form method=3D'post' action=3D'$ENV{'SCRIPT_NAME'}#=
$Lang::tr{'accounting'}'>
-					<input type=3D'hidden' name=3D'NAME' value=3D'$userline[0]' />
-					<input type=3D'hidden' name=3D'ACTION' value=3D'smbuserdisable' />
-					<input type=3D'image' alt=3D'$Lang::tr{'deactivate'}' title=3D'$Lang::t=
r{'deactivate'}' src=3D'/images/on.gif' />
-			</form></td>
+		} else {
+			print <<END;
+				<td align=3D'center'>
+					<form method=3D'post' action=3D'$ENV{'SCRIPT_NAME'}'>
+						<input type=3D'hidden' name=3D'NAME' value=3D'$userline[0]' />
+						<input type=3D'hidden' name=3D'ACTION' value=3D'smbuserdisable' />
+						<input type=3D'image' alt=3D'$Lang::tr{'deactivate'}' title=3D'$Lang::=
tr{'deactivate'}' src=3D'/images/on.gif' />
+					</form>
+				</td>
 END
-;
-			}
+		}
=20
-		if ($userline[0] =3D~ /\$/)
-			{
+		# Machine accounts can't be edited
+		if ($userline[0] =3D~ /\$/) {
 			print "<td></td>";
-			}
-		else
-			{
-			print <<END
-			<td align=3D'center'><form method=3D'post' action=3D'$ENV{'SCRIPT_NAME'}#=
$Lang::tr{'accounting'}'>
-					<input type=3D'hidden' name=3D'NAME' value=3D'$userline[0]' />
-					<input type=3D'hidden' name=3D'ACTION' value=3D'userchangepw' />
-					<input type=3D'image' alt=3D'$Lang::tr{'edit'}' title=3D'$Lang::tr{'edi=
t'}' src=3D'/images/edit.gif' />
-			</form></td>
+		} else {
+			print <<END;
+				<td align=3D'center'>
+					<form method=3D'post' action=3D'$ENV{'SCRIPT_NAME'}'>
+						<input type=3D'hidden' name=3D'NAME' value=3D'$userline[0]' />
+						<input type=3D'hidden' name=3D'ACTION' value=3D'userchangepw' />
+						<input type=3D'image' alt=3D'$Lang::tr{'edit'}' title=3D'$Lang::tr{'ed=
it'}' src=3D'/images/edit.gif' />
+					</form>
+				</td>
 END
-;
-			}
+		}
=20
-			print <<END
-			<td><form method=3D'post' action=3D'$ENV{'SCRIPT_NAME'}#$Lang::tr{'accoun=
ting'}'>
+		print <<END;
+			<td align=3D'center'>
+				<form method=3D'post' action=3D'$ENV{'SCRIPT_NAME'}'>
 					<input type=3D'hidden' name=3D'NAME' value=3D'$userline[0]' />
 					<input type=3D'hidden' name=3D'ACTION' value=3D'userdelete' />
 					<input type=3D'image' alt=3D'$Lang::tr{'delete'}' title=3D'$Lang::tr{'d=
elete'}' src=3D'/images/user-option-remove.png' />
-			</form></td></tr>
+				</form>
+			</td>
+		</tr>
 END
-;
 		$lines++;
-		}
-	print <<END
-	</table>
-	<br />
-	<table width=3D'10%' cellspacing=3D'0'>
-	<tr><td align=3D'center'><form method=3D'post' action=3D'$ENV{'SCRIPT_NAME'=
}#$Lang::tr{'accounting'}'>
-													<input type=3D'hidden' name=3D'ACTION' value=3D'useradd' />
-													<input type=3D'image' alt=3D'$Lang::tr{'add user'}' title=3D'$L=
ang::tr{'add user'}' src=3D'/images/user-option-add.png' /></form></td>
-	</tr>
-	</table>
+	}
+
+	print <<END;
+		</table>
+
+		<br>
+
+		<table width=3D'10%' cellspacing=3D'0'>
+			<tr>
+				<td align=3D'center'>
+					<form method=3D'post' action=3D'$ENV{'SCRIPT_NAME'}'>
+						<input type=3D'hidden' name=3D'ACTION' value=3D'useradd'>
+						<input type=3D'submit' value=3D'$Lang::tr{'add user'}'>
+					</form>
+				</td>
+			</tr>
+		</table>
 END
-;
=20
-	if ($sambasettings{'ACTION'} eq 'userchangepw')
-		{
-		my $username =3D "$sambasettings{'NAME'}";
+	if ($sambasettings{'ACTION'} eq 'userchangepw') {
+		my $username =3D $sambasettings{'NAME'};
 		my $password =3D 'samba';
+
 		print <<END
-		<br />
-		<form method=3D'post' action=3D'$ENV{'SCRIPT_NAME'}#$Lang::tr{'accounting'=
}'>
-		<table width=3D'100%' cellspacing=3D'0'>
-		<tr bgcolor=3D'$color{'color20'}'><td colspan=3D'2' align=3D'left'><b>$Lan=
g::tr{'change passwords'}</b></td></tr>
-		<tr><td align=3D'left'>$Lang::tr{'username'}</td><td><input type=3D'text' =
name=3D'USERNAME' value=3D'$username' size=3D'30' readonly=3D'readonly' /></t=
d></tr>
-		<tr><td align=3D'left'>$Lang::tr{'password'}</td><td><input type=3D'passwo=
rd' name=3D'PASSWORD' value=3D'$password' size=3D'30' /></td></tr>
-		<tr><td colspan=3D'2' align=3D'center'><input type=3D'hidden' name=3D'ACTI=
ON' value=3D'smbchangepw' />
-			<input type=3D'image' alt=3D'$Lang::tr{'save'}' title=3D'$Lang::tr{'save'=
}' src=3D'/images/media-floppy.png' /></td></tr>
-		</table>
-		</form>
+			<br>
+			<form method=3D'post' action=3D'$ENV{'SCRIPT_NAME'}'>
+				<table width=3D'100%' cellspacing=3D'0'>
+					<tr bgcolor=3D'$color{'color20'}'>
+						<td colspan=3D'2' align=3D'left'><b>$Lang::tr{'change passwords'}</b><=
/td>
+					</tr>
+					<tr>
+						<td align=3D'left'>$Lang::tr{'username'}</td>
+						<td>
+							<input type=3D'text' name=3D'USERNAME' value=3D'$username' size=3D'30=
' readonly=3D'readonly' />
+						</td>
+					</tr>
+					<tr>
+						<td align=3D'left'>$Lang::tr{'password'}</td>
+						<td>
+							<input type=3D'password' name=3D'PASSWORD' value=3D'$password' size=
=3D'30' />
+						</td>
+					</tr>
+					<tr>
+						<td colspan=3D'2' align=3D'center'>
+							<input type=3D'hidden' name=3D'ACTION' value=3D'smbchangepw'>
+							<input type=3D'submit' value=3D'$Lang::tr{'save'}'>
+						</td>
+					</tr>
+				</table>
+			</form>
 END
-;
-		}
+	}
=20
-	if ($sambasettings{'ACTION'} eq 'useradd')
-		{
+	if ($sambasettings{'ACTION'} eq 'useradd') {
 		my $username =3D "user";
 		my $password =3D "samba";
 		chomp $username;
 		$username=3D~s/\s//g;
 		chomp $password;
 		$password=3D~s/\s//g;
-		print <<END
-		<br />
-		<form method=3D'post' action=3D'$ENV{'SCRIPT_NAME'}#$Lang::tr{'accounting'=
}'>
-		<table width=3D'100%' cellspacing=3D'0'>
-		<tr bgcolor=3D'$color{'color20'}'><td colspan=3D'2' align=3D'left'><b>$Lan=
g::tr{'add user'}</b></td></tr>
-		<tr><td align=3D'left'>$Lang::tr{'username'}</td><td><input type=3D'text' =
name=3D'USERNAME' value=3D'$username' size=3D'30' /></td></tr>
-		<tr><td align=3D'left'>$Lang::tr{'password'}</td><td><input type=3D'passwo=
rd' name=3D'PASSWORD' value=3D'$password' size=3D'30' /></td></tr>
-		<tr><td align=3D'left'>$Lang::tr{'unix group'}</td><td><input type=3D'text=
' name=3D'GROUP' value=3D'sambauser' size=3D'30' /></td></tr>
-		<tr><td align=3D'left'>$Lang::tr{'unix shell'}</td><td><input type=3D'text=
' name=3D'SHELL' value=3D'/bin/false' size=3D'30' /></td></tr>
-		<tr><td colspan=3D'2' align=3D'center'><input type=3D'hidden' name=3D'ACTI=
ON' value=3D'smbuseradd' />
-			<input type=3D'image' alt=3D'$Lang::tr{'save'}' title=3D'$Lang::tr{'save'=
}' src=3D'/images/media-floppy.png' /></td></tr>
-		</table>
-		</form>
-END
-;
-		}
=20
-	if ($sambasettings{'ACTION'} eq 'pcadd')
-		{
-		my $pcname =3D "client\$";
-		chomp $pcname;
-		$pcname=3D~s/\s//g;
-		print <<END
-		<br />
-		<form method=3D'post' action=3D'$ENV{'SCRIPT_NAME'}#$Lang::tr{'accounting'=
}'>
-		<table width=3D'100%' cellspacing=3D'0'>
-		<tr bgcolor=3D'$color{'color20'}'><td colspan=3D'2' align=3D'left'><b>$Lan=
g::tr{'pc add'}</b></td></tr>
-		<tr><td align=3D'left'>$Lang::tr{'client'}</td><td><input type=3D'text' na=
me=3D'PCNAME' value=3D'$pcname' size=3D'30' /></td></tr>
-		<tr><td align=3D'left'>$Lang::tr{'unix group'}</td><td><input type=3D'text=
' name=3D'GROUP' value=3D'sambawks' size=3D'30' /></td></tr>
-		<tr><td align=3D'left'>$Lang::tr{'unix shell'}</td><td><input type=3D'text=
' name=3D'SHELL' value=3D'/bin/false' size=3D'30' /></td></tr>
-		<tr><td colspan=3D'2' align=3D'center'><input type=3D'hidden' name=3D'ACTI=
ON' value=3D'smbpcadd' />
-			<input type=3D'image' alt=3D'$Lang::tr{'save'}' title=3D'$Lang::tr{'save'=
}' src=3D'/images/media-floppy.png' /></td></tr>
-		</table>
-		</form>
+		print <<END;
+			<br>
+
+			<form method=3D'post' action=3D'$ENV{'SCRIPT_NAME'}'>
+				<table width=3D'100%' cellspacing=3D'0'>
+					<tr bgcolor=3D'$color{'color20'}'>
+						<td colspan=3D'2' align=3D'left'><b>$Lang::tr{'add user'}</b></td>
+					</tr>
+					<tr>
+						<td align=3D'left'>$Lang::tr{'username'}</td>
+						<td>
+							<input type=3D'text' name=3D'USERNAME' value=3D'$username' size=3D'30=
' />
+						</td>
+					</tr>
+					<tr>
+						<td align=3D'left'>$Lang::tr{'password'}</td>
+						<td>
+							<input type=3D'password' name=3D'PASSWORD' value=3D'$password' size=
=3D'30' />
+						</td>
+					</tr>
+					<tr>
+						<td align=3D'left'>$Lang::tr{'unix group'}</td>
+						<td>
+							<input type=3D'text' name=3D'GROUP' value=3D'sambauser' size=3D'30' />
+						</td>
+					</tr>
+					<tr>
+						<td align=3D'left'>$Lang::tr{'unix shell'}</td>
+						<td>
+							<input type=3D'text' name=3D'SHELL' value=3D'/bin/false' size=3D'30' =
/>
+						</td>
+					</tr>
+					<tr>
+						<td colspan=3D'2' align=3D'center'>
+							<input type=3D'hidden' name=3D'ACTION' value=3D'smbuseradd'>
+							<input type=3D'submit' value=3D'$Lang::tr{'save'}'>
+						</td>
+					</tr>
+				</table>
+			</form>
 END
-;
-		}
+	}
=20
-&Header::closebox();
+	&Header::closebox();
 }
=20
 if ($sambasettings{'ROLE'} eq "member") {
diff --git a/langs/en/cgi-bin/en.pl b/langs/en/cgi-bin/en.pl
index a0419c02d..0b4f098a7 100644
--- a/langs/en/cgi-bin/en.pl
+++ b/langs/en/cgi-bin/en.pl
@@ -2834,6 +2834,7 @@
 'used swap' =3D> 'Used Swap',
 'user' =3D> 'User',
 'user log' =3D> 'user log',
+'user management' =3D> 'User Management',
 'user proxy logs' =3D> 'user proxy log',
 'username' =3D> 'Username:',
 'username not set' =3D> 'Username not set.',
diff --git a/src/misc-progs/sambactrl.c b/src/misc-progs/sambactrl.c
index 1dcc8ee61..91761a422 100644
--- a/src/misc-progs/sambactrl.c
+++ b/src/misc-progs/sambactrl.c
@@ -71,16 +71,6 @@ int main(int argc, char *argv[]) {
 		snprintf(command, BUFFER_SIZE-1, "/usr/bin/printf '%s\n%s\n' | /usr/bin/sm=
bpasswd -as %s >/dev/null", argv[3], argv[3], argv[2]);
 		safe_system(command);
=20
-	} else if (strcmp(argv[1], "smbpcadd") =3D=3D 0) {
-		snprintf(command, BUFFER_SIZE-1, "/usr/sbin/groupadd sambawks >/dev/null");
-		safe_system(command);
-
-		snprintf(command, BUFFER_SIZE-1, "/usr/sbin/useradd -c 'Samba Workstation'=
 -g %s -s %s %s >/dev/null", argv[3], argv[4], argv[2]);
-		safe_system(command);
-
-		snprintf(command, BUFFER_SIZE-1, "/usr/bin/smbpasswd -a -m %s >/dev/null",=
 argv[2]);
-		safe_system(command);
-
 	} else if (strcmp(argv[1], "smbchangepw") =3D=3D 0) {
 		snprintf(command, BUFFER_SIZE-1, "echo %s:%s | chpasswd", argv[2], argv[3]=
);
 		safe_system(command);
--=20
2.20.1


--===============3370691445614611469==--