コード例 #1
0
ファイル: piercloud-cgi.c プロジェクト: zmushko/piercloud
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;
}
コード例 #2
0
ファイル: authorization.c プロジェクト: zmushko/piercloud
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;
}
コード例 #3
0
ファイル: infoPgTest.c プロジェクト: pgbackrest/pgbackrest
/***********************************************************************************************************************************
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");
    }
}