summary refs log tree commit diff
path: root/scripts/hash_password
diff options
context:
space:
mode:
authorRichard van der Hoff <github@rvanderhoff.org.uk>2016-03-16 10:47:33 +0000
committerRichard van der Hoff <github@rvanderhoff.org.uk>2016-03-16 10:47:33 +0000
commit467c1599c97a104210844963562abab234843c77 (patch)
treec23c5064c4ffe2d5690923b4c799c5482c459e1b /scripts/hash_password
parentMerge pull request #646 from matrix-org/erikj/reject_invite_federation (diff)
parentClarify that we do have reset functionality via the IS (diff)
downloadsynapse-467c1599c97a104210844963562abab234843c77.tar.xz
Merge pull request #648 from matrix-org/rav/password_reset
Password reset docs and script
Diffstat (limited to 'scripts/hash_password')
-rwxr-xr-xscripts/hash_password39
1 files changed, 39 insertions, 0 deletions
diff --git a/scripts/hash_password b/scripts/hash_password
new file mode 100755
index 0000000000..e784600989
--- /dev/null
+++ b/scripts/hash_password
@@ -0,0 +1,39 @@
+#!/usr/bin/env python
+
+import argparse
+import bcrypt
+import getpass
+
+bcrypt_rounds=12
+
+def prompt_for_pass():
+    password = getpass.getpass("Password: ")
+
+    if not password:
+        raise Exception("Password cannot be blank.")
+
+    confirm_password = getpass.getpass("Confirm password: ")
+
+    if password != confirm_password:
+        raise Exception("Passwords do not match.")
+
+    return password
+
+if __name__ == "__main__":
+    parser = argparse.ArgumentParser(
+        description="Calculate the hash of a new password, so that passwords"
+                    " can be reset")
+    parser.add_argument(
+        "-p", "--password",
+        default=None,
+        help="New password for user. Will prompt if omitted.",
+    )
+
+    args = parser.parse_args()
+    password = args.password
+
+    if not password:
+        password = prompt_for_pass()
+
+    print bcrypt.hashpw(password, bcrypt.gensalt(bcrypt_rounds))
+