~ubuntu-branches/ubuntu/oneiric/likewise-open/oneiric

« back to all changes in this revision

Viewing changes to lsass/server/auth-providers/DomainManager/providermain.c

  • Committer: Bazaar Package Importer
  • Author(s): Scott Salley
  • Date: 2010-11-22 12:06:00 UTC
  • mfrom: (1.1.6 upstream)
  • Revision ID: james.westby@ubuntu.com-20101122120600-8lba1fpceot71wlb
Tags: 6.0.0.53010-1
Likewise Open 6.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/* Editor Settings: expandtabs and use 4 spaces for indentation
2
 
 * ex: set softtabstop=4 tabstop=8 expandtab shiftwidth=4: *
3
 
 */
4
 
 
5
 
/*
6
 
 * Copyright Likewise Software    2004-2008
7
 
 * All rights reserved.
8
 
 *
9
 
 * This program is free software; you can redistribute it and/or modify
10
 
 * it under the terms of the GNU General Public License as published by
11
 
 * the Free Software Foundation; either version 2 of the License, or (at
12
 
 * your option) any later version.
13
 
 *
14
 
 * This program is distributed in the hope that it will be useful, but
15
 
 * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
16
 
 * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
17
 
 * for more details.  You should have received a copy of the GNU General
18
 
 * Public License along with this program.  If not, see
19
 
 * <http://www.gnu.org/licenses/>.
20
 
 *
21
 
 * LIKEWISE SOFTWARE MAKES THIS SOFTWARE AVAILABLE UNDER OTHER LICENSING
22
 
 * TERMS AS WELL.  IF YOU HAVE ENTERED INTO A SEPARATE LICENSE AGREEMENT
23
 
 * WITH LIKEWISE SOFTWARE, THEN YOU MAY ELECT TO USE THE SOFTWARE UNDER THE
24
 
 * TERMS OF THAT SOFTWARE LICENSE AGREEMENT INSTEAD OF THE TERMS OF THE GNU
25
 
 * GENERAL PUBLIC LICENSE, NOTWITHSTANDING THE ABOVE NOTICE.  IF YOU
26
 
 * HAVE QUESTIONS, OR WISH TO REQUEST A COPY OF THE ALTERNATE LICENSING
27
 
 * TERMS OFFERED BY LIKEWISE SOFTWARE, PLEASE CONTACT LIKEWISE SOFTWARE AT
28
 
 * license@likewisesoftware.com
29
 
 */
30
 
 
31
 
/*
32
 
 * Copyright (C) Likewise Software. All rights reserved.
33
 
 *
34
 
 * Module Name:
35
 
 *
36
 
 *        provider-main.c
37
 
 *
38
 
 * Abstract:
39
 
 *
40
 
 *        Likewise Security and Authentication Subsystem (LSASS)
41
 
 *
42
 
 *        Active Directory Authentication Provider
43
 
 *
44
 
 * Authors: Krishna Ganugapati (krishnag@likewisesoftware.com)
45
 
 *          Sriram Nambakam (snambakam@likewisesoftware.com)
46
 
 *          Wei Fu (wfu@likewisesoftware.com)
47
 
 *          Brian Dunstan (bdunstan@likewisesoftware.com)
48
 
 *          Kyle Stemen (kstemen@likewisesoftware.com)
49
 
 */
50
 
 
51
 
#include "adprovider.h"
52
 
 
53
 
 
54
 
 
55
 
DWORD
56
 
LSA_INITIALIZE_PROVIDER(ad)(
57
 
    PSTR* ppszProviderName,
58
 
    PLSA_PROVIDER_FUNCTION_TABLE* ppFunctionTable
59
 
    )
60
 
{
61
 
    *ppFunctionTable = &gADProviderAPITable;
62
 
    *ppszProviderName = gpszADProviderName;
63
 
 
64
 
cleanup:
65
 
 
66
 
 
67
 
    return dwError;
68
 
 
69
 
error:
70
 
 
71
 
    *ppszProviderName = NULL;
72
 
    *ppFunctionTable = NULL;
73
 
 
74
 
    goto cleanup;
75
 
}
76
 
 
77
 
 
78
 
DWORD
79
 
LSA_SHUTDOWN_PROVIDER(ad)(
80
 
    PSTR pszProviderName,
81
 
    PLSA_PROVIDER_FUNCTION_TABLE pFnTable
82
 
    )
83
 
{
84
 
    DWORD dwError = 0;
85
 
    return dwError;
86
 
}
87
 
 
88
 
 
89
 
DWORD
90
 
ActiveDirectoryOpenHandle(
91
 
    uid_t   uid,
92
 
    gid_t   gid,
93
 
    pid_t   pid,
94
 
    PHANDLE phProvider
95
 
    )
96
 
{
97
 
    DWORD dwError = 0;
98
 
    PADPROVIDER_CONTEXT pContext = NULL;
99
 
 
100
 
    dwError = LwAllocateMemory(
101
 
                    sizeof(ADPROVIDER_CONTEXT),
102
 
                    (PVOID*)&pContext);
103
 
    BAIL_ON_LSA_ERROR(dwError);
104
 
 
105
 
    pContext->uid = uid;
106
 
    pContext->gid = gid;
107
 
    pContext->pid = pid;
108
 
 
109
 
    *phProvider = (HANDLE)pContext;
110
 
 
111
 
cleanup:
112
 
 
113
 
    return dwError;
114
 
 
115
 
error:
116
 
 
117
 
    *phProvider = (HANDLE)NULL;
118
 
 
119
 
    if (pContext) {
120
 
        ADCloseHandle((HANDLE)pContext);
121
 
    }
122
 
 
123
 
    goto cleanup;
124
 
}
125
 
 
126
 
void
127
 
ActiveDirectoryCloseHandle(
128
 
    HANDLE hProvider
129
 
    )
130
 
{
131
 
    PADPROVIDER_CONTEXT pContext = (PADPROVIDER_CONTEXT)hProvider;
132
 
    if (pContext)
133
 
    {
134
 
        LwFreeMemory(pContext);
135
 
    }
136
 
}
137
 
 
138
 
BOOLEAN
139
 
ActiveDirectoryServicesDomain(
140
 
    PWSTR pszDomain
141
 
    )
142
 
{
143
 
    BOOLEAN bResult = FALSE;
144
 
 
145
 
    return bResult;
146
 
}
147
 
 
148
 
DWORD
149
 
ActiveDirectoryAuthenticateUser(
150
 
    HANDLE hProvider,
151
 
    PWSTR  pszLoginId,
152
 
    PWSTR  pszPassword
153
 
    )
154
 
{
155
 
 
156
 
    return dwError;
157
 
}
158
 
 
159
 
DWORD
160
 
ActiveDirectoryAuthenticateUserEx(
161
 
    HANDLE hProvider,
162
 
    PLSA_AUTH_USER_PARAMS pUserParams,
163
 
    PLSA_AUTH_USER_INFO *ppUserInfo
164
 
    )
165
 
{
166
 
}
167
 
 
168
 
DWORD
169
 
ActiveDirectoryValidateUser(
170
 
    HANDLE hProvider,
171
 
    PWSTR  pszLoginId,
172
 
    PWSTR  pszPassword
173
 
    )
174
 
{
175
 
    return dwError;
176
 
 
177
 
}
178
 
 
179
 
 
180
 
DWORD
181
 
ActiveDirectoryCheckUserInList(
182
 
    HANDLE hProvider,
183
 
    PWSTR  pszUserName,
184
 
    PWSTR  pszListName
185
 
    )
186
 
{
187
 
    DWORD  dwError = 0;
188
 
 
189
 
    return dwError;
190
 
 
191
 
}
192
 
 
193
 
DWORD
194
 
ActiveDirectoryFindUserByName(
195
 
    HANDLE  hProvider,
196
 
    PWSTR   pszLoginId,
197
 
    DWORD   dwUserInfoLevel,
198
 
    PVOID*  ppUserInfo
199
 
    )
200
 
{
201
 
    DWORD   dwError = 0;
202
 
 
203
 
    return dwError;
204
 
}
205
 
 
206
 
DWORD
207
 
ActiveDirectoryFindUserById(
208
 
    HANDLE  hProvider,
209
 
    uid_t   uid,
210
 
    DWORD   dwUserInfoLevel,
211
 
    PVOID*  ppUserInfo
212
 
    )
213
 
{
214
 
    DWORD   dwError = 0;
215
 
 
216
 
    dwError = ADFindUserById(
217
 
                    hProvider,
218
 
                    uid,
219
 
                    &pLsaSecurityObject
220
 
                    );
221
 
    BAIL_ON_ERROR(dwError);
222
 
 
223
 
    dwError = ConvertLsaSecurityObjectToInfoLevel(
224
 
                    dwUserInfoLevel,
225
 
                    pLsaSecurityObject,
226
 
                    ppUserInfo
227
 
                    );
228
 
    BAIL_ON_ERROR(dwError);
229
 
 
230
 
cleanup:
231
 
 
232
 
    if (pLsaSecurityObject) {
233
 
 
234
 
        LsaFreeSecurityObject(pLsaSecurityObject);
235
 
    }
236
 
 
237
 
error:
238
 
 
239
 
    return dwError;
240
 
}
241
 
 
242
 
DWORD
243
 
ActiveDirectoryBeginEnumUsers(
244
 
    HANDLE  hProvider,
245
 
    DWORD   dwInfoLevel,
246
 
    LSA_FIND_FLAGS FindFlags,
247
 
    PHANDLE phResume
248
 
    )
249
 
{
250
 
 
251
 
}
252
 
 
253
 
DWORD
254
 
ActiveDirectoryEnumUsers(
255
 
    HANDLE  hProvider,
256
 
    HANDLE  hResume,
257
 
    DWORD   dwMaxNumUsers,
258
 
    PDWORD  pdwUsersFound,
259
 
    PVOID** pppUserInfoList
260
 
    )
261
 
{
262
 
    DWORD dwError = 0;
263
 
 
264
 
        return dwError;
265
 
}
266
 
 
267
 
VOID
268
 
ActiveDirectoryEndEnumUsers(
269
 
    HANDLE hProvider,
270
 
    HANDLE hResume
271
 
    )
272
 
{
273
 
    return;
274
 
}
275
 
 
276
 
 
277
 
DWORD
278
 
ActiveDirectoryFindGroupByName(
279
 
    IN HANDLE hProvider,
280
 
    IN PWSTR pszGroupName,
281
 
    IN LSA_FIND_FLAGS FindFlags,
282
 
    IN DWORD dwGroupInfoLevel,
283
 
    OUT PVOID* ppGroupInfo
284
 
    )
285
 
{
286
 
    DWORD dwError = 0;
287
 
 
288
 
    return dwError;
289
 
}
290
 
 
291
 
 
292
 
static
293
 
DWORD
294
 
ActiveDirectoryGetExpandedGroupUsersEx(
295
 
    IN HANDLE hProvider,
296
 
    IN PWSTR pszDomainName,
297
 
    IN BOOLEAN bIsOffline,
298
 
    IN PWSTR pszGroupSid,
299
 
    IN BOOLEAN bIsCacheOnlyMode,
300
 
    IN DWORD dwMaxDepth,
301
 
    OUT PBOOLEAN pbIsFullyExpanded,
302
 
    OUT size_t* psMemberUsersCount,
303
 
    OUT PLSA_SECURITY_OBJECT** pppMemberUsers
304
 
    )
305
 
{
306
 
    DWORD dwError = LW_ERROR_SUCCESS;
307
 
 
308
 
    return dwError;
309
 
}
310
 
DWORD
311
 
ActiveDirectoryFindGroupById(
312
 
    IN HANDLE hProvider,
313
 
    IN gid_t gid,
314
 
    IN LSA_FIND_FLAGS FindFlags,
315
 
    IN DWORD dwGroupInfoLevel,
316
 
    OUT PVOID* ppGroupInfo
317
 
    )
318
 
{
319
 
    DWORD dwError = 0;
320
 
 
321
 
    return dwError;
322
 
}
323
 
 
324
 
 
325
 
DWORD
326
 
ActiveDirectoryGetUserGroupObjectMembership(
327
 
    IN HANDLE hProvider,
328
 
    IN PLSA_SECURITY_OBJECT pUserInfo,
329
 
    IN BOOLEAN bIsCacheOnlyMode,
330
 
    OUT size_t* psNumGroupsFound,
331
 
    OUT PLSA_SECURITY_OBJECT** pppResult
332
 
    )
333
 
{
334
 
    DWORD dwError = 0;
335
 
 
336
 
    return dwError;
337
 
}
338
 
 
339
 
DWORD
340
 
ActiveDirectoryGetGroupsForUser(
341
 
    IN HANDLE hProvider,
342
 
    IN OPTIONAL PWSTR pszUserName,
343
 
    IN OPTIONAL uid_t uid,
344
 
    IN LSA_FIND_FLAGS FindFlags,
345
 
    IN DWORD dwGroupInfoLevel,
346
 
    IN PDWORD pdwNumGroupsFound,
347
 
    IN PVOID** pppGroupInfoList
348
 
    )
349
 
{
350
 
        DWORD dwError = 0;
351
 
 
352
 
        return dwError;
353
 
}
354
 
 
355
 
DWORD
356
 
ActiveDirectoryBeginEnumGroups(
357
 
    HANDLE  hProvider,
358
 
    DWORD   dwInfoLevel,
359
 
    BOOLEAN bCheckGroupMembersOnline,
360
 
    LSA_FIND_FLAGS FindFlags,
361
 
    PHANDLE phResume
362
 
    )
363
 
{
364
 
        DWORD dwError = 0;
365
 
 
366
 
        return dwError;
367
 
}
368
 
 
369
 
DWORD
370
 
ActiveDirectoryEnumGroups(
371
 
    HANDLE  hProvider,
372
 
    HANDLE  hResume,
373
 
    DWORD   dwMaxGroups,
374
 
    PDWORD  pdwGroupsFound,
375
 
    PVOID** pppGroupInfoList
376
 
    )
377
 
{
378
 
    DWORD dwError = 0;
379
 
 
380
 
    return dwError;
381
 
}
382
 
 
383
 
VOID
384
 
ActiveDirectoryEndEnumGroups(
385
 
    HANDLE hProvider,
386
 
    HANDLE hResume
387
 
    )
388
 
{
389
 
        return;
390
 
}
391
 
 
392
 
DWORD
393
 
ActiveDirectoryChangePassword(
394
 
    HANDLE hProvider,
395
 
    PWSTR pszLoginId,
396
 
    PWSTR pszPassword,
397
 
    PWSTR pszOldPassword
398
 
    )
399
 
{
400
 
    DWORD dwError = 0;
401
 
 
402
 
    return dwError;
403
 
}
404
 
 
405
 
DWORD
406
 
ActiveDirectorySetPassword(
407
 
    HANDLE hProvider,
408
 
    PWSTR pszLoginId,
409
 
    PWSTR pszPassword
410
 
    )
411
 
{
412
 
    return LW_ERROR_NOT_HANDLED;
413
 
}
414
 
 
415
 
 
416
 
DWORD
417
 
ActiveDirectoryAddUser(
418
 
    HANDLE hProvider,
419
 
    DWORD  dwUserInfoLevel,
420
 
    PVOID  pUserInfo
421
 
    )
422
 
{
423
 
    return LW_ERROR_NOT_HANDLED;
424
 
}
425
 
 
426
 
DWORD
427
 
ActiveDirectoryModifyUser(
428
 
    HANDLE hProvider,
429
 
    PLSA_USER_MOD_INFO pUserModInfo
430
 
    )
431
 
{
432
 
    return LW_ERROR_NOT_HANDLED;
433
 
}
434
 
 
435
 
DWORD
436
 
ActiveDirectoryDeleteUser(
437
 
    HANDLE hProvider,
438
 
    uid_t  uid
439
 
    )
440
 
{
441
 
    return LW_ERROR_NOT_HANDLED;
442
 
}
443
 
 
444
 
DWORD
445
 
ActiveDirectoryAddGroup(
446
 
    HANDLE hProvider,
447
 
    DWORD dwGroupInfoLevel,
448
 
    PVOID pGroupInfo
449
 
    )
450
 
{
451
 
    return LW_ERROR_NOT_HANDLED;
452
 
}
453
 
 
454
 
DWORD
455
 
ActiveDirectoryModifyGroup(
456
 
    HANDLE hProvider,
457
 
    PLSA_GROUP_MOD_INFO pGroupModInfo
458
 
    )
459
 
{
460
 
    return LW_ERROR_NOT_HANDLED;
461
 
}
462
 
 
463
 
DWORD
464
 
ActiveDirectoryDeleteGroup(
465
 
    HANDLE hProvider,
466
 
    gid_t  gid
467
 
    )
468
 
{
469
 
    return LW_ERROR_NOT_HANDLED;
470
 
}
471
 
 
472
 
DWORD
473
 
ActiveDirectoryOpenSession(
474
 
    HANDLE hProvider,
475
 
    PWSTR  pszLoginId
476
 
    )
477
 
{
478
 
    DWORD dwError = 0;
479
 
}
480
 
 
481
 
DWORD
482
 
ActiveDirectoryCloseSession(
483
 
    HANDLE hProvider,
484
 
    PWSTR  pszLoginId
485
 
    )
486
 
{
487
 
    DWORD dwError = 0;
488
 
 
489
 
    return dwError;
490
 
}
491
 
 
492
 
DWORD
493
 
ActiveDirectoryGetNamesBySidList(
494
 
    HANDLE          hProvider,
495
 
    size_t          sCount,
496
 
    PSTR*           ppszSidList,
497
 
    PSTR**          pppszDomainNames,
498
 
    PSTR**          pppszSamAccounts,
499
 
    ADAccountType** ppTypes
500
 
    )
501
 
{
502
 
    DWORD dwError = 0;
503
 
 
504
 
 
505
 
    return dwError;
506
 
}
507
 
 
508
 
DWORD
509
 
ActiveDirectoryFindNSSArtefactByKey(
510
 
    HANDLE hProvider,
511
 
    PWSTR  pszKeyName,
512
 
    PWSTR  pszMapName,
513
 
    DWORD  dwInfoLevel,
514
 
    LSA_NIS_MAP_QUERY_FLAGS dwFlags,
515
 
    PVOID* ppNSSArtefactInfo
516
 
    )
517
 
{
518
 
    DWORD dwError = 0;
519
 
 
520
 
    return dwError;
521
 
}
522
 
 
523
 
DWORD
524
 
ActiveDirectoryBeginEnumNSSArtefacts(
525
 
    HANDLE  hProvider,
526
 
    DWORD   dwInfoLevel,
527
 
    PWSTR   pszMapName,
528
 
    LSA_NIS_MAP_QUERY_FLAGS dwFlags,
529
 
    PHANDLE phResume
530
 
    )
531
 
{
532
 
    DWORD dwError = 0;
533
 
 
534
 
    return dwError;
535
 
}
536
 
 
537
 
DWORD
538
 
ActiveDirectoryEnumNSSArtefacts(
539
 
    HANDLE  hProvider,
540
 
    HANDLE  hResume,
541
 
    DWORD   dwMaxNSSArtefacts,
542
 
    PDWORD  pdwNSSArtefactsFound,
543
 
    PVOID** pppNSSArtefactInfoList
544
 
    )
545
 
{
546
 
    DWORD dwError = 0;
547
 
 
548
 
    return dwError;
549
 
}
550
 
 
551
 
VOID
552
 
ActiveDirectoryEndEnumNSSArtefacts(
553
 
    HANDLE hProvider,
554
 
    HANDLE hResume
555
 
    )
556
 
{
557
 
 
558
 
    DWORD dwError = 0;
559
 
 
560
 
    return dwError;
561
 
}
562
 
 
563
 
DWORD
564
 
ActiveDirectoryGetStatus(
565
 
    HANDLE hProvider,
566
 
    PLSA_AUTH_PROVIDER_STATUS* ppProviderStatus
567
 
    )
568
 
{
569
 
}
570
 
 
571
 
 
572
 
 
573
 
DWORD
574
 
ActiveDirectoryRefreshConfiguration(
575
 
    HANDLE hProvider
576
 
    )
577
 
{
578
 
}
579
 
 
580
 
DWORD
581
 
ActiveDirectoryProviderIoControl(
582
 
    IN HANDLE  hProvider,
583
 
    IN uid_t   peerUID,
584
 
    IN uid_t   peerGID,
585
 
    IN DWORD   dwIoControlCode,
586
 
    IN DWORD   dwInputBufferSize,
587
 
    IN PVOID   pInputBuffer,
588
 
    OUT DWORD* pdwOutputBufferSize,
589
 
    OUT PVOID* ppOutputBuffer
590
 
    )
591
 
{
592
 
}
593
 
 
594
 
DWORD
595
 
ActiveDirectoryGetGroupMembershipByProvider(
596
 
    IN HANDLE     hProvider,
597
 
    IN PWSTR      pszSid,
598
 
    IN DWORD      dwGroupInfoLevel,
599
 
    OUT PDWORD    pdwGroupsCount,
600
 
    OUT PVOID   **pppMembershipInfo
601
 
    )
602
 
{
603
 
 
604
 
 
605
 
    DWORD dwError = 0;
606
 
 
607
 
    dwError = ADGetGroupMembershipByProvider(
608
 
                    hProvider,
609
 
                    pszSid,
610
 
                    &ppLsaSecurityObjects,
611
 
                    &dwNumObjects
612
 
                    );
613
 
    BAIL_ON_ERROR(dwError);
614
 
 
615
 
    return dwError;
616
 
}
617