mirror of
https://codeberg.org/icewind/SMB.git
synced 2026-06-03 17:24:07 +02:00
63 lines
1.4 KiB
PHP
63 lines
1.4 KiB
PHP
<?php
|
|
/**
|
|
* Copyright (c) 2014 Robin Appelman <icewind@owncloud.com>
|
|
* This file is licensed under the Licensed under the MIT license:
|
|
* http://opensource.org/licenses/MIT
|
|
*/
|
|
|
|
namespace Icewind\SMB;
|
|
|
|
class NativeServer extends Server {
|
|
/**
|
|
* @var \Icewind\SMB\NativeState
|
|
*/
|
|
protected $state;
|
|
|
|
/**
|
|
* @param string $host
|
|
* @param string $user
|
|
* @param string $password
|
|
*/
|
|
public function __construct($host, $user, $password) {
|
|
parent::__construct($host, $user, $password);
|
|
$this->state = new NativeState();
|
|
}
|
|
|
|
protected function connect() {
|
|
if ($this->state and is_resource($this->state)) {
|
|
return;
|
|
}
|
|
$user = $this->getUser();
|
|
$workgroup = null;
|
|
if (strpos($user, '/')) {
|
|
list($workgroup, $user) = explode($user, '/');
|
|
}
|
|
$this->state->init($workgroup, $user, $this->getPassword());
|
|
}
|
|
|
|
/**
|
|
* @return \Icewind\SMB\IShare[]
|
|
* @throws \Icewind\SMB\AuthenticationException
|
|
* @throws \Icewind\SMB\InvalidHostException
|
|
*/
|
|
public function listShares() {
|
|
$this->connect();
|
|
$shares = array();
|
|
$dh = $this->state->opendir('smb://' . $this->getHost());
|
|
while ($share = $this->state->readdir($dh)) {
|
|
if ($share['type'] === 'file share') {
|
|
$shares[] = $this->getShare($share['name']);
|
|
}
|
|
}
|
|
$this->state->closedir($dh);
|
|
return $shares;
|
|
}
|
|
|
|
/**
|
|
* @param string $name
|
|
* @return \Icewind\SMB\IShare
|
|
*/
|
|
public function getShare($name) {
|
|
return new NativeShare($this, $name);
|
|
}
|
|
}
|