Compare commits

...

5 Commits
v1.2.0 ... main

Author SHA1 Message Date
b3a831ed42
v1.2.2 2025-08-17 12:18:00 +02:00
abeec7bd9c merge testing 2025-05-08 15:48:13 +02:00
475f3cc1ee paypal-link in README.md hinzugefügt 2025-05-08 15:43:17 +02:00
a57e7b8929 Merge branch 'main' of ssh://dns.lan:2222/realAscot/pyUpload 2025-05-07 20:56:40 +02:00
17353b3000 v1.2.1
- Test auf Linux Workstation
  - Siehe CHANGELOG.md
2025-05-07 19:16:10 +02:00
13 changed files with 76 additions and 69 deletions

3
.gitignore vendored
View File

@ -36,3 +36,6 @@ Thumbs.db
# Custom:
*kopie*
gitcopy.bat
# IDE
.vscode/

View File

@ -1,7 +0,0 @@
{
"recommendations": [
"ms-python.python",
"ms-python.vscode-pylance",
"ms-toolsai.jupyter"
]
}

View File

@ -1,30 +0,0 @@
{ // Bitte daran denken das Kommentare eigentlich nicht von json unterstützt werden :-)
// Das funktioniert hier nur in Microsofts jsonc im VS-Code!
"python.linting.enabled": true,
"python.linting.pylintEnabled": true,
"python.linting.mypyEnabled": true,
"python.linting.pylintArgs": ["--disable=C0114,C0115,C0116"],
"editor.formatOnSave": true,
"editor.codeActionsOnSave": {
"source.organizeImports": "explicit"
},
"python.analysis.typeCheckingMode": "basic",
// Abschliessende Leerzeichen entfernen:
"files.trimTrailingWhitespace": true,
"files.insertFinalNewline": true,
// Markdown für das Entfernen von abschliessenden Leerzeichen rausnehmen:
"[markdown]": {
"files.trimTrailingWhitespace": false,
"editor.wordWrap": "off"
},
// Für Pythonfiles Tababstand definieren und Tabs durch Leerzeichen ersetzen
"[python]": {
"editor.tabSize": 4,
"editor.insertSpaces": true
},
}

17
.vscode/tasks.json vendored
View File

@ -1,17 +0,0 @@
{
"version": "2.0.0",
"tasks": [
{
"label": "Linter (pylint)",
"type": "shell",
"command": "pylint beispiel.py",
"group": "build"
},
{
"label": "Typprüfung (mypy)",
"type": "shell",
"command": "mypy beispiel.py",
"group": "build"
}
]
}

View File

@ -2,6 +2,23 @@
## pyUpload (TKInter-Version 1.0)
- **2025-05-07 - v1.2.1**
- **Geändert:**
- [x] Logo angepasst und kleine belanglose Änderungen
- [X] (C) aus LICENSE entfernt
---
- **2025-05-07 - v1.2.1**
- **Geändert:**
- [x] `main.py` übergibt beim Neustart unter Linux jetzt einen **absoluten Pfad**, um Doppelpunkte wie `app/app/main.py` zu vermeiden.
- [x] `start.pyw` berücksichtigt nun `venv`-Interpreter korrekt, wenn vorhanden, sonst fallback auf `sys.executable`.
- [x] Erkennung von fehlendem `ensurepip`, mit Hinweis zur Installation von `python3-venv` bei Bedarf.
- [x] Neue Warnung, wenn `tkinter` fehlt ohne Abbruch, Upload-Server läuft dennoch im CLI-Modus weiter.
- [x] README.md ergänzt um Setup-Hinweise für Linux bzgl. `python3-venv` und `python3-tk`.
---
- **2025-04-28 - v1.2.0**
- **Geändert:**
- [x] `main.py` prüft nun zusätzlich, ob die virtuelle Umgebung auch funktioniert und nicht nur ob sie lediglich vorhanden ist.

View File

@ -1,6 +1,6 @@
MIT License with Attribution Requirement
Copyright (c) 2025 Adam Skotarczak <adam@skotarczak.net>
Adam Skotarczak <adam@skotarczak.net>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the “Software”), to deal

View File

@ -4,11 +4,16 @@
## ⚠️ Projektstatus: Eingefroren Nur noch Bugfixes
Diese Version von **pyUpload** wird **nicht weiterentwickelt** und erhält nur noch Fehlerbehebungen.
Die neue Version mit Flask-Backend wird **bald** verfügbar sein unter:
> Diese Version von **pyUpload** wird **nicht weiterentwickelt** und erhält nur noch Fehlerbehebungen.
> Die neue Version mit Flask-Backend wird **bald** verfügbar sein unter:
🔗 **<https://github.com/realAscot/pyUpload2>**
**DIESE** Version ist aber voll funktionsfähig, sowohl die reine Python-Version wie auch die Windows `.exe`
- (<https://github.com/realAscot/pyUpload/releases/tag/v1.0.0-alpha>)
Dem Programm liegen bootstrap Routinen bei die alle notwendigen Biblioteken nachinstallieren.
---
## 📑 Inhalt der Readme
@ -19,15 +24,16 @@ Die neue Version mit Flask-Backend wird **bald** verfügbar sein unter:
- [pyUpload Sicherer Datei-Upload-Server über HTTPS (lokal \& offline)](#pyupload--sicherer-datei-upload-server-über-https-lokal--offline)
- [🛠 Features](#-features)
- [🚀 Schnellstart](#-schnellstart)
- [▶️ Für Windows:](#-für-windows)
- [🐧 Für Linux / macOS:](#-für-linux--macos)
- [▶️ Für Windows](#-für-windows)
- [🐧 Für Linux / macOS](#-für-linux--macos)
- [🧩 Kommandozeilenoptionen](#-kommandozeilenoptionen)
- [🌐 Zugriff im Browser](#-zugriff-im-browser)
- [📁 Logs \& Uploads](#-logs--uploads)
- [🔐 Hinweis zur SSL-Zertifikatswarnung](#-hinweis-zur-ssl-zertifikatswarnung)
- [💡 Ideen für zukünftige Entwicklungen](#-ideen-für-zukünftige-entwicklungen)
- [🐛 Bekannte Bugs](#-bekannte-bugs)
- [## 👨‍💻 Autor und Beteiligte](#--autor-und-beteiligte)
- [🤖 Autor und Beteiligte](#-autor-und-beteiligte)
- [☕ Support](#-support)
- [📝 Lizenz](#-lizenz)
---
@ -57,7 +63,7 @@ Sie ist vollständig lokal lauffähig ganz ohne Installation von externen To
## 🚀 Schnellstart
### ▶️ Für Windows:
### ▶️ Für Windows
1. Lade das Projekt herunter oder klone es:
@ -94,7 +100,7 @@ Sie ist vollständig lokal lauffähig ganz ohne Installation von externen To
Ich empfehle, eine Verknüpfung der `start.pyw` z.B. auf dem Desktop zu erstellen
### 🐧 Für Linux / macOS:
### 🐧 Für Linux / macOS
1. Stelle sicher, dass Python 3.8+ installiert ist:
@ -102,6 +108,20 @@ Sie ist vollständig lokal lauffähig ganz ohne Installation von externen To
python3 --version
```
Stelle sicher, dass die nötigen Systempakete vorhanden sind:
```bash
sudo apt install python3-venv python3-tk
```
Bei neueren Systemen mit z.B. Python 3.12:
```bash
sudo apt install python3.12-venv python3.12-tk
```
Dies trifft nicht bei allen Systemen zu, bei Ubuntu z.B muss TKinter händisch leider nachinstalliert werden.
2. Mache das Startscript ausführbar:
```bash
@ -189,11 +209,18 @@ Wichtig dabei ist es darauf zu achten, das tatsächlich auch https verwendet wir
Damit dein Browser diese Warnung dauerhaft vermeidet, müssen die Zertifikate zu deiner verwendeten Domain passen.
Da das in lokalen oder testnahen Umgebungen in der Regel nicht der Fall ist, lässt sich diese Warnung meist nicht vermeiden.
>💡 **Wichtig zu wissen:**
> **Wichtig zu wissen:**
Die Verbindung ist trotzdem Ende-zu-Ende verschlüsselt. Die Schlüssel werden bei jedem Start lokal neu generiert direkt auf deinem Rechner.
Technisch ist die Verbindung also sicher.
Dein Browser vertraut dem Zertifikat lediglich nicht, weil es nicht von einer offiziellen Zertifizierungsstelle stammt, sondern lokal erzeugt wurde.
TKinter unter Linux:
> **Hinweis für Linux-Benutzer:**
Falls die GUI nicht erscheint und stattdessen eine Warnung, wie `ModuleNotFoundError: No module named 'tkinter'`, liegt das daran,
dass `tkinter` unter Linux separat installiert werden muss.
Siehe Abschnitt [🐧 Für Linux / macOS](#-für-linux--macos) für Details.
[🔝](#-inhalt-der-readme)
---
@ -215,7 +242,8 @@ Beiträge willkommen!
## 🐛 Bekannte Bugs
- **Frontend:** wenn im Browser der Button Hochladen gewählt wird, OHNE das Dateien ausgewählt wurden,
kommt es zu einem *Error response - Error code: 400* im Browser. Lösungsansatz wäre den Button über JS zu sperren solange keine Datei ausgewählt ist. Lässt sich schnell im [template](./app/template.html) erledigen.
kommt es zu einem *Error response - Error code: 400* im Browser.
Lösungsansatz wäre den Button über JS zu sperren solange keine Datei ausgewählt ist. Lässt sich schnell im [template](./app/template.html) erledigen.
Wenn jemand Lust und Zeit hat sich diesem anzunehmen, nur zu.
Ich danke im Voraus!
@ -224,7 +252,7 @@ Ich danke im Voraus!
---
## 👨‍💻 Autor und Beteiligte
## 🤖 Autor und Beteiligte
- **Adam Skotarczak**
Kontakt: [adam@skotarczak.net](mailto:adam@skotarczak.net)
@ -236,6 +264,13 @@ Ich danke im Voraus!
---
## ☕ Support
Wenn dir dieses Projekt gefällt, kannst du mich hier unterstützen:
☕ [paypal.me/AdamSkotarczak](https://www.paypal.me/AdamSkotarczak)
---
## 📝 Lizenz
MIT [LICENSE](./LICENSE) frei verwendbar in eigenen Projekten bei Namensnennung.

View File

@ -1 +1 @@
1.2.0
1.2.2

View File

@ -2,7 +2,7 @@
# © 2025 Adam Skotarczak (adam@skotarczak.net)
#
# Version 1.0.2 (28.04.2025 - virtuelle Umgebung korrekt aktiviert)
# Version 1.2.1 (07.05.2025 - Linux Test und Anpassungen im Bootstap)
# Manuell in z.B. VS-Code: .\app\.venv\Scripts\activate
#
# Original unter:
@ -38,7 +38,9 @@ if (sys.prefix == sys.base_prefix and sys.executable != VENV_PYTHON) or not os.p
subprocess.Popen([VENV_PYTHON] + sys.argv, creationflags=subprocess.CREATE_NEW_CONSOLE)
sys.exit(0)
else:
os.execv(VENV_PYTHON, [VENV_PYTHON] + sys.argv)
main_script = os.path.join(BASE_DIR, "main.py")
os.execv(VENV_PYTHON, [VENV_PYTHON, main_script] + sys.argv[1:])
sys.exit(0)
# Wir sind jetzt sicher in der richtigen Umgebung → Rest des Programms geht hier weiter:
@ -259,7 +261,11 @@ def run_server_with_gui(port):
import qrcode
import webbrowser
from PIL import Image, ImageTk
import tkinter as tk
try:
import tkinter as tk
except ImportError:
print("⚠ Hinweis: tkinter ist nicht installiert. Für die GUI benötigst du:")
print(" sudo apt install python3-tk")
httpd = create_https_server(port)
server_ip = get_server_ip()

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 MiB

After

Width:  |  Height:  |  Size: 217 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 798 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 217 KiB

0
start.pyw Normal file → Executable file
View File