svg
This commit is contained in:
parent
daa2907b8d
commit
c5729f13c0
|
@ -12,7 +12,14 @@
|
|||
<file filelist="ninegate" name="/var/www/html/ninegate/scripts/ninegate-postservice-00.sh" source="ninegate-postservice-00.sh" rm="True" mode="700" />
|
||||
<file filelist="ninegate" name="/var/www/html/ninegate/src/Cadoles/CoreBundle/Command/data/core-init-01.sql" source="ninegate-init-01.sql" rm="True"/>
|
||||
<file filelist='ninegate' name='/etc/cron.d/ninegate' source='ninegate.cron' rm='True'/>
|
||||
<file filelist='ninegate' name='/etc/nginx/conf.d/ninegate.conf' source='ninegate.nginx.conf' rm='True'/>
|
||||
|
||||
<service method='apache' servicelist='ninegate'>ninegate</service>
|
||||
|
||||
<service_access service='ninegate'>
|
||||
<port>5555</port>
|
||||
</service_access>
|
||||
|
||||
</container>
|
||||
</containers>
|
||||
|
||||
|
|
|
@ -28,6 +28,8 @@ class AppKernel extends Kernel
|
|||
new LightSaml\SymfonyBridgeBundle\LightSamlSymfonyBridgeBundle(),
|
||||
new LightSaml\SpBundle\LightSamlSpBundle(),
|
||||
new Debril\RssAtomBundle\DebrilRssAtomBundle(),
|
||||
new Gos\Bundle\WebSocketBundle\GosWebSocketBundle(),
|
||||
new Gos\Bundle\PubSubRouterBundle\GosPubSubRouterBundle(),
|
||||
|
||||
new AppBundle\AppBundle(),
|
||||
|
||||
|
@ -35,7 +37,9 @@ class AppKernel extends Kernel
|
|||
new Cadoles\CASBundle\CadolesCASBundle(),
|
||||
new Cadoles\CoreBundle\CadolesCoreBundle(),
|
||||
new Cadoles\CronBundle\CadolesCronBundle(),
|
||||
new Cadoles\PortalBundle\CadolesPortalBundle()
|
||||
new Cadoles\PortalBundle\CadolesPortalBundle(),
|
||||
new Cadoles\PortalBundle\CadolesWebsocketBundle(),
|
||||
|
||||
];
|
||||
|
||||
if (in_array($this->getEnvironment(), ['dev', 'test'], true)) {
|
||||
|
|
|
@ -5,6 +5,7 @@ imports:
|
|||
- { resource: services.yml }
|
||||
- { resource: "@CadolesCoreBundle/Resources/config/services.yml" }
|
||||
- { resource: "@CadolesPortalBundle/Resources/config/services.yml" }
|
||||
- { resource: "@CadolesWebsocketBundle/Resources/config/services.yml" }
|
||||
- { resource: twig.yml }
|
||||
|
||||
# Put parameters here that don't need to change on each machine where the app is deployed
|
||||
|
@ -125,6 +126,19 @@ light_saml_symfony_bridge:
|
|||
idp:
|
||||
files: '%saml_idps_list%'
|
||||
|
||||
# websocket configuration
|
||||
gos_web_socket:
|
||||
client:
|
||||
session_handler: session.handler.native_file
|
||||
firewall: main
|
||||
shared_config: true
|
||||
server:
|
||||
port: %websocket_port% #The port the socket server will listen on
|
||||
host: %weburl% #The host ip to bind to
|
||||
router:
|
||||
resources:
|
||||
- "@CadolesWebsocketBundle/Resources/config/topic.yml"
|
||||
|
||||
# ckeditor configuration
|
||||
ivory_ck_editor:
|
||||
base_path: "ckeditor"
|
||||
|
|
|
@ -10,6 +10,10 @@ portal:
|
|||
resource: "@CadolesPortalBundle/Resources/config/routing.yml"
|
||||
prefix: /
|
||||
|
||||
websocket:
|
||||
resource: "@CadolesWebsocketBundle/Resources/config/routing.yml"
|
||||
prefix: /
|
||||
|
||||
lightsaml_sp:
|
||||
resource: "@LightSamlSpBundle/Resources/config/routing.yml"
|
||||
prefix: saml
|
||||
|
|
|
@ -13,7 +13,6 @@ twig:
|
|||
activate_widsonde: %activate_widsonde%
|
||||
widsonde_url: %widsonde_url%
|
||||
|
||||
eportail_sync: %eportail_sync%
|
||||
moderegistration: %moderegistration%
|
||||
labelniveau01: %labelniveau01%
|
||||
labelsniveau01: %labelsniveau01%
|
||||
|
|
|
@ -4,8 +4,8 @@
|
|||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
|
||||
"This file is @generated automatically"
|
||||
],
|
||||
"hash": "8ad66c1cc79500add7118e829f63f6a9",
|
||||
"content-hash": "15efa0e4514b73fe595c60779f3eec40",
|
||||
"hash": "f60fc0c21429506c604cf52a1c57f8b1",
|
||||
"content-hash": "ad29a4c36418b2be7c6f60297d160623",
|
||||
"packages": [
|
||||
{
|
||||
"name": "composer/ca-bundle",
|
||||
|
@ -1328,6 +1328,54 @@
|
|||
],
|
||||
"time": "2017-02-27 20:18:54"
|
||||
},
|
||||
{
|
||||
"name": "evenement/evenement",
|
||||
"version": "v2.1.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/igorw/evenement.git",
|
||||
"reference": "6ba9a777870ab49f417e703229d53931ed40fd7a"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/igorw/evenement/zipball/6ba9a777870ab49f417e703229d53931ed40fd7a",
|
||||
"reference": "6ba9a777870ab49f417e703229d53931ed40fd7a",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=5.4.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"phpunit/phpunit": "^6.0||^5.7||^4.8.35"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "2.0-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"psr-0": {
|
||||
"Evenement": "src"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Igor Wiedler",
|
||||
"email": "igor@wiedler.ch"
|
||||
}
|
||||
],
|
||||
"description": "Événement is a very simple event dispatching library for PHP",
|
||||
"keywords": [
|
||||
"event-dispatcher",
|
||||
"event-emitter"
|
||||
],
|
||||
"time": "2017-07-17 17:39:19"
|
||||
},
|
||||
{
|
||||
"name": "fig/link-util",
|
||||
"version": "1.0.0",
|
||||
|
@ -1382,6 +1430,333 @@
|
|||
],
|
||||
"time": "2016-10-17 18:31:11"
|
||||
},
|
||||
{
|
||||
"name": "gos/pnctl-event-loop-emitter",
|
||||
"version": "v0.1.7",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/GeniusesOfSymfony/PNCTLEventLoopEmitter.git",
|
||||
"reference": "93bb0f0e60e4e1f4025f77c8a4fd9ae0c3b45fb3"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/GeniusesOfSymfony/PNCTLEventLoopEmitter/zipball/93bb0f0e60e4e1f4025f77c8a4fd9ae0c3b45fb3",
|
||||
"reference": "93bb0f0e60e4e1f4025f77c8a4fd9ae0c3b45fb3",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"evenement/evenement": "~2.0|~3.0",
|
||||
"php": ">=5.4",
|
||||
"react/event-loop": "~0.4.0|^0.5"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "1.0.x-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Gos\\Component\\PnctlEventLoopEmitter\\": "src/"
|
||||
},
|
||||
"files": [
|
||||
"src/functions.php"
|
||||
]
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Johann Saunier",
|
||||
"email": "johann_27@hotmail.fr"
|
||||
}
|
||||
],
|
||||
"description": "Pnctl event emitter for event loop",
|
||||
"homepage": "https://github.com/GeniusesOfSymfony/PnctlEventLoopEmitter",
|
||||
"keywords": [
|
||||
"Pnctl",
|
||||
"event loop",
|
||||
"reactphp"
|
||||
],
|
||||
"time": "2018-04-09 11:12:07"
|
||||
},
|
||||
{
|
||||
"name": "gos/pubsub-router-bundle",
|
||||
"version": "v0.3.5",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/GeniusesOfSymfony/PubSubRouterBundle.git",
|
||||
"reference": "a3f9666455dc42f38a7ce31ca2fc55bd27421ea0"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/GeniusesOfSymfony/PubSubRouterBundle/zipball/a3f9666455dc42f38a7ce31ca2fc55bd27421ea0",
|
||||
"reference": "a3f9666455dc42f38a7ce31ca2fc55bd27421ea0",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"doctrine/cache": "~1.4",
|
||||
"php": ">=5.5",
|
||||
"symfony/console": "~3.4|~4.0",
|
||||
"symfony/framework-bundle": "~3.4|~4.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"phpunit/phpunit": "^4.8.35"
|
||||
},
|
||||
"type": "symfony-bundle",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "0.3.x-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Gos\\Bundle\\PubSubRouterBundle\\": ""
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Johann Saunier",
|
||||
"email": "johann_27@hotmail.fr"
|
||||
}
|
||||
],
|
||||
"description": "Symfony PubSub Router Bundle",
|
||||
"homepage": "https://github.com/GeniusesOfSymfony/PubSubRouterBundle",
|
||||
"keywords": [
|
||||
"PubSub Bundle",
|
||||
"WAMP",
|
||||
"bundle",
|
||||
"pubsub",
|
||||
"redis",
|
||||
"zmq"
|
||||
],
|
||||
"time": "2018-10-04 17:09:23"
|
||||
},
|
||||
{
|
||||
"name": "gos/ratchet",
|
||||
"version": "v0.3.6",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/GeniusesOfSymfony/Ratchet.git",
|
||||
"reference": "f72ee4f70f24da1fc232537088e6c368ae4211e0"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/GeniusesOfSymfony/Ratchet/zipball/f72ee4f70f24da1fc232537088e6c368ae4211e0",
|
||||
"reference": "f72ee4f70f24da1fc232537088e6c368ae4211e0",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"guzzle/http": "^3.6",
|
||||
"php": ">=5.3.9",
|
||||
"react/socket": "^0.3 || ^0.4",
|
||||
"symfony/http-foundation": "^2.2|^3.0|^4.0",
|
||||
"symfony/routing": "^2.2|^3.0|^4.0"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Ratchet\\": "src/Ratchet"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Chris Boden",
|
||||
"email": "cboden@gmail.com",
|
||||
"role": "Developer"
|
||||
}
|
||||
],
|
||||
"description": "PHP WebSocket library",
|
||||
"homepage": "http://socketo.me",
|
||||
"keywords": [
|
||||
"Ratchet",
|
||||
"WebSockets",
|
||||
"server",
|
||||
"sockets"
|
||||
],
|
||||
"time": "2017-12-12 16:15:11"
|
||||
},
|
||||
{
|
||||
"name": "gos/ratchet-stack",
|
||||
"version": "v0.2.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/GeniusesOfSymfony/RatchetStack.git",
|
||||
"reference": "a7dfc817bf8b786c575022e290ab0769dbf09814"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/GeniusesOfSymfony/RatchetStack/zipball/a7dfc817bf8b786c575022e290ab0769dbf09814",
|
||||
"reference": "a7dfc817bf8b786c575022e290ab0769dbf09814",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"cboden/ratchet": "^0.3|^0.4",
|
||||
"php": ">=5.3"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "1.0.x-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Gos\\Component\\RatchetStack\\": "src/"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Johann Saunier",
|
||||
"email": "johann_27@hotmail.fr"
|
||||
}
|
||||
],
|
||||
"description": "Ratchet Stack",
|
||||
"homepage": "https://github.com/GeniusesOfSymfony/RatchetStack",
|
||||
"keywords": [
|
||||
"Ratchet",
|
||||
"application",
|
||||
"stack"
|
||||
],
|
||||
"time": "2018-05-02 13:03:51"
|
||||
},
|
||||
{
|
||||
"name": "gos/web-socket-bundle",
|
||||
"version": "v1.8.11",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/GeniusesOfSymfony/WebSocketBundle.git",
|
||||
"reference": "a26b71e9014a73b95ddbb02a813157563a296a48"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/GeniusesOfSymfony/WebSocketBundle/zipball/a26b71e9014a73b95ddbb02a813157563a296a48",
|
||||
"reference": "a26b71e9014a73b95ddbb02a813157563a296a48",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"gos/pnctl-event-loop-emitter": "~0.1",
|
||||
"gos/pubsub-router-bundle": "~0.2",
|
||||
"gos/ratchet": "~0.3.5",
|
||||
"gos/ratchet-stack": "~0.1",
|
||||
"gos/websocket-client": "~0.1.0",
|
||||
"php": ">=5.4",
|
||||
"symfony/framework-bundle": "~2.3|~3.0"
|
||||
},
|
||||
"replace": {
|
||||
"cboden/ratchet": "~0.3.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"phpunit/phpunit": "^4.8"
|
||||
},
|
||||
"suggest": {
|
||||
"ext-amqp": "*",
|
||||
"ext-libev": "*",
|
||||
"ext-libevent": ">=0.0.5",
|
||||
"ext-zmq": "*",
|
||||
"ocramius/proxy-manager": "~1.0",
|
||||
"symfony/proxy-manager-bridge": "~2.3"
|
||||
},
|
||||
"type": "symfony-bundle",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "1.8.x-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Gos\\Bundle\\WebSocketBundle\\": ""
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Jeremy Dare",
|
||||
"email": "jeremy.d.dare@gmail.com"
|
||||
},
|
||||
{
|
||||
"name": "Johann Saunier",
|
||||
"email": "johann_27@hotmail.fr"
|
||||
}
|
||||
],
|
||||
"description": "Symfony Web Socket Bundle",
|
||||
"homepage": "https://github.com/GeniusesOfSymfony/WebSocketBundle",
|
||||
"keywords": [
|
||||
"Ratchet",
|
||||
"WAMP",
|
||||
"Web Socket Bundle",
|
||||
"io",
|
||||
"websocket"
|
||||
],
|
||||
"time": "2017-09-29 16:00:43"
|
||||
},
|
||||
{
|
||||
"name": "gos/websocket-client",
|
||||
"version": "v0.1.2",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/GeniusesOfSymfony/WebSocketPhpClient.git",
|
||||
"reference": "13bb38cb01acee648fea1a6ca4ad3dc6148da7fe"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/GeniusesOfSymfony/WebSocketPhpClient/zipball/13bb38cb01acee648fea1a6ca4ad3dc6148da7fe",
|
||||
"reference": "13bb38cb01acee648fea1a6ca4ad3dc6148da7fe",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=5.3.0"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "0.1.x-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Gos\\Component\\WebSocketClient\\": ""
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Johann Saunier",
|
||||
"email": "johann_27@hotmail.fr"
|
||||
},
|
||||
{
|
||||
"name": "Martin Bažík",
|
||||
"email": "martin@bazo.sk"
|
||||
}
|
||||
],
|
||||
"description": "WAMP client in PHP",
|
||||
"keywords": [
|
||||
"Ratchet",
|
||||
"WAMP",
|
||||
"websocket"
|
||||
],
|
||||
"time": "2015-08-04 11:43:11"
|
||||
},
|
||||
{
|
||||
"name": "gregwar/captcha",
|
||||
"version": "v1.1.7",
|
||||
|
@ -1489,6 +1864,208 @@
|
|||
],
|
||||
"time": "2018-11-20 10:41:34"
|
||||
},
|
||||
{
|
||||
"name": "guzzle/common",
|
||||
"version": "v3.9.2",
|
||||
"target-dir": "Guzzle/Common",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/Guzzle3/common.git",
|
||||
"reference": "2e36af7cf2ce3ea1f2d7c2831843b883a8e7b7dc"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/Guzzle3/common/zipball/2e36af7cf2ce3ea1f2d7c2831843b883a8e7b7dc",
|
||||
"reference": "2e36af7cf2ce3ea1f2d7c2831843b883a8e7b7dc",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=5.3.2",
|
||||
"symfony/event-dispatcher": ">=2.1"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "3.7-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"psr-0": {
|
||||
"Guzzle\\Common": ""
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"description": "Common libraries used by Guzzle",
|
||||
"homepage": "http://guzzlephp.org/",
|
||||
"keywords": [
|
||||
"collection",
|
||||
"common",
|
||||
"event",
|
||||
"exception"
|
||||
],
|
||||
"abandoned": "guzzle/guzzle",
|
||||
"time": "2014-08-11 04:32:36"
|
||||
},
|
||||
{
|
||||
"name": "guzzle/http",
|
||||
"version": "v3.9.2",
|
||||
"target-dir": "Guzzle/Http",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/Guzzle3/http.git",
|
||||
"reference": "1e8dd1e2ba9dc42332396f39fbfab950b2301dc5"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/Guzzle3/http/zipball/1e8dd1e2ba9dc42332396f39fbfab950b2301dc5",
|
||||
"reference": "1e8dd1e2ba9dc42332396f39fbfab950b2301dc5",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"guzzle/common": "self.version",
|
||||
"guzzle/parser": "self.version",
|
||||
"guzzle/stream": "self.version",
|
||||
"php": ">=5.3.2"
|
||||
},
|
||||
"suggest": {
|
||||
"ext-curl": "*"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "3.7-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"psr-0": {
|
||||
"Guzzle\\Http": ""
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Michael Dowling",
|
||||
"email": "mtdowling@gmail.com",
|
||||
"homepage": "https://github.com/mtdowling"
|
||||
}
|
||||
],
|
||||
"description": "HTTP libraries used by Guzzle",
|
||||
"homepage": "http://guzzlephp.org/",
|
||||
"keywords": [
|
||||
"Guzzle",
|
||||
"client",
|
||||
"curl",
|
||||
"http",
|
||||
"http client"
|
||||
],
|
||||
"abandoned": "guzzle/guzzle",
|
||||
"time": "2014-08-11 04:32:36"
|
||||
},
|
||||
{
|
||||
"name": "guzzle/parser",
|
||||
"version": "v3.9.2",
|
||||
"target-dir": "Guzzle/Parser",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/Guzzle3/parser.git",
|
||||
"reference": "6874d171318a8e93eb6d224cf85e4678490b625c"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/Guzzle3/parser/zipball/6874d171318a8e93eb6d224cf85e4678490b625c",
|
||||
"reference": "6874d171318a8e93eb6d224cf85e4678490b625c",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=5.3.2"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "3.7-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"psr-0": {
|
||||
"Guzzle\\Parser": ""
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"description": "Interchangeable parsers used by Guzzle",
|
||||
"homepage": "http://guzzlephp.org/",
|
||||
"keywords": [
|
||||
"URI Template",
|
||||
"cookie",
|
||||
"http",
|
||||
"message",
|
||||
"url"
|
||||
],
|
||||
"abandoned": "guzzle/guzzle",
|
||||
"time": "2014-02-05 18:29:46"
|
||||
},
|
||||
{
|
||||
"name": "guzzle/stream",
|
||||
"version": "v3.9.2",
|
||||
"target-dir": "Guzzle/Stream",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/Guzzle3/stream.git",
|
||||
"reference": "60c7fed02e98d2c518dae8f97874c8f4622100f0"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/Guzzle3/stream/zipball/60c7fed02e98d2c518dae8f97874c8f4622100f0",
|
||||
"reference": "60c7fed02e98d2c518dae8f97874c8f4622100f0",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"guzzle/common": "self.version",
|
||||
"php": ">=5.3.2"
|
||||
},
|
||||
"suggest": {
|
||||
"guzzle/http": "To convert Guzzle request objects to PHP streams"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "3.7-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"psr-0": {
|
||||
"Guzzle\\Stream": ""
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Michael Dowling",
|
||||
"email": "mtdowling@gmail.com",
|
||||
"homepage": "https://github.com/mtdowling"
|
||||
}
|
||||
],
|
||||
"description": "Guzzle stream wrapper component",
|
||||
"homepage": "http://guzzlephp.org/",
|
||||
"keywords": [
|
||||
"Guzzle",
|
||||
"component",
|
||||
"stream"
|
||||
],
|
||||
"abandoned": "guzzle/guzzle",
|
||||
"time": "2014-05-01 21:36:02"
|
||||
},
|
||||
{
|
||||
"name": "guzzlehttp/guzzle",
|
||||
"version": "6.3.3",
|
||||
|
@ -2798,6 +3375,180 @@
|
|||
],
|
||||
"time": "2018-07-19 23:38:55"
|
||||
},
|
||||
{
|
||||
"name": "react/event-loop",
|
||||
"version": "v0.4.3",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/reactphp/event-loop.git",
|
||||
"reference": "8bde03488ee897dc6bb3d91e4e17c353f9c5252f"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/reactphp/event-loop/zipball/8bde03488ee897dc6bb3d91e4e17c353f9c5252f",
|
||||
"reference": "8bde03488ee897dc6bb3d91e4e17c353f9c5252f",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=5.4.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"phpunit/phpunit": "~4.8"
|
||||
},
|
||||
"suggest": {
|
||||
"ext-event": "~1.0",
|
||||
"ext-libev": "*",
|
||||
"ext-libevent": ">=0.1.0"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"React\\EventLoop\\": "src"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"description": "Event loop abstraction layer that libraries can use for evented I/O.",
|
||||
"keywords": [
|
||||
"asynchronous",
|
||||
"event-loop"
|
||||
],
|
||||
"time": "2017-04-27 10:56:23"
|
||||
},
|
||||
{
|
||||
"name": "react/promise",
|
||||
"version": "v2.7.1",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/reactphp/promise.git",
|
||||
"reference": "31ffa96f8d2ed0341a57848cbb84d88b89dd664d"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/reactphp/promise/zipball/31ffa96f8d2ed0341a57848cbb84d88b89dd664d",
|
||||
"reference": "31ffa96f8d2ed0341a57848cbb84d88b89dd664d",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=5.4.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"phpunit/phpunit": "~4.8"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"React\\Promise\\": "src/"
|
||||
},
|
||||
"files": [
|
||||
"src/functions_include.php"
|
||||
]
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Jan Sorgalla",
|
||||
"email": "jsorgalla@gmail.com"
|
||||
}
|
||||
],
|
||||
"description": "A lightweight implementation of CommonJS Promises/A for PHP",
|
||||
"keywords": [
|
||||
"promise",
|
||||
"promises"
|
||||
],
|
||||
"time": "2019-01-07 21:25:54"
|
||||
},
|
||||
{
|
||||
"name": "react/socket",
|
||||
"version": "v0.4.6",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/reactphp/socket.git",
|
||||
"reference": "cf074e53c974df52388ebd09710a9018894745d2"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/reactphp/socket/zipball/cf074e53c974df52388ebd09710a9018894745d2",
|
||||
"reference": "cf074e53c974df52388ebd09710a9018894745d2",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"evenement/evenement": "~2.0|~1.0",
|
||||
"php": ">=5.3.0",
|
||||
"react/event-loop": "0.4.*|0.3.*",
|
||||
"react/promise": "^2.0 || ^1.1",
|
||||
"react/stream": "^0.4.5"
|
||||
},
|
||||
"require-dev": {
|
||||
"clue/block-react": "^1.1",
|
||||
"phpunit/phpunit": "~4.8",
|
||||
"react/socket-client": "^0.5.1"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"React\\Socket\\": "src"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"description": "Async, streaming plaintext TCP/IP and secure TLS socket server for React PHP",
|
||||
"keywords": [
|
||||
"Socket"
|
||||
],
|
||||
"time": "2017-01-26 09:23:38"
|
||||
},
|
||||
{
|
||||
"name": "react/stream",
|
||||
"version": "v0.4.6",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/reactphp/stream.git",
|
||||
"reference": "44dc7f51ea48624110136b535b9ba44fd7d0c1ee"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/reactphp/stream/zipball/44dc7f51ea48624110136b535b9ba44fd7d0c1ee",
|
||||
"reference": "44dc7f51ea48624110136b535b9ba44fd7d0c1ee",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"evenement/evenement": "^2.0|^1.0",
|
||||
"php": ">=5.3.8"
|
||||
},
|
||||
"require-dev": {
|
||||
"clue/stream-filter": "~1.2",
|
||||
"react/event-loop": "^0.4|^0.3",
|
||||
"react/promise": "^2.0|^1.0"
|
||||
},
|
||||
"suggest": {
|
||||
"react/event-loop": "^0.4",
|
||||
"react/promise": "^2.0"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"React\\Stream\\": "src"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"description": "Basic readable and writable stream interfaces that support piping.",
|
||||
"keywords": [
|
||||
"pipe",
|
||||
"stream"
|
||||
],
|
||||
"time": "2017-01-25 14:44:14"
|
||||
},
|
||||
{
|
||||
"name": "robrichards/xmlseclibs",
|
||||
"version": "3.0.3",
|
||||
|
|
|
@ -7,6 +7,7 @@ iconniveau01=$(CreoleGet ninegate_niveau01icon non)
|
|||
affniveau02=$(CreoleGet ninegate_niveau02view non)
|
||||
labelsniveau02=$(CreoleGet ninegate_niveau02labels non)
|
||||
iconniveau02=$(CreoleGet ninegate_niveau02icon non)
|
||||
weburl=$(CreoleGet web_url non)
|
||||
|
||||
www_dir="$container_path_web/var/www/html"
|
||||
eportail_dir="$www_dir/eportail"
|
||||
|
@ -48,26 +49,13 @@ fi
|
|||
# Permissions
|
||||
./perm.sh www-data
|
||||
|
||||
# Paramétrage eportail
|
||||
if [[ "$ninegate_synceportail" = 'oui' ]]
|
||||
then
|
||||
echo "<?" > $eportail_dir/local/config/externe.php
|
||||
echo "\$config['modeUserExterne'] = 'true';" >> $eportail_dir/local/config/externe.php
|
||||
echo "\$config['affResgistrationExterne'] = '$moderegistration';" >> $eportail_dir/local/config/externe.php
|
||||
echo "\$config['urlRegistrationExterne'] = '/ninegate/registration';" >> $eportail_dir/local/config/externe.php
|
||||
echo "\$config['urlConfigRegistrationExterne'] = '/ninegate/config/registration';" >> $eportail_dir/local/config/externe.php
|
||||
echo "\$config['urlWhitelistExterne'] = '/ninegate/config/whitelist';" >> $eportail_dir/local/config/externe.php
|
||||
echo "\$config['urlNiveau01Externe'] = '/ninegate/config/niveau01';" >> $eportail_dir/local/config/externe.php
|
||||
echo "\$config['labNiveau01Externe'] = '$labelsniveau01';" >> $eportail_dir/local/config/externe.php
|
||||
echo "\$config['icoNiveau01Externe'] = '$iconniveau01';" >> $eportail_dir/local/config/externe.php
|
||||
echo "\$config['affNiveau02Externe'] = '$affniveau02';" >> $eportail_dir/local/config/externe.php
|
||||
echo "\$config['urlNiveau02Externe'] = '/ninegate/config/niveau02';" >> $eportail_dir/local/config/externe.php
|
||||
echo "\$config['labNiveau02Externe'] = '$labelsniveau02';" >> $eportail_dir/local/config/externe.php
|
||||
echo "\$config['icoNiveau02Externe'] = '$iconniveau02';" >> $eportail_dir/local/config/externe.php
|
||||
echo "\$config['urlGroupeExterne'] = '/ninegate/config/group';" >> $eportail_dir/local/config/externe.php
|
||||
echo "\$config['urlProfilExterne'] = '/ninegate/profil';" >> $eportail_dir/local/config/externe.php
|
||||
echo "\$config['urlAnnuaireExterne'] = '/ninegate/profil/users';" >> $eportail_dir/local/config/externe.php
|
||||
echo "\$config['urlUserExterne'] = '/ninegate/config/user';" >> $eportail_dir/local/config/externe.php
|
||||
echo "\$config['urlLogoutExterne'] = '/ninegate/kill?redirect=/eportail/logout.php';" >> $eportail_dir/local/config/externe.php
|
||||
echo "?>" >> $eportail_dir/local/config/externe.php
|
||||
# Server Websocket
|
||||
echo ""
|
||||
echo WEBSOCKET = STOP
|
||||
pid="$(pgrep -f gos:websocket)"
|
||||
if [ -n "${pid}" ]; then
|
||||
kill -9 ${pid};
|
||||
fi
|
||||
|
||||
echo WEBSOCKET = START
|
||||
bin/console gos:websocket:server --port 5556 -a $web_url --no-debug -n -q --env=prod & disown
|
|
@ -8,7 +8,7 @@ INSERT IGNORE INTO `niveau01` (`id`, `label`, `siren`) VALUES
|
|||
(-100, 'DRAAF', '130007107');
|
||||
|
||||
INSERT IGNORE INTO `user` (`id`, `niveau01_id`, `username`, `firstname`, `lastname`, `password`, `email`, `avatar`, `role`,`siren`,`authlevel`) VALUES
|
||||
(-100, -100, 'admin', 'Administrateur', 'draaf', '{SSHA}HNhgaEb5yI9ZX4o5Ydrf1+D/YeNPLIdF
|
||||
(-100, -100, 'admin', 'Administrateur', 'draaf', '{SSHA}TkQTsvHn9GzwqtA6jPZ/ubyfp+ZwNbmH
|
||||
', 'admin@ldapbundle.ac-arno.fr', 'admin.jpg', 'ROLE_ADMIN', '130007107', 'simple');
|
||||
|
||||
|
||||
|
|
|
@ -148,6 +148,15 @@ class Group
|
|||
*/
|
||||
protected $blogs;
|
||||
|
||||
|
||||
/**
|
||||
* @var ArrayCollection $message
|
||||
* @var Message
|
||||
*
|
||||
* @ORM\OneToMany(targetEntity="Cadoles\WebsocketBundle\Entity\Message", mappedBy="user", cascade={"persist"}, orphanRemoval=true)
|
||||
*/
|
||||
protected $messages;
|
||||
|
||||
// ATTENTION NE SURTOUT PAS REGEN TOTALEMENT LES SETTER
|
||||
// Methode custom sur les Addxxx et Removexxx
|
||||
|
||||
|
@ -821,4 +830,38 @@ class Group
|
|||
{
|
||||
return $this->pagetemplate;
|
||||
}
|
||||
|
||||
/**
|
||||
* Add message
|
||||
*
|
||||
* @param \Cadoles\WebsocketBundle\Entity\Message $message
|
||||
*
|
||||
* @return Group
|
||||
*/
|
||||
public function addMessage(\Cadoles\WebsocketBundle\Entity\Message $message)
|
||||
{
|
||||
$this->messages[] = $message;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove message
|
||||
*
|
||||
* @param \Cadoles\WebsocketBundle\Entity\Message $message
|
||||
*/
|
||||
public function removeMessage(\Cadoles\WebsocketBundle\Entity\Message $message)
|
||||
{
|
||||
$this->messages->removeElement($message);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get messages
|
||||
*
|
||||
* @return \Doctrine\Common\Collections\Collection
|
||||
*/
|
||||
public function getMessages()
|
||||
{
|
||||
return $this->messages;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -222,7 +222,7 @@ class User implements UserInterface, \Serializable
|
|||
/**
|
||||
* @ORM\ManyToMany(targetEntity="Cadoles\PortalBundle\Entity\Notice", mappedBy="users")
|
||||
*/
|
||||
protected $notices;
|
||||
private $notices;
|
||||
|
||||
/**
|
||||
* @var ArrayCollection $blog
|
||||
|
@ -235,7 +235,7 @@ class User implements UserInterface, \Serializable
|
|||
/**
|
||||
* @ORM\ManyToMany(targetEntity="Cadoles\PortalBundle\Entity\Blog", mappedBy="writers")
|
||||
*/
|
||||
protected $blogwriters;
|
||||
private $blogwriters;
|
||||
|
||||
/**
|
||||
* @var ArrayCollection $blogarticle
|
||||
|
@ -253,6 +253,15 @@ class User implements UserInterface, \Serializable
|
|||
*/
|
||||
private $icons;
|
||||
|
||||
/**
|
||||
* @var ArrayCollection $message
|
||||
* @var Message
|
||||
*
|
||||
* @ORM\OneToMany(targetEntity="Cadoles\WebsocketBundle\Entity\Message", mappedBy="user", cascade={"persist"}, orphanRemoval=true)
|
||||
*/
|
||||
private $messages;
|
||||
|
||||
|
||||
//== CODE A NE PAS REGENERER
|
||||
/**
|
||||
* @ORM\PostLoad
|
||||
|
@ -1339,4 +1348,38 @@ class User implements UserInterface, \Serializable
|
|||
{
|
||||
return $this->ownergroups;
|
||||
}
|
||||
|
||||
/**
|
||||
* Add message
|
||||
*
|
||||
* @param \Cadoles\WebsocketBundle\Entity\Message $message
|
||||
*
|
||||
* @return User
|
||||
*/
|
||||
public function addMessage(\Cadoles\WebsocketBundle\Entity\Message $message)
|
||||
{
|
||||
$this->messages[] = $message;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove message
|
||||
*
|
||||
* @param \Cadoles\WebsocketBundle\Entity\Message $message
|
||||
*/
|
||||
public function removeMessage(\Cadoles\WebsocketBundle\Entity\Message $message)
|
||||
{
|
||||
$this->messages->removeElement($message);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get messages
|
||||
*
|
||||
* @return \Doctrine\Common\Collections\Collection
|
||||
*/
|
||||
public function getMessages()
|
||||
{
|
||||
return $this->messages;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -149,6 +149,10 @@
|
|||
|
||||
{{ include('@CadolesCore/Include/footer.html.twig') }}
|
||||
|
||||
{% block localexternalscript %}
|
||||
|
||||
{% endblock %}
|
||||
|
||||
<script>
|
||||
{% block localjavascript %}
|
||||
|
||||
|
|
|
@ -28,7 +28,7 @@
|
|||
|
||||
|
||||
<div class="widgetheader" style="{{ stylewidgetbodyimage }}; height:100%;">
|
||||
{% set style = "width: 90px;display: block;margin: 0px auto 10px auto; padding-top: 10px; position: inherit;height: auto;" %}
|
||||
{% set style = "width: 90px;display: block;margin: auto; padding: 10px 0px 10px 0px; position: inherit;height: auto;" %}
|
||||
{% if icon %}
|
||||
<img src="/{{ alias }}{{ icon }}" class="logo" style="{{ style }}" />
|
||||
{% else %}
|
||||
|
|
|
@ -0,0 +1,9 @@
|
|||
<?php
|
||||
|
||||
namespace Cadoles\WebsocketBundle;
|
||||
|
||||
use Symfony\Component\HttpKernel\Bundle\Bundle;
|
||||
|
||||
class CadolesWebsocketBundle extends Bundle
|
||||
{
|
||||
}
|
|
@ -0,0 +1,49 @@
|
|||
<?php
|
||||
|
||||
namespace Cadoles\WebsocketBundle\Controller;
|
||||
|
||||
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
|
||||
use Symfony\Component\HttpFoundation\Session\Session;
|
||||
use Symfony\Component\HttpFoundation\Request;
|
||||
use Symfony\Component\HttpFoundation\Response;
|
||||
use Symfony\Component\HttpFoundation\JsonResponse;
|
||||
use Symfony\Component\Form\FormError;
|
||||
use Ramsey\Uuid\Uuid;
|
||||
|
||||
class ChatController extends Controller
|
||||
{
|
||||
public function clientAction($id, Request $request)
|
||||
{
|
||||
$user=$this->getUser();
|
||||
if(!$user) {
|
||||
die();
|
||||
}
|
||||
else {
|
||||
// Génération d'une clé temporaire d'accès au chat
|
||||
$key = Uuid::uuid4();
|
||||
$user->setKeyvalue($key);
|
||||
|
||||
// Sauvegarde
|
||||
$em = $this->getDoctrine()->getManager();
|
||||
$em->persist($user);
|
||||
$em->flush();
|
||||
|
||||
// On récupère les 100 derniers message du groupe
|
||||
$group=$user=$em->getRepository("CadolesCoreBundle:Group")->find($id);
|
||||
if(!$group) die();
|
||||
|
||||
$messages=$em->getRepository("CadolesWebsocketBundle:Message")->findBy(["group"=>$group],["submitdate"=>"DESC"]);
|
||||
dump($messages);
|
||||
|
||||
// Affichage du chat
|
||||
return $this->render('CadolesWebsocketBundle:Chat:client.html.twig',[
|
||||
'useheader' => false,
|
||||
'usemenu' => false,
|
||||
'usesidebar' => false,
|
||||
'userkey' => $key,
|
||||
'groupid' => $id,
|
||||
'messages' => $messages
|
||||
]);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,158 @@
|
|||
<?php
|
||||
namespace Cadoles\WebsocketBundle\Entity;
|
||||
|
||||
use Doctrine\ORM\Mapping as ORM;
|
||||
use Doctrine\Common\Collections\ArrayCollection;
|
||||
|
||||
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
|
||||
use Symfony\Component\Validator\Constraints as Assert;
|
||||
|
||||
/**
|
||||
* @ORM\Entity
|
||||
* @ORM\Table(name="message")
|
||||
*/
|
||||
class Message
|
||||
{
|
||||
/**
|
||||
* @ORM\Column(type="integer")
|
||||
* @ORM\Id
|
||||
* @ORM\GeneratedValue(strategy="AUTO")
|
||||
*/
|
||||
private $id;
|
||||
|
||||
/**
|
||||
* @ORM\Column(type="text")
|
||||
*/
|
||||
private $topic;
|
||||
|
||||
/**
|
||||
* @ORM\Column(type="datetime")
|
||||
*/
|
||||
private $submitdate;
|
||||
|
||||
/**
|
||||
* @ORM\ManyToOne(targetEntity="Cadoles\CoreBundle\Entity\User", inversedBy="messages")
|
||||
*/
|
||||
private $user;
|
||||
|
||||
/**
|
||||
* @ORM\ManyToOne(targetEntity="Cadoles\CoreBundle\Entity\group", inversedBy="messages")
|
||||
*/
|
||||
private $group;
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
$this->submitdate = new \DateTime();
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Get id
|
||||
*
|
||||
* @return integer
|
||||
*/
|
||||
public function getId()
|
||||
{
|
||||
return $this->id;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set topic
|
||||
*
|
||||
* @param string $topic
|
||||
*
|
||||
* @return Message
|
||||
*/
|
||||
public function setTopic($topic)
|
||||
{
|
||||
$this->topic = $topic;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get topic
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getTopic()
|
||||
{
|
||||
return $this->topic;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set submitdate
|
||||
*
|
||||
* @param \DateTime $submitdate
|
||||
*
|
||||
* @return Message
|
||||
*/
|
||||
public function setSubmitdate($submitdate)
|
||||
{
|
||||
$this->submitdate = $submitdate;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get submitdate
|
||||
*
|
||||
* @return \DateTime
|
||||
*/
|
||||
public function getSubmitdate()
|
||||
{
|
||||
return $this->submitdate;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set user
|
||||
*
|
||||
* @param \Cadoles\CoreBundle\Entity\User $user
|
||||
*
|
||||
* @return Message
|
||||
*/
|
||||
public function setUser(\Cadoles\CoreBundle\Entity\User $user = null)
|
||||
{
|
||||
$this->user = $user;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get user
|
||||
*
|
||||
* @return \Cadoles\CoreBundle\Entity\User
|
||||
*/
|
||||
public function getUser()
|
||||
{
|
||||
return $this->user;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set group
|
||||
*
|
||||
* @param \Cadoles\CoreBundle\Entity\group $group
|
||||
*
|
||||
* @return Message
|
||||
*/
|
||||
public function setGroup(\Cadoles\CoreBundle\Entity\group $group = null)
|
||||
{
|
||||
$this->group = $group;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get group
|
||||
*
|
||||
* @return \Cadoles\CoreBundle\Entity\group
|
||||
*/
|
||||
public function getGroup()
|
||||
{
|
||||
return $this->group;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,37 @@
|
|||
<?php
|
||||
|
||||
namespace Cadoles\WebsocketBundle\RPC;
|
||||
|
||||
use Ratchet\ConnectionInterface;
|
||||
use Gos\Bundle\WebSocketBundle\RPC\RpcInterface;
|
||||
use Gos\Bundle\WebSocketBundle\Router\WampRequest;
|
||||
use Cadoles\WebsocketBundle\Topic\WebsocketTopic;
|
||||
|
||||
class RPCService implements RpcInterface {
|
||||
|
||||
/**
|
||||
* Adds the params together
|
||||
*
|
||||
* Note: $conn isnt used here, but contains the connection of the person making this request.
|
||||
*
|
||||
* @param ConnectionInterface $connection
|
||||
* @param WampRequest $request
|
||||
* @param array $params
|
||||
* @return int
|
||||
*/
|
||||
public function updateConnectionData(ConnectionInterface $connection, WampRequest $request, $params) {
|
||||
$connection->userkey = $params['userkey'];
|
||||
|
||||
return array("result" => array_sum($params));
|
||||
}
|
||||
|
||||
/**
|
||||
* Name of RPC, use for pubsub router (see step3)
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getName() {
|
||||
return 'websocket.rpc';
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,3 @@
|
|||
cadoles_websocket_chat:
|
||||
path: /websocket/chat/{id}
|
||||
defaults: { _controller: CadolesWebsocketBundle:Chat:client }
|
|
@ -0,0 +1,11 @@
|
|||
services:
|
||||
cadoles.websocket.topic:
|
||||
class: Cadoles\WebsocketBundle\Topic\WebsocketTopic
|
||||
arguments: ['@gos_web_socket.websocket.client_manipulator','@doctrine.orm.entity_manager','@service_container']
|
||||
tags:
|
||||
- { name: gos_web_socket.topic }
|
||||
|
||||
cadoles.websocket.rpc:
|
||||
class: Cadoles\WebsocketBundle\RPC\RPCService
|
||||
tags:
|
||||
- { name: gos_web_socket.rpc }
|
|
@ -0,0 +1,15 @@
|
|||
websocket_topic:
|
||||
channel: websocket/channel/{group}
|
||||
handler:
|
||||
callback: 'websocket.topic'
|
||||
requirements:
|
||||
group:
|
||||
pattern: '[-+]?\d+'
|
||||
|
||||
websocket_rpc:
|
||||
channel: websocket/rpc/{method}
|
||||
handler:
|
||||
callback: 'websocket.rpc'
|
||||
requirements:
|
||||
method:
|
||||
pattern: "[a-z_]+"
|
|
@ -0,0 +1,81 @@
|
|||
{% extends '@CadolesCore/base.html.twig' %}
|
||||
|
||||
{% block localstyle %}
|
||||
.message {
|
||||
padding:10px;
|
||||
margin-top: 5px;
|
||||
background-color: #{{ color['main'] }};
|
||||
color: #{{ color['fontcolorhover'] }};
|
||||
}
|
||||
.msgavatar {
|
||||
float:left;
|
||||
height:40px;
|
||||
}
|
||||
.msgdiv {
|
||||
float:left;
|
||||
padding-left:10px;
|
||||
}
|
||||
.msgtitle {
|
||||
line-height: 12px;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
{% endblock %}
|
||||
|
||||
{% block pagewrapper %}
|
||||
<div class="mychat">
|
||||
|
||||
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
||||
{% block localexternalscript %}
|
||||
<script src="/{{alias}}/bundles/goswebsocket/js/vendor/autobahn.min.js"></script>
|
||||
<script src="/{{alias}}/bundles/goswebsocket/js/gos_web_socket_client.js"></script>
|
||||
{% endblock %}
|
||||
|
||||
{% block localjavascript %}
|
||||
$(document).ready(function(){
|
||||
var dateoptions = {weekday: "long", year: "numeric", month: "long", day: "numeric", hour: "2-digit", minute: "2-digit" };
|
||||
|
||||
|
||||
{% if app.user %}
|
||||
var _WS_URI = "wss://{{ gos_web_socket_server_host }}:{{ gos_web_socket_server_port }}";
|
||||
var _WS_URI = "wss://{{ gos_web_socket_server_host }}:5555";
|
||||
console.log(_WS_URI);
|
||||
|
||||
var webSocket = WS.connect(_WS_URI);
|
||||
|
||||
webSocket.on("socket/connect", function (session) {
|
||||
|
||||
session.call("websocket/rpc/update_connection_data", {"userkey": "{{userkey}}" }).then(
|
||||
function (result)
|
||||
{
|
||||
console.log("RPC Valid!", result);
|
||||
},
|
||||
function (error, desc)
|
||||
{
|
||||
console.log("RPC Error", error, desc);
|
||||
}
|
||||
);
|
||||
|
||||
//the callback function in "subscribe" is called everytime an event is published in that channel.
|
||||
session.subscribe("websocket/channel/{{groupid}}", function (uri, payload) {
|
||||
html ="<div class='message row'>";
|
||||
html+="<div class='msgavatar'><img id='user_avatar_img' src='/{{ alias }}/uploads/avatar/"+payload.msg.avatar+"' class='avatar'></div>";
|
||||
html+="<div class='msgdiv'>"
|
||||
html+="<div class='msgtitle'>"+payload.msg.lastname+"<br><small>"+new Date(payload.msg.submitdate.date).toLocaleDateString("fr-FR", dateoptions)+"</small></div>";
|
||||
html+="<div class='msgtopic'>"+payload.msg.message+"</div>";
|
||||
html+="</div>";
|
||||
html+="</div>";
|
||||
$(".mychat").append(html);
|
||||
|
||||
console.log("Received message", payload.msg);
|
||||
});
|
||||
|
||||
session.publish("websocket/channel/{{groupid}}", "This is a message!");
|
||||
session.publish("websocket/channel/{{groupid}}", "This is a message!");
|
||||
session.publish("websocket/channel/{{groupid}}", "This is a message!");
|
||||
})
|
||||
{% endif %}
|
||||
});
|
||||
{% endblock %}
|
|
@ -0,0 +1,121 @@
|
|||
<?php
|
||||
|
||||
namespace Cadoles\WebsocketBundle\Topic;
|
||||
|
||||
use Gos\Bundle\WebSocketBundle\Topic\TopicInterface;
|
||||
use Ratchet\ConnectionInterface;
|
||||
use Ratchet\Wamp\Topic;
|
||||
use Gos\Bundle\WebSocketBundle\Router\WampRequest;
|
||||
|
||||
use Doctrine\ORM\EntityManager;
|
||||
use Symfony\Component\DependencyInjection\ContainerInterface;
|
||||
use Gos\Bundle\WebSocketBundle\Client\ClientManipulatorInterface;
|
||||
|
||||
use Cadoles\WebsocketBundle\Entity\Message;
|
||||
|
||||
class WebsocketTopic implements TopicInterface
|
||||
{
|
||||
|
||||
protected $em;
|
||||
protected $container;
|
||||
protected $clientManipulator;
|
||||
|
||||
public function __construct(ClientManipulatorInterface $clientManipulator, EntityManager $em, ContainerInterface $container) {
|
||||
$this->clientManipulator = $clientManipulator;
|
||||
$this->em = $em;
|
||||
$this->container = $container;
|
||||
}
|
||||
|
||||
/**
|
||||
* This will receive any Subscription requests for this topic.
|
||||
*
|
||||
* @param ConnectionInterface $connection
|
||||
* @param Topic $topic
|
||||
* @param WampRequest $request
|
||||
* @return void
|
||||
*/
|
||||
public function onSubscribe(ConnectionInterface $connection, Topic $topic, WampRequest $request)
|
||||
{
|
||||
/*
|
||||
$userkey=$request->getAttributes()->get('user');
|
||||
$groupid=$request->getAttributes()->get('group');
|
||||
|
||||
$user=$this->em->getRepository("CadolesCoreBundle:User")->findOneBy(['keyvalue'=> $userkey]);
|
||||
if(!$user) $topic->broadcast(['msg' => 'user NOT FIND']);
|
||||
else $topic->broadcast(['msg' => $user->getUsername()]);
|
||||
|
||||
//this will broadcast the message to ALL subscribers of this topic.
|
||||
$topic->broadcast(['msg' => $connection->resourceId . " group = $groupid && user = $userkey has joined " . $topic->getId()]);
|
||||
*/
|
||||
}
|
||||
|
||||
/**
|
||||
* This will receive any UnSubscription requests for this topic.
|
||||
*
|
||||
* @param ConnectionInterface $connection
|
||||
* @param Topic $topic
|
||||
* @param WampRequest $request
|
||||
* @return void
|
||||
*/
|
||||
public function onUnSubscribe(ConnectionInterface $connection, Topic $topic, WampRequest $request)
|
||||
{
|
||||
//this will broadcast the message to ALL subscribers of this topic.
|
||||
//$topic->broadcast(['msg' => $connection->resourceId . " has left " . $topic->getId()]);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* This will receive any Publish requests for this topic.
|
||||
*
|
||||
* @param ConnectionInterface $connection
|
||||
* @param Topic $topic
|
||||
* @param WampRequest $request
|
||||
* @param $event
|
||||
* @param array $exclude
|
||||
* @param array $eligible
|
||||
* @return mixed|void
|
||||
*/
|
||||
public function onPublish(ConnectionInterface $connection, Topic $topic, WampRequest $request, $event, array $exclude, array $eligible)
|
||||
{
|
||||
$userkey=$connection->userkey;
|
||||
$groupid=$request->getAttributes()->get('group');
|
||||
|
||||
$group=$this->em->getRepository("CadolesCoreBundle:Group")->find($groupid);
|
||||
if(!$group) {
|
||||
$topic->broadcast(['msg' => 'group NOT FIND']);
|
||||
}
|
||||
|
||||
$user=$this->em->getRepository("CadolesCoreBundle:User")->findOneBy(['keyvalue'=> $userkey]);
|
||||
if(!$user) {
|
||||
$topic->broadcast(['msg' => 'user NOT FIND']);
|
||||
}
|
||||
|
||||
if($group&&$user) {
|
||||
$message=new Message();
|
||||
$message->setTopic($event);
|
||||
$message->setUser($user);
|
||||
$message->setGroup($group);
|
||||
$this->em->persist($message);
|
||||
$this->em->flush();
|
||||
|
||||
$return["lastname"]=$user->getLastname()." ".$user->getFirstname();
|
||||
$return["avatar"]=$user->getAvatar();
|
||||
$return["submitdate"]=$message->getSubmitdate();
|
||||
$return["message"]=$event;
|
||||
|
||||
//this will broadcast the message to ALL subscribers of this topic.
|
||||
$topic->broadcast([
|
||||
'msg' => $return,
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Like RPC is will use to prefix the channel
|
||||
* @return string
|
||||
*/
|
||||
public function getName()
|
||||
{
|
||||
return 'websocket.topic';
|
||||
}
|
||||
}
|
|
@ -36,6 +36,13 @@ parameters:
|
|||
%else
|
||||
syncenvole_activate: false
|
||||
%end if
|
||||
%if %%getVar("ninegate_activate_websocket", 'non') == "oui"
|
||||
websocket_activate: true
|
||||
websocket_port: 5555
|
||||
%else
|
||||
websocket_activate: false
|
||||
websocket_port: 5555
|
||||
%end if
|
||||
%if %%getVar("ninegate_activate_portal", 'non') == "oui"
|
||||
portal_activate: true
|
||||
module_activate: false
|
||||
|
@ -218,27 +225,6 @@ parameters:
|
|||
activate_widwordpress: false
|
||||
%end if
|
||||
|
||||
# Synchrinisation eportail
|
||||
%if %%getVar("ninegate_synceportail", 'non') == "oui"
|
||||
eportail_sync: true
|
||||
eportail_url: /eportail
|
||||
eportail_login: /eportail/login.php
|
||||
eportail_database_host: '%database_host%'
|
||||
eportail_database_port: 3306
|
||||
eportail_database_name: eportail
|
||||
eportail_database_user: eportail
|
||||
eportail_database_password: "changme"
|
||||
%else
|
||||
eportail_sync: false
|
||||
eportail_url: # /eportail
|
||||
eportail_login: # /eportail/login.php
|
||||
eportail_database_host: # 172.27.7.64
|
||||
eportail_database_port: # 3306
|
||||
eportail_database_name: # eportail
|
||||
eportail_database_user: # eportail
|
||||
eportail_database_password: # "changme"
|
||||
%end if
|
||||
|
||||
# Si mode_auth = CAS
|
||||
cas_host: %%eolesso_adresse
|
||||
cas_path: %%eolesso_cas_folder
|
||||
|
@ -285,16 +271,6 @@ doctrine:
|
|||
user: '%database_user%'
|
||||
password: '%database_password%'
|
||||
charset: UTF8
|
||||
%if %%getVar("ninegate_synceportail", 'non') == "oui"
|
||||
eportail:
|
||||
driver: pdo_mysql
|
||||
host: '%eportail_database_host%'
|
||||
port: '%eportail_database_port%'
|
||||
dbname: '%eportail_database_name%'
|
||||
user: '%eportail_database_user%'
|
||||
password: '%eportail_database_password%'
|
||||
charset: UTF8
|
||||
%end if
|
||||
orm:
|
||||
default_entity_manager: default
|
||||
entity_managers:
|
||||
|
@ -304,13 +280,7 @@ doctrine:
|
|||
CadolesCoreBundle: ~
|
||||
CadolesCronBundle: ~
|
||||
CadolesPortalBundle: ~
|
||||
%if %%getVar("ninegate_synceportail", 'non') == "oui"
|
||||
eportail:
|
||||
connection: eportail
|
||||
mappings:
|
||||
CadolesCoreBundle: ~
|
||||
CadolesCronBundle: ~
|
||||
CadolesPortalBundle: ~
|
||||
%end if
|
||||
CadolesWebsocketBundle: ~
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
server {
|
||||
listen 5555 ssl;
|
||||
|
||||
ssl on;
|
||||
ssl_certificate %%server_cert;
|
||||
ssl_certificate_key %%server_key;
|
||||
|
||||
proxy_connect_timeout 600;
|
||||
proxy_send_timeout 600;
|
||||
proxy_read_timeout 600;
|
||||
send_timeout 600;
|
||||
|
||||
location / {
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Upgrade $http_upgrade;
|
||||
proxy_set_header Connection "Upgrade";
|
||||
proxy_set_header Proxy "";
|
||||
proxy_set_header Host $http_host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
proxy_pass http://%%web_url:5556;
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue