#!/usr/bin/ruby -d

require 'etc'
require 'socket'
require 'timeout'

PORT = 12345

listener = TCPServer.new(PORT)
session = 0
optA=0
optL=0

begin
	loop do
	session = listener.accept
	optA = session.gets
	optL = session.gets
	msg = session.gets
	dir = msg.chomp()
	begin
	files = Dir::entries(dir)
	files.sort!
	files.each { |f|
	optA=optA.chomp()
	optL=optL.chomp()
	if optA == "1" && optL == "1"
		s = File::stat(dir + "/" + f) #get detailed info for files
		session.print Etc.getpwuid(s.uid).name, "\t", Etc.getgrgid(s.gid).name, "\t", "#{s.size}", "\t", "#{s.ctime}", "\t", f.to_s, "\n"
	end
	if optA == "0" && optL == "1" && f.match(/^[a-zA-Z0-9]/)
		s = File::stat(dir + "/" + f) #get detailed info for files
		session.print Etc.getpwuid(s.uid).name, "\t", Etc.getgrgid(s.gid).name, "\t", "#{s.size}", "\t", "#{s.ctime}", "\t", f.to_s, "\n"
	end
	if optA == "1" && optL == "0"
		session.print f.to_s, "\n"
	end
	if optA == "0" && optL == "0" && f.match(/^[a-zA-Z0-9]/)
		session.print f.to_s, "\n"
	end
	
	
	}
	rescue       	
		session.print "error: #{$!}"
		session.print "Directory bestaat niet\n"
		end
	session.close
	end

end