Merge branch 'license'
This commit is contained in:
@@ -22,9 +22,12 @@ class ApplicationController < ActionController::Base
|
||||
{ locale: I18n.locale }
|
||||
end
|
||||
|
||||
def lookup_domain
|
||||
if request.subdomain.present? && request.subdomain != "www"
|
||||
@license = cache_license(ENV["SX_PROVISION_URL"], request.subdomain.downcase) # request.subdomain.downcase
|
||||
def lookup_domain
|
||||
|
||||
if request.subdomain.present? && request.subdomain != "www"
|
||||
from = request.subdomain.downcase #+ "." + request.domain.downcase
|
||||
puts from
|
||||
@license = cache_license(ENV["SX_PROVISION_URL"], from) # request.subdomain.downcase
|
||||
if (!@license.nil?)
|
||||
# logger.info "Location - " + @license.name
|
||||
ActiveRecord::Base.establish_connection(website_connection(@license))
|
||||
@@ -54,10 +57,18 @@ class ApplicationController < ActionController::Base
|
||||
end
|
||||
|
||||
def cache_license(url, lookup)
|
||||
@license = License.new(url, lookup)
|
||||
# Export for Key
|
||||
aes = MyAesCrypt.new
|
||||
aes_key, aes_iv = aes.export_key(lookup)
|
||||
flag = ENV["AES_IV"]
|
||||
@license = License.new(url, lookup)
|
||||
|
||||
# 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
|
||||
|
||||
if (@license.detail_with_local_cache(lookup, aes_key, aes_iv) == true)
|
||||
return @license
|
||||
@@ -110,7 +121,7 @@ class ApplicationController < ActionController::Base
|
||||
if License.check_license_file
|
||||
return true
|
||||
else
|
||||
redirect_to install_path
|
||||
redirect_to activate_path
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -1,42 +1,77 @@
|
||||
class InstallController < BaseController
|
||||
skip_before_action :verify_authenticity_token
|
||||
before_action :check_license
|
||||
|
||||
def index
|
||||
end
|
||||
|
||||
def create
|
||||
def activate
|
||||
flag = "<%= ENV['AES_IV'] %>"
|
||||
key_base = "<%= ENV['secret_key_base'] %>"
|
||||
|
||||
restaurant = params[:restaurant_name]
|
||||
license_key = params[:license_key]
|
||||
admin_user = params[:admin_user]
|
||||
admin_password = params[:admin_password]
|
||||
# admin_user = params[:admin_user]
|
||||
# admin_password = params[:admin_password]
|
||||
db_host = params[:db_host]
|
||||
db_schema = params[:db_schema]
|
||||
db_user = params[:db_user]
|
||||
db_password = params[:db_password]
|
||||
phrase = key_base == "<%= ENV['secret_key_base'] %>"? license_key : "<%= ENV['secret_key_base'] %>"
|
||||
|
||||
# Check Exists IV
|
||||
if flag == "<%= ENV['AES_IV'] %>"
|
||||
# Export for Key
|
||||
aes = MyAesCrypt.new
|
||||
aes_key, aes_iv = aes.export_key(phrase)
|
||||
else
|
||||
aes_key = ENV["AES_KEY"]
|
||||
aes_iv = ENV["AES_IV"]
|
||||
end
|
||||
|
||||
@license = License.new(ENV["SX_PROVISION_URL"])
|
||||
response = @license.license_activate(aes_key, aes_iv, license_key, db_host, db_schema, db_user, db_password)
|
||||
if response[:status]
|
||||
redirect_to root_url, notice: response["message"]
|
||||
else
|
||||
redirect_to activate_path, notice: response["message"]
|
||||
end
|
||||
end
|
||||
|
||||
def lookup_domain
|
||||
if request.subdomain.present? && request.subdomain != "www"
|
||||
@license = current_license(ENV["SX_PROVISION_URL"], request.subdomain.downcase)
|
||||
if (!@license.nil?)
|
||||
# logger.info "Location - " + @license.name
|
||||
ActiveRecord::Base.establish_connection(website_connection(@license))
|
||||
# logger.info "Connecting to - " + @license.subdomain + " - "+ @license.dbhost + "@" + @license.dbschema
|
||||
else
|
||||
# reconnect_default_db
|
||||
logger.info 'License is nil'
|
||||
# redirect_to root_url(:host => request.domain) + "store_error"
|
||||
render :json => [{ status: false, message: 'Invalid Access!'}]
|
||||
end
|
||||
def check_license
|
||||
if License.check_license_file
|
||||
redirect_to root_url
|
||||
end
|
||||
end
|
||||
|
||||
def current_license(url, key)
|
||||
@license = License.new(url, key)
|
||||
# def lookup_domain
|
||||
# if request.subdomain.present? && request.subdomain != "www"
|
||||
# @license = current_license(ENV["SX_PROVISION_URL"], request.subdomain.downcase)
|
||||
# if (!@license.nil?)
|
||||
# # logger.info "Location - " + @license.name
|
||||
# ActiveRecord::Base.establish_connection(website_connection(@license))
|
||||
# # logger.info "Connecting to - " + @license.subdomain + " - "+ @license.dbhost + "@" + @license.dbschema
|
||||
# else
|
||||
# # reconnect_default_db
|
||||
# logger.info 'License is nil'
|
||||
# # redirect_to root_url(:host => request.domain) + "store_error"
|
||||
# render :json => [{ status: false, message: 'Invalid Access!'}]
|
||||
# end
|
||||
# end
|
||||
# end
|
||||
|
||||
##creating md5 hash
|
||||
md5_hostname = Digest::MD5.new
|
||||
md5key = md5_hostname.update(request.host)
|
||||
if (@license.detail_with_local_cache(key, md5key.to_s) == true)
|
||||
#if (@license.detail == true)
|
||||
# def current_license(url, key)
|
||||
# @license = License.new(url, key)
|
||||
|
||||
return @license
|
||||
else
|
||||
return nil
|
||||
end
|
||||
end
|
||||
# ##creating md5 hash
|
||||
# md5_hostname = Digest::MD5.new
|
||||
# md5key = md5_hostname.update(request.host)
|
||||
# if (@license.detail_with_local_cache(key, md5key.to_s) == true)
|
||||
# #if (@license.detail == true)
|
||||
|
||||
# return @license
|
||||
# else
|
||||
# return nil
|
||||
# end
|
||||
# end
|
||||
end
|
||||
|
||||
@@ -21,14 +21,6 @@ class License
|
||||
|
||||
# @secret = ENV["aes_key"]
|
||||
# @params = { query: { device: "SX", token: SECRETS_CONFIG['provision_key'] } }
|
||||
end
|
||||
|
||||
def shop_code
|
||||
if ( self.subdomain.length > 3)
|
||||
return self.subdomain[0,3].upcase
|
||||
else
|
||||
return self.subdomain.upcase
|
||||
end
|
||||
end
|
||||
|
||||
def detail_with_local_cache(lookup, key, iv)
|
||||
@@ -41,9 +33,11 @@ class License
|
||||
cache_license = nil
|
||||
|
||||
##Get redis connection from connection pool
|
||||
Redis.current do |conn|
|
||||
cache_license = conn.get(cache_key)
|
||||
end
|
||||
redis = Redis.new
|
||||
cache_license = redis.get(cache_key)
|
||||
# Redis.current do |conn|
|
||||
# cache_license = conn.get(cache_key)
|
||||
# end
|
||||
|
||||
Rails.logger.info "Cache key - " + cache_key.to_s
|
||||
if cache_license.nil?
|
||||
@@ -54,22 +48,27 @@ class License
|
||||
@license = response.parsed_response
|
||||
|
||||
if (@license["status"] == true)
|
||||
|
||||
assign()
|
||||
|
||||
Rails.logger.info "License - " + response.parsed_response.to_s
|
||||
|
||||
Redis.current do |conn|
|
||||
##Remote - store the remote response in local redis cache
|
||||
conn.set(cache_key, Marshal.dump(@license))
|
||||
##ADD to List to remove later
|
||||
conn.sadd("License:cache:keys", cache_key)
|
||||
end
|
||||
|
||||
redis = Redis.new
|
||||
redis.set(cache_key, Marshal.dump(@license))
|
||||
# redis.sadd("License:cache:keys", cache_key)
|
||||
# Redis.current do |conn|
|
||||
# ##Remote - store the remote response in local redis cache
|
||||
# conn.set(cache_key, Marshal.dump(@license))
|
||||
# ##ADD to List to remove later
|
||||
# conn.sadd("License:cache:keys", cache_key)
|
||||
# end
|
||||
|
||||
return true
|
||||
end
|
||||
|
||||
Rails.logger.info 'API License'
|
||||
else
|
||||
@license = Marshal.load(cache_license)
|
||||
assign()
|
||||
Rails.logger.info 'API License'
|
||||
return true
|
||||
end
|
||||
end
|
||||
|
||||
@@ -80,65 +79,35 @@ class License
|
||||
if has_license
|
||||
# puts "VERIFIED"
|
||||
end
|
||||
end
|
||||
|
||||
# if cache_license.nil?
|
||||
# ##change the d/e key
|
||||
# @params = { query: { lookup_type: self.server_mode, lookup: lookup, encrypted_key: key, iv_key: iv} }
|
||||
# License Activation
|
||||
def license_activate (key, iv, license_key, db_host, db_schema, db_user, db_password)
|
||||
@params = { query: { lookup_type: self.server_mode, encrypted_key: key, iv_key: iv, license_key: license_key } }
|
||||
response = self.class.get("/activate", @params)
|
||||
@activate = response.parsed_response
|
||||
|
||||
# response = self.class.get("/request_license", @params)
|
||||
# @license = response.parsed_response
|
||||
Rails.logger.debug "License Remote Response - " + response.parsed_response.to_s
|
||||
|
||||
# if (@license["status"] == true)
|
||||
|
||||
# assign()
|
||||
|
||||
# Rails.logger.info "License - " + response.parsed_response.to_s
|
||||
|
||||
# Redis.current do |conn|
|
||||
# ##Remote - store the remote response in local redis cache
|
||||
# conn.set(cache_key, Marshal.dump(@license))
|
||||
# ##ADD to List to remove later
|
||||
# conn.sadd("License:cache:keys", cache_key)
|
||||
# end
|
||||
|
||||
# return true
|
||||
# end
|
||||
|
||||
# Rails.logger.info 'API License'
|
||||
|
||||
# else
|
||||
# @license = Marshal.load(cache_license) if cache_license
|
||||
|
||||
# Rails.logger.info 'Cache License'
|
||||
|
||||
# if (@license["status"] == true)
|
||||
# assign()
|
||||
# return true
|
||||
# end
|
||||
# end
|
||||
# return false
|
||||
end
|
||||
|
||||
def detail
|
||||
response = self.class.get("/subdomain", @options)
|
||||
@license = response.parsed_response
|
||||
|
||||
Rails.logger.debug "License - " + response.parsed_response.to_s
|
||||
|
||||
|
||||
if (@license["status"] == true)
|
||||
assign()
|
||||
|
||||
return true
|
||||
end
|
||||
|
||||
return false
|
||||
if (@activate["status"])
|
||||
response = create_license_file(@activate)
|
||||
if(response["status"])
|
||||
sym_path = "/home/yan/symmetric/"
|
||||
response = create_symmetric_config(sym_path, db_host, db_schema, db_user, db_password)
|
||||
if(response["status"])
|
||||
response = run_symmetric(sym_path)
|
||||
end
|
||||
end
|
||||
else
|
||||
response = { "status": false, "message": "Activation Failed! Please contact code2lab call center!"}
|
||||
end
|
||||
return response
|
||||
end
|
||||
|
||||
def verify_license
|
||||
api_token = read_license("api_token")
|
||||
@options = { query: {lookup_type: "application", token: api_token} }
|
||||
response = self.class.get("/verify", @options)
|
||||
@params = { query: {lookup_type: "application", token: api_token} }
|
||||
response = self.class.get("/verify", @params)
|
||||
@varified = response.parsed_response
|
||||
|
||||
Rails.logger.debug "License Remote Response - " + response.parsed_response.to_s
|
||||
@@ -152,37 +121,7 @@ class License
|
||||
return false
|
||||
end
|
||||
|
||||
def check_remote_license(license_key)
|
||||
# @options = { query: {device: "cloud", key: license_key, skey: @secret, token: Rails.application.secrets.provision_key} }
|
||||
@options = { query: {lookup_type: "application", encrypted_key: @secret, token: SECRETS_CONFIG['provision_key']} }
|
||||
response = self.class.get("/license", @options)
|
||||
|
||||
@license = response.parsed_response
|
||||
|
||||
Rails.logger.debug "License Remote Response - " + response.parsed_response.to_s
|
||||
if (@license["status"])
|
||||
assign()
|
||||
end
|
||||
return @license["status"]
|
||||
|
||||
end
|
||||
|
||||
def verify_by_api_token(api_token)
|
||||
@options = { query: {device: "SX", api_token: api_token, skey: @secret, token: SECRETS_CONFIG['provision_key']} }
|
||||
response = self.class.get("/verify", @options)
|
||||
|
||||
@license = response.parsed_response
|
||||
|
||||
Rails.logger.debug "License Remote Response - " + response.parsed_response.to_s
|
||||
if (@license["status"])
|
||||
assign()
|
||||
end
|
||||
|
||||
return @license["status"]
|
||||
end
|
||||
#Load License is remove from the cloud license because - this license is must be validated against subdmain instead of license.data from file.
|
||||
|
||||
|
||||
# Check License expired date from PROVISION SERVER
|
||||
def check_expired(renewal_date)
|
||||
if (renewal_date < Date.today)
|
||||
return true
|
||||
@@ -191,6 +130,7 @@ class License
|
||||
end
|
||||
end
|
||||
|
||||
# Check License File exists
|
||||
def self.check_license_file
|
||||
return File.exist?("config/license.yml")
|
||||
end
|
||||
@@ -202,13 +142,156 @@ class License
|
||||
File.open("config/license.yml").each do |line|
|
||||
if line.include? (key)
|
||||
decrypted_line_array = line.split(":")
|
||||
decrypted_line = AESCrypt.decrypt(decrypted_line_array[1])
|
||||
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
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def decode_str(str)
|
||||
return Base64.decode64(str)
|
||||
end
|
||||
|
||||
# License File Creation
|
||||
def create_license_file(response_data)
|
||||
if File.exist?("config/license.yml")
|
||||
delete_license_file
|
||||
end
|
||||
|
||||
begin
|
||||
# Licese File Creation
|
||||
f = File.open("config/license.yml", "w")
|
||||
f.write("iv_key: #{response_data['iv_key']}\n")
|
||||
f.write("shop_name: #{response_data['shop_name']}\n")
|
||||
f.write("email: #{response_data['email']}\n")
|
||||
f.write("telephone: #{response_data['telephone']}\n")
|
||||
f.write("fax: #{response_data['fax']}\n")
|
||||
f.write("address: #{response_data['address']}\n")
|
||||
f.write("dbhost: #{response_data['dbhost']}\n")
|
||||
f.write("dbschema: #{response_data['dbschema']}\n")
|
||||
f.write("dbusername: #{response_data['dbusername']}\n")
|
||||
f.write("dbpassword: #{response_data['dbpassword']}\n")
|
||||
f.write("api_token: #{response_data['api_token']}\n")
|
||||
f.write("app_token: #{response_data['app_token']}\n")
|
||||
f.close
|
||||
rescue IOError
|
||||
response = { "status": false, "message": "Activation is success but something is wrong. \n Please contact code2lab call center!"}
|
||||
end
|
||||
response = { "status": true, "message": "Success Activation. License also created."}
|
||||
end
|
||||
|
||||
# Symmetric Configuration
|
||||
def create_symmetric_config(sym_location, db_host, db_schema, db_user, db_password)
|
||||
if File.directory? (sym_location)
|
||||
begin
|
||||
# sx properties create
|
||||
f = File.open(sym_location + "engines/sx.properties", "w")
|
||||
f.write("engine.name=sx\n")
|
||||
f.write("db.driver=com.mysql.jdbc.Driver\n")
|
||||
f.write("db.url=jdbc:mysql://#{db_host}/#{db_schema}?tinyInt1isBit=false\n")
|
||||
f.write("db.user=#{db_user}\n")
|
||||
f.write("db.password=#{db_password}\n")
|
||||
f.write("registration.url=\n")
|
||||
f.write("sync.url=http://#{db_host}:31415/sync/sx\n")
|
||||
f.write("group.id=sx\n")
|
||||
f.write("external.id=000\n")
|
||||
f.write("job.purge.period.time.ms=7200000\n")
|
||||
f.write("job.routing.period.time.ms=5000\n")
|
||||
f.write("job.push.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.use.extract.job.enabled=true\n")
|
||||
f.close
|
||||
|
||||
# read from license file
|
||||
shop_name = read_license("shop_name")
|
||||
dbhost = read_license("dbhost")
|
||||
dbschema = read_license("dbschema")
|
||||
dbusername = read_license("dbusername")
|
||||
dbpassword = read_license("dbpassword")
|
||||
|
||||
# shop properties create
|
||||
f = File.open(sym_location + "/#{shop_name}.properties", "w")
|
||||
f.write("engine.name=#{shop_name}\n")
|
||||
f.write("db.driver=com.mysql.jdbc.Driver\n")
|
||||
f.write("db.url=jdbc:mysql://#{dbhost}/#{dbschema}?tinyInt1isBit=false\n")
|
||||
f.write("db.user=#{dbusername}\n")
|
||||
f.write("db.password=#{dbpassword}\n")
|
||||
f.write("registration.url=http://#{db_host}:31415/sync/sx\n")
|
||||
f.write("group.id=store\n")
|
||||
f.write("external.id=001\n")
|
||||
f.write("job.routing.period.time.ms=5000\n")
|
||||
f.write("job.push.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.use.extract.job.enabled=true\n")
|
||||
f.close
|
||||
rescue IOError
|
||||
response = { "status": false, "message": "Activation is success but something is wrong. \n Please contact code2lab call center!"}
|
||||
end
|
||||
response = { "status": true, "message": "Success Activation. License also created."}
|
||||
end
|
||||
end
|
||||
|
||||
# Run Symmetric
|
||||
def run_symmetric(sym_path)
|
||||
check_sym_proc_str = `#{sym_path + "bin/sym_service status"}`
|
||||
check_sym_proc_str = check_sym_proc_str.split("\n")
|
||||
sym_install_status = check_sym_proc_str[0].split(": ")
|
||||
# sym_run_status = check_sym_proc_str[1].split(": ")
|
||||
|
||||
# Check Sym Installed
|
||||
if sym_install_status[1] == "false"
|
||||
response = { "status": false, "message": "Activation is success but Symmetric service not Installed. \n Please contact code2lab call center!"}
|
||||
end
|
||||
|
||||
# Run Sym Service
|
||||
sym_run_status = check_sym_running(check_sym_proc_str[1], sym_path)
|
||||
if sym_run_status
|
||||
# Create Sym Table
|
||||
check_sym_table = system(sym_path + "bin/symadmin --engine sx create-sym-tables")
|
||||
if check_sym_table
|
||||
sym_sql = Rails.root + "db/sym_master.sql"
|
||||
if File.exist? (sym_sql)
|
||||
# Import Sym Sql to db and start sym
|
||||
run_sym_sql = system(sym_path + "bin/dbimport --engine sx " + sym_sql)
|
||||
run_sym = system(sym_path + "bin/sym")
|
||||
if run_sym
|
||||
response = { "status": true, "message": "Activation is success and Configuration done..."}
|
||||
end
|
||||
else
|
||||
response = { "status": false, "message": "Activation is success but Symmetric Sql not Found. \n Please contact code2lab call center!"}
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
# Check Symmetric Running
|
||||
def check_sym_running(status, sym_path)
|
||||
# Run Sym Service
|
||||
if status.include? "Server is already running"
|
||||
return true
|
||||
elsif status.include? "false"
|
||||
sym_start_str = `#{sym_path + "bin/sym_service start"}`
|
||||
if sym_start_str.include? "Started"
|
||||
return true
|
||||
else
|
||||
check_sym_running(sym_start_status[0])
|
||||
end
|
||||
else
|
||||
return true
|
||||
end
|
||||
end
|
||||
|
||||
# Delete License File
|
||||
def delete_license_file
|
||||
File.delete("config/license.yml") if File.exist?("config/license.yml")
|
||||
end
|
||||
|
||||
# Assign db info for Cloud
|
||||
def assign
|
||||
# self.name = @license["name"]
|
||||
# self.address_1 = @license["address_1"]
|
||||
@@ -228,17 +311,24 @@ class License
|
||||
## self.plan_activation_date = Date.strptime(@license["plan_activation_date"], "%Y-%m-%d")
|
||||
## self.plan_next_renewal_date = Date.strptime(@license["plan_next_renewal_date"], "%Y-%m-%d")
|
||||
|
||||
|
||||
# self.plan_max_products = @license["plan_max_products"].to_i
|
||||
# self.plan_max_customers = @license["plan_max_customers"].to_i
|
||||
# self.plan_active_connections = @license["plan_active_connections"].to_i
|
||||
salt = @license["secret_key"]
|
||||
# salt = @license["secret_key"]
|
||||
|
||||
if (@license["dbhost"] || @license["dbschema"] || @license["dbusername"] || @license["dbpassword"] )
|
||||
self.dbhost = AESCrypt.decrypt(@license["dbhost"], salt)
|
||||
self.dbschema = AESCrypt.decrypt(@license["dbschema"], salt)
|
||||
self.dbusername = AESCrypt.decrypt(@license["dbusername"], salt)
|
||||
self.dbpassword = AESCrypt.decrypt(@license["dbpassword"], salt)
|
||||
key = Base64.decode64(ENV['AES_KEY'])
|
||||
iv = Base64.decode64(ENV['AES_IV'])
|
||||
|
||||
if (@license["dbhost"] || @license["dbschema"] || @license["dbusername"] || @license["dbpassword"] )
|
||||
host = Base64.decode64(@license["dbhost"])
|
||||
dbschema = Base64.decode64(@license["dbschema"])
|
||||
dbusername = Base64.decode64(@license["dbusername"])
|
||||
dbpassword = Base64.decode64(@license["dbpassword"])
|
||||
|
||||
self.dbhost = AESCrypt.decrypt_data(host, 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.dbpassword = AESCrypt.decrypt_data(dbpassword, key, iv, ENV['CIPHER_TYPE'])
|
||||
end
|
||||
|
||||
# self.exchange_unqiue_id = @license["exchange_unqiue_id"]
|
||||
|
||||
@@ -1,3 +1,6 @@
|
||||
require 'openssl'
|
||||
require 'base64'
|
||||
|
||||
class MyAesCrypt
|
||||
@cipher = ""
|
||||
|
||||
@@ -7,11 +10,16 @@ class MyAesCrypt
|
||||
|
||||
def export_key(passphrase)
|
||||
# We want a 256 bit key symetric key based on passphrase
|
||||
# for cloud is lookup
|
||||
# for local is license_key
|
||||
# iv_salt = passphrase+"c2l"
|
||||
digest = Digest::SHA256.new
|
||||
key = digest.update(passphrase)
|
||||
key = digest.digest
|
||||
ENV['AES_KEY'] = cipher_key = key # stores the key in key, and also sets the generated key on the @cipher
|
||||
ENV['AES_IV'] = cipher_iv = @cipher.random_iv # stores the iv in iv, and also sets the generated iv on the @cipher
|
||||
key_digest = digest.update(passphrase)
|
||||
# iv_digest = digest.update(iv_salt)
|
||||
key = key_digest.digest
|
||||
# iv = iv_digest.digest
|
||||
ENV['AES_KEY'] = cipher_key = Base64.encode64(key) # stores the key in key, and also sets the generated key on the @cipher
|
||||
ENV['AES_IV'] = cipher_iv = Base64.encode64(@cipher.random_iv) # stores the iv in iv, and also sets the generated iv on the @cipher
|
||||
return cipher_key, cipher_iv
|
||||
end
|
||||
|
||||
|
||||
@@ -160,6 +160,5 @@ class SaleItem < ApplicationRecord
|
||||
private
|
||||
def generate_custom_id
|
||||
self.sale_item_id = SeedGenerator.generate_id(self.class.name, "SLI")
|
||||
|
||||
end
|
||||
end
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<form action="/install" method="POST" class="row">
|
||||
<form action="/activate" method="POST" class="row">
|
||||
<div class="col-md-6">
|
||||
<div class="form-group">
|
||||
<label for="exampleInputEmail1">Business Name</label>
|
||||
@@ -10,7 +10,7 @@
|
||||
<input type="text" class="form-control" name="license_key" aria-describedby="license_key" placeholder="Add License Key">
|
||||
<small class="form-text text-muted">Add License Key from Email</small>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<!-- <div class="form-group">
|
||||
<label for="lblAdministrator">Administrator Username</label>
|
||||
<input type="text" class="form-control" name="admin_user" aria-describedby="admin_user" placeholder="Administrator Username">
|
||||
<small id="admin_user" class="form-text text-muted">First Employee who will be assign as administrator</small>
|
||||
@@ -18,9 +18,17 @@
|
||||
<div class="form-group">
|
||||
<label for="admin_password">Password</label>
|
||||
<input type="password" class="form-control" name="admin_password" placeholder="Password">
|
||||
</div>
|
||||
</div> -->
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<div class="form-group">
|
||||
<label for="lblDBHost">Database Host</label>
|
||||
<input type="text" class="form-control" name="db_host" aria-describedby="db_host" placeholder="Database Host" />
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="lblDBName">Database Schema</label>
|
||||
<input type="text" class="form-control" name="db_schema" aria-describedby="db_schema" placeholder="Database Schema">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="lblAdministrator">Database Username</label>
|
||||
<input type="text" class="form-control" name="db_user" aria-describedby="db_user" placeholder="Database Username">
|
||||
|
||||
@@ -70,7 +70,7 @@
|
||||
<div class="col-xs-12 col-sm-12 col-md-12 col-lg-12 p-t-20 p-l-10 p-r-10 p-b-50 bg-white">
|
||||
<div class="row justify-content-center form-group">
|
||||
<!-- <span class="col-md-4"></span> -->
|
||||
<input type="text" class="form-control col-4" id="emp_id" onkeypress="empID()" placeholder="Access PIN">
|
||||
<input type="text" class="form-control col-4" id="emp_id" onkeypress="empID()" placeholder="Employee ID">
|
||||
<!-- <span class="col-md-4"></span> -->
|
||||
</div>
|
||||
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
config = YAML.load_file(Rails.root.join("config/license.yml"))
|
||||
config.fetch(Rails.env, {}).each do |key, value|
|
||||
ENV[key.upcase] = value.to_s
|
||||
if File.exist?("config/license.yml")
|
||||
config = YAML.load_file(Rails.root.join("config/license.yml"))
|
||||
config.fetch(Rails.env, {}).each do |key, value|
|
||||
ENV[key.upcase] = value.to_s
|
||||
end
|
||||
end
|
||||
@@ -1,14 +1,17 @@
|
||||
development:
|
||||
server_mode: cloud
|
||||
license_key: IAAXHpbSWAfvlWGYpDoXvZdmuRABNGk
|
||||
iv_key: vO8MJlASMmPRf6Ivw3QK+A==
|
||||
|
||||
|
||||
test:
|
||||
sx_provision_url: "provision.test.ws/api"
|
||||
shop_name: bitp
|
||||
email: yanaung.nyein@code2lab.com
|
||||
telephone: 111111
|
||||
fax: 111111
|
||||
address: bitp
|
||||
dbhost: vd52jkRoCOPpHX0tsYp1HQ==
|
||||
|
||||
# Do not keep production secrets in the repository,
|
||||
# instead read values from the environment.
|
||||
production:
|
||||
server_mode: cloud
|
||||
license_key: IAAXHpbSWAfvlWGYpDoXvZdmuRABNGk
|
||||
dbschema: 7L5CvrQvsspSYgx5Ng3tDg==
|
||||
|
||||
dbusername: G0QLCPnSiRmGQ7ekVWy5wA==
|
||||
|
||||
dbpassword: ahQVj/eThBKnwpv1tcvNGA==
|
||||
|
||||
api_token:
|
||||
app_token:
|
||||
|
||||
@@ -9,9 +9,9 @@ scope "(:locale)", locale: /en|mm/ do
|
||||
# Action Cable Creation
|
||||
mount ActionCable.server => "/cable"
|
||||
|
||||
#--------- SmartSales Installation ------------#
|
||||
get 'install' => 'install#index'
|
||||
post 'install' => 'install#create'
|
||||
#--------- SmartSales Activation ------------#
|
||||
get 'activate' => 'install#index'
|
||||
post 'activate' => 'install#activate'
|
||||
|
||||
#--------- Login/Authentication ------------#
|
||||
get 'auth/:emp_id' => 'home#show', as: :emp_login
|
||||
|
||||
@@ -12,8 +12,8 @@
|
||||
|
||||
development:
|
||||
secret_key_base: b61d85f8ed2a1a9e0eeece3443b3e8f838d002cc1d9f32115d8e93db920e2957adfedc57501d44741211538f3108b742cdeada87d5bfae796c53da1f90a3cd61
|
||||
sx_provision_url: provision.zsai.ws/api #192.168.1.94:3002
|
||||
server_mode: cloud
|
||||
sx_provision_url: 192.168.1.147:3002/api #provision.zsai.ws/api
|
||||
server_mode: application
|
||||
cipher_type: AES-256-CBC
|
||||
aes_key: <%= ENV['AES_KEY'] %>
|
||||
aes_iv: <%= ENV['AES_IV'] %>
|
||||
|
||||
@@ -213,4 +213,4 @@ zone_queue_station1 = OrderQueueProcessByZone.create({order_queue_station: order
|
||||
zone_queue_station2 = OrderQueueProcessByZone.create({order_queue_station: order_queue_station2, zone: zone})
|
||||
zone_queue_station3 = OrderQueueProcessByZone.create({order_queue_station: zone_order_queue_station, zone: zone})
|
||||
|
||||
puts " Finished System Default Set Up Data vWSsseoZCzxd6xcNf_uS RxzaYyAGzm7VqAZ4hKnv "
|
||||
puts " Finished System Default Set Up Data"
|
||||
|
||||
@@ -23,8 +23,8 @@
|
||||
-- Sample Data
|
||||
------------------------------------------------------------------------------
|
||||
-- insert into item (item_id, name) values (11000001, 'Yummy Gum');
|
||||
-- insert into item_selling_price (item_id, store_id, price, cost) values (11000001, '001',0.20, 0.10);
|
||||
-- insert into item_selling_price (item_id, store_id, price, cost) values (11000001, '002',0.30, 0.20);
|
||||
-- insert into item_selling_price (item_id, cloud_id, price, cost) values (11000001, '001',0.20, 0.10);
|
||||
-- insert into item_selling_price (item_id, cloud_id, price, cost) values (11000001, '002',0.30, 0.20);
|
||||
|
||||
-- insert into sale_transaction (tran_id, store_id, workstation, day, seq)
|
||||
-- values (900, '001', '3', '2012-12-01', 90);
|
||||
@@ -48,6 +48,10 @@ delete from sym_node;
|
||||
|
||||
|
||||
# Create Channels for logically grouped tables
|
||||
# For Initial Data Faster by bulk
|
||||
update sym_channel set data_loader_type='mysql_bulk', max_batch_size=100000, max_data_to_route=100000
|
||||
where channel_id = 'reload';
|
||||
|
||||
insert into sym_channel
|
||||
(channel_id, processing_order, max_batch_size, enabled, description)
|
||||
values('setting', 1, 100000, 1, 'All Settings');
|
||||
@@ -78,10 +82,10 @@ delete from sym_node;
|
||||
|
||||
# Create Node Groups and Links
|
||||
insert into sym_node_group (node_group_id) values ('sx');
|
||||
insert into sym_node_group (node_group_id) values ('store');
|
||||
insert into sym_node_group (node_group_id) values ('cloud');
|
||||
|
||||
insert into sym_node_group_link (source_node_group_id, target_node_group_id, data_event_action) values ('sx', 'store', 'W');
|
||||
insert into sym_node_group_link (source_node_group_id, target_node_group_id, data_event_action) values ('store', 'sx', 'P');
|
||||
insert into sym_node_group_link (source_node_group_id, target_node_group_id, data_event_action) values ('sx', 'cloud', 'W');
|
||||
insert into sym_node_group_link (source_node_group_id, target_node_group_id, data_event_action) values ('cloud', 'sx', 'P');
|
||||
|
||||
# Create Trigger for Setting Channel
|
||||
|
||||
@@ -305,466 +309,466 @@ delete from sym_node;
|
||||
# Create Routers for Nodes
|
||||
insert into sym_router
|
||||
(router_id,source_node_group_id,target_node_group_id,router_type,create_time,last_update_time)
|
||||
values('sx_2_store', 'sx', 'store', 'default',current_timestamp, current_timestamp);
|
||||
values('sx_2_cloud', 'sx', 'cloud', 'default',current_timestamp, current_timestamp);
|
||||
|
||||
insert into sym_router
|
||||
(router_id,source_node_group_id,target_node_group_id,router_type,sync_on_delete,create_time,last_update_time)
|
||||
values('store_2_sx', 'store', 'sx', 'default',0,current_timestamp, current_timestamp);
|
||||
values('cloud_2_sx', 'cloud', 'sx', 'default',0,current_timestamp, current_timestamp);
|
||||
|
||||
-- insert into sym_router
|
||||
-- (router_id,source_node_group_id,target_node_group_id,router_type,router_expression,create_time,last_update_time)
|
||||
-- values('sx_2_one_store', 'sx', 'store', 'column','STORE_ID=:EXTERNAL_ID or OLD_STORE_ID=:EXTERNAL_ID',current_timestamp, current_timestamp);
|
||||
-- values('sx_2_one_cloud', 'sx', 'cloud', 'column','cloud_ID=:EXTERNAL_ID or OLD_cloud_ID=:EXTERNAL_ID',current_timestamp, current_timestamp);
|
||||
|
||||
|
||||
# Add triggers for tables with router
|
||||
|
||||
# Setting Channel # From Store to Master
|
||||
# Setting Channel # From cloud to Master
|
||||
insert into sym_trigger_router
|
||||
(trigger_id,router_id,initial_load_order,last_update_time,create_time)
|
||||
values('lookups','store_2_sx', 100, current_timestamp, current_timestamp);
|
||||
values('lookups','cloud_2_sx', 100, current_timestamp, current_timestamp);
|
||||
|
||||
insert into sym_trigger_router
|
||||
(trigger_id,router_id,initial_load_order,last_update_time,create_time)
|
||||
values('membership_actions','store_2_sx', 100, current_timestamp, current_timestamp);
|
||||
values('membership_actions','cloud_2_sx', 100, current_timestamp, current_timestamp);
|
||||
|
||||
insert into sym_trigger_router
|
||||
(trigger_id,router_id,initial_load_order,last_update_time,create_time)
|
||||
values('membership_settings','store_2_sx', 100, current_timestamp, current_timestamp);
|
||||
values('membership_settings','cloud_2_sx', 100, current_timestamp, current_timestamp);
|
||||
|
||||
insert into sym_trigger_router
|
||||
(trigger_id,router_id,initial_load_order,last_update_time,create_time)
|
||||
values('payment_method_settings','store_2_sx', 100, current_timestamp, current_timestamp);
|
||||
values('payment_method_settings','cloud_2_sx', 100, current_timestamp, current_timestamp);
|
||||
|
||||
insert into sym_trigger_router
|
||||
(trigger_id,router_id,initial_load_order,last_update_time,create_time)
|
||||
values('print_settings','store_2_sx', 100, current_timestamp, current_timestamp);
|
||||
values('print_settings','cloud_2_sx', 100, current_timestamp, current_timestamp);
|
||||
|
||||
insert into sym_trigger_router
|
||||
(trigger_id,router_id,initial_load_order,last_update_time,create_time)
|
||||
values('shops','store_2_sx', 100, current_timestamp, current_timestamp);
|
||||
values('shops','cloud_2_sx', 100, current_timestamp, current_timestamp);
|
||||
|
||||
insert into sym_trigger_router
|
||||
(trigger_id,router_id,initial_load_order,last_update_time,create_time)
|
||||
values('customers','store_2_sx', 100, current_timestamp, current_timestamp);
|
||||
values('customers','cloud_2_sx', 100, current_timestamp, current_timestamp);
|
||||
|
||||
# Setting Channel # From Master to Store
|
||||
# Setting Channel # From Master to cloud
|
||||
insert into sym_trigger_router
|
||||
(trigger_id,router_id,initial_load_order,last_update_time,create_time)
|
||||
values('lookups','sx_2_store', 100, current_timestamp, current_timestamp);
|
||||
values('lookups','sx_2_cloud', 100, current_timestamp, current_timestamp);
|
||||
|
||||
insert into sym_trigger_router
|
||||
(trigger_id,router_id,initial_load_order,last_update_time,create_time)
|
||||
values('membership_actions','sx_2_store', 100, current_timestamp, current_timestamp);
|
||||
values('membership_actions','sx_2_cloud', 100, current_timestamp, current_timestamp);
|
||||
|
||||
insert into sym_trigger_router
|
||||
(trigger_id,router_id,initial_load_order,last_update_time,create_time)
|
||||
values('membership_settings','sx_2_store', 100, current_timestamp, current_timestamp);
|
||||
values('membership_settings','sx_2_cloud', 100, current_timestamp, current_timestamp);
|
||||
|
||||
insert into sym_trigger_router
|
||||
(trigger_id,router_id,initial_load_order,last_update_time,create_time)
|
||||
values('payment_method_settings','sx_2_store', 100, current_timestamp, current_timestamp);
|
||||
values('payment_method_settings','sx_2_cloud', 100, current_timestamp, current_timestamp);
|
||||
|
||||
insert into sym_trigger_router
|
||||
(trigger_id,router_id,initial_load_order,last_update_time,create_time)
|
||||
values('print_settings','sx_2_store', 100, current_timestamp, current_timestamp);
|
||||
values('print_settings','sx_2_cloud', 100, current_timestamp, current_timestamp);
|
||||
|
||||
insert into sym_trigger_router
|
||||
(trigger_id,router_id,initial_load_order,last_update_time,create_time)
|
||||
values('shops','sx_2_store', 100, current_timestamp, current_timestamp);
|
||||
values('shops','sx_2_cloud', 100, current_timestamp, current_timestamp);
|
||||
|
||||
insert into sym_trigger_router
|
||||
(trigger_id,router_id,initial_load_order,last_update_time,create_time)
|
||||
values('customers','sx_2_store', 100, current_timestamp, current_timestamp);
|
||||
values('customers','sx_2_cloud', 100, current_timestamp, current_timestamp);
|
||||
|
||||
#End Setting Channel
|
||||
|
||||
# Dining Channel # From Store to SX
|
||||
# Dining Channel # From cloud to SX
|
||||
insert into sym_trigger_router
|
||||
(trigger_id,router_id,initial_load_order,last_update_time,create_time)
|
||||
values('zones','store_2_sx', 100, current_timestamp, current_timestamp);
|
||||
values('zones','cloud_2_sx', 100, current_timestamp, current_timestamp);
|
||||
|
||||
insert into sym_trigger_router
|
||||
(trigger_id,router_id,initial_load_order,last_update_time,create_time)
|
||||
values('dining_charges','store_2_sx', 100, current_timestamp, current_timestamp);
|
||||
values('dining_charges','cloud_2_sx', 100, current_timestamp, current_timestamp);
|
||||
|
||||
insert into sym_trigger_router
|
||||
(trigger_id,router_id,initial_load_order,last_update_time,create_time)
|
||||
values('dining_facilities','store_2_sx', 100, current_timestamp, current_timestamp);
|
||||
values('dining_facilities','cloud_2_sx', 100, current_timestamp, current_timestamp);
|
||||
|
||||
insert into sym_trigger_router
|
||||
(trigger_id,router_id,initial_load_order,last_update_time,create_time)
|
||||
values('dining_queues','store_2_sx', 100, current_timestamp, current_timestamp);
|
||||
values('dining_queues','cloud_2_sx', 100, current_timestamp, current_timestamp);
|
||||
|
||||
# Dining Channel # From SX to Store
|
||||
# Dining Channel # From SX to cloud
|
||||
insert into sym_trigger_router
|
||||
(trigger_id,router_id,initial_load_order,last_update_time,create_time)
|
||||
values('zones','sx_2_store', 100, current_timestamp, current_timestamp);
|
||||
values('zones','sx_2_cloud', 100, current_timestamp, current_timestamp);
|
||||
|
||||
insert into sym_trigger_router
|
||||
(trigger_id,router_id,initial_load_order,last_update_time,create_time)
|
||||
values('dining_charges','sx_2_store', 100, current_timestamp, current_timestamp);
|
||||
values('dining_charges','sx_2_cloud', 100, current_timestamp, current_timestamp);
|
||||
|
||||
insert into sym_trigger_router
|
||||
(trigger_id,router_id,initial_load_order,last_update_time,create_time)
|
||||
values('dining_facilities','sx_2_store', 100, current_timestamp, current_timestamp);
|
||||
values('dining_facilities','sx_2_cloud', 100, current_timestamp, current_timestamp);
|
||||
|
||||
insert into sym_trigger_router
|
||||
(trigger_id,router_id,initial_load_order,last_update_time,create_time)
|
||||
values('dining_queues','sx_2_store', 100, current_timestamp, current_timestamp);
|
||||
values('dining_queues','sx_2_cloud', 100, current_timestamp, current_timestamp);
|
||||
|
||||
#end Dining Channel
|
||||
|
||||
# Commission/Promotion/Product Channel # From Store to SX
|
||||
# Commission/Promotion/Product Channel # From cloud to SX
|
||||
insert into sym_trigger_router
|
||||
(trigger_id,router_id,initial_load_order,last_update_time,create_time)
|
||||
values('commissioners','store_2_sx', 100, current_timestamp, current_timestamp);
|
||||
values('commissioners','cloud_2_sx', 100, current_timestamp, current_timestamp);
|
||||
|
||||
insert into sym_trigger_router
|
||||
(trigger_id,router_id,initial_load_order,last_update_time,create_time)
|
||||
values('commissions','store_2_sx', 100, current_timestamp, current_timestamp);
|
||||
values('commissions','cloud_2_sx', 100, current_timestamp, current_timestamp);
|
||||
|
||||
insert into sym_trigger_router
|
||||
(trigger_id,router_id,initial_load_order,last_update_time,create_time)
|
||||
values('employees','store_2_sx', 100, current_timestamp, current_timestamp);
|
||||
values('employees','cloud_2_sx', 100, current_timestamp, current_timestamp);
|
||||
|
||||
insert into sym_trigger_router
|
||||
(trigger_id,router_id,initial_load_order,last_update_time,create_time)
|
||||
values('in_duties','store_2_sx', 100, current_timestamp, current_timestamp);
|
||||
values('in_duties','cloud_2_sx', 100, current_timestamp, current_timestamp);
|
||||
|
||||
insert into sym_trigger_router
|
||||
(trigger_id,router_id,initial_load_order,last_update_time,create_time)
|
||||
values('inventory_definitions','store_2_sx', 100, current_timestamp, current_timestamp);
|
||||
values('inventory_definitions','cloud_2_sx', 100, current_timestamp, current_timestamp);
|
||||
|
||||
insert into sym_trigger_router
|
||||
(trigger_id,router_id,initial_load_order,last_update_time,create_time)
|
||||
values('product_commissions','store_2_sx', 100, current_timestamp, current_timestamp);
|
||||
values('product_commissions','cloud_2_sx', 100, current_timestamp, current_timestamp);
|
||||
|
||||
insert into sym_trigger_router
|
||||
(trigger_id,router_id,initial_load_order,last_update_time,create_time)
|
||||
values('products','store_2_sx', 100, current_timestamp, current_timestamp);
|
||||
values('products','cloud_2_sx', 100, current_timestamp, current_timestamp);
|
||||
|
||||
insert into sym_trigger_router
|
||||
(trigger_id,router_id,initial_load_order,last_update_time,create_time)
|
||||
values('promotion_products','store_2_sx', 100, current_timestamp, current_timestamp);
|
||||
values('promotion_products','cloud_2_sx', 100, current_timestamp, current_timestamp);
|
||||
|
||||
insert into sym_trigger_router
|
||||
(trigger_id,router_id,initial_load_order,last_update_time,create_time)
|
||||
values('promotions','store_2_sx', 100, current_timestamp, current_timestamp);
|
||||
values('promotions','cloud_2_sx', 100, current_timestamp, current_timestamp);
|
||||
|
||||
# Commission/Promotion/Product Channel # From SX to Store
|
||||
# Commission/Promotion/Product Channel # From SX to cloud
|
||||
insert into sym_trigger_router
|
||||
(trigger_id,router_id,initial_load_order,last_update_time,create_time)
|
||||
values('commissioners','sx_2_store', 100, current_timestamp, current_timestamp);
|
||||
values('commissioners','sx_2_cloud', 100, current_timestamp, current_timestamp);
|
||||
|
||||
insert into sym_trigger_router
|
||||
(trigger_id,router_id,initial_load_order,last_update_time,create_time)
|
||||
values('commissions','sx_2_store', 100, current_timestamp, current_timestamp);
|
||||
values('commissions','sx_2_cloud', 100, current_timestamp, current_timestamp);
|
||||
|
||||
insert into sym_trigger_router
|
||||
(trigger_id,router_id,initial_load_order,last_update_time,create_time)
|
||||
values('employees','sx_2_store', 100, current_timestamp, current_timestamp);
|
||||
values('employees','sx_2_cloud', 100, current_timestamp, current_timestamp);
|
||||
|
||||
insert into sym_trigger_router
|
||||
(trigger_id,router_id,initial_load_order,last_update_time,create_time)
|
||||
values('in_duties','sx_2_store', 100, current_timestamp, current_timestamp);
|
||||
values('in_duties','sx_2_cloud', 100, current_timestamp, current_timestamp);
|
||||
|
||||
insert into sym_trigger_router
|
||||
(trigger_id,router_id,initial_load_order,last_update_time,create_time)
|
||||
values('inventory_definitions','sx_2_store', 100, current_timestamp, current_timestamp);
|
||||
values('inventory_definitions','sx_2_cloud', 100, current_timestamp, current_timestamp);
|
||||
|
||||
insert into sym_trigger_router
|
||||
(trigger_id,router_id,initial_load_order,last_update_time,create_time)
|
||||
values('product_commissions','sx_2_store', 100, current_timestamp, current_timestamp);
|
||||
values('product_commissions','sx_2_cloud', 100, current_timestamp, current_timestamp);
|
||||
|
||||
insert into sym_trigger_router
|
||||
(trigger_id,router_id,initial_load_order,last_update_time,create_time)
|
||||
values('products','sx_2_store', 100, current_timestamp, current_timestamp);
|
||||
values('products','sx_2_cloud', 100, current_timestamp, current_timestamp);
|
||||
|
||||
insert into sym_trigger_router
|
||||
(trigger_id,router_id,initial_load_order,last_update_time,create_time)
|
||||
values('promotion_products','sx_2_store', 100, current_timestamp, current_timestamp);
|
||||
values('promotion_products','sx_2_cloud', 100, current_timestamp, current_timestamp);
|
||||
|
||||
insert into sym_trigger_router
|
||||
(trigger_id,router_id,initial_load_order,last_update_time,create_time)
|
||||
values('promotions','sx_2_store', 100, current_timestamp, current_timestamp);
|
||||
values('promotions','sx_2_cloud', 100, current_timestamp, current_timestamp);
|
||||
|
||||
#end Commission/Promotion/Product Channel
|
||||
|
||||
# Menu Channel # From Store to SX
|
||||
# Menu Channel # From cloud to SX
|
||||
insert into sym_trigger_router
|
||||
(trigger_id,router_id,initial_load_order,last_update_time,create_time)
|
||||
values('accounts','store_2_sx', 100, current_timestamp, current_timestamp);
|
||||
values('accounts','cloud_2_sx', 100, current_timestamp, current_timestamp);
|
||||
|
||||
insert into sym_trigger_router
|
||||
(trigger_id,router_id,initial_load_order,last_update_time,create_time)
|
||||
values('menu_item_attributes','store_2_sx', 100, current_timestamp, current_timestamp);
|
||||
values('menu_item_attributes','cloud_2_sx', 100, current_timestamp, current_timestamp);
|
||||
|
||||
insert into sym_trigger_router
|
||||
(trigger_id,router_id,initial_load_order,last_update_time,create_time)
|
||||
values('menu_item_options','store_2_sx', 100, current_timestamp, current_timestamp);
|
||||
values('menu_item_options','cloud_2_sx', 100, current_timestamp, current_timestamp);
|
||||
|
||||
insert into sym_trigger_router
|
||||
(trigger_id,router_id,initial_load_order,last_update_time,create_time)
|
||||
values('menus','store_2_sx', 100, current_timestamp, current_timestamp);
|
||||
values('menus','cloud_2_sx', 100, current_timestamp, current_timestamp);
|
||||
|
||||
insert into sym_trigger_router
|
||||
(trigger_id,router_id,initial_load_order,last_update_time,create_time)
|
||||
values('menu_categories','store_2_sx', 100, current_timestamp, current_timestamp);
|
||||
values('menu_categories','cloud_2_sx', 100, current_timestamp, current_timestamp);
|
||||
|
||||
insert into sym_trigger_router
|
||||
(trigger_id,router_id,initial_load_order,last_update_time,create_time)
|
||||
values('menu_items','store_2_sx', 100, current_timestamp, current_timestamp);
|
||||
values('menu_items','cloud_2_sx', 100, current_timestamp, current_timestamp);
|
||||
|
||||
insert into sym_trigger_router
|
||||
(trigger_id,router_id,initial_load_order,last_update_time,create_time)
|
||||
values('menu_item_instances','store_2_sx', 100, current_timestamp, current_timestamp);
|
||||
values('menu_item_instances','cloud_2_sx', 100, current_timestamp, current_timestamp);
|
||||
|
||||
insert into sym_trigger_router
|
||||
(trigger_id,router_id,initial_load_order,last_update_time,create_time)
|
||||
values('item_sets','store_2_sx', 100, current_timestamp, current_timestamp);
|
||||
values('item_sets','cloud_2_sx', 100, current_timestamp, current_timestamp);
|
||||
|
||||
insert into sym_trigger_router
|
||||
(trigger_id,router_id,initial_load_order,last_update_time,create_time)
|
||||
values('menu_item_sets','store_2_sx', 100, current_timestamp, current_timestamp);
|
||||
values('menu_item_sets','cloud_2_sx', 100, current_timestamp, current_timestamp);
|
||||
|
||||
insert into sym_trigger_router
|
||||
(trigger_id,router_id,initial_load_order,last_update_time,create_time)
|
||||
values('menu_instance_item_sets','store_2_sx', 100, current_timestamp, current_timestamp);
|
||||
values('menu_instance_item_sets','cloud_2_sx', 100, current_timestamp, current_timestamp);
|
||||
|
||||
# Menu Channel # From SX to Store
|
||||
# Menu Channel # From SX to cloud
|
||||
insert into sym_trigger_router
|
||||
(trigger_id,router_id,initial_load_order,last_update_time,create_time)
|
||||
values('accounts','sx_2_store', 100, current_timestamp, current_timestamp);
|
||||
values('accounts','sx_2_cloud', 100, current_timestamp, current_timestamp);
|
||||
|
||||
insert into sym_trigger_router
|
||||
(trigger_id,router_id,initial_load_order,last_update_time,create_time)
|
||||
values('menu_item_attributes','sx_2_store', 100, current_timestamp, current_timestamp);
|
||||
values('menu_item_attributes','sx_2_cloud', 100, current_timestamp, current_timestamp);
|
||||
|
||||
insert into sym_trigger_router
|
||||
(trigger_id,router_id,initial_load_order,last_update_time,create_time)
|
||||
values('menu_item_options','sx_2_store', 100, current_timestamp, current_timestamp);
|
||||
values('menu_item_options','sx_2_cloud', 100, current_timestamp, current_timestamp);
|
||||
|
||||
insert into sym_trigger_router
|
||||
(trigger_id,router_id,initial_load_order,last_update_time,create_time)
|
||||
values('menus','sx_2_store', 100, current_timestamp, current_timestamp);
|
||||
values('menus','sx_2_cloud', 100, current_timestamp, current_timestamp);
|
||||
|
||||
insert into sym_trigger_router
|
||||
(trigger_id,router_id,initial_load_order,last_update_time,create_time)
|
||||
values('menu_categories','sx_2_store', 100, current_timestamp, current_timestamp);
|
||||
values('menu_categories','sx_2_cloud', 100, current_timestamp, current_timestamp);
|
||||
|
||||
insert into sym_trigger_router
|
||||
(trigger_id,router_id,initial_load_order,last_update_time,create_time)
|
||||
values('menu_items','sx_2_store', 100, current_timestamp, current_timestamp);
|
||||
values('menu_items','sx_2_cloud', 100, current_timestamp, current_timestamp);
|
||||
|
||||
insert into sym_trigger_router
|
||||
(trigger_id,router_id,initial_load_order,last_update_time,create_time)
|
||||
values('menu_item_instances','sx_2_store', 100, current_timestamp, current_timestamp);
|
||||
values('menu_item_instances','sx_2_cloud', 100, current_timestamp, current_timestamp);
|
||||
|
||||
insert into sym_trigger_router
|
||||
(trigger_id,router_id,initial_load_order,last_update_time,create_time)
|
||||
values('item_sets','sx_2_store', 100, current_timestamp, current_timestamp);
|
||||
values('item_sets','sx_2_cloud', 100, current_timestamp, current_timestamp);
|
||||
|
||||
insert into sym_trigger_router
|
||||
(trigger_id,router_id,initial_load_order,last_update_time,create_time)
|
||||
values('menu_item_sets','sx_2_store', 100, current_timestamp, current_timestamp);
|
||||
values('menu_item_sets','sx_2_cloud', 100, current_timestamp, current_timestamp);
|
||||
|
||||
insert into sym_trigger_router
|
||||
(trigger_id,router_id,initial_load_order,last_update_time,create_time)
|
||||
values('menu_instance_item_sets','sx_2_store', 100, current_timestamp, current_timestamp);
|
||||
values('menu_instance_item_sets','sx_2_cloud', 100, current_timestamp, current_timestamp);
|
||||
#End Menu Channel
|
||||
|
||||
# Order Channel # From Store to Sx
|
||||
# Order Channel # From cloud to Sx
|
||||
insert into sym_trigger_router
|
||||
(trigger_id,router_id,initial_load_order,last_update_time,create_time)
|
||||
values('orders','store_2_sx', 200, current_timestamp, current_timestamp);
|
||||
values('orders','cloud_2_sx', 200, current_timestamp, current_timestamp);
|
||||
|
||||
insert into sym_trigger_router
|
||||
(trigger_id,router_id,initial_load_order,last_update_time,create_time)
|
||||
values('order_items','store_2_sx', 200, current_timestamp, current_timestamp);
|
||||
values('order_items','cloud_2_sx', 200, current_timestamp, current_timestamp);
|
||||
|
||||
insert into sym_trigger_router
|
||||
(trigger_id,router_id,initial_load_order,last_update_time,create_time)
|
||||
values('bookings','store_2_sx', 200, current_timestamp, current_timestamp);
|
||||
values('bookings','cloud_2_sx', 200, current_timestamp, current_timestamp);
|
||||
|
||||
insert into sym_trigger_router
|
||||
(trigger_id,router_id,initial_load_order,last_update_time,create_time)
|
||||
values('booking_orders','store_2_sx', 200, current_timestamp, current_timestamp);
|
||||
values('booking_orders','cloud_2_sx', 200, current_timestamp, current_timestamp);
|
||||
|
||||
# Order Channel # From SX to Store
|
||||
# Order Channel # From SX to cloud
|
||||
insert into sym_trigger_router
|
||||
(trigger_id,router_id,initial_load_order,last_update_time,create_time)
|
||||
values('orders','sx_2_store', 200, current_timestamp, current_timestamp);
|
||||
values('orders','sx_2_cloud', 200, current_timestamp, current_timestamp);
|
||||
|
||||
insert into sym_trigger_router
|
||||
(trigger_id,router_id,initial_load_order,last_update_time,create_time)
|
||||
values('order_items','sx_2_store', 200, current_timestamp, current_timestamp);
|
||||
values('order_items','sx_2_cloud', 200, current_timestamp, current_timestamp);
|
||||
|
||||
insert into sym_trigger_router
|
||||
(trigger_id,router_id,initial_load_order,last_update_time,create_time)
|
||||
values('bookings','sx_2_store', 200, current_timestamp, current_timestamp);
|
||||
values('bookings','sx_2_cloud', 200, current_timestamp, current_timestamp);
|
||||
|
||||
insert into sym_trigger_router
|
||||
(trigger_id,router_id,initial_load_order,last_update_time,create_time)
|
||||
values('booking_orders','sx_2_store', 200, current_timestamp, current_timestamp);
|
||||
values('booking_orders','sx_2_cloud', 200, current_timestamp, current_timestamp);
|
||||
# End Order Channel
|
||||
|
||||
# Sale Channel # From Store to Sx
|
||||
# Sale Channel # From cloud to Sx
|
||||
insert into sym_trigger_router
|
||||
(trigger_id,router_id,initial_load_order,last_update_time,create_time)
|
||||
values('sales','store_2_sx', 200, current_timestamp, current_timestamp);
|
||||
values('sales','cloud_2_sx', 200, current_timestamp, current_timestamp);
|
||||
|
||||
insert into sym_trigger_router
|
||||
(trigger_id,router_id,initial_load_order,last_update_time,create_time)
|
||||
values('sale_items','store_2_sx', 200, current_timestamp, current_timestamp);
|
||||
values('sale_items','cloud_2_sx', 200, current_timestamp, current_timestamp);
|
||||
|
||||
insert into sym_trigger_router
|
||||
(trigger_id,router_id,initial_load_order,last_update_time,create_time)
|
||||
values('sale_audits','store_2_sx', 200, current_timestamp, current_timestamp);
|
||||
values('sale_audits','cloud_2_sx', 200, current_timestamp, current_timestamp);
|
||||
|
||||
insert into sym_trigger_router
|
||||
(trigger_id,router_id,initial_load_order,last_update_time,create_time)
|
||||
values('sale_orders','store_2_sx', 200, current_timestamp, current_timestamp);
|
||||
values('sale_orders','cloud_2_sx', 200, current_timestamp, current_timestamp);
|
||||
|
||||
insert into sym_trigger_router
|
||||
(trigger_id,router_id,initial_load_order,last_update_time,create_time)
|
||||
values('sale_payments','store_2_sx', 200, current_timestamp, current_timestamp);
|
||||
values('sale_payments','cloud_2_sx', 200, current_timestamp, current_timestamp);
|
||||
|
||||
insert into sym_trigger_router
|
||||
(trigger_id,router_id,initial_load_order,last_update_time,create_time)
|
||||
values('sale_taxes','store_2_sx', 200, current_timestamp, current_timestamp);
|
||||
values('sale_taxes','cloud_2_sx', 200, current_timestamp, current_timestamp);
|
||||
|
||||
insert into sym_trigger_router
|
||||
(trigger_id,router_id,initial_load_order,last_update_time,create_time)
|
||||
values('payment_journals','store_2_sx', 200, current_timestamp, current_timestamp);
|
||||
values('payment_journals','cloud_2_sx', 200, current_timestamp, current_timestamp);
|
||||
|
||||
insert into sym_trigger_router
|
||||
(trigger_id,router_id,initial_load_order,last_update_time,create_time)
|
||||
values('shift_sales','store_2_sx', 200, current_timestamp, current_timestamp);
|
||||
values('shift_sales','cloud_2_sx', 200, current_timestamp, current_timestamp);
|
||||
|
||||
insert into sym_trigger_router
|
||||
(trigger_id,router_id,initial_load_order,last_update_time,create_time)
|
||||
values('stock_check_items','store_2_sx', 200, current_timestamp, current_timestamp);
|
||||
values('stock_check_items','cloud_2_sx', 200, current_timestamp, current_timestamp);
|
||||
|
||||
insert into sym_trigger_router
|
||||
(trigger_id,router_id,initial_load_order,last_update_time,create_time)
|
||||
values('stock_checks','store_2_sx', 200, current_timestamp, current_timestamp);
|
||||
values('stock_checks','cloud_2_sx', 200, current_timestamp, current_timestamp);
|
||||
|
||||
insert into sym_trigger_router
|
||||
(trigger_id,router_id,initial_load_order,last_update_time,create_time)
|
||||
values('stock_journals','store_2_sx', 200, current_timestamp, current_timestamp);
|
||||
values('stock_journals','cloud_2_sx', 200, current_timestamp, current_timestamp);
|
||||
|
||||
insert into sym_trigger_router
|
||||
(trigger_id,router_id,initial_load_order,last_update_time,create_time)
|
||||
values('surveys','store_2_sx', 200, current_timestamp, current_timestamp);
|
||||
values('surveys','cloud_2_sx', 200, current_timestamp, current_timestamp);
|
||||
|
||||
# Sale Channel # From SX to Store
|
||||
# Sale Channel # From SX to cloud
|
||||
insert into sym_trigger_router
|
||||
(trigger_id,router_id,initial_load_order,last_update_time,create_time)
|
||||
values('sales','sx_2_store', 200, current_timestamp, current_timestamp);
|
||||
values('sales','sx_2_cloud', 200, current_timestamp, current_timestamp);
|
||||
|
||||
insert into sym_trigger_router
|
||||
(trigger_id,router_id,initial_load_order,last_update_time,create_time)
|
||||
values('sale_items','sx_2_store', 200, current_timestamp, current_timestamp);
|
||||
values('sale_items','sx_2_cloud', 200, current_timestamp, current_timestamp);
|
||||
|
||||
insert into sym_trigger_router
|
||||
(trigger_id,router_id,initial_load_order,last_update_time,create_time)
|
||||
values('sale_audits','sx_2_store', 200, current_timestamp, current_timestamp);
|
||||
values('sale_audits','sx_2_cloud', 200, current_timestamp, current_timestamp);
|
||||
|
||||
insert into sym_trigger_router
|
||||
(trigger_id,router_id,initial_load_order,last_update_time,create_time)
|
||||
values('sale_orders','sx_2_store', 200, current_timestamp, current_timestamp);
|
||||
values('sale_orders','sx_2_cloud', 200, current_timestamp, current_timestamp);
|
||||
|
||||
insert into sym_trigger_router
|
||||
(trigger_id,router_id,initial_load_order,last_update_time,create_time)
|
||||
values('sale_payments','sx_2_store', 200, current_timestamp, current_timestamp);
|
||||
values('sale_payments','sx_2_cloud', 200, current_timestamp, current_timestamp);
|
||||
|
||||
insert into sym_trigger_router
|
||||
(trigger_id,router_id,initial_load_order,last_update_time,create_time)
|
||||
values('sale_taxes','sx_2_store', 200, current_timestamp, current_timestamp);
|
||||
values('sale_taxes','sx_2_cloud', 200, current_timestamp, current_timestamp);
|
||||
|
||||
insert into sym_trigger_router
|
||||
(trigger_id,router_id,initial_load_order,last_update_time,create_time)
|
||||
values('payment_journals','sx_2_store', 200, current_timestamp, current_timestamp);
|
||||
values('payment_journals','sx_2_cloud', 200, current_timestamp, current_timestamp);
|
||||
|
||||
insert into sym_trigger_router
|
||||
(trigger_id,router_id,initial_load_order,last_update_time,create_time)
|
||||
values('shift_sales','sx_2_store', 200, current_timestamp, current_timestamp);
|
||||
values('shift_sales','sx_2_cloud', 200, current_timestamp, current_timestamp);
|
||||
|
||||
insert into sym_trigger_router
|
||||
(trigger_id,router_id,initial_load_order,last_update_time,create_time)
|
||||
values('stock_check_items','sx_2_store', 200, current_timestamp, current_timestamp);
|
||||
values('stock_check_items','sx_2_cloud', 200, current_timestamp, current_timestamp);
|
||||
|
||||
insert into sym_trigger_router
|
||||
(trigger_id,router_id,initial_load_order,last_update_time,create_time)
|
||||
values('stock_checks','sx_2_store', 200, current_timestamp, current_timestamp);
|
||||
values('stock_checks','sx_2_cloud', 200, current_timestamp, current_timestamp);
|
||||
|
||||
insert into sym_trigger_router
|
||||
(trigger_id,router_id,initial_load_order,last_update_time,create_time)
|
||||
values('stock_journals','sx_2_store', 200, current_timestamp, current_timestamp);
|
||||
values('stock_journals','sx_2_cloud', 200, current_timestamp, current_timestamp);
|
||||
|
||||
insert into sym_trigger_router
|
||||
(trigger_id,router_id,initial_load_order,last_update_time,create_time)
|
||||
values('surveys','sx_2_store', 200, current_timestamp, current_timestamp);
|
||||
values('surveys','sx_2_cloud', 200, current_timestamp, current_timestamp);
|
||||
# End Sale Channel
|
||||
|
||||
# Oqs Channel # From Store to Sx
|
||||
# Oqs Channel # From cloud to Sx
|
||||
insert into sym_trigger_router
|
||||
(trigger_id,router_id,initial_load_order,last_update_time,create_time)
|
||||
values('assigned_order_items','store_2_sx', 200, current_timestamp, current_timestamp);
|
||||
values('assigned_order_items','cloud_2_sx', 200, current_timestamp, current_timestamp);
|
||||
|
||||
insert into sym_trigger_router
|
||||
(trigger_id,router_id,initial_load_order,last_update_time,create_time)
|
||||
values('cashier_terminals','store_2_sx', 200, current_timestamp, current_timestamp);
|
||||
values('cashier_terminals','cloud_2_sx', 200, current_timestamp, current_timestamp);
|
||||
|
||||
insert into sym_trigger_router
|
||||
(trigger_id,router_id,initial_load_order,last_update_time,create_time)
|
||||
values('cashier_terminal_by_zones','store_2_sx', 200, current_timestamp, current_timestamp);
|
||||
values('cashier_terminal_by_zones','cloud_2_sx', 200, current_timestamp, current_timestamp);
|
||||
|
||||
insert into sym_trigger_router
|
||||
(trigger_id,router_id,initial_load_order,last_update_time,create_time)
|
||||
values('cashier_login_logs','store_2_sx', 200, current_timestamp, current_timestamp);
|
||||
values('cashier_login_logs','cloud_2_sx', 200, current_timestamp, current_timestamp);
|
||||
|
||||
insert into sym_trigger_router
|
||||
(trigger_id,router_id,initial_load_order,last_update_time,create_time)
|
||||
values('order_queue_process_by_zones','store_2_sx', 200, current_timestamp, current_timestamp);
|
||||
values('order_queue_process_by_zones','cloud_2_sx', 200, current_timestamp, current_timestamp);
|
||||
|
||||
insert into sym_trigger_router
|
||||
(trigger_id,router_id,initial_load_order,last_update_time,create_time)
|
||||
values('order_queue_stations','store_2_sx', 200, current_timestamp, current_timestamp);
|
||||
values('order_queue_stations','cloud_2_sx', 200, current_timestamp, current_timestamp);
|
||||
|
||||
# Oqs Channel # From SX to Store
|
||||
# Oqs Channel # From SX to cloud
|
||||
insert into sym_trigger_router
|
||||
(trigger_id,router_id,initial_load_order,last_update_time,create_time)
|
||||
values('assigned_order_items','sx_2_store', 200, current_timestamp, current_timestamp);
|
||||
values('assigned_order_items','sx_2_cloud', 200, current_timestamp, current_timestamp);
|
||||
|
||||
insert into sym_trigger_router
|
||||
(trigger_id,router_id,initial_load_order,last_update_time,create_time)
|
||||
values('cashier_terminals','sx_2_store', 200, current_timestamp, current_timestamp);
|
||||
values('cashier_terminals','sx_2_cloud', 200, current_timestamp, current_timestamp);
|
||||
|
||||
insert into sym_trigger_router
|
||||
(trigger_id,router_id,initial_load_order,last_update_time,create_time)
|
||||
values('cashier_terminal_by_zones','sx_2_store', 200, current_timestamp, current_timestamp);
|
||||
values('cashier_terminal_by_zones','sx_2_cloud', 200, current_timestamp, current_timestamp);
|
||||
|
||||
insert into sym_trigger_router
|
||||
(trigger_id,router_id,initial_load_order,last_update_time,create_time)
|
||||
values('cashier_login_logs','sx_2_store', 200, current_timestamp, current_timestamp);
|
||||
values('cashier_login_logs','sx_2_cloud', 200, current_timestamp, current_timestamp);
|
||||
|
||||
insert into sym_trigger_router
|
||||
(trigger_id,router_id,initial_load_order,last_update_time,create_time)
|
||||
values('order_queue_process_by_zones','sx_2_store', 200, current_timestamp, current_timestamp);
|
||||
values('order_queue_process_by_zones','sx_2_cloud', 200, current_timestamp, current_timestamp);
|
||||
|
||||
insert into sym_trigger_router
|
||||
(trigger_id,router_id,initial_load_order,last_update_time,create_time)
|
||||
values('order_queue_stations','sx_2_store', 200, current_timestamp, current_timestamp);
|
||||
values('order_queue_stations','sx_2_cloud', 200, current_timestamp, current_timestamp);
|
||||
# End Oqs Channel
|
||||
|
||||
|
||||
insert into sym_node (node_id,node_group_id,external_id,sync_enabled,sync_url,schema_version,symmetric_version,database_type,database_version,heartbeat_time,timezone_offset,batch_to_send_count,batch_in_error_count,created_at_node_id)
|
||||
values ('000','sx','000',1,null,null,null,null,null,current_timestamp,null,0,0,'000');
|
||||
insert into sym_node (node_id,node_group_id,external_id,sync_enabled,sync_url,schema_version,symmetric_version,database_type,database_version,heartbeat_time,timezone_offset,batch_to_send_count,batch_in_error_count,created_at_node_id)
|
||||
values ('001','store','001',1,null,null,null,null,null,current_timestamp,null,0,0,'000');
|
||||
values ('001','cloud','001',1,null,null,null,null,null,current_timestamp,null,0,0,'000');
|
||||
-- insert into sym_node (node_id,node_group_id,external_id,sync_enabled,sync_url,schema_version,symmetric_version,database_type,database_version,heartbeat_time,timezone_offset,batch_to_send_count,batch_in_error_count,created_at_node_id)
|
||||
-- values ('002','store','002',1,null,null,null,null,null,current_timestamp,null,0,0,'000');
|
||||
-- values ('002','cloud','002',1,null,null,null,null,null,current_timestamp,null,0,0,'000');
|
||||
|
||||
|
||||
insert into sym_node_security (node_id,node_password,registration_enabled,registration_time,initial_load_enabled,initial_load_time,created_at_node_id)
|
||||
|
||||
Reference in New Issue
Block a user