aboutsummaryrefslogtreecommitdiffstats
path: root/vendor/ramsey/uuid/src/Provider/Node
diff options
context:
space:
mode:
authorMario Vavti <mario@mariovavti.com>2018-08-28 12:00:23 +0200
committerMario Vavti <mario@mariovavti.com>2018-08-28 12:00:23 +0200
commitc0c827d3ad2c8364d35fff5546ab40ea76bbbbd9 (patch)
tree34bb14bb6046ce98bd6ad759b9c57624b2be7d34 /vendor/ramsey/uuid/src/Provider/Node
parent6a2bbed73dfb34975c4525c34c03f20c6945dedc (diff)
downloadvolse-hubzilla-c0c827d3ad2c8364d35fff5546ab40ea76bbbbd9.tar.gz
volse-hubzilla-c0c827d3ad2c8364d35fff5546ab40ea76bbbbd9.tar.bz2
volse-hubzilla-c0c827d3ad2c8364d35fff5546ab40ea76bbbbd9.zip
update composer libs and add ramsey/uuid
Diffstat (limited to 'vendor/ramsey/uuid/src/Provider/Node')
-rw-r--r--vendor/ramsey/uuid/src/Provider/Node/FallbackNodeProvider.php58
-rw-r--r--vendor/ramsey/uuid/src/Provider/Node/RandomNodeProvider.php42
-rw-r--r--vendor/ramsey/uuid/src/Provider/Node/SystemNodeProvider.php125
3 files changed, 225 insertions, 0 deletions
diff --git a/vendor/ramsey/uuid/src/Provider/Node/FallbackNodeProvider.php b/vendor/ramsey/uuid/src/Provider/Node/FallbackNodeProvider.php
new file mode 100644
index 000000000..289fddeae
--- /dev/null
+++ b/vendor/ramsey/uuid/src/Provider/Node/FallbackNodeProvider.php
@@ -0,0 +1,58 @@
+<?php
+/**
+ * This file is part of the ramsey/uuid library
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ *
+ * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com>
+ * @license http://opensource.org/licenses/MIT MIT
+ * @link https://benramsey.com/projects/ramsey-uuid/ Documentation
+ * @link https://packagist.org/packages/ramsey/uuid Packagist
+ * @link https://github.com/ramsey/uuid GitHub
+ */
+
+namespace Ramsey\Uuid\Provider\Node;
+
+use Ramsey\Uuid\Provider\NodeProviderInterface;
+
+/**
+ * FallbackNodeProvider attempts to gain the system host ID from an array of
+ * providers, falling back to the next in line in the event a host ID can not be
+ * obtained
+ */
+class FallbackNodeProvider implements NodeProviderInterface
+{
+ /**
+ * @var NodeProviderInterface[]
+ */
+ private $nodeProviders;
+
+ /**
+ * Constructs a `FallbackNodeProvider` using an array of node providers
+ *
+ * @param NodeProviderInterface[] $providers Array of node providers
+ */
+ public function __construct(array $providers)
+ {
+ $this->nodeProviders = $providers;
+ }
+
+ /**
+ * Returns the system node ID by iterating over an array of node providers
+ * and returning the first non-empty value found
+ *
+ * @return string System node ID as a hexadecimal string
+ * @throws \Exception
+ */
+ public function getNode()
+ {
+ foreach ($this->nodeProviders as $provider) {
+ if ($node = $provider->getNode()) {
+ return $node;
+ }
+ }
+
+ return null;
+ }
+}
diff --git a/vendor/ramsey/uuid/src/Provider/Node/RandomNodeProvider.php b/vendor/ramsey/uuid/src/Provider/Node/RandomNodeProvider.php
new file mode 100644
index 000000000..76c570d7f
--- /dev/null
+++ b/vendor/ramsey/uuid/src/Provider/Node/RandomNodeProvider.php
@@ -0,0 +1,42 @@
+<?php
+/**
+ * This file is part of the ramsey/uuid library
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ *
+ * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com>
+ * @license http://opensource.org/licenses/MIT MIT
+ * @link https://benramsey.com/projects/ramsey-uuid/ Documentation
+ * @link https://packagist.org/packages/ramsey/uuid Packagist
+ * @link https://github.com/ramsey/uuid GitHub
+ */
+
+namespace Ramsey\Uuid\Provider\Node;
+
+use Ramsey\Uuid\Provider\NodeProviderInterface;
+
+/**
+ * RandomNodeProvider provides functionality to generate a random node ID, in
+ * the event that the node ID could not be obtained from the host system
+ *
+ * @link http://tools.ietf.org/html/rfc4122#section-4.5
+ */
+class RandomNodeProvider implements NodeProviderInterface
+{
+ /**
+ * Returns the system node ID
+ *
+ * @return string System node ID as a hexadecimal string
+ * @throws \Exception if it was not possible to gather sufficient entropy
+ */
+ public function getNode()
+ {
+ $node = hexdec(bin2hex(random_bytes(6)));
+
+ // Set the multicast bit; see RFC 4122, section 4.5.
+ $node = $node | 0x010000000000;
+
+ return str_pad(dechex($node), 12, '0', STR_PAD_LEFT);
+ }
+}
diff --git a/vendor/ramsey/uuid/src/Provider/Node/SystemNodeProvider.php b/vendor/ramsey/uuid/src/Provider/Node/SystemNodeProvider.php
new file mode 100644
index 000000000..ae6a09eaa
--- /dev/null
+++ b/vendor/ramsey/uuid/src/Provider/Node/SystemNodeProvider.php
@@ -0,0 +1,125 @@
+<?php
+/**
+ * This file is part of the ramsey/uuid library
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ *
+ * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com>
+ * @license http://opensource.org/licenses/MIT MIT
+ * @link https://benramsey.com/projects/ramsey-uuid/ Documentation
+ * @link https://packagist.org/packages/ramsey/uuid Packagist
+ * @link https://github.com/ramsey/uuid GitHub
+ */
+
+namespace Ramsey\Uuid\Provider\Node;
+
+use Ramsey\Uuid\Provider\NodeProviderInterface;
+
+/**
+ * SystemNodeProvider provides functionality to get the system node ID (MAC
+ * address) using external system calls
+ */
+class SystemNodeProvider implements NodeProviderInterface
+{
+ /**
+ * Returns the system node ID
+ *
+ * @return string|false System node ID as a hexadecimal string, or false if it is not found
+ */
+ public function getNode()
+ {
+ static $node = null;
+
+ if ($node !== null) {
+ return $node;
+ }
+
+ $pattern = '/[^:]([0-9A-Fa-f]{2}([:-])[0-9A-Fa-f]{2}(\2[0-9A-Fa-f]{2}){4})[^:]/';
+ $matches = array();
+
+ // first try a linux specific way
+ $node = $this->getSysfs();
+
+ // Search the ifconfig output for all MAC addresses and return
+ // the first one found
+ if ($node === false) {
+ if (preg_match_all($pattern, $this->getIfconfig(), $matches, PREG_PATTERN_ORDER)) {
+ $node = $matches[1][0];
+ }
+ }
+ if ($node !== false) {
+ $node = str_replace([':', '-'], '', $node);
+ }
+ return $node;
+ }
+
+ /**
+ * Returns the network interface configuration for the system
+ *
+ * @codeCoverageIgnore
+ * @return string
+ */
+ protected function getIfconfig()
+ {
+ if (strpos(strtolower(ini_get('disable_functions')), 'passthru') !== false) {
+ return '';
+ }
+
+ ob_start();
+ switch (strtoupper(substr(php_uname('a'), 0, 3))) {
+ case 'WIN':
+ passthru('ipconfig /all 2>&1');
+ break;
+ case 'DAR':
+ passthru('ifconfig 2>&1');
+ break;
+ case 'FRE':
+ passthru('netstat -i -f link 2>&1');
+ break;
+ case 'LIN':
+ default:
+ passthru('netstat -ie 2>&1');
+ break;
+ }
+
+ return ob_get_clean();
+ }
+
+ /**
+ * Returns mac address from the first system interface via the sysfs interface
+ *
+ * @return string|bool
+ */
+ protected function getSysfs()
+ {
+ $mac = false;
+
+ if (strtoupper(php_uname('s')) === 'LINUX') {
+ $addressPaths = glob('/sys/class/net/*/address', GLOB_NOSORT);
+
+ if (empty($addressPaths)) {
+ return false;
+ }
+
+ array_walk($addressPaths, function ($addressPath) use (&$macs) {
+ $macs[] = file_get_contents($addressPath);
+ });
+
+ $macs = array_map('trim', $macs);
+
+ // remove invalid entries
+ $macs = array_filter($macs, function ($mac) {
+ return
+ // localhost adapter
+ $mac !== '00:00:00:00:00:00' &&
+ // must match mac adress
+ preg_match('/^([0-9a-f]{2}:){5}[0-9a-f]{2}$/i', $mac);
+ });
+
+ $mac = reset($macs);
+ }
+
+ return $mac;
+ }
+}