main() { void** gc; errno = 0; if (-1 == mkdir(RUN_PATH, 00700)) { ASSERT(errno != EEXIST); errno = 0; } //printf("Content-type: text/plain\n\n"); /* int i = 0; char** lstEnv = getEnv(); for (; lstEnv[i]; ++i) { TRACE("%s\n", lstEnv[i]); } */ const char* http_host = getenv("HTTP_HOST"); ASSERT(http_host == NULL); char** lstArgs = lstSplitStr('.', http_host); ASSERT(lstArgs == NULL); int arg_c = lstSize(lstArgs); ASSERT(arg_c < 2); if (arg_c == 2) { const char* request_uri = getenv("REQUEST_URI"); ASSERT(request_uri == NULL); char* t = strchr(request_uri + 1, '/'); if (t == NULL) { Connect(atol(request_uri + 1)); } else { *t = '\0'; Respond(atol(request_uri + 1), atol(t + 1)); } } else { Pier(atol(lstArgs[0])); } mapFree(lstArgs); return 0; }
int Authorization(Socket_t* soc, const char* get, const char* login, const char* pass) { TRACE("CLIENT>Authorisation..."); char* login_pass_encripted = ptBasicRow(login, pass); if(NULL == login_pass_encripted) { ERROR("aBase64Encode(%s %s)", login, pass); return -1; } char* Header2 = malloc(snprintf(NULL, 0, TMPL_AUTH_HEADER, get/*, login_pass_encripted*/) + 1); if(NULL == Header2) { ERROR("malloc()"); free(login_pass_encripted); return -1; } sprintf(Header2, TMPL_AUTH_HEADER, get/*, login_pass_encripted*/); int nw = SSL_write(soc->fn, Header2, strlen(Header2)); if(nw <= 0) { char err_buf[256] = {'\0', }; TRACE("***ERROR*** SSL_write() return:%d error:%s\n", nw, ERR_error_string(ERR_get_error(), err_buf)); /* char err_buf[120] = {'\0'}; char* err_error_string = ERR_error_string(ERR_get_error(), err_buf); (void)err_error_string; ERROR("ERROR:%s:%d:SSL %s\n", __FILE__, __LINE__, err_error_string); */ free(Header2); free(login_pass_encripted); return -1; } //TRACE("CLIENT>SSL_write() %d bites", nw); //TDATA(" REQUEST>\n%s\n", Header2); size_t content_len = 0; char* buf = NULL; int i = 0; int rval = -1; while (-1 != GetRowFromSocket(&buf, soc)) { i++; if (-1 == chopStr(buf)) { free(buf); buf = NULL; break; } if (0 == strlen(buf)) { free(buf); buf = NULL; break; } if (strcasestr(buf, "Content-Length: ")) { content_len = atoll(buf + strlen("Content-Length: ")); } if (i == 1) { char** lst = lstSplitStr(' ', buf); if (lst) { if (lstSize(lst) == 3 && strcasestr(lst[1], "200") && strcasestr(lst[2], "OK")) { rval = 1; } else { rval = 0; } lstFree(lst); } } free(buf); buf = NULL; } free(buf); buf = NULL; if (!i) { ERROR("GetRowFromSocket()"); free(Header2); free(login_pass_encripted); TRACE("CLIENT>Authorisation failed"); return -1; } if (content_len) { GetBufFromSocket(&buf, soc, content_len); if (!buf) { ERROR("GetBufFromSocket()"); free(Header2); free(login_pass_encripted); TRACE("CLIENT>Authorisation %s", (rval == 1) ? "success" : "fail"); return rval; } free(buf); } free(Header2); free(login_pass_encripted); TRACE("CLIENT>Authorisation %s", (rval == 1) ? "success" : "fail"); return rval; }
/*********************************************************************************************************************************** Test Run ***********************************************************************************************************************************/ void testRun(void) { // ***************************************************************************************************************************** if (testBegin("infoPgNewLoad(), infoPgFree(), infoPgDataCurrent(), infoPgDataToLog(), infoPgAdd(), infoPgIni()")) { String *content = NULL; String *fileName = strNewFmt("%s/test.ini", testPath()); String *fileName2 = strNewFmt("%s/test2.ini", testPath()); // Archive info //-------------------------------------------------------------------------------------------------------------------------- content = strNew ( "[db]\n" "db-id=1\n" "db-system-id=6569239123849665679\n" "db-version=\"9.4\"\n" "\n" "[db:history]\n" "1={\"db-id\":6569239123849665679,\"db-version\":\"9.4\"}\n" ); TEST_RESULT_VOID( storagePutNP(storageNewWriteNP(storageLocalWrite(), fileName), harnessInfoChecksum(content)), "put info to file"); InfoPg *infoPg = NULL; Ini *ini = NULL; TEST_ASSIGN( infoPg, infoPgNewLoad(storageLocal(), fileName, infoPgArchive, cipherTypeNone, NULL, &ini), "load file"); TEST_RESULT_STR(strPtr(iniGet(ini, strNew("db"), strNew("db-id"))), "1", " check ini"); TEST_RESULT_INT(lstSize(infoPg->history), 1, " history record added"); InfoPgData infoPgData = infoPgDataCurrent(infoPg); TEST_RESULT_INT(infoPgData.id, 1, " id set"); TEST_RESULT_INT(infoPgData.version, PG_VERSION_94, " version set"); TEST_RESULT_INT(infoPgData.systemId, 6569239123849665679, " system-id set"); TEST_RESULT_INT(infoPgData.catalogVersion, 0, " catalog-version not set"); TEST_RESULT_INT(infoPgData.controlVersion, 0, " control-version not set"); TEST_RESULT_INT(infoPgDataTotal(infoPg), 1, " check pg data total"); TEST_RESULT_STR(strPtr(infoPgArchiveId(infoPg, 0)), "9.4-1", " check pg archive id"); TEST_RESULT_PTR(infoPgCipherPass(infoPg), NULL, " no cipher passphrase"); // Backup info //-------------------------------------------------------------------------------------------------------------------------- content = strNew ( "[db]\n" "db-catalog-version=201409291\n" "db-control-version=942\n" "db-id=1\n" "db-system-id=6569239123849665679\n" "db-version=\"9.4\"\n" "\n" "[db:history]\n" "1={\"db-catalog-version\":201409291,\"db-control-version\":942,\"db-system-id\":6569239123849665679," "\"db-version\":\"9.4\"}\n" ); TEST_RESULT_VOID( storagePutNP(storageNewWriteNP(storageLocalWrite(), fileName), harnessInfoChecksum(content)), "put info to file"); TEST_ASSIGN( infoPg, infoPgNewLoad(storageLocal(), fileName, infoPgBackup, cipherTypeNone, NULL, NULL), "load file"); TEST_RESULT_INT(lstSize(infoPg->history), 1, " history record added"); infoPgData = infoPgDataCurrent(infoPg); TEST_RESULT_INT(infoPgData.id, 1, " id set"); TEST_RESULT_INT(infoPgData.version, PG_VERSION_94, " version set"); TEST_RESULT_INT(infoPgData.systemId, 6569239123849665679, " system-id set"); TEST_RESULT_INT(infoPgData.catalogVersion, 201409291, " catalog-version set"); TEST_RESULT_INT(infoPgData.controlVersion, 942, " control-version set"); // Manifest info //-------------------------------------------------------------------------------------------------------------------------- content = strNew ( "[db]\n" "db-catalog-version=201510051\n" "db-control-version=942\n" "db-id=2\n" "db-system-id=6365925855999999999\n" "db-version=\"9.5\"\n" "\n" "[db:history]\n" "1={\"db-catalog-version\":201409291,\"db-control-version\":942,\"db-system-id\":6569239123849665679," "\"db-version\":\"9.4\"}\n" "2={\"db-catalog-version\":201510051,\"db-control-version\":942,\"db-system-id\":6365925855999999999," "\"db-version\":\"9.5\"}\n" ); // Put the file and load it TEST_RESULT_VOID( storagePutNP(storageNewWriteNP(storageLocalWrite(), fileName), harnessInfoChecksum(content)), "put info to file"); TEST_ASSIGN( infoPg, infoPgNewLoad(storageLocal(), fileName, infoPgManifest, cipherTypeNone, NULL, NULL), "load file"); // Save the file and verify it ini = iniNew(); TEST_RESULT_VOID(infoPgSave(infoPg, ini, storageLocalWrite(), fileName2, cipherTypeNone, NULL), "save file"); TEST_RESULT_BOOL( bufEq( storageGetNP(storageNewReadNP(storageLocal(), fileName)), storageGetNP(storageNewReadNP(storageLocal(), fileName2))), true, "files are equal"); TEST_RESULT_INT(lstSize(infoPg->history), 2, "history record added"); infoPgData = infoPgDataCurrent(infoPg); TEST_RESULT_INT(infoPgData.id, 2, " id set"); TEST_RESULT_INT(infoPgData.version, PG_VERSION_95, " version set"); TEST_RESULT_INT(infoPgData.systemId, 6365925855999999999, " system-id set"); TEST_RESULT_INT(infoPgData.catalogVersion, 201510051, " catalog-version set"); TEST_RESULT_INT(infoPgData.controlVersion, 942, " control-version set"); // infoPgAdd //-------------------------------------------------------------------------------------------------------------------------- infoPgData.id = 3; infoPgData.version = PG_VERSION_96; infoPgData.systemId = 6399999999999999999; infoPgData.catalogVersion = 201608131; infoPgData.controlVersion = 960; TEST_RESULT_VOID(infoPgAdd(infoPg, &infoPgData), "infoPgAdd"); InfoPgData infoPgDataTest = infoPgDataCurrent(infoPg); TEST_RESULT_INT(infoPgDataTest.id, 3, " id set"); TEST_RESULT_INT(infoPgDataTest.version, PG_VERSION_96, " version set"); TEST_RESULT_INT(infoPgDataTest.systemId, 6399999999999999999, " system-id set"); TEST_RESULT_INT(infoPgDataTest.catalogVersion, 201608131, " catalog-version set"); TEST_RESULT_INT(infoPgDataTest.controlVersion, 960, " control-version set"); // Errors //-------------------------------------------------------------------------------------------------------------------------- TEST_ERROR(infoPgNewLoad(storageLocal(), fileName, 10, cipherTypeNone, NULL, NULL), AssertError, "invalid InfoPg type 10"); TEST_ERROR( infoPgNewLoad(storageLocal(), NULL, infoPgManifest, cipherTypeNone, NULL, NULL), AssertError, "assertion 'fileName != NULL' failed"); TEST_ERROR(infoPgDataCurrent(NULL), AssertError, "assertion 'this != NULL' failed"); TEST_ERROR(infoPgAdd(NULL, &infoPgData), AssertError, "assertion 'this != NULL' failed"); TEST_ERROR(infoPgAdd(infoPg, NULL), AssertError, "assertion 'infoPgData != NULL' failed"); // infoPgFree //-------------------------------------------------------------------------------------------------------------------------- TEST_RESULT_VOID(infoPgFree(infoPg), "infoPgFree() - free infoPg"); // infoPgDataToLog //-------------------------------------------------------------------------------------------------------------------------- // test max values infoPgDataTest.id = (unsigned int)4294967295; infoPgDataTest.version = (unsigned int)4294967295; infoPgDataTest.systemId = 18446744073709551615U; infoPgDataTest.catalogVersion = (uint32_t)4294967295; infoPgDataTest.controlVersion = (uint32_t)4294967295; TEST_RESULT_STR( strPtr(infoPgDataToLog(&infoPgDataTest)), "{id: 4294967295, version: 4294967295, systemId: 18446744073709551615, catalogVersion: 4294967295, controlVersion:" " 4294967295}", " check max format"); } }