|
|
|
@@ -13,28 +13,27 @@ class License
|
|
|
|
|
|
|
|
|
|
|
|
def initialize(server = "", lookup = "")
|
|
|
|
def initialize(server = "", lookup = "")
|
|
|
|
#this code is hard-code to reflect server mode - Very important.
|
|
|
|
#this code is hard-code to reflect server mode - Very important.
|
|
|
|
# self.server_mode = ENV["SERVER_MODE"]
|
|
|
|
self.server_mode = ENV["SERVER_MODE"]
|
|
|
|
self.server_mode = "cloud"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (server != "")
|
|
|
|
if (server != "")
|
|
|
|
self.class.base_uri server
|
|
|
|
self.class.base_uri server
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
# For Cloud
|
|
|
|
# For Cloud
|
|
|
|
def detail_with_local_cache(lookup)
|
|
|
|
def detail_with_local_cache(lookup)
|
|
|
|
aes = MyAesCrypt.new
|
|
|
|
aes = MyAesCrypt.new
|
|
|
|
aes_key, aes_iv = aes.export_to_file(lookup)
|
|
|
|
aes_key, aes_iv = aes.export_to_file(lookup)
|
|
|
|
|
|
|
|
|
|
|
|
##Check from local redis - if available load local otherwise get from remote
|
|
|
|
##Check from local redis - if available load local otherwise get from remote
|
|
|
|
cache_key = "#{lookup}:license:#{aes_key}:hostname"
|
|
|
|
cache_key = "#{lookup}:license:#{aes_key}:hostname"
|
|
|
|
|
|
|
|
|
|
|
|
cache_license = nil
|
|
|
|
cache_license = nil
|
|
|
|
|
|
|
|
|
|
|
|
##Get redis connection from connection pool
|
|
|
|
##Get redis connection from connection pool
|
|
|
|
redis = Redis.new
|
|
|
|
redis = Redis.new
|
|
|
|
cache_license = redis.get(cache_key)
|
|
|
|
cache_license = redis.get(cache_key)
|
|
|
|
|
|
|
|
|
|
|
|
Rails.logger.info "Cache key - " + cache_key.to_s
|
|
|
|
Rails.logger.info "Cache key - " + cache_key.to_s
|
|
|
|
if cache_license.nil?
|
|
|
|
if cache_license.nil?
|
|
|
|
##change the d/e key
|
|
|
|
##change the d/e key
|
|
|
|
@@ -48,7 +47,7 @@ class License
|
|
|
|
assign(aes_key, aes_iv)
|
|
|
|
assign(aes_key, aes_iv)
|
|
|
|
|
|
|
|
|
|
|
|
#Rails.logger.info "License - " + response.parsed_response.to_s
|
|
|
|
#Rails.logger.info "License - " + response.parsed_response.to_s
|
|
|
|
|
|
|
|
|
|
|
|
redis = Redis.new
|
|
|
|
redis = Redis.new
|
|
|
|
redis.set(cache_key, Marshal.dump(@license))
|
|
|
|
redis.set(cache_key, Marshal.dump(@license))
|
|
|
|
# redis.sadd("License:cache:keys", cache_key)
|
|
|
|
# redis.sadd("License:cache:keys", cache_key)
|
|
|
|
@@ -61,36 +60,36 @@ class License
|
|
|
|
|
|
|
|
|
|
|
|
return true
|
|
|
|
return true
|
|
|
|
end
|
|
|
|
end
|
|
|
|
else
|
|
|
|
else
|
|
|
|
@license = Marshal.load(cache_license)
|
|
|
|
@license = Marshal.load(cache_license)
|
|
|
|
assign(aes_key, aes_iv)
|
|
|
|
assign(aes_key, aes_iv)
|
|
|
|
# Rails.logger.info 'API License'
|
|
|
|
# Rails.logger.info 'API License'
|
|
|
|
return true
|
|
|
|
return true
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
# For Local System
|
|
|
|
# For Local System
|
|
|
|
def detail_with_local_file()
|
|
|
|
def detail_with_local_file()
|
|
|
|
renewal_date_str = read_license("renewable_date")
|
|
|
|
renewal_date_str = read_license("renewable_date")
|
|
|
|
if check_expiring(renewal_date_str)
|
|
|
|
if check_expiring(renewal_date_str)
|
|
|
|
# return for all ok
|
|
|
|
# return for all ok
|
|
|
|
return 1
|
|
|
|
return 1
|
|
|
|
else
|
|
|
|
else
|
|
|
|
has_license = verify_license()
|
|
|
|
has_license = verify_license()
|
|
|
|
if has_license
|
|
|
|
if has_license
|
|
|
|
# return for expiring
|
|
|
|
# return for expiring
|
|
|
|
return 2
|
|
|
|
return 2
|
|
|
|
else
|
|
|
|
else
|
|
|
|
return 0
|
|
|
|
return 0
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
# end
|
|
|
|
# end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
# License Activation
|
|
|
|
# License Activation
|
|
|
|
def license_activate (shop, license_key, db_host, db_schema, db_user, db_password)
|
|
|
|
def license_activate (shop, license_key, db_host, db_schema, db_user, db_password)
|
|
|
|
aes = MyAesCrypt.new
|
|
|
|
aes = MyAesCrypt.new
|
|
|
|
aes_key, aes_iv = aes.export_key(license_key)
|
|
|
|
aes_key, aes_iv = aes.export_key(license_key)
|
|
|
|
|
|
|
|
|
|
|
|
@params = { query: { lookup_type: self.server_mode, iv_key: aes_iv, license_key: license_key } }
|
|
|
|
@params = { query: { lookup_type: self.server_mode, iv_key: aes_iv, license_key: license_key } }
|
|
|
|
response = self.class.get("/activate", @params)
|
|
|
|
response = self.class.get("/activate", @params)
|
|
|
|
@@ -98,21 +97,21 @@ class License
|
|
|
|
|
|
|
|
|
|
|
|
if (@activate["status"])
|
|
|
|
if (@activate["status"])
|
|
|
|
##Check from local redis - if available load local otherwise get from remote
|
|
|
|
##Check from local redis - if available load local otherwise get from remote
|
|
|
|
cache_key = "shop:#{@activate["shop_name"]}"
|
|
|
|
cache_key = "shop:#{@activate["shop_name"]}"
|
|
|
|
|
|
|
|
|
|
|
|
cache_license = nil
|
|
|
|
cache_license = nil
|
|
|
|
|
|
|
|
|
|
|
|
##Get redis connection from connection pool
|
|
|
|
##Get redis connection from connection pool
|
|
|
|
redis = Redis.new
|
|
|
|
redis = Redis.new
|
|
|
|
cache_license = redis.get(cache_key)
|
|
|
|
cache_license = redis.get(cache_key)
|
|
|
|
|
|
|
|
|
|
|
|
Rails.logger.info "Cache key - " + cache_key.to_s
|
|
|
|
Rails.logger.info "Cache key - " + cache_key.to_s
|
|
|
|
|
|
|
|
|
|
|
|
if cache_license.nil?
|
|
|
|
if cache_license.nil?
|
|
|
|
cache = {"shop" => @activate["shop_name"], "key" => aes_key, "iv" => @activate["iv_key"], "renewable_date" => @activate["renewable_date"] }
|
|
|
|
cache = {"shop" => @activate["shop_name"], "key" => aes_key, "iv" => @activate["iv_key"], "renewable_date" => @activate["renewable_date"] }
|
|
|
|
redis = Redis.new
|
|
|
|
redis = Redis.new
|
|
|
|
redis.set(cache_key, Marshal.dump(cache))
|
|
|
|
redis.set(cache_key, Marshal.dump(cache))
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
Rails.logger.info "License - " + response.parsed_response.to_s
|
|
|
|
Rails.logger.info "License - " + response.parsed_response.to_s
|
|
|
|
|
|
|
|
|
|
|
|
@@ -122,21 +121,21 @@ class License
|
|
|
|
sym_path = File.expand_path("~/symmetric/")
|
|
|
|
sym_path = File.expand_path("~/symmetric/")
|
|
|
|
|
|
|
|
|
|
|
|
response = create_symmetric_config(sym_path, db_host, db_schema, db_user, db_password)
|
|
|
|
response = create_symmetric_config(sym_path, db_host, db_schema, db_user, db_password)
|
|
|
|
|
|
|
|
|
|
|
|
if(response[:status])
|
|
|
|
if(response[:status])
|
|
|
|
response = run_symmetric(sym_path)
|
|
|
|
response = run_symmetric(sym_path)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
else
|
|
|
|
else
|
|
|
|
response = { "status": false, "message": "Activation Failed! Please contact code2lab call center!"}
|
|
|
|
response = { "status": false, "message": "Activation Failed! Please contact code2lab call center!"}
|
|
|
|
end
|
|
|
|
end
|
|
|
|
return response
|
|
|
|
return response
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
def verify_license
|
|
|
|
def verify_license
|
|
|
|
api_token = read_license_no_decrypt("api_token")
|
|
|
|
api_token = read_license_no_decrypt("api_token")
|
|
|
|
@params = { query: {lookup_type: "application", api_token: api_token} }
|
|
|
|
@params = { query: {lookup_type: "application", api_token: api_token} }
|
|
|
|
|
|
|
|
|
|
|
|
begin
|
|
|
|
begin
|
|
|
|
response = self.class.get("/verify", @params)
|
|
|
|
response = self.class.get("/verify", @params)
|
|
|
|
@varified = response.parsed_response
|
|
|
|
@varified = response.parsed_response
|
|
|
|
@@ -147,7 +146,7 @@ class License
|
|
|
|
end
|
|
|
|
end
|
|
|
|
else
|
|
|
|
else
|
|
|
|
delete_license_file
|
|
|
|
delete_license_file
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
rescue SocketError => e
|
|
|
|
rescue SocketError => e
|
|
|
|
Rails.logger.debug "In SocketError No Internet connection ! "
|
|
|
|
Rails.logger.debug "In SocketError No Internet connection ! "
|
|
|
|
@@ -161,21 +160,21 @@ class License
|
|
|
|
rescue OpenURI::HTTPError
|
|
|
|
rescue OpenURI::HTTPError
|
|
|
|
Rails.logger.debug "Can't connect server"
|
|
|
|
Rails.logger.debug "Can't connect server"
|
|
|
|
return true
|
|
|
|
return true
|
|
|
|
end
|
|
|
|
end
|
|
|
|
return false
|
|
|
|
return false
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Check Expired before 30 days
|
|
|
|
# Check Expired before 30 days
|
|
|
|
def check_expiring(renewal_date_str)
|
|
|
|
def check_expiring(renewal_date_str)
|
|
|
|
if !renewal_date_str.empty?
|
|
|
|
if !renewal_date_str.empty?
|
|
|
|
renewal_date = DateTime.parse(renewal_date_str)
|
|
|
|
renewal_date = DateTime.parse(renewal_date_str)
|
|
|
|
renewal_date > Date.today.advance(:days => 30)
|
|
|
|
renewal_date > Date.today.advance(:days => 30)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
# Check License expired date from PROVISION SERVER
|
|
|
|
# Check License expired date from PROVISION SERVER
|
|
|
|
def check_expired(renewal_date_str)
|
|
|
|
def check_expired(renewal_date_str)
|
|
|
|
expired_date_str = read_license("renewable_date")
|
|
|
|
expired_date_str = read_license("renewable_date")
|
|
|
|
renewal_date = DateTime.parse(renewal_date_str)
|
|
|
|
renewal_date = DateTime.parse(renewal_date_str)
|
|
|
|
if(renewal_date_str != expired_date_str)
|
|
|
|
if(renewal_date_str != expired_date_str)
|
|
|
|
@@ -188,32 +187,32 @@ class License
|
|
|
|
return false
|
|
|
|
return false
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
# Check License File exists
|
|
|
|
# Check License File exists
|
|
|
|
def self.check_license_file
|
|
|
|
def self.check_license_file
|
|
|
|
return File.exist?("config/license.yml")
|
|
|
|
return File.exist?("config/license.yml")
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
# read line by key for license file
|
|
|
|
# read line by key for license file
|
|
|
|
def read_license(key_name)
|
|
|
|
def read_license(key_name)
|
|
|
|
decrypted_line = ""
|
|
|
|
decrypted_line = ""
|
|
|
|
key, iv = get_redis_key()
|
|
|
|
key, iv = get_redis_key()
|
|
|
|
|
|
|
|
|
|
|
|
if File.exist?("config/license.yml")
|
|
|
|
if File.exist?("config/license.yml")
|
|
|
|
File.open("config/license.yml").each do |line|
|
|
|
|
File.open("config/license.yml").each do |line|
|
|
|
|
if line.include? (key_name)
|
|
|
|
if line.include? (key_name)
|
|
|
|
decrypted_line_array = line.split(": ")
|
|
|
|
decrypted_line_array = line.split(": ")
|
|
|
|
decrypted_line = AESCrypt.decrypt_data(decode_str(decrypted_line_array[1]), decode_str(key), decode_str(iv), ENV['CIPHER_TYPE'])
|
|
|
|
decrypted_line = AESCrypt.decrypt_data(decode_str(decrypted_line_array[1]), decode_str(key), decode_str(iv), ENV['CIPHER_TYPE'])
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
return decrypted_line
|
|
|
|
return decrypted_line
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
# read line by key for license file without decrypt
|
|
|
|
# read line by key for license file without decrypt
|
|
|
|
def read_license_no_decrypt(key)
|
|
|
|
def read_license_no_decrypt(key)
|
|
|
|
decrypted_line = ""
|
|
|
|
decrypted_line = ""
|
|
|
|
if File.exist?("config/license.yml")
|
|
|
|
if File.exist?("config/license.yml")
|
|
|
|
File.open("config/license.yml").each do |line|
|
|
|
|
File.open("config/license.yml").each do |line|
|
|
|
|
if line.include? (key)
|
|
|
|
if line.include? (key)
|
|
|
|
decrypted_line_array = line.split(": ")
|
|
|
|
decrypted_line_array = line.split(": ")
|
|
|
|
@@ -228,18 +227,18 @@ class License
|
|
|
|
def update_license(content, new_content)
|
|
|
|
def update_license(content, new_content)
|
|
|
|
key, iv = get_redis_key()
|
|
|
|
key, iv = get_redis_key()
|
|
|
|
|
|
|
|
|
|
|
|
if !new_content.include? "=="
|
|
|
|
if !new_content.include? "=="
|
|
|
|
crypted_str = AESCrypt.encrypt_data(new_content, decode_str(key), decode_str(iv), ENV['CIPHER_TYPE'])
|
|
|
|
crypted_str = AESCrypt.encrypt_data(new_content, decode_str(key), decode_str(iv), ENV['CIPHER_TYPE'])
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
content_str = read_license_no_decrypt(content)
|
|
|
|
content_str = read_license_no_decrypt(content)
|
|
|
|
if File.exist?("config/license.yml")
|
|
|
|
if File.exist?("config/license.yml")
|
|
|
|
file_str = File.read("config/license.yml")
|
|
|
|
file_str = File.read("config/license.yml")
|
|
|
|
new_file_str = file_str.gsub(content_str, encode_str(crypted_str))
|
|
|
|
new_file_str = file_str.gsub(content_str, encode_str(crypted_str))
|
|
|
|
|
|
|
|
|
|
|
|
# To write changes to the file, use:
|
|
|
|
# To write changes to the file, use:
|
|
|
|
File.open("config/license.yml", "w") {|file| file.puts new_file_str }
|
|
|
|
File.open("config/license.yml", "w") {|file| file.puts new_file_str }
|
|
|
|
|
|
|
|
|
|
|
|
# File.open("config/license.yml").each do |line|
|
|
|
|
# File.open("config/license.yml").each do |line|
|
|
|
|
# new_file_str = line.gsub(content, crypted_str)
|
|
|
|
# new_file_str = line.gsub(content, crypted_str)
|
|
|
|
# f.put
|
|
|
|
# f.put
|
|
|
|
@@ -249,33 +248,33 @@ class License
|
|
|
|
|
|
|
|
|
|
|
|
# Re-get keys
|
|
|
|
# Re-get keys
|
|
|
|
def get_key
|
|
|
|
def get_key
|
|
|
|
api_token = read_license_no_decrypt("api_token")
|
|
|
|
api_token = read_license_no_decrypt("api_token")
|
|
|
|
shop_name = read_license_no_decrypt("shop_name")
|
|
|
|
shop_name = read_license_no_decrypt("shop_name")
|
|
|
|
@params = { query: {lookup_type: "application", api_token: api_token } }
|
|
|
|
@params = { query: {lookup_type: "application", api_token: api_token } }
|
|
|
|
response = self.class.get("/get_key", @params)
|
|
|
|
response = self.class.get("/get_key", @params)
|
|
|
|
@data = response.parsed_response
|
|
|
|
@data = response.parsed_response
|
|
|
|
|
|
|
|
|
|
|
|
if (@data["status"])
|
|
|
|
if (@data["status"])
|
|
|
|
##Check from local redis - if available load local otherwise get from remote
|
|
|
|
##Check from local redis - if available load local otherwise get from remote
|
|
|
|
cache_key = "shop:#{shop_name.chomp}"
|
|
|
|
cache_key = "shop:#{shop_name.chomp}"
|
|
|
|
|
|
|
|
|
|
|
|
cache_license = nil
|
|
|
|
cache_license = nil
|
|
|
|
|
|
|
|
|
|
|
|
##Get redis connection from connection pool
|
|
|
|
##Get redis connection from connection pool
|
|
|
|
redis = Redis.new
|
|
|
|
redis = Redis.new
|
|
|
|
cache_license = redis.get(cache_key)
|
|
|
|
cache_license = redis.get(cache_key)
|
|
|
|
|
|
|
|
|
|
|
|
Rails.logger.info "Cache key - " + cache_key.to_s
|
|
|
|
Rails.logger.info "Cache key - " + cache_key.to_s
|
|
|
|
|
|
|
|
|
|
|
|
if cache_license.nil?
|
|
|
|
if cache_license.nil?
|
|
|
|
cache = {"shop" => shop_name, "key" => @data["secret_key"], "iv" => @data["iv_key"], "renewable_date" => @data["renewable_date"] }
|
|
|
|
cache = {"shop" => shop_name, "key" => @data["secret_key"], "iv" => @data["iv_key"], "renewable_date" => @data["renewable_date"] }
|
|
|
|
redis = Redis.new
|
|
|
|
redis = Redis.new
|
|
|
|
redis.set(cache_key, Marshal.dump(cache))
|
|
|
|
redis.set(cache_key, Marshal.dump(cache))
|
|
|
|
end
|
|
|
|
end
|
|
|
|
return true
|
|
|
|
return true
|
|
|
|
end
|
|
|
|
end
|
|
|
|
return false
|
|
|
|
return false
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
private
|
|
|
|
private
|
|
|
|
def get_redis_key
|
|
|
|
def get_redis_key
|
|
|
|
@@ -283,18 +282,18 @@ class License
|
|
|
|
key = ""
|
|
|
|
key = ""
|
|
|
|
shop = read_license_no_decrypt("shop_name")
|
|
|
|
shop = read_license_no_decrypt("shop_name")
|
|
|
|
##Check from local redis - if available load local otherwise get from remote
|
|
|
|
##Check from local redis - if available load local otherwise get from remote
|
|
|
|
cache_key = "shop:#{shop.chomp}"
|
|
|
|
cache_key = "shop:#{shop.chomp}"
|
|
|
|
|
|
|
|
|
|
|
|
cache_shop = nil
|
|
|
|
cache_shop = nil
|
|
|
|
|
|
|
|
|
|
|
|
##Get redis connection from connection pool
|
|
|
|
##Get redis connection from connection pool
|
|
|
|
redis = Redis.new
|
|
|
|
redis = Redis.new
|
|
|
|
cache_shop = redis.get(cache_key)
|
|
|
|
cache_shop = redis.get(cache_key)
|
|
|
|
|
|
|
|
|
|
|
|
if !cache_shop.nil?
|
|
|
|
if !cache_shop.nil?
|
|
|
|
@shop = Marshal.load(cache_shop)
|
|
|
|
@shop = Marshal.load(cache_shop)
|
|
|
|
key = @shop["key"]
|
|
|
|
key = @shop["key"]
|
|
|
|
iv = @shop["iv"]
|
|
|
|
iv = @shop["iv"]
|
|
|
|
end
|
|
|
|
end
|
|
|
|
return key, iv
|
|
|
|
return key, iv
|
|
|
|
end
|
|
|
|
end
|
|
|
|
@@ -309,13 +308,13 @@ class License
|
|
|
|
|
|
|
|
|
|
|
|
# License File Creation
|
|
|
|
# License File Creation
|
|
|
|
def create_license_file(response_data)
|
|
|
|
def create_license_file(response_data)
|
|
|
|
if File.exist?("config/license.yml")
|
|
|
|
if File.exist?("config/license.yml")
|
|
|
|
delete_license_file
|
|
|
|
delete_license_file
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
begin
|
|
|
|
begin
|
|
|
|
# Licese File Creation
|
|
|
|
# Licese File Creation
|
|
|
|
File.open("config/license.yml", "w") do |f|
|
|
|
|
File.open("config/license.yml", "w") do |f|
|
|
|
|
f.puts("iv_key: #{response_data['iv_key']}")
|
|
|
|
f.puts("iv_key: #{response_data['iv_key']}")
|
|
|
|
f.puts("shop_name: #{response_data['shop_name']}")
|
|
|
|
f.puts("shop_name: #{response_data['shop_name']}")
|
|
|
|
f.puts("email: #{response_data['email']}")
|
|
|
|
f.puts("email: #{response_data['email']}")
|
|
|
|
@@ -327,11 +326,11 @@ class License
|
|
|
|
f.puts("dbusername: #{response_data['dbusername']}")
|
|
|
|
f.puts("dbusername: #{response_data['dbusername']}")
|
|
|
|
f.puts("dbpassword: #{response_data['dbpassword']}")
|
|
|
|
f.puts("dbpassword: #{response_data['dbpassword']}")
|
|
|
|
f.puts("api_token: #{response_data['api_token']}")
|
|
|
|
f.puts("api_token: #{response_data['api_token']}")
|
|
|
|
f.puts("app_token: #{response_data['app_token']}")
|
|
|
|
f.puts("app_token: #{response_data['app_token']}")
|
|
|
|
f.puts("plan_sku: #{response_data['plan_sku']}")
|
|
|
|
f.puts("plan_sku: #{response_data['plan_sku']}")
|
|
|
|
f.puts("renewable_date: #{response_data['renewable_date']}")
|
|
|
|
f.puts("renewable_date: #{response_data['renewable_date']}")
|
|
|
|
f.puts("plan_name: #{response_data['plan_name']}")
|
|
|
|
f.puts("plan_name: #{response_data['plan_name']}")
|
|
|
|
end
|
|
|
|
end
|
|
|
|
rescue IOError
|
|
|
|
rescue IOError
|
|
|
|
response = { "status": false, "message": "Activation is success but something is wrong. \n Please contact code2lab call center!"}
|
|
|
|
response = { "status": false, "message": "Activation is success but something is wrong. \n Please contact code2lab call center!"}
|
|
|
|
end
|
|
|
|
end
|
|
|
|
@@ -354,15 +353,15 @@ class License
|
|
|
|
f.write("group.id=sx\n")
|
|
|
|
f.write("group.id=sx\n")
|
|
|
|
f.write("external.id=000\n")
|
|
|
|
f.write("external.id=000\n")
|
|
|
|
f.write("job.purge.period.time.ms=7200000\n")
|
|
|
|
f.write("job.purge.period.time.ms=7200000\n")
|
|
|
|
f.write("job.routing.period.time.ms=5000\n")
|
|
|
|
f.write("job.routing.period.time.ms=5000\n")
|
|
|
|
f.write("job.push.period.time.ms=10000\n")
|
|
|
|
f.write("job.push.period.time.ms=10000\n")
|
|
|
|
f.write("job.pull.period.time.ms=10000\n")
|
|
|
|
f.write("job.pull.period.time.ms=10000\n")
|
|
|
|
f.write("initial.load.create.first=true\n")
|
|
|
|
f.write("initial.load.create.first=true\n")
|
|
|
|
f.write("initial.load.use.extract.job.enabled=true\n")
|
|
|
|
f.write("initial.load.use.extract.job.enabled=true\n")
|
|
|
|
f.write("rest.api.enable=true\n")
|
|
|
|
f.write("rest.api.enable=true\n")
|
|
|
|
f.close
|
|
|
|
f.close
|
|
|
|
|
|
|
|
|
|
|
|
# read from license file
|
|
|
|
# read from license file
|
|
|
|
# shop_name = read_license_no_decrypt("shop_name")
|
|
|
|
# shop_name = read_license_no_decrypt("shop_name")
|
|
|
|
shop_name = "cloud"
|
|
|
|
shop_name = "cloud"
|
|
|
|
dbhost = read_license("dbhost")
|
|
|
|
dbhost = read_license("dbhost")
|
|
|
|
@@ -380,12 +379,12 @@ class License
|
|
|
|
f.write("registration.url=http://#{db_host}:31415/sync/sx\n")
|
|
|
|
f.write("registration.url=http://#{db_host}:31415/sync/sx\n")
|
|
|
|
f.write("group.id=cloud\n")
|
|
|
|
f.write("group.id=cloud\n")
|
|
|
|
f.write("external.id=001\n")
|
|
|
|
f.write("external.id=001\n")
|
|
|
|
f.write("job.routing.period.time.ms=5000\n")
|
|
|
|
f.write("job.routing.period.time.ms=5000\n")
|
|
|
|
f.write("job.push.period.time.ms=10000\n")
|
|
|
|
f.write("job.push.period.time.ms=10000\n")
|
|
|
|
f.write("job.pull.period.time.ms=10000\n")
|
|
|
|
f.write("job.pull.period.time.ms=10000\n")
|
|
|
|
f.write("rest.api.enable=true\n")
|
|
|
|
f.write("rest.api.enable=true\n")
|
|
|
|
# f.write("initial.load.create.first=true\n")
|
|
|
|
# f.write("initial.load.create.first=true\n")
|
|
|
|
# f.write("initial.load.use.extract.job.enabled=true\n")
|
|
|
|
# f.write("initial.load.use.extract.job.enabled=true\n")
|
|
|
|
f.close
|
|
|
|
f.close
|
|
|
|
rescue IOError
|
|
|
|
rescue IOError
|
|
|
|
response = { "status": false, "message": "Activation is success but something is wrong. \n Please contact code2lab call center!"}
|
|
|
|
response = { "status": false, "message": "Activation is success but something is wrong. \n Please contact code2lab call center!"}
|
|
|
|
@@ -394,12 +393,12 @@ class License
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
# Run Symmetric
|
|
|
|
# Run Symmetric
|
|
|
|
def run_symmetric(sym_path)
|
|
|
|
def run_symmetric(sym_path)
|
|
|
|
# check_sym_proc_str = `#{sym_path + "bin/sym_service status"}`
|
|
|
|
# check_sym_proc_str = `#{sym_path + "bin/sym_service status"}`
|
|
|
|
# check_sym_proc_str = check_sym_proc_str.split("\n")
|
|
|
|
# check_sym_proc_str = check_sym_proc_str.split("\n")
|
|
|
|
# sym_install_status = check_sym_proc_str[0].split(": ")
|
|
|
|
# sym_install_status = check_sym_proc_str[0].split(": ")
|
|
|
|
|
|
|
|
|
|
|
|
check_sym_proc_str = `#{"sudo service SymmetricDS status"}`
|
|
|
|
check_sym_proc_str = `#{"sudo service SymmetricDS status"}`
|
|
|
|
|
|
|
|
|
|
|
|
# Check Sym Installed
|
|
|
|
# Check Sym Installed
|
|
|
|
@@ -414,7 +413,7 @@ class License
|
|
|
|
check_sym_table = system("sudo " + sym_path + "/bin/symadmin --engine sx create-sym-tables")
|
|
|
|
check_sym_table = system("sudo " + sym_path + "/bin/symadmin --engine sx create-sym-tables")
|
|
|
|
if check_sym_table
|
|
|
|
if check_sym_table
|
|
|
|
sym_sql = Rails.root + "db/sym_master.sql"
|
|
|
|
sym_sql = Rails.root + "db/sym_master.sql"
|
|
|
|
|
|
|
|
|
|
|
|
if File.exist? (sym_sql)
|
|
|
|
if File.exist? (sym_sql)
|
|
|
|
# Import Sym Sql to db and start sym
|
|
|
|
# Import Sym Sql to db and start sym
|
|
|
|
run_sym_sql = system("sudo " + sym_path + "/bin/dbimport --engine sx " + sym_sql.to_s)
|
|
|
|
run_sym_sql = system("sudo " + sym_path + "/bin/dbimport --engine sx " + sym_sql.to_s)
|
|
|
|
@@ -429,7 +428,7 @@ class License
|
|
|
|
else
|
|
|
|
else
|
|
|
|
response = { "status": false, "message": "Activation is success but Cannot create Sym Tables. \n Please contact code2lab call center!"}
|
|
|
|
response = { "status": false, "message": "Activation is success but Cannot create Sym Tables. \n Please contact code2lab call center!"}
|
|
|
|
end
|
|
|
|
end
|
|
|
|
else
|
|
|
|
else
|
|
|
|
response = { "status": false, "message": "Activation is success but Symmetric not running. \n Please contact code2lab call center!"}
|
|
|
|
response = { "status": false, "message": "Activation is success but Symmetric not running. \n Please contact code2lab call center!"}
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
@@ -437,7 +436,7 @@ class License
|
|
|
|
# Check Symmetric Running
|
|
|
|
# Check Symmetric Running
|
|
|
|
def check_sym_running(status, sym_path)
|
|
|
|
def check_sym_running(status, sym_path)
|
|
|
|
# Run Sym Service
|
|
|
|
# Run Sym Service
|
|
|
|
# if status.include? "Server is already running"
|
|
|
|
# if status.include? "Server is already running"
|
|
|
|
# return true
|
|
|
|
# return true
|
|
|
|
# elsif status.include? "false"
|
|
|
|
# elsif status.include? "false"
|
|
|
|
# sym_start_str = `#{sym_path + "bin/sym_service start"}`
|
|
|
|
# sym_start_str = `#{sym_path + "bin/sym_service start"}`
|
|
|
|
@@ -445,9 +444,9 @@ class License
|
|
|
|
# return true
|
|
|
|
# return true
|
|
|
|
# else
|
|
|
|
# else
|
|
|
|
# check_sym_running(sym_start_status[0])
|
|
|
|
# check_sym_running(sym_start_status[0])
|
|
|
|
# end
|
|
|
|
# end
|
|
|
|
# else
|
|
|
|
# else
|
|
|
|
# return true
|
|
|
|
# return true
|
|
|
|
# end
|
|
|
|
# end
|
|
|
|
|
|
|
|
|
|
|
|
if status.include? "Active: active (running)" || "Active: active (exited)" #"Server is already running"
|
|
|
|
if status.include? "Active: active (running)" || "Active: active (exited)" #"Server is already running"
|
|
|
|
@@ -458,15 +457,15 @@ class License
|
|
|
|
|
|
|
|
|
|
|
|
# Delete License File
|
|
|
|
# Delete License File
|
|
|
|
def delete_license_file
|
|
|
|
def delete_license_file
|
|
|
|
File.delete("config/license.yml") if File.exist?("config/license.yml")
|
|
|
|
File.delete("config/license.yml") if File.exist?("config/license.yml")
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
# Assign db info for Cloud
|
|
|
|
# Assign db info for Cloud
|
|
|
|
def assign(aes_key, aes_iv)
|
|
|
|
def assign(aes_key, aes_iv)
|
|
|
|
key = Base64.decode64(aes_key)
|
|
|
|
key = Base64.decode64(aes_key)
|
|
|
|
iv = Base64.decode64(aes_iv)
|
|
|
|
iv = Base64.decode64(aes_iv)
|
|
|
|
|
|
|
|
|
|
|
|
if (@license["dbhost"] || @license["dbschema"] || @license["dbusername"] || @license["dbpassword"] )
|
|
|
|
if (@license["dbhost"] || @license["dbschema"] || @license["dbusername"] || @license["dbpassword"] )
|
|
|
|
host = Base64.decode64(@license["dbhost"])
|
|
|
|
host = Base64.decode64(@license["dbhost"])
|
|
|
|
dbschema = Base64.decode64(@license["dbschema"])
|
|
|
|
dbschema = Base64.decode64(@license["dbschema"])
|
|
|
|
dbusername = Base64.decode64(@license["dbusername"])
|
|
|
|
dbusername = Base64.decode64(@license["dbusername"])
|
|
|
|
@@ -475,8 +474,8 @@ class License
|
|
|
|
self.dbhost = AESCrypt.decrypt_data(host, key, iv, ENV['CIPHER_TYPE'])
|
|
|
|
self.dbhost = AESCrypt.decrypt_data(host, key, iv, ENV['CIPHER_TYPE'])
|
|
|
|
self.dbschema = AESCrypt.decrypt_data(dbschema, key, iv, ENV['CIPHER_TYPE'])
|
|
|
|
self.dbschema = AESCrypt.decrypt_data(dbschema, key, iv, ENV['CIPHER_TYPE'])
|
|
|
|
self.dbusername = AESCrypt.decrypt_data(dbusername, key, iv, ENV['CIPHER_TYPE'])
|
|
|
|
self.dbusername = AESCrypt.decrypt_data(dbusername, key, iv, ENV['CIPHER_TYPE'])
|
|
|
|
self.dbpassword = AESCrypt.decrypt_data(dbpassword, key, iv, ENV['CIPHER_TYPE'])
|
|
|
|
self.dbpassword = AESCrypt.decrypt_data(dbpassword, key, iv, ENV['CIPHER_TYPE'])
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|