<?xml version="1.0"?>
<!-- name="generator" content="blosxom/2.0" -->
<!DOCTYPE rss PUBLIC "-//Netscape Communications//DTD RSS 0.91//EN" "http://my.netscape.com/publish/formats/rss-0.91.dtd">

<rss version="0.91">
  <channel>
    <title>projects.samba.org   </title>
    <link>http://projects.samba.org/projects</link>
    <description>Yet another Blosxom weblog.</description>
    <language>en</language>

  <item>
    <title>-------------------	BACKGROUND INFO BEGIN	-------------------</title>
    <link>http://projects.samba.org/projects/2005/08/28#2005-08-28</link>
    <description>
&lt;p&gt;
Rather than become overwhelmed with the tidal wave of information we are getting back from DSGetNCChanges(), I decided to take it one bit at a time. &lt;br&gt;
These notes reference the smbtorture output &lt;a href=http://www.riod.ca/samba/dssync.level8.txt&gt;found here&lt;/a&gt; by line number.
&lt;/p&gt;

&lt;p&gt;
What i'm hoping to do here is breakdown as many of the unknown attributes as I can. &lt;br&gt;
I'm starting with the root of dc=smb,dc=test (my domain name). I'm going to try and line up unknown values in my output file with what ldp.exe tells us on the domain controller. &lt;br&gt;
The dc is my pdc(2k3 enterprise edition), and it is running as a mixed-mode domain (freshly loaded snapshot 8).
&lt;/p&gt;

&lt;p&gt;
The first object in the list starts at line 571.
&lt;/p&gt;

&lt;p&gt;
I got these results by running 'bin/smbtorture -W smbtest -U administrator%sn4ppl3sux ncacn_ip_tcp:pdc.smb.test[seal,print] RPC-DSSYNC | less -N' of revision 9723 of my branch.
&lt;/p&gt;

&lt;p&gt;
&lt;small&gt;--&lt;/small&gt;&lt;small&gt;--&lt;/small&gt;---	BACKGROUND INFO END	&lt;small&gt;--&lt;/small&gt;&lt;small&gt;--&lt;/small&gt;---&lt;br&gt;
&lt;small&gt;--&lt;/small&gt;&lt;small&gt;--&lt;/small&gt;---	INTERESTING INFO BEGIN	&lt;small&gt;--&lt;/small&gt;&lt;small&gt;--&lt;/small&gt;---
&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Line 588 represents the beginning of an DRSUAPI_ATTRIBUTE_objectClass object. objectClassId 0xA0043 on line 597 and objectClassId 0xA0042 on line 601 are returned as UNKNOWN_ENUM_VALUE.&lt;br&gt;
	objectClassId 0x100000 on line 605 is returned as DRSUAPI_OBJECTCLASS_top. The attribute values returned by ldp.exe for objectClass are top; domain; domainDNS;. This indicates to me&lt;br&gt;
	 that objectClassId 0xA0043 and 0xA0042 are DRSUAPI_OBJECTCLASS_domain and DRSUAPI_OBJECTCLASS_domainDNS. But which is which? (spoiler: see entry for line 1831).
&lt;/ul&gt;

&lt;ul&gt;
&lt;li&gt;Line 606 represents the beginning of the next attribute. Line 607 shows that attid value 0x20001 is UNKNOWN_ENUM_VALUE. Line 616 shows that it has one value, a 5 (0x00000005).&lt;br&gt;
	ldp.exe shows that an attribute, instanceType has the value 0x5 = ( DS_INSTANCETYPE_IS_NC_HEAD|IT_WRITE );. Given that, i'm going to go with this object being instanceType, unless contiued&lt;br&gt;
	 exploration shows that to be not so simple. :)
&lt;/ul&gt;

&lt;ul&gt;
&lt;li&gt;Line 617 - next object, attid : UNKNOWN_ENUM_VALUE (0x20002). Single valued, time : Mon Jul 18 21:41:50 2005 CST. The whenCreated attribute's value in my AD is &lt;br&gt;
	7/18/2005 21:41:50 Canada Central Standard Time Canada Central Standard Time; so i'm going to assume that this (attid: 0x20002) is the 'whenCreated' attribute.
&lt;/ul&gt;

&lt;ul&gt;
&lt;li&gt;Line 628 - is the start of the next object, attid : DRSUAPI_ATTRIBUTE_ntSecurityDescriptor (0x20119). It's really long, and i'm guessing that it's the auditingPolicy: &lt;ldp: Binary blob&gt;; that&lt;br&gt;
	ldp can't tell me anything about.
&lt;/ul&gt;

&lt;ul&gt;
&lt;li&gt;Line 1594 - attribute with UNKNOWN_ENUM_VALUE (0x90001). Single valued, Unicode string 'smb'. That lines it up with the AD name: attribute, which also has the value smb in my directory.&lt;br&gt;
	So, attid: 0x90001 is the 'name' attribute, or the 'dc' attribute.
&lt;/ul&gt;

&lt;ul&gt;
&lt;li&gt;Line 1605 - attribute with UNKNOWN_ENUM_VALUE (0x9001A). It's a DATA_BLOB (length=8). This could be the auditingPolicy that ldb says is a binary blob.
&lt;/ul&gt;

&lt;ul&gt;
&lt;li&gt;Line 1616 - another UNKNOWN_ENUM_VALUE (0x90027).  DATA_BLOB (length=8). 
&lt;/ul&gt;

&lt;ul&gt;
&lt;li&gt;Line 1627 - UNKNOWN_ENUM_VALUE (0x9003C). DATA_BLOB (length=8).
&lt;/ul&gt;

&lt;ul&gt;
&lt;li&gt;Line 1638 - UNKNOWN_ENUM_VALUE (0x9003D). DATA_BLOB (length=8).
&lt;/ul&gt;

&lt;ul&gt;
&lt;li&gt;Line 1649 - UNKNOWN_ENUM_VALUE (0x90049). DATA_BLOB (length=4).
&lt;/ul&gt;

&lt;ul&gt;
&lt;li&gt;Line 1660 - UNKNOWN_ENUM_VALUE (0x9004A). DATA_BLOB (length=8).
&lt;/ul&gt;

&lt;ul&gt;
&lt;li&gt;Line 1671 - UNKNOWN_ENUM_VALUE (0x9004E). DATA_BLOB (length=8).
&lt;/ul&gt;

&lt;ul&gt;
&lt;li&gt;Line 1682 - UNKNOWN_ENUM_VALUE (0x9004F). DATA_BLOB (length=4).
&lt;/ul&gt;

&lt;ul&gt;
&lt;li&gt;Line 1693 - UNKNOWN_ENUM_VALUE (0x90051). DATA_BLOB (length=8).
&lt;/ul&gt;

&lt;ul&gt;
&lt;li&gt;Line 1704 - UNKNOWN_ENUM_VALUE (0x90058). DATA_BLOB (length=4).
&lt;/ul&gt;

&lt;ul&gt;
&lt;li&gt;Line 1715 - UNKNOWN_ENUM_VALUE (0x9005D). DATA_BLOB (length=4).
&lt;/ul&gt;

&lt;ul&gt;
&lt;li&gt;Line 1726 - UNKNOWN_ENUM_VALUE (0x9005F). DATA_BLOB (length=4).
&lt;/ul&gt;

&lt;ul&gt;
&lt;li&gt;Line 1737 - DRSUAPI_ATTRIBUTE_objectSid (0x90092). Unsurprisingly, ldb also tells me that my objectSid: is S-1-5-21-96697697-2244252087-1111806455.
&lt;/ul&gt;

&lt;ul&gt;
&lt;li&gt;Line 1748 - UNKNOWN_ENUM_VALUE (0x90097). num_values returns 0, values = NULL. The only attribute value ldp.exe tells me that is anything like that is &lt;br&gt;
	creationTime: &lt;ldp error &lt;0x0&gt;: cannot format time field;
&lt;/ul&gt;

&lt;ul&gt;
&lt;li&gt;Line 1754 - UNKNOWN_ENUM_VALUE (0x9009B). DATA_BLOB (length=4).
&lt;/ul&gt;

&lt;ul&gt;
&lt;li&gt;Line 1765 - UNKNOWN_ENUM_VALUE (0x9009E). num_values = 0, values = NULL.
&lt;/ul&gt;

&lt;ul&gt;
&lt;li&gt;Line 1771 - UNKNOWN_ENUM_VALUE (0x900CA). DATA_BLOB (length=2).
&lt;/ul&gt;

&lt;ul&gt;
&lt;li&gt;Line 1782 - UNKNOWN_ENUM_VALUE (0x90165). DATA_BLOB (length=4).
&lt;/ul&gt;

&lt;ul&gt;
&lt;li&gt;Line 1793 - UNKNOWN_ENUM_VALUE (0x90170). DATA_BLOB (length=138).
&lt;/ul&gt;

&lt;ul&gt;
&lt;li&gt;Line 1793 - UNKNOWN_ENUM_VALUE (0x90170). DATA_BLOB (length=138).
&lt;/ul&gt;

&lt;ul&gt;
&lt;li&gt;Line 1804 - UNKNOWN_ENUM_VALUE (0x90171). single valued dn_string.&lt;br&gt;
	   1817	 guid                     : d38ff38a-4c36-4394-a80b-eeb21661964d&lt;br&gt;
	   1818  sid                      : S-0-0&lt;br&gt;
	   1819  dn                       : 'CN=NTDS Settings,CN=PDC,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=smb,DC=test'&lt;br&gt;
	This appears to match up with the fSMORoleOwner attribute in my AD.
&lt;/ul&gt;

&lt;ul&gt;
&lt;li&gt;Line 1820 - DRSUAPI_ATTRIBUTE_systemFlags. value = 0x8c000000 (2348810240).
&lt;/ul&gt;

&lt;ul&gt;
&lt;li&gt;Line 1831 - UNKNOWN_ENUM_VALUE (0x9026A). 11 element array of drsuapi_DsAttributeValueCtrDNString. dn for each element:&lt;br&gt;
		'CN=Users,DC=smb,DC=test'&lt;br&gt;
		'CN=Computers,DC=smb,DC=test'&lt;br&gt;
		'OU=Domain Controllers,DC=smb,DC=test'&lt;br&gt;
		'CN=System,DC=smb,DC=test'&lt;br&gt;
		'CN=LostAndFound,DC=smb,DC=test'&lt;br&gt;
		'CN=Infrastructure,DC=smb,DC=test'&lt;br&gt;
		'CN=Deleted Objects,DC=smb,DC=test'&lt;br&gt;
		'CN=ForeignSecurityPrincipals,DC=smb,DC=test'&lt;br&gt;
		'CN=Program Data,DC=smb,DC=test'&lt;br&gt;
		'CN=Microsoft,CN=Program Data,DC=smb,DC=test'&lt;br&gt;
		'CN=NTDS Quotas,DC=smb,DC=test'&lt;br&gt;
	This indicates to me that attribute id 0x9026A is attribute name wellKnownObjects.&lt;br&gt;
	As an interesting side note, it looks like ldb.exe and smbtorture print the order of the elements in an array in opposite order from each other. &lt;br&gt;
	If we hypothesize that the order an array is printed is a standard, we can determine the unknown objectClassId's (way, way back to line 588) as follows:&lt;br&gt;
		Ldp.exe returned the values in the following order: top; domain; domainDNS;&lt;br&gt;
		smbtorture returned the values in the following order: 0xA0043, 0xA0042, 0x10000 (DRSUAPI_OBJECTCLASS_top).&lt;br&gt;
		If my hypothesis is correct, which is supported by the prior knowledge that 0x10000 is top, 0xA0042 is DRSUAPI_OBJECTCLASS_domain, and 0xA0043 is DRSUAPI_OBJECTCLASS_domainDNS.&lt;br&gt;
	Score one for the scientific method! &lt;br&gt;
	This doesn't confirm/prove anything, however. But I think it makes sense. We should be able to get more information to test the theory with from the next object we reach.
&lt;/ul&gt;

&lt;ul&gt;
&lt;li&gt;Line 1937 - DRSUAPI_ATTRIBUTE_objectCategory (0x9030E). value = 'CN=Domain-DNS,CN=Schema,CN=Configuration,DC=smb,DC=test'
&lt;/ul&gt;

&lt;ul&gt;
&lt;li&gt;Line 1953 - UNKNOWN_ENUM_VALUE (0x90364). DATA_BLOB (length=4).
&lt;/ul&gt;

&lt;ul&gt;
&lt;li&gt;Line 1964 - UNKNOWN_ENUM_VALUE (0x9037B). Unicode string, value '[LDAP://CN={31B2F340-016D-11D2-945F-00C04FB984F9},CN=Policies,CN=System,DC=smb,DC=test;0]'&lt;br&gt;
	That matches the value for the gPLink attribute in my AD. So, attribute name gPLink should match attid 0x9037B.
&lt;/ul&gt;

&lt;ul&gt;
&lt;li&gt;Line 1975 - UNKNOWN_ENUM_VALUE (0x90583). DATA_BLOB (length=4).
&lt;/ul&gt;

&lt;ul&gt;
&lt;li&gt;Line 1986 - DRSUAPI_ATTRIBUTE_msDS_Behavior_Version (0x905B3). Value 0.
&lt;/ul&gt;

&lt;ul&gt;
&lt;li&gt;Line 1997 - UNKNOWN_ENUM_VALUE (0x906FC). DATA_BLOB (length=4).
&lt;/ul&gt;

&lt;ul&gt;
&lt;li&gt;Line 2008 - UNKNOWN_ENUM_VALUE (0x906FD). DATA_BLOB (length=4).
&lt;/ul&gt;

&lt;ul&gt;
&lt;li&gt;Line 2019 - UNKNOWN_ENUM_VALUE (0x906FE). DATA_BLOB (length=4).
&lt;/ul&gt;

&lt;ul&gt;
&lt;li&gt;Line 2032 - 2210 - meta data.
&lt;/ul&gt;

&lt;p&gt;
This is the end of the first object. 
&lt;/p&gt;

&lt;p&gt;
What did we match that we didn't know before?&lt;br&gt;
	DRSUAPI_OBJECTCLASS_domain 	(0xA0042)&lt;br&gt;
	DRSUAPI_OBJECTCLASS_domainDNS 	(0xA0043)&lt;br&gt;
	wellKnownObjects 		(0x9026A)&lt;br&gt;
	fSMORoleOwner 			(0x90171)&lt;br&gt;
	name or dc			(0x90001)&lt;br&gt;
	whenCreated 			(0x20002)&lt;br&gt;
	instanceType 			(0x20001)&lt;br&gt;
	gPLink				(0x9037B)
&lt;/p&gt;

&lt;p&gt;
(I added all of these to source/librpc/idl/drsuapi.idl, except for 0x90001 - yet)&lt;br&gt;
    
&lt;/p&gt;

&lt;p&gt;
What was returned by ldb that we didn't match?&lt;br&gt;
	distinguishedName:&lt;br&gt;
	whenChanged:&lt;br&gt;
	subRefs:&lt;br&gt;
	uSNCreated:&lt;br&gt;
	repsFrom:&lt;br&gt;
	uSNChanged:&lt;br&gt;
	objectGUID:&lt;br&gt;
	replUpToDateVector:&lt;br&gt;
	creationTime:&lt;br&gt;
	forceLogoff:&lt;br&gt;
	lockoutDuration:&lt;br&gt;
	lockOutObservationWindow:&lt;br&gt;
	lockoutThreshold:&lt;br&gt;
	maxPwdAge:&lt;br&gt;
	minPwdAge:&lt;br&gt;
	minPwdLength:&lt;br&gt;
	modifiedCountAtLastProm:&lt;br&gt;
	nextRid:&lt;br&gt;
	pwdProperties:&lt;br&gt;
	pwdHistoryLength:&lt;br&gt;
	serverState:&lt;br&gt;
	uASCompat:&lt;br&gt;
	modifiedCount:&lt;br&gt;
	auditingPolicy:&lt;br&gt;
	nTMixedDomain:&lt;br&gt;
	rIDManagerReference:&lt;br&gt;
	isCriticalSystemObject:&lt;br&gt;
	masteredBy:&lt;br&gt;
	ms-DS-MachineAccountQuota:&lt;br&gt;
	msDS-PerUserTrustQuota:&lt;br&gt;
	msDS-AllUsersTrustQuota:&lt;br&gt;
	msDS-PerUserTrustTombstonesQuota:&lt;br&gt;
	msDs-masteredBy:&lt;br&gt;
	name: or dc:
&lt;/p&gt;

&lt;p&gt;
There are more attributes for this object returned by ldp.exe that we aren't resolving, than there are UNKNOWN_ENUM_VALUE's returned by smbtorture.
&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Line 2211 - Second object starts.
&lt;/ul&gt;

&lt;ul&gt;
&lt;li&gt;Line 2220 - dn of this object is 'CN=LostAndFound,DC=smb,DC=test'.
&lt;/ul&gt;

&lt;p&gt;
That's enough for now though.
&lt;/p&gt;</description>
  </item>
  <item>
    <title>	</title>
    <link>http://projects.samba.org/projects/2005/08/02#02-aug-05</link>
    <description>
&lt;p&gt;
	So far what I have come up with is a number of classes that are used to &lt;br&gt;
      deal with the &amp;quot;most common parameters&amp;quot; that Samba configuration &lt;br&gt;
      file deals with. Now for a server configuration I have distributed those &lt;br&gt;
      parameter bulk into approx 20 classes.&lt;/p&gt;
    &lt;p&gt; a) Basic class :&lt;br /&gt;
      It covers the Basic parameters in the Server , Fileshare and Printshare &lt;br&gt;
      configurations&lt;br /&gt;
      and includes parameters like&lt;/p&gt;
    &lt;p&gt; comment, path, netbiosname , workgroup , server string, etc &lt;/p&gt;
    &lt;p&gt; b) Tuning class:&lt;br /&gt;
      it covers the methods to fine tune the Share and Server configurations .&lt;br /&gt;
      includes parameters like&lt;/p&gt;
    &lt;p&gt;&lt;br /&gt;
      max smbd connections , keepalive, socket options, max open files, &lt;br /&gt;
      maxconnections , write cache size, strict allocation ,&lt;br /&gt;
      strict sync , minprint space &lt;/p&gt;
    &lt;p&gt; c) Browse class:&lt;br /&gt;
      &lt;br /&gt;
      browseable , OS level , preferred master , local master, browse list , enhanced &lt;br&gt;
      browsing&lt;/p&gt;
    &lt;p&gt; d) Protocol Class:&lt;/p&gt;
    &lt;p&gt;&lt;br /&gt;
      Protocol , smb ports, max protocol, min protocol , nt pipe support , disable &lt;br&gt;
      netbios, time server, nt acl support, client signing , name resolve order &lt;br&gt;
      ,&lt;/p&gt;
    &lt;p&gt; e) FilenameHandling Class :&lt;/p&gt;
    &lt;p&gt; case sensitive, preserve case, short preserve case, mangle case , hide &lt;br&gt;
      dot files,&lt;br /&gt;
      delete veto, hide files, veto files, map system , map hidden , map archive, &lt;br&gt;
      mangled map&lt;/p&gt;
    &lt;p&gt; f) Locking class :&lt;/p&gt;
    &lt;p&gt; blocking locks , locking , oplocks , posix locking , strict locking , &lt;br&gt;
      share modes , fake oplocks&lt;/p&gt;
    &lt;p&gt; g) printing class :&lt;/p&gt;
    &lt;p&gt; printing , cups options, lpq command, lppause command .....&lt;br /&gt;
      printcap name , load printers , delete printed command , addprinter command &lt;br&gt;
      ,&lt;br /&gt;
      max reported print job , printable , printer name ....&lt;/p&gt;
    &lt;p&gt; h) Logon class :&lt;br /&gt;
      add user script , delete user script , logon script , logon drive , logon &lt;br&gt;
      path , logon home&lt;br /&gt;
      domain logons , shutdown script&lt;/p&gt;
    &lt;p&gt; i) WINS class :&lt;br /&gt;
      dns proxy , wins proxy , wins server, wins support , wins hook&lt;/p&gt;
    &lt;p&gt; j) LogFile class :&lt;br /&gt;
      includes parameters related to the log files LDAP class :&lt;/p&gt;
    &lt;p&gt; k) Security class :&lt;br /&gt;
      includes parameters that handle the server and share security .&lt;/p&gt;
    &lt;p&gt; server security&lt;/p&gt;
    &lt;p&gt; security , auth methods, encrypt passwords , null passwords, password &lt;br&gt;
      server, smbpsswd file &lt;br /&gt;
      username level , unix passwd sync, root dir , guest account , private dir &lt;br&gt;
      , username map&lt;/p&gt;
    &lt;p&gt; share security&lt;/p&gt;
    &lt;p&gt; force user , force group , inherit permissions , guest only , only user &lt;br&gt;
      , writable&lt;br /&gt;
      username , invalid users, valid users, admin users , read list , security &lt;br&gt;
      mask , directory&lt;br /&gt;
      mask , create mask ......&lt;/p&gt;
    &lt;p&gt; l) Miscellaneous class :&lt;/p&gt;
    &lt;p&gt; remaining but frequent parameters ..&lt;/p&gt;
    &lt;p&gt; follow symlinks , wide links , postexec , root preexec , root postexec &lt;br&gt;
      , delete readonly ,&lt;br /&gt;
      dos file mode , fstyps , volume , dont descend ......&lt;/p&gt;
    &lt;p&gt;&lt;br /&gt;
      Now based upon these classes there would be three MAIN classes&lt;br /&gt;
      a) ServerClass&lt;br /&gt;
      b) FileShareClass&lt;br /&gt;
      c) PrintShareClass&lt;/p&gt;
    &lt;p&gt;The Objects Distribution for classes ...&lt;/p&gt;
    &lt;p&gt; &lt;em&gt;ServerClass (class)&lt;/em&gt;&lt;br /&gt;
      Basic&lt;br /&gt;
      Security&lt;br /&gt;
      Tuning&lt;br /&gt;
      Locking&lt;br /&gt;
      Protocol&lt;br /&gt;
      Printing&lt;br /&gt;
      FilenameHandling&lt;br /&gt;
      Logon Options&lt;br /&gt;
      Browse&lt;br /&gt;
      WINS LDAP&lt;br /&gt;
      winbind&lt;br /&gt;
      Miscellaneous&lt;/p&gt;
    &lt;p&gt; &lt;em&gt;FileShareClass&lt;/em&gt; (class)&lt;br /&gt;
      Basic&lt;br /&gt;
      Security&lt;br /&gt;
      Protocol&lt;br /&gt;
      Tuning&lt;br /&gt;
      FilenameHandling&lt;br /&gt;
      Browse&lt;br /&gt;
      Locking&lt;br /&gt;
      Miscellaneous&lt;/p&gt;
    &lt;p&gt; &lt;em&gt;PrintShareClass&lt;/em&gt; (class)&lt;br /&gt;
      Basic&lt;br /&gt;
      Security&lt;br /&gt;
      Tuning&lt;br /&gt;
      Browsing&lt;br /&gt;
      Miscellaneous&lt;br /&gt;
      Printing Options&lt;br /&gt;
    &lt;/p&gt;
    &lt;p&gt;&lt;em&gt;UserAccountsClass&lt;/em&gt; (class)&lt;br /&gt;
    &lt;/p&gt;
    &lt;p&gt;&lt;br /&gt;
      At present I am dealing with the functions for Each of the Main Classes &lt;br&gt;
      designed so far ..&lt;br /&gt;
      What would a test file look like ??&lt;/p&gt;
    &lt;p&gt;Functions For the Server class &lt;/p&gt;
    &lt;p&gt; def CommitChanges(self):&lt;br /&gt;
      def AddShare(self, ShareObject):&lt;br /&gt;
      def RefreshServer(self):&lt;br /&gt;
      def ListOptionsInShare(self , shareName):&lt;br /&gt;
      def PrintServerInfo(self):&lt;br /&gt;
      def ListShares(self):&lt;br /&gt;
      def RemoveShare(self, delShareName ):&lt;br /&gt;
      def SetOptionValuePairInService(self, ServiceName, Option , Value):&lt;br /&gt;
      def Version(self):&lt;br /&gt;
      def PrintConfigFile(self):&lt;br /&gt;
      def TestServerConfiguration(self):&lt;br /&gt;
      def RevokeUserRight(self):&lt;br /&gt;
      def AddUser(self):&lt;br /&gt;
      def RemoveUser(self):&lt;br /&gt;
      def CreatePath(self):&lt;br /&gt;
      def CheckIfPathExist(self):&lt;br /&gt;
      def CommentOptionValuePair(self):&lt;br /&gt;
      def UncommentOptionValuePair(self):&lt;br /&gt;
      def SetServerType(self, serverType):&lt;br /&gt;
    &lt;/p&gt;
    &lt;p&gt; &lt;em&gt;test.py&lt;/em&gt;&lt;/p&gt;
    &lt;p&gt; import sys&lt;br /&gt;
      from ServerClass import Server &lt;/p&gt;
    &lt;p&gt;from FileShareClass import FileShare&lt;/p&gt;
    &lt;p&gt;if &lt;u&gt;_name_&lt;/u&gt; == &amp;quot;&lt;u&gt;_main_&lt;/u&gt;&amp;quot;:&lt;br /&gt;
      s = Server(&amp;quot;/home/amit/test/smb.conf&amp;quot;)&lt;br /&gt;
      s.Basic.Workgroup(&amp;quot; workgroupnamE &amp;quot;)&lt;br /&gt;
      s.Basic.NetBIOSname(&amp;quot; my computer &amp;quot;)&lt;br /&gt;
      s.Security.EncryptPasswords(&amp;quot;yes&amp;quot;)&lt;/p&gt;
    &lt;p&gt; s.FilenameHandling.HideDotFiles(&amp;quot;yes&amp;quot;,&amp;quot;comment here&amp;quot;)&lt;/p&gt;
    &lt;p&gt; S.Browse.Browseable(&amp;quot;yes&amp;quot;)&lt;br /&gt;
      s.CommitChanges()&lt;/p&gt;
    &lt;p&gt; s1 = FileShare(&amp;quot;mama&amp;quot;)&lt;br /&gt;
      s1.Basic.Path(&amp;quot;/home/amit&amp;quot;)&lt;br /&gt;
      s1.Basic.Comment(&amp;quot; comment for the share name&amp;quot;)&lt;br /&gt;
      s1.Security.ReadOnly(&amp;quot;yes&amp;quot;)&lt;br /&gt;
      s1.Security.Writable(&amp;quot;yes&amp;quot;)&lt;/p&gt;
    &lt;p&gt; s.AddShare(s1)&lt;/p&gt;
    &lt;p&gt; print &amp;quot;done&amp;quot;&lt;/p&gt;
    &lt;p&gt;&amp;nbsp; &lt;/p&gt;
    &lt;b&gt; Amit Regmi &lt;/b&gt; 2nd August 2005
&lt;/p&gt;</description>
  </item>
  <item>
    <title>Classes and Methods implemented so far</title>
    <link>http://projects.samba.org/projects/2005/07/28#29-jul-05</link>
    <description>
&lt;p&gt;
filename:Server.py 
&lt;/p&gt;

&lt;p&gt;
(class)  Server
&lt;/p&gt;

&lt;p&gt;
commitChanges&lt;br&gt;
ListShares, &lt;br&gt;
AddShare, &lt;br&gt;
RemoveShare,  &lt;br&gt;
setServerName,  &lt;br&gt;
setWorkgroupName, &lt;br&gt;
setOptionValuePairInService,     &lt;br&gt;
setServerType,  &lt;br&gt;
ListOptionsInShare, &lt;br&gt;
printServerInfo
&lt;/p&gt;

&lt;p&gt;
filename: FileAndPrintService.py
&lt;/p&gt;

&lt;p&gt;
(class)  SetSharePermissions
&lt;/p&gt;

&lt;p&gt;
addOptionValuePair, &lt;br&gt;
setGuestOk, &lt;br&gt;
setBrowseable, &lt;br&gt;
setSearchPath
&lt;/p&gt;

&lt;p&gt;
(class)  FileService(SetSharePermissions)&lt;br&gt;
 &lt;br&gt;
setReadOnly,  &lt;br&gt;
setWritable, &lt;br&gt;
setCreateMask, &lt;br&gt;
setDirectoryMask
&lt;/p&gt;

&lt;p&gt;
(class)  PrintService(SetSharePermissions)
&lt;/p&gt;

&lt;p&gt;
setPrintable, &lt;br&gt;
allowGuestToPrint
&lt;/p&gt;

&lt;p&gt;
filename: Accounts.py
&lt;/p&gt;

&lt;p&gt;
(class)  User&lt;br&gt;
setUserPassword
&lt;/p&gt;

&lt;p&gt;
(class)  UnixUser(User)&lt;br&gt;
(class  WindowsUser(User)&lt;br&gt;
(class)  SambaUser(User)
&lt;/p&gt;

&lt;p&gt;
(class)  UserAccounts&lt;br&gt;
listUnixUserAccounts &lt;br&gt;
 listSambaUserAccounts&lt;br&gt;
 checkAccountInSmbPasswd &lt;br&gt;
 addUnixAccount &lt;br&gt;
 addSambaAccount&lt;br&gt;
 delSambaAccount &lt;br&gt;
changeSmbPasswd&lt;br&gt;
 enableSMBaccount &lt;br&gt;
 disableSMBaccount &lt;br&gt;
addWindowsAccount
&lt;/p&gt;

&lt;b&gt; Amit Regmi &lt;/b&gt; 29th July 2005
&lt;/p&gt;</description>
  </item>
  <item>
    <title>Automatic Breakage Emails</title>
    <link>http://projects.samba.org/projects/2005/07/27#2005-07-27</link>
    <description>
&lt;p&gt;
An email that automatically emails a committer when something breaks would be nice.
&lt;/p&gt;

&lt;p&gt;
As tridge &lt;a href=&quot;http://lists.samba.org/archive/samba-technical/2005-July/042059.html&quot;&gt;said&lt;/a&gt;:
&lt;/p&gt;

&lt;quote&gt;

&lt;blockquote&gt;
&lt;ol&gt;
&lt;li&gt;add a system to the build farm where we email the committers of
&lt;/ol&gt;
   the broken patches when a host starts failing.
&lt;/p&gt;

&lt;p&gt;
There is some subtlety to (2). We'd need to use the oldrevs logic to&lt;br&gt;
work out which commits are candidates for having broken the&lt;br&gt;
build. This is bound to generate some false positives, but I think we&lt;br&gt;
can live with those.
&lt;/p&gt;

&lt;p&gt;
Anyone feel up to the challenge of doing this?
&lt;/blockquote&gt;

&lt;p&gt;
Vance
&lt;/p&gt;</description>
  </item>
  <item>
    <title>Python framework for samba management:</title>
    <link>http://projects.samba.org/projects/2005/07/24#23-jul-05</link>
    <description>
&lt;p&gt;
So far what has been done is the design of several classes which include a smb.conf parser (by Jerry).&lt;br&gt;
I have worked out 2 files &lt;br&gt;
	a)  make_smb_conf.py &lt;br&gt;
		Here we have a Server class and we decide what server we are to implement. Depending on 		option we generate a smb.conf file from scratch.&lt;br&gt;
	b)  smb_tools.py &lt;br&gt;
		Here we have methods that help us &lt;br&gt;
			- send message to machines on the network &lt;br&gt;
			- Check the available accounts in the samba database &lt;br&gt;
			- check the available unix user accounts &lt;br&gt;
			- add/modify/delete the user accounts (samba)&lt;br&gt;
			- refreshing the server&lt;br&gt;
    Observation is root acess is required to run many of the management tools.&lt;br&gt;
    So, I believe superusers are the people who would be most benifited in using the framework for the 	    management of samba.
&lt;/p&gt;

&lt;b&gt;Amit Regmi&lt;/b&gt;</description>
  </item>
  <item>
    <title>Sorting the Recent Build tables</title>
    <link>http://projects.samba.org/projects/2005/07/21#2005-07-21</link>
    <description>
&lt;p&gt;
I just added basic support to sort the table on &lt;a href=&quot;http://build.samba.org/?tree=samba4&amp;function=Recent+Builds&quot; title=&quot;Recent builds on farm&quot;&gt;Recent Builds&lt;/a&gt;, but it isn't anywhere near what I'd like.
&lt;/p&gt;

&lt;p&gt;
Ideally, I'd like to see a method you could call that looks like:
&lt;code&gt; &lt;br&gt;
$table = new Table(columns=&gt;[ qw/Age Revision Tree Platform Host Compiler Status/],&lt;br&gt;
 	           sorters=&gt;[ &quot;age&quot;, &quot;revision&quot; ]);&lt;br&gt;
	$table-&gt;add_row(util::dhm_time($age), $rev, $tree, $hosts{$host},&lt;br&gt;
                        $host, $compiler, $status);&lt;br&gt;
	$table-&gt;output();
&lt;/code&gt;

&lt;p&gt;
Vance
&lt;/p&gt;</description>
  </item>
  <item>
    <title>Print Migrator support now working in 3.0.20pre2</title>
    <link>http://projects.samba.org/projects/2005/07/21#2005-07-31</link>
    <description>
&lt;p&gt;
This was really a lot of work.  More so than I anticipated (spanned 4 months).  What we got out of it was the \svcctl pipe, the regfio library, write support on the winreg pipe including security checks, more privilege checks, and a talk at the upcoming &lt;a href=&quot;http://www.cifs2005.org/&quot;&gt;CIFS Conference&lt;/a&gt;.  I'll post a link to the slides here once they are done.
&lt;/p&gt;

&lt;p&gt;
Overall the printmig.exe work has spawned many other ideas such as the task scheduler work and the remote smb.conf registry interface.
&lt;/p&gt;

&lt;p&gt;
jerry
&lt;/p&gt;</description>
  </item>
  <item>
    <title>My new testing strategy</title>
    <link>http://projects.samba.org/projects/2005/07/21#2005-07-31</link>
    <description>
&lt;p&gt;
After the &lt;a href=&quot;/projects/samba3/printmig&quot;&gt;pain of getting printmig.exe&lt;/a&gt; to work against Samba, I've decided to just grab every unsupported tool from the resource kit and start poking at Samba.  My theory is that the reason these are unsupported tools is that they do really horrible things.  And doing really horrible things means using interfaces and rpcs that one would never suspect.
&lt;/p&gt;

&lt;p&gt;
So while usrmgr.exe doesn't really fall in the unsupported category.  it does fall into the &quot;poke at the server until everything works&quot; category.  There are a few known issues currently, mostly dealing with managing domain trusts.  I've already decoded the rpc structures in rpc_lsa.h, but have not implemented the server code to do anything yet.
&lt;/p&gt;

&lt;p&gt;
jerry
&lt;/p&gt;</description>
  </item>
  <item>
    <title>First thoughts on implementing the Task Scheduler</title>
    <link>http://projects.samba.org/projects/2005/07/21#2005-07-21</link>
    <description>
&lt;p&gt;
After the initial query to the Samba ml, I did some more research about how the task schedule actually works.  It's actually much different than I expected.  I guess since the scheduler icon was controlled by winreg queries, I thought the jobs would be stored in the registry as well.  The registry paths are used to detect the presence of the task scheduling agent on the remote host.  The actual jobs are simply stored as files.
&lt;/p&gt;

&lt;p&gt;
So I think this might map onto cron directories pretty well. For example, it I run a job as jerry, then the job script would be stored in ~jerry/cron and a crontab entry would be made in /var/spool/cron/jerry.  The interface with crontab needs a little more thought.  The other detail is to figure out the file format used to present the job properties dialog to Windows.  This is probably already decoded somewhere (similar to *lnk files or something).
&lt;/p&gt;

&lt;p&gt;
Jonathan Johnson sent me some more information:
&lt;/p&gt;

&lt;p&gt;
&quot;FYI/FWIW, on my Windows XP machine, the jobs in the local task scheduler are binary files located in the hidden folder %SYSTEMROOT%\Tasks\ with a filename extension of .job.
&lt;/p&gt;

&lt;p&gt;
This folder is one of those &quot;special&quot; folders that Windows Explorer displays differently. You can't copy files into or out of this folder using Explorer, nor can you view any files other than .job files. To copy into, out of, or list the contents of this folder, you're pretty much stuck with a command shell.
&lt;/p&gt;

&lt;p&gt;
To display the properties of a scheduled task, the library mstask.dll is used.  Some of the relevant registry keys (an incomplete list) used are:
&lt;/p&gt;

&lt;p&gt;
HKEY_CLASSES_ROOT\.job&lt;br&gt;
HKEY_CLASSES_ROOT\JobObject (Note, there are several other similarly named keys)&lt;br&gt;
HKEY_CLASSES_ROOT\CLSID\{148BD520-A2AB-11CE-B11F-00AA00530503}&lt;br&gt;
HKEY_CLASSES_ROOT\CLSID\{148BD52A-A2AB-11CE-B11F-00AA00530503}
&lt;/p&gt;

&lt;p&gt;
Also, you may find the command line interface to the task scheduler, schtasks.exe, useful. Documentation can be found &lt;a href=&quot;http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/schtasks.mspx&quot;&gt;here&lt;/a&gt;.&quot;
&lt;/p&gt;

&lt;p&gt;
jerry
&lt;/p&gt;</description>
  </item>
  <item>
    <title>Registry futures in Samba 3.0:</title>
    <link>http://projects.samba.org/projects/2005/07/19#jul18-05</link>
    <description>
&lt;p&gt;
I posted a few links to some ideas for making better use of the Registry API eariler today.
&lt;/p&gt;

&lt;ul&gt;
   &lt;li&gt;&lt;a href=&quot;http://lists.samba.org/archive/samba-technical/2005-July/041912.html&quot;&gt;Remote editing of smb.conf via registry calls&lt;/a&gt;&lt;/li&gt;
   &lt;li&gt;&lt;a href=&quot;http://lists.samba.org/archive/samba/2005-July/108456.html&quot;&gt;Implementing task scheduler for Samba 3&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
jerry
&lt;/p&gt;
</description>
  </item>
  </channel>
</rss>