Added inheritable pool options in global config
This commit is contained in:
parent
870e6dc628
commit
f91ff79718
155
README.md
155
README.md
@ -6,7 +6,7 @@ entirely in Node.js. It contains a stratum poolserver; reward/payment/share proc
|
|||||||
responsive user-friendly front-end website featuring mining instructions, in-depth live statistics, and an admin center.
|
responsive user-friendly front-end website featuring mining instructions, in-depth live statistics, and an admin center.
|
||||||
|
|
||||||
#### Production Usage Notice
|
#### Production Usage Notice
|
||||||
This is beta software. All of the following are things that can change and break an existing NOMP setup: functionality of any feature, structure of configuratoin files and structure of redis data. If you use this software in production then *DO NOT* pull new code straight into production usage because it can and often will break your setup and require you to tweak things like config files or redis data.
|
This is beta software. All of the following are things that can change and break an existing NOMP setup: functionality of any feature, structure of configuration files and structure of redis data. If you use this software in production then *DO NOT* pull new code straight into production usage because it can and often will break your setup and require you to tweak things like config files or redis data.
|
||||||
|
|
||||||
|
|
||||||
#### Table of Contents
|
#### Table of Contents
|
||||||
@ -171,6 +171,10 @@ Explanation for each field:
|
|||||||
/* Specifies the level of log output verbosity. Anything more severy than the level specified
|
/* Specifies the level of log output verbosity. Anything more severy than the level specified
|
||||||
will also be logged. */
|
will also be logged. */
|
||||||
"logLevel": "debug", //or "warning", "error"
|
"logLevel": "debug", //or "warning", "error"
|
||||||
|
|
||||||
|
/* By default NOMP logs to console and gives pretty colors. If you direct that output to a
|
||||||
|
log file then disable this feature to avoid nasty characters in your log file. */
|
||||||
|
"logColors": true,
|
||||||
|
|
||||||
|
|
||||||
/* The NOMP CLI (command-line interface) will listen for commands on this port. For example,
|
/* The NOMP CLI (command-line interface) will listen for commands on this port. For example,
|
||||||
@ -185,10 +189,54 @@ Explanation for each field:
|
|||||||
"enabled": true,
|
"enabled": true,
|
||||||
"forks": "auto"
|
"forks": "auto"
|
||||||
},
|
},
|
||||||
|
|
||||||
|
/* Pool config file will inherit these default values if they are not set. */
|
||||||
|
"defaultPoolConfigs": {
|
||||||
|
|
||||||
|
/* Poll RPC daemons for new blocks every this many milliseconds. */
|
||||||
|
"blockRefreshInterval": 1000,
|
||||||
|
|
||||||
|
/* If no new blocks are available for this many seconds update and rebroadcast job. */
|
||||||
|
"jobRebroadcastTimeout": 55,
|
||||||
|
|
||||||
|
/* Disconnect workers that haven't submitted shares for this many seconds. */
|
||||||
|
"connectionTimeout": 600,
|
||||||
|
|
||||||
|
/* (For MPOS mode) Store the block hashes for shares that aren't block candidates. */
|
||||||
|
"emitInvalidBlockHashes": false,
|
||||||
|
|
||||||
|
/* This option will only authenticate miners using an address or mining key. */
|
||||||
|
"validateWorkerUsername": true,
|
||||||
|
|
||||||
|
/* Enable for client IP addresses to be detected when using a load balancer with TCP
|
||||||
|
proxy protocol enabled, such as HAProxy with 'send-proxy' param:
|
||||||
|
http://haproxy.1wt.eu/download/1.5/doc/configuration.txt */
|
||||||
|
"tcpProxyProtocol": false,
|
||||||
|
|
||||||
|
/* If under low-diff share attack we can ban their IP to reduce system/network load. If
|
||||||
|
running behind HAProxy be sure to enable 'tcpProxyProtocol', otherwise you'll end up
|
||||||
|
banning your own IP address (and therefore all workers). */
|
||||||
|
"banning": {
|
||||||
|
"enabled": true,
|
||||||
|
"time": 600, //How many seconds to ban worker for
|
||||||
|
"invalidPercent": 50, //What percent of invalid shares triggers ban
|
||||||
|
"checkThreshold": 500, //Perform check when this many shares have been submitted
|
||||||
|
"purgeInterval": 300 //Every this many seconds clear out the list of old bans
|
||||||
|
},
|
||||||
|
|
||||||
|
/* Used for storing share and block submission data and payment processing. */
|
||||||
|
"redis": {
|
||||||
|
"host": "127.0.0.1",
|
||||||
|
"port": 6379
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
/* This is the front-end. Its not finished. When it is finished, this comment will say so. */
|
/* This is the front-end. Its not finished. When it is finished, this comment will say so. */
|
||||||
"website": {
|
"website": {
|
||||||
"enabled": true,
|
"enabled": true,
|
||||||
|
/* If you are using a reverse-proxy like nginx to display the website then set this to
|
||||||
|
127.0.0.1 to not expose the port. */
|
||||||
|
"host": "0.0.0.0",
|
||||||
"port": 80,
|
"port": 80,
|
||||||
/* Used for displaying stratum connection data on the Getting Started page. */
|
/* Used for displaying stratum connection data on the Getting Started page. */
|
||||||
"stratumHost": "cryppit.com",
|
"stratumHost": "cryppit.com",
|
||||||
@ -333,33 +381,6 @@ Description of options:
|
|||||||
"22851477d63a085dbc2398c8430af1c09e7343f6": 0.1
|
"22851477d63a085dbc2398c8430af1c09e7343f6": 0.1
|
||||||
},
|
},
|
||||||
|
|
||||||
"blockRefreshInterval": 1000, //How often to poll RPC daemons for new blocks, in milliseconds
|
|
||||||
|
|
||||||
|
|
||||||
/* Some miner apps will consider the pool dead/offline if it doesn't receive anything new jobs
|
|
||||||
for around a minute, so every time we broadcast jobs, set a timeout to rebroadcast
|
|
||||||
in this many seconds unless we find a new job. Set to zero or remove to disable this. */
|
|
||||||
"jobRebroadcastTimeout": 55,
|
|
||||||
|
|
||||||
//instanceId: 37, //Recommend not using this because a crypto-random one will be generated
|
|
||||||
|
|
||||||
/* Some attackers will create thousands of workers that use up all available socket connections,
|
|
||||||
usually the workers are zombies and don't submit shares after connecting. This feature
|
|
||||||
detects those and disconnects them. */
|
|
||||||
"connectionTimeout": 600, //Remove workers that haven't been in contact for this many seconds
|
|
||||||
|
|
||||||
/* Sometimes you want the block hashes even for shares that aren't block candidates. */
|
|
||||||
"emitInvalidBlockHashes": false,
|
|
||||||
|
|
||||||
/* Enable for client IP addresses to be detected when using a load balancer with TCP proxy
|
|
||||||
protocol enabled, such as HAProxy with 'send-proxy' param:
|
|
||||||
http://haproxy.1wt.eu/download/1.5/doc/configuration.txt */
|
|
||||||
"tcpProxyProtocol": false,
|
|
||||||
|
|
||||||
/* To receive payments, miners must connect with their address or mining key as their username.
|
|
||||||
This option will only authenticate miners using an address or mining key. */
|
|
||||||
"validateWorkerUsername": true,
|
|
||||||
|
|
||||||
"paymentProcessing": {
|
"paymentProcessing": {
|
||||||
"enabled": true,
|
"enabled": true,
|
||||||
|
|
||||||
@ -379,50 +400,11 @@ Description of options:
|
|||||||
"daemon": {
|
"daemon": {
|
||||||
"host": "127.0.0.1",
|
"host": "127.0.0.1",
|
||||||
"port": 19332,
|
"port": 19332,
|
||||||
"user": "litecoinrpc",
|
"user": "testuser",
|
||||||
"password": "testnet"
|
"password": "testpass"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
/* Redis database used for storing share and block submission data and payment processing. */
|
|
||||||
"redis": {
|
|
||||||
"host": "127.0.0.1",
|
|
||||||
"port": 6379
|
|
||||||
},
|
|
||||||
|
|
||||||
/* Enabled this mode and shares will be inserted into in a MySQL database. You may also want
|
|
||||||
to use the "emitInvalidBlockHashes" option below if you require it. The config options
|
|
||||||
"redis" and "paymentProcessing" will be ignored/unused if this is enabled. */
|
|
||||||
"mposMode": {
|
|
||||||
"enabled": false,
|
|
||||||
"host": "127.0.0.1", //MySQL db host
|
|
||||||
"port": 3306, //MySQL db port
|
|
||||||
"user": "me", //MySQL db user
|
|
||||||
"password": "mypass", //MySQL db password
|
|
||||||
"database": "ltc", //MySQL db database name
|
|
||||||
|
|
||||||
/* Checks for valid password in database when miners connect. */
|
|
||||||
"checkPassword": true,
|
|
||||||
|
|
||||||
/* Unregistered workers can automatically be registered (added to database) on stratum
|
|
||||||
worker authentication if this is true. */
|
|
||||||
"autoCreateWorker": false
|
|
||||||
|
|
||||||
|
|
||||||
},
|
|
||||||
|
|
||||||
/* If a worker is submitting a high threshold of invalid shares we can temporarily ban their IP
|
|
||||||
to reduce system/network load. Also useful to fight against flooding attacks. If running
|
|
||||||
behind something like HAProxy be sure to enable 'tcpProxyProtocol', otherwise you'll end up
|
|
||||||
banning your own IP address (and therefore all workers). */
|
|
||||||
"banning": {
|
|
||||||
"enabled": true,
|
|
||||||
"time": 600, //How many seconds to ban worker for
|
|
||||||
"invalidPercent": 50, //What percent of invalid shares triggers ban
|
|
||||||
"checkThreshold": 500, //Check invalid percent when this many shares have been submitted
|
|
||||||
"purgeInterval": 300 //Every this many seconds clear out the list of old bans
|
|
||||||
},
|
|
||||||
|
|
||||||
/* Each pool can have as many ports for your miners to connect to as you wish. Each port can
|
/* Each pool can have as many ports for your miners to connect to as you wish. Each port can
|
||||||
be configured to use its own pool difficulty and variable difficulty settings. varDiff is
|
be configured to use its own pool difficulty and variable difficulty settings. varDiff is
|
||||||
optional and will only be used for the ports you configure it for. */
|
optional and will only be used for the ports you configure it for. */
|
||||||
@ -445,24 +427,16 @@ Description of options:
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
/* For redundancy, recommended to have at least two daemon instances running in case one
|
/* More than one daemon instances can be setup in case one drops out-of-sync or dies. */
|
||||||
drops out-of-sync or offline. */
|
|
||||||
"daemons": [
|
"daemons": [
|
||||||
{ //Main daemon instance
|
{ //Main daemon instance
|
||||||
"host": "127.0.0.1",
|
"host": "127.0.0.1",
|
||||||
"port": 19332,
|
"port": 19332,
|
||||||
"user": "litecoinrpc",
|
"user": "testuser",
|
||||||
"password": "testnet"
|
"password": "testpass"
|
||||||
},
|
|
||||||
{ //Backup daemon instance
|
|
||||||
"host": "127.0.0.1",
|
|
||||||
"port": 19344,
|
|
||||||
"user": "litecoinrpc",
|
|
||||||
"password": "testnet"
|
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|
||||||
|
|
||||||
/* This allows the pool to connect to the daemon as a node peer to receive block updates.
|
/* This allows the pool to connect to the daemon as a node peer to receive block updates.
|
||||||
It may be the most efficient way to get block updates (faster than polling, less
|
It may be the most efficient way to get block updates (faster than polling, less
|
||||||
intensive than blocknotify script). It requires the additional field "peerMagic" in
|
intensive than blocknotify script). It requires the additional field "peerMagic" in
|
||||||
@ -480,6 +454,25 @@ Description of options:
|
|||||||
feature that prevents the daemon from spamming our peer node with unnecessary
|
feature that prevents the daemon from spamming our peer node with unnecessary
|
||||||
transaction data. Assume its supported but if you have problems try disabling it. */
|
transaction data. Assume its supported but if you have problems try disabling it. */
|
||||||
"disableTransactions": true
|
"disableTransactions": true
|
||||||
|
},
|
||||||
|
|
||||||
|
/* Enabled this mode and shares will be inserted into in a MySQL database. You may also want
|
||||||
|
to use the "emitInvalidBlockHashes" option below if you require it. The config options
|
||||||
|
"redis" and "paymentProcessing" will be ignored/unused if this is enabled. */
|
||||||
|
"mposMode": {
|
||||||
|
"enabled": false,
|
||||||
|
"host": "127.0.0.1", //MySQL db host
|
||||||
|
"port": 3306, //MySQL db port
|
||||||
|
"user": "me", //MySQL db user
|
||||||
|
"password": "mypass", //MySQL db password
|
||||||
|
"database": "ltc", //MySQL db database name
|
||||||
|
|
||||||
|
/* Checks for valid password in database when miners connect. */
|
||||||
|
"checkPassword": true,
|
||||||
|
|
||||||
|
/* Unregistered workers can automatically be registered (added to database) on stratum
|
||||||
|
worker authentication if this is true. */
|
||||||
|
"autoCreateWorker": false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -562,4 +555,4 @@ License
|
|||||||
-------
|
-------
|
||||||
Released under the GNU General Public License v2
|
Released under the GNU General Public License v2
|
||||||
|
|
||||||
http://www.gnu.org/licenses/gpl-2.0.html
|
http://www.gnu.org/licenses/gpl-2.0.html
|
||||||
@ -9,6 +9,26 @@
|
|||||||
"forks": "auto"
|
"forks": "auto"
|
||||||
},
|
},
|
||||||
|
|
||||||
|
"defaultPoolConfigs": {
|
||||||
|
"blockRefreshInterval": 1000,
|
||||||
|
"jobRebroadcastTimeout": 55,
|
||||||
|
"connectionTimeout": 600,
|
||||||
|
"emitInvalidBlockHashes": false,
|
||||||
|
"validateWorkerUsername": true,
|
||||||
|
"tcpProxyProtocol": false,
|
||||||
|
"banning": {
|
||||||
|
"enabled": true,
|
||||||
|
"time": 600,
|
||||||
|
"invalidPercent": 50,
|
||||||
|
"checkThreshold": 500,
|
||||||
|
"purgeInterval": 300
|
||||||
|
},
|
||||||
|
"redis": {
|
||||||
|
"host": "127.0.0.1",
|
||||||
|
"port": 6379
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
"website": {
|
"website": {
|
||||||
"enabled": true,
|
"enabled": true,
|
||||||
"host": "0.0.0.0",
|
"host": "0.0.0.0",
|
||||||
@ -81,12 +101,5 @@
|
|||||||
"usePoloniex": true,
|
"usePoloniex": true,
|
||||||
"useCryptsy": true,
|
"useCryptsy": true,
|
||||||
"useMintpal": true
|
"useMintpal": true
|
||||||
},
|
|
||||||
|
|
||||||
"redisBlockNotifyListener": {
|
|
||||||
"enabled": false,
|
|
||||||
"redisPort": 6379,
|
|
||||||
"redisHost": "hostname",
|
|
||||||
"psubscribeKey": "newblocks:*"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
36
init.js
36
init.js
@ -4,9 +4,10 @@ var os = require('os');
|
|||||||
var cluster = require('cluster');
|
var cluster = require('cluster');
|
||||||
|
|
||||||
var async = require('async');
|
var async = require('async');
|
||||||
|
var extend = require('extend');
|
||||||
|
|
||||||
var PoolLogger = require('./libs/logUtil.js');
|
var PoolLogger = require('./libs/logUtil.js');
|
||||||
var CliListener = require('./libs/cliListener.js');
|
var CliListener = require('./libs/cliListener.js');
|
||||||
var RedisBlocknotifyListener = require('./libs/redisblocknotifyListener.js');
|
|
||||||
var PoolWorker = require('./libs/poolWorker.js');
|
var PoolWorker = require('./libs/poolWorker.js');
|
||||||
var PaymentProcessor = require('./libs/paymentProcessor.js');
|
var PaymentProcessor = require('./libs/paymentProcessor.js');
|
||||||
var Website = require('./libs/website.js');
|
var Website = require('./libs/website.js');
|
||||||
@ -145,6 +146,19 @@ var buildPoolConfigs = function(){
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for (var option in portalConfig.defaultPoolConfigs){
|
||||||
|
if (!(option in poolOptions)){
|
||||||
|
var toCloneOption = portalConfig.defaultPoolConfigs[option];
|
||||||
|
var clonedOption = {};
|
||||||
|
if (toCloneOption.constructor === Object)
|
||||||
|
extend(true, clonedOption, toCloneOption);
|
||||||
|
else
|
||||||
|
clonedOption = toCloneOption;
|
||||||
|
poolOptions[option] = clonedOption;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
configs[poolOptions.coin.name] = poolOptions;
|
configs[poolOptions.coin.name] = poolOptions;
|
||||||
|
|
||||||
if (!(coinProfile.algorithm in algos)){
|
if (!(coinProfile.algorithm in algos)){
|
||||||
@ -334,24 +348,6 @@ var processCoinSwitchCommand = function(params, options, reply){
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
var startRedisBlockListener = function(){
|
|
||||||
//block notify options
|
|
||||||
//setup block notify here and use IPC to tell appropriate pools
|
|
||||||
|
|
||||||
if (!portalConfig.redisBlockNotifyListener.enabled) return;
|
|
||||||
|
|
||||||
var listener = new RedisBlocknotifyListener(portalConfig.redisBlockNotifyListener);
|
|
||||||
listener.on('log', function(text){
|
|
||||||
logger.debug('Master', 'blocknotify', text);
|
|
||||||
}).on('hash', function (message) {
|
|
||||||
var ipcMessage = {type:'blocknotify', coin: message.coin, hash: message.hash};
|
|
||||||
Object.keys(cluster.workers).forEach(function(id) {
|
|
||||||
cluster.workers[id].send(ipcMessage);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
listener.start();
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
var startPaymentProcessor = function(){
|
var startPaymentProcessor = function(){
|
||||||
|
|
||||||
@ -429,8 +425,6 @@ var startProfitSwitch = function(){
|
|||||||
|
|
||||||
startPaymentProcessor();
|
startPaymentProcessor();
|
||||||
|
|
||||||
startRedisBlockListener();
|
|
||||||
|
|
||||||
startWebsite();
|
startWebsite();
|
||||||
|
|
||||||
startProfitSwitch();
|
startProfitSwitch();
|
||||||
|
|||||||
@ -1,36 +0,0 @@
|
|||||||
var events = require('events');
|
|
||||||
var redis = require('redis');
|
|
||||||
|
|
||||||
var listener = module.exports = function listener(options){
|
|
||||||
|
|
||||||
var _this = this;
|
|
||||||
var redisConnection;
|
|
||||||
|
|
||||||
var emitLog = function(text){
|
|
||||||
_this.emit('log', text);
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
this.start = function(){
|
|
||||||
redisConnection = redis.createClient(options.redisPort, options.redisHost);
|
|
||||||
redisConnection.on("pmessage", function (pattern, channel, message) {
|
|
||||||
var coinname = channel.split(':')[1];
|
|
||||||
var blockhash = message;
|
|
||||||
//emitLog("Redis: Received block for "+coinname+" - hash: "+blockhash);
|
|
||||||
_this.emit('hash', {
|
|
||||||
"coin" : coinname,
|
|
||||||
"hash" : blockhash
|
|
||||||
});
|
|
||||||
});
|
|
||||||
redisConnection.on('connect', function (err, data) {
|
|
||||||
emitLog("Redis connected");
|
|
||||||
});
|
|
||||||
redisConnection.psubscribe(options.psubscribeKey);
|
|
||||||
emitLog("Connecting to redis!");
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
listener.prototype.__proto__ = events.EventEmitter.prototype;
|
|
||||||
@ -45,7 +45,8 @@
|
|||||||
"node-watch": "*",
|
"node-watch": "*",
|
||||||
"request": "*",
|
"request": "*",
|
||||||
"nonce": "*",
|
"nonce": "*",
|
||||||
"bignum": "*"
|
"bignum": "*",
|
||||||
|
"extend": "*"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=0.10"
|
"node": ">=0.10"
|
||||||
|
|||||||
@ -6,19 +6,9 @@
|
|||||||
|
|
||||||
"rewardRecipients": {
|
"rewardRecipients": {
|
||||||
"n37vuNFkXfk15uFnGoVyHZ6PYQxppD3QqK": 1.5,
|
"n37vuNFkXfk15uFnGoVyHZ6PYQxppD3QqK": 1.5,
|
||||||
"mirj3LtZxbSTharhtXvotqtJXUY7ki5qfx": 0.5,
|
|
||||||
"22851477d63a085dbc2398c8430af1c09e7343f6": 0.1
|
"22851477d63a085dbc2398c8430af1c09e7343f6": 0.1
|
||||||
},
|
},
|
||||||
|
|
||||||
"blockRefreshInterval": 1000,
|
|
||||||
"jobRebroadcastTimeout": 55,
|
|
||||||
"connectionTimeout": 600,
|
|
||||||
"emitInvalidBlockHashes": false,
|
|
||||||
|
|
||||||
"tcpProxyProtocol": false,
|
|
||||||
|
|
||||||
"validateWorkerUsername": true,
|
|
||||||
|
|
||||||
"paymentProcessing": {
|
"paymentProcessing": {
|
||||||
"enabled": true,
|
"enabled": true,
|
||||||
"paymentInterval": 20,
|
"paymentInterval": 20,
|
||||||
@ -26,38 +16,14 @@
|
|||||||
"daemon": {
|
"daemon": {
|
||||||
"host": "127.0.0.1",
|
"host": "127.0.0.1",
|
||||||
"port": 19332,
|
"port": 19332,
|
||||||
"user": "litecoinrpc",
|
"user": "testuser",
|
||||||
"password": "testnet"
|
"password": "testpass"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
"redis": {
|
|
||||||
"host": "127.0.0.1",
|
|
||||||
"port": 6379
|
|
||||||
},
|
|
||||||
|
|
||||||
"mposMode": {
|
|
||||||
"enabled": false,
|
|
||||||
"host": "127.0.0.1",
|
|
||||||
"port": 3306,
|
|
||||||
"user": "me",
|
|
||||||
"password": "mypass",
|
|
||||||
"database": "ltc",
|
|
||||||
"checkPassword": true,
|
|
||||||
"autoCreateWorker": false
|
|
||||||
},
|
|
||||||
|
|
||||||
"banning": {
|
|
||||||
"enabled": true,
|
|
||||||
"time": 300,
|
|
||||||
"invalidPercent": 50,
|
|
||||||
"checkThreshold": 10,
|
|
||||||
"purgeInterval": 300
|
|
||||||
},
|
|
||||||
|
|
||||||
"ports": {
|
"ports": {
|
||||||
"3008": {
|
"3008": {
|
||||||
"diff": 4
|
"diff": 8
|
||||||
},
|
},
|
||||||
"3032": {
|
"3032": {
|
||||||
"diff": 32,
|
"diff": 32,
|
||||||
@ -78,8 +44,8 @@
|
|||||||
{
|
{
|
||||||
"host": "127.0.0.1",
|
"host": "127.0.0.1",
|
||||||
"port": 19332,
|
"port": 19332,
|
||||||
"user": "litecoinrpc",
|
"user": "testuser",
|
||||||
"password": "testnet"
|
"password": "testpass"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|
||||||
@ -88,6 +54,17 @@
|
|||||||
"host": "127.0.0.1",
|
"host": "127.0.0.1",
|
||||||
"port": 19333,
|
"port": 19333,
|
||||||
"disableTransactions": true
|
"disableTransactions": true
|
||||||
|
},
|
||||||
|
|
||||||
|
"mposMode": {
|
||||||
|
"enabled": false,
|
||||||
|
"host": "127.0.0.1",
|
||||||
|
"port": 3306,
|
||||||
|
"user": "me",
|
||||||
|
"password": "mypass",
|
||||||
|
"database": "ltc",
|
||||||
|
"checkPassword": true,
|
||||||
|
"autoCreateWorker": false
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
Loading…
Reference in New Issue
Block a user