Von Version < 1.12 >
bearbeitet von awa
am 12.03.2020, 11:46
Auf Version < 1.17 >
bearbeitet von awa
am 12.03.2020, 12:12
< >
Änderungskommentar: Es gibt keinen Kommentar für diese Version

Zusammenfassung

Details

Seiteneigenschaften
Inhalt
... ... @@ -18,8 +18,42 @@
18 18  
19 19  == Plugin-Konfiguration ==
20 20  
21 -== HTTP-Request-Aufbau ==
21 +Am Plugin selber kann konfiguriert werden, ob das Deploy-Servlet durch ein Passwort geschützt werden soll. Dieses Passwort muss dann im Klartext beim HTTP-POST-Request mit angegeben werden.
22 22  
23 +Zur Konfiguration des Passworts gibt es die eine Plugin-Eigenschaft //token//, diese hat das folgende Format
24 +
25 +{{code language="none"}}
26 +hash_method:hashed_value
27 +{{/code}}
28 +
29 +Folgende Hash-Methoden stehen zur Verfügung:
30 +
31 +; plain
32 +: Identitätsfunktion, das Passwort im Klartext angegeben.
33 +; sha256
34 +: SHA-256-Algorithmus.
35 +; sha384
36 +: SHA-384-Algorithmus.
37 +; sha512
38 +: SHA-512-Algorithmus.
39 +
40 +Um das Passwort im Klartext beispielsweise auf //admin// festzulegen, wird der folgende Wert für die Plugin-Eigenschaft //token// eingegeben:
41 +
42 +{{code language="none"}}
43 +plain:admin
44 +{{/code}}
45 +
46 +Um das Passwort mit SHA-256 beispielsweise auf //admin// festzulegen, wird der folgende Wert für die Plugin-Eigenschaft //token// eingegeben:
47 +
48 +{{code language="none"}}
49 +sha256:S+32GI3fWXwHHulUMtWmjpQ15EqMvgVYguuO9SKxfNw+ckAGQljP6tKlf1EITnU7
50 +{{/code}}
51 +
52 +Der Hash ist gesalzen. Ein gültiger Hash für ein bestimmtes Passwort kann mit dem //create-token//-Servlet erzeugt werden, siehe unten.
53 +
54 +
55 +== Deploy-Servlet ==
56 +
23 23  Im Folgenden wird der Aufbau des HTTP-Requests beschrieben, um ein Plugin zu installieren, zu aktualisieren oder zu löschen.
24 24  
25 25  Es muss immer ein HTTP-Post-Request verwendet werden und [[sich an folgende URL richten>>doc:Formcycle.PluginDevelopment.Types.IPluginServletAction]] (Namen des FORMCYCLE-Servers entsprechend anpassen):
... ... @@ -82,8 +82,8 @@
82 82  
83 83  (((
84 84  {{code language="bash"}}
119 +# Installiert oder aktualisiert das Plugin mit dem Implementation-Title com.example:plugin
85 85   curl -X POST \
86 - # These options are required
87 87   -F deploy-action=save \
88 88   -F token=admin \
89 89   -F plugin-ident=manifest \
... ... @@ -98,8 +98,8 @@
98 98  
99 99  (((
100 100  {{code language="bash"}}
135 +# Löscht das Plugin mit dem Implementation-Title com.example:plugin
101 101   curl -X POST \
102 - # These options are required
103 103   -F deploy-action=delete \
104 104   -F token=admin \
105 105   -F plugin-ident=manifest \
... ... @@ -109,12 +109,12 @@
109 109  )))
110 110  
111 111  ; activate
112 -: Aktiviert das angegebene Plugin. Es darf hierbei keine JAR-Datei übertragen werden. Existiert das angegebene Plugin nicht, wird ein Fehler zurückgegeben. Beispiel:
146 +: Aktiviert das angegebene Plugin. Es darf hierbei keine JAR-Datei übertragen werden. Existiert das angegebene Plugin nicht, wird ein Fehler zurückgegeben. Ist das Plugin bereits aktiviert, wird nicht getan und ein Erfolg zurückgegeben. Beispiel:
113 113  
114 114  (((
115 115  {{code language="bash"}}
150 +# Aktiviert das Plugin mit dem Implementation-Title com.example:plugin
116 116   curl -X POST \
117 - # These options are required
118 118   -F deploy-action=activate \
119 119   -F token=admin \
120 120   -F plugin-ident=manifest \
... ... @@ -124,12 +124,12 @@
124 124  )))
125 125  
126 126  ; deactivate
127 -: Deaktiviert das angegebene Plugin. Es darf hierbei keine JAR-Datei übertragen werden. Existiert das angegebene Plugin nicht, wird ein Fehler zurückgegeben. Beispiel:
161 +: Deaktiviert das angegebene Plugin. Es darf hierbei keine JAR-Datei übertragen werden. Existiert das angegebene Plugin nicht, wird ein Fehler zurückgegeben. Ist das Plugin bereits deaktiviert, wird nicht getan und ein Erfolg zurückgegeben. Beispiel:
128 128  
129 129  (((
130 130  {{code language="bash"}}
165 +# Deaktiviert oder aktualisiert das Plugin mit dem Implementation-Title com.example:plugin
131 131   curl -X POST \
132 - # These options are required
133 133   -F deploy-action=deactivate \
134 134   -F token=admin \
135 135   -F plugin-ident=manifest \
... ... @@ -140,7 +140,6 @@
140 140  
141 141  ; update-properties
142 142  : Aktualisiert die Eigenschaften des angegebenen Plugins. Es darf hierbei keine JAR-Datei übertragen werden. Entweder die Eigenschaft //clear-properties// oder //property// sollte gesetzt sein. Existiert das angegebene Plugin nicht, wird ein Fehler zurückgegeben. Beispiel:
143 -
144 144  (((
145 145  {{code language="bash"}}
146 146  # Löscht alle vorhandenen Plugin-Eigenschaften und setzt dann die Eigenschaft "foo" auf den Wert "bar"
... ... @@ -155,7 +155,7 @@
155 155  {{/code}}
156 156  )))
157 157  
158 -== Response ==
191 +=== Response ===
159 159  
160 160  Das Deploy-Plugin liefert einen Statuscode und ein JSON-Objekt mit den Details zurück. Der Status-Code ist 2xx, falls das Deploy-Plugin erfolgreich ausgeführt wurde.
161 161  
... ... @@ -260,4 +260,85 @@
260 260  }
261 261  {{/code}}
262 262  
296 +Beispiel für die Antwort beim Aktualisieren eines Plugins:
297 +
298 +{{code language="json"}}
299 +{
300 + "success": true,
301 + "requestParameters": {
302 + "plugin-ident": ["manifest"],
303 + "name": ["deploy-plugin"],
304 + "client-id": ["1"],
305 + "deploy-action": ["save"],
306 + "plugin-identifier": ["Implementation-Title=com.example:plugin"],
307 + "token": ["admin"]
308 + },
309 + "details": {
310 + "name": "my-plugin.jar",
311 + "active": true,
312 + "id": 203,
313 + "message": "Plugin saved successfully.",
314 + "uuid": "2fe3e1ba-cb32-434e-9f59-4422f8dabcad"
315 + },
316 + "message": "Plugin saved successfully.",
317 + "statusCode": 200
318 +}
319 +{{/code}}
320 +
321 +Beispiel für die Antwort beim Löschen, falls das angegebene Plugin nicht gefunden wurde:
322 +
323 +{{code language="json"}}
324 +{
325 + "success": false,
326 + "requestParameters": {
327 + "plugin-ident": ["manifest"],
328 + "name": ["deploy-plugin"],
329 + "client-id": ["1"],
330 + "deploy-action": ["delete"],
331 + "plugin-identifier": ["Implementation-Title=com.example:plugin"],
332 + "token": ["admin"]
333 + },
334 + "details": {
335 + "exceptionType": "java.lang.IllegalArgumentException",
336 + "exceptionMessage": "Deploy action 'delete' requires an existing pluign, but none was found."
337 + },
338 + "message": "class java.lang.IllegalArgumentException: Deploy action 'delete' requires an existing pluign, but none was found.",
339 + "statusCode": 404
340 +}
341 +{{/code}}
342 +
343 +
344 +== Create-Token-Servlet ==
345 +
346 +Mit diesem Servlet kann ein Hash für ein bestimmtes Klartextpasswort erzeugt werden, welcher dann in der Plugin-Eigenschaft //token// hinterlegt werden kann. Es muss hierbei ein HTTP-GET-Request verwendet werden (Pfad auf den FORMCYCLE-Servet und die Mandant-ID entsprechend ersetzen):
347 +
348 +{{code language="none"}}
349 +http://localhost:8080/formcycle/plugin?client-id=1&name=create-token&token=<PASSWORT>&method=<METHOD>
350 +{{/code}}
351 +
352 +; token
353 +: Der Klartext des Passwort, zu dem ein Hash ermittelt werden soll.
354 +; method
355 +: Methode zum Berechnen des Hashes. Erlaubte Werte sind //plain//, //sha256//, //sha384// und //sha512//. Optional, Standardwert ist //sha256//.
356 +
357 +Als Antwort wird ein JSON zurückgeliefert, welches das gleiche Format wie die Antwort des Deploy-Plugins hat. Beispiel für eine Antwort:
358 +
359 +{{code language="json"}}
360 +{
361 + "success": true,
362 + "requestParameters": {
363 + "name": ["create-token"],
364 + "client-id": ["1"],
365 + "token": ["admin"]
366 + },
367 + "details": {
368 + "method": "sha256",
369 + "token": "sha256:S+32GI3fWXwHHulUMtWmjpQ15EqMvgVYguuO9SKxfNw+ckAGQljP6tKlf1EITnU7"
370 + },
371 + "message": "Hash token created successfully",
372 + "statusCode": 200
373 +}
374 +{{/code}}
375 +
263 263  == Beispiel für Maven ==
377 +
Copyright 2000-2025