Ejemplo n.º 1
0
 /**
  * @param bool $isPersonal
  * @return bool
  */
 public function test($isPersonal = true)
 {
     if ($isPersonal) {
         if ($this->stat('')) {
             return true;
         }
         return false;
     } else {
         $smb = new \smb();
         $pu = $smb->parse_url($this->constructUrl(''));
         // Attempt to connect anonymously
         $pu['user'] = '';
         $pu['pass'] = '';
         // Share cannot be checked if dynamic
         if ($this->username_as_share) {
             if ($smb->look($pu)) {
                 return true;
             } else {
                 return false;
             }
         }
         if (!$pu['share']) {
             return false;
         }
         // The following error messages are expected due to anonymous login
         $regexp = array('(NT_STATUS_ACCESS_DENIED)' => 'skip') + $smb->getRegexp();
         if ($smb->client("-d 0 " . escapeshellarg('//' . $pu['host'] . '/' . $pu['share']) . " -c exit", $pu, $regexp)) {
             return true;
         } else {
             return false;
         }
     }
 }
Ejemplo n.º 2
0
 function dir_opendir($url, $options)
 {
     if ($d = $this->getdircache($url)) {
         $this->dir = $d;
         $this->dir_index = 0;
         return TRUE;
     }
     $pu = smb::parse_url($url);
     switch ($pu['type']) {
         case 'host':
             if ($o = smb::look($pu)) {
                 $this->dir = $o['disk'];
                 $this->dir_index = 0;
             } else {
                 trigger_error("dir_opendir(): list failed for host '{$pu['host']}'", E_USER_WARNING);
                 return false;
             }
             break;
         case 'share':
         case 'path':
             if (is_array($o = smb::execute('dir "' . $pu['path'] . '\\*"', $pu))) {
                 $this->dir = array_keys($o['info']);
                 $this->dir_index = 0;
                 $this->adddircache($url, $this->dir);
                 if (substr($url, -1, 1) == '/') {
                     $url = substr($url, 0, -1);
                 }
                 foreach ($o['info'] as $name => $info) {
                     smb::addstatcache($url . '/' . $name, $info);
                 }
             } else {
                 trigger_error("dir_opendir(): dir failed for path '" . $pu['path'] . "'", E_USER_WARNING);
                 return false;
             }
             break;
         default:
             trigger_error('dir_opendir(): error in URL', E_USER_ERROR);
             return false;
     }
     return TRUE;
 }
Ejemplo n.º 3
0
 public function dir_opendir($url, $options)
 {
     $d = $this->getdircache($url);
     if (is_array($d)) {
         $this->dir = $d;
         $this->dir_index = 0;
         return TRUE;
     }
     $url = smb::cleanUrl($url);
     $pu = smb::parse_url($url);
     switch ($pu['type']) {
         case 'host':
             if ($o = smb::look($pu)) {
                 $this->dir = $o['disk'];
                 //$this->dir = 'test';
                 $this->dir_index = 0;
             } else {
                 trigger_error("dir_opendir(): list failed for host '{$pu['host']}'", E_USER_WARNING);
             }
             break;
         case 'share':
         case 'path':
             $o = smb::execute('dir "' . $pu['path'] . '\\*"', $pu);
             if (is_array($o)) {
                 if (isset($o['info'])) {
                     $this->dir = array_keys($o['info']);
                     $this->dir_index = 0;
                     $this->adddircache($url, $this->dir);
                     foreach ($o['info'] as $name => $info) {
                         self::debug("Adding to statcache " . $url . '/' . $name);
                         //smb::addstatcache($url . '/' . urlencode($name), $info);
                         smb::addstatcache($url . '/' . $name, $info);
                     }
                 } else {
                     $this->dir = array();
                     $this->dir_index = 0;
                     $this->adddircache($url, $this->dir);
                 }
             } else {
                 trigger_error("dir_opendir(): dir failed for path '{$pu['path']}'", E_USER_WARNING);
             }
             break;
         default:
             trigger_error('dir_opendir(): error in URL', E_USER_ERROR);
     }
     return TRUE;
 }
Ejemplo n.º 4
0
Archivo: Smb.php Proyecto: schpill/thin
 function dir_opendir($url, $options)
 {
     if ($d = $this->getdircache($url)) {
         $this->dir = $d;
         $this->dir_index = 0;
         return TRUE;
     }
     $pu = smb::parse_url($url);
     switch ($pu['type']) {
         case 'host':
             if ($o = smb::look($pu)) {
                 $this->dir = $o['disk'];
                 $this->dir_index = 0;
             } else {
                 error_log("dir_opendir(): list failed for host '{$pu['host']}'", E_USER_WARNING);
             }
             break;
         case 'share':
         case 'path':
             if ($o = smb::execute('dir "' . $pu['path'] . '\\*"', $pu)) {
                 $this->dir = array_keys($o['info']);
                 $this->dir_index = 0;
                 $this->adddircache($url, $this->dir);
                 foreach ($o['info'] as $name => $info) {
                     smb::addstatcache($url . '/' . urlencode($name), $info);
                 }
             } else {
                 error_log("dir_opendir(): dir failed for path '{$path}'", E_USER_WARNING);
             }
             break;
         default:
             error_log('dir_opendir(): error in URL', E_USER_ERROR);
     }
     return TRUE;
 }