mirror of
https://github.com/LBRYFoundation/pool.git
synced 2025-10-01 07:40:41 +00:00
triggers: handle rpc commands
move the text query parser used in web console in the wallet rpc class
This commit is contained in:
parent
3801d3d539
commit
8a034edf29
5 changed files with 100 additions and 53 deletions
|
@ -77,6 +77,16 @@ function NotifyCheckRules()
|
||||||
$message .= "Field: {$field}\n";
|
$message .= "Field: {$field}\n";
|
||||||
$message .= "Value: {$value} at ".strftime("%Y-%m-%d %T %z", $time)."\n";
|
$message .= "Value: {$value} at ".strftime("%Y-%m-%d %T %z", $time)."\n";
|
||||||
|
|
||||||
|
// replace some possible vars in message (description)
|
||||||
|
$message = str_replace('$X', $value, $message);
|
||||||
|
$message = str_replace('$F', $field, $message);
|
||||||
|
$message = str_replace('$T', $conditiontype, $message);
|
||||||
|
$message = str_replace('$V', $conditionvalue, $message);
|
||||||
|
$message = str_replace('$N', $coin->name, $message);
|
||||||
|
$message = str_replace('$SYM', $coin->symbol, $message);
|
||||||
|
$message = str_replace('$S2', $coin->symbol2, $message);
|
||||||
|
$message = str_replace('$A', $coin->master_wallet, $message);
|
||||||
|
|
||||||
$dest = YAAMP_ADMIN_EMAIL;
|
$dest = YAAMP_ADMIN_EMAIL;
|
||||||
if (!empty($rule->notifycmd) && strstr($notifycmd, "@")) {
|
if (!empty($rule->notifycmd) && strstr($notifycmd, "@")) {
|
||||||
$dest = $rule->notifycmd;
|
$dest = $rule->notifycmd;
|
||||||
|
@ -87,6 +97,27 @@ function NotifyCheckRules()
|
||||||
debuglog("notify: unable to send mail to {$dest}!");
|
debuglog("notify: unable to send mail to {$dest}!");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case 'rpc':
|
||||||
|
|
||||||
|
$command = $rule->notifycmd;
|
||||||
|
|
||||||
|
// replace some possible vars in user command
|
||||||
|
$command = str_replace('$X', $value, $command);
|
||||||
|
$command = str_replace('$F', $field, $command);
|
||||||
|
$command = str_replace('$T', $conditiontype, $command);
|
||||||
|
$command = str_replace('$V', $conditionvalue, $command);
|
||||||
|
$command = str_replace('$N', $coin->name, $command);
|
||||||
|
$command = str_replace('$SYM', $coin->symbol, $command);
|
||||||
|
$command = str_replace('$S2', $coin->symbol2, $command);
|
||||||
|
$command = str_replace('$A', $coin->master_wallet, $command);
|
||||||
|
|
||||||
|
$remote = new WalletRPC($coin);
|
||||||
|
|
||||||
|
$res = $remote->execute($command);
|
||||||
|
if ($res === false)
|
||||||
|
debuglog("notify: rpc error {$coin->symbol} {$command}");
|
||||||
|
break;
|
||||||
|
|
||||||
case 'system':
|
case 'system':
|
||||||
|
|
||||||
$command = $rule->notifycmd;
|
$command = $rule->notifycmd;
|
||||||
|
@ -99,6 +130,7 @@ function NotifyCheckRules()
|
||||||
$command = str_replace('$N', $coin->name, $command);
|
$command = str_replace('$N', $coin->name, $command);
|
||||||
$command = str_replace('$SYM', $coin->symbol, $command);
|
$command = str_replace('$SYM', $coin->symbol, $command);
|
||||||
$command = str_replace('$S2', $coin->symbol2, $command);
|
$command = str_replace('$S2', $coin->symbol2, $command);
|
||||||
|
$command = str_replace('$A', $coin->master_wallet, $command);
|
||||||
|
|
||||||
$res = system($command);
|
$res = system($command);
|
||||||
if ($res === false)
|
if ($res === false)
|
||||||
|
|
|
@ -324,4 +324,63 @@ class WalletRPC {
|
||||||
$this->rpc->$prop = $value;
|
$this->rpc->$prop = $value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function execute($query)
|
||||||
|
{
|
||||||
|
$result = '';
|
||||||
|
|
||||||
|
if (!empty($query)) try {
|
||||||
|
$params = explode(' ', trim($query));
|
||||||
|
$command = array_shift($params);
|
||||||
|
|
||||||
|
$p = array();
|
||||||
|
foreach ($params as $param) {
|
||||||
|
if ($param === 'true' || $param === 'false') {
|
||||||
|
$param = $param === 'true' ? true : false;
|
||||||
|
}
|
||||||
|
else if (strpos($param, '0x') === 0)
|
||||||
|
$param = "$param"; // eth hex crap
|
||||||
|
else
|
||||||
|
$param = (is_numeric($param)) ? 0 + $param : trim($param,'"');
|
||||||
|
$p[] = $param;
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (count($params)) {
|
||||||
|
case 0:
|
||||||
|
$result = $this->$command();
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
$result = $this->$command($p[0]);
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
$result = $this->$command($p[0], $p[1]);
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
$result = $this->$command($p[0], $p[1], $p[2]);
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
$result = $this->$command($p[0], $p[1], $p[2], $p[3]);
|
||||||
|
break;
|
||||||
|
case 5:
|
||||||
|
$result = $this->$command($p[0], $p[1], $p[2], $p[3], $p[4]);
|
||||||
|
break;
|
||||||
|
case 6:
|
||||||
|
$result = $this->$command($p[0], $p[1], $p[2], $p[3], $p[4], $p[5]);
|
||||||
|
break;
|
||||||
|
case 7:
|
||||||
|
$result = $this->$command($p[0], $p[1], $p[2], $p[3], $p[4], $p[5], $p[6]);
|
||||||
|
break;
|
||||||
|
case 8:
|
||||||
|
$result = $this->$command($p[0], $p[1], $p[2], $p[3], $p[4], $p[5], $p[6], $p[7]);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
$result = 'error: too much parameters';
|
||||||
|
}
|
||||||
|
|
||||||
|
} catch (Exception $e) {
|
||||||
|
$result = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return $result;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -118,57 +118,11 @@ div.terminal { color: silver; background: black; min-height: 180px; margin-left:
|
||||||
end;
|
end;
|
||||||
|
|
||||||
$result = '';
|
$result = '';
|
||||||
|
if (!empty($query)) {
|
||||||
if (!empty($query)) try {
|
$result = $remote->execute($query);
|
||||||
$params = explode(' ', trim($query));
|
if ($result === false) {
|
||||||
$command = array_shift($params);
|
|
||||||
|
|
||||||
$p = array();
|
|
||||||
foreach ($params as $param) {
|
|
||||||
if ($param === 'true' || $param === 'false') {
|
|
||||||
$param = $param === 'true' ? true : false;
|
|
||||||
}
|
|
||||||
else if (strpos($param, '0x') === 0)
|
|
||||||
$param = "$param"; // eth hex crap
|
|
||||||
else
|
|
||||||
$param = (is_numeric($param)) ? 0 + $param : trim($param,'"');
|
|
||||||
$p[] = $param;
|
|
||||||
}
|
|
||||||
|
|
||||||
switch (count($params)) {
|
|
||||||
case 0:
|
|
||||||
$result = $remote->$command();
|
|
||||||
break;
|
|
||||||
case 1:
|
|
||||||
$result = $remote->$command($p[0]);
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
$result = $remote->$command($p[0], $p[1]);
|
|
||||||
break;
|
|
||||||
case 3:
|
|
||||||
$result = $remote->$command($p[0], $p[1], $p[2]);
|
|
||||||
break;
|
|
||||||
case 4:
|
|
||||||
$result = $remote->$command($p[0], $p[1], $p[2], $p[3]);
|
|
||||||
break;
|
|
||||||
case 5:
|
|
||||||
$result = $remote->$command($p[0], $p[1], $p[2], $p[3], $p[4]);
|
|
||||||
break;
|
|
||||||
case 6:
|
|
||||||
$result = $remote->$command($p[0], $p[1], $p[2], $p[3], $p[4], $p[5]);
|
|
||||||
break;
|
|
||||||
case 7:
|
|
||||||
$result = $remote->$command($p[0], $p[1], $p[2], $p[3], $p[4], $p[5], $p[6]);
|
|
||||||
break;
|
|
||||||
case 8:
|
|
||||||
$result = $remote->$command($p[0], $p[1], $p[2], $p[3], $p[4], $p[5], $p[6], $p[7]);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
$result = 'error: too much parameters';
|
|
||||||
}
|
|
||||||
|
|
||||||
} catch (Exception $e) {
|
|
||||||
$result = $remote->error;
|
$result = $remote->error;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!empty($remote->error) && $remote->error != $result) {
|
if (!empty($remote->error) && $remote->error != $result) {
|
||||||
|
|
|
@ -93,9 +93,10 @@ echo <<<end
|
||||||
<label for="notifytype">Type</label>
|
<label for="notifytype">Type</label>
|
||||||
<select id="notifytype" name="notifytype">
|
<select id="notifytype" name="notifytype">
|
||||||
<option value="email">Email</option>
|
<option value="email">Email</option>
|
||||||
|
<option value="rpc">RPC command</option>
|
||||||
<option value="system">System command</option>
|
<option value="system">System command</option>
|
||||||
</select><br/><br/>
|
</select><br/><br/>
|
||||||
<input type="text" name="conditiontype" class="main-text-input" placeholder="Condition" style="width: 190px; margin-right: 4px;">
|
<input type="text" name="conditiontype" class="main-text-input" placeholder="Condition like 'balance >'" style="width: 190px; margin-right: 4px;">
|
||||||
<input type="text" name="conditionvalue" class="main-text-input" placeholder="Value" style="width: 100px; margin-right: 4px;">
|
<input type="text" name="conditionvalue" class="main-text-input" placeholder="Value" style="width: 100px; margin-right: 4px;">
|
||||||
<input type="submit" value="Add rule" class="main-submit-button" ><br/>
|
<input type="submit" value="Add rule" class="main-submit-button" ><br/>
|
||||||
<input type="text" name="notifycmd" class="main-text-input" placeholder="Email or Command (optional)" style="width: 400px; margin-right: 4px; margin-top: 8px;"><br/>
|
<input type="text" name="notifycmd" class="main-text-input" placeholder="Email or Command (optional)" style="width: 400px; margin-right: 4px; margin-top: 8px;"><br/>
|
||||||
|
@ -113,6 +114,7 @@ echo <<<end
|
||||||
<li>\$SYM coin symbol</li>
|
<li>\$SYM coin symbol</li>
|
||||||
<li>\$S2 coin symbol2</li>
|
<li>\$S2 coin symbol2</li>
|
||||||
<li>\$N coin name</li>
|
<li>\$N coin name</li>
|
||||||
|
<li>\$A wallet address</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
|
@ -276,8 +276,8 @@ if (!empty($list_extra)) {
|
||||||
</tr>
|
</tr>
|
||||||
<tr class="ssrow">
|
<tr class="ssrow">
|
||||||
<td colspan="3" style="font-size: .9em; padding-bottom: 8px;">
|
<td colspan="3" style="font-size: .9em; padding-bottom: 8px;">
|
||||||
Some wallets (LYB) have a problem and don't confirm a transaction in the requested time.<br/>
|
Some wallets (UFO,LYB) have a problem and don't always confirm a transaction in the requested time.<br/>
|
||||||
Please be honest and continue mining to handle these extra transactions sent to you.<br/>
|
<!-- Please be honest and continue mining to handle these extra transactions sent to you. --><br/>
|
||||||
</th>
|
</th>
|
||||||
</tr>
|
</tr>
|
||||||
<tr class="ssrow">
|
<tr class="ssrow">
|
||||||
|
|
Loading…
Add table
Reference in a new issue