Esempio n. 1
0
int
main(int argc, char **argv)
{
    int fd, database_fd, database_size;
    krb5_error_code retval;
    krb5_context context;
    krb5_creds *my_creds;
    krb5_auth_context auth_context;

    setlocale(LC_ALL, "");
    retval = krb5_init_context(&context);
    if (retval) {
        com_err(argv[0], retval, _("while initializing krb5"));
        exit(1);
    }
    parse_args(argc, argv);
    get_tickets(context);

    database_fd = open_database(context, file, &database_size);
    open_connection(context, slave_host, &fd);
    kerberos_authenticate(context, &auth_context, fd, my_principal, &my_creds);
    xmit_database(context, auth_context, my_creds, fd, database_fd,
                  database_size);
    update_last_prop_file(slave_host, file);
    printf(_("Database propagation to %s: SUCCEEDED\n"), slave_host);
    krb5_free_cred_contents(context, my_creds);
    close_database(context, database_fd);
    exit(0);
}
int p_get_tickets(request *rqt, int client_sockfd){
    response rsp;
    response *rsps;

    memset(&rsp, '\0', sizeof(response));
    ticket *tset;
    int getn;
    tset = get_tickets(&rqt->t, &getn);
    if(getn == -1)
        rsp.rs = rs_failure;
    else if(getn == 0){
        rsp.rs = rs_find_nothing;
        rsp.remain = 0;
    }else{
        rsps = (response *)malloc(sizeof(response)*getn);
        memset(rsps, '\0', sizeof(response)*getn);
        int i;
        for(i=0; i<getn; ++i){
            response *p;
            p = rsps + i;
            p->rs = rs_success;
            memcpy(&p->t, tset+i, sizeof(ticket));
        }
        rsps->remain = getn - 1;
    }
    free_get_tickets(tset);

    if(getn)
        return srv_send_responses(rsps, getn, client_sockfd);
    else
        return srv_send_response(&rsp, client_sockfd);
}