2 samr rpc utility functions
3 Copyright Andrew Tridgell 2005
4 released under the GNU GPL version 3 or later
7 if (global["HAVE_SAMR_JS"] != undefined) {
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) {
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;
31 connect to the sam database
33 function samrConnect(conn)
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;
47 function samrClose(conn, handle)
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)
61 io.input.connect_handle = handle;
62 io.input.domain_name = domain;
63 var status = conn.samr_LookupDomain(io);
64 check_status_ok(status);
71 function samrOpenDomain(conn, handle, sid)
74 io.input.connect_handle = handle;
75 io.input.access_mask = conn.SEC_FLAG_MAXIMUM_ALLOWED;
77 var status = conn.samr_OpenDomain(io);
78 check_status_ok(status);
79 return io.output.domain_handle;
85 function samrOpenUser(conn, handle, rid)
88 io.input.domain_handle = handle;
89 io.input.access_mask = conn.SEC_FLAG_MAXIMUM_ALLOWED;
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)
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)
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)
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)
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;
167 samrClose(conn, user_handle);