Skip to content

Commit

Permalink
Support raw IPv6 addresses + tests
Browse files Browse the repository at this point in the history
  • Loading branch information
patrickkerrigan committed May 4, 2024
1 parent 128cc27 commit 48a37da
Show file tree
Hide file tree
Showing 5 changed files with 92 additions and 4 deletions.
4 changes: 4 additions & 0 deletions src/Submission/DaemonSegmentSubmitter.php
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,10 @@ class DaemonSegmentSubmitter implements SegmentSubmitter

public function __construct(string $host = '127.0.0.1', int $port = 2000)
{
if (filter_var($host, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6) !== false) {
$host = "[$host]";
}

$this->socket = stream_socket_client("udp://$host:$port");

if ($this->socket !== false) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,19 +10,22 @@
* @author Patrick Kerrigan (patrickkerrigan.uk)
* @since 17/05/2018
*/
class DaemonSegmentSubmitterTest extends TestCase
abstract class AbstractDaemonSegmentSubmitterTest extends TestCase
{
/**
* @var resource
*/
private $socket;

abstract protected function getServerAddress(): string;
abstract protected function getSubmitter(): DaemonSegmentSubmitter;

public function setUp(): void
{
parent::setUp();
$_ = null;
$this->socket = stream_socket_server(
'udp://127.0.0.1:2000',
$this->getServerAddress(),
$_,
$_,
STREAM_SERVER_BIND
Expand All @@ -42,7 +45,7 @@ public function testSubmitsToDaemon(): void
->setName('Test segment / 1')
->begin()
->end()
->submit(new DaemonSegmentSubmitter());
->submit($this->getSubmitter());

$packets = $this->receivePackets(1);

Expand All @@ -66,7 +69,7 @@ public function testSubmitsLongTraceAsFragmented(): void
->addSubsegment($subsegment2)
->addSubsegment($subsegment3)
->end()
->submit(new DaemonSegmentSubmitter());
->submit($this->getSubmitter());

$buffer = $this->receivePackets(5);

Expand Down
27 changes: 27 additions & 0 deletions tests/HostnameDaemonSegmentSubmitterTest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
<?php

namespace Pkerrigan\Xray;

use Pkerrigan\Xray\Submission\DaemonSegmentSubmitter;

/**
*
* @author Patrick Kerrigan (patrickkerrigan.uk)
* @since 04/05/2024
*/
class HostnameDaemonSegmentSubmitterTest extends AbstractDaemonSegmentSubmitterTest
{

protected function getServerAddress(): string
{
return 'udp://[::1]:2000';
}

protected function getSubmitter(): DaemonSegmentSubmitter
{
return new DaemonSegmentSubmitter(
'localhost',
2000
);
}
}
27 changes: 27 additions & 0 deletions tests/Ipv4DaemonSegmentSubmitterTest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
<?php

namespace Pkerrigan\Xray;

use Pkerrigan\Xray\Submission\DaemonSegmentSubmitter;

/**
*
* @author Patrick Kerrigan (patrickkerrigan.uk)
* @since 04/05/2024
*/
class Ipv4DaemonSegmentSubmitterTest extends AbstractDaemonSegmentSubmitterTest
{

protected function getServerAddress(): string
{
return 'udp://127.0.0.1:2000';
}

protected function getSubmitter(): DaemonSegmentSubmitter
{
return new DaemonSegmentSubmitter(
'127.0.0.1',
2000
);
}
}
27 changes: 27 additions & 0 deletions tests/Ipv6DaemonSegmentSubmitterTest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
<?php

namespace Pkerrigan\Xray;

use Pkerrigan\Xray\Submission\DaemonSegmentSubmitter;

/**
*
* @author Patrick Kerrigan (patrickkerrigan.uk)
* @since 04/05/2024
*/
class Ipv6DaemonSegmentSubmitterTest extends AbstractDaemonSegmentSubmitterTest
{

protected function getServerAddress(): string
{
return 'udp://[::1]:2000';
}

protected function getSubmitter(): DaemonSegmentSubmitter
{
return new DaemonSegmentSubmitter(
'::1',
2000
);
}
}

0 comments on commit 48a37da

Please sign in to comment.