From 8a7ab712792881c86c320fedd403009a19801643 Mon Sep 17 00:00:00 2001 From: Dan Garner Date: Tue, 7 Jan 2020 11:11:11 +0000 Subject: [PATCH] Update for alpine 3.11 xibosignage/xibo#1939 --- .dockerignore | 2 ++ Dockerfile | 13 +++++++++--- bin/xmr.phar | Bin 488431 -> 495659 bytes composer.json | 14 +++++++++---- composer.lock | 41 ++++++++++++++++++++------------------ docker-compose.yml | 4 +++- index.php | 23 ++++++++++++++++++---- tests/playerReq.php | 19 ++++++++++++++++++ tests/playerSub.php | 47 +++++++++++++++++++++++++------------------- 9 files changed, 112 insertions(+), 51 deletions(-) create mode 100644 .dockerignore create mode 100644 tests/playerReq.php diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..4d678df --- /dev/null +++ b/.dockerignore @@ -0,0 +1,2 @@ +config.json +vendor/ diff --git a/Dockerfile b/Dockerfile index 70c0c20..58c22e9 100644 --- a/Dockerfile +++ b/Dockerfile @@ -2,8 +2,8 @@ FROM composer:1.6 as composer COPY . /app RUN composer install --no-interaction --no-dev --ignore-platform-reqs --optimize-autoloader -FROM alpine:3.6 -MAINTAINER Spring Signage Ltd +FROM alpine:3.11 +MAINTAINER Xibo Signage Ltd ENV XMR_DEBUG false ENV XMR_QUEUE_POLL 5 @@ -11,7 +11,14 @@ ENV XMR_QUEUE_SIZE 10 ENV XMR_IPV6RESPSUPPORT false ENV XMR_IPV6PUBSUPPORT false -RUN apk update && apk upgrade && apk add tar php7 curl php7-zmq php7-phar php7-json php7-openssl && rm -rf /var/cache/apk/* +RUN apk update && apk upgrade && apk add tar \ + php7 \ + curl \ + php7-zmq \ + php7-phar \ + php7-json \ + php7-openssl \ + && rm -rf /var/cache/apk/* EXPOSE 9505 50001 diff --git a/bin/xmr.phar b/bin/xmr.phar index d02e429169036bb2e5557f39ccb3e612064f1f19..94ef8bc45473bdd0161f72b9f91958b63bb4bf9a 100755 GIT binary patch delta 26370 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 delta 24221 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 Oga7hv*tk(uqy7&Axys7` diff --git a/composer.json b/composer.json index 877a332..b99b9d9 100644 --- a/composer.json +++ b/composer.json @@ -7,15 +7,15 @@ "spring signage" ], "homepage": "http://xibo.org.uk", - "license": "AGPL-3.0", + "license": "AGPL-3.0-or-later", "authors": [ { "name": "Daniel Garner", "homepage": "https://github.com/dasgarner" }, { - "name": "Spring Signage Ltd", - "homepage": "http://springsignage.com" + "name": "Xibo Signage Ltd", + "homepage": "https://xibo.org.uk" }, { "name": "Xibo Contributors", @@ -23,8 +23,14 @@ } ], "bin": ["bin/xmr.phar"], + "config": { + "platform": { + "php": "7.0.8", + "ext-zmq": "1" + } + }, "require": { - "php": ">=5.5", + "php": ">=7.0.8", "monolog/monolog": "^1.17", "react/zmq": "^0.3.0" } diff --git a/composer.lock b/composer.lock index 51bb541..3082e8e 100644 --- a/composer.lock +++ b/composer.lock @@ -1,11 +1,10 @@ { "_readme": [ "This file locks the dependencies of your project to a known state", - "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "hash": "b429a469ce918c5c513986d22dc57b36", - "content-hash": "1540b9c7592999e2be0bd170e073b2c0", + "content-hash": "36c586c66e6ad83197df56a600e31145", "packages": [ { "name": "evenement/evenement", @@ -53,20 +52,20 @@ "event-dispatcher", "event-emitter" ], - "time": "2017-07-17 17:39:19" + "time": "2017-07-17T17:39:19+00:00" }, { "name": "monolog/monolog", - "version": "1.23.0", + "version": "1.25.3", "source": { "type": "git", "url": "https://github.com/Seldaek/monolog.git", - "reference": "fd8c787753b3a2ad11bc60c063cff1358a32a3b4" + "reference": "fa82921994db851a8becaf3787a9e73c5976b6f1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/fd8c787753b3a2ad11bc60c063cff1358a32a3b4", - "reference": "fd8c787753b3a2ad11bc60c063cff1358a32a3b4", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/fa82921994db851a8becaf3787a9e73c5976b6f1", + "reference": "fa82921994db851a8becaf3787a9e73c5976b6f1", "shasum": "" }, "require": { @@ -131,20 +130,20 @@ "logging", "psr-3" ], - "time": "2017-06-19 01:22:40" + "time": "2019-12-20T14:15:16+00:00" }, { "name": "psr/log", - "version": "1.0.2", + "version": "1.1.2", "source": { "type": "git", "url": "https://github.com/php-fig/log.git", - "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d" + "reference": "446d54b4cb6bf489fc9d75f55843658e6f25d801" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/log/zipball/4ebe3a8bf773a19edfe0a84b6585ba3d401b724d", - "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d", + "url": "https://api.github.com/repos/php-fig/log/zipball/446d54b4cb6bf489fc9d75f55843658e6f25d801", + "reference": "446d54b4cb6bf489fc9d75f55843658e6f25d801", "shasum": "" }, "require": { @@ -153,7 +152,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "1.1.x-dev" } }, "autoload": { @@ -178,7 +177,7 @@ "psr", "psr-3" ], - "time": "2016-10-10 12:19:37" + "time": "2019-11-01T11:05:21+00:00" }, { "name": "react/event-loop", @@ -220,7 +219,7 @@ "asynchronous", "event-loop" ], - "time": "2017-04-27 10:56:23" + "time": "2017-04-27T10:56:23+00:00" }, { "name": "react/zmq", @@ -265,7 +264,7 @@ "zeromq", "zmq" ], - "time": "2014-05-25 17:54:51" + "time": "2014-05-25T17:54:51+00:00" } ], "packages-dev": [], @@ -275,7 +274,11 @@ "prefer-stable": false, "prefer-lowest": false, "platform": { - "php": ">=5.5" + "php": ">=7.0.8" }, - "platform-dev": [] + "platform-dev": [], + "platform-overrides": { + "php": "7.0.8", + "ext-zmq": "1" + } } diff --git a/docker-compose.yml b/docker-compose.yml index 95a690f..29589cc 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -4,4 +4,6 @@ services: xmr: build: . environment: - XMR_DEBUG: "true" \ No newline at end of file + XMR_DEBUG: "true" + volumes: + - ./:/opt/xmr \ No newline at end of file diff --git a/index.php b/index.php index ff0daa3..d69661b 100644 --- a/index.php +++ b/index.php @@ -1,9 +1,24 @@ #!/usr/bin/env php . * sequenceDiagram Player->> CMS: Register diff --git a/tests/playerReq.php b/tests/playerReq.php new file mode 100644 index 0000000..02e2644 --- /dev/null +++ b/tests/playerReq.php @@ -0,0 +1,19 @@ + +*/ + +$context = new ZMQContext(); + +// Socket to talk to server +echo "Connecting to hello world server…\n"; +$requester = new ZMQSocket($context, ZMQ::SOCKET_REQ); +$requester->connect("tcp://192.168.86.88:58587"); +echo "connected\n"; +$requester->send("Hello"); +echo "sent\n"; +$reply = $requester->recv(); +echo "Received reply " . $reply; \ No newline at end of file diff --git a/tests/playerSub.php b/tests/playerSub.php index 8fe426a..11965a4 100644 --- a/tests/playerSub.php +++ b/tests/playerSub.php @@ -1,8 +1,23 @@ . * * This is a player subscription mock file. * docker exec -it xiboxmr_xmr_1 sh -c "cd /opt/xmr/tests; php playerSub.php 1234" @@ -16,19 +31,21 @@ $identity = $argv[1]; // Use the same settings as the running XMR instance -$config = json_decode(file_get_contents('../config.json')); +#$config = json_decode(file_get_contents('../config.json')); $fp = fopen('key.pem', 'r'); $privateKey = openssl_get_privatekey(fread($fp, 8192)); fclose($fp); +echo 'Sub to: ' . $identity; + // Sub $loop = React\EventLoop\Factory::create(); $context = new React\ZMQ\Context($loop); $sub = $context->getSocket(ZMQ::SOCKET_SUB); -$sub->connect($config->pubOn[0]); +$sub->connect('tcp://192.168.86.88:36740'); $sub->subscribe("H"); $sub->subscribe($identity); @@ -40,23 +57,13 @@ return; // Expect messages to have a length of 3 - if (count($msg) != 3) - throw new InvalidArgumentException('Incorrect Message Length'); + //if (count($msg) != 3) + // throw new InvalidArgumentException('Incorrect Message Length'); // Message will be channel, key, message - if ($msg[0] != $identity) - throw new InvalidArgumentException('Channel does not match'); - - // Decrypt the message using our private key - $opened = null; - - $key = base64_decode($msg[1]); - $message = base64_decode($msg[2]); - - if (!openssl_open($message, $opened, $key, $privateKey)) - throw new Exception('Encryption Error'); + //if ($msg[0] != $identity) + // throw new InvalidArgumentException('Channel does not match'); - echo 'Message: ' . $opened . PHP_EOL; } catch (InvalidArgumentException $e) { echo $e->getMessage() . PHP_EOL;