Date: Thu, 28 Mar 2024 23:18:31 +0100 (CET) Message-ID: <1564071913.47227.1711664311704@docs.flashphoner.com> Subject: Exported From Confluence MIME-Version: 1.0 Content-Type: multipart/related; boundary="----=_Part_47226_848787679.1711664311704" ------=_Part_47226_848787679.1711664311704 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Content-Location: file:///C:/exported.html
=D0=94=D0=BE=D0=BF=D1=83=D1=81=D1=82=D0=B8=D0=BC, =D0=B2=D0=BE=D0=B7=D0= =BD=D0=B8=D0=BA=D0=BB=D0=B0 =D0=B7=D0=B0=D0=B4=D0=B0=D1=87=D0=B0 =D0=BE=D0= =B3=D1=80=D0=B0=D0=BD=D0=B8=D1=87=D0=B8=D1=82=D1=8C =D0=B4=D0=BE=D1=81=D1= =82=D1=83=D0=BF =D0=BF=D0=BE=D0=BB=D1=8C=D0=B7=D0=BE=D0=B2=D0=B0=D1=82=D0= =B5=D0=BB=D0=B5=D0=B9 =D0=BA =D1=81=D0=B5=D1=80=D0=B2=D0=B5=D1=80=D1=83, = =D0=BE=D1=81=D0=BD=D0=BE=D0=B2=D1=8B=D0=B2=D0=B0=D1=8F=D1=81=D1=8C =D0=BD= =D0=B0 =D0=B4=D0=BE=D0=BC=D0=B5=D0=BD=D0=B5, =D0=BD=D0=B0=D0=BF=D1=80=D0=B8= =D0=BC=D0=B5=D1=80, =D1=80=D0=B0=D0=B7=D1=80=D0=B5=D1=88=D0=B8=D1=82=D1=8C = =D0=BF=D1=80=D0=BE=D1=81=D0=BC=D0=BE=D1=82=D1=80 =D0=B2=D0=B8=D0=B4=D0=B5= =D0=BE =D1=82=D0=BE=D0=BB=D1=8C=D0=BA=D0=BE =D1=81 =D0=BE=D0=BF=D1=80=D0=B5= =D0=B4=D0=B5=D0=BB=D0=B5=D0=BD=D0=BD=D0=BE=D0=B3=D0=BE =D0=B4=D0=BE=D0=BC= =D0=B5=D0=BD=D0=B0. =D0=AD=D1=82=D0=B0 =D0=B7=D0=B0=D0=B4=D0=B0=D1=87=D0=B0= =D0=BC=D0=BE=D0=B6=D0=B5=D1=82 =D0=B1=D1=8B=D1=82=D1=8C =D1=80=D0=B5=D1=88= =D0=B5=D0=BD=D0=B0 =D0=BF=D1=80=D0=B8 =D0=BF=D0=BE=D0=BC=D0=BE=D1=89=D0=B8 = REST hooks.
WCS =D0=BF=D0=B5=D1=80=D0=B5=D0=B4=D0=B0=D0=B5=D1=82 =D0=B2 REST-=D0=B7= =D0=B0=D0=BF=D1=80=D0=BE=D1=81=D0=B5 =D1=82=D0=B8=D0=BF=D0=B0 1 "connect" =D0=BA =D0=B1=D1=8D= =D0=BA=D0=B5=D0=BD=D0=B4-=D1=81=D0=B5=D1=80=D0=B2=D0=B5=D1=80=D1=83 =D0=BF= =D0=BE=D0=BB=D0=B5 "origin", =D1=81=D0=BE=D0=B4=D0=B5=D1=80=D0=B6=D0=B0=D1= =89=D0=B5=D0=B5 =D0=B4=D0=BE=D0=BC=D0=B5=D0=BD=D0=BD=D0=BE=D0=B5 =D0=B8=D0= =BC=D1=8F WCS-=D1=81=D0=B5=D1=80=D0=B2=D0=B5=D1=80=D0=B0, =D0=BF=D0=BE =D0= =BA=D0=BE=D1=82=D0=BE=D1=80=D0=BE=D0=BC=D1=83 =D0=BA =D0=BD=D0=B5=D0=BC=D1= =83 =D0=BE=D0=B1=D1=80=D0=B0=D1=82=D0=B8=D0=BB=D1=81=D1=8F =D0=BF=D0=BE=D0= =BB=D1=8C=D0=B7=D0=BE=D0=B2=D0=B0=D1=82=D0=B5=D0=BB=D1=8C, =D0=BD=D0=B0=D0= =BF=D1=80=D0=B8=D0=BC=D0=B5=D1=80
{ "nodeId" : "5tWOFn5ZoMQs22KrEls2Ulhee57hQO9D", "appKey" : "defaultApp", "sessionId" : "/5.44.168.45:53438/abcdef0123456789", "useWsTunnel" : false, "useWsTunnelPacketization2" : false, "useBase64BinaryEncoding" : false, "mediaProviders" : [ "WebRTC", "MSE", "WSPlayer" ], "clientVersion" : "0.5.28", "clientOSVersion" : "5.0 (Windows)", "clientBrowserVersion" : "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:60= .0) Gecko/20100101 Firefox/60.0", "keepAlive" : false, "origin" : "https://test2.flashphoner.com:8888" }=20
=D0=A2=D0=B0=D0=BA=D0=B8=D0=BC =D0=BE=D0=B1=D1=80=D0=B0=D0=B7=D0=BE=D0= =BC, =D0=B4=D0=BB=D1=8F =D0=B0=D0=B2=D1=82=D0=BE=D1=80=D0=B8=D0=B7=D0=B0=D1= =86=D0=B8=D0=B8 =D0=BF=D0=BE=D0=BB=D1=8C=D0=B7=D0=BE=D0=B2=D0=B0=D1=82=D0= =B5=D0=BB=D1=8F =D0=BF=D0=BE =D0=B4=D0=BE=D0=BC=D0=B5=D0=BD=D1=83 =D0=BD=D0= =B5=D0=BE=D0=B1=D1=85=D0=BE=D0=B4=D0=B8=D0=BC=D0=BE =D1=80=D0=B5=D0=B0=D0= =BB=D0=B8=D0=B7=D0=BE=D0=B2=D0=B0=D1=82=D1=8C REST hook =D1=82=D0=B8=D0=BF= =D0=B0 1 "connect".
1. REST hook =D1=82=D0=B8=D0=BF=D0=B0 1 =D0=B4=D0=BE=D0=BB=D0=B6=D0= =B5=D0=BD =D0=B1=D1=8B=D1=82=D1=8C =D0=B4=D0=BE=D1=81=D1=82=D1=83=D0=BF=D0= =B5=D0=BD =D0=BD=D0=B0 =D0=B2=D0=B5=D0=B1-=D1=81=D0=B5=D1=80=D0=B2=D0=B5=D1= =80=D0=B5 =D0=BA=D0=B0=D0=BA
http://yourhost/r= est-hooks/connect=20
2. REST hook =D0=B4=D0=BE=D0=BB=D0=
=B6=D0=B5=D0=BD =D0=BE=D0=B1=D1=80=D0=B0=D0=B1=D0=B0=D1=82=D1=8B=D0=B2=D0=
=B0=D1=82=D1=8C POST application/json=
HTTP =D0=B7=D0=B0=D0=BF=D1=80=D0=BE=D1=81=D1=8B.
4. WCS =D1=81=D0=B5=D1=80=D0=B2=D0=B5=D1=80 =D0=B4=D0=BE=D0=BB=
=D0=B6=D0=B5=D0=BD =D0=B1=D1=8B=D1=82=D1=8C =D0=BD=D0=B0=D1=81=D1=82=D1=80=
=D0=BE=D0=B5=D0=BD =D0=BD=D0=B0 =D1=80=D0=B0=D0=B1=D0=BE=D1=82=D1=83 =D1=81=
REST hook =D1=81=D0=BB=D0=B5=D0=B4=D1=83=D1=8E=D1=89=D0=B8=D0=BC =D0=BE=D0=
=B1=D1=80=D0=B0=D0=B7=D0=BE=D0=BC:
ssh -p 2001 admin= @localhost >update app -l http://yourhost/rest-hooks defaultApp=20
=D0=9E=D0=B1=D1=80=D0=B0=D1=89=D0=B5=D0=BD=D0=B8=D1=8F =D0=BA REST =D0= =BC=D0=B5=D1=82=D0=BE=D0=B4=D1=83 =D0=BC=D0=BE=D0=B6=D0=BD=D0=BE =D0=BE=D1= =82=D1=81=D0=BB=D0=B5=D0=B6=D0=B8=D0=B2=D0=B0=D1=82=D1=8C =D0=B2 =D0=BB=D0=BE=D0=B3=D0=B5 =D1=81=D0= =B5=D1=80=D0=B2=D0=B5=D1=80=D0=B0
tail -f /usr/loca= l/FlashphonerWebCallServer/logs/server_logs/flashphoner.log=20
=D0=92 =D0=BF=D0=B5=D1=80=D0=B2=D1=8B=D1=85 =D1=81=D1=82=D1=80=D0=BE=D0= =BA=D0=B0=D1=85 =D1=81=D0=BA=D1=80=D0=B8=D0=BF=D1=82=D0=B0 =D0=BE=D0=BF=D1= =80=D0=B5=D0=B4=D0=B5=D0=BB=D1=8F=D0=B5=D1=82=D1=81=D1=8F =D0=BC=D0=B5=D1= =82=D0=BE=D0=B4 =D0=B8 =D0=B4=D0=B5=D0=BA=D0=BE=D0=B4=D0=B8=D1=80=D1=83=D0= =B5=D1=82=D1=81=D1=8F =D1=82=D0=B5=D0=BB=D0=BE =D0=B7=D0=B0=D0=BF=D1=80=D0= =BE=D1=81=D0=B0. =D0=97=D0=B4=D0=B5=D1=81=D1=8C =D0=B6=D0=B5 =D0=B7=D0=B0= =D0=B4=D0=B0=D0=B5=D0=BC =D0=B4=D0=BE=D0=BC=D0=B5=D0=BD =D0=B4=D0=BB=D1=8F = =D0=B0=D0=B2=D1=82=D0=BE=D1=80=D0=B8=D0=B7=D0=B0=D1=86=D0=B8=D0=B8:
<?php $api_method =3D array_pop(explode("/", $_SERVER['REQUEST_URI'])); $incoming_data =3D json_decode(file_get_contents('php://input'), true); $domain =3D "yourdomain.com";=20
=D0=9D=D0=B0=D1=87=D0=B8=D0=BD=D0=B0=D0=B5=D1=82=D1=81=D1=8F =D0=BE=D0= =B1=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D0=BA=D0=B0 =D0=BC=D0=B5=D1=82=D0=BE=D0= =B4=D0=B0 "connect". =D0=97=D0=B4=D0=B5=D1=81=D1=8C =D0=BE=D0=BF=D1=80= =D0=B5=D0=B4=D0=B5=D0=BB=D1=8F=D0=B5=D1=82=D1=81=D1=8F =D0=BF=D0=B5=D1=80= =D0=B5=D0=B4=D0=B0=D0=BD=D0=BD=D0=BE=D0=B5 =D0=B2 =D0=B7=D0=B0=D0=BF=D1=80= =D0=BE=D1=81=D0=B5 =D0=BF=D0=BE=D0=BB=D0=B5 "origin" =D0=B8 =D0=B7=D0=B0=D0= =BF=D0=BE=D0=BB=D0=BD=D1=8F=D0=B5=D1=82=D1=81=D1=8F =D0=BF=D0=BE=D0=BB=D0= =B5 "restClientConfig"<= /a> =D0=B4=D0=BB=D1=8F =D0=BE=D1=82=D0=B2=D0=B5=D1=82=D0=B0:
switch($api_method= ) { case"connect":=09 =09 =09$origin =3D $incoming_data['origin'];=09 =09 =09//logs =09error_log("sessionId: " . $incoming_data['sessionId']); =09error_log("origin: " . $origin);=09 =09 =09 =09$rest_client_config =3D json_decode(file_get_contents('rest_client_confi= g.json'), true);=09 =09$incoming_data['restClientConfig'] =3D $rest_client_config;=20
=D0=9F=D1=80=D0=BE=D0=B2=D0=B5=D1=80=D0=BA=D0=B0 =D0=B4=D0=BE=D0=BC=D0= =B5=D0=BD=D0=B0. =D0=95=D1=81=D0=BB=D0=B8 =D0=B4=D0=BE=D0=BC=D0=B5=D0=BD = =D0=BD=D0=B5 =D0=BD=D0=B0=D0=B9=D0=B4=D0=B5=D0=BD, =D0=B2=D1=8B=D0=B7=D1=8B= =D0=B2=D0=B0=D0=B5=D1=82=D1=81=D1=8F =D1=84=D1=83=D0=BD=D0=BA=D1=86=D0=B8= =D1=8F ubnormalResponse =D0=B4=D0=BB=D1=8F =D1=84=D0=BE=D1=80=D0=BC=D0=B8= =D1=80=D0=BE=D0=B2=D0=B0=D0=BD=D0=B8=D1=8F =D0=BE=D1=82=D1=80=D0=B8=D1=86= =D0=B0=D1=82=D0=B5=D0=BB=D1=8C=D0=BD=D0=BE=D0=B3=D0=BE =D0=BE=D1=82=D0=B2= =D0=B5=D1=82=D0=B0
=09$found =3D strp= os($origin, $domain); =09if ($found !=3D=3D false){ =09 error_log("User authorized by domain " . $domain); =09}else{ =09 error_log("User not authorized by domain: " . $domain . " Connection= failed with 403 status."); =09 ubnormalResponse(403); =09} =09break; }=20
=D0=92=D1=8B=D0=B2=D0=BE=D0=B4 =D0=BE=D1=82=D0=B2=D0=B5=D1=82=D0=B0 =D0= =BD=D0=B0 =D0=B7=D0=B0=D0=BF=D1=80=D0=BE=D1=81
header('Content-Ty= pe: application/json'); echo json_encode($incoming_data);=20
=D0=A4=D1=83=D0=BD=D0=BA=D1=86=D0=B8=D1=8F ubnormalResponse =D0=B7= =D0=B0=D0=B2=D0=B5=D1=80=D1=88=D0=B0=D0=B5=D1=82 =D1=81=D0=BA=D1=80=D0=B8= =D0=BF=D1=82:
function ubnormalR= esponse($code) { if ($code =3D=3D 403) { =09header('HTTP/1.1 403 Forbidden', true, $code); } else { =09header(':', true, $code); } die(); } ?>=20
&l= t;?php $api_method =3D array_pop(explode("/", $_SERVER['REQUEST_URI'])); $incoming_data =3D json_decode(file_get_contents('php://input'), true); $domain =3D "yourdomain.com"; switch($api_method) { case"connect":=09 =09 =09$origin =3D $incoming_data['origin'];=09 =09 =09//logs =09error_log("sessionId: " . $incoming_data['sessionId']); =09error_log("origin: " . $origin);=09 =09 =09 =09$rest_client_config =3D json_decode(file_get_contents('rest_client_confi= g.json'), true);=09 =09$incoming_data['restClientConfig'] =3D $rest_client_config; =09$found =3D strpos($origin, $domain); =09if ($found !=3D=3D false){ =09 error_log("User authorized by domain " . $domain); =09}else{ =09 error_log("User not authorized by domain: " . $domain . " Connection= failed with 403 status."); =09 ubnormalResponse(403); =09} =09break; } header('Content-Type: application/json'); echo json_encode($incoming_data); function ubnormalResponse($code) { if ($code =3D=3D 403) { =09header('HTTP/1.1 403 Forbidden', true, $code); } else { =09header(':', true, $code); } die(); } ?>=20
{ "ConnectionStatusEvent" : { "clientExclude" : "", "restExclude" : "", "restOnError" : "LOG", "restPolicy" : "NOTIFY", "restOverwrite" : "" }, "RegistrationStatusEvent" : { "clientExclude" : "", "restExclude" : "", "restOnError" : "LOG", "restPolicy" : "NOTIFY", "restOverwrite" : "" }, "sendXcapRequest" : { "clientExclude" : "", "restExclude" : "", "restOnError" : "LOG", "restPolicy" : "NOTIFY", "restOverwrite" : "" }, "XcapStatusEvent" : { "clientExclude" : "", "restExclude" : "", "restOnError" : "LOG", "restPolicy" : "NOTIFY", "restOverwrite" : "" }, "sendDtmf" : { "clientExclude" : "", "restExclude" : "", "restOnError" : "LOG", "restPolicy" : "NOTIFY", "restOverwrite" : "" }, "call" : { "clientExclude" : "", "restExclude" : "", "restOnError" : "LOG", "restPolicy" : "NOTIFY", "restOverwrite" : "" }, "OnCallEvent" : { "clientExclude" : "", "restExclude" : "", "restOnError" : "LOG", "restPolicy" : "NOTIFY", "restOverwrite" : "" }, "answer" : { "clientExclude" : "", "restExclude" : "", "restOnError" : "LOG", "restPolicy" : "NOTIFY", "restOverwrite" : "" }, "hangup" : { "clientExclude" : "", "restExclude" : "", "restOnError" : "LOG", "restPolicy" : "NOTIFY", "restOverwrite" : "" }, "hold" : { "clientExclude" : "", "restExclude" : "", "restOnError" : "LOG", "restPolicy" : "NOTIFY", "restOverwrite" : "" }, "unhold" : { "clientExclude" : "", "restExclude" : "", "restOnError" : "LOG", "restPolicy" : "NOTIFY", "restOverwrite" : "" }, "transfer" : { "clientExclude" : "", "restExclude" : "", "restOnError" : "LOG", "restPolicy" : "NOTIFY", "restOverwrite" : "" }, "OnTransferEvent" : { "clientExclude" : "", "restExclude" : "", "restOnError" : "FAIL", "restPolicy" : "NOTIFY", "restOverwrite" : "" }, "TransferStatusEvent" : { "clientExclude" : "", "restExclude" : "", "restOnError" : "LOG", "restPolicy" : "NOTIFY", "restOverwrite" : "" }, "CallStatusEvent" : { "clientExclude" : "", "restExclude" : "", "restOnError" : "LOG", "restPolicy" : "NOTIFY", "restOverwrite" : "" }, "sendMessage" : { "clientExclude" : "", "restExclude" : "", "restOnError" : "FAIL", "restPolicy" : "NOTIFY", "restOverwrite" : "" }, "OnMessageEvent" : { "clientExclude" : "", "restExclude" : "", "restOnError" : "LOG", "restPolicy" : "NOTIFY", "restOverwrite" : "" }, "MessageStatusEvent" : { "clientExclude" : "", "restExclude" : "", "restOnError" : "LOG", "restPolicy" : "NOTIFY", "restOverwrite" : "" }, "publishStream" : { "clientExclude" : "", "restExclude" : "", "restOnError" : "LOG", "restPolicy" : "NOTIFY", "restOverwrite" : "" }, "unPublishStream" : { "clientExclude" : "", "restExclude" : "", "restOnError" : "LOG", "restPolicy" : "NOTIFY", "restOverwrite" : "" }, "playStream" : { "clientExclude" : "", "restExclude" : "", "restOnError" : "LOG", "restPolicy" : "NOTIFY", "restOverwrite" : "" }, "stopStream" : { "clientExclude" : "", "restExclude" : "", "restOnError" : "LOG", "restPolicy" : "NOTIFY", "restOverwrite" : "" }, "StreamStatusEvent" : { "clientExclude" : "", "restExclude" : "", "restOnError" : "LOG", "restPolicy" : "NOTIFY", "restOverwrite" : "" }, "subscribe" : { "clientExclude" : "", "restExclude" : "", "restOnError" : "LOG", "restPolicy" : "NOTIFY", "restOverwrite" : "" }, "SubscriptionStatusEvent" : { "clientExclude" : "", "restExclude" : "", "restOnError" : "LOG", "restPolicy" : "NOTIFY", "restOverwrite" : "" }, "OnDataEvent" : { "clientExclude" : "", "restExclude" : "", "restOnError" : "LOG", "restPolicy" : "NOTIFY", "restOverwrite" : "" }, "DataStatusEvent" : { "clientExclude" : "", "restExclude" : "", "restOnError" : "LOG", "restPolicy" : "NOTIFY", "restOverwrite" : "" }, "submitBugReport" : { "clientExclude" : "", "restExclude" : "", "restOnError" : "LOG", "restPolicy" : "NOTIFY", "restOverwrite" : "" }, "BugReportStatusEvent" : { "clientExclude" : "", "restExclude" : "", "restOnError" : "LOG", "restPolicy" : "NOTIFY", "restOverwrite" : "" }, "pushLogs" : { "clientExclude" : "", "restExclude" : "", "restOnError" : "LOG", "restPolicy" : "NOTIFY", "restOverwrite" : "" }, "RecordingStatusEvent" : { "clientExclude" : "", "restExclude" : "", "restOnError" : "LOG", "restPolicy" : "NOTIFY", "restOverwrite" : "" }, "ErrorStatusEvent" : { "clientExclude" : "", "restExclude" : "", "restOnError" : "LOG", "restPolicy" : "NOTIFY", "restOverwrite" : "" }, "disconnect" : { "clientExclude" : "", "restExclude" : "", "restOnError" : "LOG", "restPolicy" : "NOTIFY", "restOverwrite" : "" } }=20