summaryrefslogtreecommitdiff
path: root/www/phpvirtualbox-legacy
diff options
context:
space:
mode:
Diffstat (limited to 'www/phpvirtualbox-legacy')
-rw-r--r--www/phpvirtualbox-legacy/Makefile6
-rw-r--r--www/phpvirtualbox-legacy/files/patch-php8248
2 files changed, 251 insertions, 3 deletions
diff --git a/www/phpvirtualbox-legacy/Makefile b/www/phpvirtualbox-legacy/Makefile
index 5c7c939fe8a5..d1d886b7c58c 100644
--- a/www/phpvirtualbox-legacy/Makefile
+++ b/www/phpvirtualbox-legacy/Makefile
@@ -1,6 +1,6 @@
PORTNAME= phpvirtualbox
DISTVERSION= 5.2-1
-PORTREVISION= 6
+PORTREVISION= 7
CATEGORIES= www
SUFFIX= -legacy
PKGNAMESUFFIX= ${SUFFIX}${PHP_PKGNAMESUFFIX}
@@ -18,8 +18,7 @@ USE_PHP= session simplexml soap xml
ETCDIR= ${WWWDIR}
WWWDIR= ${PREFIX}/www/${PORTNAME}${SUFFIX}
-EXTRA_PATCHES+= ${.CURDIR}/../phpvirtualbox/files/patch-php8 \
- ${.CURDIR}/../phpvirtualbox/files/patch-panes_mediumEncryptionPasswords.html
+EXTRA_PATCHES+= ${.CURDIR}/../phpvirtualbox-72/files/patch-panes_mediumEncryptionPasswords.html
NO_ARCH= yes
NO_BUILD= yes
PORTSCOUT= limit:^5\.
@@ -29,6 +28,7 @@ post-patch:
@${REINPLACE_CMD} -e 's#Alias /phpvirtualbox#Alias /phpvirtualbox-legacy#' \
-e 's#/usr/share/phpvirtualbox#${WWWDIR}#g' \
${WRKSRC}/phpvirtualbox-legacy.conf
+ @${REINPLACE_CMD} -e 's#\r#\n#g' ${WRKSRC}/languages/zh_tw.xml
do-install:
${MKDIR} ${STAGEDIR}${WWWDIR}
diff --git a/www/phpvirtualbox-legacy/files/patch-php8 b/www/phpvirtualbox-legacy/files/patch-php8
new file mode 100644
index 000000000000..52fe5a6a5b12
--- /dev/null
+++ b/www/phpvirtualbox-legacy/files/patch-php8
@@ -0,0 +1,248 @@
+--- endpoints/api.php.orig 2024-06-07 15:46:20 UTC
++++ endpoints/api.php
+@@ -334,6 +334,9 @@ try {
+
+ // Just append to $vbox->errors and let it get
+ // taken care of below
++ if(!isset($vbox)) {
++ $vbox = new stdClass();
++ }
+ if(!$vbox || !$vbox->errors) {
+ $vbox->errors = array();
+ }
+@@ -342,7 +345,7 @@ try {
+
+
+ // Add any messages
+-if($vbox && count($vbox->messages)) {
++if($vbox && isset($vbox->messages)?count($vbox->messages):false) {
+ foreach($vbox->messages as $m)
+ $response['messages'][] = 'vboxconnector('.$request['fn'] .'): ' . $m;
+ }
+@@ -360,7 +363,7 @@ if($vbox && $vbox->errors) {
+ if($e->getCode() == vboxconnector::PHPVB_ERRNO_CONNECT && isset($vbox->settings))
+ $d .= "\n\nLocation:" . $vbox->settings->location;
+
+- $response['messages'][] = htmlentities($e->getMessage()).' ' . htmlentities($details);
++ $response['messages'][] = htmlentities($e->getMessage()). htmlentities(' '. $details);
+
+ $response['errors'][] = array(
+ 'error'=> ($e->getCode() & vboxconnector::PHPVB_ERRNO_HTML ? $e->getMessage() : htmlentities($e->getMessage())),
+--- endpoints/jqueryFileTree.php.orig 2024-06-07 15:46:20 UTC
++++ endpoints/jqueryFileTree.php
+@@ -223,6 +223,8 @@ function getdir($dir, $dirsOnly=false, $recurse=array(
+ */
+ function getdir($dir, $dirsOnly=false, $recurse=array()) {
+
++ global $allowed_exts;
++
+ if(!$dir) $dir = DSEP;
+
+ $entries = getDirEntries($dir, $dirsOnly);
+@@ -251,9 +253,9 @@ function getdir($dir, $dirsOnly=false, $recurse=array(
+ // Push file on to stack
+ } else {
+
+- $ext = strtolower(preg_replace('/^.*\./', '', $file));
++ $ext = strtolower(preg_replace('/^.*\./', '', $path));
+
+- if(count($allowed) && !$allowed['.'.$ext]) continue;
++ if(count($allowed_exts) && !$allowed_exts['.'.$ext]) continue;
+
+ array_push($dirents, file_entry($path));
+ }
+--- endpoints/lib/config.php.orig 2024-06-07 15:46:20 UTC
++++ endpoints/lib/config.php
+@@ -141,6 +141,10 @@ class phpVBoxConfigClass {
+ */
+ var $eventListenerTimeout = 20;
+
++ var $enableHDFlushConfig = false;
++
++ var $authMaster = false;
++
+ /**
+ * Read user configuration, apply defaults, and do some sanity checking
+ * @see vboxconnector
+--- endpoints/lib/language.php.orig 2024-06-07 15:46:20 UTC
++++ endpoints/lib/language.php
+@@ -73,6 +73,8 @@ class __vbox_language {
+ $xmlObj = simplexml_load_string(@file_get_contents(VBOX_BASE_LANG_DIR.'/'.$lang.'.xml'));
+ $arrXml = $this->objectsIntoArray($xmlObj);
+
++ if(!array_key_exists('context',$arrXml)) return;
++
+ $lang = array();
+ if(!@$arrXml['context'][0]) $arrXml['context'] = array($arrXml['context']);
+ foreach($arrXml['context'] as $c) {
+--- endpoints/lib/vboxServiceWrappers.php.orig 2024-06-07 15:46:20 UTC
++++ endpoints/lib/vboxServiceWrappers.php
+@@ -108,7 +108,7 @@ abstract class VBox_Collection implements ArrayAccess,
+ }
+
+ /** ArrayAccess Functions **/
+- public function offsetSet($offset, $value)
++ public function offsetSet($offset, $value): void
+ {
+ if ($value instanceof $this->_interfaceName)
+ {
+@@ -127,49 +127,50 @@ abstract class VBox_Collection implements ArrayAccess,
+ }
+ }
+
+- public function offsetExists($offset)
++ public function offsetExists($offset): bool
+ {
+ return isset($this->_objects[$offset]);
+ }
+
+- public function offsetUnset($offset)
++ public function offsetUnset($offset): void
+ {
+ unset($this->_objects[$offset]);
+ }
+
+- public function offsetGet($offset)
++ public function offsetGet($offset): mixed
+ {
+ return isset($this->_objects[$offset]) ? $this->_objects[$offset] : null;
+ }
+
+ /** Iterator Functions **/
+- public function rewind()
++ public function rewind(): void
+ {
+ reset($this->_objects);
+ }
+
+- public function current()
++ public function current(): mixed
+ {
+ return current($this->_objects);
+ }
+
+- public function key()
++ public function key(): mixed
+ {
+ return key($this->_objects);
+ }
+
++ #[\ReturnTypeWillChange]
+ public function next()
+ {
+ return next($this->_objects);
+ }
+
+- public function valid()
++ public function valid(): bool
+ {
+ return ($this->current() !== false);
+ }
+
+ /** Countable Functions **/
+- public function count()
++ public function count(): int
+ {
+ return count($this->_objects);
+ }
+--- endpoints/lib/vboxconnector.php.orig 2024-06-07 15:46:20 UTC
++++ endpoints/lib/vboxconnector.php
+@@ -112,6 +112,8 @@ class vboxconnector {
+ */
+ var $dsep = null;
+
++ var $client = null;
++
+ /**
+ * Obtain configuration settings and set object vars
+ * @param boolean $useAuthMaster use the authentication master obtained from configuration class
+@@ -387,7 +389,8 @@ class vboxconnector {
+
+ // The amount of time we will wait for events is determined by
+ // the amount of listeners - at least half a second
+- $listenerWait = max(100,intval(500/count($this->persistentRequest['vboxEventListeners'])));
++ $listenerCount = count($this->persistentRequest['vboxEventListeners']);
++ $listenerWait = max(100,intval(500/($listenerCount > 0 ? $listenerCount : 1)));
+ }
+
+ // Get events from each configured event listener
+@@ -5660,11 +5663,6 @@ class vboxconnector {
+ }
+ } catch (Exception $null) {}
+ $m->releaseRemote();
+-
+- // Attempt to UTF-8 encode string or json_encode may choke
+- // and return an empty string
+- if(function_exists('utf8_encode'))
+- return utf8_encode($log);
+
+ return $log;
+ }
+--- endpoints/screen.php.orig 2024-06-07 15:46:20 UTC
++++ endpoints/screen.php
+@@ -87,13 +87,13 @@ try {
+
+ // Let the browser cache images for 3 seconds
+ $ctime = 0;
+- if(strpos($_SERVER['HTTP_IF_NONE_MATCH'],'_')) {
+- $ctime = preg_replace("/.*_/",str_replace('"','',$_SERVER['HTTP_IF_NONE_MATCH']));
+- } else if(strpos($_ENV['HTTP_IF_NONE_MATCH'],'_')) {
+- $ctime = preg_replace("/.*_/",str_replace('"','',$_ENV['HTTP_IF_NONE_MATCH']));
+- } else if(strpos($_SERVER['HTTP_IF_MODIFIED_SINCE'],'GMT')) {
++ if(strpos($_SERVER['HTTP_IF_NONE_MATCH'] ?? '','_')) {
++ $ctime = preg_replace("/.*_/","",str_replace('"','',$_SERVER['HTTP_IF_NONE_MATCH']));
++ } else if(strpos($_ENV['HTTP_IF_NONE_MATCH'] ?? '','_')) {
++ $ctime = preg_replace("/.*_/","",str_replace('"','',$_ENV['HTTP_IF_NONE_MATCH']));
++ } else if(strpos($_SERVER['HTTP_IF_MODIFIED_SINCE'] ?? '','GMT')) {
+ $ctime = strtotime($_SERVER['HTTP_IF_MODIFIED_SINCE']);
+- } else if(strpos($_ENV['HTTP_IF_MODIFIED_SINCE'],'GMT')) {
++ } else if(strpos($_ENV['HTTP_IF_MODIFIED_SINCE'] ?? '','GMT')) {
+ $ctime = strtotime($_ENV['HTTP_IF_MODIFIED_SINCE']);
+ }
+
+@@ -164,13 +164,13 @@ try {
+
+ // Let the browser cache saved state images
+ $ctime = 0;
+- if(strpos($_SERVER['HTTP_IF_NONE_MATCH'],'_')) {
+- $ctime = preg_replace("/.*_/",str_replace('"','',$_SERVER['HTTP_IF_NONE_MATCH']));
+- } else if(strpos($_ENV['HTTP_IF_NONE_MATCH'],'_')) {
+- $ctime = preg_replace("/.*_/",str_replace('"','',$_ENV['HTTP_IF_NONE_MATCH']));
+- } else if(strpos($_SERVER['HTTP_IF_MODIFIED_SINCE'],'GMT')) {
++ if(strpos($_SERVER['HTTP_IF_NONE_MATCH'] ?? '','_')) {
++ $ctime = preg_replace("/.*_/","",str_replace('"','',$_SERVER['HTTP_IF_NONE_MATCH']));
++ } else if(strpos($_ENV['HTTP_IF_NONE_MATCH'] ?? '','_')) {
++ $ctime = preg_replace("/.*_/","",str_replace('"','',$_ENV['HTTP_IF_NONE_MATCH']));
++ } else if(strpos($_SERVER['HTTP_IF_MODIFIED_SINCE'] ?? '','GMT')) {
+ $ctime = strtotime($_SERVER['HTTP_IF_MODIFIED_SINCE']);
+- } else if(strpos($_ENV['HTTP_IF_MODIFIED_SINCE'],'GMT')) {
++ } else if(strpos($_ENV['HTTP_IF_MODIFIED_SINCE'] ?? '','GMT')) {
+ $ctime = strtotime($_ENV['HTTP_IF_MODIFIED_SINCE']);
+ }
+
+--- panes/settingsDisplay.html.orig 2024-06-07 15:46:20 UTC
++++ panes/settingsDisplay.html
+@@ -77,9 +77,9 @@ -->
+ <th><span class='translate'>Authentication Method:</span></th>
+ <td>
+ <select name='vboxSettingsDisplayVRDEAuth' id='vboxSettingsDisplayVRDEAuthID' style='width: 100%'>
+- <option value='' >None</option>
+- <option value='External'>External</option>
+- <option value='Guest'>Guest</option>
++ <option value='Null'>None</option>
++ <option value='External'>External</option>
++ <option value='Guest'>Guest</option>
+ </select>
+ </td>
+ </tr>
+--- panes/settingsNetwork.html.orig 2024-06-07 15:46:20 UTC
++++ panes/settingsNetwork.html
+@@ -320,7 +320,7 @@ function vboxSettingsUpdateNetworkOptions(sel) {
+ }
+
+ // Special case for Internal, Generic, and VDE network selects
+- if(sel.value == 'Internal' || sel.value == 'VDE' || sel.value == 'Generic' || sel.value == 'Bridged') {
++ if(sel.value == 'Internal' || sel.value == 'VDE' || sel.value == 'Generic') {
+ $(nsel).jec();
+ }
+