# HG changeset patch # User Sebastien Jodogne # Date 1382694617 -7200 # Node ID 5ab377df6d8b017feb035661465907e1156c0c23 # Parent a24b0161b1719c98f009b1e371e863a8a0b0511f filtering on aet diff -r a24b0161b171 -r 5ab377df6d8b OrthancServer/DicomProtocol/IFindRequestHandler.h --- a/OrthancServer/DicomProtocol/IFindRequestHandler.h Fri Oct 25 11:28:02 2013 +0200 +++ b/OrthancServer/DicomProtocol/IFindRequestHandler.h Fri Oct 25 11:50:17 2013 +0200 @@ -47,7 +47,7 @@ { } - virtual void Handle(const DicomMap& input, - DicomFindAnswers& answers) = 0; + virtual void Handle(DicomFindAnswers& answers, + const DicomMap& input) = 0; }; } diff -r a24b0161b171 -r 5ab377df6d8b OrthancServer/Internals/FindScp.cpp --- a/OrthancServer/Internals/FindScp.cpp Fri Oct 25 11:28:02 2013 +0200 +++ b/OrthancServer/Internals/FindScp.cpp Fri Oct 25 11:50:17 2013 +0200 @@ -74,7 +74,7 @@ try { - data.handler_->Handle(data.input_, data.answers_); + data.handler_->Handle(data.answers_, data.input_); } catch (OrthancException& e) { diff -r a24b0161b171 -r 5ab377df6d8b OrthancServer/OrthancFindRequestHandler.cpp --- a/OrthancServer/OrthancFindRequestHandler.cpp Fri Oct 25 11:28:02 2013 +0200 +++ b/OrthancServer/OrthancFindRequestHandler.cpp Fri Oct 25 11:50:17 2013 +0200 @@ -36,6 +36,7 @@ #include "../Core/DicomFormat/DicomArray.h" #include "ServerToolbox.h" +#include "OrthancInitialization.h" namespace Orthanc { @@ -300,7 +301,6 @@ std::string str = query.GetValue(tag).AsString(); if (!IsWildcard(str)) { - printf(">> [%s]\n", str.c_str()); index.LookupTagValue(resources, tag, str/*, level*/); return true; } @@ -358,11 +358,9 @@ } - void OrthancFindRequestHandler::Handle(const DicomMap& input, - DicomFindAnswers& answers) + void OrthancFindRequestHandler::Handle(DicomFindAnswers& answers, + const DicomMap& input) { - LOG(WARNING) << "Find-SCU request received"; - /** * Retrieve the query level. **/ diff -r a24b0161b171 -r 5ab377df6d8b OrthancServer/OrthancFindRequestHandler.h --- a/OrthancServer/OrthancFindRequestHandler.h Fri Oct 25 11:28:02 2013 +0200 +++ b/OrthancServer/OrthancFindRequestHandler.h Fri Oct 25 11:50:17 2013 +0200 @@ -48,7 +48,7 @@ { } - virtual void Handle(const DicomMap& input, - DicomFindAnswers& answers); + virtual void Handle(DicomFindAnswers& answers, + const DicomMap& input); }; } diff -r a24b0161b171 -r 5ab377df6d8b OrthancServer/main.cpp --- a/OrthancServer/main.cpp Fri Oct 25 11:28:02 2013 +0200 +++ b/OrthancServer/main.cpp Fri Oct 25 11:50:17 2013 +0200 @@ -257,6 +257,25 @@ }; +class OrthancApplicationEntityFilter : public IApplicationEntityFilter +{ +public: + virtual bool IsAllowed(const std::string& /*callingIp*/, + const std::string& callingAet) + { + if (!IsKnownAETitle(callingAet)) + { + LOG(ERROR) << "Unkwnown remote DICOM modality AET: \"" << callingAet << "\""; + return false; + } + else + { + return true; + } + } +}; + + class MyIncomingHttpRequestFilter : public IIncomingHttpRequestFilter { private: @@ -481,12 +500,14 @@ { // DICOM server DicomServer dicomServer; + OrthancApplicationEntityFilter dicomFilter; dicomServer.SetCalledApplicationEntityTitleCheck(GetGlobalBoolParameter("DicomCheckCalledAet", false)); dicomServer.SetStoreRequestHandlerFactory(serverFactory); dicomServer.SetMoveRequestHandlerFactory(serverFactory); dicomServer.SetFindRequestHandlerFactory(serverFactory); dicomServer.SetPortNumber(GetGlobalIntegerParameter("DicomPort", 4242)); dicomServer.SetApplicationEntityTitle(GetGlobalStringParameter("DicomAet", "ORTHANC")); + dicomServer.SetApplicationEntityFilter(dicomFilter); // HTTP server MyIncomingHttpRequestFilter httpFilter(context);