def setup_g2a_verify(request, val): CachedKey = 'qr_' + str(request.user.id) cache = caching() Secret = cache.get(CachedKey, False) if not Secret: return json_false500(request) if g2f.auth(Secret, val): Setting = None SettingType = CustomSettings.objects.get(title = "g2a") try : Setting = UserCustomSettings.objects.get(user = request.user, setting = SettingType ) except UserCustomSettings.DoesNotExist: Setting = UserCustomSettings(user = request.user, setting = SettingType, value = SettingType.def_value ) valid_image = settings.ROOT_PATH + "qr_images/qr_%i.png" % (request.user.id) os.remove(valid_image) Setting.value = Secret Setting.save() request.session['use_f2a'] = True return json_true(request) else : return json_false500(request)
def auth(Req): Nonce = Req.REQUEST.get("nonce", None) if Nonce is None: return json_false500(Req) (Sign, PublicKey) = (None, None) Sign = Req.META.get('HTTP_API_SIGN', None) if Sign is None: return json_false500(Req, { "description": "invalid_params", "key": "api_sign" }) PublicKey = Req.META.get('HTTP_PUBLIC_KEY', None) if PublicKey is None: return json_false500(Req, { "description": "invalid_params", "key": "public_key" }) try: Req.user = check_api_sign(PublicKey, Sign, Req.body) Cache = caching() Cache.set("nonce_" + PublicKey, int(Nonce), 50000) Nonce = Cache.get("nonce_" + PublicKey) return json_true(Req, {"nonce": Nonce, "public_key": PublicKey}) except: return json_false500(Req, {"description": "auth_faild"})
def setup_g2a_verify(request, val): CachedKey = 'qr_' + str(request.user.id) cache = caching() Secret = cache.get(CachedKey, False) if not Secret: return json_false500(request) if g2f.auth(Secret, val): Setting = None SettingType = CustomSettings.objects.get(title="g2a") try: Setting = UserCustomSettings.objects.get(user=request.user, setting=SettingType) except UserCustomSettings.DoesNotExist: Setting = UserCustomSettings(user=request.user, setting=SettingType, value=SettingType.def_value) valid_image = settings.ROOT_PATH + "qr_images/qr_%i.png" % ( request.user.id) os.remove(valid_image) Setting.value = Secret Setting.save() request.session['use_f2a'] = True return json_true(request) else: return json_false500(request)
def login_f2a(request): key = request.REQUEST.get('key', None) password = request.REQUEST.get('password', None) cache = caching() UserIdCached = cache.get(key, False) if not UserIdCached: return json_false500(request) UserIdCachedInt = int(UserIdCached) Setting = UserCustomSettings.objects.get(user_id=UserIdCachedInt, setting__title="g2a") if auth(Setting.value, password): user = User.objects.get(id=UserIdCachedInt) user.backend = 'django.contrib.auth.backends.ModelBackend' login(request, user) request.result_auth = "good" request.session['auth_user_computered'] = True request.session['use_f2a'] = True request.session['user_id'] = user.id request.session['username'] = user.username request.session['email'] = user.email ComisObj = UserCustomSettings.objects.get(user_id=request.user.id, setting__title="deal_comission") DealComission = format_numbers4(Decimal(ComisObj.value) * Decimal("100")) request.session["deal_comission_show"] = DealComission request.session["deal_comission"] = format_numbers4(Decimal(ComisObj.value)) notify_email(user, "auth_notify", request) return HttpResponse("good") else: return json_false500(request)
def japan_stat(Req, Pair): Current = None try: Current = TradePairs.objects.get(url_title = Pair) except : return json_false500(Req) List = StockStat.objects.raw("SELECT * FROM main_stockstat WHERE main_stockstat.Stock_id=%i \ ORDER BY id DESC LIMIT 48 " % (Current.id) ) ListJson = [] VolumeBase = 0 VolumeTrade = 0 for item in List: StartDate = item.start_date VolumeTrade = VolumeTrade + item.VolumeTrade VolumeBase = VolumeBase + item.VolumeBase Key = "%i:%i" % (StartDate.hour, StartDate.minute) ListJson.append([Key, float(item.Start), float(item.Max), float(item.Min), float(item.End), float(item.VolumeTrade) ]) OnlineUsersCount = OnlineUsers.objects.count() ListJson.reverse() Dict = {"trades":ListJson, "online": OnlineUsersCount, "volume_base": str(VolumeBase), "volume_trade": str(VolumeTrade)} RespJ = json.JSONEncoder().encode(Dict) return RespJ
def client_orders(Req, User_id, Title): Dict = {} Current = None try: Current = TradePairs.objects.get(url_title=Title) except: return json_false500(Req) Dict["auth"] = True MyOrders = Orders.objects.raw( "SELECT * FROM main_orders WHERE user_id=%i AND ( \ (currency1_id=%i AND currency2_id=%i ) OR \ (currency2_id=%i AND currency1_id=%i )\ ) AND status='processing' ORDER BY id DESC" % ( User_id, Current.currency_from.id, Current.currency_on.id, Current.currency_from.id, Current.currency_on.id, )) MyOrdersList = [] c = getcontext() c.prec = settings.TRANS_PREC for i in MyOrders: MyOrdersDict = {} MyOrdersDict["pub_date"] = formats.date_format(i.pub_date, "DATETIME_FORMAT") MyOrdersDict["id"] = i.id MyOrdersDict["sum2"] = str(i.sum2) MyOrdersDict["sum1"] = str(i.sum1) if i.currency1 == Current.currency_on: MyOrdersDict["type"] = "sell" Number = i.sum2 / i.sum1 MyOrdersDict["price"] = format_numbers10(i.price) MyOrdersDict["amnt_trade"] = format_numbers10(i.sum1) MyOrdersDict["amnt_base"] = format_numbers10(i.sum2) else: MyOrdersDict["type"] = "buy" Number = i.sum1 / i.sum2 MyOrdersDict["price"] = format_numbers10(i.price) MyOrdersDict["amnt_base"] = format_numbers10(i.sum1) MyOrdersDict["amnt_trade"] = format_numbers10(i.sum2) MyOrdersList.append(MyOrdersDict) balance_sell = Accounts.objects.get(user_id=User_id, currency=Current.currency_on) balance_buy = Accounts.objects.get(user_id=User_id, currency=Current.currency_from) Dict["balance_buy"] = format_numbers_strong(balance_buy.balance) Dict["balance_sell"] = format_numbers_strong(balance_sell.balance) Dict["your_open_orders"] = MyOrdersList RespJ = json.JSONEncoder().encode(Dict) return RespJ
def login_f2a_operation(request): password = request.REQUEST.get('password', None) UserIdCachedInt = request.user.id Setting = UserCustomSettings.objects.get(user_id=UserIdCachedInt, setting__title="g2a") if auth(Setting.value, password): cache = caching() Key = "f2a_" + generate_key("fa_") cache.set(Key, UserIdCachedInt, 20) return HttpResponse(Key) return json_false500(request)
def client_orders(Req, User_id, Title ): Dict = {} Current = None try: Current = TradePairs.objects.get(url_title = Title) except : return json_false500(Req) Dict["auth"] = True MyOrders = Orders.objects.raw("SELECT * FROM main_orders WHERE user_id=%i AND ( \ (currency1_id=%i AND currency2_id=%i ) OR \ (currency2_id=%i AND currency1_id=%i )\ ) AND status='processing' ORDER BY id DESC" % (User_id, Current.currency_from.id, Current.currency_on.id, Current.currency_from.id, Current.currency_on.id, ) ) MyOrdersList = [] c = getcontext() c.prec = settings.TRANS_PREC for i in MyOrders: MyOrdersDict = {} MyOrdersDict["pub_date"] = formats.date_format(i.pub_date, "DATETIME_FORMAT") MyOrdersDict["id"] = i.id MyOrdersDict["sum2"] = str(i.sum2) MyOrdersDict["sum1"] = str(i.sum1) if i.currency1 == Current.currency_on : MyOrdersDict["type"] = "sell" Number = i.sum2 / i.sum1 MyOrdersDict["price"] = format_numbers10(i.price) MyOrdersDict["amnt_trade"] = format_numbers10(i.sum1) MyOrdersDict["amnt_base"] = format_numbers10(i.sum2) else: MyOrdersDict["type"] = "buy" Number = i.sum1/ i.sum2 MyOrdersDict["price"] = format_numbers10(i.price) MyOrdersDict["amnt_base"] = format_numbers10(i.sum1) MyOrdersDict["amnt_trade"] = format_numbers10(i.sum2) MyOrdersList.append(MyOrdersDict) balance_sell = Accounts.objects.get(user_id = User_id, currency = Current.currency_on ) balance_buy = Accounts.objects.get(user_id = User_id, currency = Current.currency_from ) Dict["balance_buy"] = format_numbers_strong(balance_buy.balance ) Dict["balance_sell"] = format_numbers_strong(balance_sell.balance ) Dict["your_open_orders"] = MyOrdersList RespJ = json.JSONEncoder().encode(Dict) return RespJ
def sell_list(Req, Pair): Current = None try: Current = TradePairs.objects.get(url_title = Pair) except : return json_false500(Req) SellList = Orders.objects.filter(status = "processing", currency1 = Current.currency_on, currency2 = Current.currency_from) getcontext().prec = 8 Currency1Title = Current.currency_from.title Currency2Title = Current.currency_on.title AccumSellSum = 0 GroupSellDict = {} for item in SellList : SellSum = item.sum1 ##LTC BuySum = item.sum2 ## UAH Rate = item.price AccumSellSum += SellSum if GroupSellDict.has_key(Rate) : GroupSellDict[Rate][Currency2Title] = GroupSellDict[Rate][Currency2Title] + SellSum GroupSellDict[Rate][Currency1Title] = GroupSellDict[Rate][Currency1Title] + BuySum else : GroupSellDict[Rate] = {Currency2Title: SellSum, Currency1Title: BuySum } ResSellList = [] LL = GroupSellDict.keys() L = [] for i in LL: Temp = Decimal(i) GroupSellDict[Temp] = GroupSellDict[i] L.append( Temp ) L.sort() Price = 0 MinPrice = 0 for i in L: Price = format_numbers10(i) ResSellList.append( {"price":Price, "currency_trade":format_numbers10(GroupSellDict[i][Currency2Title]), "currency_base": format_numbers10(GroupSellDict[i][Currency1Title]) } ) if len(ResSellList): MinPrice = ResSellList[0]["price"] Dict = {"orders_sum":format_numbers10(AccumSellSum), "list":ResSellList, "min_price": MinPrice, "max_price": Price } RespJ = json.JSONEncoder().encode(Dict) return RespJ
def buy_list(Req, Pair): Current = None try: Current = TradePairs.objects.get(url_title = Pair) except : return json_false500(Req) BuyList = Orders.objects.filter(status = "processing", currency1 = Current.currency_from, currency2 = Current.currency_on) getcontext().prec = settings.TRANS_PREC Currency1Title = Current.currency_from.title Currency2Title = Current.currency_on.title List1 = {} AccumBuySum = 0 for item in BuyList : SellSum = item.sum1 ## UAH BuySum = item.sum2 ## LTC Rate = item.price AccumBuySum += SellSum if List1.has_key(Rate) : List1[Rate][Currency1Title] = List1[Rate][Currency1Title] + SellSum List1[Rate][Currency2Title] = List1[Rate][Currency2Title] + BuySum else : List1[Rate] = {Currency1Title: SellSum, Currency2Title: BuySum } ResBuyList = [] LL = List1.keys() L = [] for i in LL: Temp = Decimal(i) List1[Temp] = List1[i] L.append( Temp ) L.sort() L.reverse() Price = 0 MaxPrice = 0 for i in L : Price = format_numbers10(i) ResBuyList.append( {"price":Price, "currency_trade": format_numbers10(List1[i][Currency2Title]), "currency_base": format_numbers10(List1[i][Currency1Title]) } ) if len(ResBuyList): MaxPrice = ResBuyList[0]["price"] Dict = {"orders_sum":format_numbers10(AccumBuySum), "list":ResBuyList, "max_price":MaxPrice, "min_price": Price } RespJ = json.JSONEncoder().encode(Dict) return RespJ
def g2a_qr(request): key = request.REQUEST.get('key') cache = caching() Secret = cache.get("temp_qr" + key, False) if not Secret: return json_false500(request) valid_image = settings.ROOT_PATH + "qr_images/qr_%i.png" % (Secret) with open(valid_image, "rb") as f: Response = HttpResponse(f.read(), mimetype="image/png") Response['Cache-Control'] = 'max-age=0' return Response
def private_key(Req): Use2fa = False if Req.session.has_key("use_f2a"): Use2fa = Req.session["use_f2a"] if not Use2fa: Form = PinForm(Req.POST, user=Req.user) if Form.is_valid(): return user_private_key(Req) else: return json_false500(Req) else: return user_private_key(Req)
def common_secure_confirm(Req): Use2fa = False if Req.session.has_key("use_f2a"): Use2fa = Req.session["use_f2a"] if not Use2fa: Form = PinForm(Req.REQUEST, user=Req.user) if Form.is_valid(): return call_custom_function(Req, Form.fields["pin"].value) else: return json_false500(Req) else: return call_custom_function(Req)
def auth(Req): Nonce = Req.REQUEST.get("nonce", None) if Nonce is None : return json_false500(Req) (Sign, PublicKey) = (None, None) Sign = Req.META.get('HTTP_API_SIGN', None) if Sign is None: return json_false500(Req, {"description":"invalid_params", "key": "api_sign"} ) PublicKey = Req.META.get('HTTP_PUBLIC_KEY', None) if PublicKey is None: return json_false500(Req, {"description":"invalid_params","key": "public_key"} ) try : Req.user = check_api_sign(PublicKey, Sign, Req.body ) Cache = caching() Cache.set("nonce_" + PublicKey, int(Nonce), 50000) Nonce = Cache.get("nonce_" + PublicKey) return json_true(Req, {"nonce": Nonce,"public_key": PublicKey}) except: return json_false500(Req,{"description":"auth_faild"})
def call_custom_function(Req, PrePrivateKey): Avalible = { "confirm_withdraw_bank": confirm_withdraw_bank, "confirm_withdraw_currency": confirm_withdraw_currency, "confirm_withdraw_liqpay": confirm_withdraw_liqpay, "confirm_withdraw_p2p": confirm_withdraw_p2p, "confirm_withdraw_emoney": confirm_withdraw_emoney, } # try: Type = Req.REQUEST.get("key_type") HttpRefferer = Req.META["HTTP_REFERER"] D = HttpRefferer.split("/") Key = D[-1:][0] if HttpRefferer.find(settings.BASE_HOST) == -1: return json_false500(Req) return Avalible[Type](Req, Key, PrePrivateKey)
def call_custom_function(Req, PrePrivateKey): Avalible = { "confirm_withdraw_bank": confirm_withdraw_bank, "confirm_withdraw_currency": confirm_withdraw_currency, "confirm_withdraw_liqpay": confirm_withdraw_liqpay, "confirm_withdraw_p2p": confirm_withdraw_p2p, "confirm_withdraw_emoney": confirm_withdraw_emoney } #try: Type = Req.REQUEST.get("key_type") HttpRefferer = Req.META['HTTP_REFERER'] D = HttpRefferer.split("/") Key = D[-1:][0] if HttpRefferer.find(settings.BASE_HOST) == -1: return json_false500(Req) return Avalible[Type](Req, Key, PrePrivateKey) #except : #return json_false500(Req) #def liqpay_deposit(Req): #if not Req.user.is_authenticated(): #Response = HttpResponse('{"status":"auth_error"}') #Response['Content-Type'] = 'application/json' #return Response #else: #Amnt = Decimal( Req.REQUEST.get("amnt") ) #CurrencyOn = int( Req.REQUEST.get("currency") ) #Account = Accounts.objects.get(currency = CurrencyOn, user = Req.user ) #Account = Accounts.objects.get(currency = CurrencyOn, user_id = settings.aquiring_user )
def japan_stat(Req, Pair): Current = None try: Current = TradePairs.objects.get(url_title=Pair) except: return json_false500(Req) List = StockStat.objects.raw( "SELECT * FROM main_stockstat WHERE main_stockstat.Stock_id=%i \ ORDER BY id DESC LIMIT 48 " % (Current.id)) ListJson = [] VolumeBase = 0 VolumeTrade = 0 for item in List: StartDate = item.start_date VolumeTrade = VolumeTrade + item.VolumeTrade VolumeBase = VolumeBase + item.VolumeBase Key = "%i:%i" % (StartDate.hour, StartDate.minute) ListJson.append([ Key, float(item.Start), float(item.Max), float(item.Min), float(item.End), float(item.VolumeTrade) ]) OnlineUsersCount = OnlineUsers.objects.count() ListJson.reverse() Dict = { "trades": ListJson, "online": OnlineUsersCount, "volume_base": str(VolumeBase), "volume_trade": str(VolumeTrade) } RespJ = json.JSONEncoder().encode(Dict) return RespJ
def sell_list(Req, Pair): Current = None try: Current = TradePairs.objects.get(url_title=Pair) except: return json_false500(Req) SellList = Orders.objects.filter(status="processing", currency1=Current.currency_on, currency2=Current.currency_from) getcontext().prec = 8 Currency1Title = Current.currency_from.title Currency2Title = Current.currency_on.title AccumSellSum = 0 GroupSellDict = {} for item in SellList: SellSum = item.sum1 ##LTC BuySum = item.sum2 ## UAH Rate = item.price AccumSellSum += SellSum if GroupSellDict.has_key(Rate): GroupSellDict[Rate][ Currency2Title] = GroupSellDict[Rate][Currency2Title] + SellSum GroupSellDict[Rate][ Currency1Title] = GroupSellDict[Rate][Currency1Title] + BuySum else: GroupSellDict[Rate] = { Currency2Title: SellSum, Currency1Title: BuySum } ResSellList = [] LL = GroupSellDict.keys() L = [] for i in LL: Temp = Decimal(i) GroupSellDict[Temp] = GroupSellDict[i] L.append(Temp) L.sort() Price = 0 MinPrice = 0 for i in L: Price = format_numbers10(i) ResSellList.append({ "price": Price, "currency_trade": format_numbers10(GroupSellDict[i][Currency2Title]), "currency_base": format_numbers10(GroupSellDict[i][Currency1Title]) }) if len(ResSellList): MinPrice = ResSellList[0]["price"] Dict = { "orders_sum": format_numbers10(AccumSellSum), "list": ResSellList, "min_price": MinPrice, "max_price": Price } RespJ = json.JSONEncoder().encode(Dict) return RespJ
def buy_list(Req, Pair): Current = None try: Current = TradePairs.objects.get(url_title=Pair) except: return json_false500(Req) BuyList = Orders.objects.filter(status="processing", currency1=Current.currency_from, currency2=Current.currency_on) getcontext().prec = settings.TRANS_PREC Currency1Title = Current.currency_from.title Currency2Title = Current.currency_on.title List1 = {} AccumBuySum = 0 for item in BuyList: SellSum = item.sum1 ## UAH BuySum = item.sum2 ## LTC Rate = item.price AccumBuySum += SellSum if List1.has_key(Rate): List1[Rate][Currency1Title] = List1[Rate][Currency1Title] + SellSum List1[Rate][Currency2Title] = List1[Rate][Currency2Title] + BuySum else: List1[Rate] = {Currency1Title: SellSum, Currency2Title: BuySum} ResBuyList = [] LL = List1.keys() L = [] for i in LL: Temp = Decimal(i) List1[Temp] = List1[i] L.append(Temp) L.sort() L.reverse() Price = 0 MaxPrice = 0 for i in L: Price = format_numbers10(i) ResBuyList.append({ "price": Price, "currency_trade": format_numbers10(List1[i][Currency2Title]), "currency_base": format_numbers10(List1[i][Currency1Title]) }) if len(ResBuyList): MaxPrice = ResBuyList[0]["price"] Dict = { "orders_sum": format_numbers10(AccumBuySum), "list": ResBuyList, "max_price": MaxPrice, "min_price": Price } RespJ = json.JSONEncoder().encode(Dict) return RespJ