Skip to content

Commit

Permalink
Merge pull request #16 from rtckit/v0.6.0
Browse files Browse the repository at this point in the history
v0.6.0
  • Loading branch information
cdosoftei authored Oct 5, 2021
2 parents 0a47d9d + 41e7a2c commit f63c4b6
Show file tree
Hide file tree
Showing 79 changed files with 1,505 additions and 531 deletions.
65 changes: 42 additions & 23 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,27 +29,35 @@ $message = \RTCKit\SIP\Message::parse($text);
echo get_class($message) . PHP_EOL;

/* Outputs something similar to:
* Protocol version: SIP/2.0
* Request method: REGISTER
* Request URI: sip:192.168.0.1
* Via: 192.168.0.2:5050
* Via branch: z9hG4bK.eAV4o0nXr
* From: sip:[email protected]
* From tag: SFJbQ2oWh
* To: sip:[email protected]
* Sequence number: 20
* Call ID: ob0EYyuyC0
* Protocol version: SIP/2.0
* Request method: REGISTER
* Request URI: sip:192.168.0.1
* Via: 192.168.0.2:5050
* Via branch: z9hG4bK.eAV4o0nXr
* From scheme: sip
* From user: buzz
* From host: 192.168.0.1
* From tag: SFJbQ2oWh
* To scheme: sip
* To user: buzz
* To host: 192.168.0.1
* Sequence number: 20
* Call ID: ob0EYyuyC0
*/
printf("Protocol version: %s" . PHP_EOL, $message->version);
printf("Request method: %s" . PHP_EOL, $message->method);
printf("Request URI: %s" . PHP_EOL, $message->uri);
printf("Via: %s" . PHP_EOL, $message->via->values[0]->host);
printf("Via branch: %s" . PHP_EOL, $message->via->values[0]->branch);
printf("From: %s" . PHP_EOL, $message->from->addr);
printf("From tag: %s" . PHP_EOL, $message->from->tag);
printf("To: %s" . PHP_EOL, $message->to->addr);
printf("Sequence number: %s" . PHP_EOL, $message->cSeq->sequence);
printf("Call ID: %s" . PHP_EOL, $message->callId->value);
printf("Protocol version: %s" . PHP_EOL, $message->version);
printf("Request method: %s" . PHP_EOL, $message->method);
printf("Request URI: %s" . PHP_EOL, $message->uri);
printf("Via: %s" . PHP_EOL, $message->via->values[0]->host);
printf("Via branch: %s" . PHP_EOL, $message->via->values[0]->branch);
printf("From scheme: %s" . PHP_EOL, $request->from->uri->scheme);
printf("From user: %s" . PHP_EOL, $request->from->uri->user);
printf("From host: %s" . PHP_EOL, $request->from->uri->host);
printf("From tag: %s" . PHP_EOL, $request->from->tag);
printf("To scheme: %s" . PHP_EOL, $request->to->uri->scheme);
printf("To user: %s" . PHP_EOL, $request->to->uri->user);
printf("To host: %s" . PHP_EOL, $request->to->uri->host);
printf("Sequence number: %s" . PHP_EOL, $message->cSeq->sequence);
printf("Call ID: %s" . PHP_EOL, $message->callId->value);
```

#### SIP Message Rendering
Expand All @@ -70,11 +78,17 @@ $response->via->values[0]->host = '192.168.0.2:5050';
$response->via->values[0]->branch = 'z9hG4bK.eAV4o0nXr';

$response->from = new \RTCKit\SIP\Header\NameAddrHeader;
$response->from->addr = 'sip:[email protected]';
$response->from->uri = new \RTCKit\SIP\URI;
$response->from->uri->scheme = 'sip';
$response->from->uri->user = 'buzz';
$response->from->uri->host = '192.168.0.1';
$response->from->tag = 'SFJbQ2oWh';

$response->to = new \RTCKit\SIP\Header\NameAddrHeader;
$response->to->addr = 'sip:[email protected]';
$response->to->uri = new \RTCKit\SIP\URI;
$response->to->uri->scheme = 'sip';
$response->to->uri->user = 'buzz';
$response->to->uri->host = '192.168.0.1';
$response->to->tag = '8cQtUyH6N5N9K';

$response->cSeq = new \RTCKit\SIP\Header\CSeqHeader;
Expand All @@ -89,7 +103,12 @@ $response->maxForwards->value = 70;

$response->contact = new \RTCKit\SIP\Header\ContactHeader;
$response->contact->values[0] = new \RTCKit\SIP\Header\ContactValue;
$response->contact->values[0]->addr = 'sip:[email protected]:5050;transport=udp';
$response->contact->values[0]->uri = new \RTCKit\SIP\URI;
$response->contact->values[0]->uri->scheme = 'sip';
$response->contact->values[0]->uri->user = 'buzz';
$response->contact->values[0]->uri->host = '192.168.0.2';
$response->contact->values[0]->uri->port = 5050;
$response->contact->values[0]->uri->transport = 'udp';
$response->contact->values[0]->expires = 3600;

$response->userAgent = new \RTCKit\SIP\Header\Header;
Expand Down
2 changes: 1 addition & 1 deletion composer.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "rtckit/sip",
"description": "Parser/Renderer for SIP protocol written in PHP",
"version": "0.5.1",
"version": "0.6.0",
"type": "library",
"keywords": [
"sip",
Expand Down
47 changes: 27 additions & 20 deletions examples/01-parse-request.php
Original file line number Diff line number Diff line change
Expand Up @@ -25,30 +25,35 @@
'Accept: text/plain' . "\r\n" .
'Accept: application/vnd.gsma.rcs-ft-http+xml' . "\r\n" .
'Contact: <sip:[email protected]:5050;transport=udp>' . "\r\n" .
' ;q=0.7; expires=3600' . "\r\n" .
' ;+sip.instance="<urn:uuid:5cc54b96-ab90-4652-b4e5-de74c8e56fb7>"' . "\r\n" .
'Contact: <sip:[email protected];transport=tcp>;reg-id=1;expires=3600' . "\r\n" .
' ;+sip.instance="<urn:uuid:00000000-0000-1000-8000-AABBCCDDEEFF>"' . "\r\n" .
'Contact: <sip:[email protected];transport=tcp>;reg-id=2;expires=3600' . "\r\n" .
' ;+sip.instance="<urn:uuid:00000000-0000-1000-8000-AABBCCDDEEFF>"' . "\r\n" .
' ;q=0.7; expires=3600' . "\r\n" .
' ;+sip.instance="<urn:uuid:5cc54b96-ab90-4652-b4e5-de74c8e56fb7>"' . "\r\n" .
'Contact: <sip:[email protected];transport=tcp>;reg-id=1;expires=3600' . "\r\n" .
' ;+sip.instance="<urn:uuid:00000000-0000-1000-8000-AABBCCDDEEFF>"' . "\r\n" .
'Contact: <sip:[email protected];transport=tcp>;reg-id=2;expires=3600' . "\r\n" .
' ;+sip.instance="<urn:uuid:00000000-0000-1000-8000-AABBCCDDEEFF>"' . "\r\n" .
'Expires: 3600' . "\r\n" .
'User-Agent: MyDeskPhone/1.0.0' . "\r\n" .
"\r\n";

$request = Message::parse($text);

printf("Message type: %s" . PHP_EOL, (get_class($request) === Request::class) ? 'SIP Request' : 'BOGUS!!!');
printf("Protocol version: %s" . PHP_EOL, $request->version);
printf("Request method: %s" . PHP_EOL, $request->method);
printf("Request URI: %s" . PHP_EOL, $request->uri);
printf("Via: %s" . PHP_EOL, $request->via->values[0]->host);
printf("Via branch: %s" . PHP_EOL, $request->via->values[0]->branch);
printf("From: %s" . PHP_EOL, $request->from->addr);
printf("From tag: %s" . PHP_EOL, $request->from->tag);
printf("To: %s" . PHP_EOL, $request->to->addr);
printf("CSeq: %s" . PHP_EOL, $request->cSeq->sequence);
printf("Call ID: %s" . PHP_EOL, $request->callId->value);
printf("Max forwards: %d" . PHP_EOL, $request->maxForwards->value);
printf("Message type: %s" . PHP_EOL, (get_class($request) === Request::class) ? 'SIP Request' : 'BOGUS!!!');
printf("Protocol version: %s" . PHP_EOL, $request->version);
printf("Request method: %s" . PHP_EOL, $request->method);
printf("Request URI scheme: %s" . PHP_EOL, $request->uri->scheme);
printf("Request URI host: %s" . PHP_EOL, $request->uri->host);
printf("Via: %s" . PHP_EOL, $request->via->values[0]->host);
printf("Via branch: %s" . PHP_EOL, $request->via->values[0]->branch);
printf("From scheme: %s" . PHP_EOL, $request->from->uri->scheme);
printf("From user: %s" . PHP_EOL, $request->from->uri->user);
printf("From host: %s" . PHP_EOL, $request->from->uri->host);
printf("From tag: %s" . PHP_EOL, $request->from->tag);
printf("To scheme: %s" . PHP_EOL, $request->to->uri->scheme);
printf("To user: %s" . PHP_EOL, $request->to->uri->user);
printf("To host: %s" . PHP_EOL, $request->to->uri->host);
printf("CSeq: %s" . PHP_EOL, $request->cSeq->sequence);
printf("Call ID: %s" . PHP_EOL, $request->callId->value);
printf("Max forwards: %d" . PHP_EOL, $request->maxForwards->value);

printf("Supported: ");

Expand All @@ -70,8 +75,10 @@
printf("- %s" . PHP_EOL, $val->value);
}


printf("Contact: %s" . PHP_EOL, $request->contact->values[0]->addr);
printf("Contact scheme: %s" . PHP_EOL, $request->contact->values[0]->uri->scheme);
printf("Contact user: %s" . PHP_EOL, $request->contact->values[0]->uri->user);
printf("Contact host: %s" . PHP_EOL, $request->contact->values[0]->uri->host);
printf("Contact transport: %s" . PHP_EOL, $request->contact->values[0]->uri->transport);
printf("Contact q-value: %s" . PHP_EOL, $request->contact->values[0]->q);
printf("Contact expires: %s" . PHP_EOL, $request->contact->values[0]->expires);
printf("Contact instance: %s" . PHP_EOL, $request->contact->values[0]->params['+sip.instance']);
Expand Down
22 changes: 18 additions & 4 deletions examples/02-render-request.php
Original file line number Diff line number Diff line change
Expand Up @@ -18,11 +18,14 @@
use RTCKit\SIP\Header\ViaHeader;
use RTCKit\SIP\Header\ViaValue;
use RTCKit\SIP\Request;
use RTCKit\SIP\URI;

$request = new Request;
$request->version = 'SIP/2.0';
$request->method = 'REGISTER';
$request->uri = 'sip:192.168.0.1';
$request->uri = new URI;
$request->uri->scheme = 'sip';
$request->uri->host = '192.168.0.1';

$request->via = new ViaHeader;
$request->via->values[0] = new ViaValue;
Expand All @@ -33,11 +36,17 @@
$request->via->values[0]->branch = 'z9hG4bK.eAV4o0nXr';

$request->from = new NameAddrHeader;
$request->from->addr = 'sip:[email protected]';
$request->from->uri = new URI;
$request->from->uri->scheme = 'sip';
$request->from->uri->user = 'buzz';
$request->from->uri->host = '192.168.0.1';
$request->from->tag = 'SFJbQ2oWh';

$request->to = new NameAddrHeader;
$request->to->addr = 'sip:[email protected]';
$request->to->uri = new URI;
$request->to->uri->scheme = 'sip';
$request->to->uri->user = 'buzz';
$request->to->uri->host = '192.168.0.1';

$request->cSeq = new CSeqHeader;
$request->cSeq->sequence = 20;
Expand All @@ -51,7 +60,12 @@

$request->contact = new ContactHeader;
$request->contact->values[0] = new ContactValue;
$request->contact->values[0]->addr = 'sip:[email protected]:5050;transport=udp';
$request->contact->values[0]->uri = new URI;
$request->contact->values[0]->uri->scheme = 'sip';
$request->contact->values[0]->uri->user = 'buzz';
$request->contact->values[0]->uri->host = '192.168.0.2';
$request->contact->values[0]->uri->port = 5050;
$request->contact->values[0]->uri->transport = 'udp';
$request->contact->values[0]->q = 0.7;
$request->contact->values[0]->expires = 3600;
$request->contact->values[0]->params['+sip.instance'] = '"<urn:uuid:5cc54b96-ab90-4652-b4e5-de74c8e56fb7>"';
Expand Down
13 changes: 10 additions & 3 deletions examples/03-parse-response.php
Original file line number Diff line number Diff line change
Expand Up @@ -38,14 +38,21 @@
printf("Response reason: %s" . PHP_EOL, $response->reason);
printf("Via: %s" . PHP_EOL, $response->via->values[0]->host);
printf("Via branch: %s" . PHP_EOL, $response->via->values[0]->branch);
printf("From: %s" . PHP_EOL, $response->from->addr);
printf("From scheme: %s" . PHP_EOL, $response->from->uri->scheme);
printf("From user: %s" . PHP_EOL, $response->from->uri->user);
printf("From host: %s" . PHP_EOL, $response->from->uri->host);
printf("From tag: %s" . PHP_EOL, $response->from->tag);
printf("To: %s" . PHP_EOL, $response->to->addr);
printf("To scheme: %s" . PHP_EOL, $response->to->uri->scheme);
printf("To host: %s" . PHP_EOL, $response->to->uri->host);
printf("To tag: %s" . PHP_EOL, $response->to->tag);
printf("Call ID: %s" . PHP_EOL, $response->callId->value);
printf("User agent: %s" . PHP_EOL, $response->userAgent->values[0]);
printf("CSeq: %s" . PHP_EOL, $response->cSeq->sequence);
printf("Contact: %s" . PHP_EOL, $response->contact->values[0]->addr);
printf("Contact scheme: %s" . PHP_EOL, $response->contact->values[0]->uri->scheme);
printf("Contact user: %s" . PHP_EOL, $response->contact->values[0]->uri->user);
printf("Contact host: %s" . PHP_EOL, $response->contact->values[0]->uri->host);
printf("Contact port: %s" . PHP_EOL, $response->contact->values[0]->uri->port);
printf("Contact transport: %s" . PHP_EOL, $response->contact->values[0]->uri->transport);

printf("Accept: ");

Expand Down
18 changes: 15 additions & 3 deletions examples/04-render-response.php
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
use RTCKit\SIP\Header\ViaHeader;
use RTCKit\SIP\Header\ViaValue;
use RTCKit\SIP\Response;
use RTCKit\SIP\URI;

$response = new Response;
$response->version = 'SIP/2.0';
Expand All @@ -32,11 +33,17 @@
$response->via->values[0]->branch = 'z9hG4bK.eAV4o0nXr';

$response->from = new NameAddrHeader;
$response->from->addr = 'sip:[email protected]';
$response->from->uri = new URI;
$response->from->uri->scheme = 'sip';
$response->from->uri->user = 'buzz';
$response->from->uri->host = '192.168.0.1';
$response->from->tag = 'SFJbQ2oWh';

$response->to = new NameAddrHeader;
$response->to->addr = 'sip:[email protected]';
$response->to->uri = new URI;
$response->to->uri->scheme = 'sip';
$response->to->uri->user = 'buzz';
$response->to->uri->host = '192.168.0.1';
$response->to->tag = '8cQtUyH6N5N9K';

$response->cSeq = new CSeqHeader;
Expand All @@ -51,7 +58,12 @@

$response->contact = new ContactHeader;
$response->contact->values[0] = new ContactValue;
$response->contact->values[0]->addr = 'sip:[email protected]:5050;transport=udp';
$response->contact->values[0]->uri = new URI;
$response->contact->values[0]->uri->scheme = 'sip';
$response->contact->values[0]->uri->user = 'buzz';
$response->contact->values[0]->uri->host = '192.168.0.2';
$response->contact->values[0]->uri->port = 5050;
$response->contact->values[0]->uri->transport = 'udp';
$response->contact->values[0]->q = 0.7;
$response->contact->values[0]->expires = 3600;
$response->contact->values[0]->params['+sip.instance'] = '"<urn:uuid:5cc54b96-ab90-4652-b4e5-de74c8e56fb7>"';
Expand Down
8 changes: 4 additions & 4 deletions examples/05-stream-parse.php
Original file line number Diff line number Diff line change
Expand Up @@ -26,16 +26,16 @@
printf(
"Request %10s %30s %30s %40s" . PHP_EOL,
$message->method,
substr($message->from->addr, 0, 30),
substr($message->to->addr, 0, 30),
substr($message->from->uri->user, 0, 30),
substr($message->to->uri->user, 0, 30),
substr($message->callId->value, 0, 40)
);
} else {
printf(
"Response %10s %30s %30s %40s %03d %s" . PHP_EOL,
$message->cSeq->method,
substr($message->from->addr, 0, 30),
substr($message->to->addr, 0, 30),
substr($message->from->uri->user, 0, 30),
substr($message->to->uri->user, 0, 30),
substr($message->callId->value, 0, 40),
$message->code,
$message->reason
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<?php
/**
* RTCKit\SIP\Exception\InvalidCSeqValue Class
* RTCKit\SIP\Exception\InvalidCSeqValueException Class
*/
declare(strict_types = 1);

Expand All @@ -9,6 +9,6 @@
/**
* Exception thrown when processing SIP Messages with conflicting CSeq header values
*/
class InvalidCSeqValue extends SIPException
class InvalidCSeqValueException extends SIPException
{
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<?php
/**
* RTCKit\SIP\Exception\InvalidDuplicateHeader Class
* RTCKit\SIP\Exception\InvalidDuplicateHeaderException Class
*/
declare(strict_types = 1);

Expand All @@ -9,6 +9,6 @@
/**
* Exception thrown when encountering duplicates for single value header fields
*/
class InvalidDuplicateHeader extends SIPException
class InvalidDuplicateHeaderException extends SIPException
{
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<?php
/**
* RTCKit\SIP\Exception\InvalidHeaderParameter Class
* RTCKit\SIP\Exception\InvalidHeaderParameterException Class
*/
declare(strict_types = 1);

Expand All @@ -9,6 +9,6 @@
/**
* Exception thrown when processing SIP Messages with empty header parameters
*/
class InvalidHeaderParameter extends SIPException
class InvalidHeaderParameterException extends SIPException
{
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<?php
/**
* RTCKit\SIP\Exception\InvalidHeaderValue Class
* RTCKit\SIP\Exception\InvalidHeaderValueException Class
*/
declare(strict_types = 1);

Expand All @@ -9,6 +9,6 @@
/**
* Exception thrown when processing SIP Messages with empty/inadequate header values
*/
class InvalidHeaderValue extends SIPException
class InvalidHeaderValueException extends SIPException
{
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<?php
/**
* RTCKit\SIP\Exception\InvalidRequestMethod Class
* RTCKit\SIP\Exception\InvalidRequestMethodException Class
*/
declare(strict_types = 1);

Expand All @@ -9,6 +9,6 @@
/**
* Exception thrown when processing SIP requests with invalid/missing method
*/
class InvalidRequestMethod extends SIPException
class InvalidRequestMethodException extends SIPException
{
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<?php
/**
* RTCKit\SIP\Exception\InvalidRequestURI Class
* RTCKit\SIP\Exception\InvalidRequestURIException Class
*/
declare(strict_types = 1);

Expand All @@ -9,6 +9,6 @@
/**
* Exception thrown when processing SIP requests with invalid URIs
*/
class InvalidRequestURI extends SIPException
class InvalidRequestURIException extends SIPException
{
}
Loading

0 comments on commit f63c4b6

Please sign in to comment.