Changeset 107


Ignore:
Timestamp:
Dec 10, 2007, 9:00:50 PM (18 years ago)
Author:
Paul Smedley
Message:

Add configurable kerberos support for Netdrive plugin

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

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);
Note: See TracChangeset for help on using the changeset viewer.