r23177: Add in a new provision-backend script. This helps set up the OpenLDAP or...
[Samba.git] / source / scripting / libjs / samr.js
bloba7d7d964fb1682e7eb32e993cc7676248f129011
1 /*
2         samr rpc utility functions 
3         Copyright Andrew Tridgell 2005
4         released under the GNU GPL v2 or later
5 */      
7 if (global["HAVE_SAMR_JS"] != undefined) {
8    return;
10 HAVE_SAMR_JS=1
13   return a list of names and indexes from a samArray
15 function samArray(output)
17         var list = new Array(output.num_entries);
18         if (output.sam == NULL) {
19                 return list;
20         }
21         var i, entries = output.sam.entries;
22         for (i=0;i<output.num_entries;i++) {
23                 list[i] = new Object();
24                 list[i].name = entries[i].name;
25                 list[i].idx  = entries[i].idx;
26         }
27         return list;
31         connect to the sam database
33 function samrConnect(conn)
35         security_init(conn);
36         var io = irpcObj();
37         io.input.system_name = NULL;
38         io.input.access_mask = conn.SEC_FLAG_MAXIMUM_ALLOWED;
39         var status = conn.samr_Connect2(io);
40         check_status_ok(status);
41         return io.output.connect_handle;
45         close a handle
47 function samrClose(conn, handle)
49         var io = irpcObj();
50         io.input.handle = handle;
51         var status = conn.samr_Close(io);
52         check_status_ok(status);
56    get the sid for a domain
58 function samrLookupDomain(conn, handle, domain)
60         var io = irpcObj();
61         io.input.connect_handle = handle;
62         io.input.domain_name = domain;
63         var status = conn.samr_LookupDomain(io);
64         check_status_ok(status);
65         return io.output.sid;
69   open a domain by sid
71 function samrOpenDomain(conn, handle, sid)
73         var io = irpcObj();
74         io.input.connect_handle = handle;
75         io.input.access_mask = conn.SEC_FLAG_MAXIMUM_ALLOWED;
76         io.input.sid = sid;
77         var status = conn.samr_OpenDomain(io);
78         check_status_ok(status);
79         return io.output.domain_handle;
83   open a user by rid
85 function samrOpenUser(conn, handle, rid)
87         var io = irpcObj();
88         io.input.domain_handle = handle;
89         io.input.access_mask = conn.SEC_FLAG_MAXIMUM_ALLOWED;
90         io.input.rid = rid;
91         var status = conn.samr_OpenUser(io);
92         check_status_ok(status);
93         return io.output.user_handle;
97   return a list of all users
99 function samrEnumDomainUsers(conn, dom_handle)
101         var io = irpcObj();
102         io.input.domain_handle = dom_handle;
103         io.input.resume_handle = 0;
104         io.input.acct_flags = 0;
105         io.input.max_size = -1;
106         var status = conn.samr_EnumDomainUsers(io);
107         check_status_ok(status);
108         return samArray(io.output);
112   return a list of all groups
114 function samrEnumDomainGroups(conn, dom_handle)
116         var io = irpcObj();
117         io.input.domain_handle = dom_handle;
118         io.input.resume_handle = 0;
119         io.input.acct_flags = 0;
120         io.input.max_size = -1;
121         var status = conn.samr_EnumDomainGroups(io);
122         check_status_ok(status);
123         return samArray(io.output);
127   return a list of domains
129 function samrEnumDomains(conn, handle)
131         var io = irpcObj();
132         io.input.connect_handle = handle;
133         io.input.resume_handle = 0;
134         io.input.buf_size = -1;
135         var status = conn.samr_EnumDomains(io);
136         check_status_ok(status);
137         return samArray(io.output);
141   return information about a user
143 function samrQueryUserInfo(conn, user_handle, level)
145         var r, io = irpcObj();
146         io.input.user_handle = user_handle;
147         io.input.level = level;
148         var status = conn.samr_QueryUserInfo(io);
149         check_status_ok(status);
150         return io.output.info.info3;
155   fill a user array with user information from samrQueryUserInfo
157 function samrFillUserInfo(conn, dom_handle, users, level)
159         var i;
160         for (i=0;i<users.length;i++) {
161                 var r, user_handle, info;
162                 user_handle = samrOpenUser(conn, dom_handle, users[i].idx);
163                 info = samrQueryUserInfo(conn, user_handle, level);
164                 info.name = users[i].name;
165                 info.idx  = users[i].idx;
166                 users[i] = info;
167                 samrClose(conn, user_handle);
168         }