simra-project / simra-ios

Apache License 2.0
4 stars 6 forks source link

Upload initial und aktualisieren #2

Closed ckrey closed 5 years ago

ckrey commented 5 years ago

Initialer Upload: https://vm1.mcc.tu-berlin.de:8082/9/upload?fileName=2&loc=de&clientHash=eaa555f0

Wenn die Datei einmal hochgeladen ist, ist das Key-Value-Paar (Key = „VM2_“ + Hashwert des Inhalts der Datei, Value = zufällig generiertes Passwort) in einer Hashmap gespeichert. Bei jedem POST wird überprüft, ob die Datei schon vorhanden ist. Falls ja, 404.

Aktualisieren: Um deine Datei mit K,V = VM2_614974187,v9TF7JOBot zu aktualisieren brauchst du folgenden Request:

https://vm1.mcc.tu-berlin.de:8082/9/update?fileHash=VM2_614974187&filePassword=v9TF7JOBot&loc=Berlin&clientHash=af37380f

ckrey commented 5 years ago

Leider kann ich das aber in iOS nicht implementieren:

Beim initialen upload antwortet der Server mit HTTP/1.1 200 xxxxxxxx yyyyyyy wobei xxxxx wohl der Hash der Date und yyyyy das Passwort ist.

Leider kommen diese beiden Felder in iOS nicht an, da die HTTP library die „reason-phrase“ richtigerweise ignoriert (s.u. Auszug aus RFC 7230). Besser wäre es wenn Hash und Password im Body oder als ein Header übertragen würden.


3.1.2.  Status Line

   The first line of a response message is the status-line, consisting
   of the protocol version, a space (SP), the status code, another
   space, a possibly empty textual phrase describing the status code,
   and ending with CRLF.

     status-line = HTTP-version SP status-code SP reason-phrase CRLF

   The status-code element is a 3-digit integer code describing the
   result of the server's attempt to understand and satisfy the client's
   corresponding request.  The rest of the response message is to be
   interpreted in light of the semantics defined for that status code.
   See Section 6 of [RFC7231] for information about the semantics of
   status codes, including the classes of status code (indicated by the
   first digit), the status codes defined by this specification,
   considerations for the definition of new status codes, and the IANA
   registry.

     status-code    = 3DIGIT

   The reason-phrase element exists for the sole purpose of providing a
   textual description associated with the numeric status code, mostly
   out of deference to earlier Internet application protocols that were
   more frequently used with interactive text clients.  A client SHOULD
   ignore the reason-phrase content.

     reason-phrase  = *( HTAB / SP / VCHAR / obs-text )
ckrey commented 5 years ago

ich [Ahmet] habe jetzt die Änderungen am Backend vorgenommen, sodass du fileHash und filePassword im Header findest. Des Weiteren habe ich den Suffix bei der Erstellung des client hashes geändert. Er lautet nun nicht mehr simra_mcc, sondern KsSFazUyht3yQfKv

Folgende Requests sollten funktionieren: POST: https://vm1.mcc.tu-berlin.de:8082/10/upload?fileName=2&loc=de&clientHash=ddcb03f0 PUT: https://vm1.mcc.tu-berlin.de:8082/10/update?fileHash=VM2_983038515&filePassword=bdCPO02fjZ&loc=de&clientHash=ddcb03f0

wobei fileHash und filePassword im Header der Antwort des POST-Requests drinstehen (mit einem Komma getrennt).

ckrey commented 5 years ago

@selphiron ah, fileHash und filePassword kommen nicht im als header, sondern in den Daten:

> POST /10/upload?fileName=2&loc=de&clientHash=ddcb03f0 HTTP/1.1
> Host: vm1.mcc.tu-berlin.de:8082
> User-Agent: curl/7.54.0
> Accept: */*
> content-type: text/plain
> Content-Length: 28659
> Expect: 100-continue
>
< HTTP/1.1 100 Continue
* We are completely uploaded and fine
< HTTP/1.1 200 OK
< Date: Thu, 04 Apr 2019 11:14:24 GMT
< Content-Type: text/plain
< Content-Length: 25
< Server: Jetty(9.4.z-SNAPSHOT)
<
<
* Connection #0 to host vm1.mcc.tu-berlin.de left intact
VM2_1566788357,AjE2lGDObW