comparison OrthancServer/main.cpp @ 1962:22ddb22fce83

sample plugin
author Sebastien Jodogne <s.jodogne@gmail.com>
date Thu, 07 Apr 2016 17:42:20 +0200
parents 45c4387a379c
children 877713b3a91c
comparison
equal deleted inserted replaced
1961:ef1e9856c26f 1962:22ddb22fce83
276 276
277 class MyIncomingHttpRequestFilter : public IIncomingHttpRequestFilter 277 class MyIncomingHttpRequestFilter : public IIncomingHttpRequestFilter
278 { 278 {
279 private: 279 private:
280 ServerContext& context_; 280 ServerContext& context_;
281 OrthancPlugins* plugins_;
281 282
282 public: 283 public:
283 MyIncomingHttpRequestFilter(ServerContext& context) : context_(context) 284 MyIncomingHttpRequestFilter(ServerContext& context,
285 OrthancPlugins* plugins) :
286 context_(context),
287 plugins_(plugins)
284 { 288 {
285 } 289 }
286 290
287 virtual bool IsAllowed(HttpMethod method, 291 virtual bool IsAllowed(HttpMethod method,
288 const char* uri, 292 const char* uri,
289 const char* ip, 293 const char* ip,
290 const char* username, 294 const char* username,
291 const IHttpHandler::Arguments& httpHeaders) const 295 const IHttpHandler::Arguments& httpHeaders) const
292 { 296 {
297 if (plugins_ != NULL &&
298 !plugins_->IsAllowed(method, uri, ip, username, httpHeaders))
299 {
300 return false;
301 }
302
293 static const char* HTTP_FILTER = "IncomingHttpRequestFilter"; 303 static const char* HTTP_FILTER = "IncomingHttpRequestFilter";
294 304
295 LuaScripting::Locker locker(context_.GetLua()); 305 LuaScripting::Locker locker(context_.GetLua());
296 306
297 // Test if the instance must be filtered out 307 // Test if the instance must be filtered out
677 687
678 MyHttpExceptionFormatter exceptionFormatter(Configuration::GetGlobalBoolParameter("HttpDescribeErrors", true), plugins); 688 MyHttpExceptionFormatter exceptionFormatter(Configuration::GetGlobalBoolParameter("HttpDescribeErrors", true), plugins);
679 689
680 690
681 // HTTP server 691 // HTTP server
682 MyIncomingHttpRequestFilter httpFilter(context); 692 MyIncomingHttpRequestFilter httpFilter(context, plugins);
683 MongooseServer httpServer; 693 MongooseServer httpServer;
684 httpServer.SetPortNumber(Configuration::GetGlobalIntegerParameter("HttpPort", 8042)); 694 httpServer.SetPortNumber(Configuration::GetGlobalIntegerParameter("HttpPort", 8042));
685 httpServer.SetRemoteAccessAllowed(Configuration::GetGlobalBoolParameter("RemoteAccessAllowed", false)); 695 httpServer.SetRemoteAccessAllowed(Configuration::GetGlobalBoolParameter("RemoteAccessAllowed", false));
686 httpServer.SetKeepAliveEnabled(Configuration::GetGlobalBoolParameter("KeepAlive", false)); 696 httpServer.SetKeepAliveEnabled(Configuration::GetGlobalBoolParameter("KeepAlive", false));
687 httpServer.SetHttpCompressionEnabled(Configuration::GetGlobalBoolParameter("HttpCompressionEnabled", true)); 697 httpServer.SetHttpCompressionEnabled(Configuration::GetGlobalBoolParameter("HttpCompressionEnabled", true));