Sha256: 743e96cec86fd7eec18c7c4927b2a9686158d6b5e0f64381bc938cdbb4b75983

Contents?: true

Size: 1.92 KB

Versions: 5

Compression:

Stored size: 1.92 KB

Contents

#!/usr/bin/env ruby

require 'etc'

require 'active_samba_ldap'
require 'active_samba_ldap/command'

include ActiveSambaLdap::GetTextSupport

argv, opts, options = ActiveSambaLdap::Command.parse_options do |opts, options|
  options.update_samba_password = true
  options.update_unix_password = true

  opts.banner += " [USER_NAME]"

  opts.on("-s", "--[no-]samba-password",
          _("update samba password"),
          "(#{options.update_samba_password})") do |bool|
    options.update_samba_password = bool
  end

  opts.on("-u", "--[no-]unix-password",
          _("update UNIX password"),
          "(#{options.update_unix_password})") do |bool|
    options.update_unix_password = bool
  end
end

name = nil
case argv.size
when 0
  name = Etc.getpwuid(Process.uid).name
when 1
  name = argv.first
else
  $stderr.puts opts
  exit 1
end

if !options.update_samba_password and !options.update_unix_password
  $stderr.puts(_("do nothing."))
  exit
end

ActiveSambaLdap::Base.setup_connection("update")

class User < ActiveSambaLdap::User
  ldap_mapping
end

unless User.exists?(name)
  $stderr.puts(_("user doesn't exist: %s") % name)
  exit 1
end
user = User.find(name)

unless Process.uid.zero?
  prompt = _("Enter your current password: ")
  old_password = ActiveSambaLdap::Command.read_password(prompt)
  begin
    user.bind(old_password)
  rescue ActiveLdap::AuthenticationError
    $stderr.puts(_("password doesn't match."))
    exit 1
  end
end

password = ActiveSambaLdap::Command.read_password(_("New password: "))
password2 = ActiveSambaLdap::Command.read_password(_("Retype new password: "))

unless password == password2
  $stderr.puts(_("New passwords don't match."))
  exit 1
end

changed = false

if options.update_unix_password
  user.change_password(password)
  changed = true
end

if options.update_samba_password
  user.change_samba_password(password)
  changed = true
end

user.save! if changed

ActiveSambaLdap::Base.clear_active_connections!

Version data entries

5 entries across 5 versions & 2 rubygems

Version Path
activesambaldap-0.1.0 bin/asl-passwd
activesambaldap-0.0.9 bin/asl-passwd
activesambaldap-0.0.8 bin/asl-passwd
ActiveSambaLdap-0.0.7 bin/asl-passwd
activesambaldap-0.0.7 bin/asl-passwd