Esempio n. 1
0
/* perform shutdown operations */
static void
khm_pre_shutdown(void) {
    khm_handle csp_cw = NULL;
    khm_handle credset = NULL;
    khm_int32 t;
    khm_size s;

    /* Check if we should destroy all credentials on exit... */

    if (KHM_FAILED(khc_open_space(NULL, L"CredWindow", 0, &csp_cw)))
        return;

    if (KHM_FAILED(khc_read_int32(csp_cw, L"DestroyCredsOnExit", &t)) ||
        !t)
        goto _cleanup;

    if (KHM_FAILED(kcdb_credset_create(&credset)))
        goto _cleanup;

    if (KHM_FAILED(kcdb_credset_extract(credset, NULL, NULL,
                                        KCDB_TYPE_INVALID)))
        goto _cleanup;

    if (KHM_FAILED(kcdb_credset_get_size(credset, &s)) ||
        s == 0)
        goto _cleanup;

    kcdb_credset_apply(credset, mw_select_cred, NULL);

    khui_context_set(KHUI_SCOPE_GROUP,
                     NULL,
                     KCDB_CREDTYPE_INVALID,
                     NULL,
                     NULL,
                     0,
                     credset);

    khm_cred_destroy_creds(TRUE, TRUE);

 _cleanup:

    if (credset)
        kcdb_credset_delete(credset);

    if (csp_cw)
        khc_close_space(csp_cw);
}
Esempio n. 2
0
static khm_int32 KHMAPI
set_state_from_ui_thread(HWND hwnd_main, void * stuff)
{
    struct state_data * d = (struct state_data *) stuff;
    wchar_t certs[COLLECT_STR_LEN] = L"";

    initialize_if_necessary();

    if (d->credset)
        kcdb_credset_apply(d->credset, collect_kca_cert_names, certs);

    if (certs[0] == L'\0') {
        set_tooltip_and_icon(IDS_CRED_TT_NONE, NULL, IDI_CRED_NONE);
        return KHM_ERROR_SUCCESS;
    }

    set_tooltip_and_icon(IDS_CRED_TT_GOOD, certs, IDI_CRED_GOOD);

    return KHM_ERROR_SUCCESS;
}
Esempio n. 3
0
/* process KMSG_CRED messages */
khm_int32 KHMAPI
afs_msg_cred(khm_int32 msg_subtype,
             khm_ui_4 uparam,
             void * vparam)
{
    khm_int32 rv = KHM_ERROR_SUCCESS;

    switch(msg_subtype) {
    case KMSG_CRED_REFRESH:
        afs_list_tokens();
        break;

    case KMSG_CRED_DESTROY_CREDS:
        {
            khui_action_context * ctx;

            ctx = (khui_action_context *) vparam;

            if (ctx->credset) {
                _begin_task(0);
                _report_cs0(KHERR_INFO, L"Destroying AFS Tokens");
                _describe();

                kcdb_credset_apply(ctx->credset,
                                   afs_cred_destroy_proc,
                                   NULL);

                _end_task();
            }
        }
        break;

    default:

        if (IS_CRED_ACQ_MSG(msg_subtype))
            return afs_msg_newcred(msg_subtype, uparam, vparam);
    }

    return rv;
}
Esempio n. 4
0
static khm_int32 KHMAPI
set_state_from_ui_thread(HWND hwnd_main, void * stuff)
{
    struct state_data * d = (struct state_data *) stuff;

    initialize_if_necessary();

    switch (d->state) {
    case AFSICON_REPORT_TOKENS:
        {
            wchar_t cells[COLLECT_STR_LEN] = L"";

            kcdb_credset_apply(d->credset, collect_cell_names, cells);

            if (cells[0] == L'\0') {
                set_tooltip_and_icon(IDS_CRED_TT_NONE, NULL, IDI_CRED_NONE);
                break;
            }

            set_tooltip_and_icon(0, cells, IDI_CRED_OK);
        }
        break;

    case AFSICON_SERVICE_STOPPED:
        set_tooltip_and_icon(IDS_CRED_TT_NOS, NULL, IDI_CRED_SVCSTOP);
        break;

    case AFSICON_SERVICE_ERROR:
        set_tooltip_and_icon(IDS_CRED_TT_SERR, NULL, IDI_CRED_BROKEN);
        break;

    default:
        assert(FALSE);
    }

    (void) hwnd_main;           /* unreferenced */

    return KHM_ERROR_SUCCESS;
}