@@ -13,42 +13,63 @@ class ServiceController extends Controller
1313 * Store a newly created resource in storage.
1414 *
1515 * @param Request $request
16- * @return \Illuminate\Http\RedirectResponse|\Illuminate\Http\Response|\Illuminate\View\View
1716 */
1817 public function store (Request $ request , ToastInterface $ toast )
1918 {
2019 $ this ->authorize ('create ' , Service::class);
2120
22- $ this ->validate ($ request , [
23- 'service_name ' => 'required|string|unique:service ' ,
24- 'device_id ' => 'integer ' ,
25- 'service_type ' => 'string ' ,
26- 'service_param ' => 'nullable|string ' ,
27- 'service_ip ' => 'nullable|string ' ,
28- 'service_desc ' => 'nullable|string ' ,
29- 'service_changed ' => 'integer ' ,
30- 'service_disabled ' => 'integer ' ,
31- 'service_ignore ' => 'integer ' ,
32- ]);
21+ $ rules = [
22+ 'device_id ' => 'required|integer|exists:devices,device_id ' ,
23+ 'service_changed ' => 'nullable|integer ' ,
24+ 'service_template_id ' => 'nullable|integer ' ,
25+ ];
26+
27+ if ($ request ->has ('service_name ' )) {
28+ $ rules ['service_name ' ] = 'required|string|unique:services,service_name ' ;
29+ $ rules ['service_type ' ] = 'required|string ' ;
30+ $ rules ['service_param ' ] = 'nullable|string ' ;
31+ $ rules ['service_ip ' ] = 'nullable|string ' ;
32+ $ rules ['service_desc ' ] = 'nullable|string ' ;
33+ $ rules ['service_disabled ' ] = 'nullable|integer ' ;
34+ $ rules ['service_ignore ' ] = 'nullable|integer ' ;
35+ } else {
36+ $ rules ['name ' ] = 'required|string|unique:services,service_name ' ;
37+ $ rules ['stype ' ] = 'required|string ' ;
38+ $ rules ['param ' ] = 'nullable|string ' ;
39+ $ rules ['ip ' ] = 'nullable|string ' ;
40+ $ rules ['desc ' ] = 'nullable|string ' ;
41+ $ rules ['disabled ' ] = 'nullable|integer ' ;
42+ $ rules ['ignore ' ] = 'nullable|integer ' ;
43+ }
3344
34- $ service = new Service (
35- $ request ->only (
36- [
37- 'service_name ' ,
38- 'device_id ' ,
39- 'service_type ' ,
40- 'service_param ' ,
41- 'service_ip ' ,
42- 'service_desc ' ,
43- 'service_changed ' ,
44- 'service_disabled ' ,
45- 'service_ignore ' ,
46- ]
47- )
48- );
49- $ service ->save ();
50-
51- $ toast ->success (__ ('Service :name created ' , ['name ' => $ service ->service_name ]));
45+ $ this ->validate ($ request , $ rules );
46+
47+ $ name = strip_tags ((string ) $ request ->input ('service_name ' , $ request ->input ('name ' )));
48+ $ type = strip_tags ((string ) $ request ->input ('service_type ' , $ request ->input ('stype ' )));
49+ $ desc = strip_tags ((string ) $ request ->input ('service_desc ' , $ request ->input ('desc ' , '' )));
50+ $ ip = $ request ->input ('service_ip ' , $ request ->input ('ip ' , '' ));
51+ $ param = $ request ->input ('service_param ' , $ request ->input ('param ' , '' ));
52+ $ ignore = (int ) $ request ->input ('service_ignore ' , $ request ->input ('ignore ' , 0 ));
53+ $ disabled = (int ) $ request ->input ('service_disabled ' , $ request ->input ('disabled ' , 0 ));
54+ $ templateId = $ request ->input ('service_template_id ' , $ request ->input ('template_id ' , 0 ));
55+ $ deviceId = $ request ->input ('device_id ' );
56+
57+ $ service = \LibreNMS \Services::addService ($ deviceId , $ type , $ desc , $ ip , $ param , $ ignore , $ disabled , $ templateId , $ name );
58+
59+ if ($ request ->expectsJson () || $ request ->wantsJson ()) {
60+ if ($ service ) {
61+ return response ()->json ([
62+ 'status ' => 0 ,
63+ 'message ' => 'Added Service: <i> ' . $ service ->service_id . ': ' . e ($ type ) . '</i> ' ,
64+ ]);
65+ }
66+ return response ()->json ([
67+ 'status ' => 1 ,
68+ 'message ' => 'ERROR: Failed to add Service: <i> ' . e ($ type ) . '</i> ' ,
69+ ]);
70+ }
71+
72+ $ toast ->success (e (__ ('Service :name created ' , ['name ' => $ name ])));
5273
5374 return redirect ()->route ('services.templates.index ' );
5475 }
@@ -75,6 +96,72 @@ public function show(Service $service): JsonResponse
7596 ]);
7697 }
7798
99+ /**
100+ * Update the specified service in storage.
101+ */
102+ public function update (Request $ request , Service $ service ): JsonResponse
103+ {
104+ $ this ->authorize ('update ' , $ service );
105+
106+ $ rules = [
107+ 'service_changed ' => 'nullable|integer ' ,
108+ 'service_template_id ' => 'nullable|integer ' ,
109+ 'service_name ' => 'sometimes|required|string|unique:services,service_name, ' . $ service ->service_id . ',service_id ' ,
110+ 'service_type ' => 'sometimes|required|string ' ,
111+ 'service_param ' => 'nullable|string ' ,
112+ 'service_ip ' => 'nullable|string ' ,
113+ 'service_desc ' => 'nullable|string ' ,
114+ 'service_disabled ' => 'nullable|integer ' ,
115+ 'service_ignore ' => 'nullable|integer ' ,
116+ 'name ' => 'sometimes|required|string|unique:services,service_name, ' . $ service ->service_id . ',service_id ' ,
117+ 'stype ' => 'sometimes|required|string ' ,
118+ 'param ' => 'nullable|string ' ,
119+ 'ip ' => 'nullable|string ' ,
120+ 'desc ' => 'nullable|string ' ,
121+ 'disabled ' => 'nullable|integer ' ,
122+ 'ignore ' => 'nullable|integer ' ,
123+ ];
124+
125+ $ this ->validate ($ request , $ rules );
126+
127+ if ($ request ->has ('service_name ' ) || $ request ->has ('name ' )) {
128+ $ service ->service_name = strip_tags ((string ) $ request ->input ('service_name ' , $ request ->input ('name ' )));
129+ }
130+ if ($ request ->has ('service_type ' ) || $ request ->has ('stype ' )) {
131+ $ service ->service_type = strip_tags ((string ) $ request ->input ('service_type ' , $ request ->input ('stype ' )));
132+ }
133+ if ($ request ->has ('service_desc ' ) || $ request ->has ('desc ' )) {
134+ $ service ->service_desc = strip_tags ((string ) $ request ->input ('service_desc ' , $ request ->input ('desc ' , '' )));
135+ }
136+ if ($ request ->has ('service_ip ' ) || $ request ->has ('ip ' )) {
137+ $ service ->service_ip = $ request ->input ('service_ip ' , $ request ->input ('ip ' ));
138+ }
139+ if ($ request ->has ('service_param ' ) || $ request ->has ('param ' )) {
140+ $ service ->service_param = $ request ->input ('service_param ' , $ request ->input ('param ' ));
141+ }
142+ if ($ request ->has ('service_ignore ' ) || $ request ->has ('ignore ' )) {
143+ $ service ->service_ignore = (int ) $ request ->input ('service_ignore ' , $ request ->input ('ignore ' ));
144+ }
145+ if ($ request ->has ('service_disabled ' ) || $ request ->has ('disabled ' )) {
146+ $ service ->service_disabled = (int ) $ request ->input ('service_disabled ' , $ request ->input ('disabled ' ));
147+ }
148+ if ($ request ->has ('service_template_id ' ) || $ request ->has ('template_id ' )) {
149+ $ service ->service_template_id = $ request ->input ('service_template_id ' , $ request ->input ('template_id ' )) ?: null ;
150+ }
151+
152+ if ($ service ->save ()) {
153+ return response ()->json ([
154+ 'status ' => 0 ,
155+ 'message ' => 'Modified Service: <i> ' . e ($ service ->service_id ) . ': ' . e ($ service ->service_type ) . '</i> ' ,
156+ ]);
157+ }
158+
159+ return response ()->json ([
160+ 'status ' => 1 ,
161+ 'message ' => 'ERROR: Failed to modify service: <i> ' . e ($ service ->service_id ) . '</i> ' ,
162+ ]);
163+ }
164+
78165 /**
79166 * Remove the specified service from storage.
80167 *
@@ -90,13 +177,13 @@ public function destroy(Service $service): JsonResponse
90177 if ($ service ->delete ()) {
91178 return response ()->json ([
92179 'status ' => 0 ,
93- 'message ' => " Service: <i> $ id, has been deleted.</i> " ,
180+ 'message ' => ' Service: <i> ' . e ( $ id) . ' , has been deleted.</i> ' ,
94181 ]);
95182 }
96183
97184 return response ()->json ([
98185 'status ' => 1 ,
99- 'message ' => " Service: <i> $ id, has NOT been deleted.</i> " ,
186+ 'message ' => ' Service: <i> ' . e ( $ id) . ' , has NOT been deleted.</i> ' ,
100187 ]);
101188 }
102189}
0 commit comments