--- 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 @@ --> Authentication Method: --- 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(); }