Browse Source

implement sessions

main
ghost 7 months ago
parent
commit
99d539bbf4
  1. 44
      example/config.json
  2. 67
      src/server.php

44
example/config.json

@ -19,6 +19,29 @@
"size":3072, "size":3072,
"line":1024 "line":1024
}, },
"session":
{
"captcha":
{
"length":3,
"chars":"1234567890",
"dimensions":
{
"width":100,
"height":40
},
"background":
{
"r":0,
"g":0,
"b":0
},
"ascii":
{
"width": 50
}
}
},
"action": "action":
{ {
"welcome": "welcome":
@ -72,27 +95,6 @@
"template":"[{time}] handler {host}:{port} captcha: {code} sent: {sent} length: {size} bytes {data}" "template":"[{time}] handler {host}:{port} captcha: {code} sent: {sent} length: {size} bytes {data}"
} }
} }
},
"captcha":
{
"enabled":true,
"length":3,
"chars":"1234567890",
"dimensions":
{
"width":100,
"height":40
},
"background":
{
"r":0,
"g":0,
"b":0
},
"ascii":
{
"width": 50
}
} }
} }
} }

67
src/server.php

@ -15,8 +15,8 @@ $config = json_decode(
) )
); );
// Init session code // Init session
$code = null; $session = [];
// Init server // Init server
$server = new \Yggverse\Nps\Server( $server = new \Yggverse\Nps\Server(
@ -33,48 +33,44 @@ $server->setWelcome(
): ?string ): ?string
{ {
global $config; global $config;
global $code; global $session;
// Build captcha on enabled // Init session
if ($config->nps->captcha->enabled) $session[$connect] =
{ [
'time' => time(),
'code' => null
];
// Build captcha
$captcha = new \Gregwar\Captcha\CaptchaBuilder( $captcha = new \Gregwar\Captcha\CaptchaBuilder(
null, null,
new \Gregwar\Captcha\PhraseBuilder( new \Gregwar\Captcha\PhraseBuilder(
$config->nps->captcha->length, $config->nps->session->captcha->length,
$config->nps->captcha->chars $config->nps->session->captcha->chars
) )
); );
$captcha->setBackgroundColor( $captcha->setBackgroundColor(
$config->nps->captcha->background->r, $config->nps->session->captcha->background->r,
$config->nps->captcha->background->g, $config->nps->session->captcha->background->g,
$config->nps->captcha->background->b $config->nps->session->captcha->background->b
); );
$captcha->build( $captcha->build(
$config->nps->captcha->dimensions->width, $config->nps->session->captcha->dimensions->width,
$config->nps->captcha->dimensions->height $config->nps->session->captcha->dimensions->height
); );
// Set captcha value to the session code // Set captcha value to the session code
$code = $captcha->getPhrase(); $session[$connect]['captcha'] = $captcha->getPhrase();
// Create ASCII confirmation code // Create ASCII confirmation code
$image = new \Ixnode\PhpCliImage\CliImage( $image = new \Ixnode\PhpCliImage\CliImage(
$captcha->get(), $captcha->get(),
$config->nps->captcha->ascii->width $config->nps->session->captcha->ascii->width
); );
$confirmation = PHP_EOL . $image->getAsciiString() . PHP_EOL;
}
else
{
$confirmation = null;
$code = true;
}
// Debug request on enabled // Debug request on enabled
if ($config->nps->action->welcome->debug->enabled) if ($config->nps->action->welcome->debug->enabled)
{ {
@ -97,7 +93,7 @@ $server->setWelcome(
(string) date('c'), (string) date('c'),
(string) parse_url($url, PHP_URL_HOST), (string) parse_url($url, PHP_URL_HOST),
(string) parse_url($url, PHP_URL_PORT), (string) parse_url($url, PHP_URL_PORT),
(string) is_null($code) ? '[off]' : $code (string) $session[$connect]['captcha']
], ],
$config->nps->action->welcome->debug->template $config->nps->action->welcome->debug->template
) . PHP_EOL ) . PHP_EOL
@ -108,7 +104,7 @@ $server->setWelcome(
implode( implode(
PHP_EOL, PHP_EOL,
$config->nps->action->welcome->message $config->nps->action->welcome->message
) . PHP_EOL . $confirmation ) . PHP_EOL . $image->getAsciiString() . PHP_EOL
); );
} }
); );
@ -121,7 +117,7 @@ $server->setPending(
): ?string ): ?string
{ {
global $config; global $config;
global $code; global $session;
// Filter request // Filter request
$request = trim( $request = trim(
@ -152,14 +148,14 @@ $server->setPending(
(string) parse_url($url, PHP_URL_HOST), (string) parse_url($url, PHP_URL_HOST),
(string) parse_url($url, PHP_URL_PORT), (string) parse_url($url, PHP_URL_PORT),
(string) $request, (string) $request,
(string) is_null($code) ? '[off]' : $code (string) $session[$connect]['captcha']
], ],
$config->nps->action->pending->debug->template $config->nps->action->pending->debug->template
) . PHP_EOL ) . PHP_EOL
); );
} }
return is_null($code) || $code == $request ? implode(PHP_EOL, $config->nps->action->pending->message->success) . PHP_EOL return $session[$connect]['captcha'] == $request ? implode(PHP_EOL, $config->nps->action->pending->message->success) . PHP_EOL
: implode(PHP_EOL, $config->nps->action->pending->message->failure) . PHP_EOL; : implode(PHP_EOL, $config->nps->action->pending->message->failure) . PHP_EOL;
} }
); );
@ -174,13 +170,18 @@ $server->setHandler(
): ?string ): ?string
{ {
global $config; global $config;
global $code; global $session;
// Filter request // Filter request
$request = trim( $request = trim(
$request $request
); );
// Filter content
$content = trim(
$content
);
// @TODO save content in blockchain with kevacoin-php // @TODO save content in blockchain with kevacoin-php
// Debug request on enabled // Debug request on enabled
@ -209,16 +210,16 @@ $server->setHandler(
(string) parse_url($url, PHP_URL_HOST), (string) parse_url($url, PHP_URL_HOST),
(string) parse_url($url, PHP_URL_PORT), (string) parse_url($url, PHP_URL_PORT),
(string) str_replace('%', '%%', $request), (string) str_replace('%', '%%', $request),
(string) is_null($code) ? '[off]' : $code, (string) $session[$connect]['captcha'],
(string) mb_strlen($content), (string) mb_strlen($content),
(string) $content, (string) PHP_EOL . $content,
], ],
$config->nps->action->handler->debug->template $config->nps->action->handler->debug->template
) . PHP_EOL ) . PHP_EOL
); );
} }
return is_null($code) || $code == $request ? implode(PHP_EOL, $config->nps->action->handler->message->success) . PHP_EOL return $session[$connect]['captcha'] == $request ? implode(PHP_EOL, $config->nps->action->handler->message->success) . PHP_EOL
: implode(PHP_EOL, $config->nps->action->handler->message->failure) . PHP_EOL; : implode(PHP_EOL, $config->nps->action->handler->message->failure) . PHP_EOL;
} }
); );

Loading…
Cancel
Save