main(int argc, char **argv)
{
	TDSSOCKET *tds;
	TDSLOGIN login;
	TDSRESULTINFO *resinfo;

	tds = tds_listen(atoi(argv[1]));
	/* get_incoming(tds->s); */
	tds_read_login(tds, &login);
	dump_login(&login);
	if (!strcmp(login.user_name, "guest") && !strcmp(login.password, "sybase")) {
		tds->out_flag = 4;
		tds_env_change(tds, 1, "master", "pubs2");
		tds_send_msg(tds, 5701, 2, 10, "Changed database context to 'pubs2'.", "JDBC", "ZZZZZ", 1);
		if (!login.suppress_language) {
			tds_env_change(tds, 2, NULL, "us_english");
			tds_send_msg(tds, 5703, 1, 10, "Changed language setting to 'us_english'.", "JDBC", "ZZZZZ", 1);
		}
		tds_env_change(tds, 4, NULL, "512");
		tds_send_login_ack(tds, "sql server");
		tds_send_capabilities_token(tds);
		tds_send_253_token(tds, 0, 1);
	} else {
		/* send nack before exiting */
		exit(1);
	}
	tds_flush_packet(tds);
	/* printf("incoming packet %d\n", tds_read_packet(tds)); */
	printf("query : %s\n", tds_get_query(tds));
	tds->out_flag = 4;
	resinfo = tds_alloc_results(1);
	resinfo->columns[0]->column_type = SYBVARCHAR;
	resinfo->columns[0]->column_size = 30;
	strcpy(resinfo->columns[0]->column_name, "name");
	resinfo->columns[0]->column_namelen = 4;
	resinfo->current_row = "pubs2";
	tds_send_result(tds, resinfo);
	tds_send_174_token(tds, 1);
	tds_send_row(tds, resinfo);
	tds_send_253_token(tds, 16, 1);
	tds_flush_packet(tds);
	sleep(30);
}
Beispiel #2
0
int
main(int argc, char **argv)
{
    TDSCONTEXT *ctx;
    TDSSOCKET *tds;
    TDSLOGIN *login;
    TDSRESULTINFO *resinfo;

    if (argc < 2 || atoi(argv[1]) <= 0) {
        fprintf(stderr, "syntax: %s <port>\n", argv[0]);
        return 1;
    }

    ctx = tds_alloc_context(NULL);
    tds = tds_listen(ctx, atoi(argv[1]));
    if (!tds)
        return 1;
    /* get_incoming(tds->s); */
    login = tds_alloc_read_login(tds);
    if (!login) {
        fprintf(stderr, "Error reading login\n");
        exit(1);
    }
    dump_login(login);
    if (!strcmp(tds_dstr_cstr(&login->user_name), "guest") && !strcmp(tds_dstr_cstr(&login->password), "sybase")) {
        tds->out_flag = TDS_REPLY;
        tds_env_change(tds, TDS_ENV_DATABASE, "master", "pubs2");
        tds_send_msg(tds, 5701, 2, 10, "Changed database context to 'pubs2'.", "JDBC", "ZZZZZ", 1);
        if (!login->suppress_language) {
            tds_env_change(tds, TDS_ENV_LANG, NULL, "us_english");
            tds_send_msg(tds, 5703, 1, 10, "Changed language setting to 'us_english'.", "JDBC", "ZZZZZ", 1);
        }
        tds_env_change(tds, TDS_ENV_PACKSIZE, NULL, "512");
        /* TODO set mssql if tds7+ */
        tds_send_login_ack(tds, "sql server");
        if (IS_TDS50(tds))
            tds_send_capabilities_token(tds);
        tds_send_done_token(tds, 0, 1);
    } else {
        /* send nack before exiting */
        exit(1);
    }
    tds_flush_packet(tds);
    tds_free_login(login);
    login = NULL;
    /* printf("incoming packet %d\n", tds_read_packet(tds)); */
    printf("query : %s\n", tds_get_generic_query(tds));
    tds->out_flag = TDS_REPLY;
    resinfo = tds_alloc_results(1);
    resinfo->columns[0]->column_type = SYBVARCHAR;
    resinfo->columns[0]->column_size = 30;
    strcpy(resinfo->columns[0]->column_name, "name");
    resinfo->columns[0]->column_namelen = 4;
    resinfo->current_row = (TDS_UCHAR*) "pubs2";
    resinfo->columns[0]->column_data = resinfo->current_row;
    tds_send_result(tds, resinfo);
    tds_send_control_token(tds, 1);
    tds_send_row(tds, resinfo);
    tds_send_done_token(tds, 16, 1);
    tds_flush_packet(tds);
    sleep(30);

    tds_free_results(resinfo);
    tds_free_socket(tds);
    tds_free_context(ctx);

    return 0;
}