Android Question jcifs-ng Client SMB

tribunaantonino

Member
Licensed User
Longtime User
Ciao DonManfred , sto cercando di usare la tua libreria con un accesso anonimo
credentials.Domain = ""
credentials.Username = ""
credentials.Password = ""
credentials.Share = "smb: // SERVER / Users / Public /"
L'evento SMBClient_Resource viene chiamato e mi riporta vero, OK, smb: // SERVER / Users / Public /, smb: // SERVER / Users / Public /
ma quando richiedo la lista dei file mi da come errore jcifs.smb.SmbAuthException: accesso negato.
Ho provato ad usare l'applicazione file manager con le stesse credenziali e la lista viene eseguita correttamente.
E' possibile utilizzare la libreria con accesso anonimo?
 
Last edited:

tribunaantonino

Member
Licensed User
Longtime User
Ok, my english is not good ... but I will try to do the translation.
I'm trying to use your library with anonymous access by entering these credentials:
credentials.Domain = ""
credentials.Username = ""
credentials.Password = ""
credentials.Share = "smb: // SERVER / Users / Public /"
The SMBClient_Resource event is called
SMBClient_Resource(true,OK,smb://SERVER/Users/Public/prova,smb://SERVER/Users/Public/prova)
but when I ask for the list of files i get the error jcifs.smb.SmbAuthException: Access is denied.
I entered the same credentials in the File Manager + app and I can view the list of files in the public folder of windows 10.

I thank you in advance for the reply.
 
Last edited:
Upvote 0

tribunaantonino

Member
Licensed User
Longtime User
as a test project I used jcifs-ng-Example.b4a

Sub Activity_Create(FirstTime As Boolean)
'Do not forget to load the layout file created with the visual designer. For example:
Activity.LoadLayout("Layout1")
credentials.Initialize
credentials.Domain = ""
credentials.Username = ""
credentials.Password = ""
credentials.Share = "smb://SERVER/Users/Public/prova/"

edt_Domain.Text = credentials.Domain
edt_Username.Text = credentials.Username
edt_Password.Text = credentials.Password
edt_Share.Text = credentials.Share

Starter.rp.CheckAndRequest(Starter.rp.PERMISSION_WRITE_EXTERNAL_STORAGE)
Wait For Activity_PermissionResult (Permission As String, Result As Boolean)
If Result Then

End If
Log(ListFolders(File.DirRootExternal))
End Sub

the error is:

Domain =
Username =
Password =
Share = smb://SERVER/Users/Public/prova/
SMBClient_Resource(true,OK,smb://SERVER/Users/Public/prova/,smb://SERVER/Users/Public/prova/)
SMBClient_Resource(smb://SERVER/Users/Public/prova/, smb://SERVER/Users/Public/prova/)
CanonicalPath = smb://SERVER/Users/Public/prova/
CanonicalUncPath = smb://SERVER/Users/Public/prova/
jcifs.smb.SmbAuthException: Access is denied.
at jcifs.smb.SmbTransportImpl.checkStatus2(SmbTransportImpl.java:1410)
at jcifs.smb.SmbTransportImpl.checkStatus(SmbTransportImpl.java:1552)
at jcifs.smb.SmbTransportImpl.sendrecv(SmbTransportImpl.java:1007)
at jcifs.smb.SmbTransportImpl.send(SmbTransportImpl.java:1523)
at jcifs.smb.SmbSessionImpl.sessionSetupSMB2(SmbSessionImpl.java:549)
at jcifs.smb.SmbSessionImpl.sessionSetup(SmbSessionImpl.java:483)
at jcifs.smb.SmbSessionImpl.send(SmbSessionImpl.java:369)
at jcifs.smb.SmbSessionImpl.send(SmbSessionImpl.java:347)
at jcifs.smb.SmbTreeImpl.treeConnect(SmbTreeImpl.java:607)
at jcifs.smb.SmbTreeConnection.connectTree(SmbTreeConnection.java:619)
at jcifs.smb.SmbTreeConnection.connectHost(SmbTreeConnection.java:563)
at jcifs.smb.SmbTreeConnection.connectHost(SmbTreeConnection.java:484)
at jcifs.smb.SmbTreeConnection.connect(SmbTreeConnection.java:460)
at jcifs.smb.SmbTreeConnection.connectWrapException(SmbTreeConnection.java:421)
at jcifs.smb.SmbFile.ensureTreeConnected(SmbFile.java:551)
at jcifs.smb.SmbEnumerationUtil.doEnum(SmbEnumerationUtil.java:225)
at jcifs.smb.SmbEnumerationUtil.listFiles(SmbEnumerationUtil.java:283)
at jcifs.smb.SmbFile.listFiles(SmbFile.java:1192)
at de.donmanfred.SMBClientwrapper$11.run(SMBClientwrapper.java:461)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:422)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
at java.lang.Thread.run(Thread.java:818)
 
Upvote 0

DonManfred

Expert
Licensed User
Longtime User
1. Please use code tags when posting code!
2. I don´t see how you are accessing smb to raise the error.
3. Is the path you mentioned a valid SMB-Resource?

Looks like you want access any folder on the PC but not a Networkshare

I give you another chance to edit your post and give all needed Informations to me to help you.
 
Upvote 0

tribunaantonino

Member
Licensed User
Longtime User
Thanks a lot Manfred!

Sorry ... I'm not an expert on the forum and I will try to be clearer. I used the File Manager app with anonymous access to view the windows 10 public folder files and the folders and files are displayed correctly therefore the SMB resource is valid.
I used your example project jcifs-ng-Example.b4a changing only the credentials on the sub main.

B4X:
Sub Activity_Create(FirstTime As Boolean)
    'Do not forget to load the layout file created with the visual designer. For example:
    Activity.LoadLayout("Layout1")
    credentials.Initialize
    
    credentials.Domain = ""
    credentials.Username = ""
    credentials.Password = ""
    credentials.Share = "smb://SERVER/Users/Public/prova"

    edt_Domain.Text = credentials.Domain
    edt_Username.Text = credentials.Username
    edt_Password.Text = credentials.Password
    edt_Share.Text = credentials.Share
    
    Starter.rp.CheckAndRequest(Starter.rp.PERMISSION_WRITE_EXTERNAL_STORAGE)
    Wait For Activity_PermissionResult (Permission As String, Result As Boolean)
    If Result Then
        
    End If
    Log(ListFolders(File.DirRootExternal))
End Sub

.

By studying your project I believe that list of files is called in the starter module in the SMBClient_Resource event

B4X:
Sub SMBClient_Resource(success As Boolean, smbobjres As Object,smbobj As Object, info As String)
    Log($"SMBClient_Resource(${success},${info},${smbobjres},${smbobj})"$)
    If smbobjres <> Null And smbobj <> Null And info = "OK" Then
        Dim smbResource As SMBResource = smbobjres
        glRes = smbResource
        
        Dim smbfile As SMBFile = smbobj

        Log($"SMBClient_Resource(${smbResource}, ${smbfile})"$)
        Log($"CanonicalPath = ${smbfile.CanonicalPath}"$)
        Log($"CanonicalUncPath = ${smbfile.CanonicalUncPath}"$)
        

        'Dim flist As List = smbfile.listFiles
        'Log($"ListFiles2(res,"*.tif")"$)
        'jcifs.listFiles2(smbfile,"*.tif")




        
    '    cmbClient.GetResourcefromUrl("smb://192.168.192.168/SMBTest/")
    '    wait for SMBClient_Resource(smbobjres2 As Object,smbobj2 As Object)
    '    Log("GithubShare found...")
    '    github = smbobjres2
    '    Dim SMBTestOrdner As SMBFile = smbobj2
    '    Log($"${SMBTestOrdner.CanonicalPath}"$)
    '    Log($"ListFiles2(res)"$)
        smbClient.listFiles(smbResource)
    End If
 
Upvote 0

DonManfred

Expert
Licensed User
Longtime User
I can not say anything about File Manager and what it does, which protocol it uses.

I just know that the jcif-ns smb Library needs a real Networdshare to work. It is not a Fileaccess for any windows pcs folder.

I am not able to get any Filelist without create a share for a specific folder first.

Try setting up a real share on the pc and try to access this share.
 
Upvote 0

tribunaantonino

Member
Licensed User
Longtime User
I entered the username and password at the start of the PC and now I can get the list of files in the public folder.
I believe that the jcifs-ng library cannot be accessed as an anonymous user.
 
Upvote 0

DonManfred

Expert
Licensed User
Longtime User
I'm trying to use this library to copy file from shared folder in my Pc but do not know how can i do.
have you some example, please?
1. It is a mistake top post in old threads. ALWAYS create a NEW THREAD for your questions/issues.
2. For B4A there is an example in the library thread.
 
Upvote 0

DonManfred

Expert
Licensed User
Longtime User
have you some example, please?
See my answer here:
 
Upvote 0
Cookies are required to use this site. You must accept them to continue using the site. Learn more…