diff --git a/www/phpvirtualbox-legacy/Makefile b/www/phpvirtualbox-legacy/Makefile index ba80ba721ec8..be0c78bb5205 100644 --- a/www/phpvirtualbox-legacy/Makefile +++ b/www/phpvirtualbox-legacy/Makefile @@ -1,40 +1,40 @@ PORTNAME= phpvirtualbox DISTVERSION= 5.2-1 -PORTREVISION= 3 +PORTREVISION= 4 CATEGORIES= www PKGNAMESUFFIX= -legacy MAINTAINER= vbox@FreeBSD.org COMMENT= AJAX Web Interface for VirtualBox WWW= https://sourceforge.net/projects/phpvirtualbox/ LICENSE= GPLv3 USES= dos2unix php USE_PHP= session simplexml soap xml NO_ARCH= yes NO_BUILD= yes USE_GITHUB= yes DOS2UNIX_REGEX= .*\.(php|txt|js|css|html) WWWDIR= ${PREFIX}/www/${PORTNAME}${PKGNAMESUFFIX} ETCDIR= ${WWWDIR} EXTRA_PATCHES+= ${.CURDIR}/../phpvirtualbox/files/patch-php8 post-patch: @${MV} ${WRKSRC}/phpvirtualbox.conf ${WRKSRC}/phpvirtualbox-legacy.conf @${REINPLACE_CMD} -e 's#Alias /phpvirtualbox#Alias /phpvirtualbox-legacy#' \ -e 's#/usr/share/phpvirtualbox#${WWWDIR}#g' \ ${WRKSRC}/phpvirtualbox-legacy.conf do-install: ${MKDIR} ${STAGEDIR}${WWWDIR} (cd ${WRKSRC}/ && ${COPYTREE_SHARE} "*" ${STAGEDIR}${WWWDIR} \ "-not -name *.orig -not -name config.php-example") ${INSTALL_DATA} ${WRKSRC}/config.php-example \ ${STAGEDIR}${WWWDIR}/config.php.sample .include diff --git a/www/phpvirtualbox/Makefile b/www/phpvirtualbox/Makefile index cc67954d33a0..7569c308c855 100644 --- a/www/phpvirtualbox/Makefile +++ b/www/phpvirtualbox/Makefile @@ -1,35 +1,35 @@ PORTNAME= phpvirtualbox DISTVERSION= 6.1 -PORTREVISION= 2 +PORTREVISION= 3 CATEGORIES= www MAINTAINER= vbox@FreeBSD.org COMMENT= AJAX Web Interface for VirtualBox WWW= https://sourceforge.net/projects/phpvirtualbox/ LICENSE= GPLv3 USES= dos2unix php USE_PHP= session simplexml soap xml NO_ARCH= yes NO_BUILD= yes USE_GITHUB= yes GH_TAGNAME= cf82d58f2 DOS2UNIX_REGEX= .*\.(php|txt|js|css|html) ETCDIR= ${WWWDIR} post-patch: @${REINPLACE_CMD} -e 's#/usr/share/phpvirtualbox#${WWWDIR}#g' \ ${WRKSRC}/phpvirtualbox.conf do-install: ${MKDIR} ${STAGEDIR}${WWWDIR} (cd ${WRKSRC}/ && ${COPYTREE_SHARE} "*" ${STAGEDIR}${WWWDIR} \ "-not -name *.orig -not -name config.php-example") ${INSTALL_DATA} ${WRKSRC}/config.php-example \ ${STAGEDIR}${WWWDIR}/config.php.sample .include diff --git a/www/phpvirtualbox/files/patch-php8 b/www/phpvirtualbox/files/patch-php8 index 477a1596ba4c..12783b19f800 100644 --- a/www/phpvirtualbox/files/patch-php8 +++ b/www/phpvirtualbox/files/patch-php8 @@ -1,209 +1,243 @@ diff -ur endpoints/api.php.orig endpoints/api.php --- endpoints/api.php.orig +++ endpoints/api.php @@ -334,6 +334,9 @@ // 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 @@ // 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($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())), diff -ur endpoints/jqueryFileTree.php.orig endpoints/jqueryFileTree.php --- endpoints/jqueryFileTree.php.orig +++ endpoints/jqueryFileTree.php @@ -223,6 +223,8 @@ */ function getdir($dir, $dirsOnly=false, $recurse=array()) { + global $allowed_exts; + if(!$dir) $dir = DSEP; $entries = getDirEntries($dir, $dirsOnly); @@ -251,9 +253,9 @@ // 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)); } diff -ur endpoints/lib/language.php.orig endpoints/lib/language.php --- endpoints/lib/language.php.orig +++ endpoints/lib/language.php @@ -73,6 +73,8 @@ $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) { diff -ur endpoints/lib/vboxServiceWrappers.php.orig endpoints/lib/vboxServiceWrappers.php --- endpoints/lib/vboxServiceWrappers.php.orig +++ endpoints/lib/vboxServiceWrappers.php @@ -108,7 +108,7 @@ } /** ArrayAccess Functions **/ - public function offsetSet($offset, $value) + public function offsetSet($offset, $value): void { if ($value instanceof $this->_interfaceName) { @@ -127,49 +127,50 @@ } } - 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); } diff -ur endpoints/screen.php.orig endpoints/screen.php --- endpoints/screen.php.orig +++ endpoints/screen.php @@ -87,13 +87,13 @@ // 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 @@ // 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']); } diff -ur panes/settingsDisplay.html.orig panes/settingsDisplay.html --- panes/settingsDisplay.html.orig +++ panes/settingsDisplay.html @@ -77,9 +77,9 @@ Authentication Method: diff -ur panes/settingsNetwork.html.orig panes/settingsNetwork.html --- panes/settingsNetwork.html.orig +++ panes/settingsNetwork.html @@ -320,7 +320,7 @@ } // 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(); } +--- endpoints/lib/config.php.orig ++++ endpoints/lib/config.php +@@ -141,6 +141,10 @@ + */ + var $eventListenerTimeout = 20; + ++ var $enableHDFlushConfig = false; ++ ++ var $authMaster = false; ++ + /** + * Read user configuration, apply defaults, and do some sanity checking + * @see vboxconnector +--- endpoints/lib/vboxconnector.php.orig ++++ endpoints/lib/vboxconnector.php +@@ -112,6 +112,8 @@ + */ + var $dsep = null; + ++ var $client = null; ++ + /** + * Obtain configuration settings and set object vars + * @param boolean $useAuthMaster use the authentication master obtained from configuration class +@@ -389,7 +389,8 @@ + + // 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