Открыть общий ресурс Micrsoft DFS в golang с помощью smb2

#go #smb #microsoft-distributed-file-system

#Вперед #smb #microsoft-распределенная файловая система

Вопрос:

У меня есть общий ресурс dfs на Windows Server 2012. Я могу открыть общий ресурс и прочитать файлы из другой системы в проводнике Windows, указав путь, подобный: \ dfsserver usernamepaceTomgo.png. Однако, используя пакет golang smb2 с помощьюhttps://github.com/hirochachacha/go-smb2 Я получаю сообщение об ошибке как

ошибка ответа: сервер, с которым связались, не поддерживает указанную часть пространства имен DFS

Но если я попытаюсь открыть файл с фактическим путем к общему ресурсу \ dfsserver public shareTom go.png, тогда код будет работать нормально. Итак, проблема в том, что я не знаю фактического пути во время выполнения, и я хочу иметь возможность открывать файл с помощью пути, предоставленного DFS.

Может ли быть так, что DFS не работает должным образом с smb2? или некоторые другие проблемы. Заранее спасибо за ваши комментарии.

     func main(){
    
        // actualPath := `\dfsserverpublic shareTomgo.png`
        // dfsPath := `\dfsserverusernamespaceTomgo.png`
    
        conn, err := net.Dial("tcp", fmt.Sprintf("%s:%s", "dfsserver", "445"))
        if err != nil {
            fmt.Println(err)
        }
        defer conn.Close()
    
        dial := amp;smb2.Dialer{
            Initiator: amp;smb2.NTLMInitiator{
                User:     "user",
                Password: "password",
                Domain:  "dfsserver",
            },
        }
        session, err := dial.Dial(conn)
        if err != nil {
            fmt.Println(err)
        }
        defer session.Logoff()
    
        mountPoint, err := session.Mount("usernamespace")
        if err != nil {
            fmt.Println(err)
            os.Exit(1)
        }
    
       // error occures here, if the mountPoint was "public share" instead of "usernamespace" then no error
        remoteFile, err := mountPoint.Open(`Tomgo.png`) 
        defer remoteFile.Close()
        if err != nil {
            fmt.Println(err)
        }
    }
  

Комментарии:

1. Здесь та же проблема … вы когда-нибудь находили ответ на эту проблему?

2. вы решили это? @Hussain