Changeset 107

Show
Ignore:
Timestamp:
12/10/07 21:00:50 (12 months ago)
Author:
psmedley
Message:

Add configurable kerberos support for Netdrive plugin

Location:
branches/samba-3.0/source/ndpsmb
Files:
7 modified

Legend:

Unmodified
Added
Removed
  • branches/samba-3.0/source/ndpsmb/ndpsmb.c

    r70 r107  
    156156        { ND_PROP_ULONG, 0, "LOGLEVEL", "0"}, 
    157157        { ND_PROP_ULONG, 0, "EASUPPORT", "1"}, 
     158        { ND_PROP_ULONG, 0, "KRB5SUPPORT", "1"}, 
    158159        {ND_PROP_STRING, 0, NULL, NULL} 
    159160}; 
     
    208209        char loglevel; 
    209210        int easupport; 
     211        int krb5support; 
    210212} Resource; 
    211213 
     
    244246                sd.FgBg = SSF_FGBG_BACK; 
    245247                sd.PgmName = EXECNAME; 
     248                if (pRes->krb5support) 
     249                { 
     250                        StrNCat(params, " -k ", sizeof(params) - 1); 
     251                } 
    246252                if (pRes->loglevel) 
    247253                { 
     
    257263                        StrNCat(params, pRes->logfile, sizeof(params) - 1); 
    258264                } 
     265 
    259266                log("params <%s>\n", params); 
    260267                sd.PgmInputs = *params ? params : NULL; 
     
    267274                        char failed[CCHMAXPATH + 1] = {0}; 
    268275                        RESULTCODES res = {0}; 
    269                         char * p = params; 
    270                         StrCpy(p, EXECNAME); 
    271                         p += StrLen(p) + 1; 
    272                         if (*pRes->logfile) 
    273                         { 
    274                                 StrCpy(p, "-l "); 
    275                                 StrNCat(p, pRes->logfile, sizeof(params) - (p - (char *)params)); 
    276                                 p += StrLen(p) + 1; 
    277                                 if (pRes->loglevel) 
    278                                 { 
    279                                         char level[2]; 
    280                                         level[0] = pRes->loglevel + '0'; 
    281                                         level[1] = 0; 
    282                                         StrCpy(p, "-d "); 
    283                                         StrNCat(p, level, sizeof(params) - (p - (char *)params)); 
    284                                         p += StrLen(p) + 1; 
    285                                 } 
    286                         } 
    287                         else 
    288                         { 
    289                                 StrCpy(p, "-q"); 
    290                                 p += StrLen(p) + 1; 
    291                         } 
    292                         *p = 0;          
    293                         rc = DosExecPgm(failed, sizeof(failed), EXEC_BACKGROUND, params, NULL, &res, EXECNAME); 
     276                        UCHAR pszArgString[CCHMAXPATH+41] ; /* Argument string */ 
     277                        sprintf(pszArgString, "smbcd %s\0", params); 
     278                        if (params!=NULL) 
     279                                pszArgString[5] = '\0' ; 
     280                        rc = DosExecPgm(failed, sizeof(failed), EXEC_BACKGROUND, pszArgString, NULL, &res, EXECNAME); 
    294281                        log("smbcd DosExecPgm codeTerminate %d codeResult %d rc %d\n", res.codeTerminate, res.codeResult, rc); 
    295282                } 
    296                 if (!rc) 
     283                if (!rc)  
    297284                { 
    298285                        DosSleep(500); 
     
    392379        pRes->loglevel = 0; 
    393380        pRes->easupport = 1; 
     381        pRes->krb5support = 0; 
    394382 
    395383        t = 0, q = NULL; 
     
    496484                { 
    497485                        pRes->memlen = t * 65536; 
     486                } 
     487        } 
     488 
     489        t = 0; 
     490        rc = ph->fsphQueryUlongProperty (pRes->properties, "KRB5SUPPORT", &t); 
     491        if (!rc) 
     492        { 
     493                if (t > 1) 
     494                { 
     495                        rc = ERROR_INVALID_PARAMETER; 
     496                } 
     497                else 
     498                { 
     499                        pRes->krb5support = t; 
    498500                } 
    499501        } 
  • branches/samba-3.0/source/ndpsmb/rc/rc.dlg

    r66 r107  
    99            FCF_TITLEBAR 
    1010    BEGIN 
    11         CTEXT           "SMB resource properties:", LBL_PROP, 5, 129, 190, 10,  
    12                         DT_VCENTER 
    13  
    14         RTEXT           "Workgroup:", LBL_WORKGRP, 5, 117, 60, 10,  
    15                         DT_BOTTOM 
     11        CTEXT           "SMB resource properties:", LBL_PROP, 5, 129, 190,  
     12                        10, DT_VCENTER 
     13        RTEXT           "Workgroup:", LBL_WORKGRP, 5, 117, 60, 10, DT_BOTTOM 
    1614        ENTRYFIELD      "", ENT_WORKGRP, 67, 118, 100, 8, ES_MARGIN 
    17  
    18         RTEXT           "Server:", LBL_SERVER, 5, 105, 60, 10,  
    19                         DT_BOTTOM 
     15        RTEXT           "Server:", LBL_SERVER, 5, 105, 60, 10, DT_BOTTOM 
    2016        ENTRYFIELD      "", ENT_SERVER, 67, 106, 100, 8, ES_MARGIN 
    21  
    22         RTEXT           "Share:", LBL_SHARE, 5, 93, 60, 10,  
    23                         DT_BOTTOM 
     17        RTEXT           "Share:", LBL_SHARE, 5, 93, 60, 10, DT_BOTTOM 
    2418        ENTRYFIELD      "", ENT_SHARE, 67, 94, 100, 8, ES_MARGIN 
    25  
    26         RTEXT           "User:", LBL_USER, 5, 81, 60, 10,  
    27                         DT_BOTTOM 
     19        RTEXT           "User:", LBL_USER, 5, 81, 60, 10, DT_BOTTOM 
    2820        ENTRYFIELD      "", ENT_USER, 67, 82, 100, 8, ES_MARGIN 
    29  
    30         RTEXT           "Password:", LBL_PASS, 5, 69, 60, 10,  
    31                         DT_BOTTOM  
    32         ENTRYFIELD      "", ENT_PASS, 67, 70, 100, 8, ES_MARGIN | ES_UNREADABLE 
    33  
    34         RTEXT           "Master", LBL_MASTER, 5, 57, 30, 10,  
    35                         DT_BOTTOM 
     21        RTEXT           "Password:", LBL_PASS, 5, 69, 60, 10, DT_BOTTOM 
     22        ENTRYFIELD      "", ENT_PASS, 67, 70, 100, 8, ES_MARGIN |  
     23                        ES_UNREADABLE 
     24        RTEXT           "Master", LBL_MASTER, 5, 57, 30, 10, DT_BOTTOM 
    3625        CONTROL         "", CMB_MASTER, 37, 35, 50, 33, WC_COMBOBOX,  
    3726                        CBS_DROPDOWNLIST | WS_GROUP | WS_TABSTOP |  
     
    4332                        CBS_DROPDOWNLIST | WS_GROUP | WS_TABSTOP |  
    4433                        WS_VISIBLE 
    45  
    46         RTEXT           "Logfile:", LBL_LOGFILE, 5, 33, 60, 10,  
     34        RTEXT           "Logfile:", LBL_LOGFILE, 5, 33, 60, 10, DT_BOTTOM 
     35        ENTRYFIELD      "", ENT_LOGFILE, 67, 33, 100, 8, ES_MARGIN 
     36        RTEXT           "Loglevel:", LBL_LOGLEVEL, 5, 21, 60, 10, DT_BOTTOM 
     37        SPINBUTTON      CMB_LOGLEVEL, 67, 18, 20, 35, SPBS_NUMERICONLY |  
     38                        SPBS_MASTER | SPBS_JUSTRIGHT | WS_GROUP 
     39        LTEXT           "EA Support", LBL_EASUPPORT, 107, 20, 28, 10,  
    4740                        DT_BOTTOM 
    48         ENTRYFIELD      "", ENT_LOGFILE, 67, 33, 100, 8, ES_MARGIN 
    49  
    50         RTEXT           "Loglevel:", LBL_LOGLEVEL, 5, 21, 60, 10,  
    51                         DT_BOTTOM 
    52         CONTROL         "", CMB_LOGLEVEL, 67, 18, 20, 35, WC_SPINBUTTON,  
    53                         SPBS_NUMERICONLY | SPBS_JUSTRIGHT | SPBS_MASTER | WS_GROUP | WS_TABSTOP |  
    54                         WS_VISIBLE 
    55  
    56         LTEXT           "EA Support", LBL_EASUPPORT, 121, 20, 50, 10,  
    57                         DT_BOTTOM 
    58         CONTROL         "", CHK_EASUPPORT, 110, 20, 10, 10, WC_BUTTON,  
    59                         BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP |  
    60                         WS_VISIBLE 
    61  
     41        AUTOCHECKBOX    "", CHK_EASUPPORT, 97, 20, 10, 10, WS_GROUP 
    6242        PUSHBUTTON      "Cancel", DID_CANCEL, 2, 2, 40, 14 
    6343        PUSHBUTTON      "<<Previous", BTN_PREV, 49, 2, 59, 14 
    6444        DEFPUSHBUTTON   "Done", DID_OK, 113, 2, 40, 14 
    6545        PUSHBUTTON      "Help", BTN_HELP, 158, 2, 40, 14, BS_HELP 
     46        LTEXT           "KRB5 Support", LBL_KRB5SUPPORT, 164, 19, 32, 10,  
     47                        DT_BOTTOM 
     48        AUTOCHECKBOX    "", CHK_KRB5SUPPORT, 152, 19, 10, 10, WS_GROUP 
    6649    END 
    6750END 
  • branches/samba-3.0/source/ndpsmb/rc/rc.h

    r5 r107  
    2424#define LBL_EASUPPORT               1021 
    2525#define CHK_EASUPPORT               1022 
     26#define CHK_KRB5SUPPORT               1023 
     27#define LBL_KRB5SUPPORT             1024 
  • branches/samba-3.0/source/ndpsmb/rc/rc.rc

    r9 r107  
    142142    "1" 
    143143} 
     144 
     145RCDATA (DLG_ID + 11) 
     146{ 
     147    CHK_KRB5SUPPORT, PARMTYPE_INT, 0L, 1L, "krb5support", "%d", 1L,  
     148    "0",  
     149    "1" 
     150} 
    144151     
    145 RCDATA (DLG_ID + 11) 
     152RCDATA (DLG_ID + 12) 
    146153{ 
    147154    0 
  • branches/samba-3.0/source/ndpsmb/smbcd.c

    r75 r107  
    1515 
    1616int debuglevel = 0; 
     17int krb5support = 0; 
    1718HMTX logmutex = 0; 
    1819char *logfile = NULL; 
     
    306307        data = req->param + req->paramlen; 
    307308//      memset(res, 0, sizeof(*res)); 
     309 
    308310        debuglocal(1,"Client request %d paramlen %d len %d, reconnect %d. State %08x\n",  req->request, req->paramlen, req->length, *reconnect, cli); 
    309311        if (*reconnect == 2) 
    310312        { 
    311313                debuglocal(1,"Reconnecting to last server requested\n"); 
    312                 res->rc = smbwrp_connect(srv, _cli); 
     314                res->rc = smbwrp_connect(srv, _cli, krb5support); 
    313315                if (res->rc) 
    314316                { 
     
    343345                                break; 
    344346                        } 
    345                         res->rc = smbwrp_connect((smbwrp_server *)req->param, _cli); 
     347                        res->rc = smbwrp_connect((smbwrp_server *)req->param, _cli, krb5support); 
    346348                        if (!res->rc) 
    347349                        { 
     
    739741void help(void) 
    740742{ 
    741         printf("Usage: smbcd [-d/--debug <debuglevel>] [-q/--quiet] [-l/--logfile <logfile>]\n"); 
     743        printf("Usage: smbcd [-d/--debug <debuglevel>] [-q/--quiet] [-l/--logfile <logfile>] [-k/--kerberos]\n"); 
    742744} 
    743745 
     
    756758        printf( "Daemon priority set to PRTYC_FOREGROUNDSERVER\n"); 
    757759#endif 
    758  
     760        debuglocal(0,"Entering main()\n"); 
    759761        for (argc--, argv++; argc > 0; argc--, argv++) 
    760762        { 
     
    807809                        quiet = 1; 
    808810                } else 
     811                if (strcmp(argv[0], "-k") == 0 || strcmp(argv[0], "--kerberos") == 0) 
     812                { 
     813                        krb5support = 1; 
     814                } else 
    809815                { 
    810816                        printf("Unknown parameter <%s>\n", argv[0]); 
  • branches/samba-3.0/source/ndpsmb/smbwrp.c

    r75 r107  
    373373return a connection to a server 
    374374*******************************************************/ 
    375 int _System smbwrp_connect(smbwrp_server * srv, struct cli_state ** cli) 
     375int _System smbwrp_connect(smbwrp_server * srv, struct cli_state ** cli, int krb5support) 
    376376{ 
    377377        char * server = srv->server_name; 
     
    434434                return 3; 
    435435        } 
     436 
     437        if (krb5support == 1){ 
     438        debuglocal(1,"Kerberos support enabled\n"); 
     439                c->use_kerberos = True;} 
     440 
    436441        if (!cli_session_request(c, &calling, &called)) { 
    437442                cli_shutdown(c); 
  • branches/samba-3.0/source/ndpsmb/smbwrp.h

    r75 r107  
    121121int _System smbwrp_getclisize(void); 
    122122int _System smbwrp_init(void); 
    123 int _System smbwrp_connect(smbwrp_server * srv, cli_state ** c); 
     123int _System smbwrp_connect(smbwrp_server * srv, cli_state ** c, int krb5support); 
    124124void _System smbwrp_disconnect(cli_state ** cli); 
    125125int _System smbwrp_open(cli_state * cli, smbwrp_file * file);