#!/usr/bin/env ruby require 'rubygems' require 'digest/sha1' require 'mysql' require 'yaml' # Available ENV variables: # AUTHD_ACCOUNT # AUTHD_PASSWORD # AUTHD_LOCAL_IP # AUTHD_LOCAL_PORT # AUTHD_REMOTE_IP UID = 123 # replace with your user id GID = 123 # replace with your group id RAILS_ROOT = File.expand_path(File.join(File.dirname(__FILE__), '..')) config = YAML.load(IO.read("#{RAILS_ROOT}/config/database.yml"))['production'] user = {} begin dbh = Mysql.real_connect(config['host'], config['username'], config['password'], config['database']) res = dbh.query("SELECT * FROM users WHERE state = 'active' AND login = '#{ENV['AUTHD_ACCOUNT'].gsub(/'/, "''")}' LIMIT 1") user = res.fetch_hash res.free rescue Mysql::Error => e ensure dbh.close if dbh end if user['crypted_password'].nil? # no active user with given login puts "auth_ok:0" else # validate given password hashed_pw = Digest::SHA1.hexdigest("--#{user['salt']}--#{ENV['AUTHD_PASSWORD']}--") if user['crypted_password'] != hashed_pw puts "auth_ok:0" else puts "auth_ok:1" puts "uid:#{UID}" puts "gid:#{GIT}" puts "dir:#{RAILS_ROOT}/private/ftp/#{user['login']}" end end puts "end"