Ejemplo n.º 1
0
bool mupnp_action_performlistner(mUpnpAction *action, mUpnpActionRequest *actionReq)
{
	MUPNP_ACTION_LISTNER listener;
	mUpnpActionResponse *actionRes;
	mUpnpHttpRequest *actionReqHttpReq;
	mUpnpHttpResponse *actionResHttpRes;
	
	mupnp_log_debug_l4("Entering...\n");

	listener = mupnp_action_getlistner(action);
	if (listener == NULL)
		return false;

	actionRes = mupnp_control_action_response_new();
	
	mupnp_action_setstatuscode(action, MUPNP_STATUS_INVALID_ACTION);
	mupnp_action_setstatusdescription(action, mupnp_status_code2string(MUPNP_STATUS_INVALID_ACTION));

	mupnp_action_clearoutputargumentvalues(action);
	
	if (listener(action) == true)
		mupnp_control_action_response_setresponse(actionRes, action);
	else
		mupnp_control_soap_response_setfaultresponse(mupnp_control_action_response_getsoapresponse(actionRes), mupnp_action_getstatuscode(action), mupnp_action_getstatusdescription(action));
	
	actionReqHttpReq = mupnp_soap_request_gethttprequest(mupnp_control_action_request_getsoaprequest(actionReq));
	actionResHttpRes = mupnp_soap_response_gethttpresponse(mupnp_control_action_response_getsoapresponse(actionRes));
	mupnp_http_request_postresponse(actionReqHttpReq, actionResHttpRes);	

	mupnp_control_action_response_delete(actionRes);
	
	mupnp_log_debug_l4("Leaving...\n");

	return true;
}
Ejemplo n.º 2
0
bool mupnp_statevariable_performlistner(mUpnpStateVariable* statVar, mUpnpQueryRequest* queryReq)
{
  MUPNP_STATEVARIABLE_LISTNER listener;
  mUpnpQueryResponse* queryRes;
  mUpnpHttpRequest* queryReqHttpReq;
  mUpnpHttpResponse* queryResHttpRes;

  mupnp_log_debug_l4("Entering...\n");

  listener = mupnp_statevariable_getlistener(statVar);
  if (listener == NULL)
    return false;

  queryRes = mupnp_control_query_response_new();

  mupnp_statevariable_setstatuscode(statVar, MUPNP_STATUS_INVALID_ACTION);
  mupnp_statevariable_setstatusdescription(statVar, mupnp_status_code2string(MUPNP_STATUS_INVALID_ACTION));
  mupnp_statevariable_setvalue(statVar, "");

  if (listener(statVar) == true)
    mupnp_control_query_response_setresponse(queryRes, statVar);
  else
    mupnp_control_soap_response_setfaultresponse(mupnp_control_query_response_getsoapresponse(queryRes), mupnp_statevariable_getstatuscode(statVar), mupnp_statevariable_getstatusdescription(statVar));

  queryReqHttpReq = mupnp_soap_request_gethttprequest(mupnp_control_query_request_getsoaprequest(queryReq));
  queryResHttpRes = mupnp_soap_response_gethttpresponse(mupnp_control_query_response_getsoapresponse(queryRes));
  mupnp_http_request_postresponse(queryReqHttpReq, queryResHttpRes);

  mupnp_control_query_response_delete(queryRes);

  mupnp_log_debug_l4("Leaving...\n");

  return true;
}
Ejemplo n.º 3
0
void ClinkTestcaseHttpRequestRecieved(mUpnpHttpRequest* httpReq)
{
  mUpnpHttpResponse* httpRes;

  httpRes = mupnp_http_response_new();
  mupnp_http_response_setstatuscode(httpRes, MUPNP_HTTP_STATUS_OK);
  mupnp_http_response_setcontent(httpRes, MUPNP_TESTCASE_HTTP_PAGE);
  mupnp_http_response_setcontenttype(httpRes, "text/html");
  mupnp_http_response_setcontentlength(httpRes, strlen(MUPNP_TESTCASE_HTTP_PAGE));
  mupnp_http_request_postresponse(httpReq, httpRes);
  mupnp_http_response_delete(httpRes);
}
Ejemplo n.º 4
0
void round_upnp_server_httprequestrecieved(mUpnpHttpRequest* httpReq)
{
  RoundRpcServer* server = round_upnp_server_getrpcserverfromrequest(httpReq);

  if (server && round_upnp_server_isjsonrpcrequest(httpReq)) {
    // TODO : Change to post message queue
    // round_upnp_server_postrpcrequest(NULL, httpReq);
    server->upnpServer->rpcReqListener(httpReq);
    return;
  }
  else if (round_upnp_server_isrootrequest(httpReq)) {
    mUpnpHttpResponse* httpRes = mupnp_http_response_new();
    mupnp_http_response_setstatuscode(httpRes, MUPNP_HTTP_STATUS_OK);
    mupnp_http_response_setcontentlength(httpRes, 0);
    mupnp_http_request_postresponse(httpReq, httpRes);
    mupnp_http_response_delete(httpRes);
    return;
  }

  mupnp_device_httprequestrecieved(httpReq);
}
Ejemplo n.º 5
0
void upnp_clock_device_httprequestrecieved(mUpnpHttpRequest *httpReq)
{
	mUpnpTime currTime;
	mUpnpDevice *dev;
	char *uri;
	char content[2048];
	char sysTimeStr[SYSTEM_TIME_BUF_LEN];
	char serverName[MUPNP_SEVERNAME_MAXLEN];
	mUpnpHttpResponse *httpRes;
	BOOL postRet;
	
	dev = (mUpnpDevice *)mupnp_http_request_getuserdata(httpReq);

	uri = mupnp_http_request_geturi(httpReq);
	if (strcmp(uri, "/presentation") != 0) {
		mupnp_device_httprequestrecieved(httpReq);
		return;
	}

	currTime = mupnp_getcurrentsystemtime();

#if defined(HAVE_SNPRINTF)
	snprintf(content, sizeof(content),
#else
	sprintf(content,
#endif
		"<HTML>"
		"<HEAD>"
		"<TITLE>UPnP Clock Sample</TITLE>"
		"</HEAD>"
		"<META HTTP-EQUIV=\"Refresh\" CONTENT=\"1; URL=/presentation\">"
		"<BODY><CENTER>"
		"<H1>UPnP Clock Sample</H1>"
		"<TABLE border=\"0\" cellpadding=\"0\" cellspacing=\"0\">"
		"<TR>"
		"<TD style=\"width: 50px; height: 50px; background-color: rgb(176, 176, 176);\"></TD>"
		"<TD style=\"background-color: rgb(176, 176, 176);\"></TD>"
		"<TD style=\"width: 50px; height: 50px; background-color: rgb(176, 176, 176);\"></TD>"
		"</TR>"
		"<TR>"
		"<TD style=\"height: 50px; background-color: rgb(176, 176, 176);\"></TD>"
		"<TD style=\"height: 50px; background-color: rgb(221, 236, 245);\" align=\"center\"><H1>"
		"%s"
		"</H1></TD>"
		"<TD style=\"height: 50px; background-color: rgb(176, 176, 176);\"></TD>"
		"</TR>"
		"<TR>"
		"<TD style=\"height: 50px; background-color: rgb(176, 176, 176);\"></TD>"
		"<TD style=\"height: 50px; background-color: rgb(221, 236, 245);\" align=\"center\"><H3>"
		"Server : %s"
		"</H3></TD>"
		"<TD style=\"height: 30px; background-color: rgb(176, 176, 176);\"></TD>"
		"</TR>"
		"<TR>"
		"<TD style=\"width: 30px; height: 50px; background-color: rgb(176, 176, 176);\"></TD>"
		"<TD style=\"background-color: rgb(176, 176, 176);\"></TD>"
		"<TD style=\"width: 30px; height: 50px; background-color: rgb(176, 176, 176);\"></TD>"
		"</TR>"
		"</TABLE>"
		"<CENTER></BODY>"
		"</HTML>",
		GetSystemTimeString(currTime, sysTimeStr),
		mupnp_getservername(serverName, sizeof(serverName)));

	httpRes = mupnp_http_response_new();
	mupnp_http_response_setstatuscode(httpRes, CG_HTTP_STATUS_OK);
	mupnp_http_response_setcontent(httpRes, content);
	mupnp_http_response_setcontenttype(httpRes, "text/html");
	mupnp_http_response_setcontentlength(httpRes, strlen(content));
	postRet = mupnp_http_request_postresponse(httpReq, httpRes);
	mupnp_http_response_delete(httpRes);
}