diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index 93652e52..d10fbbf5 100755 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -46,10 +46,12 @@ class ApplicationController < ActionController::Base def current_license(url) @license = License.new(url) - if (@license.detail_with_local_file() == true) - puts "RUN SAY BYAR" + if (@license.detail_with_local_file() == 0) + puts "Expired or No License!" + elsif (@license.detail_with_local_file() == 2) + puts "Expiring! pls, license extend..." else - return nil + puts "RUN SAY BYAR" end end diff --git a/app/models/license.rb b/app/models/license.rb index 4ff507c1..e9922084 100755 --- a/app/models/license.rb +++ b/app/models/license.rb @@ -69,8 +69,17 @@ class License # For Local System def detail_with_local_file() - # aes = MyAesCrypt.new - # aes_key, aes_iv = aes.export_key(lookup) + # flag = ENV["AES_KEY"] + # # Check Exists IV + # if flag == "<%= ENV['AES_IV'] %>" + # # Export for Key + # aes = MyAesCrypt.new + # aes_key, aes_iv = aes.export_key(lookup) + # else + # aes_key = ENV["AES_KEY"] + # aes_iv = ENV["AES_IV"] + # end + renewal_date_str = read_license("renewable_date") # ##Check from local redis - if available load local otherwise get from remote @@ -84,14 +93,17 @@ class License # redis.set(renewable_date, Marshal.dump(@license)) # else # get_renewable_date = Marshal.load(cache_renewable_date) - if check_expiring(renewal_date_str) - return true + if check_expiring(renewal_date_str) + # return for all ok + return 1 else has_license = verify_license() if has_license - puts "VERIFIED" - return true + # return for expiring + return 2 + else + return 0 end end # end @@ -144,7 +156,13 @@ class License # Check License expired date from PROVISION SERVER def check_expired(renewal_date_str) + expired_date_str = read_license("renewable_date") + expired_date = DateTime.parse(expired_date_str) renewal_date = DateTime.parse(renewal_date_str) + if(renewal_date != expired_date){ + update_license("renewable_date", renewal_date_str) + } + if (renewal_date < Date.today) return true else @@ -163,8 +181,7 @@ class License if File.exist?("config/license.yml") File.open("config/license.yml").each do |line| if line.include? (key) - decrypted_line_array = line.split(": ") - byebug + decrypted_line_array = line.split(": ") decrypted_line = AESCrypt.decrypt_data(decode_str(decrypted_line_array[1]), decode_str(ENV['AES_KEY']), decode_str(ENV['AES_IV']), ENV['CIPHER_TYPE']) end end @@ -186,7 +203,32 @@ class License return decrypted_line end + # Update license file for line + def update_license(content, new_content) + if !new_content.include? "==" + str = encode_str(new_content) + crypted_str = AESCrypt.encrypt_data(str, ENV['AES_KEY'], ENV['AES_IV'], ENV['CIPHER_TYPE']) + end + + content_str = read_license_no_decrypt(content) + if File.exist?("config/license.yml") + file_str = File.read("config/license.yml") + new_file_str = file_str.gsub(content, crypted_str) + + # To write changes to the file, use: + # File.open("config/license.yml", "w") {|file| file.puts new_file_str } + + # File.open("config/license.yml").each do |line| + # new_file_str = line.gsub(content, crypted_str) + # f.put + # end + end + end + private + def encode_str(str) + return Base64.encode64(str) + end def decode_str(str) return Base64.decode64(str)