-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathserver.php
More file actions
54 lines (45 loc) · 2.15 KB
/
server.php
File metadata and controls
54 lines (45 loc) · 2.15 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
<?php
use alexeevdv\React\Smpp\Connection;
use alexeevdv\React\Smpp\Pdu\BindTransmitter;
use alexeevdv\React\Smpp\Pdu\BindTransmitterResp;
use alexeevdv\React\Smpp\Pdu\SubmitSm;
use alexeevdv\React\Smpp\Pdu\SubmitSmResp;
use alexeevdv\React\Smpp\Proto\CommandStatus;
use alexeevdv\React\Smpp\Server;
use Firehed\SimpleLogger\Stdout;
use React\EventLoop\Factory as LoopFactory;
use React\Socket\Server as SocketServer;
require_once dirname(__DIR__) . '/vendor/autoload.php';
$loop = LoopFactory::create();
$socketServer = new SocketServer('127.0.0.1:2775', $loop);
$logger = new Stdout();
$smppServer = new Server($socketServer, $logger);
$smppServer->on(Connection::class, static function (Connection $connection) use ($logger) {
$connection->on(BindTransmitter::class, static function (BindTransmitter $pdu) use ($connection, $logger) {
$logger->info('bind_transmitter. system_id: {systemId}, password: {password}', [
'systemId' => $pdu->getSystemId(),
'password' => $pdu->getPassword(),
]);
$response = new BindTransmitterResp();
$response->setCommandStatus(CommandStatus::ESME_ROK);
$response->setSequenceNumber($pdu->getSequenceNumber());
$connection->replyWith($response);
});
$connection->on(SubmitSm::class, static function (SubmitSm $pdu) use ($connection, $logger) {
$logger->info('sumbit_sm. source: {source}, destination: {destination}, short_message: {shortMessage}', [
'source' => $pdu->getSourceAddress() !== null ? $pdu->getSourceAddress()->getValue() : null,
'destination' => $pdu->getDestinationAddress()->getValue(),
'shortMessage' => $pdu->getShortMessage(),
]);
$response = new SubmitSmResp();
$response->setSequenceNumber($pdu->getSequenceNumber());
$response->setCommandStatus(CommandStatus::ESME_ROK);
$response->setMessageId(uniqid('', true));
$connection->replyWith($response);
});
$connection->on('error', static function (Throwable $e) use ($connection, $logger) {
$logger->error($e->getMessage(), ['exception' => $e]);
$connection->close();
});
});
$loop->run();