예제 #1
0
int ACCT_MGR_INFO::init() {
    MIOFILE mf;
    FILE*   p;
    int retval;

    clear();
    p = fopen(ACCT_MGR_URL_FILENAME, "r");
    if (!p) {
        // if not using acct mgr, make sure projects not flagged,
        // otherwise won't be able to detach them.
        //
        for (unsigned int i=0; i<gstate.projects.size(); i++) {
            gstate.projects[i]->attached_via_acct_mgr = false;
        }
        return 0;
    }
    mf.init_file(p);
    XML_PARSER xp(&mf);
    if (!xp.parse_start("acct_mgr_login")) {
        //
    }
    while (!xp.get_tag()) {
        if (!xp.is_tag) {
            printf("unexpected text: %s\n", xp.parsed_tag);
            continue;
        }
        if (xp.match_tag("/acct_mgr")) break;
        else if (xp.parse_str("name", project_name, 256)) continue;
        else if (xp.parse_str("url", master_url, 256)) continue;
        else if (xp.parse_bool("send_gui_rpc_info", send_gui_rpc_info)) continue;
        else if (xp.match_tag("signing_key")) {
            retval = xp.element_contents("</signing_key>", signing_key, sizeof(signing_key));
            if (retval) {
                msg_printf(NULL, MSG_INFO,
                    "error parsing <signing_key> in acct_mgr_url.xml"
                );
            }
            continue;
        }
        else if (xp.parse_bool("cookie_required", cookie_required)) continue;
        else if (xp.parse_str("cookie_failure_url", cookie_failure_url, 256)) continue;
        if (log_flags.unparsed_xml) {
            msg_printf(NULL, MSG_INFO,
                "[unparsed_xml] ACCT_MGR_INFO::init: unrecognized %s",
                xp.parsed_tag
            );
        }
        xp.skip_unexpected(log_flags.unparsed_xml, "ACCT_MGR_INFO::init");
    }
    fclose(p);

    p = fopen(ACCT_MGR_LOGIN_FILENAME, "r");
    if (p) {
        parse_login_file(p);
        fclose(p);
    }
    return 0;
}
예제 #2
0
int ACCT_MGR_INFO::init() {
	char tag[1024];
	bool is_tag;
    MIOFILE mf;
    FILE*   p;
    int retval;

    clear();
    p = fopen(ACCT_MGR_URL_FILENAME, "r");
    if (!p) return 0;
    mf.init_file(p);
	XML_PARSER xp(&mf);
	if (!xp.parse_start("acct_mgr_login")) {
		//
	}
	while (!xp.get(tag, sizeof(tag), is_tag)) {
		if (!is_tag) {
			printf("unexpected text: %s\n", tag);
			continue;
		} 
        if (!strcmp(tag, "/acct_mgr")) break;
        else if (xp.parse_str(tag, "name", acct_mgr_name, 256)) continue;
        else if (xp.parse_str(tag, "url", acct_mgr_url, 256)) continue;
        else if (xp.parse_bool(tag, "send_gui_rpc_info", send_gui_rpc_info)) continue;
        else if (!strcmp(tag, "signing_key")) {
            retval = xp.element_contents("</signing_key>", signing_key, sizeof(signing_key));
            continue;
        }
        else if (xp.parse_bool(tag, "cookie_required", cookie_required)) continue;
        else if (xp.parse_str(tag, "cookie_failure_url", cookie_failure_url, 256)) continue;
        if (log_flags.unparsed_xml) {
            msg_printf(NULL, MSG_INFO,
                "[unparsed_xml] ACCT_MGR_INFO::init: unrecognized %s", tag
            );
        }
        xp.skip_unexpected(tag, log_flags.unparsed_xml, "ACCT_MGR_INFO::init");
    }
    fclose(p);

    p = fopen(ACCT_MGR_LOGIN_FILENAME, "r");
    if (p) {
        parse_login_file(p);
        fclose(p);
    }
    return 0;
}