int main(int argc, char **argv) { char pbuffer[64000]; struct pk_conn pkc; struct pk_parser* pkp; struct pk_pagekite kite; struct pk_kite_request kite_r; struct pk_kite_request* kite_rp; SSL_CTX* ctx; if (argc < 3) { usage(); exit(1); } pks_global_init(PK_LOG_ALL); pk_state.log_file = NULL; PKS_SSL_INIT(ctx); kite_r.kite = &kite; strcpy(kite.protocol, "http"); strncpyz(kite.public_domain, argv[1], PK_DOMAIN_LENGTH); kite.public_port = 0; strncpyz(kite.auth_secret, argv[2], PK_SECRET_LENGTH); kite_r.bsalt[0] = '\0'; kite_r.fsalt[0] = '\0'; kite_rp = &kite_r; srand(time(0) ^ getpid()); if (0 > pk_connect(&pkc, argv[1], 443, 1, &kite_r, NULL, ctx)) { pk_perror(argv[1]); usage(); return 1; } pkp = pk_parser_init(sizeof(pbuffer), pbuffer, &handle_request, &pkc); if (NULL == pkp) { pk_perror(argv[1]); usage(); return 1; } fprintf(stderr, "*** Connected! ***\n"); while (pkc_wait(&pkc, -1)) { pkc_read(&pkc); pk_parser_parse(pkp, pkc.in_buffer_pos, (char *) pkc.in_buffer); pkc.in_buffer_pos = 0; } pkc_reset_conn(&pkc, 0); return 0; }
int pkproto_test(void) { char buffer[64000]; int callback_called = 0; struct pk_parser* p = pk_parser_init(64000, buffer, (pkChunkCallback*) &pkproto_test_callback, &callback_called); return (pkproto_test_format_frame() && pkproto_test_format_reply() && pkproto_test_format_eof() && pkproto_test_format_pong() && pkproto_test_alloc(64000, buffer, p) && pkproto_test_parser(p, &callback_called) && pkproto_test_make_bsalt() && pkproto_test_sign_kite_request() && pkproto_test_parse_kite_request()); }