Intranet/Hosting Toolkit | [table of contents]

`v2.6 November 30th 2001` | CFX_Groups OPEN-SOURCE NT DLL for Cold Fusion 4.0.1 and up Lewis A. Sellers http://www.intrafoundation.com/ihtk.asp products@intrafoundation.com

FOREWORD This is an Allaire Cold Fusion Extension Tag (CFX). It is for use with Allaire Cold Fusion Servers 4.0.1 (and up) running on Microsoft NT. It was written by Lewis A. Sellers of Intrafoundation Software. CFX_Groups provides a functionality similar to NT's administrative tool "User Manager for Domains": With it you can create, delete, modify or copy any NT user account You also have control over the local and domain groups which the user may be a member of. There are also additional "support" functions available which include, among other things, browsing the list of currently logged in users, listing domain controllers and servers, etc. Please read the version history for current tag status before emailing questions. | C O N T E N T S `Foreword` General Groups Members `Version History`

`top`

## G E N E R A L

### ABOUT

<CFX_Groups ACTION="ABOUT">

The tag itself returns a couple variables back no matter what you do (GroupsDescription, GroupsVersion and GroupsError). These are always available unless there is a catastrophic failure of the tag.

Additionally you can use the ABOUT function to return more detailed information on the tag. The fields returned are mostly only of interest for curiosity or in debugging a situation.

Note below that though the tag returns it's SerialNumber, it's not used currently, and hasn't been for a very long time, but probably will be again soon.

For the curious, it also proves the total number of lines of c/c++ that the current build was using. This includes the scant comments in the source code. For instance, this build of the tag has 2186 lines of code.

Description
  The general product description.
Version
  The version number of the software, ie 2.0.
Quality

  The quality field will be one of the following four: "Alpha", "Beta", "Gamma" or "Omega". Quality relates the quality control status of the version of the tag you're currently using.

  Alpha code is highly unstable and shouldn't be trusted for anything. Do not use on production machines.

  Beta code is close to being finish and it is in a debugging phase. Do not use on production machines.

  Gamma code is for use on production machines. As far as the beta testers have determined it works as it should.

  When a product goes Omega that generally means it is long used Gamma code that is now no longer being maintained.

SubVersion
  The subversion number of the software, ie 4 for "2.0beta4".
SerialNumber
  Currently unused.
Lines
  The total lines of c/c++ code in the software.
BuildDate
  The ODBC DATETIME when the tag was last compiled (built).
Evaluation
  Boolean field (0 or 1). 1 indicates the version of the tag you're using is a time-limited evaluation version. 0 is full commercial.
ExpirationDate
  The ODBC DATETIME date when the tag will stop working.

`top`

## G R O U P S

There are (as of Windows 2000) three group types:

- Domain Local (or Local)
- Global
- Universal

Universal is specific to either W2K or NT4 with ADSI installed. It is of limited use, though currently supported, in part, through this tag. Mainly you'll be interested in the Global and Local group types, or, as Windows and these tags call it, group scopes.

Additionally, there are two "types" for these groups:

- Security
- Distribution

Security is the default. It was in fact the only type of domain group under NT4 and previous. It allows NT security to be enforced on all it's members.

Distribution is a Windows 2000 addition that is simplier in that it does not have security checks made against it. This makes it faster and more efficient to use for simple groupings of persons for, say, contact lists, etc. They are otherwise useless and should be avoided.

### GROUPS

#### <CFX_Groups ACTION="GROUPS">

FIELDS
Domain | string
Computer | string
Group | string
Description | string

OPTIONAL
Domain | string
Query | string
Type | string

REQUIRED
Action | GROUPS
Scope | string

Lists all groups. Scope can be "Local", "Global" or "Universal". Type can be "Security" or "Distribution". If type is not specified, "Security" is assumed.

### ADD

#### <CFX_Groups ACTION="Add">

OPTIONAL
Domain | string
Computer | string
Type | string

REQUIRED
Action | ADD
Scope | string
Group | string

Adds a group to the specified scope. Scope can be "Local", "Global" or "Universal".

### DELETE

#### <CFX_Groups ACTION="Delete">

OPTIONAL
Domain | string
Computer | string
Type | string

REQUIRED
Action | DELETE
Scope | string
Group | string

Deletes a group from the specified scope. Scope can be "Local", "Global" or "Universal".

`top`

## M E M B E R S

### MEMBERS

#### <CFX_Groups ACTION="Members">

FIELDS
Member | string

OPTIONAL
Domain | string
Computer | string
Query | string
Type | string

REQUIRED
Action | ADD
Scope | string
Group | string

Lists all members in a group. Scope can be "Local", "Global" or "Universal".

### ADDMEMBER

#### <CFX_Groups ACTION="AddMember">

OPTIONAL
Domain | string
Computer | string
Type | string

REQUIRED
Action | ADDMEMBER
Scope | string
Group | string
User | string

Adds a member to group. Scope can be "Local", "Global" or "Universal".

### REMOVEMEMBER

#### <CFX_Groups ACTION="RemoveMember">

OPTIONAL
Domain | string
Computer | string
Type | string

REQUIRED
Action | REMOVEMEMBER
Group | string
Scope | string
User | string

Removes a member from group. Scope can be "Local", "Global" or "Universal".

`top`

## VERSION HISTORY

- 2.5 January 3rd 2001.

  Added IHTKPASSWORD. Upgraded reporting code.

- 2.4 September 19th 2000.

  Upgraded error reporting code to v1.2.

- 2.3 August 31st, September 11th 2000.

  NEW TAG: CFX_Groups. CFX_UserManager is obsoleted. Split it into two. Group functions strike out on thier own as CFX_Groups (part moves into CFX_Users and rest taken over by CFX_NetworkTopology ).

- 2.2 August 1st 2000.

  - misc
  - Added domains function.
- 2.1 June 30, July 4 2000.

  - Got rid of the photographs. Was taking too long to CFMAIL the software.
  - Added GETPRIMARYGROUP
  - Apparently don't mention explictly which functions return SQL queries and when they return to Groups. Fixed.
- 2.0 June 18, 25-26, 27, 28 2000.

  - Ripped all shares/network drives/permissions functionality out and moved it to it's own tag: CFX_NFS.
  - Rewrote/polished the docs.
  - Added some photography to break up the layout of the documentation page.
  - Removed PRIVILEGES from ADD. Is now ignored in ADDs.
  - Changed ENUM to USERS.
  - Added USERSQUICK
  - Added SID to USERS and GETINFO.
  - Added DOMAIN parm to SERVERS. (duh. How'd I forget that? And why'd no one mention it before?)
  - In general removed a lot of useless fields and cleaned up various functions. More than I feel like documenting.
  - Lost all the code to CFX_UserManager when the power flickered while saving. Fortunately God in his infinite wisdom made CDRWs. Had to rewrite the two days of lost code.
  - Added COPY
  - Added SETPRIMARYGROUP
  - Got sick of looking at it. Released it.

  No doubt there will be a 2.1 in a few weeks to squash any remaining bugs. Should have spent another week or two debugging, but been working on this off and on for a couple months and just wanted to get it done and out of the way at the moment. If there's a problem -- just tell me.

- 2.0beta (aka, The Blue Version). April 1 & May 11, 16-19 & May 29-June 2, June 13-15. 2000 Anno Dominus.
  Good Morning. This is the first new production release since 1.12. It is MAJOR revision.
  The name has been changed to UserManager Suite (as that's what some people had started referring to it as in their emails anyway). It's now bundled with: CFX_GetUserGroups and newcomer CFX_IIS. It now requires either NT 4 with ADSI installed or Windows 2000.

  There have been many additional changes, including, but not limited to:

  - Fixed GETINFO lastlogon/lastlogoff to pad with 0's for 4 & 2 digit decimal formats
  - Fixed SETINFO acctexpires bug
  - Changed SETINFO acctexpires to use -1 for unlimited instead of having to use 1970-01-01 00:00:00 (which is what NT considers unlimited)
  - SETUSERINFO MAXSTORAGE has been obsoleted/removed. GETUSERINFO supports your legacy code by always returning "-1" for this field.
  - Added THISSERVER function.
  - Added LOCALDRIVES function.
  - Changed ENUM function name to USERS.
  - Added SHARES, SHAREADD, SHAREDELETE (folder shares)
  - Added NETWORKDRIVES, MAPNETWORKDRIVES, DISCONNECTNETWORKDRIVE (mapped network drives)
  - Deprecated VERIFY
  - Added PERMISSIONS, PERMISSIONGRANT, PERMISSIONDENY, PERMISSIONREVOKE (NTFS folder permissions (ACLs))
  - Added VALIDATE (supercedes VERIFY)
  - Added ISLOGGEDIN user function
  - Changed to allow plural or singular parameters for some functions, ie LOCALGROUP and LOCALGROUPS.
  - Improved various error description reporting.
  - Rewrote docs
  - Reworked tests
  - Added USEREXISTS
  - fixed serious SETGROUPS memory bug

  Yes if you bought a copy back with version 1.x you get free 2.x upgrades (whether you want them or not).

  Sorry about the long delay between 1.12 and 2.0. The work was a lot more involved than anticpiated.

  Big thanks to Felix Kasza at mvps.org for all the useful reference material (I was going back to their site so much this week I finally just said "what the hell" and had a program make a mirror copy of their website which I then burned to cdr). The Microsoft API docs straight-out lie in many places and there seem to be very few places or people who know how to work around these API issues.

  NOTE: 2.0beta brought to you a THINK! power bar. Better than heroin. :-) There have been several betas (2.0beta1, 2.0beta2, 2.0beta3 and 2.0beta4, etc). Beta3 and up were public. Beta4 was the first wide-beta. Beta5 was the last beta before the final (almost). Beta6 actually was the last.

- 1.15alpha. March 7 2000. This was almost the first production release since 1.12. (Versions 1.13 and 1.14 were evaluation/beta only releases.) CFX_GetUserGroups is now bundled with it's big brother. Drives, Shares and Permissions/ACL features are almost finally available. Now 3388 lines of code (close to double of 1.12). ( THIS IS A TEMP RELEASE BECAUSE OF ALL THE PESKY EMAIL WANTING A NEW EVALUATION RELEASE TO BE POSTED. :-) THE OLD FULL 1.12 IS STILL THE CURRENT OFFICIAL PRODUCTION RELEASE. IT'S GOING TO STAY THAT WAY UNTIL I HAVE A FULL 3 OR 4 DAYS TO FINISH THE TAG. DO NOT EXPECT ANYTHING TO DO WITH ACL/PERMISSIONS, SHARES, OR MAPPED DRIVES TO WORK YET. )
- 1.14. Jan 29 2000. Explore VERIFY on non-local server issues. Revise docs. Begin internal mods for possible addition of attrib/share/acl functionality to tag (allows managing of NTFS folders corresponding to users/groups) -- undocumented. Added BLANKPASSWORD="Yes" arg for ADD function as per request (Richard).
  This has been a bad week for anyone wanting a new eval version of the tag. In the middle of what was to be a major upgrade for 1.14 and my old PDC server dies (alright, I was swapping out what I thought was a bad power supply and it took it's revenge and electrically damaged/tainted most of the hardware in the box.) This leaves me in a bit of a position as releasing a new 1.14 eval. So 1.14 is a special build only for people looking for a new evaluation version. Don't use it in production. I've not got a new PDC server so it's not been re-tested yet. Eval release only (full 1.12 is still available in both executable and source.) Wait for 1.15 for new features. Released as "1.14 - Feb 15 2000 (Special Release - Not For Production Servers)".
- 1.13. Jan 13 2000. r&d; for a bug report. False, but misc. cleanups & document clarifications. Not released.
- 1.12. Dec 27 1999. NEW FUNCTION "VERIFY": You can now verify a user account by User/password. New evaluation version that expires Feb 7th 2000. Happy Yoshushua Mass and 2005 Anno Dominus. /-)
- 1.11 Nov 3-6. Several misc. changes. probably the last revision for a few months. Two issues addressed were:
  - ADD would not always add the specified LOCALGROUPS. For a while I thought this was only happening on Trisha's computer. However, once I started getting in to the code this afternoon (which was some of the oldest in the tag) I realized it probably hadn't been working at all for a while. My current tests just weren't showing it. Rewrote the code. Fixed as far the slightly tweaked tests will verify.
  - There was a report of the tag not functioning if QUERY was not present. So far only one report. Looked at the code. Nothing obvious. Presumably a CString issue. Hmm. The workaround would seem to simply be to specify the QUERY tag in every instance.
  I think the tag needs a few more confidence tests. If you've written any of your own, send them in.
- 1.10 Nov 3. Not released.
- 1.9 Oct 31 1999, that night. Changed the docs. Especially the part about how to register. :) misc..
- 1.8 Oct 29 1999. ADD. misc. New "y2k" evaluation version expires Dec 31 1999 (eval's are generally released a week or two after the last expires.) (Note: Technically it's already been the 3rd millennium for 5 years, but that's a long story.)
- 1.7 Oct 26 1999. Our unofficial bug-hunter for October, Trisha Prothro, noticed more bad behavior with ADD. 2126 lines.
- 1.6 Oct 23 1999. Fixed sticky QUERY. Fixed ADD problem with FLAGS for Trisha. misc.
- 1.5 Oct 6 1999. Craig Davis noticed some problems setting up shared network drives. Oops. You _could_ (barely) but there was no documentation and neither did GETINFO retrieve the associated info. ADD, SETINFO, and GETINFO underwent recoding. All "tests" changed. Most changes since 1.0. Probably some new bugs introduced that will need to be squashed in 1.6. A few clarifications in the docs (this page). 2089 lines of c/c++ code. I'm a little leery of 1.5 here as it was rapid, involving more than minor recoding but only verifying through the standard confidence tests. Seems to work. Hmm....
- 1.4 Oct 4. Minor Doc and bug tweaks based on some user feedback. New confidence tests.
- 1.3 Oct 2. Doc and bug fix. New eval on-line.
- 1.2 Oct 1. Doc and bug fix.
- Oct 1. New Oct 31 1999 expiring eval passed out to a few people caught off guard by the original.
- 1.1 august 29th. a few quick changes. new QUERY variable feature. a date-limited evaluation version is released. more verbose error messages.
- 1.0 august 10-14th (intermittent) 1999. like a beta out of hell. no feedback for the last few days. either no more bugs, or no one cares. Either way... We're a gamma release now. Have fun. Send feedback. As for the rest "God only knows... Colour fades away..."
- 0.13beta august 4th 1999. during an acid flash-back God told me to set a freon bug free, free, free, so I did. as God commanded.*
- 0.12beta july 29 1999. bugs, bugs everywhere and not a drop to drink. morning bug hunt. close to gamma. most non-group issues resolved. Price increased. Personally I believe in making software so cheap you don't even have to think about it before you buy. You just buy. Perhaps even if you don't need it. (What do I care if you use it or not?) Thus, you probably won't see another price increase anytime soon. Also, features are essentially locked now. Only optimizing code, removing bugs, and tweaking features will be addressed from now on out.
- 0.11beta july 27 1999. early morning squish-party for setinfo/getinfo, etc. mull price increase.
- 0.10beta july 26 1999. bug hunt in RAH powered-suits. added the simple serialno func (re: Allaire tag gallery)
- 0.9beta july 26 1999. same as .8 but forgot to pack the .8dll in the zip files sent out /-)
- 0.8beta july 25 1999. 2049 lines of code (submit to Allaire tag gallery)
- 0.7beta july 22 1999. (john-john and the sea day) 1900 lines of c/c++ code
- 0.6beta (pdc & large domain testing)
- 0.5beta July 21 1999. "Now I know why few people have ever tried to write such a tag before. Maybe I should charge more. /-)"
- 0.4alpha
- 0.3alpha (private-only release)
- 0.2alpha
- 0.1alpha (first public release)
- 0.0alpha This tag started out to service a need within a Web Hosting and Intranet project. It's primary use still is intranet-centric.

`top`
`f i n i`
`-{ts '2001-12-03 03:35:34'} /ihtkdocs/Groups/index.cfm-`