[jcifs] SMB URL

Michael B. Allen miallen at eskimo.com
Tue Jul 9 17:42:29 EST 2002


On Mon, 8 Jul 2002 23:37:29 -0500
"Christopher R. Hertel" <crh at ubiqx.mn.org> wrote:

> On Tue, Jul 09, 2002 at 12:17:10AM -0400, Allen, Michael B (RSCH) wrote:
> :
> > > It would become:
> > > 
> > >   NetBIOS Name = "foo%2Ebar"
> > >       Scope ID = "what.snu.com"
> > >          Share = "share"
> > > 
> > > ...and then you would convert the %2E into a dot.
> > > 
> > 	Right, but if you "export" the decoded URL how do you know if you need
> > to re-encode a dot?
> 
> You would export the individual fields, yes? If the NetBIOS Name field 
> contains a dot, encode it before rebuilding it into the URL.
> 
> That is, to be able to build an SMB URL, you would need to be given each 
> field separately.  Otherwise, how do you know whether "foo;crh:bar at snu" 
> should be read as:
> 
>   ntdomain = "foo"
>   username = "crh"
>   password = "bar"
>       host = "snu"
> 
> or:
> 
>   userinfo = "foo%3Bcrh%3Abar"
>       host = "snu"
> 
> or:
> 
>       host = "foo%3Bcrh%3Abar%40snu"
> 
> If the user enters the string as "foo;crh:bar at snu" then you assume the
> first, because there are no escapes.  If you tare that down to it's
> components, then you need to re-escape the components as you build them
> back into a URL string.  So, if you have:
> 
>       host = "foo.bar"
>    scopeID = "what.snu.com"
>      share = "share"
> 
> then in order to export it as a URL string you would need to first escape
> the dot in "foo.bar" (which means knowing that it is a NetBIOS name rather 
> than a DNS name).
> 
> I think I made that sound more convoluted than it really is.

I  think you would just need to maintain the original URL (with the escape)
and use individual decoded fields for logical operations. But this requires
a  concerted  effort  from all parts of your program; no method or function
can export anything but the original URL or it may not accurately represent
the  resource  anymore.  In  theory  it's probably possible but in practice
scope  just  isn't  worth it. Ultimately factoring scope into the authority
component  is  indeed more complex than not factoring it in. Maybe it won't
have  an  effect  on lookups but you've just pushed the complexity into the
URL  serialization  routines.  Multiplexing  that  many types of names (nbt
server,  nbt wg, nbt server w/scope, nbt workgroup w/scope, ip, and dns) in
one  field  is just bad programming. Implementors will not get it right and
SMB URLs just won't work well with scope. 

-- 
http://www.eskimo.com/~miallen/c/jus.c





More information about the jcifs mailing list