From d219652cfb6072e2143792e182a2460c6470a49f Mon Sep 17 00:00:00 2001 From: bot Date: Sat, 13 Jun 2020 05:06:23 +0200 Subject: [PATCH] update --- src/api/controllers/apiController.js | 56 +++++ src/api/models/base.js | 4 +- src/api/models/bitsler.js | 18 +- src/api/models/crypto.js | 20 +- src/api/models/duckdice.js | 32 ++- src/api/models/epic.js | 4 +- src/api/models/factory.js | 12 +- src/api/models/freebitco.js | 31 ++- src/api/models/github.js | 1 + src/api/models/kryptogames.js | 4 +- src/api/models/nine.js | 18 +- src/api/models/ninedoge.js | 18 +- src/api/models/paradice.js | 18 +- src/api/models/prime.js | 30 ++- src/api/models/satoshidice.js | 18 +- src/api/models/simulator.js | 4 +- src/api/models/stake.js | 30 ++- src/api/models/steembet.js | 4 +- src/api/models/windice.js | 18 +- src/api/models/wolfbet.js | 18 +- src/api/models/yolo.js | 6 +- src/api/routes/api.js | 99 ++++---- src/console.js | 47 ++-- src/package.json.console | 3 +- src/views/info.pug | 2 + src/views/login.pug | 351 ++++++++++++++++++++++++--- 26 files changed, 693 insertions(+), 173 deletions(-) diff --git a/src/api/controllers/apiController.js b/src/api/controllers/apiController.js index e0843c78..8381a214 100644 --- a/src/api/controllers/apiController.js +++ b/src/api/controllers/apiController.js @@ -56,6 +56,7 @@ exports.login = async function(req, res) { res.redirect(req.protocol+"://"+req.headers.host+"/"+req.body.site+"/info"); } } else { + //Factory.clear(); res.render('login',{title: 'My Dice Bot',site:req.params.site,skin:req.session.skin}); } } catch(err) { @@ -210,6 +211,61 @@ exports.keereg = async function(req, res) { } }; +exports.proxyload = async function(req, res) { + try{ + let data = '[]'; + let filePath = path.resolve(path.join(process.execPath, '../proxy.json')); + if(isMobile(req)) { + filePath = path.resolve(path.join(__dirname, '../../proxy.json')); + } + if(process.env.electron) { + filePath = path.resolve(path.join(config.mydice.path, '/proxy.json')); + } + if(fs.existsSync(filePath)){ + data = fs.readFileSync(filePath); + } + let proxyList = JSON.parse(data); + return res.status(200).json(proxyList); + } catch(err) { + console.log(err); + return res.status(500).send({err: err.toString()}); + } +} + +exports.proxysave = async function(req, res) { + try{ + let proxyList = {}; + let data = '[]'; + let filePath = path.resolve(path.join(process.execPath, '../proxy.json')); + if(isMobile(req)) { + filePath = path.resolve(path.join(__dirname, '../../proxy.json')); + } + if(process.env.electron) { + filePath = path.resolve(path.join(config.mydice.path, '/proxy.json')); + } + if(fs.existsSync(filePath)){ + data = fs.readFileSync(filePath); + } + proxyList = JSON.parse(data); + if(typeof proxyList !== 'undefined') { + proxyList.forEach(function(item, index, object){ + if(item.proxy_name == req.body.proxy_name ){ + object.splice(index,1); + } + }); + } + if(typeof req.body.proxy_name !== 'undefined') { + proxyList.push(req.body); + } + data = JSON.stringify(proxyList); + fs.writeFileSync(filePath, Buffer.from(data)); + return res.status(200).json('ok'); + } catch(err) { + console.log(err); + return res.status(500).send({err: err.toString()}); + } +}; + exports.keesave = async function(req, res) { try{ let filePath = path.resolve(path.join(process.execPath, '../keepass/')+req.query.keepassfile+'.kdbx'); diff --git a/src/api/models/base.js b/src/api/models/base.js index 1697e9ff..892d42b5 100644 --- a/src/api/models/base.js +++ b/src/api/models/base.js @@ -2,8 +2,8 @@ var APIError = require('../errors/APIError'); module.exports = class BaseDice { - constructor(){ - //console.log('mydicebot'); + constructor(proxy){ + this.proxy = proxy; } async resetseed(req) { let errs = new Error('Platform is not support reset seed'); diff --git a/src/api/models/bitsler.js b/src/api/models/bitsler.js index 419f4e69..5d429026 100644 --- a/src/api/models/bitsler.js +++ b/src/api/models/bitsler.js @@ -4,10 +4,11 @@ var BaseDice = require('./base') var fetch = require('isomorphic-fetch'); var FormData = require('form-data'); var APIError = require('../errors/APIError'); +var SocksProxyAgent = require('socks-proxy-agent'); module.exports = class BitslerDice extends BaseDice { - constructor(){ - super(); + constructor(proxy){ + super(proxy); this.url = 'https://www.bitsler.com'; this.benefit = '?ref=mydicebot' this.currencys = ["btc","eth","ltc","doge","dash","bch","xrp","zec","etc","neo","kmd","btg","lsk","dgb","qtum","strat","waves","burst"]; @@ -164,13 +165,22 @@ module.exports = class BitslerDice extends BaseDice { async _send(route, method, body, accessToken){ let url = `${this.url}/api/${route}${this.benefit}`; - let res = await fetch(url, { + let options= { method, headers: { 'User-Agent': 'DiceBot', }, body: body, - }); + }; + if(this.proxy.ip) { + let socks = 'socks://'+this.proxy.ip+':'+this.proxy.port; + if(this.proxy.user){ + socks = 'socks://'+this.proxy.user+':'+this.proxy.password+'@'+this.proxy.ip+':'+this.proxy.port; + } + let agent = new SocksProxyAgent(socks); + options.agent = agent; + } + let res = await fetch(url, options); let data = await res.json(); if (data.success == false) { let errs = new Error(data.error); diff --git a/src/api/models/crypto.js b/src/api/models/crypto.js index 0d26af12..743c3069 100644 --- a/src/api/models/crypto.js +++ b/src/api/models/crypto.js @@ -4,10 +4,11 @@ var BaseDice = require('./base'); var fetch = require('isomorphic-fetch'); var FormData = require('form-data'); var APIError = require('../errors/APIError'); +var SocksProxyAgent = require('socks-proxy-agent'); module.exports = class CryptoDice extends BaseDice { - constructor(){ - super(); + constructor(proxy){ + super(proxy); //this.url = 'https://api.crypto-games.net'; this.url = 'https://api.crypto.games'; } @@ -133,16 +134,23 @@ module.exports = class CryptoDice extends BaseDice { async _send(route, method, body, accessToken){ let url = `${this.url}/v1/${route}/${accessToken}`; - //console.log(JSON.stringify(body)); - let res = await fetch(url, { + let options = { method, headers: { Accept: 'application/json, text/plain, */*', 'Content-Type': 'application/json', }, body: JSON.stringify(body), - //body: body, - }); + }; + if(this.proxy.ip) { + let socks = 'socks://'+this.proxy.ip+':'+this.proxy.port; + if(this.proxy.user){ + socks = 'socks://'+this.proxy.user+':'+this.proxy.password+'@'+this.proxy.ip+':'+this.proxy.port; + } + let agent = new SocksProxyAgent(socks); + options.agent = agent; + } + let res = await fetch(url, options); let data = await res.json(); //console.log(data); if (!res.ok) { diff --git a/src/api/models/duckdice.js b/src/api/models/duckdice.js index acfca0ce..f4dd4082 100644 --- a/src/api/models/duckdice.js +++ b/src/api/models/duckdice.js @@ -4,10 +4,11 @@ var BaseDice = require('./base'); var fetch = require('isomorphic-fetch'); var FormData = require('form-data'); var APIError = require('../errors/APIError'); +var SocksProxyAgent = require('socks-proxy-agent'); module.exports = class DuckDice extends BaseDice { - constructor(){ - super(); + constructor(proxy){ + super(proxy); this.url = 'https://duckdice.io'; this.benefit = '&c=ab61534783' } @@ -136,9 +137,14 @@ module.exports = class DuckDice extends BaseDice { async _send(route, method, body, accessToken){ let url = `${this.url}/api/${route}${this.benefit}`; - let res = null; + let options= { + method, + headers: { + 'User-Agent': 'MyDiceBot', + }, + }; if(method == "POST"){ - res = await fetch(url, { + options = { method, headers: { Accept: 'application/json', @@ -146,15 +152,17 @@ module.exports = class DuckDice extends BaseDice { 'Content-Type': 'application/json', }, body: JSON.stringify(body), - }); - } else { - res = await fetch(url, { - method, - headers: { - 'User-Agent': 'MyDiceBot', - }, - }); + }; + } + if(this.proxy.ip) { + let socks = 'socks://'+this.proxy.ip+':'+this.proxy.port; + if(this.proxy.user){ + socks = 'socks://'+this.proxy.user+':'+this.proxy.password+'@'+this.proxy.ip+':'+this.proxy.port; + } + let agent = new SocksProxyAgent(socks); + options.agent = agent; } + let res = await fetch(url, options); let data = await res.json(); if (data.error) { let errs = new Error(data.error); diff --git a/src/api/models/epic.js b/src/api/models/epic.js index 617d3bac..1d8d29c1 100644 --- a/src/api/models/epic.js +++ b/src/api/models/epic.js @@ -5,8 +5,8 @@ var request = require('request'); var steem = require('steem'); module.exports = class EpicDice extends BaseDice { - constructor(){ - super(); + constructor(proxy){ + super(proxy); this.url = 'https://epicdice.io'; this.benefit = '?ref=mydicebot' this.currencys = ["steem","sbd"]; diff --git a/src/api/models/factory.js b/src/api/models/factory.js index 8c83d1a6..5b260152 100644 --- a/src/api/models/factory.js +++ b/src/api/models/factory.js @@ -17,5 +17,15 @@ module.exports = { } let instance = this.instances.get(clazzname); return instance; - } + }, + check() { + if (this.instances.size >0 ) { + return true; + } else { + return false; + } + }, + clear() { + this.instances.clear(); + }, } diff --git a/src/api/models/freebitco.js b/src/api/models/freebitco.js index c6373d46..0c368c6c 100644 --- a/src/api/models/freebitco.js +++ b/src/api/models/freebitco.js @@ -5,10 +5,11 @@ var fetch = require('isomorphic-fetch'); var FormData = require('form-data'); var APIError = require('../errors/APIError'); var querystring = require('querystring'); +var SocksProxyAgent = require('socks-proxy-agent'); module.exports = class FreeBitco extends BaseDice { - constructor(){ - super(); + constructor(proxy){ + super(proxy); this.url = 'https://freebitco.in'; this.benefit = '&r=16392656' } @@ -160,26 +161,44 @@ module.exports = class FreeBitco extends BaseDice { async _getCsrfToken() { let url = this.url; let method = "GET"; - let res = await fetch(url, { + let options= { method, headers: { 'User-Agent': 'MyDiceBot', }, - }); + }; + if(this.proxy.ip) { + let socks = 'socks://'+this.proxy.ip+':'+this.proxy.port; + if(this.proxy.user){ + socks = 'socks://'+this.proxy.user+':'+this.proxy.password+'@'+this.proxy.ip+':'+this.proxy.port; + } + let agent = new SocksProxyAgent(socks); + options.agent = agent; + } + let res = await fetch(url, options); let csrfToken = this._parseCookies(res); return csrfToken; } async _send(route, method, body, accessToken, cookie, isJson){ let url = `${this.url}/${route}`; - let res = await fetch(url, { + let options = { method, headers: { 'User-Agent': 'MyDiceBot', Cookie: cookie, }, body: body, - }); + }; + if(this.proxy.ip) { + let socks = 'socks://'+this.proxy.ip+':'+this.proxy.port; + if(this.proxy.user){ + socks = 'socks://'+this.proxy.user+':'+this.proxy.password+'@'+this.proxy.ip+':'+this.proxy.port; + } + let agent = new SocksProxyAgent(socks); + options.agent = agent; + } + let res = await fetch(url, options); let data = "e:freebitcoin error, Please wait minutes before trying again"; let ret = data.split(':'); if(!isJson) { diff --git a/src/api/models/github.js b/src/api/models/github.js index 39e2a8e3..53a5c290 100644 --- a/src/api/models/github.js +++ b/src/api/models/github.js @@ -1,6 +1,7 @@ 'use strict'; var APIError = require('../errors/APIError'); var fetch = require('isomorphic-fetch'); +var SocksProxyAgent = require('socks-proxy-agent'); module.exports = class GitHub { constructor(){ diff --git a/src/api/models/kryptogames.js b/src/api/models/kryptogames.js index dbe24899..ba7bda8f 100644 --- a/src/api/models/kryptogames.js +++ b/src/api/models/kryptogames.js @@ -5,8 +5,8 @@ var request = require('request'); var steem = require('steem'); module.exports = class KryptoGames extends BaseDice { - constructor(){ - super(); + constructor(proxy){ + super(proxy); this.url = 'https://kryptogames.io'; this.benefit = '?ref=mydicebot' this.currencys = ["steem","sbd"]; diff --git a/src/api/models/nine.js b/src/api/models/nine.js index 34e7eae2..6a5c5adb 100644 --- a/src/api/models/nine.js +++ b/src/api/models/nine.js @@ -4,10 +4,11 @@ var BaseDice = require('./base'); var fetch = require('isomorphic-fetch'); var FormData = require('form-data'); var APIError = require('../errors/APIError'); +var SocksProxyAgent = require('socks-proxy-agent'); module.exports = class NineDice extends BaseDice { - constructor(){ - super(); + constructor(proxy){ + super(proxy); this.url = 'https://www.999dice.com'; this.benefit = '?224280708' } @@ -126,13 +127,22 @@ module.exports = class NineDice extends BaseDice { async _send(route, method, body, accessToken){ let url = `${this.url}/api/${route}${this.benefit}`; - let res = await fetch(url, { + let options= { method, headers: { 'User-Agent': 'DiceBot', }, body: body, - }); + }; + if(this.proxy.ip) { + let socks = 'socks://'+this.proxy.ip+':'+this.proxy.port; + if(this.proxy.user){ + socks = 'socks://'+this.proxy.user+':'+this.proxy.password+'@'+this.proxy.ip+':'+this.proxy.port; + } + let agent = new SocksProxyAgent(socks); + options.agent = agent; + } + let res = await fetch(url, options); if(res.status == 200){ let data = await res.json(); return data; diff --git a/src/api/models/ninedoge.js b/src/api/models/ninedoge.js index e4a06829..73290062 100644 --- a/src/api/models/ninedoge.js +++ b/src/api/models/ninedoge.js @@ -4,10 +4,11 @@ var BaseDice = require('./base'); var fetch = require('isomorphic-fetch'); var FormData = require('form-data'); var APIError = require('../errors/APIError'); +var SocksProxyAgent = require('socks-proxy-agent'); module.exports = class NineDoge extends BaseDice { - constructor(){ - super(); + constructor(proxy){ + super(proxy); this.url = 'https://www.999doge.com'; this.benefit = '?224280708' } @@ -126,13 +127,22 @@ module.exports = class NineDoge extends BaseDice { async _send(route, method, body, accessToken){ let url = `${this.url}/api/${route}${this.benefit}`; - let res = await fetch(url, { + let options= { method, headers: { 'User-Agent': 'DiceBot', }, body: body, - }); + }; + if(this.proxy.ip) { + let socks = 'socks://'+this.proxy.ip+':'+this.proxy.port; + if(this.proxy.user){ + socks = 'socks://'+this.proxy.user+':'+this.proxy.password+'@'+this.proxy.ip+':'+this.proxy.port; + } + let agent = new SocksProxyAgent(socks); + options.agent = agent; + } + let res = await fetch(url, options); if(res.status == 200){ let data = await res.json(); return data; diff --git a/src/api/models/paradice.js b/src/api/models/paradice.js index 27740ac5..92006d4a 100644 --- a/src/api/models/paradice.js +++ b/src/api/models/paradice.js @@ -3,10 +3,11 @@ var BaseDice = require('./base'); var APIError = require('../errors/APIError'); var fetch = require('isomorphic-fetch'); +var SocksProxyAgent = require('socks-proxy-agent'); module.exports = class ParaDice extends BaseDice { - constructor(){ - super(); + constructor(proxy){ + super(proxy); this.url = 'https://api.paradice.in/api.php'; this.benefit = '?ref=mydicebot' this.currencys = ["btc","eth","ltc","doge","dash","prdc"]; @@ -190,7 +191,7 @@ module.exports = class ParaDice extends BaseDice { async _send(route, method, body, accessToken){ console.log(JSON.stringify(body)); let url = `${this.url}`; - let res = await fetch(url, { + let options = { method, headers: { 'User-Agent': 'MyDiceBot', @@ -198,7 +199,16 @@ module.exports = class ParaDice extends BaseDice { 'Content-Type': 'application/json', }, body: JSON.stringify(body), - }); + }; + if(this.proxy.ip) { + let socks = 'socks://'+this.proxy.ip+':'+this.proxy.port; + if(this.proxy.user){ + socks = 'socks://'+this.proxy.user+':'+this.proxy.password+'@'+this.proxy.ip+':'+this.proxy.port; + } + let agent = new SocksProxyAgent(socks); + options.agent = agent; + } + let res = await fetch(url, options); let data = await res.json(); if(data.errors) { let errs = new Error(data.errors[0].message); diff --git a/src/api/models/prime.js b/src/api/models/prime.js index 8140576a..383b420a 100644 --- a/src/api/models/prime.js +++ b/src/api/models/prime.js @@ -3,10 +3,11 @@ var BaseDice = require('./base'); var APIError = require('../errors/APIError'); var fetch = require('isomorphic-fetch'); +var SocksProxyAgent = require('socks-proxy-agent'); module.exports = class PrimeDice extends BaseDice { - constructor(){ - super(); + constructor(proxy){ + super(proxy); this.url = 'https://api.primedice.com/graphql'; this.benefit = '?ref=mydicebot' this.currencys = ["btc","eth","ltc","doge","bch"]; @@ -14,7 +15,7 @@ module.exports = class PrimeDice extends BaseDice { async login(userName, password, twoFactor ,apiKey, req) { let data = {}; - data.query = "{user {activeServerSeed { seedHash seed nonce} activeClientSeed{seed} id balances{available{currency amount}} statistic {game bets wins losses amount profitAmount currency}}}"; + data.query = "{user {activeServerSeed { seedHash seed nonce} activeClientSeed{seed} id balances{available{currency amount}} statistic {game bets wins losses amount profit currency}}}"; let ret = await this._send('', 'POST', data, apiKey); req.session.accessToken = apiKey; req.session.username = apiKey; @@ -32,7 +33,7 @@ module.exports = class PrimeDice extends BaseDice { return false; } let data = {}; - data.query = "{user {activeServerSeed { seedHash seed nonce} activeClientSeed{seed} id balances{available{currency amount}} statistic {game bets wins losses betAmount profitAmount currency}}}"; + data.query = "{user {activeServerSeed { seedHash seed nonce} activeClientSeed{seed} id balances{available{currency amount}} statistic {game bets wins losses betAmount profit currency}}}"; let ret = await this._send('', 'POST', data, req.session.accessToken); ret = ret.user; let userinfo = { @@ -51,7 +52,7 @@ module.exports = class PrimeDice extends BaseDice { for (let i=0; i { -Factory.register('Bitsler', new BitslerDice()); -Factory.register('999Dice', new NineDice()); -Factory.register('YoloDice', new YoloDice()); -Factory.register('PrimeDice', new PrimeDice()); -Factory.register('Stake', new StakeDice()); -Factory.register('Crypto-Games', new CryptoDice()); -Factory.register('Simulator', new Simulator()); -Factory.register('EpicDice', new EpicDice()); -Factory.register('KryptoGames', new KryptoGames()); -Factory.register('DuckDice', new DuckDice()); -Factory.register('FreeBitco', new FreeBitco()); -Factory.register('WinDice', new WinDice()); -Factory.register('WolfBet', new WolfBet()); -Factory.register('999Doge', new NineDoge()); -Factory.register('SatoshiDice', new SatoshiDice()); -Factory.register('ParaDice', new ParaDice()); var needUserSites = ['999Dice','FreeBitco','999Doge','SatoshiDice']; var needTokenSites = ['PrimeDice','Stake','WolfBet','ParaDice']; var needApiKeySites = ['Bitsler']; @@ -107,7 +91,38 @@ if(readlineSync.keyInYN('Whether to read the last configuration?')) { req.body.HouseEdge = 0.001; sleepTime = 1000; } + + if (readlineSync.keyInYN('Do you use proxy?')) { + req.body.proxy_ip = readlineSync.question('Please input proxy ip ?'); + req.body.proxy_port = readlineSync.question('Please input proxy port?'); + req.body.proxy_user = readlineSync.question('Please input proxy user?'); + req.body.proxy_password = readlineSync.question('Please input proxy password?'); + } +} + +let proxy = {}; +if(typeof req.body.proxy_ip !== 'undefined'){ + proxy.ip = req.body.proxy_ip; + proxy.port = req.body.proxy_port; + proxy.user = req.body.proxy_user; + proxy.password = req.body.proxy_password; } +Factory.register('Bitsler', new BitslerDice(proxy)); +Factory.register('999Dice', new NineDice(proxy)); +Factory.register('YoloDice', new YoloDice(proxy)); +Factory.register('PrimeDice', new PrimeDice(proxy)); +Factory.register('Stake', new StakeDice(proxy)); +Factory.register('Crypto-Games', new CryptoDice(proxy)); +Factory.register('Simulator', new Simulator(proxy)); +Factory.register('EpicDice', new EpicDice(proxy)); +Factory.register('KryptoGames', new KryptoGames(proxy)); +Factory.register('DuckDice', new DuckDice(proxy)); +Factory.register('FreeBitco', new FreeBitco(proxy)); +Factory.register('WinDice', new WinDice(proxy)); +Factory.register('WolfBet', new WolfBet(proxy)); +Factory.register('999Doge', new NineDoge(proxy)); +Factory.register('SatoshiDice', new SatoshiDice(proxy)); +Factory.register('ParaDice', new ParaDice(proxy)); //var content = await loadScript(); diff --git a/src/package.json.console b/src/package.json.console index 56440470..01998acd 100755 --- a/src/package.json.console +++ b/src/package.json.console @@ -1,5 +1,5 @@ { - "name": "mydicebot-console-200602", + "name": "mydicebot-console-200614", "version": "1.0.0", "description": "MyDiceBot - Bet more, earn more!", "homepage": "https://mydicebot.com", @@ -37,6 +37,7 @@ "minimist": "^1.2.0", "readline-sync": "^1.4.10", "request": "^2.88.0", + "socks-proxy-agent": "^5.0.0", "steem": "^0.7.1" }, "devDependencies": { diff --git a/src/views/info.pug b/src/views/info.pug index a6465f51..0b5e91f2 100644 --- a/src/views/info.pug +++ b/src/views/info.pug @@ -2474,6 +2474,8 @@ block content } else { if(isloop){ isloop = outError(ret); + } else { + outError(ret); } } $$("bet_chart").hideProgress(); diff --git a/src/views/login.pug b/src/views/login.pug index 39981a19..a386f805 100644 --- a/src/views/login.pug +++ b/src/views/login.pug @@ -56,7 +56,7 @@ block content {id:"KingDice",value:"KingDice (Coming Soon)"}, {id:"MegaDice",value:"MegaDice (Coming Soon)"}, {id:"NitroDice",value:"NitroDice (Coming Soon)"}, - {id:"NitrogenSports",value:"NitrogenSports (Coming Soon)"}, + {id:"NitrogenSports",value:"NitrogenSports (Coming Soon)"}, {id:"SafeDice",value:"SafeDice (Coming Soon)"} ], view: "richselect", @@ -125,15 +125,30 @@ block content invalidMessage:"apikey can not be empty", validate:webix.rules.isNotEmpty }, - { - view: "switch", - value: 1, - label:"KeePass", - labelWidth:100, - onLabel: "On", - offLabel:"Off", - id: "switch_lable", - name: "switch_lable", + { cols:[ + { + view: "switch", + value: 1, + label:"KeePass", + labelWidth:80, + width:150, + onLabel: "On", + offLabel:"Off", + id: "switch_lable", + name: "switch_lable", + }, + { + view: "switch", + value: 1, + label:"Proxy", + labelWidth:60, + width:150, + onLabel: "On", + offLabel:"Off", + id: "proxy_lable", + name: "proxy_lable", + }, + ] }, { label: "LOGIN", @@ -155,7 +170,39 @@ block content name: "register_button", css: "webix_secondary", click: register - }, + }, + { + view: "text", + left: 60, + top: 250, + width: 350, + name: "proxy_user", + hidden: true + }, + { + view: "text", + left: 60, + top: 250, + width: 350, + name: "proxy_password", + hidden: true + }, + { + view: "text", + left: 60, + top: 250, + width: 350, + name: "proxy_ip", + hidden: true + }, + { + view: "text", + left: 60, + top: 250, + width: 350, + name: "proxy_port", + hidden: true + }, ] }], } @@ -163,8 +210,8 @@ block content { header: "KEEPASS", body: { - view: "form", - id: "keepass_form", + view: "form", + id: "keepass_form", elements: [{ rows: [ { @@ -258,6 +305,110 @@ block content click: "keelogout", css: "webix_danger", hidden: true, + } + ] + }] + } + }, + { + header: "PROXY", + body: { + view: "form", + id: "proxy_form", + elements: [{ + rows: [ + { + id: "proxy_selection", + view: "richselect", + left: 70, + top: 130, + width: 350, + label: "ProxyList", + labelWidth: 80, + name: "proxy_selection", + }, + { + view: "label", + left: 70, + top: 130, + width: 350, + label: "ProxyStatus", + labelWidth: 120, + name: "proxy_status", + hidden: true, + }, + { + view: "text", + type: "text", + left: 70, + top: 310, + width: 350, + label: "Name", + labelWidth: 80, + name: "proxy_name" + }, + { + view: "text", + type: "text", + left: 70, + top: 310, + width: 350, + label: "User", + labelWidth: 80, + name: "proxy_user" + }, + { + view: "text", + type: "password", + left: 70, + top: 310, + width: 350, + label: "Password", + labelWidth: 80, + name: "proxy_password" + }, + { + view: "text", + type: "text", + left: 70, + top: 310, + width: 350, + label: "SOCK IP", + labelWidth: 80, + name: "proxy_ip" + }, + { + view: "text", + type: "text", + left: 70, + top: 310, + width: 350, + label: "PORT", + labelWidth: 80, + name: "proxy_port" + }, + { + label: "USE", + view: "button", + type: "form", + left: 60, + top: 400, + width: 350, + name: "proxy_use_button", + css: "webix_primary", + click: "proxyuse" + }, + { + label: "LOGOUT", + view: "button", + type: "form", + left: 60, + top: 400, + width: 350, + name: "proxy_logout_button", + click: "proxylogout", + css: "webix_danger", + hidden: true, }, ] }] @@ -425,6 +576,7 @@ block content webix.extend($$("form1"), webix.ProgressBar); webix.extend($$("keepass_form"), webix.ProgressBar); + webix.extend($$("proxy_form"), webix.ProgressBar); function register() { let site = $$("site").getValue(); window.open(registerUrls[site],'_blank'); @@ -472,10 +624,10 @@ block content keepasslogin = true; $$('form1').show(); checkSiteParams($$("site").getText()); - webix.storage.session.put('keepasslogin', keepasslogin); - webix.storage.session.put('keepassdb', keepassdb); - webix.storage.session.put('keepassword', $$("keepass_form").elements.keepassword.getValue()); - webix.storage.session.put('keepassfile', $$("keepass_form").elements.keepassfile.getValue()); + webix.storage.local.put('keepasslogin', keepasslogin); + webix.storage.local.put('keepassdb', keepassdb); + webix.storage.local.put('keepassword', $$("keepass_form").elements.keepassword.getValue()); + webix.storage.local.put('keepassfile', $$("keepass_form").elements.keepassfile.getValue()); } else { webix.message({type: 'info', text: 'keepass file create failed'}); } @@ -492,12 +644,41 @@ block content let keepassdb = {}; let keepasslogin = false; + let proxyUse = false; let needUserSites = ['test','999Dice','FreeBitco','999Doge','SatoshiDice']; let needTokenSites = ['test','PrimeDice','Stake','WolfBet','ParaDice']; let needApiKeySites = ['test','Bitsler']; let needOnlyApiKeySites = ['test','YoloDice','Crypto-Games','DuckDice','WinDice']; let needSteemActiveKeySites = ['test','EpicDice','KryptoGames']; let needSimulatorActiveKeySites = ['test','Simulator']; + function proxyuse() { + if($$("proxy_form").validate()){ + $$("proxy_form").showProgress({ + type: "icon", + delay: 5000, + }); + webix.ajax().post('proxy/setting', $$("proxy_form").getValues()).then(function (result) { + $$("proxy_form").hideProgress(); + proxyUse = true; + $$('form1').show(); + checkSiteParams($$("site").getValue()); + webix.storage.local.put("mydice_proxyuse", proxyUse); + webix.storage.local.put("mydice_proxyname", $$("proxy_form").elements.proxy_name.getValue()); + $$("form1").elements["proxy_user"].setValue($$("proxy_form").elements["proxy_user"].getValue()); + $$("form1").elements["proxy_password"].setValue($$("proxy_form").elements["proxy_password"].getValue()); + $$("form1").elements["proxy_ip"].setValue($$("proxy_form").elements["proxy_ip"].getValue()); + $$("form1").elements["proxy_port"].setValue($$("proxy_form").elements["proxy_port"].getValue()); + webix.message({type: 'info', text: 'proxy save success'}); + }).fail(function (xhr) { + var response = JSON.parse(xhr.response); + console.error(response.err); + webix.message({type: 'error', text: response.err}); + $$("proxy_form").hideProgress(); + }); + } else { + webix.message({type: 'error', text: 'Please enter the correct parameters'}); + } + } function keelogin() { if($$("keepass_form").validate()){ $$("keepass_form").showProgress({ @@ -511,10 +692,10 @@ block content keepasslogin = true; $$('form1').show(); checkSiteParams($$("site").getValue()); - webix.storage.session.put('keepasslogin', keepasslogin); - webix.storage.session.put('keepassdb', keepassdb); - webix.storage.session.put('keepassword', $$("keepass_form").elements.keepassword.getValue()); - webix.storage.session.put('keepassfile', $$("keepass_form").elements.keepassfile.getValue()); + webix.storage.local.put('keepasslogin', keepasslogin); + webix.storage.local.put('keepassdb', keepassdb); + webix.storage.local.put('keepassword', $$("keepass_form").elements.keepassword.getValue()); + webix.storage.local.put('keepassfile', $$("keepass_form").elements.keepassfile.getValue()); webix.message({type: 'info', text: 'keepass login success'}); } else { keepassdb = {}; @@ -545,8 +726,8 @@ block content let apikey = $$("form1").elements.apikey.getValue(); let username = $$("form1").elements.username.getValue(); let password = $$("form1").elements.password.getValue(); - let keepassword = webix.storage.session.get('keepassword'); - let keepassfile = webix.storage.session.get('keepassfile'); + let keepassword = webix.storage.local.get('keepassword'); + let keepassfile = webix.storage.local.get('keepassfile'); let entrys = []; if(keepassdb != null && keepassdb[site]){ for (k in keepassdb[site]){ @@ -570,7 +751,7 @@ block content keepassdb[site] = entrys; } - webix.storage.session.put('keepassdb', keepassdb); + webix.storage.local.put('keepassdb', keepassdb); webix.ajax().put('keepass/save?keepassfile='+keepassfile+'&keepassword='+keepassword, keepassdb).then(function (result) { webix.message({type: 'info', text: 'keepass save success'}); webix.send("login", $$("form1").getValues()); @@ -598,13 +779,21 @@ block content if(site != '') { $$("site").setValue(site); } - keepassdb = webix.storage.session.get('keepassdb'); + keepassdb = webix.storage.local.get('keepassdb'); if(keepassdb == null){ keepassdb = {}; } - keepasslogin = webix.storage.session.get('keepasslogin'); - checkSiteParams($$("site").getText()); + keepasslogin = webix.storage.local.get('keepasslogin'); setKeepass(); + proxyName = ''; + if(webix.storage.local.get("mydice_proxyname") != null){ + proxyName = webix.storage.local.get("mydice_proxyname"); + } + setProxy(proxyName); + if(webix.storage.local.get("mydice_proxyuse") != null){ + proxyUse = webix.storage.local.get("mydice_proxyuse"); + } + checkSiteParams($$("site").getText()); }); function setKeepass() { @@ -636,6 +825,35 @@ block content }); } + function setProxy(proxyName) { + webix.ajax().get('proxy/setting').then(function (result) { + proxyList = result.json(); + if(proxyList.length>=1){ + let files = []; + let initIndex = 1; + proxyList.forEach(function(item, index, object){ + let file = {}; + file['id'] = index+1; + file['value'] = item.proxy_name; + if(item.proxy_name == proxyName){ + initIndex = index+1; + } + files.push(file); + }); + $$("proxy_selection").define("options", files); + $$("proxy_selection").setValue(initIndex); + $$("proxy_selection").refresh(); + $$("proxy_selection").show(); + } else { + $$("proxy_selection").hide(); + } + }).fail(function (xhr) { + var response = JSON.parse(xhr.response); + console.error(response.err); + webix.message({type: 'error', text: response.err}); + }); + } + function setAccounts(site) { if(keepassdb != null && keepassdb[site]){ let accounts = keepassdb[site]; @@ -709,6 +927,7 @@ block content } setAccounts(newId); $$("switch_lable").setValue(keepasslogin); + $$("proxy_lable").setValue(proxyUse); //$$("switch_lable").disable(); site = newId; } @@ -716,7 +935,11 @@ block content keepassdb = {}; keepasslogin = false; $$("switch_lable").setValue(0); - webix.storage.session.clear(); + //webix.storage.session.clear(); + webix.storage.local.put('keepasslogin', keepasslogin); + webix.storage.local.put('keepassdb', keepassdb); + webix.storage.local.put('keepassword', ''); + webix.storage.local.put('keepassfile', ''); $$("keepass_form").elements.keepassword2.hide(); $$("keepass_form").elements.keepassword.show(); $$("keepass_form").elements.register_button.hide(); @@ -726,6 +949,19 @@ block content $$("keepass_form").elements.keepassstatus.hide(); setKeepass(); } + function proxylogout(){ + proxyUse = false; + webix.storage.local.put("mydice_proxyuse", proxyUse); + $$("proxy_form").elements.proxy_name.show(); + $$("proxy_form").elements.proxy_user.show(); + $$("proxy_form").elements.proxy_password.show(); + $$("proxy_form").elements.proxy_ip.show(); + $$("proxy_form").elements.proxy_port.show(); + $$("proxy_form").elements.proxy_use_button.show(); + $$("proxy_form").elements.proxy_logout_button.hide(); + $$("proxy_form").elements.proxy_status.hide(); + setProxy(); + } $$("switch_lable").attachEvent("onItemClick", function(){ if($$("switch_lable").getValue() == 1) { $$('keepass_form').show(); @@ -733,6 +969,13 @@ block content keelogout(); } }); + $$("proxy_lable").attachEvent("onItemClick", function(){ + if($$("proxy_lable").getValue() == 1) { + $$('proxy_form').show(); + } else { + proxylogout(); + } + }); $$("site").attachEvent("onChange", function(newId, oldId){ checkSiteParams(newId); }); @@ -751,10 +994,34 @@ block content $$("keepass_selection").attachEvent("onChange", function(newId, oldId){ $$("keepass_form").elements["keepassfile"].setValue($$("keepass_selection").getText()); }); + $$("proxy_selection").attachEvent("onChange", function(newId, oldId){ + webix.ajax().get('proxy/setting').then(function (result) { + proxyList = result.json(); + if(proxyList.length>=1){ + proxyList.forEach(function(item, index, object){ + if(item.proxy_name === $$("proxy_selection").getText()) { + $$("proxy_form").elements["proxy_name"].setValue(item.proxy_name); + $$("proxy_form").elements["proxy_user"].setValue(item.proxy_user); + $$("proxy_form").elements["proxy_password"].setValue(item.proxy_password); + $$("proxy_form").elements["proxy_ip"].setValue(item.proxy_ip); + $$("proxy_form").elements["proxy_port"].setValue(item.proxy_port); + $$("form1").elements["proxy_user"].setValue(item.proxy_user); + $$("form1").elements["proxy_password"].setValue(item.proxy_password); + $$("form1").elements["proxy_ip"].setValue(item.proxy_ip); + $$("form1").elements["proxy_port"].setValue(item.proxy_port); + } + }); + } + }).fail(function (xhr) { + var response = JSON.parse(xhr.response); + console.error(response.err); + webix.message({type: 'error', text: response.err}); + }); + }); $$("login_tabview").getTabbar().attachEvent("onBeforeTabClick", function(id){ if(id == 'keepass_form'){ if(keepasslogin) { - let keepassfile = webix.storage.session.get('keepassfile'); + let keepassfile = webix.storage.local.get('keepassfile'); $$("keepass_form").elements.keepassword2.hide(); $$("keepass_form").elements.keepassword.hide(); $$("keepass_form").elements.register_button.hide(); @@ -775,5 +1042,31 @@ block content setKeepass(); } } + if(id == 'proxy_form'){ + if(proxyUse) { + let proxyName = webix.storage.local.get('mydice_proxyname'); + $$("proxy_form").elements.proxy_name.hide(); + $$("proxy_form").elements.proxy_password.hide(); + $$("proxy_form").elements.proxy_user.hide(); + $$("proxy_form").elements.proxy_ip.hide(); + $$("proxy_form").elements.proxy_port.hide(); + $$("proxy_form").elements.proxy_use_button.hide(); + $$("proxy_form").elements.proxy_selection.hide(); + $$("proxy_form").elements.proxy_status.setValue("proxy "+proxyName+" has used"); + $$("proxy_form").elements.proxy_status.show(); + $$("proxy_form").elements.proxy_logout_button.show(); + } else { + $$("proxy_form").elements.proxy_user.show(); + $$("proxy_form").elements.proxy_ip.show(); + $$("proxy_form").elements.proxy_port.show(); + $$("proxy_form").elements.proxy_name.show(); + $$("proxy_form").elements.proxy_selection.show(); + $$("proxy_form").elements.proxy_password.show(); + $$("proxy_form").elements.proxy_use_button.show(); + $$("proxy_form").elements.proxy_status.hide(); + $$("proxy_form").elements.proxy_logout_button.hide(); + setProxy(); + } + } });