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

Loading…
Cancel
Save