Saubere Version ohne binäre und unnötige Dateien

This commit is contained in:
Adam Skotarczak 2025-03-12 22:52:04 +01:00
parent 00321817dc
commit f4ecf5383e
19 changed files with 15 additions and 803 deletions

27
.gitignore vendored
View File

@ -1,19 +1,22 @@
# Build- und Cache-Ordner ignorieren
__pycache__/
upload/
logs/
build/
dist/
.dev/__pycache__/
.dev/upload/
.dev/logs/
.dev/build/
.dev/dist/
/pyUpload.*/
Output/
.dev/Output/
# Virtuelle Umgebung ignorieren (falls vorhanden)
.venv/
.env/
.idea/
.vscode/
*.pem
.dev/.venv/
.dev/.env/
.dev/.idea/
.dev/.vscode/
.dev/*.pem
# PyInstaller-exe-Dateien ignorieren
*.spec
pyUpload.exe
pyUpload.exe
# Sonstiges
Desktop.ini

View File

@ -1,70 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Entwicklertagebuch - </title>
<meta name="description" content="08.03.25 Heute habe ich die mit innoSetup auf einem Rechner installiert auf dem überhaupt kein Python installiert war und dies funktionierte nicht. Klar…">
<meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1">
<style>
body{font-family:Helvetica,sans-serif;margin:0}
header,main,footer{padding:2em}
header{background:darkslategray} header a{color:white;text-decoration:none}
h1{margin-top:0} main{max-width:60em}
</style>
<link rel="canonical" href="/Tagebuch">
<link rel="alternate" href="/feed.xml" type="application/rss+xml" title="RSS">
</head>
<body class="page page__Tagebuch">
<header><a href="/"></a></header>
<main class="content">
<h1>Entwicklertagebuch</h1>
<h2>08.03.25</h2>
<p>Heute habe ich die mit innoSetup auf einem Rechner installiert auf dem überhaupt kein Python installiert war und dies funktionierte nicht. Klar auch, die venv Umgebung setzt eine Python Installation vorraus und arbeitet mit absoluten Pfaden. Der nächste Versuch wird mit einer portablen Python Version durchgeführt. </p>
<ul class="page__list">
<li><a href="&#x2f;build-infos">
## exe erstellen:
### pyinstaller
pip install pyinstaller
pyinstaller --onefile --add-data &quot;template.html;.&quot; --add-data &quot;success.html;.&quot; --add-data &quot;favicon.ico;.&quot; --windowed --icon favicon.ico pyUpload.py
pyinstaller --add-data &quot;template.html;.&quot; --add-data &quot;success.html;.&quot; --add-data &quot;favicon.ico;.&quot; --windowed --icon favicon.ico pyUpload.py
### nuitka
python setup.py build
nuitka --standalone --onefile --enable-plugin=tk-inter --windows-console-mode=disable --windows-icon-from-ico=favicon.ico pyUpload.py
## requirements.txt:
pipreqs . --force</a></li>
<li><a href="&#x2f;info">#pyUpload - Sicherer Datei-Upload-Server für eine einfache und sichere Dateiübertragung</a></li>
<li><a href="&#x2f;dev&#x2f;README">#pyUpload - Sicherer Datei-Upload-Server für eine einfache und sichere Dateiübertragung</a></li>
</ul>
</main>
<footer><p>&copy; </footer>
</body>
</html>

Binary file not shown.

View File

@ -1,86 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>
## exe erstellen:
### pyinstaller
pip install pyinstaller
pyinstaller --onefile --add-data &quot;template.html;.&quot; --add-data &quot;success.html;.&quot; --add-data &quot;favicon.ico;.&quot; --windowed --icon favicon.ico pyUpload.py
pyinstaller --add-data &quot;template.html;.&quot; --add-data &quot;success.html;.&quot; --add-data &quot;favicon.ico;.&quot; --windowed --icon favicon.ico pyUpload.py
### nuitka
python setup.py build
nuitka --standalone --onefile --enable-plugin=tk-inter --windows-console-mode=disable --windows-icon-from-ico=favicon.ico pyUpload.py
## requirements.txt:
pipreqs . --force - </title>
<meta name="description" content="">
<meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1">
<style>
body{font-family:Helvetica,sans-serif;margin:0}
header,main,footer{padding:2em}
header{background:darkslategray} header a{color:white;text-decoration:none}
h1{margin-top:0} main{max-width:60em}
</style>
<link rel="canonical" href="/build-infos">
<link rel="alternate" href="/feed.xml" type="application/rss+xml" title="RSS">
</head>
<body class="page page__build-infos">
<header><a href="/"></a></header>
<main class="content">
<h1>
## exe erstellen:
### pyinstaller
pip install pyinstaller
pyinstaller --onefile --add-data &quot;template.html;.&quot; --add-data &quot;success.html;.&quot; --add-data &quot;favicon.ico;.&quot; --windowed --icon favicon.ico pyUpload.py
pyinstaller --add-data &quot;template.html;.&quot; --add-data &quot;success.html;.&quot; --add-data &quot;favicon.ico;.&quot; --windowed --icon favicon.ico pyUpload.py
### nuitka
python setup.py build
nuitka --standalone --onefile --enable-plugin=tk-inter --windows-console-mode=disable --windows-icon-from-ico=favicon.ico pyUpload.py
## requirements.txt:
pipreqs . --force</h1>
<p></p>
<ul class="page__list">
<li><a href="&#x2f;Tagebuch">Entwicklertagebuch</a></li>
<li><a href="&#x2f;info">#pyUpload - Sicherer Datei-Upload-Server für eine einfache und sichere Dateiübertragung</a></li>
<li><a href="&#x2f;dev&#x2f;README">#pyUpload - Sicherer Datei-Upload-Server für eine einfache und sichere Dateiübertragung</a></li>
</ul>
</main>
<footer><p>&copy; </footer>
</body>
</html>

Binary file not shown.

View File

@ -1,177 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>#pyUpload - Sicherer Datei-Upload-Server für eine einfache und sichere Dateiübertragung - </title>
<meta name="description" content="Beschreibung pyUpload ist eine leistungsstarke und dennoch einfache Lösung für den sicheren Datei-Upload über HTTPS. Dieses Programm eignet sich ideal,…">
<meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1">
<style>
body{font-family:Helvetica,sans-serif;margin:0}
header,main,footer{padding:2em}
header{background:darkslategray} header a{color:white;text-decoration:none}
h1{margin-top:0} main{max-width:60em}
</style>
<link rel="canonical" href="/info">
<link rel="alternate" href="/feed.xml" type="application/rss+xml" title="RSS">
</head>
<body class="page page__info">
<header><a href="/"></a></header>
<main class="content">
<h1>#pyUpload - Sicherer Datei-Upload-Server für eine einfache und sichere Dateiübertragung</h1>
<h3>Beschreibung</h3>
<p>pyUpload ist eine leistungsstarke und dennoch einfache Lösung für den sicheren Datei-Upload über HTTPS. Dieses Programm eignet sich ideal, um Dateien schnell und unkompliziert von einem Smartphone oder einem anderen Gerät auf einen Computer zu übertragen. </p>
<p>Anstatt zusätzliche Apps oder USB-Kabel zu nutzen, kann der Benutzer den Server starten, den automatisch generierten QR-Code mit dem Smartphone scannen und die Dateien direkt über die Weboberfläche hochladen. Der Computer speichert die hochgeladenen Dateien strukturiert in individuellen Verzeichnissen für jedes Gerät.</p>
<p>Zusätzlich erstellt pyUpload bei Bedarf automatisch ein selbstsigniertes SSL-Zertifikat, um eine verschlüsselte Verbindung sicherzustellen. Damit bleibt die Dateiübertragung geschützt und zuverlässig.</p>
<h3>Download</h3>
<ul>
<li><strong>Portabel für Windows als .zip</strong>
[download id="2323"]</li>
</ul>
<blockquote>
<p>Aktuell ist der Download der portablen und Compilierten Version gesperrt da es von diversen Virenscannern als Bedrohung eingestuft wird. Bei Interesse ist das Programm aktuell nur auf Anfrage per eMail erhältlich. In Kürze erfolgt eine Veröffentlichung inklusive Code auf GitHub.</p>
</blockquote>
<h3>Features – Die Vorteile von pyUpload auf einen Blick</h3>
<ul>
<li><strong>Sichere Dateiübertragung per HTTPS</strong> – Alle Daten werden verschlüsselt übertragen.</li>
<li><strong>Automatische Erstellung eines selbstsignierten SSL-Zertifikats</strong> – Keine zusätzliche Konfiguration notwendig.</li>
<li><strong>Intuitive, webbasierte Benutzeroberfläche</strong> – Einfach zu bedienen, keine Installation erforderlich.</li>
<li><strong>Strukturierte Speicherung</strong> – Dateien werden in client-spezifischen Verzeichnissen gespeichert.</li>
<li><strong>Zentralisierte und client-spezifische Logging-Funktion</strong> – Detaillierte Nachverfolgung aller Uploads.</li>
<li><strong>Flexible Nutzung mit oder ohne GUI</strong> – Start als Desktop-Anwendung oder reine Konsolen-Version möglich.</li>
<li><strong>Schnelle Einrichtung</strong> – Download, Entpacken und sofort loslegen!</li>
</ul>
<h3>Installationsanleitung – So startest du pyUpload</h3>
<p>Es gibt zwei Möglichkeiten, pyUpload zu nutzen: Entweder die manuelle Installation oder die Nutzung einer vorgefertigten, ausführbaren Version.</p>
<h4>1. Nutzung der fertigen Download-Version</h4>
<p>Falls du keine Python-Installation benötigst, kannst du die vorgefertigte <strong>ZIP-Version</strong> von pyUpload herunterladen. Diese enthält bereits alle notwendigen Dateien und ist sofort einsatzbereit.</p>
<ol>
<li>Lade die neueste <strong>pyUpload.zip</strong> von der offiziellen Website herunter.</li>
<li>Entpacke die ZIP-Datei in einen beliebigen Ordner.</li>
<li>Starte die enthaltene <code>pyUpload.exe</code>.</li>
<li>Falls die grafische Benutzeroberfläche nicht benötigt wird, kann die <code>pyUpload.exe</code> direkt in der Konsole mit <code>--nogui</code> gestartet werden:
<code>sh
pyUpload.exe --nogui
</code></li>
<li>Eine Übersicht aller verfügbaren Befehle und Optionen erhältst du mit:
<code>sh
pyUpload.exe --help
</code></li>
</ol>
<h4>2. Manuelle Installation für Python-Nutzer</h4>
<ol>
<li>Stelle sicher, dass <strong>Python 3</strong> auf deinem System installiert ist.</li>
<li>Installiere alle benötigten Abhängigkeiten mit folgendem Befehl:
<code>sh
pip install -r requirements.txt
</code></li>
<li>Starte den Server mit:
<code>sh
python pyUpload.py
</code></li>
<li>Falls du keine grafische Benutzeroberfläche benötigst, kannst du den Server im Konsolenmodus starten:
<code>sh
python pyUpload.py --nogui
</code></li>
</ol>
<h3>Zugriff auf die Weboberfläche</h3>
<ul>
<li>Sobald der Server läuft, kann er über die lokale IP-Adresse aufgerufen werden:
<code>
https://&lt;server-ip&gt;:4443
</code></li>
<li>Falls die GUI-Version gestartet wurde, erscheint ein <strong>QR-Code</strong>, der die Verbindungsadresse enthält. Dies ermöglicht eine einfache Verbindung mit Smartphones und Tablets.</li>
</ul>
<h3>Datei-Upload leicht gemacht – So funktioniert es</h3>
<ol>
<li>Ãffne die <strong>Weboberfläche</strong> im Browser.</li>
<li>Wähle die gewünschte <strong>Datei aus</strong> und klicke auf <strong>„Hochladen“</strong>.</li>
<li>Nach erfolgreichem Upload erscheint eine <strong>Bestätigungsseite</strong>, die den Abschluss der Übertragung bestätigt.</li>
</ol>
<h3>SSL-Zertifikatswarnung in Browsern umgehen</h3>
<p>Da pyUpload ein <strong>selbstsigniertes SSL-Zertifikat</strong> nutzt, kann es beim ersten Zugriff zu einer Warnung des Browsers kommen. Um die verschlüsselte Verbindung zu akzeptieren, gibt es zwei Möglichkeiten:</p>
<ul>
<li>In den meisten Browsern gibt es eine Option wie <strong>„Erweitert“</strong> oder <strong>„Trotzdem fortfahren“</strong>, um die Warnung zu übergehen.</li>
<li>Alternativ kann das Zertifikat <strong>manuell importiert und als vertrauenswürdig markiert</strong> werden, um künftige Warnmeldungen zu vermeiden.</li>
</ul>
<h3>Logging und Fehlerbehandlung – Transparenz und Kontrolle</h3>
<ul>
<li>Alle <strong>Uploads und Anfragen</strong> werden in <strong>zentralen sowie client-spezifischen Logdateien</strong> gespeichert. Diese befinden sich im <code>logs/</code>-Verzeichnis.</li>
<li>Falls während der Nutzung von pyUpload <strong>Probleme auftreten</strong>, bietet ein Blick in diese Logdateien wertvolle Hinweise zur Fehlerbehebung.</li>
</ul>
<h3>Lizenz und Autor</h3>
<ul>
<li><strong>Entwickelt von Adam Skotarczak (C) 2025</strong>.</li>
</ul>
<ul class="page__list">
<li><a href="&#x2f;Tagebuch">Entwicklertagebuch</a></li>
<li><a href="&#x2f;build-infos">
## exe erstellen:
### pyinstaller
pip install pyinstaller
pyinstaller --onefile --add-data &quot;template.html;.&quot; --add-data &quot;success.html;.&quot; --add-data &quot;favicon.ico;.&quot; --windowed --icon favicon.ico pyUpload.py
pyinstaller --add-data &quot;template.html;.&quot; --add-data &quot;success.html;.&quot; --add-data &quot;favicon.ico;.&quot; --windowed --icon favicon.ico pyUpload.py
### nuitka
python setup.py build
nuitka --standalone --onefile --enable-plugin=tk-inter --windows-console-mode=disable --windows-icon-from-ico=favicon.ico pyUpload.py
## requirements.txt:
pipreqs . --force</a></li>
<li><a href="&#x2f;dev&#x2f;README">#pyUpload - Sicherer Datei-Upload-Server für eine einfache und sichere Dateiübertragung</a></li>
</ul>
</main>
<footer><p>&copy; </footer>
</body>
</html>

Binary file not shown.

Binary file not shown.

View File

@ -1,6 +0,0 @@
[.ShellClassInfo]
IconResource=C:\Users\adam\Documents\Projekte\pyUpload\assets\favicon.ico,0
[ViewState]
Mode=
Vid=
FolderType=Documents

View File

@ -1,10 +0,0 @@
MIT License
Copyright (c) 2025 Adam Scotarczak (adam@skotarczak.net) - ionivation.com
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

View File

@ -1,93 +0,0 @@
## pyUpload - Sicherer Datei-Upload-Server für eine einfache und sichere Dateiübertragung
### Beschreibung
pyUpload ist eine leistungsstarke und dennoch einfache Lösung für den sicheren Datei-Upload über HTTPS. Es richtet sich an Privatnutzer, die eine schnelle Möglichkeit suchen, Dateien zwischen Geräten zu übertragen, sowie an Unternehmen oder Teams, die eine sichere Lösung für den internen Datenaustausch benötigen. Dieses Programm eignet sich ideal, um Dateien schnell und unkompliziert von einem Smartphone oder einem anderen Gerät auf einen Computer zu übertragen.
Anstatt zusätzliche Apps oder USB-Kabel zu nutzen, kann der Benutzer den Server starten, den automatisch generierten QR-Code mit dem Smartphone scannen und die Dateien direkt über die Weboberfläche hochladen. Der Computer speichert die hochgeladenen Dateien strukturiert in individuellen Verzeichnissen für jedes Gerät.
Zusätzlich erstellt pyUpload bei Bedarf automatisch ein selbstsigniertes SSL-Zertifikat, um eine verschlüsselte Verbindung sicherzustellen. Damit bleibt die Dateiübertragung geschützt und zuverlässig.
### Features Die Vorteile von pyUpload auf einen Blick
- **Sichere Dateiübertragung per HTTPS** Alle Daten werden verschlüsselt übertragen.
- **Automatische Erstellung eines selbstsignierten SSL-Zertifikats** Keine zusätzliche Konfiguration notwendig.
- **Intuitive, webbasierte Benutzeroberfläche** Einfach zu bedienen, keine Installation erforderlich.
- **Strukturierte Speicherung** Dateien werden in client-spezifischen Verzeichnissen gespeichert.
- **Zentralisierte und client-spezifische Logging-Funktion** Detaillierte Nachverfolgung aller Uploads.
- **Flexible Nutzung mit oder ohne GUI** Start als Desktop-Anwendung oder reine Konsolen-Version möglich.
- **Schnelle Einrichtung** Download, Entpacken und sofort loslegen!
### Installationsanleitung So startest du pyUpload
Es gibt drei Möglichkeiten, pyUpload zu nutzen:
- **Manuelle Installation** in einer vorhandenen Python-Umgebung, in der alle notwendigen Bibliotheken manuell installiert werden.
- **Nutzung einer vorgefertigten, ausführbaren .exe (Windows) Version**, die mit pyinstaller kompiliert wurde.
- **Nutzung in einer virtuellen Python-Umgebung**, die automatisch durch `install.bat` eingerichtet wird. Anschließend kann das Programm mit `start.bat` gestartet werden.
#### 1. Manuelle Installation für Python-Nutzer
1. Stelle sicher, dass **Python 3** auf deinem System installiert ist.
2. Installiere alle benötigten Abhängigkeiten mit folgendem Befehl:
```sh
pip install -r requirements.txt
```
3. Starte den Server mit:
```sh
python pyUpload.py
```
4. Falls du keine grafische Benutzeroberfläche benötigst, kannst du den Server im Konsolenmodus starten:
```sh
python pyUpload.py --nogui
```
#### 2. Nutzung der fertigen .exe Download-Version
Falls du keine Python-Installation benötigst, kannst du die vorgefertigte **ZIP-Version** von pyUpload herunterladen. Diese enthält bereits alle notwendigen Dateien und ist sofort einsatzbereit.
1. Lade die neueste **pyUpload.zip** von der offiziellen Website herunter, inklusive virtueller Umgebung.
2. Entpacke die ZIP-Datei in einen beliebigen Ordner.
3. Starte die enthaltene `pyUpload.exe`.
4. Falls die grafische Benutzeroberfläche nicht benötigt wird, kann die `pyUpload.exe` direkt in der Konsole mit `--nogui` gestartet werden:
```sh
pyUpload.exe --nogui
```
5. Eine Übersicht aller verfügbaren Befehle und Optionen erhältst du mit:
```sh
pyUpload.exe --help
```
#### 3. Nutzung in virtueller Python-Umgebung
Lade die ZIP-Datei mit der virtuellen Installationsumgebung herunter und starte die `install.bat` durch Doppelklick. Es öffnet sich ein Konsolenfenster (CLI) und eine virtuelle Umgebung für pyUpload wird erstellt. Anschließend kann das Programm mit der `start.bat` gestartet werden. In der Grundeinstellung wird eine GUI mit QR-Code gestartet.
### Zugriff auf die Weboberfläche
- Sobald der Server läuft, kann er über die lokale IP-Adresse aufgerufen werden:
```
https://<server-ip>:4443
```
- Falls die GUI-Version gestartet wurde, erscheint ein **QR-Code**, der die Verbindungsadresse enthält. Dies ermöglicht eine einfache Verbindung mit Smartphones und Tablets.
### Datei-Upload leicht gemacht So funktioniert es
1. Öffne die **Weboberfläche** im Browser.
2. Wähle die gewünschte **Datei aus** und klicke auf **„Hochladen“**.
3. Nach erfolgreichem Upload erscheint eine **Bestätigungsseite**, die den Abschluss der Übertragung bestätigt.
### SSL-Zertifikatswarnung in Browsern umgehen
Da pyUpload ein **selbstsigniertes SSL-Zertifikat** nutzt, wird es beim ersten Zugriff zu einer Warnung des Browsers kommen. Alternativ kann ein eigenes SSL-Zertifikat hinterlegt werden, indem die Zertifikats- und Schlüsseldateien `cert.pem` und `key.pem` durch eigene, signierte Zertifikate ersetzt werden. Um die verschlüsselte Verbindung zu akzeptieren, gibt es zwei Möglichkeiten:
- In den meisten Browsern gibt es eine Option wie **„Erweitert“** oder **„Trotzdem fortfahren“**, um die Warnung zu übergehen.
- Alternativ kann das Zertifikat **manuell importiert und als vertrauenswürdig markiert** werden, um künftige Warnmeldungen zu vermeiden.
### Logging und Fehlerbehandlung Transparenz und Kontrolle
- Alle **Uploads und Anfragen** werden in **zentralen sowie client-spezifischen Logdateien** gespeichert. Diese befinden sich im `logs/`-Verzeichnis.
- Falls während der Nutzung von pyUpload **Probleme auftreten**, bietet ein Blick in diese Logdateien wertvolle Hinweise zur Fehlerbehebung.
### Lizenz und Autor
- **Entwickelt von Adam Skotarczak (C) 2025**.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 122 KiB

View File

@ -1,54 +0,0 @@
@echo off
setlocal
:: Prüfen, ob Python installiert ist
where python >nul 2>nul
if %ERRORLEVEL% NEQ 0 (
echo Fehler: Python ist nicht installiert oder nicht im PATH!
echo Bitte installiere Python und starte die Installation erneut.
pause
exit /b 1
)
:: Python-Version prüfen (Mindestversion 3.8)
for /f "tokens=2 delims= " %%v in ('python --version 2^>^&1') do set PYTHON_VERSION=%%v
for /f "tokens=1,2 delims=." %%a in ("%PYTHON_VERSION%") do (
if %%a LSS 3 (
echo Fehler: Python 3.8 oder höher ist erforderlich!
pause
exit /b 1
)
if %%a==3 if %%b LSS 8 (
echo Fehler: Python 3.8 oder höher ist erforderlich!
pause
exit /b 1
)
)
:: Virtuelle Umgebung erstellen, falls sie nicht existiert
if not exist venv (
echo Erstelle virtuelle Server-Umgebung ...
python -m venv --copies venv
if %ERRORLEVEL% NEQ 0 (
echo Fehler beim Erstellen der virtuellen Umgebung!
pause
exit /b 2
)
)
:: Aktivieren der virtuellen Umgebung
call venv\Scripts\activate
:: Installieren der Abhängigkeiten
echo Installiere Abhaengigkeiten aus dem Internet ...
pip install --no-warn-script-location --disable-pip-version-check -r requirements.txt
if %ERRORLEVEL% NEQ 0 (
echo Fehler beim Installieren der Abhaengigkeiten!
pause
exit /b 3
)
:: Erfolgsmeldung
echo.
echo Installation abgeschlossen.
timeout /t 3 >nul & exit /b 0

View File

@ -1,16 +0,0 @@
@echo off
setlocal
:: Prüfen, ob die virtuelle Umgebung existiert
if not exist venv (
echo Fehler: Die virtuelle Umgebung existiert nicht!
echo Führe zuerst "install.bat" aus.
pause
exit /b
)
:: Aktivieren der virtuellen Umgebung
call venv\Scripts\activate
:: Starte den Upload-Server
python pyUpload.py

View File

@ -1,118 +0,0 @@
import sys
import os
import threading
import socket
import ssl
import qrcode
import webbrowser
from http.server import HTTPServer, SimpleHTTPRequestHandler
from PySide6.QtWidgets import QApplication, QLabel, QPushButton, QVBoxLayout, QWidget
from PySide6.QtGui import QPixmap
from PySide6.QtCore import Qt
from PIL import ImageQt
# --- HTTPS Server Klasse ---
class SecureHTTPRequestHandler(SimpleHTTPRequestHandler):
def do_GET(self):
if self.path == "/":
self.send_response(200)
self.send_header("Content-type", "text/html")
self.end_headers()
self.wfile.write(b"<html><body><h1>pyUpload Server</h1><p>Upload-Seite</p></body></html>")
else:
self.send_error(404)
def get_local_ip():
"""Ermittelt die lokale IP-Adresse"""
try:
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.connect(("8.8.8.8", 80))
ip = s.getsockname()[0]
s.close()
return ip
except:
return "127.0.0.1"
def run_server(port):
"""Startet den HTTPS-Server in einem eigenen Thread"""
server_address = ("", port)
httpd = HTTPServer(server_address, SecureHTTPRequestHandler)
context = ssl.SSLContext(ssl.PROTOCOL_TLS_SERVER)
context.load_cert_chain(certfile="cert.pem", keyfile="key.pem")
httpd.socket = context.wrap_socket(httpd.socket, server_side=True)
print(f"Server läuft auf https://{get_local_ip()}:{port}")
httpd.serve_forever()
# --- PySide6 GUI ---
class UploadGUI(QWidget):
def __init__(self, server_ip, port):
super().__init__()
self.setWindowTitle("pyUpload - Secure File Upload")
self.setGeometry(100, 100, 400, 500)
# Info Label
label_info = QLabel("HTTPS-Upload-Server läuft!", self)
label_info.setAlignment(Qt.AlignCenter)
label_ip = QLabel(f"IP-Adresse: {server_ip}", self)
label_ip.setAlignment(Qt.AlignCenter)
label_port = QLabel(f"Port: {port}", self)
label_port.setAlignment(Qt.AlignCenter)
label_hint = QLabel("Scanne den QR-Code:", self)
label_hint.setAlignment(Qt.AlignCenter)
# QR-Code generieren
url = f"https://{server_ip}:{port}"
qr = qrcode.make(url)
qr = qr.convert("RGB") # FIX: Konvertiere das Bild in ein gültiges Format für ImageQt
qr_img = ImageQt.ImageQt(qr)
pixmap = QPixmap.fromImage(qr_img)
qr_label = QLabel(self)
qr_label.setPixmap(pixmap)
qr_label.setAlignment(Qt.AlignCenter)
# Link Label (klickbar)
link_label = QLabel(f'<a href="{url}">{url}</a>', self)
link_label.setOpenExternalLinks(True)
link_label.setAlignment(Qt.AlignCenter)
# Beenden Button
btn_quit = QPushButton("Beenden", self)
btn_quit.clicked.connect(self.close)
# Layout setzen
layout = QVBoxLayout()
layout.addWidget(label_info)
layout.addWidget(label_ip)
layout.addWidget(label_port)
layout.addWidget(label_hint)
layout.addWidget(qr_label)
layout.addWidget(link_label)
layout.addWidget(btn_quit)
self.setLayout(layout)
# --- Start der Anwendung ---
if __name__ == "__main__":
port = 4443
server_ip = get_local_ip()
# HTTPS-Server in eigenem Thread starten
server_thread = threading.Thread(target=run_server, args=(port,), daemon=True)
server_thread.start()
# Qt-Anwendung starten
app = QApplication(sys.argv)
window = UploadGUI(server_ip, port)
window.show()
sys.exit(app.exec())

View File

@ -1,3 +0,0 @@
PySide6
qrcode
pillow

View File

@ -1,18 +0,0 @@
@echo off
setlocal
:: Prüfen, ob die virtuelle Umgebung existiert
if not exist venv (
echo Virtuelle Umgebung nicht gefunden! Bitte zuerst install.bat ausführen.
pause
exit /b
)
:: Aktivieren der virtuellen Umgebung
call venv\Scripts\activate
:: Starten des Upload-Servers
python pyUpload.py
:: Nach Beenden der Anwendung
deactivate

View File

@ -1,47 +0,0 @@
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="theme-color" content="#007bff">
<meta name="robots" content="noindex, nofollow">
<title>Upload Erfolgreich</title>
<style>
body {
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
background-color: #f4f4f4;
font-family: Arial, sans-serif;
}
.success-container {
background: white;
padding: 20px;
border-radius: 8px;
box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.1);
text-align: center;
}
a {
display: inline-block;
margin-top: 15px;
padding: 10px 20px;
background-color: #007bff;
color: white;
text-decoration: none;
border-radius: 5px;
}
a:hover {
background-color: #0056b3;
}
</style>
</head>
<body>
<div class="success-container">
<h2>Datei erfolgreich hochgeladen!</h2>
<p>Ihre Datei wurde erfolgreich auf den Server übertragen.</p>
<a href="/">Neue Datei hochladen</a>
</div>
</body>
</html>

View File

@ -1,93 +0,0 @@
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="theme-color" content="#007bff">
<meta name="robots" content="noindex, nofollow">
<title>File Upload</title>
<style>
body {
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
background-color: #f4f4f4;
font-family: Arial, sans-serif;
}
.upload-container {
background: white;
padding: 20px;
border-radius: 8px;
box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.1);
text-align: center;
}
input[type="file"] {
display: none;
}
.custom-file-upload {
display: inline-block;
background-color: #007bff;
color: white;
padding: 10px 20px;
border-radius: 5px;
cursor: pointer;
font-size: 16px;
}
.custom-file-upload:hover {
background-color: #0056b3;
}
#file-name {
display: block;
margin-top: 10px;
font-size: 14px;
color: #555;
}
button {
background-color: #28a745;
color: white;
border: none;
padding: 10px 20px;
cursor: pointer;
border-radius: 5px;
font-size: 16px;
margin-top: 10px;
}
button:disabled {
background-color: #cccccc;
cursor: not-allowed;
}
button:hover:not(:disabled) {
background-color: #218838;
}
</style>
</head>
<body>
<div class="upload-container">
<h2>Datei-Upload</h2>
<form enctype="multipart/form-data" method="post" onsubmit="disableButton()">
<label for="file-upload" class="custom-file-upload">Datei auswählen</label>
<input id="file-upload" type="file" name="file" multiple onchange="updateFileName()">
<span id="file-name">Keine Datei ausgewählt</span>
<button id="upload-button" type="submit">Hochladen</button>
</form>
</div>
<script>
function updateFileName() {
const input = document.getElementById("file-upload");
const fileNameDisplay = document.getElementById("file-name");
if (input.files.length > 0) {
fileNameDisplay.textContent = Array.from(input.files).map(file => file.name).join(", ");
} else {
fileNameDisplay.textContent = "Keine Datei ausgewählt";
}
}
function disableButton() {
document.getElementById("upload-button").disabled = true;
}
</script>
</body>
</html>