Sha256: 18c9d37eb0262262e647b7ab5b71ea5a84be37e00688ed00cf12a35b91d99044
Contents?: true
Size: 1.25 KB
Versions: 2
Compression:
Stored size: 1.25 KB
Contents
require 'open3' require 'shellwords' module PostfixAdmin class Doveadm # doveadm-pw: https://doc.dovecot.org/3.0/man/doveadm-pw.1/ CMD_DOVEADM_PW = "doveadm pw" # List all supported password schemes def self.schemes result = `#{CMD_DOVEADM_PW} -l` result.split end # Generate a password hash using `doveadm pw` command def self.password(password, scheme, rounds: nil, user_name: nil, prefix: true) escaped_password = Shellwords.escape(password) escaped_scheme = Shellwords.escape(scheme) cmd = "#{CMD_DOVEADM_PW} -s #{escaped_scheme} -p #{escaped_password}" # DIGEST-MD5 requires -u option (user name) if scheme == "DIGEST-MD5" escaped_user_name = Shellwords.escape(user_name) cmd << " -u #{escaped_user_name}" end if rounds escaped_rounds = Shellwords.escape(rounds.to_s) cmd << " -r #{rounds}" end output, error, status = Open3.capture3(cmd) if status.success? res = output.chomp if prefix res else # Remove the prefix res.gsub("{#{escaped_scheme}}", "") end else raise Error, "#{CMD_DOVEADM_PW}: #{error}" end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
postfix_admin-0.3.2 | lib/postfix_admin/doveadm.rb |
postfix_admin-0.3.1 | lib/postfix_admin/doveadm.rb |