mirror of https://github.com/kevachat/npsapp.git
ghost
7 months ago
1 changed files with 216 additions and 0 deletions
@ -0,0 +1,216 @@
@@ -0,0 +1,216 @@
|
||||
<?php |
||||
|
||||
// Load dependencies |
||||
require_once __DIR__ . |
||||
DIRECTORY_SEPARATOR . '..'. |
||||
DIRECTORY_SEPARATOR . 'vendor' . |
||||
DIRECTORY_SEPARATOR . 'autoload.php'; |
||||
|
||||
// Init config |
||||
$config = json_decode( |
||||
file_get_contents( |
||||
__DIR__ . |
||||
DIRECTORY_SEPARATOR . '..'. |
||||
DIRECTORY_SEPARATOR . 'config.json' |
||||
) |
||||
); |
||||
|
||||
// Init session code |
||||
$code = null; |
||||
|
||||
// Init server |
||||
$server = new \Yggverse\Nps\Server( |
||||
$config->nps->server->host, |
||||
$config->nps->server->port, |
||||
$config->nps->server->size, |
||||
$config->nps->server->line |
||||
); |
||||
|
||||
// Init welcome function |
||||
$server->setWelcome( |
||||
function ( |
||||
string $connect |
||||
): ?string |
||||
{ |
||||
global $config; |
||||
global $code; |
||||
|
||||
// Build captcha on enabled |
||||
if ($config->nps->captcha->enabled) |
||||
{ |
||||
$captcha = new \Gregwar\Captcha\CaptchaBuilder( |
||||
null, |
||||
new \Gregwar\Captcha\PhraseBuilder( |
||||
$config->nps->captcha->length, |
||||
$config->nps->captcha->chars |
||||
) |
||||
); |
||||
|
||||
$captcha->setBackgroundColor( |
||||
$config->nps->captcha->background->r, |
||||
$config->nps->captcha->background->g, |
||||
$config->nps->captcha->background->b |
||||
); |
||||
|
||||
$captcha->build( |
||||
$config->nps->captcha->dimensions->width, |
||||
$config->nps->captcha->dimensions->height |
||||
); |
||||
|
||||
// Set captcha value to the session code |
||||
$code = $captcha->getPhrase(); |
||||
|
||||
// Create ASCII confirmation code |
||||
$image = new \Ixnode\PhpCliImage\CliImage( |
||||
$captcha->get(), |
||||
$config->nps->captcha->ascii->width |
||||
); |
||||
|
||||
$confirmation = PHP_EOL . $image->getAsciiString() . PHP_EOL; |
||||
} |
||||
|
||||
else |
||||
{ |
||||
$confirmation = null; |
||||
$code = true; |
||||
} |
||||
|
||||
// Debug request on enabled |
||||
if ($config->nps->action->welcome->debug->enabled) |
||||
{ |
||||
// Build connection URL #72811 |
||||
$url = sprintf( |
||||
'nex://%s', |
||||
$connect |
||||
); |
||||
|
||||
// Print debug from template |
||||
printf( |
||||
str_ireplace( |
||||
[ |
||||
'{time}', |
||||
'{host}', |
||||
'{port}', |
||||
'{code}' |
||||
], |
||||
[ |
||||
(string) date('c'), |
||||
(string) parse_url($url, PHP_URL_HOST), |
||||
(string) parse_url($url, PHP_URL_PORT), |
||||
(string) is_null($code) ? '[off]' : $code |
||||
], |
||||
$config->nps->action->welcome->debug->template |
||||
) . PHP_EOL |
||||
); |
||||
} |
||||
|
||||
return sprintf( |
||||
implode( |
||||
PHP_EOL, |
||||
$config->nps->action->welcome->message |
||||
) . PHP_EOL . $confirmation |
||||
); |
||||
} |
||||
); |
||||
|
||||
// Init pending function |
||||
$server->setPending( |
||||
function ( |
||||
string $request, |
||||
string $connect |
||||
): ?string |
||||
{ |
||||
global $config; |
||||
global $code; |
||||
|
||||
// Debug request on enabled |
||||
if ($config->nps->action->pending->debug->enabled) |
||||
{ |
||||
// Build connection URL #72811 |
||||
$url = sprintf( |
||||
'nex://%s', |
||||
$connect |
||||
); |
||||
|
||||
// Print debug from template |
||||
printf( |
||||
str_ireplace( |
||||
[ |
||||
'{time}', |
||||
'{host}', |
||||
'{port}', |
||||
'{sent}', |
||||
'{code}' |
||||
], |
||||
[ |
||||
(string) date('c'), |
||||
(string) parse_url($url, PHP_URL_HOST), |
||||
(string) parse_url($url, PHP_URL_PORT), |
||||
(string) trim($request), |
||||
(string) is_null($code) ? '[off]' : $code |
||||
], |
||||
$config->nps->action->pending->debug->template |
||||
) . PHP_EOL |
||||
); |
||||
} |
||||
|
||||
return is_null($code) || $code == trim($request) ? $config->nps->action->pending->message->success . PHP_EOL |
||||
: $config->nps->action->pending->message->failure . PHP_EOL; |
||||
} |
||||
); |
||||
|
||||
// Init handler function |
||||
$server->setHandler( |
||||
function ( |
||||
bool $success, |
||||
string $content, |
||||
string $request, |
||||
string $connect |
||||
): ?string |
||||
{ |
||||
global $config; |
||||
|
||||
// @TODO save content in blockchain with kevacoin-php |
||||
|
||||
// Debug request on enabled |
||||
if ($config->nps->action->handler->debug->enabled) |
||||
{ |
||||
// Build connection URL #72811 |
||||
$url = sprintf( |
||||
'nex://%s', |
||||
$connect |
||||
); |
||||
|
||||
// Print debug from template |
||||
printf( |
||||
str_ireplace( |
||||
[ |
||||
'{time}', |
||||
'{code}', |
||||
'{host}', |
||||
'{port}', |
||||
'{path}', |
||||
'{size}', |
||||
'{data}' |
||||
], |
||||
[ |
||||
(string) date('c'), |
||||
(string) (int) is_string($response), |
||||
(string) parse_url($url, PHP_URL_HOST), |
||||
(string) parse_url($url, PHP_URL_PORT), |
||||
(string) str_replace('%', '%%', $request), |
||||
(string) mb_strlen($content), |
||||
(string) PHP_EOL . $content . PHP_EOL, |
||||
], |
||||
$config->nps->action->handler->debug->template |
||||
) . PHP_EOL |
||||
); |
||||
} |
||||
|
||||
return $success ? $config->nps->action->handler->message->success . PHP_EOL |
||||
: $config->nps->action->handler->message->failure . PHP_EOL; |
||||
} |
||||
); |
||||
|
||||
// Start server |
||||
$server->start(); |
Loading…
Reference in new issue