require 'rubygems'
require 'openssl'
$key = "A75435F0B240012A9489000C2952E41F"
class String
def encrypt(key=$key)
e = OpenSSL::Cipher::Cipher.new 'DES-EDE3-CBC'
e.encrypt key
s = e.update self
s << e.final
s = s.unpack('H*')[0].upcase
s
end # def encrypt(key=$key)
def decrypt(key=$key)
e = OpenSSL::Cipher::Cipher.new 'DES-EDE3-CBC'
e.decrypt key
s = self.lines.to_a.pack("H*").unpack("C*").pack("c*")
s = e.update s
s << e.final
end #def decrypt(key=$key)
end #class String
class SaveProfile
def saveFile(server,port,user,pass)
@profile_file_name = Dir.home.to_s + "/.rmldonkey/profile"
if File.exists?(@profile_file_name)
file_aux = String.new
file_temp = String.new
File.open(@profile_file_name) do |f|
f.each do |line|
file_aux += line.to_s
end #f.each do |line|
end #File.open(@profile_file_name) do |f|
server_to_s_encrypt = server.to_s.encrypt("password") + "\n"
port_to_s_encrypt = port.to_s.encrypt("password") + "\n"
if user != " "
user_to_s_encrypt = user.to_s.encrypt("password") + "\n"
else
user_to_s_encrypt = "\n"
end # if user != nil
if pass != " "
pass_to_s_encrypt = pass.to_s.encrypt("password") + "\n"
else
pass_to_s_encrypt = "\n"
end # if pass != nil
file_temp = server_to_s_encrypt + port_to_s_encrypt + user_to_s_encrypt + pass_to_s_encrypt
if file_aux != file_temp
self.makeSave(server,port,user,pass)
else
#do nothing or debug purpose display files
#puts "file_aux" + "\n" + file_aux
#puts "file_temp" + "\n" + file_temp
end #if file_aux != file_temp
else
if File.exists?(Dir.home.to_s + "/.rmldonkey")
if File.directory?(Dir.home.to_s + "/.rmldonkey")
else
File.delete(home.to_s + "/.rmldonkey")
Dir.mkdir(home.to_s + "/.rmldonkey", 0700)
end #if File.directory?(Dir.home.to_s + "/.rmldonkey")
else
Dir.mkdir(Dir.home.to_s + "/.rmldonkey", 0700)
end #if File.exists?(Dir.home.to_s + "/.rmldonkey")
self.makeSave(server,port,user,pass)
end #File.exists?(Dir.home.to_s + "/.rmldonkey/profile")
end #def saveFile(server,port,user,pass)
def makeSave(server,port,user,pass)
f = File.new(@profile_file_name,"w")
server_to_s_encrypt = server.to_s.encrypt("password") + "\n"
port_to_s_encrypt = port.to_s.encrypt("password") + "\n"
if user != " "
user_to_s_encrypt = user.to_s.encrypt("password") + "\n"
else
user_to_s_encrypt = "\n"
end # if user != nil
if pass != " "
pass_to_s_encrypt = pass.to_s.encrypt("password") + "\n"
else
pass_to_s_encrypt = "\n"
end # if pass != nil
f.write(server_to_s_encrypt)
f.write(port_to_s_encrypt)
f.write(user_to_s_encrypt)
f.write(pass_to_s_encrypt)
f.close
end #def makeSave(server,port,user,pass)
end #class SaveProfile
#usage
#save_profile = SaveProfile.new
#save_profile.saveFile("server1","port","user","pass")
#save_profile.saveFile("server2","port","user","pass")
class ReadProfile
def initialize
profile_file_name = Dir.home.to_s + "/.rmldonkey/profile"
if File.exists?(profile_file_name)
File.open(profile_file_name) do |f|
i = 0
f.each do |line|
case i
when 0
@server = line.chomp.to_s
when 1
@port = line.chomp.to_s
when 2
@user = line.chomp.to_s
when 3
@pass = line.chomp.to_s
end # case i
i += 1
end #f.each do |line|
end #File.open(profile_file_name) do |f|
@exist_profile = true
else
@exist_profile = false
end #
end # def initialize
def ExistProfile
return @exist_profile
end # def ExistProfile
def readServer
return @server.to_s.decrypt("password")
end #def readServer
def readPort
return @port.to_s.decrypt("password")
end #def readPort
def readUser
if @user == ""
return ""
else
return @user.to_s.decrypt("password")
end #if @user.to_s = ""
end #def readUser
def readPass
if @pass == ""
return ""
else
return @pass.to_s.decrypt("password")
end #if @pass.to_s = ""
end #def readPass
end #class ReadProfile
#usage
#profile = ReadProfile.new
#if profile.ExistProfile
# puts "***con perfil***"
# puts profile.readServer
# puts profile.readPort
# puts profile.readUser
# puts profile.readPass
#else
# puts "***sin perfil***"
#end