def mod_list(dic_, write_file_TF): if write_file_TF: txb_sn = db_test.key_exist_in_object('txb_sn', dic_) txb_ip = db_test.key_exist_in_object('txb_ip', dic_) txb_ver = db_test.key_exist_in_object('txb_ver', dic_) txb_area = db_test.key_exist_in_object('txb_area', dic_) curr_link = db_test.key_exist_in_object('curr_link', dic_) txb_max_link = db_test.key_exist_in_object('txb_max_link', dic_) if txb_ver.split(',')[0] == 'Thin': txb_pro = 'D' else: txb_pro = 'S' dic_.update({'txb_pro': txb_pro}) #txb_pro = db_test.key_exist_in_object('txb_pro',dic_) txb_act = db_test.key_exist_in_object('txb_act', dic_) if record_mode == "0": db_test.write_temp(dic_, 0, 'update_relation') # 0 : Overwrite status db_test.write_temp(dic_, 1, 'update_relation') # 1 : Overwrite relation elif record_mode == "1": sqlcmd = 'update dfh.tb_vip_relation set ' if len(txb_ver) > 0: sqlcmd = sqlcmd + 'version = \'' + txb_ver + '\',' if len(txb_area) > 0: sqlcmd = sqlcmd + 'area = \'' + txb_area + '\',' if txb_max_link != "--" and len(txb_max_link) > 0: sqlcmd = sqlcmd + 'max_link = \'' + txb_max_link + '\',' if txb_pro != "--" and len(txb_pro) > 0: sqlcmd = sqlcmd + 'pro = \'' + txb_pro + '\',' if txb_act != "--" and len(txb_act) > 0: sqlcmd = sqlcmd + 'act = \'' + txb_act + '\',' sqlcmd = sqlcmd + 'last_update = timezone(\'CCT\'::text, now()) where sn =\'' + txb_sn + '\';' db_test.DB_update_connect(sqlcmd) DB_log('DEBUG', 'mod_list', '==== mod_list complete ====') if record_mode == "0": results = db_test.read_information_from_temp( 1) #0: tb_vip_status, 1: tb_vip_relation elif record_mode == "1": sqlcmd = 'select sn,ip,version,area,max_link,pro,act,last_update from dfh.tb_vip_relation ORDER BY sn;' results = db_test.DB_select_connect(sqlcmd) return results
def login(id_, pwd_, ver_, area_, ip_): """if id_ != 'slogin': if(len(find_cert(id_,pwd_)) > 0): logout(find_cert(id_,pwd_))""" login_dic = {} login_dic.update({'login_account': id_}) login_dic.update({'login_pwd': pwd_}) login_cert = create_cert() login_dic.update({'login_cert': login_cert}) #20160818 ckernel&dkernel new login mode if ver_.split(',')[0].strip() == '': #account = login_get_account_by_id_from_HK_DB(id_) account = get_competence_by_id(id_) if str(account) == '4': login_dic.update({'account_competence': account}) else: #login_dic.update({'account_competence':get_competence_by_account(account[0][0],account[0][1]+account[0][2])}) login_dic.update({'account_competence': '1'}) login_vip_ip = vip_distribution("Thin" + ver_, area_) hk_login_vip_ip = vip_distribution("WinHK" + ver_, area_) login_dic.update({'HK_login_vip_ip': hk_login_vip_ip}) hk_ip_port = hk_login_vip_ip.split(':') #20160823 ckernel&dkernel old login mode(pending) else: login_vip_ip = vip_distribution(ver_, area_) hk_ip_port = ['', ''] login_dic.update({'login_vip_ip': login_vip_ip}) ip_port = login_vip_ip.split(':') startDate = datetime.datetime.now() expire_date = date(startDate.year + 1, startDate.month, startDate.day) DB_log('DEBUG', 'login', db_test.key_exist_in_object('login_cert', login_dic)) DB_log('DEBUG', 'login', db_test.key_exist_in_object('login_vip_ip', login_dic)) DB_log('DEBUG', 'login', db_test.key_exist_in_object('login_account', login_dic)) #20160321 記錄自打送來的帳號 if record_mode == "0": #db_test.write_temp(login_dic,0,'add_cert') pass elif record_mode == "1": db_test.DB_update_connect( "insert into dfh.tb_vip_certification (ip,account,pwd,cert)VALUES(\'" + login_vip_ip + "\',\'" + str(id_) + "\',\'" + str(pwd_) + "\',\'" + login_cert + "\')") #after add tb_vip_certification 20151229 #20160120 socket_server_test ok dic_result = {} if id_ == 'slogin': #20160122 slogin dic_result.update({'login_vip_ip': ip_port[0]}) dic_result.update({'login_vip_port': ip_port[1]}) dic_result.update({'login_cert': login_cert}) dic_result.update({'expire_date': str(expire_date).replace('-', '')}) return dic_result elif db_test.read_config_list(8)[0] == '0': #beta 0版(歸戶ID不由中菲認證) pass else: data = socket_connect(id_, pwd_) #select backend DB to get """ if id_ == 'slogin': data = b'\x111112288890000000001000AP10000000 \x005001S6460 8889993\xb4\xfa\xb8\xd52 IYYA222456789\n' else: if id_ == 'A123456789': data = b'\x111112288260000000001000AP10000000 \x00\xcb004S6460 8888884\xb4\xfa\xb8\xd51 AYYA123456789S6461 8888883\xb4\xfa\xb8\xd51 AYYA123456789FF0390006666666\xb4\xfa\xb8\xd5\xb1b\xb8\xb9 AYYA123456789FF0390007777774\xb4\xfa\xb8\xd5\xb1b\xb8\xb9 AYYA123456789\n' elif id_ == 'A123456798': data = b'\x111112288570000000002000AP10000000 \x00g002S6460 7777776\xb4\xfa\xb8\xd54 AYYA123456798FF0390005555558\xb4\xfa\xb8\xd5\xb1b\xb8\xb9 AYYA123456798\n' elif id_ == 'M123456789': data = b'\x111112288890000000003000AP10000000 \x005001S6460 8889993\xb4\xfa\xb8\xd52 AYYM123456789\n' """ # 20160113 for login re_list = [] if db_test.read_config_list(8)[0] == '0': futures_account_list = [] stock_account_list = [] TW_futures_account_list = [] TW_stock_account_list = [] #stock account stock_account_result = db_test.DB_select_connect( "select cseq,id,account_mode from public.tb_customer where id = '" + id_ + "' and account_mode = 1") if len(stock_account_result) > 0: for item in stock_account_result: TW_stock_account_list.append(item[0]) dic_result.update({'TW_stock_account_list': TW_stock_account_list}) else: #20170309 新增 若DB無此身分證,預設給台股VIP權限 dic_result.update({'TW_stock_account_list': ["None"]}) #Future account 處理期貨帳號 future_account_result = db_test.DB_select_connect( "select cseq,id,account_mode from public.tb_customer where id = '" + id_ + "' and account_mode = 2") if len(future_account_result) > 0: for item in future_account_result: TW_futures_account_list.append(item[0]) dic_result.update( {'TW_futures_account_list': TW_futures_account_list}) else: #20170309 新增 若DB無此身分證,預設給台股VIP權限 dic_result.update({'TW_futures_account_list': ["None"]}) #if len(future_account_result) == 0 and len(stock_account_result) == 0: #dic_result.update({'errorcode':'0000004'}) #dic_result.update({'error_msg':'查無帳務資料'}) dic_result.update({'login_vip_ip': ip_port[0]}) dic_result.update({'login_vip_port': ip_port[1]}) dic_result.update({'login_cert': login_cert}) dic_result.update({'HK_login_vip_ip': hk_ip_port[0]}) dic_result.update({'HK_login_vip_port': hk_ip_port[1]}) dic_result.update({'TW_futures_account_list': TW_futures_account_list}) dic_result.update({'TW_stock_account_list': TW_stock_account_list}) dic_result.update({'futures_account_list': futures_account_list}) dic_result.update({'stock_account_list': stock_account_list}) dic_result.update({ 'account_competence': db_test.key_exist_in_object('account_competence', login_dic) }) dic_result.update({'expire_date': str(expire_date).replace('-', '')}) dic_result.update({'order_server_ip': db_test.read_config_list(1)}) else: if int.from_bytes(data[48:50], byteorder='little') > 0: cut_count = int(data[50:53].decode('big5')) for r in range(cut_count): re_list.append(data[53 + 50 * r:103 + 50 * r]) if len(re_list) > 0: futures_account_list = [] stock_account_list = [] TW_futures_account_list = [] TW_stock_account_list = [] for item in re_list: if item[37:38].decode('big5') == 'I': if item[0:1].decode('big5') == 'F': TW_futures_account_list.append( item[8:15].decode('big5')) else: # item[0:1].decode('big5') == 'S' TW_stock_account_list.append( item[8:15].decode('big5')) elif item[37:38].decode('big5') == 'O': if item[0:1].decode('big5') == 'F': futures_account_list.append( item[8:15].decode('big5')) else: # item[0:1].decode('big5') == 'S' stock_account_list.append( item[8:15].decode('big5')) else: #item[37:38].decode('big5') == 'A' if item[0:1].decode('big5') == 'F': futures_account_list.append( item[8:15].decode('big5')) TW_futures_account_list.append( item[8:15].decode('big5')) else: # item[0:1].decode('big5') == 'S' stock_account_list.append( item[8:15].decode('big5')) TW_stock_account_list.append( item[8:15].decode('big5')) dic_result.update({'login_vip_ip': ip_port[0]}) dic_result.update({'login_vip_port': ip_port[1]}) dic_result.update({'login_cert': login_cert}) dic_result.update({'HK_login_vip_ip': hk_ip_port[0]}) dic_result.update({'HK_login_vip_port': hk_ip_port[1]}) #20160823 dic_result.update({ 'account_competence': db_test.key_exist_in_object('account_competence', login_dic) }) dic_result.update( {'TW_futures_account_list': TW_futures_account_list}) dic_result.update({'TW_stock_account_list': TW_stock_account_list}) dic_result.update({'futures_account_list': futures_account_list}) # dic_result.update({'stock_account_list': stock_account_list}) # dic_result.update( {'expire_date': str(expire_date).replace('-', '')}) dic_result.update({'order_server_ip': db_test.read_config_list(1)}) else: find_msg = "" dic_result.update({'errorcode': data[26:33].decode('big5')}) for item in db_test.read_config_list(7): if item.split(':')[0] == data[26:33].decode('big5'): find_msg = item.split(':')[1] dic_result.update({'error_msg': find_msg}) DB_log('ERROR', 'login', 'get errorcode = ' + str(data[26:33].decode('big5'))) return dic_result
def del_vip(dic_, write_file_TF): if write_file_TF: txb_sn = db_test.key_exist_in_object('txb_sn', dic_) txb_ip = db_test.key_exist_in_object('txb_ip', dic_) txb_ver = db_test.key_exist_in_object('txb_ver', dic_) txb_area = db_test.key_exist_in_object('txb_area', dic_) curr_link = db_test.key_exist_in_object('curr_link', dic_) txb_max_link = db_test.key_exist_in_object('txb_max_link', dic_) txb_pro = db_test.key_exist_in_object('txb_pro', dic_) txb_act = db_test.key_exist_in_object('txb_act', dic_) og_txb_ip = db_test.key_exist_in_object('og_txb_ip', dic_) og_txb_ver = db_test.key_exist_in_object('og_txb_ver', dic_) og_txb_area = db_test.key_exist_in_object('og_txb_area', dic_) if record_mode == "0": # update file db_test.write_temp(dic_, 0, "del") elif record_mode == "1": if len(og_txb_ip) > 0: sqlcmd = "delete from dfh.tb_vip_relation where ip = \'" + txb_ip + "\'" db_test.DB_update_connect(sqlcmd) if len(og_txb_ver) > 0: sqlcmd = "update dfh.tb_vip_relation set version = \'\',last_update = timezone(\'CCT\'::text, now()) where version = \'" + txb_ver + "\'" db_test.DB_update_connect(sqlcmd) if len(og_txb_area) > 0: sqlcmd = "update dfh.tb_vip_relation set area = \'\',last_update = timezone(\'CCT\'::text, now()) where area = \'" + txb_area + "\'" db_test.DB_update_connect(sqlcmd) db_test.write_config(dic_) DB_log('DEBUG', 'del_vip', "==== del_vip complete ====")
def add_vip(dic_, write_file_TF): if write_file_TF: txb_sn = db_test.key_exist_in_object('txb_sn', dic_) txb_ip = db_test.key_exist_in_object('txb_ip', dic_) txb_ver = db_test.key_exist_in_object('txb_ver', dic_) txb_area = db_test.key_exist_in_object('txb_area', dic_) curr_link = db_test.key_exist_in_object('curr_link', dic_) txb_max_link = db_test.key_exist_in_object('txb_max_link', dic_) txb_pro = db_test.key_exist_in_object('txb_pro', dic_) txb_act = db_test.key_exist_in_object('txb_act', dic_) og_txb_ip = db_test.key_exist_in_object('og_txb_ip', dic_) og_txb_ver = db_test.key_exist_in_object('og_txb_ver', dic_) og_txb_area = db_test.key_exist_in_object('og_txb_area', dic_) if record_mode == "0": # update file db_test.write_temp( dic_, 0, "add") # add only call once, Overwrite status & relation elif record_mode == "1": sqlcmd = "insert into dfh.tb_vip_relation (ip,version,area,max_link,pro,act)values(\'" + txb_ip + "\',\'\',\'\',\'100\',\'S\',\'F\');" db_test.DB_update_connect(sqlcmd) db_test.write_config(dic_) DB_log('DEBUG', 'add_vip', "==== add_vip complete ====")
def set_config(dic_, write_file_TF): if write_file_TF: txb_sn = db_test.key_exist_in_object('txb_sn', dic_) txb_ip = db_test.key_exist_in_object('txb_ip', dic_) txb_ver = db_test.key_exist_in_object('txb_ver', dic_) txb_area = db_test.key_exist_in_object('txb_area', dic_) curr_link = db_test.key_exist_in_object('curr_link', dic_) txb_max_link = db_test.key_exist_in_object('txb_max_link', dic_) txb_pro = db_test.key_exist_in_object('txb_pro', dic_) txb_act = db_test.key_exist_in_object('txb_act', dic_) og_txb_ip = db_test.key_exist_in_object('og_txb_ip', dic_) og_txb_ver = db_test.key_exist_in_object('og_txb_ver', dic_) og_txb_area = db_test.key_exist_in_object('og_txb_area', dic_) if record_mode == "0": # update file db_test.write_temp(dic_, 0, 'set') # 0 : Overwrite status db_test.write_temp(dic_, 1, 'set') # 1 : Overwrite relation elif record_mode == "1": # update postgraSQL if len(og_txb_ip) > 0: sqlcmd = "update dfh.tb_vip_relation set ip = \'" + txb_ip + "\',last_update = timezone(\'CCT\'::text, now()) where ip = \'" + og_txb_ip + "\'" db_test.DB_update_connect(sqlcmd) if len(og_txb_ver) > 0: sqlcmd = "update dfh.tb_vip_relation set version = \'" + txb_ver + "\',last_update = timezone(\'CCT\'::text, now()) where version = \'" + og_txb_ver + "\'" db_test.DB_update_connect(sqlcmd) if len(og_txb_area) > 0: sqlcmd = "update dfh.tb_vip_relation set area = \'" + txb_area + "\',last_update = timezone(\'CCT\'::text, now()) where area = \'" + og_txb_area + "\'" db_test.DB_update_connect(sqlcmd) db_test.write_config(dic_) DB_log('DEBUG', 'broker_set_config', '==== set_config complete ====')