Mercurial > hg > orthanc
annotate OrthancServer/main.cpp @ 1890:74dc6b764ff0
Fix modality worklists lookups if tags with UN (unknown) VR are present
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Fri, 11 Dec 2015 18:39:17 +0100 |
parents | 09a737a6bf36 |
children | b1291df2f780 |
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 |
62 | 55 using namespace Orthanc; |
0 | 56 |
57 | |
613 | 58 class OrthancStoreRequestHandler : public IStoreRequestHandler |
0 | 59 { |
60 private: | |
388
466c992a9a42
testing filters inside orthanc
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
376
diff
changeset
|
61 ServerContext& server_; |
0 | 62 |
63 public: | |
613 | 64 OrthancStoreRequestHandler(ServerContext& context) : |
388
466c992a9a42
testing filters inside orthanc
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
376
diff
changeset
|
65 server_(context) |
0 | 66 { |
67 } | |
68 | |
1573
3309878b3e16
more information about the origin of requests submitted to the DICOM handlers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1572
diff
changeset
|
69 |
291
4d7469f72a0b
embedding of dicom dictionaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
270
diff
changeset
|
70 virtual void Handle(const std::string& dicomFile, |
0 | 71 const DicomMap& dicomSummary, |
72 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
|
73 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
|
74 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
|
75 const std::string& calledAet) |
0 | 76 { |
77 if (dicomFile.size() > 0) | |
78 { | |
1005
84b6d7bca6db
refactoring of ServerContext::Store
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
996
diff
changeset
|
79 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
|
80 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
|
81 toStore.SetBuffer(dicomFile); |
84b6d7bca6db
refactoring of ServerContext::Store
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
996
diff
changeset
|
82 toStore.SetSummary(dicomSummary); |
84b6d7bca6db
refactoring of ServerContext::Store
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
996
diff
changeset
|
83 toStore.SetJson(dicomJson); |
84b6d7bca6db
refactoring of ServerContext::Store
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
996
diff
changeset
|
84 |
84b6d7bca6db
refactoring of ServerContext::Store
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
996
diff
changeset
|
85 std::string id; |
84b6d7bca6db
refactoring of ServerContext::Store
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
996
diff
changeset
|
86 server_.Store(id, toStore); |
0 | 87 } |
88 } | |
89 }; | |
90 | |
91 | |
1797
23722a191e4e
worklists are working
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1796
diff
changeset
|
92 |
387
ff647eedfbe1
enabling of Find/Move commands
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
376
diff
changeset
|
93 class MyDicomServerFactory : |
ff647eedfbe1
enabling of Find/Move commands
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
376
diff
changeset
|
94 public IStoreRequestHandlerFactory, |
1800
30e97a1f4093
callback for handling worklists with plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1799
diff
changeset
|
95 public IFindRequestHandlerFactory, |
387
ff647eedfbe1
enabling of Find/Move commands
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
376
diff
changeset
|
96 public IMoveRequestHandlerFactory |
ff647eedfbe1
enabling of Find/Move commands
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
376
diff
changeset
|
97 { |
ff647eedfbe1
enabling of Find/Move commands
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
376
diff
changeset
|
98 private: |
ff647eedfbe1
enabling of Find/Move commands
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
376
diff
changeset
|
99 ServerContext& context_; |
ff647eedfbe1
enabling of Find/Move commands
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
376
diff
changeset
|
100 |
ff647eedfbe1
enabling of Find/Move commands
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
376
diff
changeset
|
101 public: |
ff647eedfbe1
enabling of Find/Move commands
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
376
diff
changeset
|
102 MyDicomServerFactory(ServerContext& context) : context_(context) |
0 | 103 { |
104 } | |
105 | |
106 virtual IStoreRequestHandler* ConstructStoreRequestHandler() | |
107 { | |
613 | 108 return new OrthancStoreRequestHandler(context_); |
387
ff647eedfbe1
enabling of Find/Move commands
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
376
diff
changeset
|
109 } |
ff647eedfbe1
enabling of Find/Move commands
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
376
diff
changeset
|
110 |
ff647eedfbe1
enabling of Find/Move commands
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
376
diff
changeset
|
111 virtual IFindRequestHandler* ConstructFindRequestHandler() |
ff647eedfbe1
enabling of Find/Move commands
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
376
diff
changeset
|
112 { |
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
|
113 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
|
114 |
83489fddd8c5
Options to limit the number of results for an incoming C-FIND query
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
831
diff
changeset
|
115 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
|
116 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
|
117 |
83489fddd8c5
Options to limit the number of results for an incoming C-FIND query
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
831
diff
changeset
|
118 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
|
119 { |
83489fddd8c5
Options to limit the number of results for an incoming C-FIND query
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
831
diff
changeset
|
120 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
|
121 } |
83489fddd8c5
Options to limit the number of results for an incoming C-FIND query
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
831
diff
changeset
|
122 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
|
123 { |
83489fddd8c5
Options to limit the number of results for an incoming C-FIND query
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
831
diff
changeset
|
124 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
|
125 << " 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
|
126 } |
83489fddd8c5
Options to limit the number of results for an incoming C-FIND query
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
831
diff
changeset
|
127 |
83489fddd8c5
Options to limit the number of results for an incoming C-FIND query
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
831
diff
changeset
|
128 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
|
129 { |
83489fddd8c5
Options to limit the number of results for an incoming C-FIND query
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
831
diff
changeset
|
130 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
|
131 } |
83489fddd8c5
Options to limit the number of results for an incoming C-FIND query
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
831
diff
changeset
|
132 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
|
133 { |
83489fddd8c5
Options to limit the number of results for an incoming C-FIND query
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
831
diff
changeset
|
134 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
|
135 << " 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
|
136 } |
83489fddd8c5
Options to limit the number of results for an incoming C-FIND query
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
831
diff
changeset
|
137 |
83489fddd8c5
Options to limit the number of results for an incoming C-FIND query
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
831
diff
changeset
|
138 return result.release(); |
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 IMoveRequestHandler* ConstructMoveRequestHandler() |
ff647eedfbe1
enabling of Find/Move commands
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
376
diff
changeset
|
142 { |
613 | 143 return new OrthancMoveRequestHandler(context_); |
0 | 144 } |
145 | |
146 void Done() | |
147 { | |
148 } | |
149 }; | |
150 | |
151 | |
618 | 152 class OrthancApplicationEntityFilter : public IApplicationEntityFilter |
153 { | |
1164
0a55d8eb194e
Configuration/Lua to select the accepted C-Store SCP transfer syntaxes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1163
diff
changeset
|
154 private: |
0a55d8eb194e
Configuration/Lua to select the accepted C-Store SCP transfer syntaxes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1163
diff
changeset
|
155 ServerContext& context_; |
0a55d8eb194e
Configuration/Lua to select the accepted C-Store SCP transfer syntaxes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1163
diff
changeset
|
156 |
618 | 157 public: |
1164
0a55d8eb194e
Configuration/Lua to select the accepted C-Store SCP transfer syntaxes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1163
diff
changeset
|
158 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
|
159 { |
0a55d8eb194e
Configuration/Lua to select the accepted C-Store SCP transfer syntaxes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1163
diff
changeset
|
160 } |
0a55d8eb194e
Configuration/Lua to select the accepted C-Store SCP transfer syntaxes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1163
diff
changeset
|
161 |
1799
4f01c9d73f02
calledAet made available to all the handlers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1797
diff
changeset
|
162 virtual bool IsAllowedConnection(const std::string& /*remoteIp*/, |
4f01c9d73f02
calledAet made available to all the handlers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1797
diff
changeset
|
163 const std::string& /*remoteAet*/, |
4f01c9d73f02
calledAet made available to all the handlers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1797
diff
changeset
|
164 const std::string& /*calledAet*/) |
618 | 165 { |
620
4aa6f0d79947
security filter for dicom requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
619
diff
changeset
|
166 return true; |
4aa6f0d79947
security filter for dicom requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
619
diff
changeset
|
167 } |
4aa6f0d79947
security filter for dicom requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
619
diff
changeset
|
168 |
1799
4f01c9d73f02
calledAet made available to all the handlers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1797
diff
changeset
|
169 virtual bool IsAllowedRequest(const std::string& /*remoteIp*/, |
4f01c9d73f02
calledAet made available to all the handlers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1797
diff
changeset
|
170 const std::string& remoteAet, |
4f01c9d73f02
calledAet made available to all the handlers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1797
diff
changeset
|
171 const std::string& /*calledAet*/, |
620
4aa6f0d79947
security filter for dicom requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
619
diff
changeset
|
172 DicomRequestType type) |
4aa6f0d79947
security filter for dicom requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
619
diff
changeset
|
173 { |
4aa6f0d79947
security filter for dicom requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
619
diff
changeset
|
174 if (type == DicomRequestType_Store) |
4aa6f0d79947
security filter for dicom requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
619
diff
changeset
|
175 { |
4aa6f0d79947
security filter for dicom requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
619
diff
changeset
|
176 // 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
|
177 return true; |
4aa6f0d79947
security filter for dicom requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
619
diff
changeset
|
178 } |
4aa6f0d79947
security filter for dicom requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
619
diff
changeset
|
179 |
1799
4f01c9d73f02
calledAet made available to all the handlers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1797
diff
changeset
|
180 if (!Configuration::IsKnownAETitle(remoteAet)) |
618 | 181 { |
1799
4f01c9d73f02
calledAet made available to all the handlers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1797
diff
changeset
|
182 LOG(ERROR) << "Unknown remote DICOM modality AET: \"" << remoteAet << "\""; |
618 | 183 return false; |
184 } | |
185 else | |
186 { | |
187 return true; | |
188 } | |
189 } | |
1163
3db41779d8f9
abstraction to allow/prevent transfer syntaxes on AET basis
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1135
diff
changeset
|
190 |
1799
4f01c9d73f02
calledAet made available to all the handlers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1797
diff
changeset
|
191 virtual bool IsAllowedTransferSyntax(const std::string& remoteIp, |
4f01c9d73f02
calledAet made available to all the handlers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1797
diff
changeset
|
192 const std::string& remoteAet, |
1806
cd213ebcaefd
UnknownSopClassAccepted option
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1802
diff
changeset
|
193 const std::string& calledAet, |
1163
3db41779d8f9
abstraction to allow/prevent transfer syntaxes on AET basis
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1135
diff
changeset
|
194 TransferSyntax syntax) |
3db41779d8f9
abstraction to allow/prevent transfer syntaxes on AET basis
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1135
diff
changeset
|
195 { |
1164
0a55d8eb194e
Configuration/Lua to select the accepted C-Store SCP transfer syntaxes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1163
diff
changeset
|
196 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
|
197 |
0a55d8eb194e
Configuration/Lua to select the accepted C-Store SCP transfer syntaxes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1163
diff
changeset
|
198 switch (syntax) |
0a55d8eb194e
Configuration/Lua to select the accepted C-Store SCP transfer syntaxes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1163
diff
changeset
|
199 { |
0a55d8eb194e
Configuration/Lua to select the accepted C-Store SCP transfer syntaxes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1163
diff
changeset
|
200 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
|
201 configuration = "DeflatedTransferSyntaxAccepted"; |
0a55d8eb194e
Configuration/Lua to select the accepted C-Store SCP transfer syntaxes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1163
diff
changeset
|
202 break; |
0a55d8eb194e
Configuration/Lua to select the accepted C-Store SCP transfer syntaxes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1163
diff
changeset
|
203 |
0a55d8eb194e
Configuration/Lua to select the accepted C-Store SCP transfer syntaxes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1163
diff
changeset
|
204 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
|
205 configuration = "JpegTransferSyntaxAccepted"; |
0a55d8eb194e
Configuration/Lua to select the accepted C-Store SCP transfer syntaxes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1163
diff
changeset
|
206 break; |
0a55d8eb194e
Configuration/Lua to select the accepted C-Store SCP transfer syntaxes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1163
diff
changeset
|
207 |
0a55d8eb194e
Configuration/Lua to select the accepted C-Store SCP transfer syntaxes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1163
diff
changeset
|
208 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
|
209 configuration = "Jpeg2000TransferSyntaxAccepted"; |
0a55d8eb194e
Configuration/Lua to select the accepted C-Store SCP transfer syntaxes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1163
diff
changeset
|
210 break; |
0a55d8eb194e
Configuration/Lua to select the accepted C-Store SCP transfer syntaxes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1163
diff
changeset
|
211 |
0a55d8eb194e
Configuration/Lua to select the accepted C-Store SCP transfer syntaxes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1163
diff
changeset
|
212 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
|
213 configuration = "JpegLosslessTransferSyntaxAccepted"; |
0a55d8eb194e
Configuration/Lua to select the accepted C-Store SCP transfer syntaxes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1163
diff
changeset
|
214 break; |
0a55d8eb194e
Configuration/Lua to select the accepted C-Store SCP transfer syntaxes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1163
diff
changeset
|
215 |
0a55d8eb194e
Configuration/Lua to select the accepted C-Store SCP transfer syntaxes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1163
diff
changeset
|
216 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
|
217 configuration = "JpipTransferSyntaxAccepted"; |
0a55d8eb194e
Configuration/Lua to select the accepted C-Store SCP transfer syntaxes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1163
diff
changeset
|
218 break; |
0a55d8eb194e
Configuration/Lua to select the accepted C-Store SCP transfer syntaxes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1163
diff
changeset
|
219 |
0a55d8eb194e
Configuration/Lua to select the accepted C-Store SCP transfer syntaxes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1163
diff
changeset
|
220 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
|
221 configuration = "Mpeg2TransferSyntaxAccepted"; |
0a55d8eb194e
Configuration/Lua to select the accepted C-Store SCP transfer syntaxes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1163
diff
changeset
|
222 break; |
0a55d8eb194e
Configuration/Lua to select the accepted C-Store SCP transfer syntaxes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1163
diff
changeset
|
223 |
0a55d8eb194e
Configuration/Lua to select the accepted C-Store SCP transfer syntaxes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1163
diff
changeset
|
224 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
|
225 configuration = "RleTransferSyntaxAccepted"; |
0a55d8eb194e
Configuration/Lua to select the accepted C-Store SCP transfer syntaxes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1163
diff
changeset
|
226 break; |
0a55d8eb194e
Configuration/Lua to select the accepted C-Store SCP transfer syntaxes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1163
diff
changeset
|
227 |
0a55d8eb194e
Configuration/Lua to select the accepted C-Store SCP transfer syntaxes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1163
diff
changeset
|
228 default: |
0a55d8eb194e
Configuration/Lua to select the accepted C-Store SCP transfer syntaxes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1163
diff
changeset
|
229 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
|
230 } |
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 { |
0a55d8eb194e
Configuration/Lua to select the accepted C-Store SCP transfer syntaxes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1163
diff
changeset
|
233 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
|
234 |
1433
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1368
diff
changeset
|
235 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
|
236 |
0a55d8eb194e
Configuration/Lua to select the accepted C-Store SCP transfer syntaxes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1163
diff
changeset
|
237 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
|
238 { |
0a55d8eb194e
Configuration/Lua to select the accepted C-Store SCP transfer syntaxes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1163
diff
changeset
|
239 LuaFunctionCall call(locker.GetLua(), lua.c_str()); |
1799
4f01c9d73f02
calledAet made available to all the handlers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1797
diff
changeset
|
240 call.PushString(remoteAet); |
4f01c9d73f02
calledAet made available to all the handlers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1797
diff
changeset
|
241 call.PushString(remoteIp); |
1806
cd213ebcaefd
UnknownSopClassAccepted option
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1802
diff
changeset
|
242 call.PushString(calledAet); |
cd213ebcaefd
UnknownSopClassAccepted option
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1802
diff
changeset
|
243 return call.ExecutePredicate(); |
cd213ebcaefd
UnknownSopClassAccepted option
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1802
diff
changeset
|
244 } |
cd213ebcaefd
UnknownSopClassAccepted option
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1802
diff
changeset
|
245 } |
cd213ebcaefd
UnknownSopClassAccepted option
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1802
diff
changeset
|
246 |
cd213ebcaefd
UnknownSopClassAccepted option
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1802
diff
changeset
|
247 return Configuration::GetGlobalBoolParameter(configuration, true); |
cd213ebcaefd
UnknownSopClassAccepted option
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1802
diff
changeset
|
248 } |
cd213ebcaefd
UnknownSopClassAccepted option
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1802
diff
changeset
|
249 |
cd213ebcaefd
UnknownSopClassAccepted option
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1802
diff
changeset
|
250 |
cd213ebcaefd
UnknownSopClassAccepted option
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1802
diff
changeset
|
251 virtual bool IsUnknownSopClassAccepted(const std::string& remoteIp, |
cd213ebcaefd
UnknownSopClassAccepted option
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1802
diff
changeset
|
252 const std::string& remoteAet, |
cd213ebcaefd
UnknownSopClassAccepted option
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1802
diff
changeset
|
253 const std::string& calledAet) |
cd213ebcaefd
UnknownSopClassAccepted option
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1802
diff
changeset
|
254 { |
cd213ebcaefd
UnknownSopClassAccepted option
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1802
diff
changeset
|
255 static const char* configuration = "UnknownSopClassAccepted"; |
cd213ebcaefd
UnknownSopClassAccepted option
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1802
diff
changeset
|
256 |
cd213ebcaefd
UnknownSopClassAccepted option
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1802
diff
changeset
|
257 { |
cd213ebcaefd
UnknownSopClassAccepted option
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1802
diff
changeset
|
258 std::string lua = "Is" + std::string(configuration); |
cd213ebcaefd
UnknownSopClassAccepted option
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1802
diff
changeset
|
259 |
cd213ebcaefd
UnknownSopClassAccepted option
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1802
diff
changeset
|
260 LuaScripting::Locker locker(context_.GetLua()); |
cd213ebcaefd
UnknownSopClassAccepted option
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1802
diff
changeset
|
261 |
cd213ebcaefd
UnknownSopClassAccepted option
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1802
diff
changeset
|
262 if (locker.GetLua().IsExistingFunction(lua.c_str())) |
cd213ebcaefd
UnknownSopClassAccepted option
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1802
diff
changeset
|
263 { |
cd213ebcaefd
UnknownSopClassAccepted option
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1802
diff
changeset
|
264 LuaFunctionCall call(locker.GetLua(), lua.c_str()); |
cd213ebcaefd
UnknownSopClassAccepted option
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1802
diff
changeset
|
265 call.PushString(remoteAet); |
cd213ebcaefd
UnknownSopClassAccepted option
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1802
diff
changeset
|
266 call.PushString(remoteIp); |
cd213ebcaefd
UnknownSopClassAccepted option
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1802
diff
changeset
|
267 call.PushString(calledAet); |
1164
0a55d8eb194e
Configuration/Lua to select the accepted C-Store SCP transfer syntaxes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1163
diff
changeset
|
268 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
|
269 } |
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 |
1871
e8146c9c28a4
Promiscuous mode is now turned off by default
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1866
diff
changeset
|
272 return Configuration::GetGlobalBoolParameter(configuration, false); |
1163
3db41779d8f9
abstraction to allow/prevent transfer syntaxes on AET basis
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1135
diff
changeset
|
273 } |
618 | 274 }; |
275 | |
276 | |
409
63f707278fc8
lua filtering of incoming http requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
407
diff
changeset
|
277 class MyIncomingHttpRequestFilter : public IIncomingHttpRequestFilter |
63f707278fc8
lua filtering of incoming http requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
407
diff
changeset
|
278 { |
63f707278fc8
lua filtering of incoming http requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
407
diff
changeset
|
279 private: |
63f707278fc8
lua filtering of incoming http requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
407
diff
changeset
|
280 ServerContext& context_; |
63f707278fc8
lua filtering of incoming http requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
407
diff
changeset
|
281 |
63f707278fc8
lua filtering of incoming http requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
407
diff
changeset
|
282 public: |
63f707278fc8
lua filtering of incoming http requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
407
diff
changeset
|
283 MyIncomingHttpRequestFilter(ServerContext& context) : context_(context) |
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 } |
63f707278fc8
lua filtering of incoming http requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
407
diff
changeset
|
286 |
473
c9a5d72f8481
changing the namespace of HTTP enumerations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
426
diff
changeset
|
287 virtual bool IsAllowed(HttpMethod method, |
409
63f707278fc8
lua filtering of incoming http requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
407
diff
changeset
|
288 const char* uri, |
63f707278fc8
lua filtering of incoming http requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
407
diff
changeset
|
289 const char* ip, |
63f707278fc8
lua filtering of incoming http requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
407
diff
changeset
|
290 const char* username) const |
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 static const char* HTTP_FILTER = "IncomingHttpRequestFilter"; |
63f707278fc8
lua filtering of incoming http requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
407
diff
changeset
|
293 |
1433
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1368
diff
changeset
|
294 LuaScripting::Locker locker(context_.GetLua()); |
996
cf52f3bcb2b3
clarification of Lua classes wrt multithreading
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
941
diff
changeset
|
295 |
409
63f707278fc8
lua filtering of incoming http requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
407
diff
changeset
|
296 // 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
|
297 if (locker.GetLua().IsExistingFunction(HTTP_FILTER)) |
409
63f707278fc8
lua filtering of incoming http requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
407
diff
changeset
|
298 { |
996
cf52f3bcb2b3
clarification of Lua classes wrt multithreading
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
941
diff
changeset
|
299 LuaFunctionCall call(locker.GetLua(), HTTP_FILTER); |
409
63f707278fc8
lua filtering of incoming http requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
407
diff
changeset
|
300 |
63f707278fc8
lua filtering of incoming http requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
407
diff
changeset
|
301 switch (method) |
63f707278fc8
lua filtering of incoming http requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
407
diff
changeset
|
302 { |
473
c9a5d72f8481
changing the namespace of HTTP enumerations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
426
diff
changeset
|
303 case HttpMethod_Get: |
409
63f707278fc8
lua filtering of incoming http requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
407
diff
changeset
|
304 call.PushString("GET"); |
63f707278fc8
lua filtering of incoming http requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
407
diff
changeset
|
305 break; |
63f707278fc8
lua filtering of incoming http requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
407
diff
changeset
|
306 |
473
c9a5d72f8481
changing the namespace of HTTP enumerations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
426
diff
changeset
|
307 case HttpMethod_Put: |
409
63f707278fc8
lua filtering of incoming http requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
407
diff
changeset
|
308 call.PushString("PUT"); |
63f707278fc8
lua filtering of incoming http requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
407
diff
changeset
|
309 break; |
63f707278fc8
lua filtering of incoming http requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
407
diff
changeset
|
310 |
473
c9a5d72f8481
changing the namespace of HTTP enumerations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
426
diff
changeset
|
311 case HttpMethod_Post: |
409
63f707278fc8
lua filtering of incoming http requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
407
diff
changeset
|
312 call.PushString("POST"); |
63f707278fc8
lua filtering of incoming http requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
407
diff
changeset
|
313 break; |
63f707278fc8
lua filtering of incoming http requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
407
diff
changeset
|
314 |
473
c9a5d72f8481
changing the namespace of HTTP enumerations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
426
diff
changeset
|
315 case HttpMethod_Delete: |
409
63f707278fc8
lua filtering of incoming http requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
407
diff
changeset
|
316 call.PushString("DELETE"); |
63f707278fc8
lua filtering of incoming http requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
407
diff
changeset
|
317 break; |
63f707278fc8
lua filtering of incoming http requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
407
diff
changeset
|
318 |
63f707278fc8
lua filtering of incoming http requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
407
diff
changeset
|
319 default: |
63f707278fc8
lua filtering of incoming http requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
407
diff
changeset
|
320 return true; |
63f707278fc8
lua filtering of incoming http requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
407
diff
changeset
|
321 } |
63f707278fc8
lua filtering of incoming http requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
407
diff
changeset
|
322 |
63f707278fc8
lua filtering of incoming http requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
407
diff
changeset
|
323 call.PushString(uri); |
63f707278fc8
lua filtering of incoming http requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
407
diff
changeset
|
324 call.PushString(ip); |
63f707278fc8
lua filtering of incoming http requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
407
diff
changeset
|
325 call.PushString(username); |
63f707278fc8
lua filtering of incoming http requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
407
diff
changeset
|
326 |
63f707278fc8
lua filtering of incoming http requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
407
diff
changeset
|
327 if (!call.ExecutePredicate()) |
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 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
|
330 return false; |
63f707278fc8
lua filtering of incoming http requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
407
diff
changeset
|
331 } |
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 |
63f707278fc8
lua filtering of incoming http requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
407
diff
changeset
|
334 return true; |
63f707278fc8
lua filtering of incoming http requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
407
diff
changeset
|
335 } |
63f707278fc8
lua filtering of incoming http requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
407
diff
changeset
|
336 }; |
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 |
1645
1558b3226b18
IHttpExceptionFormatter
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1632
diff
changeset
|
339 |
1558b3226b18
IHttpExceptionFormatter
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1632
diff
changeset
|
340 class MyHttpExceptionFormatter : public IHttpExceptionFormatter |
1558b3226b18
IHttpExceptionFormatter
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1632
diff
changeset
|
341 { |
1558b3226b18
IHttpExceptionFormatter
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1632
diff
changeset
|
342 private: |
1558b3226b18
IHttpExceptionFormatter
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1632
diff
changeset
|
343 bool describeErrors_; |
1558b3226b18
IHttpExceptionFormatter
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1632
diff
changeset
|
344 OrthancPlugins* plugins_; |
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 public: |
1558b3226b18
IHttpExceptionFormatter
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1632
diff
changeset
|
347 MyHttpExceptionFormatter(bool describeErrors, |
1558b3226b18
IHttpExceptionFormatter
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1632
diff
changeset
|
348 OrthancPlugins* plugins) : |
1558b3226b18
IHttpExceptionFormatter
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1632
diff
changeset
|
349 describeErrors_(describeErrors), |
1558b3226b18
IHttpExceptionFormatter
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1632
diff
changeset
|
350 plugins_(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 } |
1558b3226b18
IHttpExceptionFormatter
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1632
diff
changeset
|
353 |
1558b3226b18
IHttpExceptionFormatter
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1632
diff
changeset
|
354 virtual void Format(HttpOutput& output, |
1558b3226b18
IHttpExceptionFormatter
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1632
diff
changeset
|
355 const OrthancException& exception, |
1558b3226b18
IHttpExceptionFormatter
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1632
diff
changeset
|
356 HttpMethod method, |
1558b3226b18
IHttpExceptionFormatter
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1632
diff
changeset
|
357 const char* uri) |
1558b3226b18
IHttpExceptionFormatter
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1632
diff
changeset
|
358 { |
1650 | 359 { |
360 bool isPlugin = false; | |
361 | |
362 #if ORTHANC_PLUGINS_ENABLED == 1 | |
363 if (plugins_ != NULL) | |
364 { | |
1651
2e692c83e2f3
improved custom error login
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1650
diff
changeset
|
365 plugins_->GetErrorDictionary().LogError(exception.GetErrorCode(), true); |
1650 | 366 isPlugin = true; |
367 } | |
368 #endif | |
369 | |
370 if (!isPlugin) | |
371 { | |
372 LOG(ERROR) << "Exception in the HTTP handler: " << exception.What(); | |
373 } | |
374 } | |
375 | |
1645
1558b3226b18
IHttpExceptionFormatter
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1632
diff
changeset
|
376 Json::Value message = Json::objectValue; |
1558b3226b18
IHttpExceptionFormatter
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1632
diff
changeset
|
377 ErrorCode errorCode = exception.GetErrorCode(); |
1558b3226b18
IHttpExceptionFormatter
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1632
diff
changeset
|
378 HttpStatus httpStatus = exception.GetHttpStatus(); |
1558b3226b18
IHttpExceptionFormatter
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1632
diff
changeset
|
379 |
1649
8040d56cb0b3
New function "OrthancPluginRegisterErrorCode()" to declare custom error codes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1645
diff
changeset
|
380 { |
8040d56cb0b3
New function "OrthancPluginRegisterErrorCode()" to declare custom error codes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1645
diff
changeset
|
381 bool isPlugin = false; |
1645
1558b3226b18
IHttpExceptionFormatter
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1632
diff
changeset
|
382 |
1558b3226b18
IHttpExceptionFormatter
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1632
diff
changeset
|
383 #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
|
384 if (plugins_ != NULL && |
8040d56cb0b3
New function "OrthancPluginRegisterErrorCode()" to declare custom error codes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1645
diff
changeset
|
385 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
|
386 { |
8040d56cb0b3
New function "OrthancPluginRegisterErrorCode()" to declare custom error codes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1645
diff
changeset
|
387 errorCode = ErrorCode_Plugin; |
8040d56cb0b3
New function "OrthancPluginRegisterErrorCode()" to declare custom error codes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1645
diff
changeset
|
388 isPlugin = true; |
8040d56cb0b3
New function "OrthancPluginRegisterErrorCode()" to declare custom error codes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1645
diff
changeset
|
389 } |
1645
1558b3226b18
IHttpExceptionFormatter
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1632
diff
changeset
|
390 #endif |
1558b3226b18
IHttpExceptionFormatter
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1632
diff
changeset
|
391 |
1649
8040d56cb0b3
New function "OrthancPluginRegisterErrorCode()" to declare custom error codes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1645
diff
changeset
|
392 if (!isPlugin) |
8040d56cb0b3
New function "OrthancPluginRegisterErrorCode()" to declare custom error codes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1645
diff
changeset
|
393 { |
8040d56cb0b3
New function "OrthancPluginRegisterErrorCode()" to declare custom error codes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1645
diff
changeset
|
394 message["Message"] = exception.What(); |
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 } |
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 (!describeErrors_) |
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 output.SendStatus(httpStatus); |
8040d56cb0b3
New function "OrthancPluginRegisterErrorCode()" to declare custom error codes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1645
diff
changeset
|
401 } |
8040d56cb0b3
New function "OrthancPluginRegisterErrorCode()" to declare custom error codes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1645
diff
changeset
|
402 else |
8040d56cb0b3
New function "OrthancPluginRegisterErrorCode()" to declare custom error codes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1645
diff
changeset
|
403 { |
8040d56cb0b3
New function "OrthancPluginRegisterErrorCode()" to declare custom error codes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1645
diff
changeset
|
404 message["Method"] = EnumerationToString(method); |
8040d56cb0b3
New function "OrthancPluginRegisterErrorCode()" to declare custom error codes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1645
diff
changeset
|
405 message["Uri"] = uri; |
8040d56cb0b3
New function "OrthancPluginRegisterErrorCode()" to declare custom error codes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1645
diff
changeset
|
406 message["HttpError"] = EnumerationToString(httpStatus); |
8040d56cb0b3
New function "OrthancPluginRegisterErrorCode()" to declare custom error codes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1645
diff
changeset
|
407 message["HttpStatus"] = httpStatus; |
8040d56cb0b3
New function "OrthancPluginRegisterErrorCode()" to declare custom error codes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1645
diff
changeset
|
408 message["OrthancError"] = EnumerationToString(errorCode); |
8040d56cb0b3
New function "OrthancPluginRegisterErrorCode()" to declare custom error codes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1645
diff
changeset
|
409 message["OrthancStatus"] = errorCode; |
1645
1558b3226b18
IHttpExceptionFormatter
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1632
diff
changeset
|
410 |
1649
8040d56cb0b3
New function "OrthancPluginRegisterErrorCode()" to declare custom error codes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1645
diff
changeset
|
411 std::string info = message.toStyledString(); |
8040d56cb0b3
New function "OrthancPluginRegisterErrorCode()" to declare custom error codes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1645
diff
changeset
|
412 output.SendStatus(httpStatus, info); |
8040d56cb0b3
New function "OrthancPluginRegisterErrorCode()" to declare custom error codes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1645
diff
changeset
|
413 } |
1645
1558b3226b18
IHttpExceptionFormatter
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1632
diff
changeset
|
414 } |
1558b3226b18
IHttpExceptionFormatter
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1632
diff
changeset
|
415 }; |
1558b3226b18
IHttpExceptionFormatter
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1632
diff
changeset
|
416 |
1558b3226b18
IHttpExceptionFormatter
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1632
diff
changeset
|
417 |
1558b3226b18
IHttpExceptionFormatter
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1632
diff
changeset
|
418 |
1733 | 419 static void PrintHelp(const char* path) |
133 | 420 { |
421 std::cout | |
422 << "Usage: " << path << " [OPTION]... [CONFIGURATION]" << std::endl | |
175
662af781a227
sample config file from command line
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
158
diff
changeset
|
423 << "Orthanc, lightweight, RESTful DICOM server for healthcare and medical research." << std::endl |
133 | 424 << std::endl |
1666
d7039be97eeb
better command-line options handling
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1651
diff
changeset
|
425 << "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
|
426 << "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
|
427 << "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
|
428 << "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
|
429 << "instructions about how to use Orthanc <http://www.orthanc-server.com/>." << std::endl |
133 | 430 << std::endl |
431 << "Command-line options:" << std::endl | |
432 << " --help\t\tdisplay this help and exit" << std::endl | |
433 << " --logdir=[dir]\tdirectory where to store the log files" << std::endl | |
434 << "\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
|
435 << " --config=[file]\tcreate a sample configuration file and exit" << std::endl |
1733 | 436 << " --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
|
437 << " --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
|
438 << " --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
|
439 << " --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
|
440 << "\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
|
441 << "\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
|
442 << " --version\t\toutput version information and exit" << std::endl |
133 | 443 << std::endl |
444 << "Exit status:" << std::endl | |
1615
c40fe92a68e7
Primitives to upgrade the database version in plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1592
diff
changeset
|
445 << " 0 if success," << std::endl |
1733 | 446 #if defined(_WIN32) |
447 << "!= 0 if error (use the --errors option to get the list of possible errors)." << std::endl | |
448 #else | |
1615
c40fe92a68e7
Primitives to upgrade the database version in plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1592
diff
changeset
|
449 << " -1 if error (have a look at the logs)." << std::endl |
1733 | 450 #endif |
133 | 451 << std::endl; |
452 } | |
0 | 453 |
454 | |
1733 | 455 static void PrintVersion(const char* path) |
133 | 456 { |
457 std::cout | |
458 << path << " " << ORTHANC_VERSION << std::endl | |
1289
5810700b68fa
upgrade to year 2015
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1288
diff
changeset
|
459 << "Copyright (C) 2012-2015 Sebastien Jodogne, Medical Physics Department, University Hospital of Liege (Belgium)" << std::endl |
133 | 460 << "Licensing GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>, with OpenSSL exception." << std::endl |
461 << "This is free software: you are free to change and redistribute it." << std::endl | |
462 << "There is NO WARRANTY, to the extent permitted by law." << std::endl | |
463 << std::endl | |
464 << "Written by Sebastien Jodogne <s.jodogne@gmail.com>" << std::endl; | |
465 } | |
466 | |
0 | 467 |
1733 | 468 static void PrintErrorCode(ErrorCode code, const char* description) |
469 { | |
470 std::cout | |
471 << std::right << std::setw(16) | |
472 << static_cast<int>(code) | |
473 << " " << description << std::endl; | |
474 } | |
475 | |
476 | |
477 static void PrintErrors(const char* path) | |
478 { | |
479 std::cout | |
480 << 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
|
481 << "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
|
482 << 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
|
483 << "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
|
484 << std::endl << std::endl; |
1733 | 485 |
486 // The content of the following brackets is automatically generated | |
487 // by the "GenerateErrorCodes.py" script | |
488 { | |
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
|
489 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
|
490 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
|
491 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
|
492 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
|
493 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
|
494 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
|
495 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
|
496 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
|
497 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
|
498 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
|
499 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
|
500 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
|
501 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
|
502 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
|
503 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
|
504 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
|
505 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
|
506 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
|
507 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
|
508 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
|
509 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
|
510 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
|
511 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
|
512 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
|
513 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
|
514 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
|
515 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
|
516 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
|
517 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
|
518 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
|
519 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
|
520 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
|
521 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
|
522 PrintErrorCode(ErrorCode_StorageAreaPlugin, "Error in the plugin implementing a custom storage area"); |
1746 | 523 PrintErrorCode(ErrorCode_EmptyRequest, "The request is empty"); |
1781
5ad4e4d92ecb
AcceptMediaDispatcher bootstrap
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1746
diff
changeset
|
524 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
|
525 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
|
526 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
|
527 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
|
528 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
|
529 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
|
530 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
|
531 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
|
532 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
|
533 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
|
534 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
|
535 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
|
536 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
|
537 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
|
538 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
|
539 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
|
540 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
|
541 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
|
542 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
|
543 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
|
544 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
|
545 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
|
546 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
|
547 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
|
548 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
|
549 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
|
550 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
|
551 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
|
552 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
|
553 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
|
554 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
|
555 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
|
556 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
|
557 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
|
558 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
|
559 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
|
560 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
|
561 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
|
562 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
|
563 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
|
564 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
|
565 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
|
566 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
|
567 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
|
568 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
|
569 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
|
570 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
|
571 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
|
572 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
|
573 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
|
574 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
|
575 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
|
576 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
|
577 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
|
578 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
|
579 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
|
580 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
|
581 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
|
582 PrintErrorCode(ErrorCode_NoWorklistHandler, "No request handler factory for DICOM C-Find Modality SCP"); |
1733 | 583 } |
584 | |
585 std::cout << std::endl; | |
586 } | |
587 | |
588 | |
893
f57802f8b4dc
plugins for windows
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
831
diff
changeset
|
589 |
f57802f8b4dc
plugins for windows
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
831
diff
changeset
|
590 static void LoadLuaScripts(ServerContext& context) |
f57802f8b4dc
plugins for windows
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
831
diff
changeset
|
591 { |
f57802f8b4dc
plugins for windows
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
831
diff
changeset
|
592 std::list<std::string> luaScripts; |
f57802f8b4dc
plugins for windows
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
831
diff
changeset
|
593 Configuration::GetGlobalListOfStringsParameter(luaScripts, "LuaScripts"); |
f57802f8b4dc
plugins for windows
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
831
diff
changeset
|
594 for (std::list<std::string>::const_iterator |
f57802f8b4dc
plugins for windows
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
831
diff
changeset
|
595 it = luaScripts.begin(); it != luaScripts.end(); ++it) |
f57802f8b4dc
plugins for windows
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
831
diff
changeset
|
596 { |
f57802f8b4dc
plugins for windows
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
831
diff
changeset
|
597 std::string path = Configuration::InterpretStringParameterAsPath(*it); |
f57802f8b4dc
plugins for windows
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
831
diff
changeset
|
598 LOG(WARNING) << "Installing the Lua scripts from: " << path; |
f57802f8b4dc
plugins for windows
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
831
diff
changeset
|
599 std::string script; |
f57802f8b4dc
plugins for windows
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
831
diff
changeset
|
600 Toolbox::ReadFile(script, path); |
1018
564e39d6df13
integration mainline->lua-scripting
Sebastien Jodogne <s.jodogne@gmail.com>
diff
changeset
|
601 |
1433
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1368
diff
changeset
|
602 LuaScripting::Locker locker(context.GetLua()); |
1018
564e39d6df13
integration mainline->lua-scripting
Sebastien Jodogne <s.jodogne@gmail.com>
diff
changeset
|
603 locker.GetLua().Execute(script); |
893
f57802f8b4dc
plugins for windows
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
831
diff
changeset
|
604 } |
f57802f8b4dc
plugins for windows
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
831
diff
changeset
|
605 } |
f57802f8b4dc
plugins for windows
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
831
diff
changeset
|
606 |
f57802f8b4dc
plugins for windows
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
831
diff
changeset
|
607 |
1632
eb8fbcf008b5
fix build with plugins disabled
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1630
diff
changeset
|
608 |
eb8fbcf008b5
fix build with plugins disabled
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1630
diff
changeset
|
609 #if ORTHANC_PLUGINS_ENABLED == 1 |
1434
f9cd40166269
refactoring of OrthancPlugins, improvement in ServeFolders
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1433
diff
changeset
|
610 static void LoadPlugins(OrthancPlugins& plugins) |
893
f57802f8b4dc
plugins for windows
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
831
diff
changeset
|
611 { |
1434
f9cd40166269
refactoring of OrthancPlugins, improvement in ServeFolders
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1433
diff
changeset
|
612 std::list<std::string> path; |
f9cd40166269
refactoring of OrthancPlugins, improvement in ServeFolders
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1433
diff
changeset
|
613 Configuration::GetGlobalListOfStringsParameter(path, "Plugins"); |
893
f57802f8b4dc
plugins for windows
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
831
diff
changeset
|
614 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
|
615 it = path.begin(); it != path.end(); ++it) |
893
f57802f8b4dc
plugins for windows
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
831
diff
changeset
|
616 { |
f57802f8b4dc
plugins for windows
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
831
diff
changeset
|
617 std::string path = Configuration::InterpretStringParameterAsPath(*it); |
1321
0f9e0e808e0f
more explicit message
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1310
diff
changeset
|
618 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
|
619 plugins.GetManager().RegisterPlugin(path); |
893
f57802f8b4dc
plugins for windows
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
831
diff
changeset
|
620 } |
f57802f8b4dc
plugins for windows
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
831
diff
changeset
|
621 } |
1632
eb8fbcf008b5
fix build with plugins disabled
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1630
diff
changeset
|
622 #endif |
893
f57802f8b4dc
plugins for windows
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
831
diff
changeset
|
623 |
f57802f8b4dc
plugins for windows
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
831
diff
changeset
|
624 |
f57802f8b4dc
plugins for windows
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
831
diff
changeset
|
625 |
1452
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
626 // Returns "true" if restart is required |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
627 static bool WaitForExit(ServerContext& context, |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
628 OrthancRestApi& restApi) |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
629 { |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
630 LOG(WARNING) << "Orthanc has started"; |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
631 |
1741
06addfcd1d4c
OrthancStarted and OrthancStopped events in plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1734
diff
changeset
|
632 #if ORTHANC_PLUGINS_ENABLED == 1 |
06addfcd1d4c
OrthancStarted and OrthancStopped events in plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1734
diff
changeset
|
633 if (context.HasPlugins()) |
06addfcd1d4c
OrthancStarted and OrthancStopped events in plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1734
diff
changeset
|
634 { |
06addfcd1d4c
OrthancStarted and OrthancStopped events in plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1734
diff
changeset
|
635 context.GetPlugins().SignalOrthancStarted(); |
06addfcd1d4c
OrthancStarted and OrthancStopped events in plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1734
diff
changeset
|
636 } |
06addfcd1d4c
OrthancStarted and OrthancStopped events in plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1734
diff
changeset
|
637 #endif |
06addfcd1d4c
OrthancStarted and OrthancStopped events in plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1734
diff
changeset
|
638 |
1455
a68545767975
Initialize() and Finalize() events in Lua
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1452
diff
changeset
|
639 context.GetLua().Execute("Initialize"); |
a68545767975
Initialize() and Finalize() events in Lua
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1452
diff
changeset
|
640 |
1730
bc34c69b594a
New URI "/tools/shutdown" to stop Orthanc from the REST API
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1675
diff
changeset
|
641 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
|
642 bool restart = restApi.IsResetRequestReceived(); |
1452
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
643 |
1455
a68545767975
Initialize() and Finalize() events in Lua
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1452
diff
changeset
|
644 context.GetLua().Execute("Finalize"); |
a68545767975
Initialize() and Finalize() events in Lua
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1452
diff
changeset
|
645 |
1741
06addfcd1d4c
OrthancStarted and OrthancStopped events in plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1734
diff
changeset
|
646 #if ORTHANC_PLUGINS_ENABLED == 1 |
06addfcd1d4c
OrthancStarted and OrthancStopped events in plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1734
diff
changeset
|
647 if (context.HasPlugins()) |
06addfcd1d4c
OrthancStarted and OrthancStopped events in plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1734
diff
changeset
|
648 { |
06addfcd1d4c
OrthancStarted and OrthancStopped events in plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1734
diff
changeset
|
649 context.GetPlugins().SignalOrthancStopped(); |
06addfcd1d4c
OrthancStarted and OrthancStopped events in plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1734
diff
changeset
|
650 } |
06addfcd1d4c
OrthancStarted and OrthancStopped events in plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1734
diff
changeset
|
651 #endif |
06addfcd1d4c
OrthancStarted and OrthancStopped events in plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1734
diff
changeset
|
652 |
1452
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
653 if (restart) |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
654 { |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
655 LOG(WARNING) << "Reset request received, restarting Orthanc"; |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
656 } |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
657 |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
658 // We're done |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
659 LOG(WARNING) << "Orthanc is stopping"; |
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 return restart; |
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 |
1368 | 664 |
665 | |
1452
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
666 static bool StartHttpServer(ServerContext& context, |
1645
1558b3226b18
IHttpExceptionFormatter
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1632
diff
changeset
|
667 OrthancRestApi& restApi, |
1558b3226b18
IHttpExceptionFormatter
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1632
diff
changeset
|
668 OrthancPlugins* plugins) |
1103
bec1eccf976c
Hot restart of Orthanc
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1102
diff
changeset
|
669 { |
1452
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
670 if (!Configuration::GetGlobalBoolParameter("HttpServerEnabled", true)) |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
671 { |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
672 LOG(WARNING) << "The HTTP server is disabled"; |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
673 return WaitForExit(context, restApi); |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
674 } |
1247 | 675 |
1645
1558b3226b18
IHttpExceptionFormatter
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1632
diff
changeset
|
676 MyHttpExceptionFormatter exceptionFormatter(Configuration::GetGlobalBoolParameter("HttpDescribeErrors", true), plugins); |
1558b3226b18
IHttpExceptionFormatter
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1632
diff
changeset
|
677 |
1558b3226b18
IHttpExceptionFormatter
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1632
diff
changeset
|
678 |
1452
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
679 // HTTP server |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
680 MyIncomingHttpRequestFilter httpFilter(context); |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
681 MongooseServer httpServer; |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
682 httpServer.SetPortNumber(Configuration::GetGlobalIntegerParameter("HttpPort", 8042)); |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
683 httpServer.SetRemoteAccessAllowed(Configuration::GetGlobalBoolParameter("RemoteAccessAllowed", false)); |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
684 httpServer.SetKeepAliveEnabled(Configuration::GetGlobalBoolParameter("KeepAlive", false)); |
1517 | 685 httpServer.SetHttpCompressionEnabled(Configuration::GetGlobalBoolParameter("HttpCompressionEnabled", true)); |
1452
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
686 httpServer.SetIncomingHttpRequestFilter(httpFilter); |
1645
1558b3226b18
IHttpExceptionFormatter
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1632
diff
changeset
|
687 httpServer.SetHttpExceptionFormatter(exceptionFormatter); |
1127
f4e65808ea58
FilesystemStorageWithoutDicom
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1124
diff
changeset
|
688 |
1452
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
689 httpServer.SetAuthenticationEnabled(Configuration::GetGlobalBoolParameter("AuthenticationEnabled", false)); |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
690 Configuration::SetupRegisteredUsers(httpServer); |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
691 |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
692 if (Configuration::GetGlobalBoolParameter("SslEnabled", false)) |
1310
61ce8147f30d
custom database back-end
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1289
diff
changeset
|
693 { |
1452
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
694 std::string certificate = Configuration::InterpretStringParameterAsPath( |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
695 Configuration::GetGlobalStringParameter("SslCertificate", "certificate.pem")); |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
696 httpServer.SetSslEnabled(true); |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
697 httpServer.SetSslCertificate(certificate.c_str()); |
1310
61ce8147f30d
custom database back-end
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1289
diff
changeset
|
698 } |
61ce8147f30d
custom database back-end
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1289
diff
changeset
|
699 else |
61ce8147f30d
custom database back-end
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1289
diff
changeset
|
700 { |
1452
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
701 httpServer.SetSslEnabled(false); |
1310
61ce8147f30d
custom database back-end
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1289
diff
changeset
|
702 } |
1103
bec1eccf976c
Hot restart of Orthanc
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1102
diff
changeset
|
703 |
1452
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
704 httpServer.Register(context.GetHttpHandler()); |
1310
61ce8147f30d
custom database back-end
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1289
diff
changeset
|
705 |
1452
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
706 httpServer.Start(); |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
707 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
|
708 |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
709 bool restart = WaitForExit(context, restApi); |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
710 |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
711 httpServer.Stop(); |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
712 LOG(WARNING) << " HTTP server has stopped"; |
1103
bec1eccf976c
Hot restart of Orthanc
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1102
diff
changeset
|
713 |
1452
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
714 return restart; |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
715 } |
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 |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
718 static bool StartDicomServer(ServerContext& context, |
1645
1558b3226b18
IHttpExceptionFormatter
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1632
diff
changeset
|
719 OrthancRestApi& restApi, |
1558b3226b18
IHttpExceptionFormatter
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1632
diff
changeset
|
720 OrthancPlugins* plugins) |
1452
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 if (!Configuration::GetGlobalBoolParameter("DicomServerEnabled", true)) |
1103
bec1eccf976c
Hot restart of Orthanc
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1102
diff
changeset
|
723 { |
1452
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
724 LOG(WARNING) << "The DICOM server is disabled"; |
1645
1558b3226b18
IHttpExceptionFormatter
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1632
diff
changeset
|
725 return StartHttpServer(context, restApi, plugins); |
1103
bec1eccf976c
Hot restart of Orthanc
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1102
diff
changeset
|
726 } |
bec1eccf976c
Hot restart of Orthanc
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1102
diff
changeset
|
727 |
1452
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
728 MyDicomServerFactory serverFactory(context); |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
729 |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
730 // DICOM server |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
731 DicomServer dicomServer; |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
732 OrthancApplicationEntityFilter dicomFilter(context); |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
733 dicomServer.SetCalledApplicationEntityTitleCheck(Configuration::GetGlobalBoolParameter("DicomCheckCalledAet", false)); |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
734 dicomServer.SetStoreRequestHandlerFactory(serverFactory); |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
735 dicomServer.SetMoveRequestHandlerFactory(serverFactory); |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
736 dicomServer.SetFindRequestHandlerFactory(serverFactory); |
1786
164d78911382
primitives to handle dicom worklists
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1781
diff
changeset
|
737 |
1800
30e97a1f4093
callback for handling worklists with plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1799
diff
changeset
|
738 #if ORTHANC_PLUGINS_ENABLED == 1 |
1809
5ed8769b17f9
disable worklist support if no plugin has registered callbacks
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1807
diff
changeset
|
739 if (plugins && |
5ed8769b17f9
disable worklist support if no plugin has registered callbacks
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1807
diff
changeset
|
740 plugins->HasWorklistHandler()) |
1800
30e97a1f4093
callback for handling worklists with plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1799
diff
changeset
|
741 { |
30e97a1f4093
callback for handling worklists with plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1799
diff
changeset
|
742 dicomServer.SetWorklistRequestHandlerFactory(*plugins); |
30e97a1f4093
callback for handling worklists with plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1799
diff
changeset
|
743 } |
30e97a1f4093
callback for handling worklists with plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1799
diff
changeset
|
744 #endif |
1786
164d78911382
primitives to handle dicom worklists
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1781
diff
changeset
|
745 |
1452
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
746 dicomServer.SetPortNumber(Configuration::GetGlobalIntegerParameter("DicomPort", 4242)); |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
747 dicomServer.SetApplicationEntityTitle(Configuration::GetGlobalStringParameter("DicomAet", "ORTHANC")); |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
748 dicomServer.SetApplicationEntityFilter(dicomFilter); |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
749 |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
750 dicomServer.Start(); |
1851
d364926389e0
OrthancFindRequestHandler::FilterQueryTag
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1809
diff
changeset
|
751 LOG(WARNING) << "DICOM server listening with AET " << dicomServer.GetApplicationEntityTitle() |
d364926389e0
OrthancFindRequestHandler::FilterQueryTag
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1809
diff
changeset
|
752 << " on port: " << dicomServer.GetPortNumber(); |
1452
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; |
1869
9af3b492b010
invitation to replicate if upgrade fails
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1866
diff
changeset
|
838 |
9af3b492b010
invitation to replicate if upgrade fails
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1866
diff
changeset
|
839 try |
9af3b492b010
invitation to replicate if upgrade fails
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1866
diff
changeset
|
840 { |
9af3b492b010
invitation to replicate if upgrade fails
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1866
diff
changeset
|
841 database.Upgrade(ORTHANC_DATABASE_VERSION, storageArea); |
9af3b492b010
invitation to replicate if upgrade fails
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1866
diff
changeset
|
842 } |
9af3b492b010
invitation to replicate if upgrade fails
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1866
diff
changeset
|
843 catch (OrthancException&) |
9af3b492b010
invitation to replicate if upgrade fails
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1866
diff
changeset
|
844 { |
9af3b492b010
invitation to replicate if upgrade fails
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1866
diff
changeset
|
845 LOG(ERROR) << "Unable to run the automated upgrade, please use the replication instructions: " |
9af3b492b010
invitation to replicate if upgrade fails
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1866
diff
changeset
|
846 << "https://orthanc.chu.ulg.ac.be/book/users/replication.html"; |
9af3b492b010
invitation to replicate if upgrade fails
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1866
diff
changeset
|
847 throw; |
9af3b492b010
invitation to replicate if upgrade fails
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1866
diff
changeset
|
848 } |
1669
a412ad57f0f9
refactoring of sample plugins, OrthancPluginReconstructMainDicomTags
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1668
diff
changeset
|
849 |
a412ad57f0f9
refactoring of sample plugins, OrthancPluginReconstructMainDicomTags
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1668
diff
changeset
|
850 // Sanity check |
a412ad57f0f9
refactoring of sample plugins, OrthancPluginReconstructMainDicomTags
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1668
diff
changeset
|
851 currentVersion = database.GetDatabaseVersion(); |
a412ad57f0f9
refactoring of sample plugins, OrthancPluginReconstructMainDicomTags
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1668
diff
changeset
|
852 if (ORTHANC_DATABASE_VERSION != currentVersion) |
a412ad57f0f9
refactoring of sample plugins, OrthancPluginReconstructMainDicomTags
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1668
diff
changeset
|
853 { |
a412ad57f0f9
refactoring of sample plugins, OrthancPluginReconstructMainDicomTags
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1668
diff
changeset
|
854 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
|
855 throw OrthancException(ErrorCode_InternalError); |
a412ad57f0f9
refactoring of sample plugins, OrthancPluginReconstructMainDicomTags
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1668
diff
changeset
|
856 } |
1615
c40fe92a68e7
Primitives to upgrade the database version in plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1592
diff
changeset
|
857 |
c40fe92a68e7
Primitives to upgrade the database version in plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1592
diff
changeset
|
858 return true; |
c40fe92a68e7
Primitives to upgrade the database version in plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1592
diff
changeset
|
859 } |
c40fe92a68e7
Primitives to upgrade the database version in plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1592
diff
changeset
|
860 |
c40fe92a68e7
Primitives to upgrade the database version in plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1592
diff
changeset
|
861 |
1452
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
862 static bool ConfigureServerContext(IDatabaseWrapper& database, |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
863 IStorageArea& storageArea, |
1672
4c5a85c3ff43
sample database plugin now working
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1669
diff
changeset
|
864 OrthancPlugins *plugins) |
1452
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
865 { |
1549
e5e975e9b738
refactoring and simplification of StorageAccessor
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1517
diff
changeset
|
866 ServerContext context(database, storageArea); |
1452
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
867 |
1590
ba0226474e22
New configuration option: "HttpTimeout" to set the default timeout for HTTP requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1573
diff
changeset
|
868 HttpClient::SetDefaultTimeout(Configuration::GetGlobalIntegerParameter("HttpTimeout", 0)); |
1452
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
869 context.SetCompressionEnabled(Configuration::GetGlobalBoolParameter("StorageCompression", false)); |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
870 context.SetStoreMD5ForAttachments(Configuration::GetGlobalBoolParameter("StoreMD5ForAttachments", true)); |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
871 |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
872 try |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
873 { |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
874 context.GetIndex().SetMaximumPatientCount(Configuration::GetGlobalIntegerParameter("MaximumPatientCount", 0)); |
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().SetMaximumPatientCount(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 try |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
882 { |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
883 uint64_t size = Configuration::GetGlobalIntegerParameter("MaximumStorageSize", 0); |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
884 context.GetIndex().SetMaximumStorageSize(size * 1024 * 1024); |
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 catch (...) |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
887 { |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
888 context.GetIndex().SetMaximumStorageSize(0); |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
889 } |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
890 |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
891 LoadLuaScripts(context); |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
892 |
1632
eb8fbcf008b5
fix build with plugins disabled
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1630
diff
changeset
|
893 #if ORTHANC_PLUGINS_ENABLED == 1 |
1452
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
894 if (plugins) |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
895 { |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
896 plugins->SetServerContext(context); |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
897 context.SetPlugins(*plugins); |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
898 } |
1632
eb8fbcf008b5
fix build with plugins disabled
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1630
diff
changeset
|
899 #endif |
1452
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
900 |
1675
131136aeeaa7
improved exception handling in the main program
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1672
diff
changeset
|
901 bool restart; |
131136aeeaa7
improved exception handling in the main program
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1672
diff
changeset
|
902 ErrorCode error = ErrorCode_Success; |
131136aeeaa7
improved exception handling in the main program
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1672
diff
changeset
|
903 |
131136aeeaa7
improved exception handling in the main program
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1672
diff
changeset
|
904 try |
131136aeeaa7
improved exception handling in the main program
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1672
diff
changeset
|
905 { |
131136aeeaa7
improved exception handling in the main program
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1672
diff
changeset
|
906 restart = ConfigureHttpHandler(context, plugins); |
131136aeeaa7
improved exception handling in the main program
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1672
diff
changeset
|
907 } |
131136aeeaa7
improved exception handling in the main program
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1672
diff
changeset
|
908 catch (OrthancException& e) |
131136aeeaa7
improved exception handling in the main program
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1672
diff
changeset
|
909 { |
131136aeeaa7
improved exception handling in the main program
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1672
diff
changeset
|
910 error = e.GetErrorCode(); |
131136aeeaa7
improved exception handling in the main program
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1672
diff
changeset
|
911 } |
131136aeeaa7
improved exception handling in the main program
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1672
diff
changeset
|
912 |
1452
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
913 context.Stop(); |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
914 |
1632
eb8fbcf008b5
fix build with plugins disabled
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1630
diff
changeset
|
915 #if ORTHANC_PLUGINS_ENABLED == 1 |
1452
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
916 if (plugins) |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
917 { |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
918 context.ResetPlugins(); |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
919 } |
1632
eb8fbcf008b5
fix build with plugins disabled
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1630
diff
changeset
|
920 #endif |
1452
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
921 |
1675
131136aeeaa7
improved exception handling in the main program
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1672
diff
changeset
|
922 if (error != ErrorCode_Success) |
131136aeeaa7
improved exception handling in the main program
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1672
diff
changeset
|
923 { |
131136aeeaa7
improved exception handling in the main program
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1672
diff
changeset
|
924 throw OrthancException(error); |
131136aeeaa7
improved exception handling in the main program
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1672
diff
changeset
|
925 } |
131136aeeaa7
improved exception handling in the main program
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1672
diff
changeset
|
926 |
1452
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
927 return restart; |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
928 } |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
929 |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
930 |
1672
4c5a85c3ff43
sample database plugin now working
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1669
diff
changeset
|
931 static bool ConfigureDatabase(IDatabaseWrapper& database, |
4c5a85c3ff43
sample database plugin now working
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1669
diff
changeset
|
932 IStorageArea& storageArea, |
4c5a85c3ff43
sample database plugin now working
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1669
diff
changeset
|
933 OrthancPlugins *plugins, |
4c5a85c3ff43
sample database plugin now working
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1669
diff
changeset
|
934 bool allowDatabaseUpgrade) |
4c5a85c3ff43
sample database plugin now working
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1669
diff
changeset
|
935 { |
4c5a85c3ff43
sample database plugin now working
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1669
diff
changeset
|
936 database.Open(); |
4c5a85c3ff43
sample database plugin now working
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1669
diff
changeset
|
937 |
4c5a85c3ff43
sample database plugin now working
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1669
diff
changeset
|
938 if (!UpgradeDatabase(database, storageArea, allowDatabaseUpgrade)) |
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 return false; |
4c5a85c3ff43
sample database plugin now working
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1669
diff
changeset
|
941 } |
4c5a85c3ff43
sample database plugin now working
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1669
diff
changeset
|
942 |
4c5a85c3ff43
sample database plugin now working
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1669
diff
changeset
|
943 bool success = ConfigureServerContext(database, storageArea, plugins); |
4c5a85c3ff43
sample database plugin now working
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1669
diff
changeset
|
944 |
4c5a85c3ff43
sample database plugin now working
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1669
diff
changeset
|
945 database.Close(); |
4c5a85c3ff43
sample database plugin now working
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1669
diff
changeset
|
946 |
4c5a85c3ff43
sample database plugin now working
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1669
diff
changeset
|
947 return success; |
4c5a85c3ff43
sample database plugin now working
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1669
diff
changeset
|
948 } |
4c5a85c3ff43
sample database plugin now working
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1669
diff
changeset
|
949 |
4c5a85c3ff43
sample database plugin now working
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1669
diff
changeset
|
950 |
1452
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
951 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
|
952 char* argv[], |
c40fe92a68e7
Primitives to upgrade the database version in plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1592
diff
changeset
|
953 bool allowDatabaseUpgrade) |
1452
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
954 { |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
955 std::auto_ptr<IDatabaseWrapper> databasePtr; |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
956 std::auto_ptr<IStorageArea> storage; |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
957 |
1455
a68545767975
Initialize() and Finalize() events in Lua
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1452
diff
changeset
|
958 #if ORTHANC_PLUGINS_ENABLED == 1 |
1452
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
959 OrthancPlugins plugins; |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
960 plugins.SetCommandLineArguments(argc, argv); |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
961 LoadPlugins(plugins); |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
962 |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
963 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
|
964 if (plugins.HasDatabaseBackend()) |
1452
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
965 { |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
966 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
|
967 database = &plugins.GetDatabaseBackend(); |
1452
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
968 } |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
969 else |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
970 { |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
971 databasePtr.reset(Configuration::CreateDatabaseWrapper()); |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
972 database = databasePtr.get(); |
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 if (plugins.HasStorageArea()) |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
976 { |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
977 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
|
978 storage.reset(plugins.CreateStorageArea()); |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
979 } |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
980 else |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
981 { |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
982 storage.reset(Configuration::CreateStorageArea()); |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
983 } |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
984 |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
985 assert(database != NULL); |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
986 assert(storage.get() != NULL); |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
987 |
1672
4c5a85c3ff43
sample database plugin now working
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1669
diff
changeset
|
988 return ConfigureDatabase(*database, *storage, &plugins, allowDatabaseUpgrade); |
1452
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
989 |
1455
a68545767975
Initialize() and Finalize() events in Lua
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1452
diff
changeset
|
990 #elif ORTHANC_PLUGINS_ENABLED == 0 |
1452
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
991 // The plugins are disabled |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
992 databasePtr.reset(Configuration::CreateDatabaseWrapper()); |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
993 storage.reset(Configuration::CreateStorageArea()); |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
994 |
1672
4c5a85c3ff43
sample database plugin now working
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1669
diff
changeset
|
995 return ConfigureDatabase(*databasePtr, *storage, NULL, allowDatabaseUpgrade); |
1455
a68545767975
Initialize() and Finalize() events in Lua
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1452
diff
changeset
|
996 |
a68545767975
Initialize() and Finalize() events in Lua
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1452
diff
changeset
|
997 #else |
a68545767975
Initialize() and Finalize() events in Lua
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1452
diff
changeset
|
998 # 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
|
999 #endif |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
1000 } |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
1001 |
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
1002 |
1615
c40fe92a68e7
Primitives to upgrade the database version in plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1592
diff
changeset
|
1003 static bool StartOrthanc(int argc, |
c40fe92a68e7
Primitives to upgrade the database version in plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1592
diff
changeset
|
1004 char* argv[], |
c40fe92a68e7
Primitives to upgrade the database version in plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1592
diff
changeset
|
1005 bool allowDatabaseUpgrade) |
1452
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
1006 { |
1615
c40fe92a68e7
Primitives to upgrade the database version in plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1592
diff
changeset
|
1007 return ConfigurePlugins(argc, argv, allowDatabaseUpgrade); |
1452
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
1008 } |
1103
bec1eccf976c
Hot restart of Orthanc
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1102
diff
changeset
|
1009 |
893
f57802f8b4dc
plugins for windows
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
831
diff
changeset
|
1010 |
0 | 1011 int main(int argc, char* argv[]) |
1012 { | |
1485
27661b33f624
Creation of Logging.h
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1455
diff
changeset
|
1013 Logging::Initialize(); |
133 | 1014 |
1615
c40fe92a68e7
Primitives to upgrade the database version in plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1592
diff
changeset
|
1015 bool allowDatabaseUpgrade = false; |
1666
d7039be97eeb
better command-line options handling
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1651
diff
changeset
|
1016 const char* configurationFile = NULL; |
d7039be97eeb
better command-line options handling
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1651
diff
changeset
|
1017 |
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 /** |
d7039be97eeb
better command-line options handling
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1651
diff
changeset
|
1020 * Parse the command-line options. |
d7039be97eeb
better command-line options handling
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1651
diff
changeset
|
1021 **/ |
1615
c40fe92a68e7
Primitives to upgrade the database version in plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1592
diff
changeset
|
1022 |
112 | 1023 for (int i = 1; i < argc; i++) |
1024 { | |
1666
d7039be97eeb
better command-line options handling
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1651
diff
changeset
|
1025 std::string argument(argv[i]); |
d7039be97eeb
better command-line options handling
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1651
diff
changeset
|
1026 |
d7039be97eeb
better command-line options handling
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1651
diff
changeset
|
1027 if (argument.empty()) |
d7039be97eeb
better command-line options handling
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1651
diff
changeset
|
1028 { |
d7039be97eeb
better command-line options handling
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1651
diff
changeset
|
1029 // Ignore empty arguments |
d7039be97eeb
better command-line options handling
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1651
diff
changeset
|
1030 } |
d7039be97eeb
better command-line options handling
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1651
diff
changeset
|
1031 else if (argument[0] != '-') |
d7039be97eeb
better command-line options handling
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1651
diff
changeset
|
1032 { |
d7039be97eeb
better command-line options handling
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1651
diff
changeset
|
1033 if (configurationFile != NULL) |
d7039be97eeb
better command-line options handling
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1651
diff
changeset
|
1034 { |
d7039be97eeb
better command-line options handling
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1651
diff
changeset
|
1035 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
|
1036 return -1; |
d7039be97eeb
better command-line options handling
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1651
diff
changeset
|
1037 } |
d7039be97eeb
better command-line options handling
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1651
diff
changeset
|
1038 else |
d7039be97eeb
better command-line options handling
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1651
diff
changeset
|
1039 { |
d7039be97eeb
better command-line options handling
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1651
diff
changeset
|
1040 // 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
|
1041 // the configuration file |
d7039be97eeb
better command-line options handling
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1651
diff
changeset
|
1042 configurationFile = argv[i]; |
d7039be97eeb
better command-line options handling
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1651
diff
changeset
|
1043 } |
d7039be97eeb
better command-line options handling
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1651
diff
changeset
|
1044 } |
1733 | 1045 else if (argument == "--errors") |
1046 { | |
1047 PrintErrors(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 == "--help") |
133 | 1051 { |
1052 PrintHelp(argv[0]); | |
1053 return 0; | |
1054 } | |
1666
d7039be97eeb
better command-line options handling
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1651
diff
changeset
|
1055 else if (argument == "--version") |
133 | 1056 { |
1057 PrintVersion(argv[0]); | |
1058 return 0; | |
1059 } | |
1666
d7039be97eeb
better command-line options handling
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1651
diff
changeset
|
1060 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
|
1061 { |
1485
27661b33f624
Creation of Logging.h
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1455
diff
changeset
|
1062 Logging::EnableInfoLevel(true); |
137
0e97abc7b950
fix of a bug in older versions of sqlite
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
136
diff
changeset
|
1063 } |
1666
d7039be97eeb
better command-line options handling
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1651
diff
changeset
|
1064 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
|
1065 { |
1485
27661b33f624
Creation of Logging.h
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1455
diff
changeset
|
1066 Logging::EnableTraceLevel(true); |
137
0e97abc7b950
fix of a bug in older versions of sqlite
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
136
diff
changeset
|
1067 } |
1666
d7039be97eeb
better command-line options handling
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1651
diff
changeset
|
1068 else if (boost::starts_with(argument, "--logdir=")) |
112 | 1069 { |
1666
d7039be97eeb
better command-line options handling
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1651
diff
changeset
|
1070 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
|
1071 |
596927722403
support of --logdir by the internal logger
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1489
diff
changeset
|
1072 try |
596927722403
support of --logdir by the internal logger
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1489
diff
changeset
|
1073 { |
596927722403
support of --logdir by the internal logger
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1489
diff
changeset
|
1074 Logging::SetTargetFolder(directory); |
596927722403
support of --logdir by the internal logger
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1489
diff
changeset
|
1075 } |
596927722403
support of --logdir by the internal logger
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1489
diff
changeset
|
1076 catch (OrthancException&) |
596927722403
support of --logdir by the internal logger
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1489
diff
changeset
|
1077 { |
1666
d7039be97eeb
better command-line options handling
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1651
diff
changeset
|
1078 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
|
1079 << directory << ") is inexistent, aborting."; |
1490
596927722403
support of --logdir by the internal logger
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1489
diff
changeset
|
1080 return -1; |
596927722403
support of --logdir by the internal logger
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1489
diff
changeset
|
1081 } |
112 | 1082 } |
1666
d7039be97eeb
better command-line options handling
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1651
diff
changeset
|
1083 else if (argument == "--upgrade") |
1615
c40fe92a68e7
Primitives to upgrade the database version in plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1592
diff
changeset
|
1084 { |
c40fe92a68e7
Primitives to upgrade the database version in plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1592
diff
changeset
|
1085 allowDatabaseUpgrade = true; |
c40fe92a68e7
Primitives to upgrade the database version in plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1592
diff
changeset
|
1086 } |
1666
d7039be97eeb
better command-line options handling
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1651
diff
changeset
|
1087 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
|
1088 { |
662af781a227
sample config file from command line
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
158
diff
changeset
|
1089 std::string configurationSample; |
662af781a227
sample config file from command line
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
158
diff
changeset
|
1090 GetFileResource(configurationSample, EmbeddedResources::CONFIGURATION_SAMPLE); |
662af781a227
sample config file from command line
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
158
diff
changeset
|
1091 |
684 | 1092 #if defined(_WIN32) |
1093 // Replace UNIX newlines with DOS newlines | |
1094 boost::replace_all(configurationSample, "\n", "\r\n"); | |
1095 #endif | |
1096 | |
1666
d7039be97eeb
better command-line options handling
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1651
diff
changeset
|
1097 std::string target = argument.substr(9); |
d7039be97eeb
better command-line options handling
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1651
diff
changeset
|
1098 Toolbox::WriteFile(configurationSample, target); |
175
662af781a227
sample config file from command line
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
158
diff
changeset
|
1099 return 0; |
662af781a227
sample config file from command line
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
158
diff
changeset
|
1100 } |
1666
d7039be97eeb
better command-line options handling
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1651
diff
changeset
|
1101 else |
d7039be97eeb
better command-line options handling
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1651
diff
changeset
|
1102 { |
d7039be97eeb
better command-line options handling
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1651
diff
changeset
|
1103 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
|
1104 } |
112 | 1105 } |
1106 | |
1666
d7039be97eeb
better command-line options handling
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1651
diff
changeset
|
1107 |
d7039be97eeb
better command-line options handling
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1651
diff
changeset
|
1108 /** |
d7039be97eeb
better command-line options handling
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1651
diff
changeset
|
1109 * Launch Orthanc. |
d7039be97eeb
better command-line options handling
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1651
diff
changeset
|
1110 **/ |
1102
ce6386b37afd
avoid unnecessary exceptions on Orthanc startup
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1066
diff
changeset
|
1111 |
1866
579bf74f7da1
output creation time for mainline builds
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1851
diff
changeset
|
1112 { |
579bf74f7da1
output creation time for mainline builds
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1851
diff
changeset
|
1113 std::string version(ORTHANC_VERSION); |
579bf74f7da1
output creation time for mainline builds
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1851
diff
changeset
|
1114 |
579bf74f7da1
output creation time for mainline builds
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1851
diff
changeset
|
1115 if (std::string(ORTHANC_VERSION) == "mainline") |
579bf74f7da1
output creation time for mainline builds
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1851
diff
changeset
|
1116 { |
579bf74f7da1
output creation time for mainline builds
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1851
diff
changeset
|
1117 try |
579bf74f7da1
output creation time for mainline builds
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1851
diff
changeset
|
1118 { |
579bf74f7da1
output creation time for mainline builds
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1851
diff
changeset
|
1119 boost::filesystem::path exe(Toolbox::GetPathToExecutable()); |
579bf74f7da1
output creation time for mainline builds
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1851
diff
changeset
|
1120 std::time_t creation = boost::filesystem::last_write_time(exe); |
579bf74f7da1
output creation time for mainline builds
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1851
diff
changeset
|
1121 boost::posix_time::ptime converted(boost::posix_time::from_time_t(creation)); |
579bf74f7da1
output creation time for mainline builds
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1851
diff
changeset
|
1122 version += " (" + boost::posix_time::to_iso_string(converted) + ")"; |
579bf74f7da1
output creation time for mainline builds
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1851
diff
changeset
|
1123 } |
579bf74f7da1
output creation time for mainline builds
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1851
diff
changeset
|
1124 catch (...) |
579bf74f7da1
output creation time for mainline builds
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1851
diff
changeset
|
1125 { |
579bf74f7da1
output creation time for mainline builds
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1851
diff
changeset
|
1126 } |
579bf74f7da1
output creation time for mainline builds
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1851
diff
changeset
|
1127 } |
579bf74f7da1
output creation time for mainline builds
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1851
diff
changeset
|
1128 |
579bf74f7da1
output creation time for mainline builds
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1851
diff
changeset
|
1129 LOG(WARNING) << "Orthanc version: " << version; |
579bf74f7da1
output creation time for mainline builds
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1851
diff
changeset
|
1130 } |
1102
ce6386b37afd
avoid unnecessary exceptions on Orthanc startup
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1066
diff
changeset
|
1131 |
291
4d7469f72a0b
embedding of dicom dictionaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
270
diff
changeset
|
1132 int status = 0; |
0 | 1133 try |
1134 { | |
1103
bec1eccf976c
Hot restart of Orthanc
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1102
diff
changeset
|
1135 for (;;) |
270
e6a4c4329481
parameters for storage capacity
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
236
diff
changeset
|
1136 { |
1103
bec1eccf976c
Hot restart of Orthanc
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1102
diff
changeset
|
1137 OrthancInitialize(configurationFile); |
0 | 1138 |
1805
f08978b1f45b
c-find scu for modality worklists
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1802
diff
changeset
|
1139 if (0) |
f08978b1f45b
c-find scu for modality worklists
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1802
diff
changeset
|
1140 { |
f08978b1f45b
c-find scu for modality worklists
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1802
diff
changeset
|
1141 // TODO REMOVE THIS TEST |
f08978b1f45b
c-find scu for modality worklists
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1802
diff
changeset
|
1142 DicomUserConnection c; |
f08978b1f45b
c-find scu for modality worklists
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1802
diff
changeset
|
1143 c.SetRemoteHost("localhost"); |
f08978b1f45b
c-find scu for modality worklists
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1802
diff
changeset
|
1144 c.SetRemotePort(4243); |
f08978b1f45b
c-find scu for modality worklists
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1802
diff
changeset
|
1145 c.SetRemoteApplicationEntityTitle("ORTHANCTEST"); |
f08978b1f45b
c-find scu for modality worklists
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1802
diff
changeset
|
1146 c.Open(); |
f08978b1f45b
c-find scu for modality worklists
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1802
diff
changeset
|
1147 ParsedDicomFile f(false); |
f08978b1f45b
c-find scu for modality worklists
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1802
diff
changeset
|
1148 f.Replace(DICOM_TAG_PATIENT_NAME, "M*"); |
f08978b1f45b
c-find scu for modality worklists
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1802
diff
changeset
|
1149 DicomFindAnswers a; |
f08978b1f45b
c-find scu for modality worklists
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1802
diff
changeset
|
1150 c.FindWorklist(a, f); |
f08978b1f45b
c-find scu for modality worklists
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1802
diff
changeset
|
1151 Json::Value j; |
f08978b1f45b
c-find scu for modality worklists
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1802
diff
changeset
|
1152 a.ToJson(j, true); |
f08978b1f45b
c-find scu for modality worklists
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1802
diff
changeset
|
1153 std::cout << j; |
f08978b1f45b
c-find scu for modality worklists
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1802
diff
changeset
|
1154 } |
f08978b1f45b
c-find scu for modality worklists
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1802
diff
changeset
|
1155 |
1615
c40fe92a68e7
Primitives to upgrade the database version in plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1592
diff
changeset
|
1156 bool restart = StartOrthanc(argc, argv, allowDatabaseUpgrade); |
1452
b737acb13da5
refactoring of the main function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1447
diff
changeset
|
1157 if (restart) |
23 | 1158 { |
1103
bec1eccf976c
Hot restart of Orthanc
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1102
diff
changeset
|
1159 OrthancFinalize(); |
23 | 1160 } |
1161 else | |
1162 { | |
1103
bec1eccf976c
Hot restart of Orthanc
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1102
diff
changeset
|
1163 break; |
23 | 1164 } |
0 | 1165 } |
1166 } | |
1245
aea9277dee75
catch more exceptions (patch from Valdas Rapsevicius)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1232
diff
changeset
|
1167 catch (const OrthancException& e) |
0 | 1168 { |
1733 | 1169 LOG(ERROR) << "Uncaught exception, stopping now: [" << e.What() << "] (code " << e.GetErrorCode() << ")"; |
1170 #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
|
1171 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
|
1172 { |
e2675b37eb01
Under Windows, the exit status of Orthanc corresponds to the encountered error code
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1733
diff
changeset
|
1173 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
|
1174 } |
e2675b37eb01
Under Windows, the exit status of Orthanc corresponds to the encountered error code
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1733
diff
changeset
|
1175 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
|
1176 { |
e2675b37eb01
Under Windows, the exit status of Orthanc corresponds to the encountered error code
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1733
diff
changeset
|
1177 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
|
1178 } |
e2675b37eb01
Under Windows, the exit status of Orthanc corresponds to the encountered error code
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1733
diff
changeset
|
1179 |
1733 | 1180 #else |
291
4d7469f72a0b
embedding of dicom dictionaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
270
diff
changeset
|
1181 status = -1; |
1733 | 1182 #endif |
291
4d7469f72a0b
embedding of dicom dictionaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
270
diff
changeset
|
1183 } |
1245
aea9277dee75
catch more exceptions (patch from Valdas Rapsevicius)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1232
diff
changeset
|
1184 catch (const std::exception& e) |
aea9277dee75
catch more exceptions (patch from Valdas Rapsevicius)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1232
diff
changeset
|
1185 { |
aea9277dee75
catch more exceptions (patch from Valdas Rapsevicius)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1232
diff
changeset
|
1186 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
|
1187 status = -1; |
aea9277dee75
catch more exceptions (patch from Valdas Rapsevicius)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1232
diff
changeset
|
1188 } |
aea9277dee75
catch more exceptions (patch from Valdas Rapsevicius)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1232
diff
changeset
|
1189 catch (const std::string& s) |
aea9277dee75
catch more exceptions (patch from Valdas Rapsevicius)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1232
diff
changeset
|
1190 { |
aea9277dee75
catch more exceptions (patch from Valdas Rapsevicius)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1232
diff
changeset
|
1191 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
|
1192 status = -1; |
aea9277dee75
catch more exceptions (patch from Valdas Rapsevicius)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1232
diff
changeset
|
1193 } |
291
4d7469f72a0b
embedding of dicom dictionaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
270
diff
changeset
|
1194 catch (...) |
4d7469f72a0b
embedding of dicom dictionaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
270
diff
changeset
|
1195 { |
1223
5bd4c9f85b4c
fix race condition while unregistering plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1210
diff
changeset
|
1196 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
|
1197 status = -1; |
0 | 1198 } |
1199 | |
62 | 1200 OrthancFinalize(); |
27 | 1201 |
690
2e67366aab83
case-insensitive matching of Application Entity Titles
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
689
diff
changeset
|
1202 LOG(WARNING) << "Orthanc has stopped"; |
2e67366aab83
case-insensitive matching of Application Entity Titles
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
689
diff
changeset
|
1203 |
1485
27661b33f624
Creation of Logging.h
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1455
diff
changeset
|
1204 Logging::Finalize(); |
27661b33f624
Creation of Logging.h
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1455
diff
changeset
|
1205 |
291
4d7469f72a0b
embedding of dicom dictionaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
270
diff
changeset
|
1206 return status; |
0 | 1207 } |