synchronized SmbTree getSmbTree( String share, String service ) { SmbTree t; if( share == null ) { share = "IPC$"; } for( Enumeration e = trees.elements(); e.hasMoreElements(); ) { t = (SmbTree)e.nextElement(); if( t.matches( share, service )) { return t; } } t = new SmbTree( this, share, service ); trees.addElement( t ); return t; } boolean matches( NtlmPasswordAuthentication auth ) {
public static void logon( UniAddress dc, int port, NtlmPasswordAuthentication auth ) throws SmbException { SmbTree tree = SmbTransport.getSmbTransport( dc, port ).getSmbSession( auth ).getSmbTree( LOGON_SHARE, null ); if( LOGON_SHARE == null ) { tree.treeConnect( null, null ); } else { Trans2FindFirst2 req = new Trans2FindFirst2( "\\", "*", SmbFile.ATTR_DIRECTORY ); Trans2FindFirst2Response resp = new Trans2FindFirst2Response(); tree.send( req, resp ); } }
t.treeDisconnect( inError );
void treeDisconnect( boolean inError ) { synchronized (session.transport()) { if (connectionState != 2) // not-connected return; connectionState = 3; // disconnecting if (!inError && tid != 0) { try { send( new SmbComTreeDisconnect(), null ); } catch( SmbException se ) { if (session.transport.log.level > 1) { se.printStackTrace( session.transport.log ); } } } inDfs = false; inDomainDfs = false; connectionState = 0; session.transport.notifyAll(); } }
response.received = false; treeConnect( request, response ); if( request == null || (response != null && response.received )) { return; treeDisconnect( true );
private static NtlmChallenge interrogate( NbtAddress addr ) throws SmbException { UniAddress dc = new UniAddress( addr ); SmbTransport trans = SmbTransport.getSmbTransport( dc, 0 ); if (USERNAME == null) { trans.connect(); if (SmbTransport.log.level >= 3) SmbTransport.log.println( "Default credentials (jcifs.smb.client.username/password)" + " not specified. SMB signing may not work propertly." + " Skipping DC interrogation." ); } else { SmbSession ssn = trans.getSmbSession( NtlmPasswordAuthentication.DEFAULT ); ssn.getSmbTree( LOGON_SHARE, null ).treeConnect( null, null ); } return new NtlmChallenge( trans.server.encryptionKey, dc ); } public static NtlmChallenge getChallengeForDomain()
public boolean equals(Object obj) { if (obj instanceof SmbTree) { SmbTree tree = (SmbTree)obj; return matches(tree.share, tree.service); } return false; } void send( ServerMessageBlock request,
dest.resolveDfs(null); if (!tree.equals(dest.tree)) { throw new SmbException( "Invalid operation for workgroups, servers, or shares" );
void send( ServerMessageBlock request, ServerMessageBlock response ) throws SmbException { for( ;; ) { resolveDfs(request); try { tree.send( request, response ); break; } catch( DfsReferral dre ) { if( dre.resolveHashes ) { throw dre; } request.reset(); } } }
response.received = false; treeConnect( request, response ); if( request == null || (response != null && response.received )) { return; treeDisconnect( true );
log.println( "doConnect: " + addr ); tree.treeConnect(null, null); } catch (SmbAuthException sae) { NtlmPasswordAuthentication a; ssn = trans.getSmbSession(NtlmPasswordAuthentication.NULL); tree = ssn.getSmbTree(null, null); tree.treeConnect(null, null); } else if ((a = NtlmAuthenticator.requestNtlmPasswordAuthentication( url.toString(), sae)) != null) { tree.connectionState = 2; tree.treeConnect(null, null); } else { if (log.level >= 1 && hasNextAddress())
public boolean equals(Object obj) { if (obj instanceof SmbTree) { SmbTree tree = (SmbTree)obj; return matches(tree.share, tree.service); } return false; } void send( ServerMessageBlock request,
dest.resolveDfs(null); if (!tree.equals(dest.tree)) { throw new SmbException( "Invalid operation for workgroups, servers, or shares" );
public static void logon( UniAddress dc, int port, NtlmPasswordAuthentication auth ) throws SmbException { SmbTree tree = SmbTransport.getSmbTransport( dc, port ).getSmbSession( auth ).getSmbTree( LOGON_SHARE, null ); if( LOGON_SHARE == null ) { tree.treeConnect( null, null ); } else { Trans2FindFirst2 req = new Trans2FindFirst2( "\\", "*", SmbFile.ATTR_DIRECTORY ); Trans2FindFirst2Response resp = new Trans2FindFirst2Response(); tree.send( req, resp ); } }
void send( ServerMessageBlock request, ServerMessageBlock response ) throws SmbException { for( ;; ) { resolveDfs(request); try { tree.send( request, response ); break; } catch( DfsReferral dre ) { if( dre.resolveHashes ) { throw dre; } request.reset(); } } }
synchronized SmbTree getSmbTree( String share, String service ) { SmbTree t; if( share == null ) { share = "IPC$"; } for( Enumeration e = trees.elements(); e.hasMoreElements(); ) { t = (SmbTree)e.nextElement(); if( t.matches( share, service )) { return t; } } t = new SmbTree( this, share, service ); trees.addElement( t ); return t; } boolean matches( NtlmPasswordAuthentication auth ) {
response.received = false; treeConnect( request, response ); if( request == null || (response != null && response.received )) { return; treeDisconnect( true );
log.println( "doConnect: " + addr ); tree.treeConnect(null, null); } catch (SmbAuthException sae) { NtlmPasswordAuthentication a; ssn = trans.getSmbSession(NtlmPasswordAuthentication.NULL); tree = ssn.getSmbTree(null, null); tree.treeConnect(null, null); } else if ((a = NtlmAuthenticator.requestNtlmPasswordAuthentication( url.toString(), sae)) != null) { tree.connectionState = 2; tree.treeConnect(null, null); } else { if (log.level >= 1 && hasNextAddress())
t.treeDisconnect( inError );
public boolean equals(Object obj) { if (obj instanceof SmbTree) { SmbTree tree = (SmbTree)obj; return matches(tree.share, tree.service); } return false; } void send( ServerMessageBlock request,