[50/54] samba: Refactor user management

Message ID 20201013160812.27754-50-michael.tremer@ipfire.org
State Accepted
Commit 36bcdbf7e4ba1c50f5a3bdc72fd0dc2f1dcf92bc
Headers
Series [01/54] samba: Migrate configuration from Samba 3.6 to 4.x |

Commit Message

Michael Tremer Oct. 13, 2020, 4:08 p.m. UTC
  Signed-off-by: Michael Tremer <michael.tremer@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(-)
  

Patch

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 = Domain Member
 WARNING: untranslated string: samba server role standalone = Standalone
 WARNING: untranslated string: show tls-auth key = Show tls-auth key
 WARNING: untranslated string: smb daemon = SMB Daemon
-WARNING: untranslated string: user management = unknown string
+WARNING: untranslated string: user management = User Management
 WARNING: untranslated string: winbind daemon = 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 name already exists = A
 WARNING: untranslated string: a connection with this common name already exists = A connection with this common name already exists.
 WARNING: untranslated string: a connection with this name already exists = A connection with this name already exists.
 WARNING: untranslated string: abort = abort
-WARNING: untranslated string: accounting = Accounting
 WARNING: untranslated string: acpitemp = ACPI - Temperatures
 WARNING: untranslated string: action = Action
 WARNING: untranslated string: activate = Activate
-WARNING: untranslated string: active = Active
 WARNING: untranslated string: add = Add
 WARNING: untranslated string: add a host = Add a host
 WARNING: untranslated string: add device = Add device
@@ -465,7 +463,6 @@  WARNING: untranslated string: clear playlist = Empty playlist
 WARNING: untranslated string: clenabled = Provide time to local network
 WARNING: untranslated string: click to disable = Enabled (click to disable)
 WARNING: untranslated string: click to enable = Disabled (click to enable)
-WARNING: untranslated string: client = Workstation Name
 WARNING: untranslated string: clock has not been synchronized = Clock has not been synchronized
 WARNING: untranslated string: clock last synchronized at = Clock was last synchronized at
 WARNING: untranslated string: common name = Common name
@@ -1045,7 +1042,6 @@  WARNING: untranslated string: ignore filter = Ignore filter
 WARNING: untranslated string: ike lifetime should be between 1 and 24 hours = IKE lifetime should be between 1 and 24 hours.
 WARNING: untranslated string: imei = IMEI
 WARNING: untranslated string: imsi = IMSI
-WARNING: untranslated string: inactive = inactive
 WARNING: untranslated string: include logfiles = Include logfiles
 WARNING: untranslated string: incoming = incoming
 WARNING: untranslated string: incoming compression in bytes per second = Incoming Compression
@@ -1323,7 +1319,6 @@  WARNING: untranslated string: not affected = Not Affected
 WARNING: untranslated string: not enough disk space = Not enough disk space
 WARNING: untranslated string: not present = <b>Not</b> present
 WARNING: untranslated string: not running = not running
-WARNING: untranslated string: not set = not set
 WARNING: untranslated string: not validating = Not validating
 WARNING: untranslated string: notice = Notice
 WARNING: untranslated string: november = November
@@ -1444,7 +1439,6 @@  WARNING: untranslated string: password = Password:
 WARNING: untranslated string: password not set = Password not set.
 WARNING: untranslated string: password too short = Password is too short.
 WARNING: untranslated string: passwords do not match = Passwords do not match.
-WARNING: untranslated string: pc add = Add workstation
 WARNING: untranslated string: percentage = Percentage
 WARNING: untranslated string: persistent = Persistent
 WARNING: untranslated string: pfs yes no = Perfect Forward Secrecy (PFS)
@@ -1571,7 +1565,6 @@  WARNING: untranslated string: server restart = You are not able to save any chan
 WARNING: untranslated string: service = Service
 WARNING: untranslated string: service name = Service name:
 WARNING: untranslated string: services = Services
-WARNING: untranslated string: set = set
 WARNING: untranslated string: set time now = Set time now
 WARNING: untranslated string: set time now help = To queue a synchronization event at any time (even while using a repeating schedule), press the <i>Set 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 = Settings
@@ -2036,7 +2029,7 @@  WARNING: untranslated string: used memory = Used Memory
 WARNING: untranslated string: used swap = Used Swap
 WARNING: untranslated string: user = User
 WARNING: untranslated string: user log = user log
-WARNING: untranslated string: user management = unknown string
+WARNING: untranslated string: user management = User Management
 WARNING: untranslated string: user proxy logs = user proxy log
 WARNING: untranslated string: username = Username:
 WARNING: untranslated string: username not set = 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 = Uplink Bit Rate
 WARNING: untranslated string: upload dh key = Upload Diffie-Hellman parameters
 WARNING: untranslated string: uptime load average = Load average
 WARNING: untranslated string: urlfilter redirect template = Redirect page template
-WARNING: untranslated string: user management = unknown string
+WARNING: untranslated string: user management = User Management
 WARNING: untranslated string: vendor = Vendor
 WARNING: untranslated string: visit us at = Visit us at
 WARNING: untranslated string: vpn broken = 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 = unknown string
 WARNING: untranslated string: samba server role member = Domain Member
 WARNING: untranslated string: samba server role standalone = Standalone
 WARNING: untranslated string: smb daemon = SMB Daemon
-WARNING: untranslated string: user management = unknown string
+WARNING: untranslated string: user management = User Management
 WARNING: untranslated string: winbind daemon = 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 = Uncheck all
 WARNING: untranslated string: unlimited = Unlimited
 WARNING: untranslated string: update ruleset = Update ruleset
 WARNING: untranslated string: uplink bit rate = Uplink Bit Rate
-WARNING: untranslated string: user management = unknown string
+WARNING: untranslated string: user management = User Management
 WARNING: untranslated string: vpn broken = Broken
 WARNING: untranslated string: vpn connecting = CONNECTING
 WARNING: untranslated string: vpn force mobike = 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 = Unlimited
 WARNING: untranslated string: update ruleset = Update ruleset
 WARNING: untranslated string: uplink bit rate = Uplink Bit Rate
 WARNING: untranslated string: upload dh key = Upload Diffie-Hellman parameters
-WARNING: untranslated string: user management = unknown string
+WARNING: untranslated string: user management = User Management
 WARNING: untranslated string: vendor = Vendor
 WARNING: untranslated string: vpn broken = Broken
 WARNING: untranslated string: vpn connecting = 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 = Uplink Bit Rate
 WARNING: untranslated string: upload dh key = Upload Diffie-Hellman parameters
 WARNING: untranslated string: uptime load average = Load average
 WARNING: untranslated string: urlfilter redirect template = Redirect page template
-WARNING: untranslated string: user management = unknown string
+WARNING: untranslated string: user management = User Management
 WARNING: untranslated string: vendor = Vendor
 WARNING: untranslated string: visit us at = Visit us at
 WARNING: untranslated string: vpn broken = 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 = Uplink Bit Rate
 WARNING: untranslated string: upload dh key = Upload Diffie-Hellman parameters
 WARNING: untranslated string: uptime load average = Load average
 WARNING: untranslated string: urlfilter redirect template = Redirect page template
-WARNING: untranslated string: user management = unknown string
+WARNING: untranslated string: user management = User Management
 WARNING: untranslated string: vendor = Vendor
 WARNING: untranslated string: visit us at = Visit us at
 WARNING: untranslated string: vpn broken = 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 = The system is offline.
 WARNING: untranslated string: taa zombieload2 = TSX Async Abort / ZombieLoad v2
 WARNING: untranslated string: transport mode does not support vti = VTI is not support in transport mode
 WARNING: untranslated string: update ruleset = Update ruleset
-WARNING: untranslated string: user management = unknown string
+WARNING: untranslated string: user management = User Management
 WARNING: untranslated string: vpn start action add = Wait for connection initiation
 WARNING: untranslated string: vpn statistics n2n = unknown string
 WARNING: untranslated string: vpn subjectaltname missing = SubjectAlternativeName 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 = '50';
 if ($sambasettings{'ACTION'} eq 'smbuserdisable'){system("/usr/local/bin/sambactrl smbuserdisable $sambasettings{'NAME'}");}
 if ($sambasettings{'ACTION'} eq 'smbuserenable'){system("/usr/local/bin/sambactrl smbuserenable $sambasettings{'NAME'}");}
 if ($sambasettings{'ACTION'} eq 'smbuseradd'){system("/usr/local/bin/sambactrl smbuseradd $sambasettings{'USERNAME'} $sambasettings{'PASSWORD'} $sambasettings{'GROUP'} $sambasettings{'SHELL'}");}
-if ($sambasettings{'ACTION'} eq 'smbpcadd'){system("/usr/local/bin/sambactrl smbpcadd $sambasettings{'PCNAME'} $sambasettings{'GROUP'} $sambasettings{'SHELL'}");}
 if ($sambasettings{'ACTION'} eq 'smbchangepw'){system("/usr/local/bin/sambactrl smbchangepw $sambasettings{'USERNAME'} $sambasettings{'PASSWORD'}");}
 if ($sambasettings{'ACTION'} eq 'smbrestart'){system("/usr/local/bin/sambactrl smbrestart");}
 if ($sambasettings{'ACTION'} eq 'smbstart'){system("/usr/local/bin/sambactrl smbstart");}
@@ -360,170 +359,187 @@  END
 
 if ($sambasettings{'ROLE'} eq 'standalone') {
 	&Header::openbox('100%', 'center', $Lang::tr{'user management'});
-	print <<END
-	<br />
-	<table class="tbl" width='100%' cellspacing='0'>
-	<tr><td colspan='6' align='left'></td></tr>
-	<tr><td bgcolor='$color{'color20'}' colspan='7' align='left'><b>$Lang::tr{'accounting'}</b></td></tr>
-	<tr><td align='left'><u>$Lang::tr{'username'}</u></td><td align='left'><u>$Lang::tr{'password'}</u></td>
+
+	print <<END;
+		<table class="tbl" width='100%' cellspacing='0'>
+			<tr>
+				<th align='left'>$Lang::tr{'user'}</th>
+				<th colspan='3' width='5%'></th>
+			</tr>
 END
-;
 
-	print "<td></td>";
-	print "<td align='left'><u>$Lang::tr{'status'}</u></td><td colspan='3' width='5%' align='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 read user file: $!";
-	@user = <FILE>;
+	my @users = <FILE>;
 	close(FILE);
 	system('/usr/local/bin/sambactrl locksmbpasswd');
-	
+
 	my $lines = 0;
-	
-	foreach $userentry (sort @user)
-		{
-		@userline = split( /\:/, $userentry );
-    if ($lines % 2) {print "<tr bgcolor='$color{'color20'}'>";} else {print "<tr bgcolor='$color{'color22'}'>";}
-		print "<td align='left'>$userline[0]</td><td align='left'>";
-		if ($userline[4] =~ /N/)
-			{
-			print "$Lang::tr{'not set'}</td><td align='left'>";
-			}
-		else
-			{
-			print "$Lang::tr{'set'}</td><td align='left'>";
-			}
+	foreach $userentry (sort @users) {
+		@userline = split( /\:/, $userentry);
 
-		print "</td><td align='left'>";
+		if ($lines % 2) {
+			print "<tr bgcolor='$color{'color20'}'>";
+		} else {
+			print "<tr bgcolor='$color{'color22'}'>";
+		}
 
-		if ($userline[4] =~ /D/)
-			{
-			print <<END
-			$Lang::tr{'inactive'}</td>
-			<td align='center'><form method='post' action='$ENV{'SCRIPT_NAME'}#$Lang::tr{'accounting'}'>
-					<input type='hidden' name='NAME' value='$userline[0]' />
-					<input type='hidden' name='ACTION' value='smbuserenable' />
-					<input type='image' alt='$Lang::tr{'activate'}' title='$Lang::tr{'activate'}' src='/images/off.gif' />
-			</form></td>
+		# Print username
+		print "<td align='left'>$userline[0]</td>";
+
+		if ($userline[4] =~ /D/) {
+			print <<END;
+				<td align='center'>
+					<form method='post' action='$ENV{'SCRIPT_NAME'}'>
+						<input type='hidden' name='NAME' value='$userline[0]' />
+						<input type='hidden' name='ACTION' value='smbuserenable' />
+						<input type='image' alt='$Lang::tr{'activate'}' title='$Lang::tr{'activate'}' src='/images/off.gif' />
+					</form>
+				</td>
 END
-;
-			}
-		else
-			{
-			print <<END
-			$Lang::tr{'active'}</td>
-			<td align='center'><form method='post' action='$ENV{'SCRIPT_NAME'}#$Lang::tr{'accounting'}'>
-					<input type='hidden' name='NAME' value='$userline[0]' />
-					<input type='hidden' name='ACTION' value='smbuserdisable' />
-					<input type='image' alt='$Lang::tr{'deactivate'}' title='$Lang::tr{'deactivate'}' src='/images/on.gif' />
-			</form></td>
+		} else {
+			print <<END;
+				<td align='center'>
+					<form method='post' action='$ENV{'SCRIPT_NAME'}'>
+						<input type='hidden' name='NAME' value='$userline[0]' />
+						<input type='hidden' name='ACTION' value='smbuserdisable' />
+						<input type='image' alt='$Lang::tr{'deactivate'}' title='$Lang::tr{'deactivate'}' src='/images/on.gif' />
+					</form>
+				</td>
 END
-;
-			}
+		}
 
-		if ($userline[0] =~ /\$/)
-			{
+		# Machine accounts can't be edited
+		if ($userline[0] =~ /\$/) {
 			print "<td></td>";
-			}
-		else
-			{
-			print <<END
-			<td align='center'><form method='post' action='$ENV{'SCRIPT_NAME'}#$Lang::tr{'accounting'}'>
-					<input type='hidden' name='NAME' value='$userline[0]' />
-					<input type='hidden' name='ACTION' value='userchangepw' />
-					<input type='image' alt='$Lang::tr{'edit'}' title='$Lang::tr{'edit'}' src='/images/edit.gif' />
-			</form></td>
+		} else {
+			print <<END;
+				<td align='center'>
+					<form method='post' action='$ENV{'SCRIPT_NAME'}'>
+						<input type='hidden' name='NAME' value='$userline[0]' />
+						<input type='hidden' name='ACTION' value='userchangepw' />
+						<input type='image' alt='$Lang::tr{'edit'}' title='$Lang::tr{'edit'}' src='/images/edit.gif' />
+					</form>
+				</td>
 END
-;
-			}
+		}
 
-			print <<END
-			<td><form method='post' action='$ENV{'SCRIPT_NAME'}#$Lang::tr{'accounting'}'>
+		print <<END;
+			<td align='center'>
+				<form method='post' action='$ENV{'SCRIPT_NAME'}'>
 					<input type='hidden' name='NAME' value='$userline[0]' />
 					<input type='hidden' name='ACTION' value='userdelete' />
 					<input type='image' alt='$Lang::tr{'delete'}' title='$Lang::tr{'delete'}' src='/images/user-option-remove.png' />
-			</form></td></tr>
+				</form>
+			</td>
+		</tr>
 END
-;
 		$lines++;
-		}
-	print <<END
-	</table>
-	<br />
-	<table width='10%' cellspacing='0'>
-	<tr><td align='center'><form method='post' action='$ENV{'SCRIPT_NAME'}#$Lang::tr{'accounting'}'>
-													<input type='hidden' name='ACTION' value='useradd' />
-													<input type='image' alt='$Lang::tr{'add user'}' title='$Lang::tr{'add user'}' src='/images/user-option-add.png' /></form></td>
-	</tr>
-	</table>
+	}
+
+	print <<END;
+		</table>
+
+		<br>
+
+		<table width='10%' cellspacing='0'>
+			<tr>
+				<td align='center'>
+					<form method='post' action='$ENV{'SCRIPT_NAME'}'>
+						<input type='hidden' name='ACTION' value='useradd'>
+						<input type='submit' value='$Lang::tr{'add user'}'>
+					</form>
+				</td>
+			</tr>
+		</table>
 END
-;
 
-	if ($sambasettings{'ACTION'} eq 'userchangepw')
-		{
-		my $username = "$sambasettings{'NAME'}";
+	if ($sambasettings{'ACTION'} eq 'userchangepw') {
+		my $username = $sambasettings{'NAME'};
 		my $password = 'samba';
+
 		print <<END
-		<br />
-		<form method='post' action='$ENV{'SCRIPT_NAME'}#$Lang::tr{'accounting'}'>
-		<table width='100%' cellspacing='0'>
-		<tr bgcolor='$color{'color20'}'><td colspan='2' align='left'><b>$Lang::tr{'change passwords'}</b></td></tr>
-		<tr><td align='left'>$Lang::tr{'username'}</td><td><input type='text' name='USERNAME' value='$username' size='30' readonly='readonly' /></td></tr>
-		<tr><td align='left'>$Lang::tr{'password'}</td><td><input type='password' name='PASSWORD' value='$password' size='30' /></td></tr>
-		<tr><td colspan='2' align='center'><input type='hidden' name='ACTION' value='smbchangepw' />
-			<input type='image' alt='$Lang::tr{'save'}' title='$Lang::tr{'save'}' src='/images/media-floppy.png' /></td></tr>
-		</table>
-		</form>
+			<br>
+			<form method='post' action='$ENV{'SCRIPT_NAME'}'>
+				<table width='100%' cellspacing='0'>
+					<tr bgcolor='$color{'color20'}'>
+						<td colspan='2' align='left'><b>$Lang::tr{'change passwords'}</b></td>
+					</tr>
+					<tr>
+						<td align='left'>$Lang::tr{'username'}</td>
+						<td>
+							<input type='text' name='USERNAME' value='$username' size='30' readonly='readonly' />
+						</td>
+					</tr>
+					<tr>
+						<td align='left'>$Lang::tr{'password'}</td>
+						<td>
+							<input type='password' name='PASSWORD' value='$password' size='30' />
+						</td>
+					</tr>
+					<tr>
+						<td colspan='2' align='center'>
+							<input type='hidden' name='ACTION' value='smbchangepw'>
+							<input type='submit' value='$Lang::tr{'save'}'>
+						</td>
+					</tr>
+				</table>
+			</form>
 END
-;
-		}
+	}
 
-	if ($sambasettings{'ACTION'} eq 'useradd')
-		{
+	if ($sambasettings{'ACTION'} eq 'useradd') {
 		my $username = "user";
 		my $password = "samba";
 		chomp $username;
 		$username=~s/\s//g;
 		chomp $password;
 		$password=~s/\s//g;
-		print <<END
-		<br />
-		<form method='post' action='$ENV{'SCRIPT_NAME'}#$Lang::tr{'accounting'}'>
-		<table width='100%' cellspacing='0'>
-		<tr bgcolor='$color{'color20'}'><td colspan='2' align='left'><b>$Lang::tr{'add user'}</b></td></tr>
-		<tr><td align='left'>$Lang::tr{'username'}</td><td><input type='text' name='USERNAME' value='$username' size='30' /></td></tr>
-		<tr><td align='left'>$Lang::tr{'password'}</td><td><input type='password' name='PASSWORD' value='$password' size='30' /></td></tr>
-		<tr><td align='left'>$Lang::tr{'unix group'}</td><td><input type='text' name='GROUP' value='sambauser' size='30' /></td></tr>
-		<tr><td align='left'>$Lang::tr{'unix shell'}</td><td><input type='text' name='SHELL' value='/bin/false' size='30' /></td></tr>
-		<tr><td colspan='2' align='center'><input type='hidden' name='ACTION' value='smbuseradd' />
-			<input type='image' alt='$Lang::tr{'save'}' title='$Lang::tr{'save'}' src='/images/media-floppy.png' /></td></tr>
-		</table>
-		</form>
-END
-;
-		}
 
-	if ($sambasettings{'ACTION'} eq 'pcadd')
-		{
-		my $pcname = "client\$";
-		chomp $pcname;
-		$pcname=~s/\s//g;
-		print <<END
-		<br />
-		<form method='post' action='$ENV{'SCRIPT_NAME'}#$Lang::tr{'accounting'}'>
-		<table width='100%' cellspacing='0'>
-		<tr bgcolor='$color{'color20'}'><td colspan='2' align='left'><b>$Lang::tr{'pc add'}</b></td></tr>
-		<tr><td align='left'>$Lang::tr{'client'}</td><td><input type='text' name='PCNAME' value='$pcname' size='30' /></td></tr>
-		<tr><td align='left'>$Lang::tr{'unix group'}</td><td><input type='text' name='GROUP' value='sambawks' size='30' /></td></tr>
-		<tr><td align='left'>$Lang::tr{'unix shell'}</td><td><input type='text' name='SHELL' value='/bin/false' size='30' /></td></tr>
-		<tr><td colspan='2' align='center'><input type='hidden' name='ACTION' value='smbpcadd' />
-			<input type='image' alt='$Lang::tr{'save'}' title='$Lang::tr{'save'}' src='/images/media-floppy.png' /></td></tr>
-		</table>
-		</form>
+		print <<END;
+			<br>
+
+			<form method='post' action='$ENV{'SCRIPT_NAME'}'>
+				<table width='100%' cellspacing='0'>
+					<tr bgcolor='$color{'color20'}'>
+						<td colspan='2' align='left'><b>$Lang::tr{'add user'}</b></td>
+					</tr>
+					<tr>
+						<td align='left'>$Lang::tr{'username'}</td>
+						<td>
+							<input type='text' name='USERNAME' value='$username' size='30' />
+						</td>
+					</tr>
+					<tr>
+						<td align='left'>$Lang::tr{'password'}</td>
+						<td>
+							<input type='password' name='PASSWORD' value='$password' size='30' />
+						</td>
+					</tr>
+					<tr>
+						<td align='left'>$Lang::tr{'unix group'}</td>
+						<td>
+							<input type='text' name='GROUP' value='sambauser' size='30' />
+						</td>
+					</tr>
+					<tr>
+						<td align='left'>$Lang::tr{'unix shell'}</td>
+						<td>
+							<input type='text' name='SHELL' value='/bin/false' size='30' />
+						</td>
+					</tr>
+					<tr>
+						<td colspan='2' align='center'>
+							<input type='hidden' name='ACTION' value='smbuseradd'>
+							<input type='submit' value='$Lang::tr{'save'}'>
+						</td>
+					</tr>
+				</table>
+			</form>
 END
-;
-		}
+	}
 
-&Header::closebox();
+	&Header::closebox();
 }
 
 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' => 'Used Swap',
 'user' => 'User',
 'user log' => 'user log',
+'user management' => 'User Management',
 'user proxy logs' => 'user proxy log',
 'username' => 'Username:',
 'username not set' => '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/smbpasswd -as %s >/dev/null", argv[3], argv[3], argv[2]);
 		safe_system(command);
 
-	} else if (strcmp(argv[1], "smbpcadd") == 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") == 0) {
 		snprintf(command, BUFFER_SIZE-1, "echo %s:%s | chpasswd", argv[2], argv[3]);
 		safe_system(command);