Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- require "pam"
- class PamWrapper
- def initialize
- @login = nil
- @password = nil
- end
- def conv_callback
- password = @password ? @password : nil
- [PAM::Response.new(password, 0)]
- end
- def set_pairs(user=nil, password=nil)
- @user = user
- @password = password
- self
- end
- def auth
- user = @user ? @user : nil
- conv = proc{conv_callback}
- conv_data = ""
- PAM.start("system-auth", user, conv, conv_data){|pam|
- begin
- pam.authenticate(0)
- rescue PAM::PAM_USER_UNKNOWN
- print("unknown user: #{pam.get_item(PAM::PAM_USER)}")
- raise pam.status.inspect
- rescue PAM::PAM_AUTH_ERR
- print("authentication error: #{pam.get_item(PAM::PAM_USER)}\n")
- print("error code = #{pam.status}\n")
- raise pam.status.inspect
- rescue PAM::PAMError
- print("error code = #{pam.status}\n")
- raise pam.status.inspect
- end
- print("\n",
- "authenticated!\n")
- }
- end
- end
Add Comment
Please, Sign In to add comment