Mercurial > hg > orthanc
annotate OrthancServer/main.cpp @ 1795:af6840eb23ee worklists
HierarchicalMatcher
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Thu, 19 Nov 2015 17:41:22 +0100 |
parents | 1b1d5470233f |
children | 5e08a5fe6b27 |
rev | line source |
---|---|
0 | 1 /** |
62 | 2 * Orthanc - A Lightweight, RESTful DICOM Store |
1288
6e7e5ed91c2d
upgrade to year 2015
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1285
diff
changeset
|
3 * Copyright (C) 2012-2015 Sebastien Jodogne, Medical Physics |
6e7e5ed91c2d
upgrade to year 2015
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1285
diff
changeset
|
4 * Department, University Hospital of Liege, Belgium |
0 | 5 * |
6 * This program is free software: you can redistribute it and/or | |
7 * modify it under the terms of the GNU General Public License as | |
8 * published by the Free Software Foundation, either version 3 of the | |
9 * License, or (at your option) any later version. | |
136 | 10 * |
11 * In addition, as a special exception, the copyright holders of this | |
12 * program give permission to link the code of its release with the | |
13 * OpenSSL project's "OpenSSL" library (or with modified versions of it | |
14 * that use the same license as the "OpenSSL" library), and distribute | |
15 * the linked executables. You must obey the GNU General Public License | |
16 * in all respects for all of the code used other than "OpenSSL". If you | |
17 * modify file(s) with this exception, you may extend this exception to | |
18 * your version of the file(s), but you are not obligated to do so. If | |
19 * you do not wish to do so, delete this exception statement from your | |
20 * version. If you delete this exception statement from all source files | |
21 * in the program, then also delete it here. | |
0 | 22 * |
23 * This program is distributed in the hope that it will be useful, but | |
24 * WITHOUT ANY WARRANTY; without even the implied warranty of | |
25 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
26 * General Public License for more details. | |
27 * | |
28 * You should have received a copy of the GNU General Public License | |
29 * along with this program. If not, see <http://www.gnu.org/licenses/>. | |
30 **/ | |
31 | |
32 | |
831
84513f2ee1f3
pch for unit tests and server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
824
diff
changeset
|
33 #include "PrecompiledHeadersServer.h" |
750 | 34 #include "OrthancRestApi/OrthancRestApi.h" |
0 | 35 |
175
662af781a227
sample config file from command line
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
158
diff
changeset
|
36 #include <fstream> |
112 | 37 #include <boost/algorithm/string/predicate.hpp> |
0 | 38 |
1485
27661b33f624
Creation of Logging.h
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1455
diff
changeset
|
39 #include "../Core/Logging.h" |
1127
f4e65808ea58
FilesystemStorageWithoutDicom
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1124
diff
changeset
|
40 #include "../Core/Uuid.h" |
0 | 41 #include "../Core/HttpServer/EmbeddedResourceHttpHandler.h" |
42 #include "../Core/HttpServer/FilesystemHttpHandler.h" | |
388
466c992a9a42
testing filters inside orthanc
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
376
diff
changeset
|
43 #include "../Core/Lua/LuaFunctionCall.h" |
387
ff647eedfbe1
enabling of Find/Move commands
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
376
diff
changeset
|
44 #include "../Core/DicomFormat/DicomArray.h" |
0 | 45 #include "DicomProtocol/DicomServer.h" |
774 | 46 #include "DicomProtocol/ReusableDicomUserConnection.h" |
62 | 47 #include "OrthancInitialization.h" |
224
4eb0c7ce86c9
refactoring for store
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
210
diff
changeset
|
48 #include "ServerContext.h" |
565
c931ac02db82
refactoring of find class
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
559
diff
changeset
|
49 #include "OrthancFindRequestHandler.h" |
619 | 50 #include "OrthancMoveRequestHandler.h" |
730
309e686b41e7
better logging about nonexistent tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
725
diff
changeset
|
51 #include "ServerToolbox.h" |
1132 | 52 #include "../Plugins/Engine/OrthancPlugins.h" |
1366 | 53 #include "FromDcmtkBridge.h" |
0 | 54 |
1795
af6840eb23ee
HierarchicalMatcher
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1787
diff
changeset
|
55 #include "Search/HierarchicalMatcher.h" |
af6840eb23ee
HierarchicalMatcher
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1787
diff
changeset
|
56 |
62 | 57 using namespace Orthanc; |
0 | 58 |
59 | |
613 | 60 class OrthancStoreRequestHandler : public IStoreRequestHandler |
0 | 61 { |
62 private: | |
388
466c992a9a42
testing filters inside orthanc
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
376
diff
changeset
|
63 ServerContext& server_; |
0 | 64 |
65 public: | |
613 | 66 OrthancStoreRequestHandler(ServerContext& context) : |
388
466c992a9a42
testing filters inside orthanc
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
376
diff
changeset
|
67 server_(context) |
0 | 68 { |
69 } | |
70 | |
1573
3309878b3e16
more information about the origin of requests submitted to the DICOM handlers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1572
diff
changeset
|
71 |
291
4d7469f72a0b
embedding of dicom dictionaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
270
diff
changeset
|
72 virtual void Handle(const std::string& dicomFile, |
0 | 73 const DicomMap& dicomSummary, |
74 const Json::Value& dicomJson, | |
1573
3309878b3e16
more information about the origin of requests submitted to the DICOM handlers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1572
diff
changeset
|
75 const std::string& remoteIp, |
1285
5730f374e4e6
Access to called AET and remote AET from Lua scripts
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1280
diff
changeset
|
76 const std::string& remoteAet, |
1573
3309878b3e16
more information about the origin of requests submitted to the DICOM handlers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1572
diff
changeset
|
77 const std::string& calledAet) |
0 | 78 { |
79 if (dicomFile.size() > 0) | |
80 { | |
1005
84b6d7bca6db
refactoring of ServerContext::Store
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
996
diff
changeset
|
81 DicomInstanceToStore toStore; |
1573
3309878b3e16
more information about the origin of requests submitted to the DICOM handlers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1572
diff
changeset
|
82 toStore.SetDicomProtocolOrigin(remoteIp.c_str(), remoteAet.c_str(), calledAet.c_str()); |
1005
84b6d7bca6db
refactoring of ServerContext::Store
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
996
diff
changeset
|
83 toStore.SetBuffer(dicomFile); |
84b6d7bca6db
refactoring of ServerContext::Store
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
996
diff
changeset
|
84 toStore.SetSummary(dicomSummary); |
84b6d7bca6db
refactoring of ServerContext::Store
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
996
diff
changeset
|
85 toStore.SetJson(dicomJson); |
84b6d7bca6db
refactoring of ServerContext::Store
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
996
diff
changeset
|
86 |
84b6d7bca6db
refactoring of ServerContext::Store
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
996
diff
changeset
|
87 std::string id; |
84b6d7bca6db
refactoring of ServerContext::Store
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
996
diff
changeset
|
88 server_.Store(id, toStore); |
0 | 89 } |
90 } | |
91 }; | |
92 | |
93 | |
1786
164d78911382
primitives to handle dicom worklists
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1781
diff
changeset
|
94 class OrthancWorklistRequestHandler : public IWorklistRequestHandler |
164d78911382
primitives to handle dicom worklists
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1781
diff
changeset
|
95 { |
164d78911382
primitives to handle dicom worklists
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1781
diff
changeset
|
96 private: |
164d78911382
primitives to handle dicom worklists
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1781
diff
changeset
|
97 ServerContext& server_; |
164d78911382
primitives to handle dicom worklists
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1781
diff
changeset
|
98 |
164d78911382
primitives to handle dicom worklists
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1781
diff
changeset
|
99 public: |
164d78911382
primitives to handle dicom worklists
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1781
diff
changeset
|
100 OrthancWorklistRequestHandler(ServerContext& context) : |
164d78911382
primitives to handle dicom worklists
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1781
diff
changeset
|
101 server_(context) |
164d78911382
primitives to handle dicom worklists
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1781
diff
changeset
|
102 { |
164d78911382
primitives to handle dicom worklists
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1781
diff
changeset
|
103 } |
164d78911382
primitives to handle dicom worklists
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1781
diff
changeset
|
104 |
1787
1b1d5470233f
refactoring of DicomFindAnswers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1786
diff
changeset
|
105 virtual bool Handle(DicomFindAnswers& answers, |
1795
af6840eb23ee
HierarchicalMatcher
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1787
diff
changeset
|
106 ParsedDicomFile& query, |
1786
164d78911382
primitives to handle dicom worklists
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1781
diff
changeset
|
107 const std::string& remoteIp, |
164d78911382
primitives to handle dicom worklists
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1781
diff
changeset
|
108 const std::string& remoteAet) |
164d78911382
primitives to handle dicom worklists
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1781
diff
changeset
|
109 { |
164d78911382
primitives to handle dicom worklists
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1781
diff
changeset
|
110 printf("Worklist\n"); |
1795
af6840eb23ee
HierarchicalMatcher
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1787
diff
changeset
|
111 |
af6840eb23ee
HierarchicalMatcher
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1787
diff
changeset
|
112 bool caseSensitivePN = Configuration::GetGlobalBoolParameter("CaseSensitivePN", false); |
af6840eb23ee
HierarchicalMatcher
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1787
diff
changeset
|
113 HierarchicalMatcher matcher(query, caseSensitivePN); |
af6840eb23ee
HierarchicalMatcher
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1787
diff
changeset
|
114 |
af6840eb23ee
HierarchicalMatcher
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1787
diff
changeset
|
115 std::cout << matcher.Format(); |
af6840eb23ee
HierarchicalMatcher
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1787
diff
changeset
|
116 |
1786
164d78911382
primitives to handle dicom worklists
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1781
diff
changeset
|
117 return true; |
164d78911382
primitives to handle dicom worklists
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1781
diff
changeset
|
118 } |
164d78911382
primitives to handle dicom worklists
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1781
diff
changeset
|
119 }; |
164d78911382
primitives to handle dicom worklists
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1781
diff
changeset
|
120 |
613 | 121 |
387
ff647eedfbe1
enabling of Find/Move commands
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
376
diff
changeset
|
122 class MyDicomServerFactory : |
ff647eedfbe1
enabling of Find/Move commands
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
376
diff
changeset
|
123 public IStoreRequestHandlerFactory, |
1786
164d78911382
primitives to handle dicom worklists
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1781
diff
changeset
|
124 public IFindRequestHandlerFactory, |
164d78911382
primitives to handle dicom worklists
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1781
diff
changeset
|
125 public IWorklistRequestHandlerFactory, |
387
ff647eedfbe1
enabling of Find/Move commands
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
376
diff
changeset
|
126 public IMoveRequestHandlerFactory |
ff647eedfbe1
enabling of Find/Move commands
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
376
diff
changeset
|
127 { |
ff647eedfbe1
enabling of Find/Move commands
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
376
diff
changeset
|
128 private: |
ff647eedfbe1
enabling of Find/Move commands
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
376
diff
changeset
|
129 ServerContext& context_; |
ff647eedfbe1
enabling of Find/Move commands
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
376
diff
changeset
|
130 |
ff647eedfbe1
enabling of Find/Move commands
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
376
diff
changeset
|
131 public: |
ff647eedfbe1
enabling of Find/Move commands
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
376
diff
changeset
|
132 MyDicomServerFactory(ServerContext& context) : context_(context) |
0 | 133 { |
134 } | |
135 | |
136 virtual IStoreRequestHandler* ConstructStoreRequestHandler() | |
137 { | |
613 | 138 return new OrthancStoreRequestHandler(context_); |
387
ff647eedfbe1
enabling of Find/Move commands
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
376
diff
changeset
|
139 } |
ff647eedfbe1
enabling of Find/Move commands
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
376
diff
changeset
|
140 |
ff647eedfbe1
enabling of Find/Move commands
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
376
diff
changeset
|
141 virtual IFindRequestHandler* ConstructFindRequestHandler() |
ff647eedfbe1
enabling of Find/Move commands
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
376
diff
changeset
|
142 { |
941
83489fddd8c5
Options to limit the number of results for an incoming C-FIND query
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
831
diff
changeset
|
143 std::auto_ptr<OrthancFindRequestHandler> result(new OrthancFindRequestHandler(context_)); |
83489fddd8c5
Options to limit the number of results for an incoming C-FIND query
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
831
diff
changeset
|
144 |
83489fddd8c5
Options to limit the number of results for an incoming C-FIND query
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
831
diff
changeset
|
145 result->SetMaxResults(Configuration::GetGlobalIntegerParameter("LimitFindResults", 0)); |
83489fddd8c5
Options to limit the number of results for an incoming C-FIND query
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
831
diff
changeset
|
146 result->SetMaxInstances(Configuration::GetGlobalIntegerParameter("LimitFindInstances", 0)); |
83489fddd8c5
Options to limit the number of results for an incoming C-FIND query
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
831
diff
changeset
|
147 |
83489fddd8c5
Options to limit the number of results for an incoming C-FIND query
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
831
diff
changeset
|
148 if (result->GetMaxResults() == 0) |
83489fddd8c5
Options to limit the number of results for an incoming C-FIND query
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
831
diff
changeset
|
149 { |
83489fddd8c5
Options to limit the number of results for an incoming C-FIND query
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
831
diff
changeset
|
150 LOG(INFO) << "No limit on the number of C-FIND results at the Patient, Study and Series levels"; |
83489fddd8c5
Options to limit the number of results for an incoming C-FIND query
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
831
diff
changeset
|
151 } |
83489fddd8c5
Options to limit the number of results for an incoming C-FIND query
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
831
diff
changeset
|
152 else |
83489fddd8c5
Options to limit the number of results for an incoming C-FIND query
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
831
diff
changeset
|
153 { |
83489fddd8c5
Options to limit the number of results for an incoming C-FIND query
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
831
diff
changeset
|
154 LOG(INFO) << "Maximum " << result->GetMaxResults() |
83489fddd8c5
Options to limit the number of results for an incoming C-FIND query
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
831
diff
changeset
|
155 << " results for C-FIND queries at the Patient, Study and Series levels"; |
83489fddd8c5
Options to limit the number of results for an incoming C-FIND query
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
831
diff
changeset
|
156 } |
83489fddd8c5
Options to limit the number of results for an incoming C-FIND query
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
831
diff
changeset
|
157 |
83489fddd8c5
Options to limit the number of results for an incoming C-FIND query
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
831
diff
changeset
|
158 if (result->GetMaxInstances() == 0) |
83489fddd8c5
Options to limit the number of results for an incoming C-FIND query
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
831
diff
changeset
|
159 { |
83489fddd8c5
Options to limit the number of results for an incoming C-FIND query
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
831
diff
changeset
|
160 LOG(INFO) << "No limit on the number of C-FIND results at the Instance level"; |
83489fddd8c5
Options to limit the number of results for an incoming C-FIND query
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
831
diff
changeset
|
161 } |
83489fddd8c5
Options to limit the number of results for an incoming C-FIND query
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
831
diff
changeset
|
162 else |
83489fddd8c5
Options to limit the number of results for an incoming C-FIND query
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
831
diff
changeset
|
163 { |
83489fddd8c5
Options to limit the number of results for an incoming C-FIND query
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
831
diff
changeset
|
164 LOG(INFO) << "Maximum " << result->GetMaxInstances() |
83489fddd8c5
Options to limit the number of results for an incoming C-FIND query
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
831
diff
changeset
|
165 << " instances will be returned for C-FIND queries at the Instance level"; |
83489fddd8c5
Options to limit the number of results for an incoming C-FIND query
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
831
diff
changeset
|
166 } |
83489fddd8c5
Options to limit the number of results for an incoming C-FIND query
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
831
diff
changeset
|
167 |
83489fddd8c5
Options to limit the number of results for an incoming C-FIND query
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
831
diff
changeset
|
168 return result.release(); |
387
ff647eedfbe1
enabling of Find/Move commands
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
376
diff
changeset
|
169 } |
ff647eedfbe1
enabling of Find/Move commands
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
376
diff
changeset
|
170 |
ff647eedfbe1
enabling of Find/Move commands
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
376
diff
changeset
|
171 virtual IMoveRequestHandler* ConstructMoveRequestHandler() |
ff647eedfbe1
enabling of Find/Move commands
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
376
diff
changeset
|
172 { |
613 | 173 return new OrthancMoveRequestHandler(context_); |
0 | 174 } |
175 | |
1786
164d78911382
primitives to handle dicom worklists
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1781
diff
changeset
|
176 virtual IWorklistRequestHandler* ConstructWorklistRequestHandler() |
164d78911382
primitives to handle dicom worklists
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1781
diff
changeset
|
177 { |
164d78911382
primitives to handle dicom worklists
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1781
diff
changeset
|
178 return new OrthancWorklistRequestHandler(context_); |
164d78911382
primitives to handle dicom worklists
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1781
diff
changeset
|
179 } |
164d78911382
primitives to handle dicom worklists
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1781
diff
changeset
|
180 |
0 | 181 void Done() |
182 { | |
183 } | |
184 }; | |
185 | |
186 | |
618 | 187 class OrthancApplicationEntityFilter : public IApplicationEntityFilter |
188 { | |
1164
0a55d8eb194e
Configuration/Lua to select the accepted C-Store SCP transfer syntaxes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1163
diff
changeset
|
189 private: |
0a55d8eb194e
Configuration/Lua to select the accepted C-Store SCP transfer syntaxes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1163
diff
changeset
|
190 ServerContext& context_; |
0a55d8eb194e
Configuration/Lua to select the accepted C-Store SCP transfer syntaxes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1163
diff
changeset
|
191 |
618 | 192 public: |
1164
0a55d8eb194e
Configuration/Lua to select the accepted C-Store SCP transfer syntaxes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1163
diff
changeset
|
193 OrthancApplicationEntityFilter(ServerContext& context) : context_(context) |
0a55d8eb194e
Configuration/Lua to select the accepted C-Store SCP transfer syntaxes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1163
diff
changeset
|
194 { |
0a55d8eb194e
Configuration/Lua to select the accepted C-Store SCP transfer syntaxes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1163
diff
changeset
|
195 } |
0a55d8eb194e
Configuration/Lua to select the accepted C-Store SCP transfer syntaxes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1163
diff
changeset
|
196 |
620
4aa6f0d79947
security filter for dicom requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
619
diff
changeset
|
197 virtual bool IsAllowedConnection(const std::string& /*callingIp*/, |
4aa6f0d79947
security filter for dicom requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
619
diff
changeset
|
198 const std::string& /*callingAet*/) |
618 | 199 { |
620
4aa6f0d79947
security filter for dicom requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
619
diff
changeset
|
200 return true; |
4aa6f0d79947
security filter for dicom requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
619
diff
changeset
|
201 } |
4aa6f0d79947
security filter for dicom requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
619
diff
changeset
|
202 |
4aa6f0d79947
security filter for dicom requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
619
diff
changeset
|
203 virtual bool IsAllowedRequest(const std::string& /*callingIp*/, |
4aa6f0d79947
security filter for dicom requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
619
diff
changeset
|
204 const std::string& callingAet, |
4aa6f0d79947
security filter for dicom requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
619
diff
changeset
|
205 DicomRequestType type) |
4aa6f0d79947
security filter for dicom requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
619
diff
changeset
|
206 { |
4aa6f0d79947
security filter for dicom requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
619
diff
changeset
|
207 if (type == DicomRequestType_Store) |
4aa6f0d79947
security filter for dicom requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
619
diff
changeset
|
208 { |
4aa6f0d79947
security filter for dicom requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
619
diff
changeset
|
209 // Incoming store requests are always accepted, even from unknown AET |
4aa6f0d79947
security filter for dicom requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
619
diff
changeset
|
210 return true; |
4aa6f0d79947
security filter for dicom requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
619
diff
changeset
|
211 } |
4aa6f0d79947
security filter for dicom requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
619
diff
changeset
|
212 |
810
401a9633e492
configuration into a namespace
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
774
diff
changeset
|
213 if (!Configuration::IsKnownAETitle(callingAet)) |
618 | 214 { |
725 | 215 LOG(ERROR) << "Unknown remote DICOM modality AET: \"" << callingAet << "\""; |
618 | 216 return false; |
217 } | |
218 else | |
219 { | |
220 return true; | |
221 } | |
222 } | |
1163
3db41779d8f9
abstraction to allow/prevent transfer syntaxes on AET basis
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1135
diff
changeset
|
223 |
1164
0a55d8eb194e
Configuration/Lua to select the accepted C-Store SCP transfer syntaxes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1163
diff
changeset
|
224 virtual bool IsAllowedTransferSyntax(const std::string& callingIp, |
0a55d8eb194e
Configuration/Lua to select the accepted C-Store SCP transfer syntaxes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1163
diff
changeset
|
225 const std::string& callingAet, |
1163
3db41779d8f9
abstraction to allow/prevent transfer syntaxes on AET basis
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1135
diff
changeset
|
226 TransferSyntax syntax) |
3db41779d8f9
abstraction to allow/prevent transfer syntaxes on AET basis
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1135
diff
changeset
|
227 { |
1164
0a55d8eb194e
Configuration/Lua to select the accepted C-Store SCP transfer syntaxes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1163
diff
changeset
|
228 std::string configuration; |
0a55d8eb194e
Configuration/Lua to select the accepted C-Store SCP transfer syntaxes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1163
diff
changeset
|
229 |
0a55d8eb194e
Configuration/Lua to select the accepted C-Store SCP transfer syntaxes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1163
diff
changeset
|
230 switch (syntax) |
0a55d8eb194e
Configuration/Lua to select the accepted C-Store SCP transfer syntaxes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1163
diff
changeset
|
231 { |
0a55d8eb194e
Configuration/Lua to select the accepted C-Store SCP transfer syntaxes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1163
diff
changeset
|
232 case TransferSyntax_Deflated: |
0a55d8eb194e
Configuration/Lua to select the accepted C-Store SCP transfer syntaxes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1163
diff
changeset
|
233 configuration = "DeflatedTransferSyntaxAccepted"; |
0a55d8eb194e
Configuration/Lua to select the accepted C-Store SCP transfer syntaxes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1163
diff
changeset
|
234 break; |
0a55d8eb194e
Configuration/Lua to select the accepted C-Store SCP transfer syntaxes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1163
diff
changeset
|
235 |
0a55d8eb194e
Configuration/Lua to select the accepted C-Store SCP transfer syntaxes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1163
diff
changeset
|
236 case TransferSyntax_Jpeg: |
0a55d8eb194e
Configuration/Lua to select the accepted C-Store SCP transfer syntaxes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1163
diff
changeset
|
237 configuration = "JpegTransferSyntaxAccepted"; |
0a55d8eb194e
Configuration/Lua to select the accepted C-Store SCP transfer syntaxes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1163
diff
changeset
|
238 break; |
0a55d8eb194e
Configuration/Lua to select the accepted C-Store SCP transfer syntaxes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1163
diff
changeset
|
239 |
0a55d8eb194e
Configuration/Lua to select the accepted C-Store SCP transfer syntaxes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1163
diff
changeset
|
240 case TransferSyntax_Jpeg2000: |
0a55d8eb194e
Configuration/Lua to select the accepted C-Store SCP transfer syntaxes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1163
diff
changeset
|
241 configuration = "Jpeg2000TransferSyntaxAccepted"; |
0a55d8eb194e
Configuration/Lua to select the accepted C-Store SCP transfer syntaxes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1163
diff
changeset
|
242 break; |
0a55d8eb194e
Configuration/Lua to select the accepted C-Store SCP transfer syntaxes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1163
diff
changeset
|
243 |
0a55d8eb194e
Configuration/Lua to select the accepted C-Store SCP transfer syntaxes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1163
diff
changeset
|
244 case TransferSyntax_JpegLossless: |
0a55d8eb194e
Configuration/Lua to select the accepted C-Store SCP transfer syntaxes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1163
diff
changeset
|
245 configuration = "JpegLosslessTransferSyntaxAccepted"; |
0a55d8eb194e
Configuration/Lua to select the accepted C-Store SCP transfer syntaxes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1163
diff
changeset
|
246 break; |
0a55d8eb194e
Configuration/Lua to select the accepted C-Store SCP transfer syntaxes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1163
diff
changeset
|
247 |
0a55d8eb194e
Configuration/Lua to select the accepted C-Store SCP transfer syntaxes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1163
diff
changeset
|
248 case TransferSyntax_Jpip: |
0a55d8eb194e
Configuration/Lua to select the accepted C-Store SCP transfer syntaxes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1163
diff
changeset
|
249 configuration = "JpipTransferSyntaxAccepted"; |
0a55d8eb194e
Configuration/Lua to select the accepted C-Store SCP transfer syntaxes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1163
diff
changeset
|
250 break; |
0a55d8eb194e
Configuration/Lua to select the accepted C-Store SCP transfer syntaxes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1163
diff
changeset
|
251 |
0a55d8eb194e
Configuration/Lua to select the accepted C-Store SCP transfer syntaxes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1163
diff
changeset
|
252 case TransferSyntax_Mpeg2: |
0a55d8eb194e
Configuration/Lua to select the accepted C-Store SCP transfer syntaxes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1163
diff
changeset
|
253 configuration = "Mpeg2TransferSyntaxAccepted"; |
0a55d8eb194e
Configuration/Lua to select the accepted C-Store SCP transfer syntaxes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1163
diff
changeset
|
254 break; |
0a55d8eb194e
Configuration/Lua to select the accepted C-Store SCP transfer syntaxes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1163
diff
changeset
|
255 |
0a55d8eb194e
Configuration/Lua to select the accepted C-Store SCP transfer syntaxes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1163
diff
changeset
|
256 case TransferSyntax_Rle: |
0a55d8eb194e
Configuration/Lua to select the accepted C-Store SCP transfer syntaxes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1163
diff
changeset
|
257 configuration = "RleTransferSyntaxAccepted"; |
0a55d8eb194e
Configuration/Lua to select the accepted C-Store SCP transfer syntaxes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1163
diff
changeset
|
258 break; |
0a55d8eb194e
Configuration/Lua to select the accepted C-Store SCP transfer syntaxes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1163
diff
changeset
|
259 |
0a55d8eb194e
Configuration/Lua to select the accepted C-Store SCP transfer syntaxes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1163
diff
changeset
|
260 default: |
0a55d8eb194e
Configuration/Lua to select the accepted C-Store SCP transfer syntaxes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1163
diff
changeset
|
261 throw OrthancException(ErrorCode_ParameterOutOfRange); |
0a55d8eb194e
Configuration/Lua to select the accepted C-Store SCP transfer syntaxes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1163
diff
changeset
|
262 } |
0a55d8eb194e
Configuration/Lua to select the accepted C-Store SCP transfer syntaxes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1163
diff
changeset
|
263 |
0a55d8eb194e
Configuration/Lua to select the accepted C-Store SCP transfer syntaxes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1163
diff
changeset
|
264 { |
0a55d8eb194e
Configuration/Lua to select the accepted C-Store SCP transfer syntaxes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1163
diff
changeset
|
265 std::string lua = "Is" + configuration; |
0a55d8eb194e
Configuration/Lua to select the accepted C-Store SCP transfer syntaxes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1163
diff
changeset
|
266 |
1433
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1368
diff
changeset
|
267 LuaScripting::Locker locker(context_.GetLua()); |
1164
0a55d8eb194e
Configuration/Lua to select the accepted C-Store SCP transfer syntaxes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1163
diff
changeset
|
268 |
0a55d8eb194e
Configuration/Lua to select the accepted C-Store SCP transfer syntaxes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1163
diff
changeset
|
269 if (locker.GetLua().IsExistingFunction(lua.c_str())) |
0a55d8eb194e
Configuration/Lua to select the accepted C-Store SCP transfer syntaxes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1163
diff
changeset
|
270 { |
0a55d8eb194e
Configuration/Lua to select the accepted C-Store SCP transfer syntaxes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1163
diff
changeset
|
271 LuaFunctionCall call(locker.GetLua(), lua.c_str()); |
0a55d8eb194e
Configuration/Lua to select the accepted C-Store SCP transfer syntaxes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1163
diff
changeset
|
272 call.PushString(callingAet); |
0a55d8eb194e
Configuration/Lua to select the accepted C-Store SCP transfer syntaxes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1163
diff
changeset
|
273 call.PushString(callingIp); |
0a55d8eb194e
Configuration/Lua to select the accepted C-Store SCP transfer syntaxes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1163
diff
changeset
|
274 return call.ExecutePredicate(); |
0a55d8eb194e
Configuration/Lua to select the accepted C-Store SCP transfer syntaxes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1163
diff
changeset
|
275 } |
0a55d8eb194e
Configuration/Lua to select the accepted C-Store SCP transfer syntaxes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1163
diff
changeset
|
276 } |
0a55d8eb194e
Configuration/Lua to select the accepted C-Store SCP transfer syntaxes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1163
diff
changeset
|
277 |
0a55d8eb194e
Configuration/Lua to select the accepted C-Store SCP transfer syntaxes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1163
diff
changeset
|
278 return Configuration::GetGlobalBoolParameter(configuration, true); |
1163
3db41779d8f9
abstraction to allow/prevent transfer syntaxes on AET basis
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1135
diff
changeset
|
279 } |
618 | 280 }; |
281 | |
282 | |
409
63f707278fc8
lua filtering of incoming http requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
407
diff
changeset
|
283 class MyIncomingHttpRequestFilter : public IIncomingHttpRequestFilter |
63f707278fc8
lua filtering of incoming http requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
407
diff
changeset
|
284 { |
63f707278fc8
lua filtering of incoming http requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
407
diff
changeset
|
285 private: |
63f707278fc8
lua filtering of incoming http requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
407
diff
changeset
|
286 ServerContext& context_; |
63f707278fc8
lua filtering of incoming http requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
407
diff
changeset
|
287 |
63f707278fc8
lua filtering of incoming http requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
407
diff
changeset
|
288 public: |
63f707278fc8
lua filtering of incoming http requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
407
diff
changeset
|
289 MyIncomingHttpRequestFilter(ServerContext& context) : context_(context) |
63f707278fc8
lua filtering of incoming http requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
407
diff
changeset
|
290 { |
63f707278fc8
lua filtering of incoming http requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
407
diff
changeset
|
291 } |
63f707278fc8
lua filtering of incoming http requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
407
diff
changeset
|
292 |
473
c9a5d72f8481
changing the namespace of HTTP enumerations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
426
diff
changeset
|
293 virtual bool IsAllowed(HttpMethod method, |
409
63f707278fc8
lua filtering of incoming http requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
407
diff
changeset
|
294 const char* uri, |
63f707278fc8
lua filtering of incoming http requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
407
diff
changeset
|
295 const char* ip, |
63f707278fc8
lua filtering of incoming http requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
407
diff
changeset
|
296 const char* username) const |
63f707278fc8
lua filtering of incoming http requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
407
diff
changeset
|
297 { |
63f707278fc8
lua filtering of incoming http requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
407
diff
changeset
|
298 static const char* HTTP_FILTER = "IncomingHttpRequestFilter"; |
63f707278fc8
lua filtering of incoming http requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
407
diff
changeset
|
299 |
1433
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1368
diff
changeset
|
300 LuaScripting::Locker locker(context_.GetLua()); |
996
cf52f3bcb2b3
clarification of Lua classes wrt multithreading
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
941
diff
changeset
|
301 |
409
63f707278fc8
lua filtering of incoming http requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
407
diff
changeset
|
302 // Test if the instance must be filtered out |
996
cf52f3bcb2b3
clarification of Lua classes wrt multithreading
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
941
diff
changeset
|
303 if (locker.GetLua().IsExistingFunction(HTTP_FILTER)) |
409
63f707278fc8
lua filtering of incoming http requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
407
diff
changeset
|
304 { |
996
cf52f3bcb2b3
clarification of Lua classes wrt multithreading
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
941
diff
changeset
|
305 LuaFunctionCall call(locker.GetLua(), HTTP_FILTER); |
409
63f707278fc8
lua filtering of incoming http requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
407
diff
changeset
|
306 |
63f707278fc8
lua filtering of incoming http requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
407
diff
changeset
|
307 switch (method) |
63f707278fc8
lua filtering of incoming http requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
407
diff
changeset
|
308 { |
473
c9a5d72f8481
changing the namespace of HTTP enumerations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
426
diff
changeset
|
309 case HttpMethod_Get: |
409
63f707278fc8
lua filtering of incoming http requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
407
diff
changeset
|
310 call.PushString("GET"); |
63f707278fc8
lua filtering of incoming http requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
407
diff
changeset
|
311 break; |
63f707278fc8
lua filtering of incoming http requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
407
diff
changeset
|
312 |
473
c9a5d72f8481
changing the namespace of HTTP enumerations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
426
diff
changeset
|
313 case HttpMethod_Put: |
409
63f707278fc8
lua filtering of incoming http requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
407
diff
changeset
|
314 call.PushString("PUT"); |
63f707278fc8
lua filtering of incoming http requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
407
diff
changeset
|
315 break; |
63f707278fc8
lua filtering of incoming http requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
407
diff
changeset
|
316 |
473
c9a5d72f8481
changing the namespace of HTTP enumerations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
426
diff
changeset
|
317 case HttpMethod_Post: |
409
63f707278fc8
lua filtering of incoming http requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
407
diff
changeset
|
318 call.PushString("POST"); |
63f707278fc8
lua filtering of incoming http requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
407
diff
changeset
|
319 break; |
63f707278fc8
lua filtering of incoming http requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
407
diff
changeset
|
320 |
473
c9a5d72f8481
changing the namespace of HTTP enumerations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
426
diff
changeset
|
321 case HttpMethod_Delete: |
409
63f707278fc8
lua filtering of incoming http requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
407
diff
changeset
|
322 call.PushString("DELETE"); |
63f707278fc8
lua filtering of incoming http requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
407
diff
changeset
|
323 break; |
63f707278fc8
lua filtering of incoming http requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
407
diff
changeset
|
324 |
63f707278fc8
lua filtering of incoming http requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
407
diff
changeset
|
325 default: |
63f707278fc8
lua filtering of incoming http requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
407
diff
changeset
|
326 return true; |
63f707278fc8
lua filtering of incoming http requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
407
diff
changeset
|
327 } |
63f707278fc8
lua filtering of incoming http requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
407
diff
changeset
|
328 |
63f707278fc8
lua filtering of incoming http requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
407
diff
changeset
|
329 call.PushString(uri); |
63f707278fc8
lua filtering of incoming http requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
407
diff
changeset
|
330 call.PushString(ip); |
63f707278fc8
lua filtering of incoming http requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
407
diff
changeset
|
331 call.PushString(username); |
63f707278fc8
lua filtering of incoming http requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
407
diff
changeset
|
332 |
63f707278fc8
lua filtering of incoming http requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
407
diff
changeset
|
333 if (!call.ExecutePredicate()) |
63f707278fc8
lua filtering of incoming http requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
407
diff
changeset
|
334 { |
63f707278fc8
lua filtering of incoming http requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
407
diff
changeset
|
335 LOG(INFO) << "An incoming HTTP request has been discarded by the filter"; |
63f707278fc8
lua filtering of incoming http requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
407
diff
changeset
|
336 return false; |
63f707278fc8
lua filtering of incoming http requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
407
diff
changeset
|
337 } |
63f707278fc8
lua filtering of incoming http requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
407
diff
changeset
|
338 } |
63f707278fc8
lua filtering of incoming http requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
407
diff
changeset
|
339 |
63f707278fc8
lua filtering of incoming http requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
407
diff
changeset
|
340 return true; |
63f707278fc8
lua filtering of incoming http requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
407
diff
changeset
|
341 } |
63f707278fc8
lua filtering of incoming http requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
407
diff
changeset
|
342 }; |
63f707278fc8
lua filtering of incoming http requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
407
diff
changeset
|
343 |
63f707278fc8
lua filtering of incoming http requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
407
diff
changeset
|
344 |
1645
1558b3226b18
IHttpExceptionFormatter
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1632
diff
changeset
|
345 |
1558b3226b18
IHttpExceptionFormatter
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1632
diff
changeset
|
346 class MyHttpExceptionFormatter : public IHttpExceptionFormatter |
1558b3226b18
IHttpExceptionFormatter
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1632
diff
changeset
|
347 { |
1558b3226b18
IHttpExceptionFormatter
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1632
diff
changeset
|
348 private: |
1558b3226b18
IHttpExceptionFormatter
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1632
diff
changeset
|
349 bool describeErrors_; |
1558b3226b18
IHttpExceptionFormatter
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1632
diff
changeset
|
350 OrthancPlugins* plugins_; |
1558b3226b18
IHttpExceptionFormatter
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1632
diff
changeset
|
351 |
1558b3226b18
IHttpExceptionFormatter
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1632
diff
changeset
|
352 public: |
1558b3226b18
IHttpExceptionFormatter
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1632
diff
changeset
|
353 MyHttpExceptionFormatter(bool describeErrors, |
1558b3226b18
IHttpExceptionFormatter
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1632
diff
changeset
|
354 OrthancPlugins* plugins) : |
1558b3226b18
IHttpExceptionFormatter
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1632
diff
changeset
|
355 describeErrors_(describeErrors), |
1558b3226b18
IHttpExceptionFormatter
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1632
diff
changeset
|
356 plugins_(plugins) |
1558b3226b18
IHttpExceptionFormatter
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1632
diff
changeset
|
357 { |
1558b3226b18
IHttpExceptionFormatter
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1632
diff
changeset
|
358 } |
1558b3226b18
IHttpExceptionFormatter
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1632
diff
changeset
|
359 |
1558b3226b18
IHttpExceptionFormatter
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1632
diff
changeset
|
360 virtual void Format(HttpOutput& output, |
1558b3226b18
IHttpExceptionFormatter
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1632
diff
changeset
|
361 const OrthancException& exception, |
1558b3226b18
IHttpExceptionFormatter
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1632
diff
changeset
|
362 HttpMethod method, |
1558b3226b18
IHttpExceptionFormatter
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1632
diff
changeset
|
363 const char* uri) |
1558b3226b18
IHttpExceptionFormatter
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1632
diff
changeset
|
364 { |
1650 | 365 { |
366 bool isPlugin = false; | |
367 | |
368 #if ORTHANC_PLUGINS_ENABLED == 1 | |
369 if (plugins_ != NULL) | |
370 { | |
1651
2e692c83e2f3
improved custom error login
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1650
diff
changeset
|
371 plugins_->GetErrorDictionary().LogError(exception.GetErrorCode(), true); |
1650 | 372 isPlugin = true; |
373 } | |
374 #endif | |
375 | |
376 if (!isPlugin) | |
377 { | |
378 LOG(ERROR) << "Exception in the HTTP handler: " << exception.What(); | |
379 } | |
380 } | |
381 | |
1645
1558b3226b18
IHttpExceptionFormatter
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1632
diff
changeset
|
382 Json::Value message = Json::objectValue; |
1558b3226b18
IHttpExceptionFormatter
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1632
diff
changeset
|
383 ErrorCode errorCode = exception.GetErrorCode(); |
1558b3226b18
IHttpExceptionFormatter
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1632
diff
changeset
|
384 HttpStatus httpStatus = exception.GetHttpStatus(); |
1558b3226b18
IHttpExceptionFormatter
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1632
diff
changeset
|
385 |
1649
8040d56cb0b3
New function "OrthancPluginRegisterErrorCode()" to declare custom error codes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1645
diff
changeset
|
386 { |
8040d56cb0b3
New function "OrthancPluginRegisterErrorCode()" to declare custom error codes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1645
diff
changeset
|
387 bool isPlugin = false; |
1645
1558b3226b18
IHttpExceptionFormatter
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1632
diff
changeset
|
388 |
1558b3226b18
IHttpExceptionFormatter
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1632
diff
changeset
|
389 #if ORTHANC_PLUGINS_ENABLED == 1 |
1649
8040d56cb0b3
New function "OrthancPluginRegisterErrorCode()" to declare custom error codes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1645
diff
changeset
|
390 if (plugins_ != NULL && |
8040d56cb0b3
New function "OrthancPluginRegisterErrorCode()" to declare custom error codes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1645
diff
changeset
|
391 plugins_->GetErrorDictionary().Format(message, httpStatus, exception)) |
8040d56cb0b3
New function "OrthancPluginRegisterErrorCode()" to declare custom error codes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1645
diff
changeset
|
392 { |
8040d56cb0b3
New function "OrthancPluginRegisterErrorCode()" to declare custom error codes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1645
diff
changeset
|
393 errorCode = ErrorCode_Plugin; |
8040d56cb0b3
New function "OrthancPluginRegisterErrorCode()" to declare custom error codes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1645
diff
changeset
|
394 isPlugin = true; |
8040d56cb0b3
New function "OrthancPluginRegisterErrorCode()" to declare custom error codes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1645
diff
changeset
|
395 } |
1645
1558b3226b18
IHttpExceptionFormatter
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1632
diff
changeset
|
396 #endif |
1558b3226b18
IHttpExceptionFormatter
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1632
diff
changeset
|
397 |
1649
8040d56cb0b3
New function "OrthancPluginRegisterErrorCode()" to declare custom error codes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1645
diff
changeset
|
398 if (!isPlugin) |
8040d56cb0b3
New function "OrthancPluginRegisterErrorCode()" to declare custom error codes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1645
diff
changeset
|
399 { |
8040d56cb0b3
New function "OrthancPluginRegisterErrorCode()" to declare custom error codes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1645
diff
changeset
|
400 message["Message"] = exception.What(); |
8040d56cb0b3
New function "OrthancPluginRegisterErrorCode()" to declare custom error codes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1645
diff
changeset
|
401 } |
1645
1558b3226b18
IHttpExceptionFormatter
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1632
diff
changeset
|
402 } |
1558b3226b18
IHttpExceptionFormatter
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1632
diff
changeset
|
403 |
1649
8040d56cb0b3
New function "OrthancPluginRegisterErrorCode()" to declare custom error codes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1645
diff
changeset
|
404 if (!describeErrors_) |
8040d56cb0b3
New function "OrthancPluginRegisterErrorCode()" to declare custom error codes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1645
diff
changeset
|
405 { |
8040d56cb0b3
New function "OrthancPluginRegisterErrorCode()" to declare custom error codes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1645
diff
changeset
|
406 output.SendStatus(httpStatus); |
8040d56cb0b3
New function "OrthancPluginRegisterErrorCode()" to declare custom error codes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1645
diff
changeset
|
407 } |
8040d56cb0b3
New function "OrthancPluginRegisterErrorCode()" to declare custom error codes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1645
diff
changeset
|
408 else |
8040d56cb0b3
New function "OrthancPluginRegisterErrorCode()" to declare custom error codes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1645
diff
changeset
|
409 { |
8040d56cb0b3
New function "OrthancPluginRegisterErrorCode()" to declare custom error codes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1645
diff
changeset
|
410 message["Method"] = EnumerationToString(method); |
8040d56cb0b3
New function "OrthancPluginRegisterErrorCode()" to declare custom error codes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1645
diff
changeset
|
411 message["Uri"] = uri; |
8040d56cb0b3
New function "OrthancPluginRegisterErrorCode()" to declare custom error codes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1645
diff
changeset
|
412 message["HttpError"] = EnumerationToString(httpStatus); |
8040d56cb0b3
New function "OrthancPluginRegisterErrorCode()" to declare custom error codes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1645
diff
changeset
|
413 message["HttpStatus"] = httpStatus; |
8040d56cb0b3
New function "OrthancPluginRegisterErrorCode()" to declare custom error codes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1645
diff
changeset
|
414 message["OrthancError"] = EnumerationToString(errorCode); |
8040d56cb0b3
New function "OrthancPluginRegisterErrorCode()" to declare custom error codes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1645
diff
changeset
|
415 message["OrthancStatus"] = errorCode; |
1645
1558b3226b18
IHttpExceptionFormatter
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1632
diff
changeset
|
416 |
1649
8040d56cb0b3
New function "OrthancPluginRegisterErrorCode()" to declare custom error codes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1645
diff
changeset
|
417 std::string info = message.toStyledString(); |
8040d56cb0b3
New function "OrthancPluginRegisterErrorCode()" to declare custom error codes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1645
diff
changeset
|
418 output.SendStatus(httpStatus, info); |
8040d56cb0b3
New function "OrthancPluginRegisterErrorCode()" to declare custom error codes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1645
diff
changeset
|
419 } |
1645
1558b3226b18
IHttpExceptionFormatter
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1632
diff
changeset
|
420 } |
1558b3226b18
IHttpExceptionFormatter
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1632
diff
changeset
|
421 }; |
1558b3226b18
IHttpExceptionFormatter
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1632
diff
changeset
|
422 |
1558b3226b18
IHttpExceptionFormatter
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1632
diff
changeset
|
423 |
1558b3226b18
IHttpExceptionFormatter
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1632
diff
changeset
|
424 |
1733 | 425 static void PrintHelp(const char* path) |
133 | 426 { |
427 std::cout | |
428 << "Usage: " << path << " [OPTION]... [CONFIGURATION]" << std::endl | |
175
662af781a227
sample config file from command line
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
158
diff
changeset
|
429 << "Orthanc, lightweight, RESTful DICOM server for healthcare and medical research." << std::endl |
133 | 430 << std::endl |
1666
d7039be97eeb
better command-line options handling
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1651
diff
changeset
|
431 << "The \"CONFIGURATION\" argument can be a single file or a directory. In the " << std::endl |
d7039be97eeb
better command-line options handling
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1651
diff
changeset
|
432 << "case of a directory, all the JSON files it contains will be merged. " << std::endl |
d7039be97eeb
better command-line options handling
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1651
diff
changeset
|
433 << "If no configuration path is given on the command line, a set of default " << std::endl |
175
662af781a227
sample config file from command line
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
158
diff
changeset
|
434 << "parameters is used. Please refer to the Orthanc homepage for the full " << std::endl |
1615
c40fe92a68e7
Primitives to upgrade the database version in plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1592
diff
changeset
|
435 << "instructions about how to use Orthanc <http://www.orthanc-server.com/>." << std::endl |
133 | 436 << std::endl |
437 << "Command-line options:" << std::endl | |
438 << " --help\t\tdisplay this help and exit" << std::endl | |
439 << " --logdir=[dir]\tdirectory where to store the log files" << std::endl | |
440 << "\t\t\t(if not used, the logs are dumped to stderr)" << std::endl | |
175
662af781a227
sample config file from command line
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
158
diff
changeset
|
441 << " --config=[file]\tcreate a sample configuration file and exit" << std::endl |
1733 | 442 << " --errors\t\tprint the supported error codes and exit" << std::endl |
1615
c40fe92a68e7
Primitives to upgrade the database version in plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1592
diff
changeset
|
443 << " --verbose\t\tbe verbose in logs" << std::endl |
175
662af781a227
sample config file from command line
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
158
diff
changeset
|
444 << " --trace\t\thighest verbosity in logs (for debug)" << std::endl |
1615
c40fe92a68e7
Primitives to upgrade the database version in plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1592
diff
changeset
|
445 << " --upgrade\t\tallow Orthanc to upgrade the version of the" << std::endl |
c40fe92a68e7
Primitives to upgrade the database version in plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1592
diff
changeset
|
446 << "\t\t\tdatabase (beware that the database will become" << std::endl |
c40fe92a68e7
Primitives to upgrade the database version in plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1592
diff
changeset
|
447 << "\t\t\tincompatible with former versions of Orthanc)" << std::endl |
175
662af781a227
sample config file from command line
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
158
diff
changeset
|
448 << " --version\t\toutput version information and exit" << std::endl |
133 | 449 << std::endl |
450 << "Exit status:" << std::endl | |
1615
c40fe92a68e7
Primitives to upgrade the database version in plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1592
diff
changeset
|
451 << " 0 if success," << std::endl |
1733 | 452 #if defined(_WIN32) |
453 << "!= 0 if error (use the --errors option to get the list of possible errors)." << std::endl | |
454 #else | |
1615
c40fe92a68e7
Primitives to upgrade the database version in plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1592
diff
changeset
|
455 << " -1 if error (have a look at the logs)." << std::endl |
1733 | 456 #endif |
133 | 457 << std::endl; |
458 } | |
0 | 459 |
460 | |
1733 | 461 static void PrintVersion(const char* path) |
133 | 462 { |
463 std::cout | |
464 << path << " " << ORTHANC_VERSION << std::endl | |
1289
5810700b68fa
upgrade to year 2015
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1288
diff
changeset
|
465 << "Copyright (C) 2012-2015 Sebastien Jodogne, Medical Physics Department, University Hospital of Liege (Belgium)" << std::endl |
133 | 466 << "Licensing GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>, with OpenSSL exception." << std::endl |
467 << "This is free software: you are free to change and redistribute it." << std::endl | |
468 << "There is NO WARRANTY, to the extent permitted by law." << std::endl | |
469 << std::endl | |
470 << "Written by Sebastien Jodogne <s.jodogne@gmail.com>" << std::endl; | |
471 } | |
472 | |
0 | 473 |
1733 | 474 static void PrintErrorCode(ErrorCode code, const char* description) |
475 { | |
476 std::cout | |
477 << std::right << std::setw(16) | |
478 << static_cast<int>(code) | |
479 << " " << description << std::endl; | |
480 } | |
481 | |
482 | |
483 static void PrintErrors(const char* path) | |
484 { | |
485 std::cout | |
486 << path << " " << ORTHANC_VERSION << std::endl | |
1734
e2675b37eb01
Under Windows, the exit status of Orthanc corresponds to the encountered error code
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1733
diff
changeset
|
487 << "Orthanc, lightweight, RESTful DICOM server for healthcare and medical research." |
e2675b37eb01
Under Windows, the exit status of Orthanc corresponds to the encountered error code
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1733
diff
changeset
|
488 << std::endl << std::endl |
e2675b37eb01
Under Windows, the exit status of Orthanc corresponds to the encountered error code
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1733
diff
changeset
|
489 << "List of error codes that could be returned by Orthanc:" |
e2675b37eb01
Under Windows, the exit status of Orthanc corresponds to the encountered error code
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1733
diff
changeset
|
490 << std::endl << std::endl; |
1733 | 491 |
492 // The content of the following brackets is automatically generated | |
493 // by the "GenerateErrorCodes.py" script | |
494 { | |
1734
e2675b37eb01
Under Windows, the exit status of Orthanc corresponds to the encountered error code
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1733
diff
changeset
|
495 PrintErrorCode(ErrorCode_InternalError, "Internal error"); |
e2675b37eb01
Under Windows, the exit status of Orthanc corresponds to the encountered error code
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1733
diff
changeset
|
496 PrintErrorCode(ErrorCode_Success, "Success"); |
e2675b37eb01
Under Windows, the exit status of Orthanc corresponds to the encountered error code
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1733
diff
changeset
|
497 PrintErrorCode(ErrorCode_Plugin, "Error encountered within the plugin engine"); |
e2675b37eb01
Under Windows, the exit status of Orthanc corresponds to the encountered error code
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1733
diff
changeset
|
498 PrintErrorCode(ErrorCode_NotImplemented, "Not implemented yet"); |
e2675b37eb01
Under Windows, the exit status of Orthanc corresponds to the encountered error code
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1733
diff
changeset
|
499 PrintErrorCode(ErrorCode_ParameterOutOfRange, "Parameter out of range"); |
e2675b37eb01
Under Windows, the exit status of Orthanc corresponds to the encountered error code
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1733
diff
changeset
|
500 PrintErrorCode(ErrorCode_NotEnoughMemory, "Not enough memory"); |
e2675b37eb01
Under Windows, the exit status of Orthanc corresponds to the encountered error code
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1733
diff
changeset
|
501 PrintErrorCode(ErrorCode_BadParameterType, "Bad type for a parameter"); |
e2675b37eb01
Under Windows, the exit status of Orthanc corresponds to the encountered error code
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1733
diff
changeset
|
502 PrintErrorCode(ErrorCode_BadSequenceOfCalls, "Bad sequence of calls"); |
e2675b37eb01
Under Windows, the exit status of Orthanc corresponds to the encountered error code
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1733
diff
changeset
|
503 PrintErrorCode(ErrorCode_InexistentItem, "Accessing an inexistent item"); |
e2675b37eb01
Under Windows, the exit status of Orthanc corresponds to the encountered error code
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1733
diff
changeset
|
504 PrintErrorCode(ErrorCode_BadRequest, "Bad request"); |
e2675b37eb01
Under Windows, the exit status of Orthanc corresponds to the encountered error code
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1733
diff
changeset
|
505 PrintErrorCode(ErrorCode_NetworkProtocol, "Error in the network protocol"); |
e2675b37eb01
Under Windows, the exit status of Orthanc corresponds to the encountered error code
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1733
diff
changeset
|
506 PrintErrorCode(ErrorCode_SystemCommand, "Error while calling a system command"); |
e2675b37eb01
Under Windows, the exit status of Orthanc corresponds to the encountered error code
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1733
diff
changeset
|
507 PrintErrorCode(ErrorCode_Database, "Error with the database engine"); |
e2675b37eb01
Under Windows, the exit status of Orthanc corresponds to the encountered error code
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1733
diff
changeset
|
508 PrintErrorCode(ErrorCode_UriSyntax, "Badly formatted URI"); |
e2675b37eb01
Under Windows, the exit status of Orthanc corresponds to the encountered error code
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1733
diff
changeset
|
509 PrintErrorCode(ErrorCode_InexistentFile, "Inexistent file"); |
e2675b37eb01
Under Windows, the exit status of Orthanc corresponds to the encountered error code
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1733
diff
changeset
|
510 PrintErrorCode(ErrorCode_CannotWriteFile, "Cannot write to file"); |
e2675b37eb01
Under Windows, the exit status of Orthanc corresponds to the encountered error code
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1733
diff
changeset
|
511 PrintErrorCode(ErrorCode_BadFileFormat, "Bad file format"); |
e2675b37eb01
Under Windows, the exit status of Orthanc corresponds to the encountered error code
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1733
diff
changeset
|
512 PrintErrorCode(ErrorCode_Timeout, "Timeout"); |
e2675b37eb01
Under Windows, the exit status of Orthanc corresponds to the encountered error code
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1733
diff
changeset
|
513 PrintErrorCode(ErrorCode_UnknownResource, "Unknown resource"); |
e2675b37eb01
Under Windows, the exit status of Orthanc corresponds to the encountered error code
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1733
diff
changeset
|
514 PrintErrorCode(ErrorCode_IncompatibleDatabaseVersion, "Incompatible version of the database"); |
e2675b37eb01
Under Windows, the exit status of Orthanc corresponds to the encountered error code
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1733
diff
changeset
|
515 PrintErrorCode(ErrorCode_FullStorage, "The file storage is full"); |
e2675b37eb01
Under Windows, the exit status of Orthanc corresponds to the encountered error code
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1733
diff
changeset
|
516 PrintErrorCode(ErrorCode_CorruptedFile, "Corrupted file (e.g. inconsistent MD5 hash)"); |
e2675b37eb01
Under Windows, the exit status of Orthanc corresponds to the encountered error code
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1733
diff
changeset
|
517 PrintErrorCode(ErrorCode_InexistentTag, "Inexistent tag"); |
e2675b37eb01
Under Windows, the exit status of Orthanc corresponds to the encountered error code
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1733
diff
changeset
|
518 PrintErrorCode(ErrorCode_ReadOnly, "Cannot modify a read-only data structure"); |
e2675b37eb01
Under Windows, the exit status of Orthanc corresponds to the encountered error code
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1733
diff
changeset
|
519 PrintErrorCode(ErrorCode_IncompatibleImageFormat, "Incompatible format of the images"); |
e2675b37eb01
Under Windows, the exit status of Orthanc corresponds to the encountered error code
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1733
diff
changeset
|
520 PrintErrorCode(ErrorCode_IncompatibleImageSize, "Incompatible size of the images"); |
e2675b37eb01
Under Windows, the exit status of Orthanc corresponds to the encountered error code
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1733
diff
changeset
|
521 PrintErrorCode(ErrorCode_SharedLibrary, "Error while using a shared library (plugin)"); |
e2675b37eb01
Under Windows, the exit status of Orthanc corresponds to the encountered error code
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1733
diff
changeset
|
522 PrintErrorCode(ErrorCode_UnknownPluginService, "Plugin invoking an unknown service"); |
e2675b37eb01
Under Windows, the exit status of Orthanc corresponds to the encountered error code
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1733
diff
changeset
|
523 PrintErrorCode(ErrorCode_UnknownDicomTag, "Unknown DICOM tag"); |
e2675b37eb01
Under Windows, the exit status of Orthanc corresponds to the encountered error code
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1733
diff
changeset
|
524 PrintErrorCode(ErrorCode_BadJson, "Cannot parse a JSON document"); |
e2675b37eb01
Under Windows, the exit status of Orthanc corresponds to the encountered error code
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1733
diff
changeset
|
525 PrintErrorCode(ErrorCode_Unauthorized, "Bad credentials were provided to an HTTP request"); |
e2675b37eb01
Under Windows, the exit status of Orthanc corresponds to the encountered error code
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1733
diff
changeset
|
526 PrintErrorCode(ErrorCode_BadFont, "Badly formatted font file"); |
e2675b37eb01
Under Windows, the exit status of Orthanc corresponds to the encountered error code
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1733
diff
changeset
|
527 PrintErrorCode(ErrorCode_DatabasePlugin, "The plugin implementing a custom database back-end does not fulfill the proper interface"); |
e2675b37eb01
Under Windows, the exit status of Orthanc corresponds to the encountered error code
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1733
diff
changeset
|
528 PrintErrorCode(ErrorCode_StorageAreaPlugin, "Error in the plugin implementing a custom storage area"); |
1746 | 529 PrintErrorCode(ErrorCode_EmptyRequest, "The request is empty"); |
1781
5ad4e4d92ecb
AcceptMediaDispatcher bootstrap
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1746
diff
changeset
|
530 PrintErrorCode(ErrorCode_NotAcceptable, "Cannot send a response which is acceptable according to the Accept HTTP header"); |
1734
e2675b37eb01
Under Windows, the exit status of Orthanc corresponds to the encountered error code
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1733
diff
changeset
|
531 PrintErrorCode(ErrorCode_SQLiteNotOpened, "SQLite: The database is not opened"); |
e2675b37eb01
Under Windows, the exit status of Orthanc corresponds to the encountered error code
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1733
diff
changeset
|
532 PrintErrorCode(ErrorCode_SQLiteAlreadyOpened, "SQLite: Connection is already open"); |
e2675b37eb01
Under Windows, the exit status of Orthanc corresponds to the encountered error code
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1733
diff
changeset
|
533 PrintErrorCode(ErrorCode_SQLiteCannotOpen, "SQLite: Unable to open the database"); |
e2675b37eb01
Under Windows, the exit status of Orthanc corresponds to the encountered error code
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1733
diff
changeset
|
534 PrintErrorCode(ErrorCode_SQLiteStatementAlreadyUsed, "SQLite: This cached statement is already being referred to"); |
e2675b37eb01
Under Windows, the exit status of Orthanc corresponds to the encountered error code
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1733
diff
changeset
|
535 PrintErrorCode(ErrorCode_SQLiteExecute, "SQLite: Cannot execute a command"); |
e2675b37eb01
Under Windows, the exit status of Orthanc corresponds to the encountered error code
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1733
diff
changeset
|
536 PrintErrorCode(ErrorCode_SQLiteRollbackWithoutTransaction, "SQLite: Rolling back a nonexistent transaction (have you called Begin()?)"); |
e2675b37eb01
Under Windows, the exit status of Orthanc corresponds to the encountered error code
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1733
diff
changeset
|
537 PrintErrorCode(ErrorCode_SQLiteCommitWithoutTransaction, "SQLite: Committing a nonexistent transaction"); |
e2675b37eb01
Under Windows, the exit status of Orthanc corresponds to the encountered error code
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1733
diff
changeset
|
538 PrintErrorCode(ErrorCode_SQLiteRegisterFunction, "SQLite: Unable to register a function"); |
e2675b37eb01
Under Windows, the exit status of Orthanc corresponds to the encountered error code
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1733
diff
changeset
|
539 PrintErrorCode(ErrorCode_SQLiteFlush, "SQLite: Unable to flush the database"); |
e2675b37eb01
Under Windows, the exit status of Orthanc corresponds to the encountered error code
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1733
diff
changeset
|
540 PrintErrorCode(ErrorCode_SQLiteCannotRun, "SQLite: Cannot run a cached statement"); |
e2675b37eb01
Under Windows, the exit status of Orthanc corresponds to the encountered error code
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1733
diff
changeset
|
541 PrintErrorCode(ErrorCode_SQLiteCannotStep, "SQLite: Cannot step over a cached statement"); |
e2675b37eb01
Under Windows, the exit status of Orthanc corresponds to the encountered error code
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1733
diff
changeset
|
542 PrintErrorCode(ErrorCode_SQLiteBindOutOfRange, "SQLite: Bing a value while out of range (serious error)"); |
e2675b37eb01
Under Windows, the exit status of Orthanc corresponds to the encountered error code
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1733
diff
changeset
|
543 PrintErrorCode(ErrorCode_SQLitePrepareStatement, "SQLite: Cannot prepare a cached statement"); |
e2675b37eb01
Under Windows, the exit status of Orthanc corresponds to the encountered error code
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1733
diff
changeset
|
544 PrintErrorCode(ErrorCode_SQLiteTransactionAlreadyStarted, "SQLite: Beginning the same transaction twice"); |
e2675b37eb01
Under Windows, the exit status of Orthanc corresponds to the encountered error code
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1733
diff
changeset
|
545 PrintErrorCode(ErrorCode_SQLiteTransactionCommit, "SQLite: Failure when committing the transaction"); |
e2675b37eb01
Under Windows, the exit status of Orthanc corresponds to the encountered error code
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1733
diff
changeset
|
546 PrintErrorCode(ErrorCode_SQLiteTransactionBegin, "SQLite: Cannot start a transaction"); |
e2675b37eb01
Under Windows, the exit status of Orthanc corresponds to the encountered error code
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1733
diff
changeset
|
547 PrintErrorCode(ErrorCode_DirectoryOverFile, "The directory to be created is already occupied by a regular file"); |
e2675b37eb01
Under Windows, the exit status of Orthanc corresponds to the encountered error code
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1733
diff
changeset
|
548 PrintErrorCode(ErrorCode_FileStorageCannotWrite, "Unable to create a subdirectory or a file in the file storage"); |
e2675b37eb01
Under Windows, the exit status of Orthanc corresponds to the encountered error code
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1733
diff
changeset
|
549 PrintErrorCode(ErrorCode_DirectoryExpected, "The specified path does not point to a directory"); |
e2675b37eb01
Under Windows, the exit status of Orthanc corresponds to the encountered error code
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1733
diff
changeset
|
550 PrintErrorCode(ErrorCode_HttpPortInUse, "The TCP port of the HTTP server is already in use"); |
e2675b37eb01
Under Windows, the exit status of Orthanc corresponds to the encountered error code
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1733
diff
changeset
|
551 PrintErrorCode(ErrorCode_DicomPortInUse, "The TCP port of the DICOM server is already in use"); |
e2675b37eb01
Under Windows, the exit status of Orthanc corresponds to the encountered error code
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1733
diff
changeset
|
552 PrintErrorCode(ErrorCode_BadHttpStatusInRest, "This HTTP status is not allowed in a REST API"); |
e2675b37eb01
Under Windows, the exit status of Orthanc corresponds to the encountered error code
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1733
diff
changeset
|
553 PrintErrorCode(ErrorCode_RegularFileExpected, "The specified path does not point to a regular file"); |
e2675b37eb01
Under Windows, the exit status of Orthanc corresponds to the encountered error code
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1733
diff
changeset
|
554 PrintErrorCode(ErrorCode_PathToExecutable, "Unable to get the path to the executable"); |
e2675b37eb01
Under Windows, the exit status of Orthanc corresponds to the encountered error code
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1733
diff
changeset
|
555 PrintErrorCode(ErrorCode_MakeDirectory, "Cannot create a directory"); |
e2675b37eb01
Under Windows, the exit status of Orthanc corresponds to the encountered error code
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1733
diff
changeset
|
556 PrintErrorCode(ErrorCode_BadApplicationEntityTitle, "An application entity title (AET) cannot be empty or be longer than 16 characters"); |
e2675b37eb01
Under Windows, the exit status of Orthanc corresponds to the encountered error code
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1733
diff
changeset
|
557 PrintErrorCode(ErrorCode_NoCFindHandler, "No request handler factory for DICOM C-FIND SCP"); |
e2675b37eb01
Under Windows, the exit status of Orthanc corresponds to the encountered error code
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1733
diff
changeset
|
558 PrintErrorCode(ErrorCode_NoCMoveHandler, "No request handler factory for DICOM C-MOVE SCP"); |
e2675b37eb01
Under Windows, the exit status of Orthanc corresponds to the encountered error code
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1733
diff
changeset
|
559 PrintErrorCode(ErrorCode_NoCStoreHandler, "No request handler factory for DICOM C-STORE SCP"); |
e2675b37eb01
Under Windows, the exit status of Orthanc corresponds to the encountered error code
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1733
diff
changeset
|
560 PrintErrorCode(ErrorCode_NoApplicationEntityFilter, "No application entity filter"); |
e2675b37eb01
Under Windows, the exit status of Orthanc corresponds to the encountered error code
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1733
diff
changeset
|
561 PrintErrorCode(ErrorCode_NoSopClassOrInstance, "DicomUserConnection: Unable to find the SOP class and instance"); |
e2675b37eb01
Under Windows, the exit status of Orthanc corresponds to the encountered error code
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1733
diff
changeset
|
562 PrintErrorCode(ErrorCode_NoPresentationContext, "DicomUserConnection: No acceptable presentation context for modality"); |
e2675b37eb01
Under Windows, the exit status of Orthanc corresponds to the encountered error code
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1733
diff
changeset
|
563 PrintErrorCode(ErrorCode_DicomFindUnavailable, "DicomUserConnection: The C-FIND command is not supported by the remote SCP"); |
e2675b37eb01
Under Windows, the exit status of Orthanc corresponds to the encountered error code
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1733
diff
changeset
|
564 PrintErrorCode(ErrorCode_DicomMoveUnavailable, "DicomUserConnection: The C-MOVE command is not supported by the remote SCP"); |
e2675b37eb01
Under Windows, the exit status of Orthanc corresponds to the encountered error code
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1733
diff
changeset
|
565 PrintErrorCode(ErrorCode_CannotStoreInstance, "Cannot store an instance"); |
e2675b37eb01
Under Windows, the exit status of Orthanc corresponds to the encountered error code
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1733
diff
changeset
|
566 PrintErrorCode(ErrorCode_CreateDicomNotString, "Only string values are supported when creating DICOM instances"); |
e2675b37eb01
Under Windows, the exit status of Orthanc corresponds to the encountered error code
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1733
diff
changeset
|
567 PrintErrorCode(ErrorCode_CreateDicomOverrideTag, "Trying to override a value inherited from a parent module"); |
e2675b37eb01
Under Windows, the exit status of Orthanc corresponds to the encountered error code
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1733
diff
changeset
|
568 PrintErrorCode(ErrorCode_CreateDicomUseContent, "Use \"Content\" to inject an image into a new DICOM instance"); |
e2675b37eb01
Under Windows, the exit status of Orthanc corresponds to the encountered error code
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1733
diff
changeset
|
569 PrintErrorCode(ErrorCode_CreateDicomNoPayload, "No payload is present for one instance in the series"); |
e2675b37eb01
Under Windows, the exit status of Orthanc corresponds to the encountered error code
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1733
diff
changeset
|
570 PrintErrorCode(ErrorCode_CreateDicomUseDataUriScheme, "The payload of the DICOM instance must be specified according to Data URI scheme"); |
e2675b37eb01
Under Windows, the exit status of Orthanc corresponds to the encountered error code
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1733
diff
changeset
|
571 PrintErrorCode(ErrorCode_CreateDicomBadParent, "Trying to attach a new DICOM instance to an inexistent resource"); |
e2675b37eb01
Under Windows, the exit status of Orthanc corresponds to the encountered error code
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1733
diff
changeset
|
572 PrintErrorCode(ErrorCode_CreateDicomParentIsInstance, "Trying to attach a new DICOM instance to an instance (must be a series, study or patient)"); |
e2675b37eb01
Under Windows, the exit status of Orthanc corresponds to the encountered error code
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1733
diff
changeset
|
573 PrintErrorCode(ErrorCode_CreateDicomParentEncoding, "Unable to get the encoding of the parent resource"); |
e2675b37eb01
Under Windows, the exit status of Orthanc corresponds to the encountered error code
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1733
diff
changeset
|
574 PrintErrorCode(ErrorCode_UnknownModality, "Unknown modality"); |
e2675b37eb01
Under Windows, the exit status of Orthanc corresponds to the encountered error code
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1733
diff
changeset
|
575 PrintErrorCode(ErrorCode_BadJobOrdering, "Bad ordering of filters in a job"); |
e2675b37eb01
Under Windows, the exit status of Orthanc corresponds to the encountered error code
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1733
diff
changeset
|
576 PrintErrorCode(ErrorCode_JsonToLuaTable, "Cannot convert the given JSON object to a Lua table"); |
e2675b37eb01
Under Windows, the exit status of Orthanc corresponds to the encountered error code
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1733
diff
changeset
|
577 PrintErrorCode(ErrorCode_CannotCreateLua, "Cannot create the Lua context"); |
e2675b37eb01
Under Windows, the exit status of Orthanc corresponds to the encountered error code
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1733
diff
changeset
|
578 PrintErrorCode(ErrorCode_CannotExecuteLua, "Cannot execute a Lua command"); |
e2675b37eb01
Under Windows, the exit status of Orthanc corresponds to the encountered error code
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1733
diff
changeset
|
579 PrintErrorCode(ErrorCode_LuaAlreadyExecuted, "Arguments cannot be pushed after the Lua function is executed"); |
e2675b37eb01
Under Windows, the exit status of Orthanc corresponds to the encountered error code
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1733
diff
changeset
|
580 PrintErrorCode(ErrorCode_LuaBadOutput, "The Lua function does not give the expected number of outputs"); |
e2675b37eb01
Under Windows, the exit status of Orthanc corresponds to the encountered error code
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1733
diff
changeset
|
581 PrintErrorCode(ErrorCode_NotLuaPredicate, "The Lua function is not a predicate (only true/false outputs allowed)"); |
e2675b37eb01
Under Windows, the exit status of Orthanc corresponds to the encountered error code
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1733
diff
changeset
|
582 PrintErrorCode(ErrorCode_LuaReturnsNoString, "The Lua function does not return a string"); |
e2675b37eb01
Under Windows, the exit status of Orthanc corresponds to the encountered error code
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1733
diff
changeset
|
583 PrintErrorCode(ErrorCode_StorageAreaAlreadyRegistered, "Another plugin has already registered a custom storage area"); |
e2675b37eb01
Under Windows, the exit status of Orthanc corresponds to the encountered error code
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1733
diff
changeset
|
584 PrintErrorCode(ErrorCode_DatabaseBackendAlreadyRegistered, "Another plugin has already registered a custom database back-end"); |
e2675b37eb01
Under Windows, the exit status of Orthanc corresponds to the encountered error code
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1733
diff
changeset
|
585 PrintErrorCode(ErrorCode_DatabaseNotInitialized, "Plugin trying to call the database during its initialization"); |
e2675b37eb01
Under Windows, the exit status of Orthanc corresponds to the encountered error code
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1733
diff
changeset
|
586 PrintErrorCode(ErrorCode_SslDisabled, "Orthanc has been built without SSL support"); |
e2675b37eb01
Under Windows, the exit status of Orthanc corresponds to the encountered error code
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1733
diff
changeset
|
587 PrintErrorCode(ErrorCode_CannotOrderSlices, "Unable to order the slices of the series"); |
1786
164d78911382
primitives to handle dicom worklists
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1781
diff
changeset
|
588 PrintErrorCode(ErrorCode_NoWorklistHandler, "No request handler factory for DICOM C-Find Modality SCP"); |
1733 | 589 } |
590 | |
591 std::cout << std::endl; | |
592 } | |
593 | |
594 | |
893
f57802f8b4dc
plugins for windows
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
831
diff
changeset
|
595 |
f57802f8b4dc
plugins for windows
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
831
diff
changeset
|
596 static void LoadLuaScripts(ServerContext& context) |
f57802f8b4dc
plugins for windows
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
831
diff
changeset
|
597 { |
f57802f8b4dc
plugins for windows
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
831
diff
changeset
|
598 std::list<std::string> luaScripts; |
f57802f8b4dc
plugins for windows
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
831
diff
changeset
|
599 Configuration::GetGlobalListOfStringsParameter(luaScripts, "LuaScripts"); |
f57802f8b4dc
plugins for windows
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
831
diff
changeset
|
600 for (std::list<std::string>::const_iterator |
f57802f8b4dc
plugins for windows
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
831
diff
changeset
|
601 it = luaScripts.begin(); it != luaScripts.end(); ++it) |
f57802f8b4dc
plugins for windows
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
831
diff
changeset
|
602 { |
f57802f8b4dc
plugins for windows
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
831
diff
changeset
|
603 std::string path = Configuration::InterpretStringParameterAsPath(*it); |
f57802f8b4dc
plugins for windows
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
831
diff
changeset
|
604 LOG(WARNING) << "Installing the Lua scripts from: " << path; |
f57802f8b4dc
plugins for windows
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
831
diff
changeset
|
605 std::string script; |
f57802f8b4dc
plugins for windows
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
831
diff
changeset
|
606 Toolbox::ReadFile(script, path); |
1018
564e39d6df13
integration mainline->lua-scripting
Sebastien Jodogne <s.jodogne@gmail.com>
diff
changeset
|
607 |
1433
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1368
diff
changeset
|
608 LuaScripting::Locker locker(context.GetLua()); |
1018
564e39d6df13
integration mainline->lua-scripting
Sebastien Jodogne <s.jodogne@gmail.com>
diff
changeset
|
609 locker.GetLua().Execute(script); |
893
f57802f8b4dc
plugins for windows
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
831
diff
changeset
|
610 } |
f57802f8b4dc
plugins for windows
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
831
diff
changeset
|
611 } |
f57802f8b4dc
plugins for windows
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
831
diff
changeset
|
612 |
f57802f8b4dc
plugins for windows
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
831
diff
changeset
|
613 |
1632
eb8fbcf008b5
fix build with plugins disabled
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1630
diff
changeset
|
614 |
eb8fbcf008b5
fix build with plugins disabled
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1630
diff
changeset
|
615 #if ORTHANC_PLUGINS_ENABLED == 1 |
1434
f9cd40166269
refactoring of OrthancPlugins, improvement in ServeFolders
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1433
diff
changeset
|
616 static void LoadPlugins(OrthancPlugins& plugins) |
893
f57802f8b4dc
plugins for windows
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
831
diff
changeset
|
617 { |
1434
f9cd40166269
refactoring of OrthancPlugins, improvement in ServeFolders
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1433
diff
changeset
|
618 std::list<std::string> path; |
f9cd40166269
refactoring of OrthancPlugins, improvement in ServeFolders
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1433
diff
changeset
|
619 Configuration::GetGlobalListOfStringsParameter(path, "Plugins"); |
893
f57802f8b4dc
plugins for windows
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
831
diff
changeset
|
620 for (std::list<std::string>::const_iterator |
1434
f9cd40166269
refactoring of OrthancPlugins, improvement in ServeFolders
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1433
diff
changeset
|
621 it = path.begin(); it != path.end(); ++it) |
893
f57802f8b4dc
plugins for windows
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
831
diff
changeset
|
622 { |
f57802f8b4dc
plugins for windows
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
831
diff
changeset
|
623 std::string path = Configuration::InterpretStringParameterAsPath(*it); |
1321
0f9e0e808e0f
more explicit message
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1310
diff
changeset
|
624 LOG(WARNING) << "Loading plugin(s) from: " << path; |
1434
f9cd40166269
refactoring of OrthancPlugins, improvement in ServeFolders
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1433
diff
changeset
|
625 plugins.GetManager().RegisterPlugin(path); |
893
f57802f8b4dc
plugins for windows
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
831
diff
changeset
|
626 } |
f57802f8b4dc
plugins for windows
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
831
diff
changeset
|
627 } |
1632
eb8fbcf008b5
fix build with plugins disabled
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1630
diff
changeset
|
628 #endif |
893
f57802f8b4dc
plugins for windows
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
831
diff
changeset
|
629 |
f57802f8b4dc
plugins for windows
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
831
diff
changeset
|
630 |
f57802f8b4dc
plugins for windows
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
831
diff
changeset
|
631 |
1452
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
632 // Returns "true" if restart is required |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
633 static bool WaitForExit(ServerContext& context, |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
634 OrthancRestApi& restApi) |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
635 { |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
636 LOG(WARNING) << "Orthanc has started"; |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
637 |
1741
06addfcd1d4c
OrthancStarted and OrthancStopped events in plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1734
diff
changeset
|
638 #if ORTHANC_PLUGINS_ENABLED == 1 |
06addfcd1d4c
OrthancStarted and OrthancStopped events in plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1734
diff
changeset
|
639 if (context.HasPlugins()) |
06addfcd1d4c
OrthancStarted and OrthancStopped events in plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1734
diff
changeset
|
640 { |
06addfcd1d4c
OrthancStarted and OrthancStopped events in plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1734
diff
changeset
|
641 context.GetPlugins().SignalOrthancStarted(); |
06addfcd1d4c
OrthancStarted and OrthancStopped events in plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1734
diff
changeset
|
642 } |
06addfcd1d4c
OrthancStarted and OrthancStopped events in plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1734
diff
changeset
|
643 #endif |
06addfcd1d4c
OrthancStarted and OrthancStopped events in plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1734
diff
changeset
|
644 |
1455
a68545767975
Initialize() and Finalize() events in Lua
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1452
diff
changeset
|
645 context.GetLua().Execute("Initialize"); |
a68545767975
Initialize() and Finalize() events in Lua
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1452
diff
changeset
|
646 |
1730
bc34c69b594a
New URI "/tools/shutdown" to stop Orthanc from the REST API
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1675
diff
changeset
|
647 Toolbox::ServerBarrier(restApi.LeaveBarrierFlag()); |
bc34c69b594a
New URI "/tools/shutdown" to stop Orthanc from the REST API
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1675
diff
changeset
|
648 bool restart = restApi.IsResetRequestReceived(); |
1452
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
649 |
1455
a68545767975
Initialize() and Finalize() events in Lua
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1452
diff
changeset
|
650 context.GetLua().Execute("Finalize"); |
a68545767975
Initialize() and Finalize() events in Lua
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1452
diff
changeset
|
651 |
1741
06addfcd1d4c
OrthancStarted and OrthancStopped events in plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1734
diff
changeset
|
652 #if ORTHANC_PLUGINS_ENABLED == 1 |
06addfcd1d4c
OrthancStarted and OrthancStopped events in plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1734
diff
changeset
|
653 if (context.HasPlugins()) |
06addfcd1d4c
OrthancStarted and OrthancStopped events in plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1734
diff
changeset
|
654 { |
06addfcd1d4c
OrthancStarted and OrthancStopped events in plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1734
diff
changeset
|
655 context.GetPlugins().SignalOrthancStopped(); |
06addfcd1d4c
OrthancStarted and OrthancStopped events in plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1734
diff
changeset
|
656 } |
06addfcd1d4c
OrthancStarted and OrthancStopped events in plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1734
diff
changeset
|
657 #endif |
06addfcd1d4c
OrthancStarted and OrthancStopped events in plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1734
diff
changeset
|
658 |
1452
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
659 if (restart) |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
660 { |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
661 LOG(WARNING) << "Reset request received, restarting Orthanc"; |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
662 } |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
663 |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
664 // We're done |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
665 LOG(WARNING) << "Orthanc is stopping"; |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
666 |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
667 return restart; |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
668 } |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
669 |
1368 | 670 |
671 | |
1452
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
672 static bool StartHttpServer(ServerContext& context, |
1645
1558b3226b18
IHttpExceptionFormatter
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1632
diff
changeset
|
673 OrthancRestApi& restApi, |
1558b3226b18
IHttpExceptionFormatter
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1632
diff
changeset
|
674 OrthancPlugins* plugins) |
1103
bec1eccf976c
Hot restart of Orthanc
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1102
diff
changeset
|
675 { |
1452
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
676 if (!Configuration::GetGlobalBoolParameter("HttpServerEnabled", true)) |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
677 { |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
678 LOG(WARNING) << "The HTTP server is disabled"; |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
679 return WaitForExit(context, restApi); |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
680 } |
1247 | 681 |
1645
1558b3226b18
IHttpExceptionFormatter
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1632
diff
changeset
|
682 MyHttpExceptionFormatter exceptionFormatter(Configuration::GetGlobalBoolParameter("HttpDescribeErrors", true), plugins); |
1558b3226b18
IHttpExceptionFormatter
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1632
diff
changeset
|
683 |
1558b3226b18
IHttpExceptionFormatter
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1632
diff
changeset
|
684 |
1452
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
685 // HTTP server |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
686 MyIncomingHttpRequestFilter httpFilter(context); |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
687 MongooseServer httpServer; |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
688 httpServer.SetPortNumber(Configuration::GetGlobalIntegerParameter("HttpPort", 8042)); |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
689 httpServer.SetRemoteAccessAllowed(Configuration::GetGlobalBoolParameter("RemoteAccessAllowed", false)); |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
690 httpServer.SetKeepAliveEnabled(Configuration::GetGlobalBoolParameter("KeepAlive", false)); |
1517 | 691 httpServer.SetHttpCompressionEnabled(Configuration::GetGlobalBoolParameter("HttpCompressionEnabled", true)); |
1452
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
692 httpServer.SetIncomingHttpRequestFilter(httpFilter); |
1645
1558b3226b18
IHttpExceptionFormatter
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1632
diff
changeset
|
693 httpServer.SetHttpExceptionFormatter(exceptionFormatter); |
1127
f4e65808ea58
FilesystemStorageWithoutDicom
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1124
diff
changeset
|
694 |
1452
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
695 httpServer.SetAuthenticationEnabled(Configuration::GetGlobalBoolParameter("AuthenticationEnabled", false)); |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
696 Configuration::SetupRegisteredUsers(httpServer); |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
697 |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
698 if (Configuration::GetGlobalBoolParameter("SslEnabled", false)) |
1310
61ce8147f30d
custom database back-end
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1289
diff
changeset
|
699 { |
1452
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
700 std::string certificate = Configuration::InterpretStringParameterAsPath( |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
701 Configuration::GetGlobalStringParameter("SslCertificate", "certificate.pem")); |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
702 httpServer.SetSslEnabled(true); |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
703 httpServer.SetSslCertificate(certificate.c_str()); |
1310
61ce8147f30d
custom database back-end
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1289
diff
changeset
|
704 } |
61ce8147f30d
custom database back-end
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1289
diff
changeset
|
705 else |
61ce8147f30d
custom database back-end
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1289
diff
changeset
|
706 { |
1452
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
707 httpServer.SetSslEnabled(false); |
1310
61ce8147f30d
custom database back-end
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1289
diff
changeset
|
708 } |
1103
bec1eccf976c
Hot restart of Orthanc
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1102
diff
changeset
|
709 |
1452
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
710 httpServer.Register(context.GetHttpHandler()); |
1310
61ce8147f30d
custom database back-end
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1289
diff
changeset
|
711 |
1452
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
712 httpServer.Start(); |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
713 LOG(WARNING) << "HTTP server listening on port: " << httpServer.GetPortNumber(); |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
714 |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
715 bool restart = WaitForExit(context, restApi); |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
716 |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
717 httpServer.Stop(); |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
718 LOG(WARNING) << " HTTP server has stopped"; |
1103
bec1eccf976c
Hot restart of Orthanc
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1102
diff
changeset
|
719 |
1452
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
720 return restart; |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
721 } |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
722 |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
723 |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
724 static bool StartDicomServer(ServerContext& context, |
1645
1558b3226b18
IHttpExceptionFormatter
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1632
diff
changeset
|
725 OrthancRestApi& restApi, |
1558b3226b18
IHttpExceptionFormatter
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1632
diff
changeset
|
726 OrthancPlugins* plugins) |
1452
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
727 { |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
728 if (!Configuration::GetGlobalBoolParameter("DicomServerEnabled", true)) |
1103
bec1eccf976c
Hot restart of Orthanc
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1102
diff
changeset
|
729 { |
1452
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
730 LOG(WARNING) << "The DICOM server is disabled"; |
1645
1558b3226b18
IHttpExceptionFormatter
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1632
diff
changeset
|
731 return StartHttpServer(context, restApi, plugins); |
1103
bec1eccf976c
Hot restart of Orthanc
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1102
diff
changeset
|
732 } |
bec1eccf976c
Hot restart of Orthanc
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1102
diff
changeset
|
733 |
1452
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
734 MyDicomServerFactory serverFactory(context); |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
735 |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
736 // DICOM server |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
737 DicomServer dicomServer; |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
738 OrthancApplicationEntityFilter dicomFilter(context); |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
739 dicomServer.SetCalledApplicationEntityTitleCheck(Configuration::GetGlobalBoolParameter("DicomCheckCalledAet", false)); |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
740 dicomServer.SetStoreRequestHandlerFactory(serverFactory); |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
741 dicomServer.SetMoveRequestHandlerFactory(serverFactory); |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
742 dicomServer.SetFindRequestHandlerFactory(serverFactory); |
1786
164d78911382
primitives to handle dicom worklists
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1781
diff
changeset
|
743 |
164d78911382
primitives to handle dicom worklists
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1781
diff
changeset
|
744 // TODO - Disable the following line if no worklist plugin is available |
164d78911382
primitives to handle dicom worklists
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1781
diff
changeset
|
745 dicomServer.SetWorklistRequestHandlerFactory(serverFactory); |
164d78911382
primitives to handle dicom worklists
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1781
diff
changeset
|
746 |
1452
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
747 dicomServer.SetPortNumber(Configuration::GetGlobalIntegerParameter("DicomPort", 4242)); |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
748 dicomServer.SetApplicationEntityTitle(Configuration::GetGlobalStringParameter("DicomAet", "ORTHANC")); |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
749 dicomServer.SetApplicationEntityFilter(dicomFilter); |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
750 |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
751 dicomServer.Start(); |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
752 LOG(WARNING) << "DICOM server listening on port: " << dicomServer.GetPortNumber(); |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
753 |
1675
131136aeeaa7
improved exception handling in the main program
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1672
diff
changeset
|
754 bool restart; |
131136aeeaa7
improved exception handling in the main program
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1672
diff
changeset
|
755 ErrorCode error = ErrorCode_Success; |
131136aeeaa7
improved exception handling in the main program
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1672
diff
changeset
|
756 |
131136aeeaa7
improved exception handling in the main program
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1672
diff
changeset
|
757 try |
131136aeeaa7
improved exception handling in the main program
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1672
diff
changeset
|
758 { |
131136aeeaa7
improved exception handling in the main program
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1672
diff
changeset
|
759 restart = StartHttpServer(context, restApi, plugins); |
131136aeeaa7
improved exception handling in the main program
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1672
diff
changeset
|
760 } |
131136aeeaa7
improved exception handling in the main program
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1672
diff
changeset
|
761 catch (OrthancException& e) |
131136aeeaa7
improved exception handling in the main program
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1672
diff
changeset
|
762 { |
131136aeeaa7
improved exception handling in the main program
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1672
diff
changeset
|
763 error = e.GetErrorCode(); |
131136aeeaa7
improved exception handling in the main program
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1672
diff
changeset
|
764 } |
1452
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
765 |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
766 dicomServer.Stop(); |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
767 LOG(WARNING) << " DICOM server has stopped"; |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
768 |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
769 serverFactory.Done(); |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
770 |
1675
131136aeeaa7
improved exception handling in the main program
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1672
diff
changeset
|
771 if (error != ErrorCode_Success) |
131136aeeaa7
improved exception handling in the main program
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1672
diff
changeset
|
772 { |
131136aeeaa7
improved exception handling in the main program
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1672
diff
changeset
|
773 throw OrthancException(error); |
131136aeeaa7
improved exception handling in the main program
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1672
diff
changeset
|
774 } |
131136aeeaa7
improved exception handling in the main program
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1672
diff
changeset
|
775 |
1452
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
776 return restart; |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
777 } |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
778 |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
779 |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
780 static bool ConfigureHttpHandler(ServerContext& context, |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
781 OrthancPlugins *plugins) |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
782 { |
1632
eb8fbcf008b5
fix build with plugins disabled
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1630
diff
changeset
|
783 #if ORTHANC_PLUGINS_ENABLED == 1 |
1452
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
784 // By order of priority, first apply the "plugins" layer, so that |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
785 // plugins can overwrite the built-in REST API of Orthanc |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
786 if (plugins) |
1103
bec1eccf976c
Hot restart of Orthanc
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1102
diff
changeset
|
787 { |
1452
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
788 assert(context.HasPlugins()); |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
789 context.GetHttpHandler().Register(*plugins, false); |
1103
bec1eccf976c
Hot restart of Orthanc
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1102
diff
changeset
|
790 } |
1632
eb8fbcf008b5
fix build with plugins disabled
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1630
diff
changeset
|
791 #endif |
1103
bec1eccf976c
Hot restart of Orthanc
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1102
diff
changeset
|
792 |
1452
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
793 // Secondly, apply the "static resources" layer |
1443
895ab369d63c
refactoring: OrthancHttpHandler
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1437
diff
changeset
|
794 #if ORTHANC_STANDALONE == 1 |
895ab369d63c
refactoring: OrthancHttpHandler
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1437
diff
changeset
|
795 EmbeddedResourceHttpHandler staticResources("/app", EmbeddedResources::ORTHANC_EXPLORER); |
895ab369d63c
refactoring: OrthancHttpHandler
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1437
diff
changeset
|
796 #else |
895ab369d63c
refactoring: OrthancHttpHandler
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1437
diff
changeset
|
797 FilesystemHttpHandler staticResources("/app", ORTHANC_PATH "/OrthancExplorer"); |
895ab369d63c
refactoring: OrthancHttpHandler
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1437
diff
changeset
|
798 #endif |
895ab369d63c
refactoring: OrthancHttpHandler
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1437
diff
changeset
|
799 |
1452
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
800 context.GetHttpHandler().Register(staticResources, false); |
1135
67c3c1e4a6e0
index-only mode, and custom storage area with plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1134
diff
changeset
|
801 |
1452
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
802 // Thirdly, consider the built-in REST API of Orthanc |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
803 OrthancRestApi restApi(context); |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
804 context.GetHttpHandler().Register(restApi, true); |
1103
bec1eccf976c
Hot restart of Orthanc
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1102
diff
changeset
|
805 |
1645
1558b3226b18
IHttpExceptionFormatter
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1632
diff
changeset
|
806 return StartDicomServer(context, restApi, plugins); |
1103
bec1eccf976c
Hot restart of Orthanc
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1102
diff
changeset
|
807 } |
bec1eccf976c
Hot restart of Orthanc
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1102
diff
changeset
|
808 |
bec1eccf976c
Hot restart of Orthanc
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1102
diff
changeset
|
809 |
1615
c40fe92a68e7
Primitives to upgrade the database version in plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1592
diff
changeset
|
810 static bool UpgradeDatabase(IDatabaseWrapper& database, |
c40fe92a68e7
Primitives to upgrade the database version in plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1592
diff
changeset
|
811 IStorageArea& storageArea, |
c40fe92a68e7
Primitives to upgrade the database version in plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1592
diff
changeset
|
812 bool allowDatabaseUpgrade) |
c40fe92a68e7
Primitives to upgrade the database version in plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1592
diff
changeset
|
813 { |
1668
de1413733c97
reconstructing main dicom tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1666
diff
changeset
|
814 // Upgrade the schema of the database, if needed |
1615
c40fe92a68e7
Primitives to upgrade the database version in plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1592
diff
changeset
|
815 unsigned int currentVersion = database.GetDatabaseVersion(); |
1669
a412ad57f0f9
refactoring of sample plugins, OrthancPluginReconstructMainDicomTags
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1668
diff
changeset
|
816 if (currentVersion == ORTHANC_DATABASE_VERSION) |
1615
c40fe92a68e7
Primitives to upgrade the database version in plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1592
diff
changeset
|
817 { |
1669
a412ad57f0f9
refactoring of sample plugins, OrthancPluginReconstructMainDicomTags
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1668
diff
changeset
|
818 return true; |
1615
c40fe92a68e7
Primitives to upgrade the database version in plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1592
diff
changeset
|
819 } |
c40fe92a68e7
Primitives to upgrade the database version in plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1592
diff
changeset
|
820 |
1669
a412ad57f0f9
refactoring of sample plugins, OrthancPluginReconstructMainDicomTags
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1668
diff
changeset
|
821 if (currentVersion > ORTHANC_DATABASE_VERSION) |
1666
d7039be97eeb
better command-line options handling
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1651
diff
changeset
|
822 { |
1669
a412ad57f0f9
refactoring of sample plugins, OrthancPluginReconstructMainDicomTags
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1668
diff
changeset
|
823 LOG(ERROR) << "The version of the database schema (" << currentVersion |
a412ad57f0f9
refactoring of sample plugins, OrthancPluginReconstructMainDicomTags
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1668
diff
changeset
|
824 << ") is too recent for this version of Orthanc. Please upgrade Orthanc."; |
1666
d7039be97eeb
better command-line options handling
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1651
diff
changeset
|
825 return false; |
d7039be97eeb
better command-line options handling
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1651
diff
changeset
|
826 } |
d7039be97eeb
better command-line options handling
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1651
diff
changeset
|
827 |
1669
a412ad57f0f9
refactoring of sample plugins, OrthancPluginReconstructMainDicomTags
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1668
diff
changeset
|
828 if (!allowDatabaseUpgrade) |
a412ad57f0f9
refactoring of sample plugins, OrthancPluginReconstructMainDicomTags
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1668
diff
changeset
|
829 { |
a412ad57f0f9
refactoring of sample plugins, OrthancPluginReconstructMainDicomTags
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1668
diff
changeset
|
830 LOG(ERROR) << "The database schema must be upgraded from version " |
a412ad57f0f9
refactoring of sample plugins, OrthancPluginReconstructMainDicomTags
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1668
diff
changeset
|
831 << currentVersion << " to " << ORTHANC_DATABASE_VERSION |
a412ad57f0f9
refactoring of sample plugins, OrthancPluginReconstructMainDicomTags
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1668
diff
changeset
|
832 << ": Please run Orthanc with the \"--upgrade\" command-line option"; |
a412ad57f0f9
refactoring of sample plugins, OrthancPluginReconstructMainDicomTags
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1668
diff
changeset
|
833 return false; |
a412ad57f0f9
refactoring of sample plugins, OrthancPluginReconstructMainDicomTags
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1668
diff
changeset
|
834 } |
a412ad57f0f9
refactoring of sample plugins, OrthancPluginReconstructMainDicomTags
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1668
diff
changeset
|
835 |
a412ad57f0f9
refactoring of sample plugins, OrthancPluginReconstructMainDicomTags
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1668
diff
changeset
|
836 LOG(WARNING) << "Upgrading the database from schema version " |
a412ad57f0f9
refactoring of sample plugins, OrthancPluginReconstructMainDicomTags
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1668
diff
changeset
|
837 << currentVersion << " to " << ORTHANC_DATABASE_VERSION; |
a412ad57f0f9
refactoring of sample plugins, OrthancPluginReconstructMainDicomTags
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1668
diff
changeset
|
838 database.Upgrade(ORTHANC_DATABASE_VERSION, storageArea); |
a412ad57f0f9
refactoring of sample plugins, OrthancPluginReconstructMainDicomTags
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1668
diff
changeset
|
839 |
a412ad57f0f9
refactoring of sample plugins, OrthancPluginReconstructMainDicomTags
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1668
diff
changeset
|
840 // Sanity check |
a412ad57f0f9
refactoring of sample plugins, OrthancPluginReconstructMainDicomTags
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1668
diff
changeset
|
841 currentVersion = database.GetDatabaseVersion(); |
a412ad57f0f9
refactoring of sample plugins, OrthancPluginReconstructMainDicomTags
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1668
diff
changeset
|
842 if (ORTHANC_DATABASE_VERSION != currentVersion) |
a412ad57f0f9
refactoring of sample plugins, OrthancPluginReconstructMainDicomTags
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1668
diff
changeset
|
843 { |
a412ad57f0f9
refactoring of sample plugins, OrthancPluginReconstructMainDicomTags
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1668
diff
changeset
|
844 LOG(ERROR) << "The database schema was not properly upgraded, it is still at version " << currentVersion; |
a412ad57f0f9
refactoring of sample plugins, OrthancPluginReconstructMainDicomTags
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1668
diff
changeset
|
845 throw OrthancException(ErrorCode_InternalError); |
a412ad57f0f9
refactoring of sample plugins, OrthancPluginReconstructMainDicomTags
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1668
diff
changeset
|
846 } |
1615
c40fe92a68e7
Primitives to upgrade the database version in plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1592
diff
changeset
|
847 |
c40fe92a68e7
Primitives to upgrade the database version in plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1592
diff
changeset
|
848 return true; |
c40fe92a68e7
Primitives to upgrade the database version in plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1592
diff
changeset
|
849 } |
c40fe92a68e7
Primitives to upgrade the database version in plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1592
diff
changeset
|
850 |
c40fe92a68e7
Primitives to upgrade the database version in plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1592
diff
changeset
|
851 |
1452
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
852 static bool ConfigureServerContext(IDatabaseWrapper& database, |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
853 IStorageArea& storageArea, |
1672
4c5a85c3ff43
sample database plugin now working
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1669
diff
changeset
|
854 OrthancPlugins *plugins) |
1452
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
855 { |
1549
e5e975e9b738
refactoring and simplification of StorageAccessor
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1517
diff
changeset
|
856 ServerContext context(database, storageArea); |
1452
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
857 |
1590
ba0226474e22
New configuration option: "HttpTimeout" to set the default timeout for HTTP requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1573
diff
changeset
|
858 HttpClient::SetDefaultTimeout(Configuration::GetGlobalIntegerParameter("HttpTimeout", 0)); |
1452
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
859 context.SetCompressionEnabled(Configuration::GetGlobalBoolParameter("StorageCompression", false)); |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
860 context.SetStoreMD5ForAttachments(Configuration::GetGlobalBoolParameter("StoreMD5ForAttachments", true)); |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
861 |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
862 try |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
863 { |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
864 context.GetIndex().SetMaximumPatientCount(Configuration::GetGlobalIntegerParameter("MaximumPatientCount", 0)); |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
865 } |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
866 catch (...) |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
867 { |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
868 context.GetIndex().SetMaximumPatientCount(0); |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
869 } |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
870 |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
871 try |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
872 { |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
873 uint64_t size = Configuration::GetGlobalIntegerParameter("MaximumStorageSize", 0); |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
874 context.GetIndex().SetMaximumStorageSize(size * 1024 * 1024); |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
875 } |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
876 catch (...) |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
877 { |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
878 context.GetIndex().SetMaximumStorageSize(0); |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
879 } |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
880 |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
881 LoadLuaScripts(context); |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
882 |
1632
eb8fbcf008b5
fix build with plugins disabled
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1630
diff
changeset
|
883 #if ORTHANC_PLUGINS_ENABLED == 1 |
1452
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
884 if (plugins) |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
885 { |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
886 plugins->SetServerContext(context); |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
887 context.SetPlugins(*plugins); |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
888 } |
1632
eb8fbcf008b5
fix build with plugins disabled
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1630
diff
changeset
|
889 #endif |
1452
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
890 |
1675
131136aeeaa7
improved exception handling in the main program
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1672
diff
changeset
|
891 bool restart; |
131136aeeaa7
improved exception handling in the main program
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1672
diff
changeset
|
892 ErrorCode error = ErrorCode_Success; |
131136aeeaa7
improved exception handling in the main program
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1672
diff
changeset
|
893 |
131136aeeaa7
improved exception handling in the main program
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1672
diff
changeset
|
894 try |
131136aeeaa7
improved exception handling in the main program
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1672
diff
changeset
|
895 { |
131136aeeaa7
improved exception handling in the main program
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1672
diff
changeset
|
896 restart = ConfigureHttpHandler(context, plugins); |
131136aeeaa7
improved exception handling in the main program
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1672
diff
changeset
|
897 } |
131136aeeaa7
improved exception handling in the main program
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1672
diff
changeset
|
898 catch (OrthancException& e) |
131136aeeaa7
improved exception handling in the main program
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1672
diff
changeset
|
899 { |
131136aeeaa7
improved exception handling in the main program
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1672
diff
changeset
|
900 error = e.GetErrorCode(); |
131136aeeaa7
improved exception handling in the main program
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1672
diff
changeset
|
901 } |
131136aeeaa7
improved exception handling in the main program
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1672
diff
changeset
|
902 |
1452
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
903 context.Stop(); |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
904 |
1632
eb8fbcf008b5
fix build with plugins disabled
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1630
diff
changeset
|
905 #if ORTHANC_PLUGINS_ENABLED == 1 |
1452
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
906 if (plugins) |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
907 { |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
908 context.ResetPlugins(); |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
909 } |
1632
eb8fbcf008b5
fix build with plugins disabled
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1630
diff
changeset
|
910 #endif |
1452
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
911 |
1675
131136aeeaa7
improved exception handling in the main program
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1672
diff
changeset
|
912 if (error != ErrorCode_Success) |
131136aeeaa7
improved exception handling in the main program
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1672
diff
changeset
|
913 { |
131136aeeaa7
improved exception handling in the main program
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1672
diff
changeset
|
914 throw OrthancException(error); |
131136aeeaa7
improved exception handling in the main program
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1672
diff
changeset
|
915 } |
131136aeeaa7
improved exception handling in the main program
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1672
diff
changeset
|
916 |
1452
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
917 return restart; |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
918 } |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
919 |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
920 |
1672
4c5a85c3ff43
sample database plugin now working
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1669
diff
changeset
|
921 static bool ConfigureDatabase(IDatabaseWrapper& database, |
4c5a85c3ff43
sample database plugin now working
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1669
diff
changeset
|
922 IStorageArea& storageArea, |
4c5a85c3ff43
sample database plugin now working
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1669
diff
changeset
|
923 OrthancPlugins *plugins, |
4c5a85c3ff43
sample database plugin now working
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1669
diff
changeset
|
924 bool allowDatabaseUpgrade) |
4c5a85c3ff43
sample database plugin now working
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1669
diff
changeset
|
925 { |
4c5a85c3ff43
sample database plugin now working
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1669
diff
changeset
|
926 database.Open(); |
4c5a85c3ff43
sample database plugin now working
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1669
diff
changeset
|
927 |
4c5a85c3ff43
sample database plugin now working
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1669
diff
changeset
|
928 if (!UpgradeDatabase(database, storageArea, allowDatabaseUpgrade)) |
4c5a85c3ff43
sample database plugin now working
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1669
diff
changeset
|
929 { |
4c5a85c3ff43
sample database plugin now working
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1669
diff
changeset
|
930 return false; |
4c5a85c3ff43
sample database plugin now working
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1669
diff
changeset
|
931 } |
4c5a85c3ff43
sample database plugin now working
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1669
diff
changeset
|
932 |
4c5a85c3ff43
sample database plugin now working
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1669
diff
changeset
|
933 bool success = ConfigureServerContext(database, storageArea, plugins); |
4c5a85c3ff43
sample database plugin now working
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1669
diff
changeset
|
934 |
4c5a85c3ff43
sample database plugin now working
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1669
diff
changeset
|
935 database.Close(); |
4c5a85c3ff43
sample database plugin now working
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1669
diff
changeset
|
936 |
4c5a85c3ff43
sample database plugin now working
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1669
diff
changeset
|
937 return success; |
4c5a85c3ff43
sample database plugin now working
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1669
diff
changeset
|
938 } |
4c5a85c3ff43
sample database plugin now working
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1669
diff
changeset
|
939 |
4c5a85c3ff43
sample database plugin now working
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1669
diff
changeset
|
940 |
1452
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
941 static bool ConfigurePlugins(int argc, |
1615
c40fe92a68e7
Primitives to upgrade the database version in plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1592
diff
changeset
|
942 char* argv[], |
c40fe92a68e7
Primitives to upgrade the database version in plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1592
diff
changeset
|
943 bool allowDatabaseUpgrade) |
1452
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
944 { |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
945 std::auto_ptr<IDatabaseWrapper> databasePtr; |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
946 std::auto_ptr<IStorageArea> storage; |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
947 |
1455
a68545767975
Initialize() and Finalize() events in Lua
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1452
diff
changeset
|
948 #if ORTHANC_PLUGINS_ENABLED == 1 |
1452
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
949 OrthancPlugins plugins; |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
950 plugins.SetCommandLineArguments(argc, argv); |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
951 LoadPlugins(plugins); |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
952 |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
953 IDatabaseWrapper* database = NULL; |
1630
ffd23c0104af
"/system" URI gives information about the plugins used for storage area and DB back-end
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1615
diff
changeset
|
954 if (plugins.HasDatabaseBackend()) |
1452
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
955 { |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
956 LOG(WARNING) << "Using a custom database from plugins"; |
1630
ffd23c0104af
"/system" URI gives information about the plugins used for storage area and DB back-end
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1615
diff
changeset
|
957 database = &plugins.GetDatabaseBackend(); |
1452
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
958 } |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
959 else |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
960 { |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
961 databasePtr.reset(Configuration::CreateDatabaseWrapper()); |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
962 database = databasePtr.get(); |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
963 } |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
964 |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
965 if (plugins.HasStorageArea()) |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
966 { |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
967 LOG(WARNING) << "Using a custom storage area from plugins"; |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
968 storage.reset(plugins.CreateStorageArea()); |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
969 } |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
970 else |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
971 { |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
972 storage.reset(Configuration::CreateStorageArea()); |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
973 } |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
974 |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
975 assert(database != NULL); |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
976 assert(storage.get() != NULL); |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
977 |
1672
4c5a85c3ff43
sample database plugin now working
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1669
diff
changeset
|
978 return ConfigureDatabase(*database, *storage, &plugins, allowDatabaseUpgrade); |
1452
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
979 |
1455
a68545767975
Initialize() and Finalize() events in Lua
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1452
diff
changeset
|
980 #elif ORTHANC_PLUGINS_ENABLED == 0 |
1452
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
981 // The plugins are disabled |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
982 databasePtr.reset(Configuration::CreateDatabaseWrapper()); |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
983 storage.reset(Configuration::CreateStorageArea()); |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
984 |
1672
4c5a85c3ff43
sample database plugin now working
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1669
diff
changeset
|
985 return ConfigureDatabase(*databasePtr, *storage, NULL, allowDatabaseUpgrade); |
1455
a68545767975
Initialize() and Finalize() events in Lua
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1452
diff
changeset
|
986 |
a68545767975
Initialize() and Finalize() events in Lua
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1452
diff
changeset
|
987 #else |
a68545767975
Initialize() and Finalize() events in Lua
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1452
diff
changeset
|
988 # error The macro ORTHANC_PLUGINS_ENABLED must be set to 0 or 1 |
1452
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
989 #endif |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
990 } |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
991 |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
992 |
1615
c40fe92a68e7
Primitives to upgrade the database version in plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1592
diff
changeset
|
993 static bool StartOrthanc(int argc, |
c40fe92a68e7
Primitives to upgrade the database version in plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1592
diff
changeset
|
994 char* argv[], |
c40fe92a68e7
Primitives to upgrade the database version in plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1592
diff
changeset
|
995 bool allowDatabaseUpgrade) |
1452
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
996 { |
1615
c40fe92a68e7
Primitives to upgrade the database version in plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1592
diff
changeset
|
997 return ConfigurePlugins(argc, argv, allowDatabaseUpgrade); |
1452
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
998 } |
1103
bec1eccf976c
Hot restart of Orthanc
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1102
diff
changeset
|
999 |
893
f57802f8b4dc
plugins for windows
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
831
diff
changeset
|
1000 |
0 | 1001 int main(int argc, char* argv[]) |
1002 { | |
1485
27661b33f624
Creation of Logging.h
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1455
diff
changeset
|
1003 Logging::Initialize(); |
133 | 1004 |
1615
c40fe92a68e7
Primitives to upgrade the database version in plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1592
diff
changeset
|
1005 bool allowDatabaseUpgrade = false; |
1666
d7039be97eeb
better command-line options handling
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1651
diff
changeset
|
1006 const char* configurationFile = NULL; |
d7039be97eeb
better command-line options handling
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1651
diff
changeset
|
1007 |
d7039be97eeb
better command-line options handling
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1651
diff
changeset
|
1008 |
d7039be97eeb
better command-line options handling
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1651
diff
changeset
|
1009 /** |
d7039be97eeb
better command-line options handling
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1651
diff
changeset
|
1010 * Parse the command-line options. |
d7039be97eeb
better command-line options handling
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1651
diff
changeset
|
1011 **/ |
1615
c40fe92a68e7
Primitives to upgrade the database version in plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1592
diff
changeset
|
1012 |
112 | 1013 for (int i = 1; i < argc; i++) |
1014 { | |
1666
d7039be97eeb
better command-line options handling
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1651
diff
changeset
|
1015 std::string argument(argv[i]); |
d7039be97eeb
better command-line options handling
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1651
diff
changeset
|
1016 |
d7039be97eeb
better command-line options handling
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1651
diff
changeset
|
1017 if (argument.empty()) |
d7039be97eeb
better command-line options handling
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1651
diff
changeset
|
1018 { |
d7039be97eeb
better command-line options handling
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1651
diff
changeset
|
1019 // Ignore empty arguments |
d7039be97eeb
better command-line options handling
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1651
diff
changeset
|
1020 } |
d7039be97eeb
better command-line options handling
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1651
diff
changeset
|
1021 else if (argument[0] != '-') |
d7039be97eeb
better command-line options handling
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1651
diff
changeset
|
1022 { |
d7039be97eeb
better command-line options handling
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1651
diff
changeset
|
1023 if (configurationFile != NULL) |
d7039be97eeb
better command-line options handling
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1651
diff
changeset
|
1024 { |
d7039be97eeb
better command-line options handling
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1651
diff
changeset
|
1025 LOG(ERROR) << "More than one configuration path were provided on the command line, aborting"; |
d7039be97eeb
better command-line options handling
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1651
diff
changeset
|
1026 return -1; |
d7039be97eeb
better command-line options handling
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1651
diff
changeset
|
1027 } |
d7039be97eeb
better command-line options handling
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1651
diff
changeset
|
1028 else |
d7039be97eeb
better command-line options handling
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1651
diff
changeset
|
1029 { |
d7039be97eeb
better command-line options handling
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1651
diff
changeset
|
1030 // Use the first argument that does not start with a "-" as |
d7039be97eeb
better command-line options handling
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1651
diff
changeset
|
1031 // the configuration file |
d7039be97eeb
better command-line options handling
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1651
diff
changeset
|
1032 configurationFile = argv[i]; |
d7039be97eeb
better command-line options handling
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1651
diff
changeset
|
1033 } |
d7039be97eeb
better command-line options handling
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1651
diff
changeset
|
1034 } |
1733 | 1035 else if (argument == "--errors") |
1036 { | |
1037 PrintErrors(argv[0]); | |
1038 return 0; | |
1039 } | |
1666
d7039be97eeb
better command-line options handling
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1651
diff
changeset
|
1040 else if (argument == "--help") |
133 | 1041 { |
1042 PrintHelp(argv[0]); | |
1043 return 0; | |
1044 } | |
1666
d7039be97eeb
better command-line options handling
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1651
diff
changeset
|
1045 else if (argument == "--version") |
133 | 1046 { |
1047 PrintVersion(argv[0]); | |
1048 return 0; | |
1049 } | |
1666
d7039be97eeb
better command-line options handling
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1651
diff
changeset
|
1050 else if (argument == "--verbose") |
137
0e97abc7b950
fix of a bug in older versions of sqlite
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
136
diff
changeset
|
1051 { |
1485
27661b33f624
Creation of Logging.h
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1455
diff
changeset
|
1052 Logging::EnableInfoLevel(true); |
137
0e97abc7b950
fix of a bug in older versions of sqlite
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
136
diff
changeset
|
1053 } |
1666
d7039be97eeb
better command-line options handling
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1651
diff
changeset
|
1054 else if (argument == "--trace") |
137
0e97abc7b950
fix of a bug in older versions of sqlite
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
136
diff
changeset
|
1055 { |
1485
27661b33f624
Creation of Logging.h
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1455
diff
changeset
|
1056 Logging::EnableTraceLevel(true); |
137
0e97abc7b950
fix of a bug in older versions of sqlite
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
136
diff
changeset
|
1057 } |
1666
d7039be97eeb
better command-line options handling
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1651
diff
changeset
|
1058 else if (boost::starts_with(argument, "--logdir=")) |
112 | 1059 { |
1666
d7039be97eeb
better command-line options handling
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1651
diff
changeset
|
1060 std::string directory = argument.substr(9); |
1490
596927722403
support of --logdir by the internal logger
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1489
diff
changeset
|
1061 |
596927722403
support of --logdir by the internal logger
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1489
diff
changeset
|
1062 try |
596927722403
support of --logdir by the internal logger
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1489
diff
changeset
|
1063 { |
596927722403
support of --logdir by the internal logger
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1489
diff
changeset
|
1064 Logging::SetTargetFolder(directory); |
596927722403
support of --logdir by the internal logger
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1489
diff
changeset
|
1065 } |
596927722403
support of --logdir by the internal logger
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1489
diff
changeset
|
1066 catch (OrthancException&) |
596927722403
support of --logdir by the internal logger
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1489
diff
changeset
|
1067 { |
1666
d7039be97eeb
better command-line options handling
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1651
diff
changeset
|
1068 LOG(ERROR) << "The directory where to store the log files (" |
d7039be97eeb
better command-line options handling
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1651
diff
changeset
|
1069 << directory << ") is inexistent, aborting."; |
1490
596927722403
support of --logdir by the internal logger
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1489
diff
changeset
|
1070 return -1; |
596927722403
support of --logdir by the internal logger
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1489
diff
changeset
|
1071 } |
112 | 1072 } |
1666
d7039be97eeb
better command-line options handling
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1651
diff
changeset
|
1073 else if (argument == "--upgrade") |
1615
c40fe92a68e7
Primitives to upgrade the database version in plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1592
diff
changeset
|
1074 { |
c40fe92a68e7
Primitives to upgrade the database version in plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1592
diff
changeset
|
1075 allowDatabaseUpgrade = true; |
c40fe92a68e7
Primitives to upgrade the database version in plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1592
diff
changeset
|
1076 } |
1666
d7039be97eeb
better command-line options handling
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1651
diff
changeset
|
1077 else if (boost::starts_with(argument, "--config=")) |
175
662af781a227
sample config file from command line
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
158
diff
changeset
|
1078 { |
662af781a227
sample config file from command line
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
158
diff
changeset
|
1079 std::string configurationSample; |
662af781a227
sample config file from command line
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
158
diff
changeset
|
1080 GetFileResource(configurationSample, EmbeddedResources::CONFIGURATION_SAMPLE); |
662af781a227
sample config file from command line
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
158
diff
changeset
|
1081 |
684 | 1082 #if defined(_WIN32) |
1083 // Replace UNIX newlines with DOS newlines | |
1084 boost::replace_all(configurationSample, "\n", "\r\n"); | |
1085 #endif | |
1086 | |
1666
d7039be97eeb
better command-line options handling
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1651
diff
changeset
|
1087 std::string target = argument.substr(9); |
d7039be97eeb
better command-line options handling
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1651
diff
changeset
|
1088 Toolbox::WriteFile(configurationSample, target); |
175
662af781a227
sample config file from command line
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
158
diff
changeset
|
1089 return 0; |
662af781a227
sample config file from command line
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
158
diff
changeset
|
1090 } |
1666
d7039be97eeb
better command-line options handling
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1651
diff
changeset
|
1091 else |
d7039be97eeb
better command-line options handling
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1651
diff
changeset
|
1092 { |
d7039be97eeb
better command-line options handling
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1651
diff
changeset
|
1093 LOG(WARNING) << "Option unsupported by the core of Orthanc: " << argument; |
d7039be97eeb
better command-line options handling
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1651
diff
changeset
|
1094 } |
112 | 1095 } |
1096 | |
1666
d7039be97eeb
better command-line options handling
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1651
diff
changeset
|
1097 |
d7039be97eeb
better command-line options handling
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1651
diff
changeset
|
1098 /** |
d7039be97eeb
better command-line options handling
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1651
diff
changeset
|
1099 * Launch Orthanc. |
d7039be97eeb
better command-line options handling
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1651
diff
changeset
|
1100 **/ |
1102
ce6386b37afd
avoid unnecessary exceptions on Orthanc startup
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1066
diff
changeset
|
1101 |
1171
fd3128b2cf45
log version on startup
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1164
diff
changeset
|
1102 LOG(WARNING) << "Orthanc version: " << ORTHANC_VERSION; |
1102
ce6386b37afd
avoid unnecessary exceptions on Orthanc startup
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1066
diff
changeset
|
1103 |
291
4d7469f72a0b
embedding of dicom dictionaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
270
diff
changeset
|
1104 int status = 0; |
0 | 1105 try |
1106 { | |
1103
bec1eccf976c
Hot restart of Orthanc
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1102
diff
changeset
|
1107 for (;;) |
270
e6a4c4329481
parameters for storage capacity
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
236
diff
changeset
|
1108 { |
1103
bec1eccf976c
Hot restart of Orthanc
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1102
diff
changeset
|
1109 OrthancInitialize(configurationFile); |
0 | 1110 |
1615
c40fe92a68e7
Primitives to upgrade the database version in plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1592
diff
changeset
|
1111 bool restart = StartOrthanc(argc, argv, allowDatabaseUpgrade); |
1452
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
1112 if (restart) |
23 | 1113 { |
1103
bec1eccf976c
Hot restart of Orthanc
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1102
diff
changeset
|
1114 OrthancFinalize(); |
23 | 1115 } |
1116 else | |
1117 { | |
1103
bec1eccf976c
Hot restart of Orthanc
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1102
diff
changeset
|
1118 break; |
23 | 1119 } |
0 | 1120 } |
1121 } | |
1245
aea9277dee75
catch more exceptions (patch from Valdas Rapsevicius)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1232
diff
changeset
|
1122 catch (const OrthancException& e) |
0 | 1123 { |
1733 | 1124 LOG(ERROR) << "Uncaught exception, stopping now: [" << e.What() << "] (code " << e.GetErrorCode() << ")"; |
1125 #if defined(_WIN32) | |
1734
e2675b37eb01
Under Windows, the exit status of Orthanc corresponds to the encountered error code
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1733
diff
changeset
|
1126 if (e.GetErrorCode() >= ErrorCode_START_PLUGINS) |
e2675b37eb01
Under Windows, the exit status of Orthanc corresponds to the encountered error code
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1733
diff
changeset
|
1127 { |
e2675b37eb01
Under Windows, the exit status of Orthanc corresponds to the encountered error code
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1733
diff
changeset
|
1128 status = static_cast<int>(ErrorCode_Plugin); |
e2675b37eb01
Under Windows, the exit status of Orthanc corresponds to the encountered error code
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1733
diff
changeset
|
1129 } |
e2675b37eb01
Under Windows, the exit status of Orthanc corresponds to the encountered error code
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1733
diff
changeset
|
1130 else |
e2675b37eb01
Under Windows, the exit status of Orthanc corresponds to the encountered error code
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1733
diff
changeset
|
1131 { |
e2675b37eb01
Under Windows, the exit status of Orthanc corresponds to the encountered error code
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1733
diff
changeset
|
1132 status = static_cast<int>(e.GetErrorCode()); |
e2675b37eb01
Under Windows, the exit status of Orthanc corresponds to the encountered error code
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1733
diff
changeset
|
1133 } |
e2675b37eb01
Under Windows, the exit status of Orthanc corresponds to the encountered error code
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1733
diff
changeset
|
1134 |
1733 | 1135 #else |
291
4d7469f72a0b
embedding of dicom dictionaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
270
diff
changeset
|
1136 status = -1; |
1733 | 1137 #endif |
291
4d7469f72a0b
embedding of dicom dictionaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
270
diff
changeset
|
1138 } |
1245
aea9277dee75
catch more exceptions (patch from Valdas Rapsevicius)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1232
diff
changeset
|
1139 catch (const std::exception& e) |
aea9277dee75
catch more exceptions (patch from Valdas Rapsevicius)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1232
diff
changeset
|
1140 { |
aea9277dee75
catch more exceptions (patch from Valdas Rapsevicius)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1232
diff
changeset
|
1141 LOG(ERROR) << "Uncaught exception, stopping now: [" << e.what() << "]"; |
aea9277dee75
catch more exceptions (patch from Valdas Rapsevicius)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1232
diff
changeset
|
1142 status = -1; |
aea9277dee75
catch more exceptions (patch from Valdas Rapsevicius)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1232
diff
changeset
|
1143 } |
aea9277dee75
catch more exceptions (patch from Valdas Rapsevicius)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1232
diff
changeset
|
1144 catch (const std::string& s) |
aea9277dee75
catch more exceptions (patch from Valdas Rapsevicius)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1232
diff
changeset
|
1145 { |
aea9277dee75
catch more exceptions (patch from Valdas Rapsevicius)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1232
diff
changeset
|
1146 LOG(ERROR) << "Uncaught exception, stopping now: [" << s << "]"; |
aea9277dee75
catch more exceptions (patch from Valdas Rapsevicius)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1232
diff
changeset
|
1147 status = -1; |
aea9277dee75
catch more exceptions (patch from Valdas Rapsevicius)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1232
diff
changeset
|
1148 } |
291
4d7469f72a0b
embedding of dicom dictionaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
270
diff
changeset
|
1149 catch (...) |
4d7469f72a0b
embedding of dicom dictionaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
270
diff
changeset
|
1150 { |
1223
5bd4c9f85b4c
fix race condition while unregistering plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1210
diff
changeset
|
1151 LOG(ERROR) << "Native exception, stopping now. Check your plugins, if any."; |
291
4d7469f72a0b
embedding of dicom dictionaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
270
diff
changeset
|
1152 status = -1; |
0 | 1153 } |
1154 | |
62 | 1155 OrthancFinalize(); |
27 | 1156 |
690
2e67366aab83
case-insensitive matching of Application Entity Titles
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
689
diff
changeset
|
1157 LOG(WARNING) << "Orthanc has stopped"; |
2e67366aab83
case-insensitive matching of Application Entity Titles
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
689
diff
changeset
|
1158 |
1485
27661b33f624
Creation of Logging.h
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1455
diff
changeset
|
1159 Logging::Finalize(); |
27661b33f624
Creation of Logging.h
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1455
diff
changeset
|
1160 |
291
4d7469f72a0b
embedding of dicom dictionaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
270
diff
changeset
|
1161 return status; |
0 | 1162 } |