X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=clients%2Futilities.cc;h=97c3078377789040772bbe3b4176e9a19dc6d0a5;hb=9835056a5f5240281d13505f1f6fb70085b257b9;hp=8be59abb4e9cc12f12e29935ab7c2c3fe9ecc490;hpb=b77f874c7d7ff386d01eeedb44c14d3003354bae;p=m6w6%2Flibmemcached diff --git a/clients/utilities.cc b/clients/utilities.cc index 8be59abb..97c30783 100644 --- a/clients/utilities.cc +++ b/clients/utilities.cc @@ -127,109 +127,6 @@ void process_hash_option(memcached_st *memc, char *opt_hash) } } - -static char *username; -static char *passwd; - -#if defined(LIBMEMCACHED_WITH_SASL_SUPPORT) && LIBMEMCACHED_WITH_SASL_SUPPORT - -static int get_username(void *context, int id, const char **result, unsigned int *len) -{ - (void)context; - if (!result || (id != SASL_CB_USER && id != SASL_CB_AUTHNAME)) - return SASL_BADPARAM; - - *result= username; - if (len) - { - *len= (username == NULL) ? 0 : (unsigned int)strlen(username); - } - - return SASL_OK; -} - -static int get_password(sasl_conn_t *conn, void *context, int id, - sasl_secret_t **psecret) -{ - (void)context; - static sasl_secret_t* ptr; - - if (!conn || ! psecret || id != SASL_CB_PASS) - return SASL_BADPARAM; - - if (passwd == NULL) - { - *psecret= NULL; - return SASL_OK; - } - - size_t len= strlen(passwd); - ptr= (sasl_secret_t *)malloc(sizeof(sasl_secret_t) + len +1); - if (not ptr) - return SASL_NOMEM; - - ptr->len= len; - memcpy(ptr->data, passwd, len); - ptr->data[len]= 0; - - *psecret= ptr; - return SASL_OK; -} - -typedef int (*local_sasl_fn)(void); - -/* callbacks we support */ -static sasl_callback_t sasl_callbacks[] = { - { SASL_CB_USER, (local_sasl_fn)get_username, NULL }, - { SASL_CB_AUTHNAME, (local_sasl_fn)get_username, NULL }, - { SASL_CB_PASS, (local_sasl_fn)get_password, NULL }, - { SASL_CB_LIST_END, NULL, NULL } -}; - -#endif - -bool initialize_sasl(memcached_st *memc, char *user, char *password) -{ - if (LIBMEMCACHED_WITH_SASL_SUPPORT == 0) - { - return false; - } - - if (memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_BINARY_PROTOCOL, (uint64_t)true) == 0) - { - return false; - } - - if (user != NULL && password != NULL) - { - username= user; - passwd= password; - -#if defined(LIBMEMCACHED_WITH_SASL_SUPPORT) && LIBMEMCACHED_WITH_SASL_SUPPORT - if (sasl_client_init(NULL) != SASL_OK) - { - fprintf(stderr, "Failed to initialize sasl library!\n"); - return false; - } - memcached_set_sasl_callbacks(memc, sasl_callbacks); -#else - (void)memc; -#endif - } - - return true; -} - -void shutdown_sasl(void) -{ - if (username or passwd) - { -#if defined(LIBMEMCACHED_WITH_SASL_SUPPORT) && LIBMEMCACHED_WITH_SASL_SUPPORT - sasl_done(); -#endif - } -} - void initialize_sockets(void) { /* Define the function for all platforms to avoid #ifdefs in each program */