@@ -60,89 +60,117 @@ static void EndConsoleOutputCapture(CClient* pClient, const SString& strIfNoOutp
6060 }
6161}
6262
63- bool CConsoleCommands::StartResource (CConsole* pConsole , const char * szArguments , CClient* pClient , CClient* pEchoClient)
63+ bool CConsoleCommands::StartResource (CConsole* console , const char * arguments , CClient* client , CClient* echo) noexcept
6464{
65- SString strResponse;
65+ if (!arguments || !arguments[0 ])
66+ {
67+ echo->SendConsole (" * Syntax: start <resource-name> [<resource-name> ...]" );
68+ return true ;
69+ }
6670
67- if (szArguments && szArguments[0 ])
71+ std::istringstream iss (arguments);
72+ std::vector<std::string> names ((std::istream_iterator<std::string>(iss)), std::istream_iterator<std::string>());
73+
74+ for (const auto & name : names)
6875 {
69- CResource* resource = g_pGame->GetResourceManager ()->GetResource (szArguments);
70- if (resource)
76+ CResource* resource = g_pGame->GetResourceManager ()->GetResource (name.c_str ());
77+ std::string response;
78+
79+ if (!resource)
7180 {
72- if (pClient->GetNick ())
73- CLogger::LogPrintf (" start: Requested by %s\n " , GetAdminNameForLog (pClient).c_str ());
81+ response = " start: Resource '" + name + " ' could not be found" ;
82+ echo->SendConsole (response.c_str ());
83+ continue ;
84+ }
7485
75- if (resource->IsLoaded ())
76- {
77- if (!resource->IsActive ())
78- {
79- if (g_pGame->GetResourceManager ()->StartResource (resource, NULL , true ))
80- {
81- strResponse = SString (" start: Resource '%s' started" , szArguments);
82- }
83- else
84- {
85- strResponse = SString (" start: Resource '%s' start was requested (%s)" , szArguments, resource->GetFailureReason ().c_str ());
86- }
87- }
88- else
89- strResponse = " start: Resource is already running" ;
90- }
91- else
92- strResponse = SString (" start: Resource is loaded, but has errors (%s)" , resource->GetFailureReason ().c_str ());
86+ if (client->GetNick ())
87+ CLogger::LogPrintf (" start: Requested by %s\n " , GetAdminNameForLog (client).c_str ());
88+
89+ if (!resource->IsLoaded ())
90+ {
91+ response = " start: Resource '" + name + " ' is loaded, but has errors (" + resource->GetFailureReason () + " )" ;
92+ echo->SendConsole (response.c_str ());
93+ continue ;
94+ }
95+
96+ if (resource->IsActive ())
97+ {
98+ response = " start: Resource '" + name + " ' is already running" ;
99+ echo->SendConsole (response.c_str ());
100+ continue ;
101+ }
102+
103+ if (g_pGame->GetResourceManager ()->StartResource (resource, nullptr , true ))
104+ {
105+ response = " start: Resource '" + name + " ' started" ;
93106 }
94107 else
95- strResponse = " start: Resource could not be found" ;
108+ {
109+ response = " start: Resource '" + name + " ' start was requested (" + resource->GetFailureReason () + " )" ;
110+ }
111+
112+ echo->SendConsole (response.c_str ());
96113 }
97- else
98- strResponse = " * Syntax: start <resource-name>" ;
99114
100- pEchoClient->SendConsole (strResponse);
101115 return true ;
102116}
103117
104- bool CConsoleCommands::RestartResource (CConsole* pConsole , const char * szArguments , CClient* pClient , CClient* pEchoClient)
118+ bool CConsoleCommands::RestartResource (CConsole* console , const char * arguments , CClient* client , CClient* echo) noexcept
105119{
106- if (szArguments && szArguments [0 ])
120+ if (!arguments || !arguments [0 ])
107121 {
108- CResource* resource = g_pGame->GetResourceManager ()->GetResource (szArguments);
109- if (resource)
122+ echo->SendConsole (" * Syntax: restart <resource-name> [<resource-name> ...]" );
123+ return false ;
124+ }
125+
126+ std::istringstream iss (arguments);
127+ std::vector<std::string> names ((std::istream_iterator<std::string>(iss)), std::istream_iterator<std::string>());
128+
129+ for (const auto & name : names)
130+ {
131+ CResource* resource = g_pGame->GetResourceManager ()->GetResource (name.c_str ());
132+ std::string response;
133+
134+ if (!resource)
110135 {
111- if (pClient->GetNick ())
112- CLogger::LogPrintf (" restart: Requested by %s\n " , GetAdminNameForLog (pClient).c_str ());
136+ response = " restart: Resource '" + name + " ' could not be found" ;
137+ echo->SendConsole (response.c_str ());
138+ continue ;
139+ }
113140
114- if (resource->IsLoaded ())
115- {
116- if (resource->IsActive ())
117- {
118- if (resource->IsProtected ())
119- {
120- if (!g_pGame->GetACLManager ()->CanObjectUseRight (pClient->GetNick (), CAccessControlListGroupObject::OBJECT_TYPE_USER,
121- " restart.protected" , CAccessControlListRight::RIGHT_TYPE_COMMAND, false ))
122- {
123- pEchoClient->SendConsole (" restart: Resource could not be restarted as it is protected" );
124- return false ;
125- }
126- }
141+ if (client->GetNick ())
142+ CLogger::LogPrintf (" restart: Requested by %s\n " , GetAdminNameForLog (client).c_str ());
127143
128- g_pGame->GetResourceManager ()->QueueResource (resource, CResourceManager::QUEUE_RESTART, NULL );
129- pEchoClient->SendConsole (" restart: Resource restarting..." );
130- }
131- else
132- pEchoClient->SendConsole (" restart: Resource is not running" );
133- }
134- else
135- pEchoClient->SendConsole (SString (" restart: Resource is loaded, but has errors (%s)" , resource->GetFailureReason ().c_str ()));
144+ if (!resource->IsLoaded ())
145+ {
146+ response = " restart: Resource '" + name + " ' is loaded, but has errors (" + resource->GetFailureReason () + " )" ;
147+ echo->SendConsole (response.c_str ());
148+ continue ;
136149 }
137- else
138- pEchoClient->SendConsole (" restart: Resource could not be found" );
139- return true ;
150+
151+ if (!resource->IsActive ())
152+ {
153+ response = " restart: Resource '" + name + " ' is not running" ;
154+ echo->SendConsole (response.c_str ());
155+ continue ;
156+ }
157+
158+ if (resource->IsProtected () && !g_pGame->GetACLManager ()->CanObjectUseRight (client->GetNick (), CAccessControlListGroupObject::OBJECT_TYPE_USER, " restart.protected" , CAccessControlListRight::RIGHT_TYPE_COMMAND, false ))
159+ {
160+ response = " restart: Resource '" + name + " ' could not be restarted as it is protected" ;
161+ echo->SendConsole (response.c_str ());
162+ continue ;
163+ }
164+
165+ g_pGame->GetResourceManager ()->QueueResource (resource, CResourceManager::QUEUE_RESTART, nullptr );
166+ response = " restart: Resource '" + name + " ' restarting..." ;
167+ echo->SendConsole (response.c_str ());
140168 }
141- else
142- pEchoClient->SendConsole (" * Syntax: restart <resource-name>" );
143- return false ;
169+
170+ return true ;
144171}
145172
173+
146174bool CConsoleCommands::RefreshResources (CConsole* pConsole, const char * szArguments, CClient* pClient, CClient* pEchoClient)
147175{
148176 BeginConsoleOutputCapture (pEchoClient);
@@ -193,47 +221,59 @@ bool CConsoleCommands::ResourceInfo(CConsole* pConsole, const char* szArguments,
193221 return false ;
194222}
195223
196- bool CConsoleCommands::StopResource (CConsole* pConsole , const char * szArguments , CClient* pClient , CClient* pEchoClient)
224+ bool CConsoleCommands::StopResource (CConsole* console , const char * arguments , CClient* client , CClient* echo) noexcept
197225{
198- if (szArguments && szArguments [0 ])
226+ if (!arguments || !arguments [0 ])
199227 {
200- CResource* resource = g_pGame->GetResourceManager ()->GetResource (szArguments);
201- if (resource)
228+ echo->SendConsole (" * Syntax: stop <resource-name> [<resource-name> ...]" );
229+ return false ;
230+ }
231+
232+ std::istringstream iss (arguments);
233+ std::vector<std::string> names ((std::istream_iterator<std::string>(iss)), std::istream_iterator<std::string>());
234+
235+ for (const auto & name : names)
236+ {
237+ CResource* resource = g_pGame->GetResourceManager ()->GetResource (name.c_str ());
238+ std::string response;
239+
240+ if (!resource)
202241 {
203- if (pClient->GetNick ())
204- CLogger::LogPrintf (" stop: Requested by %s\n " , GetAdminNameForLog (pClient).c_str ());
242+ response = " stop: Resource '" + name + " ' could not be found" ;
243+ echo->SendConsole (response.c_str ());
244+ continue ;
245+ }
205246
206- if (resource->IsLoaded ())
207- {
208- if (resource->IsActive ())
209- {
210- if (resource->IsProtected ())
211- {
212- if (!g_pGame->GetACLManager ()->CanObjectUseRight (pClient->GetNick (), CAccessControlListGroupObject::OBJECT_TYPE_USER, " stop.protected" ,
213- CAccessControlListRight::RIGHT_TYPE_COMMAND, false ))
214- {
215- pEchoClient->SendConsole (" stop: Resource could not be stopped as it is protected" );
216- return false ;
217- }
218- }
247+ if (client->GetNick ())
248+ CLogger::LogPrintf (" stop: Requested by %s\n " , GetAdminNameForLog (client).c_str ());
219249
220- g_pGame->GetResourceManager ()->QueueResource (resource, CResourceManager::QUEUE_STOP, NULL );
221- pEchoClient->SendConsole (" stop: Resource stopping" );
222- }
223- else
224- pEchoClient->SendConsole (" stop: Resource is not running" );
225- }
226- else
227- pEchoClient->SendConsole (SString (" stop: Resource is loaded, but has errors (%s)" , resource->GetFailureReason ().c_str ()));
250+ if (!resource->IsLoaded ())
251+ {
252+ response = " stop: Resource '" + name + " ' is loaded, but has errors (" + resource->GetFailureReason () + " )" ;
253+ echo->SendConsole (response.c_str ());
254+ continue ;
228255 }
229- else
230- pEchoClient->SendConsole (" stop: Resource could not be found" );
231- return true ;
256+
257+ if (!resource->IsActive ())
258+ {
259+ response = " stop: Resource '" + name + " ' is not running" ;
260+ echo->SendConsole (response.c_str ());
261+ continue ;
262+ }
263+
264+ if (resource->IsProtected () && !g_pGame->GetACLManager ()->CanObjectUseRight (client->GetNick (), CAccessControlListGroupObject::OBJECT_TYPE_USER, " stop.protected" , CAccessControlListRight::RIGHT_TYPE_COMMAND, false ))
265+ {
266+ response = " stop: Resource '" + name + " ' could not be stopped as it is protected" ;
267+ echo->SendConsole (response.c_str ());
268+ continue ;
269+ }
270+
271+ g_pGame->GetResourceManager ()->QueueResource (resource, CResourceManager::QUEUE_STOP, nullptr );
272+ response = " stop: Resource '" + name + " ' stopping" ;
273+ echo->SendConsole (response.c_str ());
232274 }
233- else
234- pEchoClient->SendConsole (" * Syntax: stop <resource-name>" );
235275
236- return false ;
276+ return true ;
237277}
238278
239279bool CConsoleCommands::StopAllResources (CConsole* pConsole, const char * szArguments, CClient* pClient, CClient* pEchoClient)
0 commit comments