コード例 #1
0
ファイル: stream.cpp プロジェクト: DarumasLegs/volumedriver
int main(void)
{
    int pair[2];
    if (pipe(pair) != 0) return -1;

    // run server thread
    Server srv(pair[0]);
    pthread_t thread;
    pthread_create(&thread, NULL,
            run_server, reinterpret_cast<void*>(&srv));

    // client thread:
    fwriter writer(pair[1]);
    msgpack::packer<fwriter> pk(writer);

    typedef msgpack::type::tuple<std::string, std::string, std::string> put_t;
    typedef msgpack::type::tuple<std::string, std::string> get_t;

    put_t req1("put", "apple", "red");
    put_t req2("put", "lemon", "yellow");
    get_t req3("get", "apple");
    pk.pack(req1);
    pk.pack(req2);
    pk.pack(req3);
    writer.flush();
    writer.close();

    pthread_join(thread, NULL);
}
コード例 #2
0
arrivWizardPagePatient::arrivWizardPagePatient()
{
    setTitle(tr("Arrivée d'un patient"));
    QVBoxLayout *layoutVerticale = new QVBoxLayout(this);
    setLayout(layoutVerticale);
    QHBoxLayout * layoutRegime = new QHBoxLayout;
    layoutVerticale->addLayout(layoutRegime);
    labelRegime = new QLabel(tr("&Regime:"),this);
    layoutRegime->addWidget(labelRegime);
    comboBoxRegime = new QComboBox(this);
    comboBoxRegime->addItem("Choisissez");
    QSqlQuery req0("select libelle from regime");
    while (req0.next())
    {
        comboBoxRegime->addItem(req0.value(0).toString());
    }


    labelRegime->setBuddy(comboBoxRegime);
    layoutRegime->addWidget(comboBoxRegime);
    QHBoxLayout * layoutSurveillance = new QHBoxLayout;
    layoutVerticale->addLayout(layoutSurveillance);
    labelSurveillance = new QLabel(tr("&Surveillance:"),this);
    layoutSurveillance->addWidget(labelSurveillance);
    comboBoxSurveillance = new QComboBox(this);

    comboBoxSurveillance->addItem("Choisissez");
    QSqlQuery req1("select libelle from surveillance");
    while (req1.next())
    {
        comboBoxSurveillance->addItem(req1.value(0).toString());
    }


    layoutSurveillance->addWidget(comboBoxSurveillance);
    labelSurveillance->setBuddy(comboBoxSurveillance);
    QHBoxLayout * layoutTravail = new QHBoxLayout;
    layoutVerticale->addLayout(layoutTravail);
    labelTravail=new QLabel(tr("&Travail"),this);

    layoutTravail->addWidget(labelTravail);
    comboBoxTravail= new QComboBox(this);
    labelTravail->setBuddy(comboBoxTravail);
    comboBoxTravail->addItem("Choisissez");
    //boucle de création des item
    QSqlQuery req("select libelle from travail");
    while (req.next())
    {
        comboBoxTravail->addItem(req.value(0).toString());
    }
    comboBoxTravail->addItem("Aucun");

    layoutTravail->addWidget(comboBoxTravail);

    registerField("regime*", comboBoxRegime);
    registerField("surveillance*",comboBoxSurveillance);
    registerField("travail*", comboBoxTravail);
}
コード例 #3
0
void MainWindow::on_pushButtonNouvelleBase_clicked()
{
    QSqlQuery req("create database "+ui->lineEditNomNouvelleBase->text());
    this->connexionOK();
    ui->lineEditNomNouvelleBase->clear();
    ui->listWidgetConnexion->clear();
    QSqlQuery req1("show databases");
    while(req1.next())
      {
          ui->listWidgetConnexion->addItem(req1.value(0).toString());
      }
}
コード例 #4
0
 /// Handle a request and produce a reply.
 void handle_request(const std::vector<std::string>& url, std::shared_ptr<csi::http::connection> context)
 {
     if (context->request().method() == csi::http::POST)
     {
         std::shared_ptr<sample_data_req1> req1(new sample_data_req1());
         if (csi::json_spirit_decode(context->request().content(), *req1))
             _service->post(req1, context);
         else
             context->reply().create(csi::http::bad_request);
         return;
     }
     context->reply().create(csi::http::bad_request);
 }
コード例 #5
0
ファイル: interfaces.cpp プロジェクト: theopolis/osquery
void genInterfaceDetail(const IP_ADAPTER_ADDRESSES* adapter, Row& r) {
  r["interface"] = INTEGER(adapter->IfIndex);
  r["mtu"] = INTEGER(adapter->Mtu);
  r["type"] = INTEGER(adapter->IfType);
  r["description"] = wstringToString(adapter->Description);

  std::vector<std::string> toks;
  for (size_t i = 0; i < adapter->PhysicalAddressLength; i++) {
    std::stringstream ss;
    ss << std::hex;
    ss << static_cast<unsigned int>(adapter->PhysicalAddress[i]);
    auto s = ss.str();
    if (s.size() < 2_sz) {
      s = '0' + s;
    }
    toks.push_back(s);
  }
  r["mac"] = osquery::join(toks, ":");
  r["flags"] = INTEGER(adapter->Flags);
  r["metric"] = INTEGER(adapter->Ipv4Metric);

  // TODO: These values will need an equivalent on Windows systems
  r["last_change"] = BIGINT("-1");
  r["collisions"] = BIGINT("-1");

  // Grab the remaining table values from WMI
  auto query =
      "SELECT * FROM Win32_PerfRawData_Tcpip_NetworkInterface WHERE "
      "Name = \"" +
      r["description"] + "\"";

  WmiRequest req1(query);
  if (req1.getStatus().ok()) {
    auto& results = req1.results();
    if (!results.empty()) {
      std::string sPlaceHolder;
      unsigned long long ullPlaceHolder = 0;

      results[0].GetString("PacketsReceivedPerSec", sPlaceHolder);
      safeStrtoull(sPlaceHolder, 10, ullPlaceHolder);
      r["ipackets"] = BIGINT(ullPlaceHolder);
      results[0].GetString("PacketsSentPerSec", sPlaceHolder);
      safeStrtoull(sPlaceHolder, 10, ullPlaceHolder);
      r["opackets"] = BIGINT(ullPlaceHolder);

      results[0].GetString("BytesReceivedPerSec", sPlaceHolder);
      safeStrtoull(sPlaceHolder, 10, ullPlaceHolder);
      r["ibytes"] = BIGINT(ullPlaceHolder);
      results[0].GetString("BytesSentPerSec", sPlaceHolder);
      safeStrtoull(sPlaceHolder, 10, ullPlaceHolder);
      r["obytes"] = BIGINT(ullPlaceHolder);

      results[0].GetString("PacketsReceivedErrors", sPlaceHolder);
      safeStrtoull(sPlaceHolder, 10, ullPlaceHolder);
      r["ierrors"] = BIGINT(ullPlaceHolder);
      results[0].GetString("PacketsOutboundErrors", sPlaceHolder);
      safeStrtoull(sPlaceHolder, 10, ullPlaceHolder);
      r["oerrors"] = BIGINT(ullPlaceHolder);

      results[0].GetString("PacketsReceivedDiscarded", sPlaceHolder);
      safeStrtoull(sPlaceHolder, 10, ullPlaceHolder);
      r["idrops"] = BIGINT(ullPlaceHolder);
      results[0].GetString("PacketsOutboundDiscarded", sPlaceHolder);
      safeStrtoull(sPlaceHolder, 10, ullPlaceHolder);
      r["odrops"] = BIGINT(ullPlaceHolder);
    } else {
      LOG(INFO) << "Failed to retrieve network statistics for interface "
                << r["interface"];
    }
  }

  query =
      "SELECT * FROM Win32_NetworkAdapter WHERE "
      "InterfaceIndex = " +
      r["interface"];
  WmiRequest req2(query);
  if (req2.getStatus().ok()) {
    auto& results = req2.results();
    if (!results.empty()) {
      bool bPlaceHolder;
      long lPlaceHolder = 0;
      unsigned __int64 ullPlaceHolder = 0;
      results[0].GetString("Manufacturer", r["manufacturer"]);
      results[0].GetString("NetConnectionID", r["connection_id"]);
      results[0].GetLong("NetConnectionStatus", lPlaceHolder);
      r["connection_status"] = INTEGER(lPlaceHolder);
      results[0].GetBool("NetEnabled", bPlaceHolder);
      r["enabled"] = INTEGER(bPlaceHolder);
      results[0].GetBool("PhysicalAdapter", bPlaceHolder);
      r["physical_adapter"] = INTEGER(bPlaceHolder);
      results[0].GetString("ServiceName", r["service"]);
      results[0].GetUnsignedLongLong("Speed", ullPlaceHolder);
      r["speed"] = INTEGER(ullPlaceHolder);
    } else {
      LOG(INFO) << "Failed to retrieve physical state for interface "
                << r["interface"];
    }
  }

  query =
      "SELECT * FROM win32_networkadapterconfiguration WHERE "
      "InterfaceIndex = " +
      r["interface"];
  WmiRequest req3(query);
  if (req3.getStatus().ok()) {
    auto& results = req3.results();
    if (!results.empty()) {
      bool bPlaceHolder;
      std::vector<std::string> vPlaceHolder;
      results[0].GetBool("DHCPEnabled", bPlaceHolder);
      r["dhcp_enabled"] = INTEGER(bPlaceHolder);
      results[0].GetString("DHCPLeaseExpires", r["dhcp_lease_expires"]);
      results[0].GetString("DHCPLeaseObtained", r["dhcp_lease_obtained"]);
      results[0].GetString("DHCPServer", r["dhcp_server"]);
      results[0].GetString("DNSDomain", r["dns_domain"]);
      results[0].GetVectorOfStrings("DNSDomainSuffixSearchOrder", vPlaceHolder);
      r["dns_domain_suffix_search_order"] = osquery::join(vPlaceHolder, ", ");
      results[0].GetString("DNSHostName", r["dns_host_name"]);
      results[0].GetVectorOfStrings("DNSServerSearchOrder", vPlaceHolder);
      r["dns_server_search_order"] = osquery::join(vPlaceHolder, ", ");
    } else {
      LOG(INFO) << "Failed to retrieve DHCP and DNS information for interface "
                << r["interface"];
    }
  }
}
コード例 #6
0
ファイル: DJFrontEnd.cpp プロジェクト: bubbletreefrog/DLNA
void FrontEnd::processSsdpSearch(SsdpServerTask *task, Interface *intf, const NPT_DataBuffer& data, const NPT_SocketAddress& fromAddr)
{
	do {
		NPT_HttpRequest *req;
		NPT_InputStreamReference inputStream0(new NPT_MemoryStream(data.GetData(), data.GetDataSize()));
		NPT_BufferedInputStream inputStream(inputStream0);
		if (NPT_FAILED(NPT_HttpRequest::Parse(inputStream, NULL, req))) {
			break;
		}

		PtrHolder<NPT_HttpRequest> req1(req);
		if (req->GetMethod().Compare("M-SEARCH") != 0 || req->GetProtocol().Compare(NPT_HTTP_PROTOCOL_1_1) != 0 || req->GetUrl().GetPath().Compare("*") != 0) {
			break;
		}

		NPT_HttpHeader *hdrMan = req->GetHeaders().GetHeader("MAN");
		if (!hdrMan || hdrMan->GetValue().Compare("\"ssdp:discover\"") != 0) {
			break;
		}

		NPT_HttpHeader *hdrHost = req->GetHeaders().GetHeader("HOST");
		if (!hdrHost || (hdrHost->GetValue().Compare("239.255.255.250:1900") != 0 && hdrHost->GetValue().Compare("239.255.255.250") != 0)) {
			break;
		}

		int mx;
		NPT_HttpHeader *hdrMX = req->GetHeaders().GetHeader("MX");
		if (!hdrMX || NPT_FAILED(NPT_ParseInteger(hdrMX->GetValue(), mx)) || mx < 1) {
			break;
		}

		if (mx > 120) {
			mx = 120;
		}

		NPT_HttpHeader *hdrST = req->GetHeaders().GetHeader("ST");
		if (!hdrST) {
			break;
		}

		NPT_List<MatchContext*> matchList;

		NPT_UdpSocket sock(NPT_SOCKET_FLAG_CANCELLABLE);
		sock.Bind(NPT_SocketAddress(intf->m_context.m_ifAddr, 0));
		NPT_SharedVariable waitVar;
		waitVar.SetValue(0);

		{
			ReadLocker locker(m_dsLock);
			for (NPT_Ordinal i = 0; i < m_deviceImplList.GetItemCount(); i++) {
				NPT_List<DeviceImplInfo*>::Iterator it = m_deviceImplList.GetItem(i);
				DeviceImplInfo *info = *it;
				MatchContext *matchContext = new MatchContext();
				if (info->m_deviceImpl->match(hdrST->GetValue(), matchContext->matches)) {
					matchList.Add(matchContext);
					matchContext->deviceUuid = info->m_deviceImpl->uuid();
					matchContext->expireSeconds = info->m_deviceImpl->m_expireSeconds;
					matchContext->descPath = info->m_deviceImpl->m_descPath;
					matchContext->httpRoot = info->m_context.m_httpRoot;
				} else {
					delete matchContext;
				}
			}
		}

		SsdpSearchAbortCallback abortCallback(&sock, &waitVar);
		if (task->registerAbortCallback(&abortCallback)) {

			for (NPT_Ordinal i = 0; i < matchList.GetItemCount(); i++) {
				MatchContext *matchContext = *matchList.GetItem(i);

				NPT_String location = NPT_String::Format("http://%s:%d%s%s", intf->m_context.m_ifAddr.ToString().GetChars(), intf->m_context.m_httpPort, matchContext->httpRoot.GetChars(), matchContext->descPath.GetChars());

				bool broken = false;

				for (NPT_Ordinal j = 0; j < matchContext->matches.GetItemCount(); j++) {
					NPT_List<DeviceImplMatch>::Iterator it2 = matchContext->matches.GetItem(j);

					NPT_Timeout timeout = NPT_System::GetRandomInteger() % (mx * 1000);
					// TODO: wait or not ???
					timeout = 0;
					if (NPT_SUCCEEDED(waitVar.WaitWhileEquals(0, timeout))) {
						break;
					}

					{
						ReadLocker locker(m_dsLock);
						if (m_deviceImplIndex.HasKey(matchContext->deviceUuid)) {
							NPT_TimeStamp ts;
							NPT_System::GetCurrentTimeStamp(ts);
							NPT_String dateStr = NPT_DateTime(ts).ToString(NPT_DateTime::FORMAT_RFC_1123);
							NPT_String resp = NPT_String::Format("HTTP/1.1 200 OK\r\nCACHE-CONTROL: max-age=%d\r\nDATE: %s\r\nEXT: \r\nLOCATION: %s\r\nSERVER: %s\r\nST: %s\r\nUSN: %s\r\nCUSTOM:%s\r\n\r\n",
														matchContext->expireSeconds, dateStr.GetChars(), location.GetChars(), m_serverHeader.GetChars(), it2->m_st.GetChars(), it2->m_usn.GetChars(), m_DevName.GetChars());
							NPT_DataBuffer packet(resp.GetChars(), resp.GetLength(), false);
							sock.Send(packet, &fromAddr);
						}
					}
				}

				if (broken) {
					break;
				}
			}

			task->unregisterAbortCallback(&abortCallback);
		}

		matchList.Apply(NPT_ObjectDeleter<MatchContext>());
	} while (false);
}
コード例 #7
0
ファイル: DJFrontEnd.cpp プロジェクト: bubbletreefrog/DLNA
void FrontEnd::httpConnectorOnNewClient(HttpServerTask *task, Interface *intf, NPT_Socket *client)
{
	NPT_Result nr;
	NPT_InputStreamReference inputStream0;
	nr = client->GetInputStream(inputStream0);
	if (NPT_FAILED(nr)) {
		return;
	}

	NPT_OutputStreamReference outputStream;
	nr = client->GetOutputStream(outputStream);
	if (NPT_FAILED(nr)) {
		return;
	}

	NPT_BufferedInputStreamReference inputStream(new NPT_BufferedInputStream(inputStream0));

	NPT_HttpRequest *req;

	nr = NPT_HttpRequest::Parse(*inputStream.AsPointer(), NULL, req);
	if (NPT_FAILED(nr)) {
		return;
	}

	// TODO: validate "HOST" ???

	RequestContext reqCtx;
	reqCtx.clientHint = CH_Unknown;
	reqCtx.transferMode = TM_None;
	reqCtx.getcontentFeaturesReq = false;

	NPT_HttpHeader *hdrUserAgent = req->GetHeaders().GetHeader(NPT_HTTP_HEADER_USER_AGENT);
	if (hdrUserAgent) {
		if (hdrUserAgent->GetValue().Find("xbox", 0, true) >= 0) {
			NPT_LOG_INFO_1("XBox found [User-Agent: %s]", hdrUserAgent->GetValue().GetChars());
			reqCtx.clientHint = CH_XBox;
		}
	}

	NPT_HttpHeader *hdrTransferMode = req->GetHeaders().GetHeader("transferMode.dlna.org");
	if (hdrTransferMode) {
		const NPT_String& transferMode = hdrTransferMode->GetValue();
		if (transferMode.Compare("Streaming", true) == 0) {
			reqCtx.transferMode = TM_Streaming;
		} else if (transferMode.Compare("Interactive", true) == 0) {
			reqCtx.transferMode = TM_Interactive;
		} else if (transferMode.Compare("Background", true) == 0) {
			reqCtx.transferMode = TM_Background;
		} else {
			reqCtx.transferMode = TM_Unknown;
		}
	}

	NPT_HttpHeader *hdrGetContentFeatures = req->GetHeaders().GetHeader("getcontentFeatures.dlna.org");
	if (hdrGetContentFeatures) {
		NPT_String getContentFeatures = hdrGetContentFeatures->GetValue();
		if (getContentFeatures.Trim().Compare("1") == 0) {
			reqCtx.getcontentFeaturesReq = true;
		}
	}

	NPT_SocketInfo si;
	client->GetInfo(si);
	onHttpRequestHeader(si, req);

	PtrHolder<NPT_HttpRequest> req1(req);
	NPT_String reqPath(req->GetUrl().GetPath());

	NPT_TimeStamp ts;
	NPT_System::GetCurrentTimeStamp(ts);
	NPT_String dateStr = NPT_DateTime(ts).ToString(NPT_DateTime::FORMAT_RFC_1123);

	NPT_HttpResponse *resp = new NPT_HttpResponse(200, "OK", NPT_HTTP_PROTOCOL_1_1);
	PtrHolder<NPT_HttpResponse> resp1(resp);
	resp->GetHeaders().SetHeader(NPT_HTTP_HEADER_SERVER, m_serverHeader);
	resp->GetHeaders().SetHeader("Date", dateStr);
	resp->GetHeaders().SetHeader(NPT_HTTP_HEADER_CONTENT_LENGTH, "0");
	resp->GetHeaders().SetHeader(NPT_HTTP_HEADER_CONTENT_TYPE, "text/xml");

	HttpOutput *httpOutput = new HttpOutputImpl(this, si, outputStream);
	PtrHolder<HttpOutput> httpOutput1(httpOutput);

	{
		ReadLocker locker(m_cpLock);
		for (NPT_Ordinal i = 0; i < m_controlPointList.GetItemCount(); i++) {
			NPT_List<ControlPointInfo*>::Iterator it = m_controlPointList.GetItem(i);
			ControlPointInfo *info = *it;
			if (reqPath.StartsWith(info->m_context.m_httpRoot)) {
				NPT_InputStream *input = inputStream.AsPointer();
				inputStream.Detach();
				httpOutput1.detach();
				resp1.detach();
				req1.detach();
				task->detach();
				return info->m_controlPoint->processHttpRequest(&intf->m_context, reqPath.SubString(info->m_context.m_httpRoot.GetLength()), reqCtx, req, resp, input, httpOutput, client);
			}
		}
	}

	{
		ReadLocker locker(m_dsLock);
		for (NPT_Ordinal i = 0; i < m_deviceImplList.GetItemCount(); i++) {
			NPT_List<DeviceImplInfo*>::Iterator it = m_deviceImplList.GetItem(i);
			DeviceImplInfo *info = *it;
			if (reqPath.StartsWith(info->m_context.m_httpRoot)) {
				NPT_InputStream *input = inputStream.AsPointer();
				inputStream.Detach();
				httpOutput1.detach();
				resp1.detach();
				req1.detach();
				task->detach();
				return info->m_deviceImpl->processHttpRequest(&intf->m_context, reqPath.SubString(info->m_context.m_httpRoot.GetLength()), reqCtx, req, resp, input, httpOutput, client);
			}
		}
	}

	setStatusCode(*resp, 404);
	httpOutput->writeResponseHeader(*resp);
	httpOutput->flush();

}
コード例 #8
0
ファイル: tsp.c プロジェクト: 2dot4/Psiphon3-for-Linux
int tsp_main(int ac,const char *av[]){
	req1("xxx.xxx.xxx",318);
	return 0;
}