#!/usr/bin/ruby
#
# This scripts generates the windows netlogon .bat script
# on the demand for the given user
#

require __FILE__.sub(/[^\/]+\.rb/, 'utils.rb')
require __FILE__.sub(/[^\/]+\.rb/, 'config.rb')

user = ARGV[0]

log = Logger.new('/var/log/samba/netlogon.log', user)
log.log('Logged on')

# Work out groups of the user
groups = ['users']
expuser = user
out = `groups #{expuser}`
if $?.exitstatus > 0
  out = `groups #{expuser.capitalize}`
  if $?.exitstatus == 0
    expuser = expuser.capitalize
  end
end

if $?.exitstatus > 0
  log("Error running 'groups #{user}', defaulting to 'users'")
elsif out =~ Regexp.new(expuser+" : (.*)$")
  groups = $1.gsub(/ +/, ' ').split(' ')
  log.log("Groups : " + groups.join(","))
else
  log.log("Error parsing output of 'groups #{user}' : #{out}, default to 'users'")
end


# Generate logon script
s = Array.new

s.push "@echo off"
s.push ""
s.push "net use H: /home"

# Say that you want to mount the MyShare on drive 'N:' for members of the 'mygroup' group,
# you would do the following :
#
# if groups.include? 'mygroup'
#   s.push "net use N: \\\\MYSERVER\\MyShare"
# end
#


File.open(File.join($netlogon_share, user + ".bat"),  'w') do |f|
  f.write(s.join("\r\n")+"\r\n")
end


