Signed-off-by: Robin Appelman <robin@icewind.nl>tags/v22.0.0beta1
@@ -9,6 +9,6 @@ | |||
}, | |||
"require": { | |||
"icewind/streams": "0.7.3", | |||
"icewind/smb": "3.4.0" | |||
"icewind/smb": "3.4.1" | |||
} | |||
} |
@@ -4,20 +4,20 @@ | |||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", | |||
"This file is @generated automatically" | |||
], | |||
"content-hash": "9905ed45527f669a4165a8b83b6e4141", | |||
"content-hash": "dacbb67c9e2d1d46204d5b1a7f5cebc2", | |||
"packages": [ | |||
{ | |||
"name": "icewind/smb", | |||
"version": "v3.4.0", | |||
"version": "v3.4.1", | |||
"source": { | |||
"type": "git", | |||
"url": "https://github.com/icewind1991/SMB.git", | |||
"reference": "b5c6921f2e91229c9f71556a4713b4fac91fd394" | |||
"reference": "9dba42ab2a3990de29e18cc62b0a8270aceb74e3" | |||
}, | |||
"dist": { | |||
"type": "zip", | |||
"url": "https://api.github.com/repos/icewind1991/SMB/zipball/b5c6921f2e91229c9f71556a4713b4fac91fd394", | |||
"reference": "b5c6921f2e91229c9f71556a4713b4fac91fd394", | |||
"url": "https://api.github.com/repos/icewind1991/SMB/zipball/9dba42ab2a3990de29e18cc62b0a8270aceb74e3", | |||
"reference": "9dba42ab2a3990de29e18cc62b0a8270aceb74e3", | |||
"shasum": "" | |||
}, | |||
"require": { | |||
@@ -49,9 +49,9 @@ | |||
"description": "php wrapper for smbclient and libsmbclient-php", | |||
"support": { | |||
"issues": "https://github.com/icewind1991/SMB/issues", | |||
"source": "https://github.com/icewind1991/SMB/tree/v3.4.0" | |||
"source": "https://github.com/icewind1991/SMB/tree/v3.4.1" | |||
}, | |||
"time": "2021-03-10T14:00:37+00:00" | |||
"time": "2021-04-19T13:53:08+00:00" | |||
}, | |||
{ | |||
"name": "icewind/streams", |
@@ -30,7 +30,7 @@ private static $installed = array ( | |||
'aliases' => | |||
array ( | |||
), | |||
'reference' => '62929cc646134fbd409cfb4eacb7039d15763b96', | |||
'reference' => '9a69b8839389f133db55a41e1c2ba4435fd50c19', | |||
'name' => 'files_external/3rdparty', | |||
), | |||
'versions' => | |||
@@ -42,16 +42,16 @@ private static $installed = array ( | |||
'aliases' => | |||
array ( | |||
), | |||
'reference' => '62929cc646134fbd409cfb4eacb7039d15763b96', | |||
'reference' => '9a69b8839389f133db55a41e1c2ba4435fd50c19', | |||
), | |||
'icewind/smb' => | |||
array ( | |||
'pretty_version' => 'v3.4.0', | |||
'version' => '3.4.0.0', | |||
'pretty_version' => 'v3.4.1', | |||
'version' => '3.4.1.0', | |||
'aliases' => | |||
array ( | |||
), | |||
'reference' => 'b5c6921f2e91229c9f71556a4713b4fac91fd394', | |||
'reference' => '9dba42ab2a3990de29e18cc62b0a8270aceb74e3', | |||
), | |||
'icewind/streams' => | |||
array ( |
@@ -2,17 +2,17 @@ | |||
"packages": [ | |||
{ | |||
"name": "icewind/smb", | |||
"version": "v3.4.0", | |||
"version_normalized": "3.4.0.0", | |||
"version": "v3.4.1", | |||
"version_normalized": "3.4.1.0", | |||
"source": { | |||
"type": "git", | |||
"url": "https://github.com/icewind1991/SMB.git", | |||
"reference": "b5c6921f2e91229c9f71556a4713b4fac91fd394" | |||
"reference": "9dba42ab2a3990de29e18cc62b0a8270aceb74e3" | |||
}, | |||
"dist": { | |||
"type": "zip", | |||
"url": "https://api.github.com/repos/icewind1991/SMB/zipball/b5c6921f2e91229c9f71556a4713b4fac91fd394", | |||
"reference": "b5c6921f2e91229c9f71556a4713b4fac91fd394", | |||
"url": "https://api.github.com/repos/icewind1991/SMB/zipball/9dba42ab2a3990de29e18cc62b0a8270aceb74e3", | |||
"reference": "9dba42ab2a3990de29e18cc62b0a8270aceb74e3", | |||
"shasum": "" | |||
}, | |||
"require": { | |||
@@ -25,7 +25,7 @@ | |||
"phpunit/phpunit": "^8.5|^9.3.8", | |||
"psalm/phar": "^4.3" | |||
}, | |||
"time": "2021-03-10T14:00:37+00:00", | |||
"time": "2021-04-19T13:53:08+00:00", | |||
"type": "library", | |||
"installation-source": "dist", | |||
"autoload": { | |||
@@ -46,7 +46,7 @@ | |||
"description": "php wrapper for smbclient and libsmbclient-php", | |||
"support": { | |||
"issues": "https://github.com/icewind1991/SMB/issues", | |||
"source": "https://github.com/icewind1991/SMB/tree/v3.4.0" | |||
"source": "https://github.com/icewind1991/SMB/tree/v3.4.1" | |||
}, | |||
"install-path": "../icewind/smb" | |||
}, |
@@ -6,7 +6,7 @@ | |||
'aliases' => | |||
array ( | |||
), | |||
'reference' => '62929cc646134fbd409cfb4eacb7039d15763b96', | |||
'reference' => '9a69b8839389f133db55a41e1c2ba4435fd50c19', | |||
'name' => 'files_external/3rdparty', | |||
), | |||
'versions' => | |||
@@ -18,16 +18,16 @@ | |||
'aliases' => | |||
array ( | |||
), | |||
'reference' => '62929cc646134fbd409cfb4eacb7039d15763b96', | |||
'reference' => '9a69b8839389f133db55a41e1c2ba4435fd50c19', | |||
), | |||
'icewind/smb' => | |||
array ( | |||
'pretty_version' => 'v3.4.0', | |||
'version' => '3.4.0.0', | |||
'pretty_version' => 'v3.4.1', | |||
'version' => '3.4.1.0', | |||
'aliases' => | |||
array ( | |||
), | |||
'reference' => 'b5c6921f2e91229c9f71556a4713b4fac91fd394', | |||
'reference' => '9dba42ab2a3990de29e18cc62b0a8270aceb74e3', | |||
), | |||
'icewind/streams' => | |||
array ( |
@@ -21,6 +21,8 @@ | |||
namespace Icewind\SMB; | |||
use Icewind\SMB\Exception\Exception; | |||
class AnonymousAuth implements IAuth { | |||
public function getUsername(): ?string { | |||
return null; | |||
@@ -39,6 +41,8 @@ class AnonymousAuth implements IAuth { | |||
} | |||
public function setExtraSmbClientOptions($smbClientState): void { | |||
smbclient_option_set($smbClientState, SMBCLIENT_OPT_AUTO_ANONYMOUS_LOGIN, true); | |||
if (smbclient_option_set($smbClientState, SMBCLIENT_OPT_AUTO_ANONYMOUS_LOGIN, true) === false) { | |||
throw new Exception("Failed to set smbclient options for anonymous auth"); | |||
} | |||
} | |||
} |
@@ -21,6 +21,8 @@ | |||
namespace Icewind\SMB; | |||
use Icewind\SMB\Exception\Exception; | |||
/** | |||
* Use existing kerberos ticket to authenticate | |||
*/ | |||
@@ -42,7 +44,11 @@ class KerberosAuth implements IAuth { | |||
} | |||
public function setExtraSmbClientOptions($smbClientState): void { | |||
smbclient_option_set($smbClientState, SMBCLIENT_OPT_USE_KERBEROS, true); | |||
smbclient_option_set($smbClientState, SMBCLIENT_OPT_FALLBACK_AFTER_KERBEROS, false); | |||
$success = (bool)smbclient_option_set($smbClientState, SMBCLIENT_OPT_USE_KERBEROS, true); | |||
$success = $success && smbclient_option_set($smbClientState, SMBCLIENT_OPT_FALLBACK_AFTER_KERBEROS, false); | |||
if (!$success) { | |||
throw new Exception("Failed to set smbclient options for kerberos auth"); | |||
} | |||
} | |||
} |
@@ -97,14 +97,13 @@ class NativeState { | |||
/** @var resource $state */ | |||
$state = smbclient_state_new(); | |||
$this->state = $state; | |||
/** @psalm-suppress UnusedFunctionCall */ | |||
smbclient_option_set($this->state, SMBCLIENT_OPT_AUTO_ANONYMOUS_LOGIN, false); | |||
/** @psalm-suppress UnusedFunctionCall */ | |||
smbclient_option_set($this->state, SMBCLIENT_OPT_TIMEOUT, $options->getTimeout() * 1000); | |||
if (function_exists('smbclient_client_protocols')) { | |||
$maxProtocol = $options->getMaxProtocol(); | |||
$minProtocol = $options->getMinProtocol(); | |||
smbclient_client_protocols($this->state, $minProtocol, $maxProtocol); | |||
smbclient_client_protocols($this->state, $options->getMinProtocol(), $options->getMaxProtocol()); | |||
} | |||
$auth->setExtraSmbClientOptions($this->state); | |||
@@ -357,7 +356,9 @@ class NativeState { | |||
public function __destruct() { | |||
if ($this->connected) { | |||
smbclient_state_free($this->state); | |||
if (smbclient_state_free($this->state) === false) { | |||
throw new Exception("Failed to free smb state"); | |||
} | |||
} | |||
} | |||
} |
@@ -52,7 +52,9 @@ abstract class NativeStream implements File { | |||
* @return resource | |||
*/ | |||
protected static function wrapClass(NativeState $state, $smbStream, string $mode, string $url, string $class) { | |||
stream_wrapper_register('nativesmb', $class); | |||
if (stream_wrapper_register('nativesmb', $class) === false) { | |||
throw new Exception("Failed to register stream wrapper"); | |||
} | |||
$context = stream_context_create([ | |||
'nativesmb' => [ | |||
'state' => $state, | |||
@@ -61,7 +63,9 @@ abstract class NativeStream implements File { | |||
] | |||
]); | |||
$fh = fopen('nativesmb://', $mode, false, $context); | |||
stream_wrapper_unregister('nativesmb'); | |||
if (stream_wrapper_unregister('nativesmb') === false) { | |||
throw new Exception("Failed to unregister stream wrapper"); | |||
} | |||
return $fh; | |||
} | |||
@@ -44,7 +44,7 @@ class StringBuffer { | |||
} | |||
public function read(int $count): string { | |||
$chunk = substr($this->buffer, $this->pos, $this->pos + $count); | |||
$chunk = substr($this->buffer, $this->pos, $count); | |||
$this->pos += strlen($chunk); | |||
return $chunk; | |||
} |
@@ -88,7 +88,7 @@ class Server extends AbstractServer { | |||
$shareNames = $parser->parseListShares($output); | |||
$shares = []; | |||
foreach ($shareNames as $name => $description) { | |||
foreach ($shareNames as $name => $_description) { | |||
$shares[] = $this->getShare($name); | |||
} | |||
return $shares; |