Пример #1
0
int parserLine(struct shell_state *state, const char *line)
{
	char **argv = NULL;
	int argc = 0;
	struct function *fct = NULL;

	argc = getTokens(line, &argv);
	argc = replaceTokens(argc, &argv, state);

	if((fct = searchFunction(state->cmds, argv[0])) != NULL)
	{
		state->last_ret_value = fct->f(argc, argv);

		for(; argc > 0; argc--)
			free(argv[argc-1]);

		return 0;
	}
	else
	{
		printf("%s : unknown filename or command.\n", argv[0]);
		return -1;	
	}

	return 0;
}
Пример #2
0
void TlenUploadAvatar(TlenProtocol *proto, unsigned char *data, int dataLen, int access) {
	NETLIBHTTPHEADER *headers;
	unsigned char *buffer;
	if (proto->threadData != NULL && dataLen > 0 && data != NULL) {
		char *mpartHead =  "--AaB03x\r\nContent-Disposition: form-data; name=\"filename\"; filename=\"plik.png\"\r\nContent-Type: image/png\r\n\r\n";
		char *mpartTail =  "\r\n--AaB03x--\r\n";
		int size, sizeHead = (int)mir_strlen(mpartHead), sizeTail = (int)mir_strlen(mpartTail);
		char *request = replaceTokens(proto->threadData->tlenConfig.mailBase, proto->threadData->tlenConfig.avatarUpload, "", proto->threadData->avatarToken, 0, access);
		TLENUPLOADAVATARTHREADDATA *threadData = (TLENUPLOADAVATARTHREADDATA *)mir_alloc(sizeof(TLENUPLOADAVATARTHREADDATA));
		threadData->proto = proto;
		NETLIBHTTPREQUEST *req = (NETLIBHTTPREQUEST *)mir_alloc(sizeof(NETLIBHTTPREQUEST));
		headers = (NETLIBHTTPHEADER *)mir_alloc(sizeof(NETLIBHTTPHEADER));
		memset(req, 0, sizeof(NETLIBHTTPREQUEST));
		req->cbSize = sizeof(NETLIBHTTPREQUEST);
		req->requestType = proto->threadData->tlenConfig.avatarUploadMthd;
		req->szUrl = request;
		req->flags = 0;
		headers[0].szName = "Content-Type";
		headers[0].szValue = "multipart/form-data; boundary=AaB03x";
		req->headersCount = 1;
		req->headers = headers;
		size = dataLen + sizeHead + sizeTail;
		buffer = (unsigned char *)mir_alloc(size);
		memcpy(buffer, mpartHead, sizeHead);
		memcpy(buffer + sizeHead, data, dataLen);
		memcpy(buffer + sizeHead + dataLen, mpartTail, sizeTail);
		req->dataLength = size;
		req->pData = (char*)buffer;
		threadData->req = req;
		threadData->data = (char *) mir_alloc(dataLen);
		memcpy(threadData->data, data, dataLen);
		threadData->length = dataLen;
		forkthread(TlenUploadAvatarRequestThread, 0, threadData);
	}
}
static int
testCompareXMLToArgvFiles(const char *inxml, const char *outargv, dnsmasqCapsPtr caps)
{
    char *inXmlData = NULL;
    char *outArgvData = NULL;
    char *actual = NULL;
    int ret = -1;
    virNetworkDefPtr dev = NULL;
    virNetworkObjPtr obj = NULL;
    virCommandPtr cmd = NULL;
    char *pidfile = NULL;
    dnsmasqContext *dctx = NULL;

    if (virtTestLoadFile(inxml, &inXmlData) < 0)
        goto fail;

    if (virtTestLoadFile(outargv, &outArgvData) < 0)
        goto fail;

    if (replaceTokens(&outArgvData, "@DNSMASQ@", DNSMASQ))
        goto fail;

    if (!(dev = virNetworkDefParseString(inXmlData)))
        goto fail;

    if (VIR_ALLOC(obj) < 0)
        goto fail;

    obj->def = dev;
    dctx = dnsmasqContextNew(dev->name, "/var/lib/libvirt/dnsmasq");

    if (dctx == NULL)
        goto fail;

    if (networkBuildDhcpDaemonCommandLine(obj, &cmd, pidfile, dctx, caps) < 0)
        goto fail;

    if (!(actual = virCommandToString(cmd)))
        goto fail;

    if (STRNEQ(outArgvData, actual)) {
        virtTestDifference(stderr, outArgvData, actual);
        goto fail;
    }

    ret = 0;

 fail:
    VIR_FREE(inXmlData);
    VIR_FREE(outArgvData);
    VIR_FREE(actual);
    VIR_FREE(pidfile);
    virCommandFree(cmd);
    virNetworkObjFree(obj);
    dnsmasqContextFree(dctx);
    return ret;
}
Пример #4
0
void TlenRemoveAvatar() {
	NETLIBHTTPREQUEST *req;
	char *request;
	if (jabberThreadInfo != NULL) {
		req = (NETLIBHTTPREQUEST *)mir_alloc(sizeof(NETLIBHTTPREQUEST));
		request = replaceTokens(jabberThreadInfo->tlenConfig.mailBase, jabberThreadInfo->tlenConfig.avatarRemove, "", jabberThreadInfo->avatarToken, 0, 0);
		ZeroMemory(req, sizeof(NETLIBHTTPREQUEST));
		req->cbSize = sizeof(NETLIBHTTPREQUEST);
		req->requestType = jabberThreadInfo->tlenConfig.avatarGetMthd;
		req->szUrl = request;
		JabberForkThread(TlenRemoveAvatarRequestThread, 0, req);
	}
}
Пример #5
0
void TlenRemoveAvatar(TlenProtocol *proto) {
	if (proto->threadData != NULL) {
		TLENREMOVEAVATARTHREADDATA *data = (TLENREMOVEAVATARTHREADDATA *)mir_alloc(sizeof(TLENREMOVEAVATARTHREADDATA));
		NETLIBHTTPREQUEST *req = (NETLIBHTTPREQUEST *)mir_alloc(sizeof(NETLIBHTTPREQUEST));
		data->proto =proto;
		data->req = req;
		char *request = replaceTokens(proto->threadData->tlenConfig.mailBase, proto->threadData->tlenConfig.avatarRemove, "", proto->threadData->avatarToken, 0, 0);
		memset(req, 0, sizeof(NETLIBHTTPREQUEST));
		req->cbSize = sizeof(NETLIBHTTPREQUEST);
		req->requestType = proto->threadData->tlenConfig.avatarGetMthd;
		req->szUrl = request;
		forkthread(TlenRemoveAvatarRequestThread, 0, data);
	}
}
Пример #6
0
void TlenUploadAvatar(unsigned char *data, int dataLen, int access) {
	NETLIBHTTPREQUEST *req;
	NETLIBHTTPHEADER *headers;
	TlenUploadAvatarThreadData *threadData;
	char *request;
	unsigned char *buffer;
	if (jabberThreadInfo != NULL && dataLen > 0 && data != NULL) {
		int size, sizeHead, sizeTail;
		request = replaceTokens(jabberThreadInfo->tlenConfig.mailBase, jabberThreadInfo->tlenConfig.avatarUpload, "", jabberThreadInfo->avatarToken, 0, access);
		threadData = (TlenUploadAvatarThreadData *)mir_alloc(sizeof(TlenUploadAvatarThreadData));
		req = (NETLIBHTTPREQUEST *)mir_alloc(sizeof(NETLIBHTTPREQUEST));
		headers = (NETLIBHTTPHEADER *)mir_alloc(sizeof(NETLIBHTTPHEADER));
		ZeroMemory(req, sizeof(NETLIBHTTPREQUEST));
		req->cbSize = sizeof(NETLIBHTTPREQUEST);
		req->requestType = jabberThreadInfo->tlenConfig.avatarUploadMthd;
		req->szUrl = request;
		req->flags = 0;
		headers[0].szName = "Content-Type";
		headers[0].szValue = "multipart/form-data; boundary=AaB03x";
		req->headersCount = 1;
		req->headers = headers;
		sizeHead = strlen("--AaB03x\r\nContent-Disposition: form-data; name=\"filename\"; filename=\"plik.png\"\r\nContent-Type: image/png\r\n\r\n");
		sizeTail = strlen("\r\n--AaB03x--\r\n");
		size = dataLen + sizeHead + sizeTail;
		buffer = mir_alloc(size);
		strcpy(buffer, "--AaB03x\r\nContent-Disposition: form-data; name=\"filename\"; filename=\"plik.png\"\r\nContent-Type: image/png\r\n\r\n");
		memcpy(buffer + sizeHead, data, dataLen);
		strcpy(buffer + sizeHead + dataLen, "\r\n--AaB03x--\r\n");
		req->dataLength = size;
		req->pData = buffer;
		threadData->request = req;
		threadData->data = (char *) mir_alloc(dataLen);
		memcpy(threadData->data, data, dataLen);
		threadData->length = dataLen;
		JabberForkThread(TlenUploadAvatarRequestThread, 0, threadData);
	}
}
Пример #7
0
static void TlenGetAvatarThread(void *ptr) {

	TLEN_LIST_ITEM *item = NULL;
	NETLIBHTTPREQUEST req;
	NETLIBHTTPREQUEST *resp;
	TLENGETAVATARTHREADDATA *data = (TLENGETAVATARTHREADDATA *)ptr;
	HANDLE hContact = data->hContact;
	char *request;
	char *login = NULL;
	if (hContact != NULL) {
		char *jid = TlenJIDFromHContact(data->proto, hContact);
		login = TlenNickFromJID(jid);
		item = TlenListGetItemPtr(data->proto, LIST_ROSTER, jid);
		mir_free(jid);
	} else {
		login = mir_strdup(data->proto->threadData->username);
	}
	if ((data->proto->threadData != NULL && hContact == NULL) || item != NULL) {
		DWORD format = PA_FORMAT_UNKNOWN;
		if (item != NULL) {
			item->newAvatarDownloading = TRUE;
		}
		request = replaceTokens(data->proto->threadData->tlenConfig.mailBase, data->proto->threadData->tlenConfig.avatarGet, login, data->proto->threadData->avatarToken, 0, 0);
		ZeroMemory(&req, sizeof(req));
		req.cbSize = sizeof(req);
		req.requestType = data->proto->threadData->tlenConfig.avatarGetMthd;
		req.flags = 0;
		req.headersCount = 0;
		req.headers = NULL;
		req.dataLength = 0;
		req.szUrl = request;
		resp = (NETLIBHTTPREQUEST *)CallService(MS_NETLIB_HTTPTRANSACTION, (WPARAM)data->proto->m_hNetlibUser, (LPARAM)&req);
		if (item != NULL) {
			item->newAvatarDownloading = FALSE;
		}
		if (resp != NULL) {
			if (resp->resultCode/100 == 2) {
				if (resp->dataLength > 0) {
					int i;
					for (i=0; i<resp->headersCount; i++ ) {
						if (!strcmpi(resp->headers[i].szName, "Content-Type")) {
							if (!strcmpi(resp->headers[i].szValue, "image/png"))
								format = PA_FORMAT_PNG;
							else if (!strcmpi(resp->headers[i].szValue, "image/x-png"))
								format = PA_FORMAT_PNG;
							else if (!strcmpi(resp->headers[i].szValue, "image/jpeg"))
								format = PA_FORMAT_JPEG;
							else if (!strcmpi(resp->headers[i].szValue, "image/jpg"))
								format = PA_FORMAT_JPEG;
							else if (!strcmpi(resp->headers[i].szValue, "image/gif"))
								format = PA_FORMAT_GIF;
							else if (!strcmpi(resp->headers[i].szValue, "image/bmp"))
								format = PA_FORMAT_BMP;

							break;
						}
					}
					SetAvatar(data->proto, hContact, item, resp->pData, resp->dataLength, format);
				} else {
					RemoveAvatar(data->proto, hContact);
				}
			}
			CallService(MS_NETLIB_FREEHTTPREQUESTSTRUCT, 0, (LPARAM)resp);
		}
		mir_free(request);
		mir_free(login);
	}
	if (hContact == NULL) {
		getAvatarMutex = 0;
	}
	mir_free(data);
}
Пример #8
0
inline std::string replaceTokens(const std::string &source, const std::map<std::string, T> &properties) {
    return replaceTokens(source, [&properties](const std::string &token) -> std::string {
        const auto it_prop = properties.find(token);
        return it_prop != properties.end() ? toString(it_prop->second) : "";
    });
}