From 726cfac80d1faf6dfb703098b7da924bf83e3b61 Mon Sep 17 00:00:00 2001
From: ftimme <ft@falkotimme.com>
Date: Fri, 18 May 2012 09:57:23 +0000
Subject: [PATCH] - Added "Generate Password" function to all modules. - Random
 password length: by default, generated passwords will have a length between
 10 and 15 characters (instead of a fixed length of 10 characters).

---
 interface/web/admin/lib/lang/de_remote_user.lng       |  1 +
 interface/web/admin/lib/lang/de_users.lng             |  1 +
 interface/web/admin/lib/lang/en_remote_user.lng       |  1 +
 interface/web/admin/lib/lang/en_users.lng             |  1 +
 interface/web/admin/templates/remote_user_edit.htm    |  2 +-
 interface/web/admin/templates/users_user_edit.htm     |  2 +-
 interface/web/client/lib/lang/de_client.lng           |  1 +
 interface/web/client/lib/lang/de_reseller.lng         |  1 +
 interface/web/client/lib/lang/en_client.lng           |  1 +
 interface/web/client/lib/lang/en_reseller.lng         |  1 +
 .../web/client/templates/client_edit_address.htm      |  2 +-
 .../web/client/templates/reseller_edit_address.htm    |  2 +-
 interface/web/js/scrigo.js.php                        | 11 +++++++++--
 interface/web/mail/lib/lang/de_mail_mailinglist.lng   |  1 +
 interface/web/mail/lib/lang/de_mail_user.lng          |  1 +
 interface/web/mail/lib/lang/en_mail_mailinglist.lng   |  1 +
 interface/web/mail/lib/lang/en_mail_user.lng          |  1 +
 .../web/mail/templates/mail_mailinglist_edit.htm      |  2 +-
 .../web/mail/templates/mail_user_mailbox_edit.htm     |  2 +-
 interface/web/tools/lib/lang/de_usersettings.lng      |  1 +
 interface/web/tools/lib/lang/en_usersettings.lng      |  1 +
 interface/web/tools/templates/user_settings.htm       |  2 +-
 interface/web/vm/lib/lang/de_openvz_vm.lng            |  1 +
 interface/web/vm/lib/lang/en_openvz_vm.lng            |  1 +
 interface/web/vm/templates/openvz_vm_edit.htm         |  2 +-
 25 files changed, 33 insertions(+), 10 deletions(-)

diff --git a/interface/web/admin/lib/lang/de_remote_user.lng b/interface/web/admin/lib/lang/de_remote_user.lng
index cdebf695d6..3bf7e62197 100644
--- a/interface/web/admin/lib/lang/de_remote_user.lng
+++ b/interface/web/admin/lib/lang/de_remote_user.lng
@@ -40,4 +40,5 @@ $wb['DNS rp functions'] = 'DNS rp Funktionen';
 $wb['DNS srv functions'] = 'DNS srv Funktionen';
 $wb['DNS txt functions'] = 'DNS txt Funktionen';
 $wb['Mail mailing list functions'] = 'Mail mailinglist functions';
+$wb['generate_password_txt'] = 'Passwort erzeugen';
 ?>
diff --git a/interface/web/admin/lib/lang/de_users.lng b/interface/web/admin/lib/lang/de_users.lng
index 512b764e62..6145d1f6a8 100644
--- a/interface/web/admin/lib/lang/de_users.lng
+++ b/interface/web/admin/lib/lang/de_users.lng
@@ -25,4 +25,5 @@ $wb['username_empty'] = 'Der Benutzername ist leer';
 $wb['username_unique'] = 'Es gibt bereits einen Benutzer mit diesem Namen';
 $wb['startmodule_err'] = 'Start Modul ist nicht innerhalb der Module.';
 $wb['password_strength_txt'] = 'Passwortkomplexität';
+$wb['generate_password_txt'] = 'Passwort erzeugen';
 ?>
diff --git a/interface/web/admin/lib/lang/en_remote_user.lng b/interface/web/admin/lib/lang/en_remote_user.lng
index 3a47fbfca3..6883c11deb 100644
--- a/interface/web/admin/lib/lang/en_remote_user.lng
+++ b/interface/web/admin/lib/lang/en_remote_user.lng
@@ -40,4 +40,5 @@ $wb['DNS ptr functions'] = 'DNS ptr functions';
 $wb['DNS rp functions'] = 'DNS rp functions';
 $wb['DNS srv functions'] = 'DNS srv functions';
 $wb['DNS txt functions'] = 'DNS txt functions';
+$wb['generate_password_txt'] = 'Generate Password';
 ?>
diff --git a/interface/web/admin/lib/lang/en_users.lng b/interface/web/admin/lib/lang/en_users.lng
index df00438811..573f18a67b 100644
--- a/interface/web/admin/lib/lang/en_users.lng
+++ b/interface/web/admin/lib/lang/en_users.lng
@@ -25,4 +25,5 @@ $wb["fax_txt"] = 'Fax';
 $wb["groups_txt"] = 'Groups';
 $wb["default_group_txt"] = 'Default Group';
 $wb["startmodule_err"] = 'Start module is not within modules.';
+$wb['generate_password_txt'] = 'Generate Password';
 ?>
diff --git a/interface/web/admin/templates/remote_user_edit.htm b/interface/web/admin/templates/remote_user_edit.htm
index 36f11e1d0f..945a297148 100644
--- a/interface/web/admin/templates/remote_user_edit.htm
+++ b/interface/web/admin/templates/remote_user_edit.htm
@@ -13,7 +13,7 @@
 
       <div class="ctrlHolder">
       	<label for="remote_password">{tmpl_var name='password_txt'}</label>
-        <input name="remote_password" id="password" value="{tmpl_var name='remote_password'}" size="30" maxlength="255" type="password" class="textInput" onkeyup="pass_check(this.value)" />
+        <input name="remote_password" id="password" value="{tmpl_var name='remote_password'}" size="30" maxlength="255" type="password" class="textInput" onkeyup="pass_check(this.value)" />&nbsp;<a href="javascript:void(0);" onClick="generatePassword('password');">{tmpl_var name='generate_password_txt'}</a>
 			</div>
       <div class="ctrlHolder">
 				<p class="label">{tmpl_var name='password_strength_txt'}</p>
diff --git a/interface/web/admin/templates/users_user_edit.htm b/interface/web/admin/templates/users_user_edit.htm
index f16e9ebf35..40622ef255 100644
--- a/interface/web/admin/templates/users_user_edit.htm
+++ b/interface/web/admin/templates/users_user_edit.htm
@@ -11,7 +11,7 @@
 			</div>
       <div class="ctrlHolder">
       	<label for="passwort">{tmpl_var name='passwort_txt'}</label>
-        <input name="passwort" id="passwort" value="{tmpl_var name='passwort'}" size="15" maxlength="100" type="password" class="textInput"  onkeyup="pass_check(this.value)"/>
+        <input name="passwort" id="passwort" value="{tmpl_var name='passwort'}" size="15" maxlength="100" type="password" class="textInput"  onkeyup="pass_check(this.value)"/>&nbsp;<a href="javascript:void(0);" onClick="generatePassword('passwort');">{tmpl_var name='generate_password_txt'}</a>
 			</div>
       <div class="ctrlHolder">
 				<p class="label">{tmpl_var name='password_strength_txt'}</p>
diff --git a/interface/web/client/lib/lang/de_client.lng b/interface/web/client/lib/lang/de_client.lng
index 46c41a8c79..88adbff4b8 100644
--- a/interface/web/client/lib/lang/de_client.lng
+++ b/interface/web/client/lib/lang/de_client.lng
@@ -118,4 +118,5 @@ $wb["database_limits_txt"] = 'Datenbank-Limits';
 $wb["cron_job_limits_txt"] = 'Cron Job-Limits';
 $wb["dns_limits_txt"] = 'DNS-Limits';
 $wb["virtualization_limits_txt"] = 'Virtualisierungs-Limits';
+$wb['generate_password_txt'] = 'Passwort erzeugen';
 ?>
diff --git a/interface/web/client/lib/lang/de_reseller.lng b/interface/web/client/lib/lang/de_reseller.lng
index 0664e88bf6..e938cde186 100644
--- a/interface/web/client/lib/lang/de_reseller.lng
+++ b/interface/web/client/lib/lang/de_reseller.lng
@@ -113,4 +113,5 @@ $wb["database_limits_txt"] = 'Datenbank-Limits';
 $wb["cron_job_limits_txt"] = 'Cron Job-Limits';
 $wb["dns_limits_txt"] = 'DNS-Limits';
 $wb["virtualization_limits_txt"] = 'Virtualisierungs-Limits';
+$wb['generate_password_txt'] = 'Passwort erzeugen';
 ?>
diff --git a/interface/web/client/lib/lang/en_client.lng b/interface/web/client/lib/lang/en_client.lng
index 3a9f30e31d..d8b3c2c88c 100644
--- a/interface/web/client/lib/lang/en_client.lng
+++ b/interface/web/client/lib/lang/en_client.lng
@@ -121,4 +121,5 @@ $wb["database_limits_txt"] = 'Database Limits';
 $wb["cron_job_limits_txt"] = 'Cron Job Limits';
 $wb["dns_limits_txt"] = 'DNS Limits';
 $wb["virtualization_limits_txt"] = 'Virtualization Limits';
+$wb['generate_password_txt'] = 'Generate Password';
 ?>
diff --git a/interface/web/client/lib/lang/en_reseller.lng b/interface/web/client/lib/lang/en_reseller.lng
index 4863a4eb09..ba2e7bbdd0 100644
--- a/interface/web/client/lib/lang/en_reseller.lng
+++ b/interface/web/client/lib/lang/en_reseller.lng
@@ -115,4 +115,5 @@ $wb["database_limits_txt"] = 'Database Limits';
 $wb["cron_job_limits_txt"] = 'Cron Job Limits';
 $wb["dns_limits_txt"] = 'DNS Limits';
 $wb["virtualization_limits_txt"] = 'Virtualization Limits';
+$wb['generate_password_txt'] = 'Generate Password';
 ?>
diff --git a/interface/web/client/templates/client_edit_address.htm b/interface/web/client/templates/client_edit_address.htm
index ec752f84fe..5799d863da 100644
--- a/interface/web/client/templates/client_edit_address.htm
+++ b/interface/web/client/templates/client_edit_address.htm
@@ -23,7 +23,7 @@
 			</div>
       <div class="ctrlHolder">
       	<label for="password">{tmpl_var name='password_txt'}</label>
-        <input name="password" id="password" value="{tmpl_var name='password'}" size="30" maxlength="255" type="password" class="textInput" onkeyup="pass_check(this.value)" />
+        <input name="password" id="password" value="{tmpl_var name='password'}" size="30" maxlength="255" type="password" class="textInput" onkeyup="pass_check(this.value)" />&nbsp;<a href="javascript:void(0);" onClick="generatePassword('password');">{tmpl_var name='generate_password_txt'}</a>
 			</div>
       <div class="ctrlHolder">
 				<p class="label">{tmpl_var name='password_strength_txt'}</p>
diff --git a/interface/web/client/templates/reseller_edit_address.htm b/interface/web/client/templates/reseller_edit_address.htm
index 08c79998f6..0458aa8d30 100644
--- a/interface/web/client/templates/reseller_edit_address.htm
+++ b/interface/web/client/templates/reseller_edit_address.htm
@@ -23,7 +23,7 @@
 			</div>
       <div class="ctrlHolder">
       	<label for="password">{tmpl_var name='password_txt'}</label>
-        <input name="password" id="password" value="{tmpl_var name='password'}" size="30" maxlength="255" type="password" class="textInput" onkeyup="pass_check(this.value)" />
+        <input name="password" id="password" value="{tmpl_var name='password'}" size="30" maxlength="255" type="password" class="textInput" onkeyup="pass_check(this.value)" />&nbsp;<a href="javascript:void(0);" onClick="generatePassword('password');">{tmpl_var name='generate_password_txt'}</a>
 			</div>
       <div class="ctrlHolder">
 				<p class="label">{tmpl_var name='password_strength_txt'}</p>
diff --git a/interface/web/js/scrigo.js.php b/interface/web/js/scrigo.js.php
index 6fa893b4bc..cc6a80f9d6 100644
--- a/interface/web/js/scrigo.js.php
+++ b/interface/web/js/scrigo.js.php
@@ -526,11 +526,13 @@ function getInternetExplorerVersion() {
     return rv;
 }
 
-function password(length, special) {
+function password(minLength, special){
 	var iteration = 0;
 	var password = "";
 	var randomNumber;
-	length = length || 10;
+	minLength = minLength || 10;
+	var maxLength = minLength + 5;
+	var length = getRandomInt(minLength, maxLength);
 	if(special == undefined){
 		var special = false;
 	}
@@ -555,3 +557,8 @@ function generatePassword(passwordFieldID){
 	oldPWField.remove();
 	newPWField.attr('id', passwordFieldID).val(password(10, true)).trigger('keyup');
 }
+
+function getRandomInt(min, max){
+    return Math.floor(Math.random() * (max - min + 1)) + min;
+}
+
diff --git a/interface/web/mail/lib/lang/de_mail_mailinglist.lng b/interface/web/mail/lib/lang/de_mail_mailinglist.lng
index d9c3059f1e..b9dbb7def0 100644
--- a/interface/web/mail/lib/lang/de_mail_mailinglist.lng
+++ b/interface/web/mail/lib/lang/de_mail_mailinglist.lng
@@ -12,4 +12,5 @@ $wb['listname_txt'] = 'Listname';
 $wb['client_txt'] = 'Client';
 $wb['email_txt'] = 'Email';
 $wb['password_txt'] = 'Password';
+$wb['generate_password_txt'] = 'Passwort erzeugen';
 ?>
diff --git a/interface/web/mail/lib/lang/de_mail_user.lng b/interface/web/mail/lib/lang/de_mail_user.lng
index 1d2fd3b16e..a85637bdb8 100644
--- a/interface/web/mail/lib/lang/de_mail_user.lng
+++ b/interface/web/mail/lib/lang/de_mail_user.lng
@@ -41,4 +41,5 @@ $wb['login_txt'] = 'Login';
 $wb['error_login_email_txt'] = 'Dieser Loginname ist nicht zulässig. Bitte verwenden Sie einen anderen Loginnamen oder die E-Mail-Adresse als Login.';
 $wb['domain_txt'] = 'Domain';
 $wb['now_txt'] = 'Now';
+$wb['generate_password_txt'] = 'Passwort erzeugen';
 ?>
diff --git a/interface/web/mail/lib/lang/en_mail_mailinglist.lng b/interface/web/mail/lib/lang/en_mail_mailinglist.lng
index f7ada3e384..57c6fbb1b5 100644
--- a/interface/web/mail/lib/lang/en_mail_mailinglist.lng
+++ b/interface/web/mail/lib/lang/en_mail_mailinglist.lng
@@ -12,4 +12,5 @@ $wb["listname_txt"] = 'Listname';
 $wb["client_txt"] = 'Client';
 $wb["email_txt"] = 'Email';
 $wb["password_txt"] = 'Password';
+$wb['generate_password_txt'] = 'Generate Password';
 ?>
\ No newline at end of file
diff --git a/interface/web/mail/lib/lang/en_mail_user.lng b/interface/web/mail/lib/lang/en_mail_user.lng
index 65c810f7a2..b154973435 100644
--- a/interface/web/mail/lib/lang/en_mail_user.lng
+++ b/interface/web/mail/lib/lang/en_mail_user.lng
@@ -43,4 +43,5 @@ $wb['login_error_unique'] = 'Login is already taken.';
 $wb['login_error_regex'] = 'Valid characters are A-Z, a-z, 0-9, ., _ and -.';
 $wb['login_txt'] = 'Login';
 $wb['error_login_email_txt'] = 'This login is not allowed. Please enter a different login or use the mail address as login.';
+$wb['generate_password_txt'] = 'Generate Password';
 ?>
diff --git a/interface/web/mail/templates/mail_mailinglist_edit.htm b/interface/web/mail/templates/mail_mailinglist_edit.htm
index bbf993df92..5072240238 100644
--- a/interface/web/mail/templates/mail_mailinglist_edit.htm
+++ b/interface/web/mail/templates/mail_mailinglist_edit.htm
@@ -60,7 +60,7 @@
 		</tmpl_if>
 		<div class="ctrlHolder">
 			<label for="password">{tmpl_var name='password_txt'}</label>
-			<input name="password" id="password" value="{tmpl_var name='password'}" size="30" maxlength="255" type="password" class="textInput" onkeyup="pass_check(this.value)" />
+			<input name="password" id="password" value="{tmpl_var name='password'}" size="30" maxlength="255" type="password" class="textInput" onkeyup="pass_check(this.value)" />&nbsp;<a href="javascript:void(0);" onClick="generatePassword('password');">{tmpl_var name='generate_password_txt'}</a>
 		</div>
 		<div class="ctrlHolder">
 				<p class="label">{tmpl_var name='password_strength_txt'}</p>
diff --git a/interface/web/mail/templates/mail_user_mailbox_edit.htm b/interface/web/mail/templates/mail_user_mailbox_edit.htm
index ff3d0867b9..9a89f1e7fd 100644
--- a/interface/web/mail/templates/mail_user_mailbox_edit.htm
+++ b/interface/web/mail/templates/mail_user_mailbox_edit.htm
@@ -23,7 +23,7 @@
       </div></tmpl_if>
       <div class="ctrlHolder">
       	<label for="password">{tmpl_var name='password_txt'}</label>
-        <input name="password" id="password" value="{tmpl_var name='password'}" size="30" maxlength="255" type="password" class="textInput" onkeyup="pass_check(this.value)" />
+        <input name="password" id="password" value="{tmpl_var name='password'}" size="30" maxlength="255" type="password" class="textInput" onkeyup="pass_check(this.value)" />&nbsp;<a href="javascript:void(0);" onClick="generatePassword('password');">{tmpl_var name='generate_password_txt'}</a>
 			</div>
       <div class="ctrlHolder">
 				<p class="label">{tmpl_var name='password_strength_txt'}</p>
diff --git a/interface/web/tools/lib/lang/de_usersettings.lng b/interface/web/tools/lib/lang/de_usersettings.lng
index d52f8e8c70..1b09f36758 100644
--- a/interface/web/tools/lib/lang/de_usersettings.lng
+++ b/interface/web/tools/lib/lang/de_usersettings.lng
@@ -5,4 +5,5 @@ $wb['password_mismatch'] = 'Die Passw&ouml;rter stimmen nicht &uuml;berein.';
 $wb['password_strength_txt'] = 'Passwortkomplexit&auml;t';
 $wb['Form to edit the user password and language.'] = 'Formular, um das Benutzerpasswort und die Sprache zu bearbeiten.';
 $wb['Settings'] = 'Einstellungen';
+$wb['generate_password_txt'] = 'Passwort erzeugen';
 ?>
diff --git a/interface/web/tools/lib/lang/en_usersettings.lng b/interface/web/tools/lib/lang/en_usersettings.lng
index bfe487113b..f864944fdf 100644
--- a/interface/web/tools/lib/lang/en_usersettings.lng
+++ b/interface/web/tools/lib/lang/en_usersettings.lng
@@ -5,4 +5,5 @@ $wb["language_txt"] = 'Language';
 $wb["password_mismatch"] = 'The password in the second password field does not match the first password.';
 $wb["Form to edit the user password and language."] = 'Form to edit the user password and language.';
 $wb["Settings"] = 'Settings';
+$wb['generate_password_txt'] = 'Generate Password';
 ?>
diff --git a/interface/web/tools/templates/user_settings.htm b/interface/web/tools/templates/user_settings.htm
index 969c21b2ba..e7c0144793 100644
--- a/interface/web/tools/templates/user_settings.htm
+++ b/interface/web/tools/templates/user_settings.htm
@@ -7,7 +7,7 @@
     <fieldset class="inlineLabels">
       <div class="ctrlHolder">
       	<label for="passwort">{tmpl_var name='passwort_txt'}</label>
-        <input name="passwort" id="passwort" value="{tmpl_var name='passwort'}" size="15" maxlength="100" type="password" class="textInput" onkeyup="pass_check(this.value)"/>
+        <input name="passwort" id="passwort" value="{tmpl_var name='passwort'}" size="15" maxlength="100" type="password" class="textInput" onkeyup="pass_check(this.value)"/>&nbsp;<a href="javascript:void(0);" onClick="generatePassword('passwort');">{tmpl_var name='generate_password_txt'}</a>
 			</div>
       <div class="ctrlHolder">
 				<p class="label">{tmpl_var name='password_strength_txt'}</p>
diff --git a/interface/web/vm/lib/lang/de_openvz_vm.lng b/interface/web/vm/lib/lang/de_openvz_vm.lng
index 5880ce4cf3..ee70a9834b 100644
--- a/interface/web/vm/lib/lang/de_openvz_vm.lng
+++ b/interface/web/vm/lib/lang/de_openvz_vm.lng
@@ -37,4 +37,5 @@ $wb['io_priority_error_empty'] = 'I/O Priorit&auml;t ist leer.';
 $wb['template_nameserver_error_empty'] = 'Nameserver ist leer.';
 $wb['Virtual server'] = 'Virtueller Server';
 $wb['Advanced'] = 'Erweitert';
+$wb['generate_password_txt'] = 'Passwort erzeugen';
 ?>
diff --git a/interface/web/vm/lib/lang/en_openvz_vm.lng b/interface/web/vm/lib/lang/en_openvz_vm.lng
index ddd9903ced..1594fb4d4f 100644
--- a/interface/web/vm/lib/lang/en_openvz_vm.lng
+++ b/interface/web/vm/lib/lang/en_openvz_vm.lng
@@ -37,4 +37,5 @@ $wb["io_priority_error_empty"] = 'I/O priority is empty.';
 $wb["template_nameserver_error_empty"] = 'Nameserver(s) is empty.';
 $wb["Virtual server"] = 'Virtual server';
 $wb["Advanced"] = 'Advanced';
+$wb['generate_password_txt'] = 'Generate Password';
 ?>
\ No newline at end of file
diff --git a/interface/web/vm/templates/openvz_vm_edit.htm b/interface/web/vm/templates/openvz_vm_edit.htm
index c6615709c5..671fd7000a 100644
--- a/interface/web/vm/templates/openvz_vm_edit.htm
+++ b/interface/web/vm/templates/openvz_vm_edit.htm
@@ -69,7 +69,7 @@
 			</div>
       <div class="ctrlHolder">
       	<label for="vm_password">{tmpl_var name='vm_password_txt'}</label>
-        <input name="vm_password" id="vm_password" value="{tmpl_var name='vm_password'}" size="30" maxlength="255" type="text" class="textInput" />
+        <input name="vm_password" id="vm_password" value="{tmpl_var name='vm_password'}" size="30" maxlength="255" type="text" class="textInput" />&nbsp;<a href="javascript:void(0);" onClick="generatePassword('vm_password');">{tmpl_var name='generate_password_txt'}</a>
 			</div>
       <div class="ctrlHolder">
 				<p class="label">{tmpl_var name='start_boot_txt'}</p>
-- 
GitLab