X-Git-Url: http://git.dolda2000.com/gitweb/?a=blobdiff_plain;f=lib%2Fuimisc.c;h=014e61c77e42a0b69312e0092b19b3d8eb75db77;hb=302a260054ea38d3cb97be6d1a3010082c09265d;hp=c39ad76497c1d8dbac35e70229c50e519f92aeb7;hpb=e4b88cc0edd9e56806aa68b6c47a7b4782f97dc1;p=doldaconnect.git diff --git a/lib/uimisc.c b/lib/uimisc.c index c39ad76..014e61c 100644 --- a/lib/uimisc.c +++ b/lib/uimisc.c @@ -1,6 +1,6 @@ /* * Dolda Connect - Modular multiuser Direct Connect-style client - * Copyright (C) 2004 Fredrik Tolf (fredrik@dolda2000.com) + * Copyright (C) 2004 Fredrik Tolf * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -87,22 +87,19 @@ struct fnetcbdata struct dc_fnetnode *dc_fnetnodes = NULL; struct dc_transfer *dc_transfers = NULL; -static void message(char *format, ...) +static void message(int bits, char *format, ...) { - static int on = -1; + static int hb = -1; char *v; va_list args; - if(on == -1) + if(hb == -1) { - on = 0; + hb = 0; if((v = getenv("LIBDCUI_MSG")) != NULL) - { - if(strtol(v, NULL, 0) & 1) - on = 1; - } + hb = strtol(v, NULL, 0) & 65535; } - if(on == 1) + if(hb & bits) { va_start(args, format); vfprintf(stderr, format, args); @@ -284,7 +281,7 @@ static void process_krb5(struct dc_response *resp, struct logindata *data) krb->reqbuf.data = NULL; if((ret = krb5_fwd_tgt_creds(krb->context, krb->authcon, NULL, krb->servcreds->client, krb->servcreds->server, 0, 1, &krb->reqbuf)) != 0) { - message("krb5_fwd_tgt_creds reported an error: %s\n", error_message(ret)); + message(1, "krb5_fwd_tgt_creds reported an error: %s\n", error_message(ret)); dc_queuecmd(logincallback, data, L"pass", L"31", NULL); krb->fwd = 0; krb->state = 2; @@ -331,7 +328,7 @@ static int init_krb5(struct logindata *data) if(dc_gethostname() == NULL) { - message("cannot use krb5 without a host name"); + message(1, "cannot use krb5 without a host name"); return(1); } krb = smalloc(sizeof(*krb)); @@ -341,28 +338,28 @@ static int init_krb5(struct logindata *data) data->mechdata = krb; if((ret = krb5_init_context(&krb->context)) != 0) { - message("krb5_init_context reported an error: %s\n", error_message(ret)); + message(1, "krb5_init_context reported an error: %s\n", error_message(ret)); return(1); } if((ret = krb5_auth_con_init(krb->context, &krb->authcon)) != 0) { - message("krb5_auth_con_init reported an error: %s\n", error_message(ret)); + message(1, "krb5_auth_con_init reported an error: %s\n", error_message(ret)); return(1); } krb5_auth_con_setflags(krb->context, krb->authcon, KRB5_AUTH_CONTEXT_DO_SEQUENCE); if((ret = krb5_sname_to_principal(krb->context, dc_gethostname(), "doldacond", KRB5_NT_SRV_HST, &krb->sprinc)) != 0) { - message("krb5_sname_to_principal reported an error: %s\n", error_message(ret)); + message(1, "krb5_sname_to_principal reported an error: %s\n", error_message(ret)); return(1); } if((ret = krb5_cc_default(krb->context, &krb->ccache)) != 0) { - message("krb5_cc_default reported an error: %s\n", error_message(ret)); + message(1, "krb5_cc_default reported an error: %s\n", error_message(ret)); return(1); } if((ret = krb5_cc_get_principal(krb->context, krb->ccache, &krb->myprinc)) != 0) { - message("krb5_cc_default reported an error: %s\n", error_message(ret)); + message(1, "krb5_cc_default reported an error: %s\n", error_message(ret)); return(1); } memset(&creds, 0, sizeof(creds)); @@ -370,7 +367,7 @@ static int init_krb5(struct logindata *data) creds.server = krb->sprinc; if((ret = krb5_get_credentials(krb->context, 0, krb->ccache, &creds, &krb->servcreds)) != 0) { - message("krb5_get_credentials reported an error: %s\n", error_message(ret)); + message(1, "krb5_get_credentials reported an error: %s\n", error_message(ret)); return(1); } /* WTF is this checksum stuff?! The Krb docs don't say a word about it! */ @@ -378,7 +375,7 @@ static int init_krb5(struct logindata *data) cksum.length = strlen(cksum.data); if((ret = krb5_mk_req_extended(krb->context, &krb->authcon, AP_OPTS_MUTUAL_REQUIRED, &cksum, krb->servcreds, &krb->reqbuf)) != 0) { - message("krb5_mk_req_extended reported an error: %s\n", error_message(ret)); + message(1, "krb5_mk_req_extended reported an error: %s\n", error_message(ret)); return(1); } free(cksum.data); @@ -498,12 +495,13 @@ static int logincallback(struct dc_response *resp) { odata = data->mechdata; data->mechdata = NULL; + message(4, "trying auth mech %ls\n", authmechs[i].name); if((authmechs[i].init != NULL) && authmechs[i].init(data)) { if(authmechs[i].release != NULL) authmechs[i].release(data); data->mechdata = odata; - message("authentication mechanism %ls failed, trying further...\n", authmechs[i].name); + message(2, "authentication mechanism %ls failed, trying further...\n", authmechs[i].name); } else { if((data->mech != NULL) && data->mech->release != NULL) {