[PATCH] Terminal Profile Path settings
Alberto Patino
jalbertop at aranea.com.mx
Sat Feb 28 19:49:48 GMT 2004
On Sat, 2004-02-28 at 04:53, Andrew Bartlett wrote:
> On Sat, 2004-02-28 at 21:49, Yohann Fourteau wrote:
> > Le sam 28/02/2004 à 00:17, Andrew Bartlett a écrit :
> > > On Sat, 2004-02-28 at 03:35, Simo Sorce wrote:
> > > > Hello Yohann,
> > > > just recently a nice contributor helped us to introduce some support for
> > > > the terminal server settings.
> > > > They are just a blob of options filled into the former munged dial
> > > > parameter.
> > > > We emulated the same thing in our SAM so you will find out these
> > > > informations are a blob of data base64 encoded in the munged dial
> > > > parameter in the SAM (ldapsam, tdbsam) once you set them with a terminal
> > > > server aware usrmgr.exe from a windows workstation.
> > >
> > > Given that there are 'user paramters' in this blob that people want to
> > > set with our tools, should we consider splitting them up into LDAP?
> > >
> > > I know this has risk, but being able to set
> > > sambaTermainlServerProfilePath in LDAP 'directly' would be very useful.
> > >
> > > How does TSE identify what strings are what in that blob?
> >
Based on net ads user and net ads dn I create a library to add users in
Active Directory (AD). One important thing to us was to be able to set
the userParameters attribute also in AD.
The tscmd.exe tool send a RPC call with the a UNICODE blob? but the BLOB
returned by a LDAP query to AD returns a chunk of 470 bytes . (Same as
tscmd.exe with no 0x00 prefix for each byte). When I create an
SAMAccountPerson in AD I added the userParameters attribute using
ldap_add with the replica I got from the raw ldap_search() query done by
net ads dn.
What I have done is very primitive: I set the TS values from the Active
Directory User an Computers (Usrmgr.exe ?) with the values I want to set
then I use the net ads dn to get the blob for the userParameters value
and then I capture this blob and I add the same blob with LDAP.
However I didn't get any clue to parse the userParameters blob. I tried
to figure out how to handle this chunck of bytes with the TS parameters
but I couldn't.
:-(
char userParametersUTF8[] =
{
0x30,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x50,0x10,0x1a,0x08,0x01,0x43,0x74,0x78,
0x43,0x66,0x67,0x50,0x72,0x65,0x73,0x65,
0x6e,0x74,0xe3,0x94,0xb5,0xe6,0x94,0xb1,
0xe6,0x88,0xb0,0xe3,0x81,0xa2,0x18,0x08,
0x01,0x43,0x74,0x78,0x43,0x66,0x67,0x46,
0x6c,0x61,0x67,0x73,0x31,0xe3,0x80,0xb0,
/* ==> In the following line the second and third */
/* byte could have the following values */
/* Connect client drivers at logon (a) */
/* 0x80,0xb9 */
/* Connect client printers at logon (b) */
/* 0x80,0xb5 */
/* Default to main client printer (c) */
/* 0x80,0xb3 */
/* Environment Tab - Window Properties A */
/* No options set: */
/* 0x80,0xb1 */
/* All options set: */
/* 0x81,0xa6 */
/* Other combination */
/* a + b = 0x81,0xa4 */
/* a + c = 0x81,0xa2 */
/* a + b + c = 0x81,0xa6 */
/* b + c = 0x80,0xb7 */
0xe3,0x80,0xb7,0xe3,0xa0,0xb2,0xe3,0x80,
0xb9,0x16,0x08,0x01,0x43,0x74,0x78,0x43,
0x61,0x6c,0x6c,0x62,0x61,0x63,0x6b,0xe3,
0x80,0xb0,0xe3,0x80,0xb0,0xe3,0x80,0xb0,
0xe3,0x80,0xb0,0x12,0x08,0x01,0x43,0x74,
0x78,0x53,0x68,0x61,0x64,0x6f,0x77,0xe3,
0x84,0xb0,0xe3,0x80,0xb0,0xe3,0x80,0xb0,
0xe3,0x80,0xb0,0x28,0x08,0x01,0x43,0x74,
0x78,0x4d,0x61,0x78,0x43,0x6f,0x6e,0x6e,
0x65,0x63,0x74,0x69,0x6f,0x6e,0x54,0x69,
0x6d,0x65,0xe3,0x80,0xb0,0xe3,0x80,0xb0,
0xe3,0x80,0xb0,0xe3,0x80,0xb0,0x2e,0x08,
0x01,0x43,0x74,0x78,0x4d,0x61,0x78,0x44,
0x69,0x73,0x63,0x6f,0x6e,0x6e,0x65,0x63,
0x74,0x69,0x6f,0x6e,0x54,0x69,0x6d,0x65,
0xe3,0x80,0xb0,0xe3,0x80,0xb0,0xe3,0x80,
0xb0,0xe3,0x80,0xb0,0x1c,0x08,0x01,0x43,
0x74,0x78,0x4d,0x61,0x78,0x49,0x64,0x6c,
0x65,0x54,0x69,0x6d,0x65,0xe3,0x80,0xb0,
0xe3,0x80,0xb0,0xe3,0x80,0xb0,0xe3,0x80,
0xb0,0x22,0x08,0x01,0x43,0x74,0x78,0x4b,
0x65,0x79,0x62,0x6f,0x61,0x72,0x64,0x4c,
0x61,0x79,0x6f,0x75,0x74,0xe3,0x80,0xb0,
0xe3,0x80,0xb0,0xe3,0x80,0xb0,0xe3,0x80,
0xb0,0x2a,0x02,0x01,0x43,0x74,0x78,0x4d,
0x69,0x6e,0x45,0x6e,0x63,0x72,0x79,0x70,
0x74,0x69,0x6f,0x6e,0x4c,0x65,0x76,0x65,
0x6c,0xe3,0x84,0xb0,0x20,0x02,0x01,0x43,
0x74,0x78,0x57,0x6f,0x72,0x6b,0x44,0x69,
0x72,0x65,0x63,0x74,0x6f,0x72,0x79,0xe3,
0x80,0xb0,0x20,0x02,0x01,0x43,0x74,0x78,
0x4e,0x57,0x4c,0x6f,0x67,0x6f,0x6e,0x53,
0x65,0x72,0x76,0x65,0x72,0xe3,0x80,0xb0,
0x18,0x02,0x01,0x43,0x74,0x78,0x57,0x46,
0x48,0x6f,0x6d,0x65,0x44,0x69,0x72,0xe3,
0x80,0xb0,0x22,0x02,0x01,0x43,0x74,0x78,
0x57,0x46,0x48,0x6f,0x6d,0x65,0x44,0x69,
0x72,0x44,0x72,0x69,0x76,0x65,0xe3,0x80,
0xb0,0x20,0x02,0x01,0x43,0x74,0x78,0x57,
0x46,0x50,0x72,0x6f,0x66,0x69,0x6c,0x65,
0x50,0x61,0x74,0x68,0xe3,0x80,0xb0,0x22,
0x02,0x01,0x43,0x74,0x78,0x49,0x6e,0x69,
0x74,0x69,0x61,0x6c,0x50,0x72,0x6f,0x67,
0x72,0x61,0x6d,0xe3,0x80,0xb0,0x22,0x02,
0x01,0x43,0x74,0x78,0x43,0x61,0x6c,0x6c,
0x62,0x61,0x63,0x6b,0x4e,0x75,0x6d,0x62,
0x65,0x72,0xe3,0x80,0xb0,0x00
};
> > I understand why I didn't find what I want in the code :) Now I know.
> >
> > Maybe we can manipulate the blob in the attribute. I have to make a user
> > interface in LDAP/php to set that kind of parameters. Is there a
> > documentation about filling that attribute manualy (I just need the
> > syntax) ? (If not I will look at the code :).
>
> No, that is my point. We currently don't touch the internals of that
> blob - we just get and set that value, as per what the MS client
> requests. You would need to work out the syntax.
>
> Simo also had some other bugs he tripped across in this area, so keep in
> touch - we really do want this to work.
>
> Andrew Bartlett
More information about the samba-technical
mailing list