Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Mein Unterricht interargierbar machen #84

Closed
kurwjan opened this issue Dec 21, 2023 · 6 comments · Fixed by #110
Closed

Mein Unterricht interargierbar machen #84

kurwjan opened this issue Dec 21, 2023 · 6 comments · Fixed by #110
Assignees
Labels
enhancement New feature or request

Comments

@kurwjan
Copy link
Collaborator

kurwjan commented Dec 21, 2023

Status: In Arbeit

Danke an meinen Mathe-Lehrer

@kurwjan kurwjan added the enhancement New feature or request label Dec 21, 2023
@kurwjan kurwjan self-assigned this Dec 21, 2023
@kurwjan kurwjan changed the title Hausaufgaben hochladen und ansehen Mein Unterricht interagierbar machen Dec 21, 2023
@baum-eule
Copy link

Könnte man auch das "Abhacken" von Hausaufgaben möglich machen?

@kurwjan
Copy link
Collaborator Author

kurwjan commented Dec 22, 2023

Jap

@kurwjan kurwjan changed the title Mein Unterricht interagierbar machen Mein Unterricht Mega-Issue Dec 22, 2023
@kurwjan kurwjan changed the title Mein Unterricht Mega-Issue Mein Unterricht verbessern Dec 22, 2023
@kurwjan kurwjan changed the title Mein Unterricht verbessern Mein Unterricht interargierbar machen Dec 22, 2023
@kurwjan kurwjan removed their assignment Dec 22, 2023
@kurwjan kurwjan added the todo something to do label Dec 28, 2023
@kurwjan kurwjan removed the todo something to do label Jan 11, 2024
@kurwjan kurwjan self-assigned this Jan 11, 2024
@kurwjan
Copy link
Collaborator Author

kurwjan commented Jan 11, 2024

Let's go

Irgendwie stört mich auch diese fette Headerbar bei den Hausaufgaben, villt. könnte man die Checkbox kleiner machen, aber die Hitbox genauso groß machen.

@kurwjan
Copy link
Collaborator Author

kurwjan commented Jan 13, 2024

POST Request um max. 5 Abgaben hochzuladen

URL: https://start.schulportal.hessen.de/meinunterricht.php
content-type: multipart/form-data; boundary=---------------------------106402267510536593361575951866
Sonst die typischen headers und cookies

Mögliche Vorgaben (bei mir)

<div class="col-md-12">
    <h3>Vorgaben</h3>
    <i class="fas fa-hourglass-start fa-fw"></i> Abgabe von
    <span class="editable" data-type="input" data-value="20.12.2023 07:45" data-frage="Ab wann soll die Abgabe möglich sein?" data-field="Von">
        Mittwoch, den 20.12.23, ab 07:45 Uhr
    </span>
    <br />
    <i class="fas fa-hourglass-end fa-fw"></i>
    <b>
        bis
        <span class="editable" data-type="input" data-value="22.01.2024 12:00" data-frage="Bis wann soll die Abgabe möglich sein?" data-field="Bis">
            Montag, den 22.01.24, spätestens 12:00 Uhr
        </span>
    </b>
    <br />
    <i class="fa fa-check-square-o fa-fw"></i> Abgabe mehrerer Dateien <span class="label label-success"> erlaubt</span> <br />
    <i class="fa fa-check-square-o fa-fw"></i> Abgabe beliebig häufig <span class="label label-success"> erlaubt</span> <br />
    <i class="fa fa-eye fa-fw"></i> Abgabe sichtbar für <span class="label label-warning">Lehrkräfte und Lernenden der Kursmappe (und ggf. deren Eltern)</span> <br />
<!-- ODER: --> <i class="fa fa-eye fa-fw"></i> Abgabe sichtbar für <span class="label label-success">Lehrkräfte der Kursmappe</span>
    <i class="fa fa-trash-o fa-fw"></i> Dateien werden automatisch gelöscht am <span class="label label-info">10.02.2024</span> <br />
    <i class="fa fa-file fa-fw"></i> Erlaubte Dateitypen <span class="label label-warning">CSV, DOC, DOCX, JPEG, JPG, ODF, ODP, ODS, ODT, PDF, PNG, PPT, PPTX, RTF, TXT, XLS, XLSX, ZIP</span> <br />
    <i class="fa fa-file fa-fw"></i> maximale Dateigröße <span class="label label-warning">10,00 MB</span>
    <div class="alert alert-info">
        <b><i class="fa fa-comment fa-fw"></i> Zusatztext:</b><br />
        Abgaben auch für Lernende sichtbar <!-- ODER: Abgaben sichtbar nur für Lehrende -->
    </div>
</div>

Request data:

In Form von multipart/form-data

a, b, e, id: Bekommt man aus der Form der Abgabe Seite, oder anscheinend sogar einfach der Overview/Kurs Seite

<!--- ... -->
<form method="post" enctype="multipart/form-data" action="meinunterricht.php">
    <input type="hidden" name="a" value="sus_abgabe">
    <input type="hidden" name="b" value="4081"> <!-- ID des Kurses, kann man auch vom HTML Attribut "data-book" bekommen -->
    <input type="hidden" name="e" value="17"> <!-- ID des Eintrags, kann man auch vom HTML Attribut "data-entry" bekommen-->
    <input type="hidden" name="id" value="1"> <!-- Index von der Abgabe, da ein Eintrag mehrere Abgaben haben könnte -->
    <!-- ... -->
</form>
<!--- ... -->
-----------------------------106402267510536593361575951866
Content-Disposition: form-data; name="a"

sus_abgabe
-----------------------------106402267510536593361575951866
Content-Disposition: form-data; name="b"

4081
-----------------------------106402267510536593361575951866
Content-Disposition: form-data; name="e"

17
-----------------------------106402267510536593361575951866
Content-Disposition: form-data; name="id"

1

file1......: Leere sind "octet-streams" (der generischeste Datentyp), nicht leere sind die jeweiligen MIME types.

-----------------------------106402267510536593361575951866
Content-Disposition: form-data; name="file1"; filename="lorem_ipsum.txt"
Content-Type: text/plain

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla sollicitudin lectus vitae orci dapibus suscipit.
-----------------------------106402267510536593361575951866
Content-Disposition: form-data; name="file2"; filename=""
Content-Type: application/octet-stream

Mögliche Rückmeldungen

<!--- ... -->
<div class="col-md-12"> 
	<h3>Ergebnis des Uploads</h3>
	<ul>
		<li>
			<b>test_image.png.txt.abcdefg</b>
			<span class="label label-danger">fehlgeschlagen</span>
			Datei vom falschen Typ!
		</li>
		<li>
			<b>lorem_ipsummmm.txt</b>
			<span class="label label-success">erfolgreich</span>
		</li>
                <li> 
			<b>lorem_ipsummmm.txt</b>
			<span class="label label-success">erfolgreich</span>
			Datei mit gleichem Namen schon vorhanden. Datei umbenannt in "lorem-ipsummmm (1).txt"
                </li>
		<li> 
			<b>test_data_10-8mb.pdf</b>
			<span class="label label-danger">fehlgeschlagen</span>
			Die Datei ist zu groß für den Upload!
                </li>
	</ul>
 </div>
<!--- ... -->

Implementation

Dio macht eigentlich schon alles automatisch.

Dateien und Attribute ins Multipart Format bringen:
https://pub.dev/documentation/dio/latest/dio/MultipartFile-class.html
https://pub.dev/documentation/dio/latest/dio/FormData-class.html

Und dann einfach mit einem POST Request die FormData posten.

@kurwjan
Copy link
Collaborator Author

kurwjan commented Jan 13, 2024

POST Request um Datei zu löschen

URL: Noch immer https://start.schulportal.hessen.de/meinunterricht.php
Typische headers und cookies

Request data

  • a: sus_abgabe
  • d: delete
  • b: 4081
  • e: 17
  • id: 1
  • f: 1 (Index der Datei, HTML-Attribut ist data-file)
  • pw: U2FsdGVkX19zUGqoLPRzYA6RskI2/lwjg1Tm7i8aJHI=

Schon wieder encryption: pw

Beim Löschen wird nach deinem Passwort gefragt, ist ja gut.
Aber das ist nicht nur ein einfacher Check, sondern das checkt auch richtig server side.

Man müsste sich https://start.schulportal.hessen.de/module/meinunterricht/js/sus_abgabe.js angucken
Besonders: cryptPW, aber woher kommt es?

Ich vermute einfach das es normal encrypted wird, wie alles andere auch.

Bei einem falschen Password wird -1 zurückgegeben und bei einem richtigen 1

@kurwjan
Copy link
Collaborator Author

kurwjan commented Jan 13, 2024

Abgaben anderer sehen

Das ist einfach nur die normale Upload-Page und wenn es vom Lehrer erlaubt wurde und andere Leute was hochgeladen haben, kommt diese HTML:

<!-- ... -->
<div class="col-md-5">
    <a name="andere"></a>
    <h3>Abgaben von anderen <i class="fa fa-child" title="Lernenden"></i></h3>
    <ul>
        <li>
            <a href="meinunterricht.php?a=downloadFile&amp;id=4267&amp;e=9&amp;abg=1&amp;f=1"><i class="far fa-file-pdf"></i> Kowalski.pdf</a> <br />
            <span class="label label-info"><i class="fa-fw fas fa-child"></i> Kowalski</span>
        </li>
        <li>
            <a href="meinunterricht.php?a=downloadFile&amp;id=4267&amp;e=9&amp;abg=1&amp;f=3"><i class="far fa-file-image"></i> Dave.jpg</a> <br />
            <span class="label label-info"><i class="fa-fw fas fa-child"></i> Dave</span>
        </li>
        <li>
            <a href="meinunterricht.php?a=downloadFile&amp;id=4267&amp;e=9&amp;abg=1&amp;f=4"><i class="far fa-file-image"></i> Rico.jpg</a> <br />
            <span class="label label-info"><i class="fa-fw fas fa-child"></i> Rico</span>
        </li>
        <li>
            <a href="meinunterricht.php?a=downloadFile&amp;id=4267&amp;e=9&amp;abg=1&amp;f=5"><i class="far fa-file-image"></i> Skipper.jpg</a> <br />
            <span class="label label-info"><i class="fa-fw fas fa-child"></i> Skipper</span>
        </li>
        <li>
            <a href="meinunterricht.php?a=downloadFile&amp;id=4267&amp;e=9&amp;abg=1&amp;f=6"><i class="far fa-file-image"></i> ObligatorischerMaxMustermann.jpg</a> <br />
            <span class="label label-info"><i class="fa-fw fas fa-child"></i> Obligatorischer Max Mustermann</span>
        </li>
        <!-- ... -->
    </ul>
</div>
<!-- ... -->

@kurwjan kurwjan linked a pull request Jan 14, 2024 that will close this issue
7 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants