Main Page | Modules | Class List | Directories | File List | Class Members | File Members | Related Pages

smbc.c File Reference

#include "libmsrpc.h"
#include "libsmbclient.h"
#include "test_util.h"

Go to the source code of this file.

Functions

int main (int argc, char **argv)


Function Documentation

int main int  argc,
char **  argv
 

Definition at line 7 of file smbc.c.

References _SMBCCTX::_smbc_callbacks::auth_fn, cac_Connect(), cac_FreeHandle(), cac_GetAuthDataFn(), cac_LsaClosePolicy(), cac_LsaOpenPolicy(), cac_NewServerHandle(), cac_parse_cmd_line(), cac_RegClose(), cac_RegConnect(), cac_SamClose(), cac_SamOpenDomain(), cac_SetSmbcContext(), _SMBCCTX::callbacks, ctx, _CACSERVERHANDLE::debug, _SMBCCTX::debug, HKEY_LOCAL_MACHINE, SamOpenDomain::in, RegConnect::in, LsaOpenPolicy::in, MAXIMUM_ALLOWED_ACCESS, nt_errstr(), SamOpenDomain::out, RegConnect::out, LsaOpenPolicy::out, printf(), smbc_init_context(), smbc_new_context(), _CACSERVERHANDLE::status, talloc_destroy, talloc_init(), True, and ZERO_STRUCT.

00007                                 {
00008    SMBCCTX *ctx = NULL;
00009    CacServerHandle *hnd = NULL;
00010    TALLOC_CTX *mem_ctx = NULL;
00011 
00012    struct LsaOpenPolicy lop;
00013    struct RegConnect    rc;
00014    struct SamOpenDomain sod;
00015 
00016    ZERO_STRUCT(lop);
00017    ZERO_STRUCT(rc);
00018    ZERO_STRUCT(sod);
00019 
00020    mem_ctx = talloc_init("cac_smbc");
00021    if(!mem_ctx) {
00022       printf("Could not initialize talloc context\n");
00023       exit(-1);
00024    }
00025    
00026    hnd = cac_NewServerHandle(True);
00027 
00028    cac_parse_cmd_line(argc, argv, hnd);
00029 
00030    /*initialize smbc context*/
00031    if( (ctx = smbc_new_context()) == NULL) {
00032       exit(1);
00033    }
00034 
00035    /*this probably isn't what someone would want to do, but it initializes the values we need*/
00036    ctx->debug = hnd->debug;
00037    ctx->callbacks.auth_fn = cac_GetAuthDataFn;
00038    
00039 
00040    if(smbc_init_context(ctx) == NULL)
00041       exit(1);
00042 
00043    cac_SetSmbcContext(hnd, ctx);
00044 
00045    /*still have to call cac_Connect()*/
00046    if(!cac_Connect(hnd, NULL)) {
00047       printf("Could not connect to server\n");
00048       exit(1);
00049    }
00050 
00051    lop.in.access = MAXIMUM_ALLOWED_ACCESS;
00052    if(!cac_LsaOpenPolicy(hnd, mem_ctx, &lop))
00053       printf("Could not open LSA policy. Error: %s\n", nt_errstr(hnd->status));
00054 
00055    printf("Opened LSA policy.\n");
00056 
00057    rc.in.access = MAXIMUM_ALLOWED_ACCESS;
00058    rc.in.root   = HKEY_LOCAL_MACHINE;
00059    if(!cac_RegConnect(hnd, mem_ctx, &rc))
00060       printf("Could not connect to registry. Error: %s\n", nt_errstr(hnd->status));
00061 
00062    printf("Connceted to Registry.\n");
00063 
00064    sod.in.access = MAXIMUM_ALLOWED_ACCESS;
00065 
00066    if(!cac_SamOpenDomain(hnd, mem_ctx, &sod))
00067       printf("Could not open domain SAM. Error: %s\n", nt_errstr(hnd->status));
00068 
00069    printf("Opened domain.\n");
00070 
00071    if(lop.out.pol)
00072       cac_LsaClosePolicy(hnd, mem_ctx, lop.out.pol);
00073 
00074    if(rc.out.key)
00075       cac_RegClose(hnd, mem_ctx, rc.out.key);
00076 
00077    if(sod.out.sam)
00078       cac_SamClose(hnd, mem_ctx, sod.out.sam);
00079 
00080    if(sod.out.dom_hnd)
00081       cac_SamClose(hnd, mem_ctx, sod.out.dom_hnd);
00082 
00083    cac_FreeHandle(hnd);
00084    talloc_destroy(mem_ctx);
00085 
00086    return 0;
00087 }


© sourcejam.com 2005-2008