release: v0.9.1-beta7
This commit is contained in:
24
anycubic_slicer.crt
Normal file
24
anycubic_slicer.crt
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
-----BEGIN CERTIFICATE-----
|
||||||
|
MIIEDTCCAvWgAwIBAgICAZAwDQYJKoZIhvcNAQEFBQAwgZsxCzAJBgNVBAYTAkNO
|
||||||
|
MRIwEAYDVQQIDAlHdWFuZ2RvbmcxETAPBgNVBAcMCFNoZW56aGVuMREwDwYDVQQK
|
||||||
|
DAhBbnljdWJpYzERMA8GA1UECwwIQW55Y3ViaWMxEzARBgNVBAMMCkFDIFJvb3Qg
|
||||||
|
Q0ExKjAoBgkqhkiG9w0BCQEWG2FueWN1YmljX2Nsb3VkQGFueWN1YmljLmNvbTAg
|
||||||
|
Fw0yMzA3MjAwMzI3NTFaGA8yMTIzMDcyMTAzMjc1MVowgZ8xCzAJBgNVBAYTAkNO
|
||||||
|
MRIwEAYDVQQIDAlHdWFuZ2RvbmcxETAPBgNVBAcMCFNoZW56aGVuMREwDwYDVQQK
|
||||||
|
DAhBbnljdWJpYzERMA8GA1UECwwIQW55Y3ViaWMxFzAVBgNVBAMMDkFueWN1Ymlj
|
||||||
|
U2xpY2VyMSowKAYJKoZIhvcNAQkBFhthbnljdWJpY19jbG91ZEBhbnljdWJpYy5j
|
||||||
|
b20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDdoQ7g2F/yecfpdlqT
|
||||||
|
b8W/84r3vQ4ZEWx2PbSTBcGD55HmzJp2lwABHFHbn4CltT9YzoJWpOiVMHYnyPep
|
||||||
|
43tkNUIcGm7z0jrTD5djyYjVAzEitkNzJspKK/xcVmZe/V7Q3IAWXtzgWCd0YpVk
|
||||||
|
K3J0HqoqJvcTSnYe4VXxbIGwbpeYyji9W/DuG1M4Z+sFiPDWeR9xo5IXRU5ZwaTP
|
||||||
|
8OiCCLSBbeKgf0UFWTIZdJ1JXJ7efbbstZOjf5L9LhBIC0hLdL4jlMpF7r0ThecJ
|
||||||
|
cTx9Bnw/hhy+i32rJTRzZDIaLhKg/bka9ZrORZdxxQRiPoMjLjoxtr4+AUaeLWkI
|
||||||
|
ajSJAgMBAAGjUzBRMB0GA1UdDgQWBBRI4P3/uKdYYFPEcFIwYxdv1p9gETAfBgNV
|
||||||
|
HSMEGDAWgBQlkDqpFERfr3u1rR9gNbNKtgrHIjAPBgNVHRMBAf8EBTADAQH/MA0G
|
||||||
|
CSqGSIb3DQEBBQUAA4IBAQBP3ws80Y9eBR2lpjYP3rVvH8kA6+LnEXT4PpHj+fSw
|
||||||
|
jciaNskzpiwNvBy00m32ACR5YKlMUjevlQuyyw+LQbTUwAEOwyy9SDQpiXdjL6q3
|
||||||
|
SPQ4aB4A57nFXOGrthc/nb9yFcteWrZrKbwvVUu2vqU7U8n7lJKjhVuFRWSXS3SV
|
||||||
|
sPc9JZ21kpPYWKbGtfD6jUlW0Ip+PurLw9FrbVwnEcOMf/ezSlrH5c8mfJyo8pVk
|
||||||
|
aC/6PpReqijusOSRZ5oLyhPvtgddXseJFByun1Ud0CDlFA05nGGPmnVcXD+GMnHH
|
||||||
|
i6baCTeifwp5Jpdzv4imcCPvayKUNuX32vYNfNkWC/R5
|
||||||
|
-----END CERTIFICATE-----
|
||||||
28
anycubic_slicer.key
Normal file
28
anycubic_slicer.key
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
-----BEGIN PRIVATE KEY-----
|
||||||
|
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDdoQ7g2F/yecfp
|
||||||
|
dlqTb8W/84r3vQ4ZEWx2PbSTBcGD55HmzJp2lwABHFHbn4CltT9YzoJWpOiVMHYn
|
||||||
|
yPep43tkNUIcGm7z0jrTD5djyYjVAzEitkNzJspKK/xcVmZe/V7Q3IAWXtzgWCd0
|
||||||
|
YpVkK3J0HqoqJvcTSnYe4VXxbIGwbpeYyji9W/DuG1M4Z+sFiPDWeR9xo5IXRU5Z
|
||||||
|
waTP8OiCCLSBbeKgf0UFWTIZdJ1JXJ7efbbstZOjf5L9LhBIC0hLdL4jlMpF7r0T
|
||||||
|
hecJcTx9Bnw/hhy+i32rJTRzZDIaLhKg/bka9ZrORZdxxQRiPoMjLjoxtr4+AUae
|
||||||
|
LWkIajSJAgMBAAECggEASwRkC9lRiLqN30kvWW5g6hsec8KrTfLm2pMCVy2AlgxB
|
||||||
|
B3VD51YvKzERyBwSKITT/1RPK9K/4xe3NrpAkmGsd3vLd8W+vorvXFePr7gct7VP
|
||||||
|
4Wb+J7D+keKXlg2sswRiHqI0PN45Nzq/iBaCaJiIMiPbB0+PHBl9J/Cv7XsD3tq+
|
||||||
|
9WKhvXf2g1g9GMrLaCCcWXWCqcu0LlbqJnw3yMnJLSltmyFTmlVLjDHM75bMVz97
|
||||||
|
4emQzOlnRN2yA5cWWCaM+mgjNM2aWwUsXBZzCgwSqSaj1QD4B/epCuDBORWHS9D6
|
||||||
|
jL15w8xjly9q8OS+4d6beR5h9GiPyMK4Ff2wXImCXQKBgQDwXxtrL+kVZrQ/qftj
|
||||||
|
24F3+QDN0j5Z3lUMTfZPn6ng/E/aBfn8KcWJHj2vYkKZdB5wOXJr56BYe3Hukzfp
|
||||||
|
QF0E2+g1WAGskF1mb/vVab54geox5Y6CA+ionRn2kcCwybVkktR/0JK2UV9Qjb/z
|
||||||
|
k1WU+RUhNrW/GDBqYulaadnR+wKBgQDsCf2/yKGPxj4pIvAtn5RFSlfscddgkSnc
|
||||||
|
ouBkDXEp5ta+5PGrlrdzS/F0vFhvBPbfbVJxVwRnM/Oqj8c0/bj7oc5RpPxirciO
|
||||||
|
AaovKVPTiORaviytnB2HgkflkJfy5vdXv4ZQahAV/UwtSmLwBshe+Ya68MAFrQRa
|
||||||
|
7M4z6k4QSwKBgQCm7OVVoofzXMeADsONrTpT3pA4XvD95/CYAuwyj2ah35Z0igH4
|
||||||
|
o+mSN3YO/eXSO1mIBdz4Inqv98o/K+2ABjqSzUSNBvjipb63DL2Oj0i+1zmUPR6i
|
||||||
|
G6TOs4r8OGvgWbOmjHEV8fpwskHG5ymONZsRQYjy79N3SY0V1GrJZwjlUQKBgD0x
|
||||||
|
AeWcP7YkMK09b4KEYk3sTgrwIGPafj3Cw+VsTrAMNhPbCoPvWLO9NmWLBmoRoWae
|
||||||
|
0sarRmry3vKSv5QPSsuBURl9aiiy4NFfwRzk2+R1Eq4rqy1+0XD152muKJZCJlFL
|
||||||
|
R6jFNlJdDkiXhjqvp3ZnvfPswfs2tXBU/8gZsA8tAoGBALXfc5m9I5R1l1zN7tpa
|
||||||
|
ncA0S3EKzqmuCc3KzlS6OS0e9Lz1MsmfEsvxvW3w4SrdfTbwQpEy9RNg89dlgPtc
|
||||||
|
rdId1QdN2eWPY5M4lz9n9EYdzi9ufoKAEYu2a0lP+qz690JwmL1Jx49bvQEn5Nu0
|
||||||
|
4swn72uwBRlhjAw46MF77SBQ
|
||||||
|
-----END PRIVATE KEY-----
|
||||||
@@ -3,12 +3,14 @@ env_loader.py – lädt Verbindungsparameter aus .env (Repo-Root oder Arbeitsver
|
|||||||
Umgebungsvariablen haben Vorrang vor .env-Werten.
|
Umgebungsvariablen haben Vorrang vor .env-Werten.
|
||||||
"""
|
"""
|
||||||
import os
|
import os
|
||||||
|
import sys
|
||||||
import pathlib
|
import pathlib
|
||||||
|
|
||||||
|
_BASE = pathlib.Path(sys.executable).parent if getattr(sys, "frozen", False) else pathlib.Path(__file__).parent
|
||||||
|
|
||||||
|
|
||||||
def _find_env_file() -> pathlib.Path | None:
|
def _find_env_file() -> pathlib.Path | None:
|
||||||
# Suche .env im selben Verzeichnis, dann im Parent (Repo-Root)
|
for base in (_BASE, _BASE.parent):
|
||||||
for base in (pathlib.Path(__file__).parent, pathlib.Path(__file__).parent.parent):
|
|
||||||
p = base / ".env"
|
p = base / ".env"
|
||||||
if p.is_file():
|
if p.is_file():
|
||||||
return p
|
return p
|
||||||
|
|||||||
@@ -20,6 +20,7 @@ import json
|
|||||||
import os
|
import os
|
||||||
import socket
|
import socket
|
||||||
import ssl
|
import ssl
|
||||||
|
import sys
|
||||||
import threading
|
import threading
|
||||||
import time
|
import time
|
||||||
import uuid
|
import uuid
|
||||||
@@ -27,7 +28,7 @@ from datetime import datetime
|
|||||||
|
|
||||||
import env_loader
|
import env_loader
|
||||||
|
|
||||||
_SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__))
|
_SCRIPT_DIR = os.path.dirname(sys.executable) if getattr(sys, "frozen", False) else os.path.dirname(os.path.abspath(__file__))
|
||||||
CERT_FILE = os.path.join(_SCRIPT_DIR, "anycubic_slicer.crt")
|
CERT_FILE = os.path.join(_SCRIPT_DIR, "anycubic_slicer.crt")
|
||||||
KEY_FILE = os.path.join(_SCRIPT_DIR, "anycubic_slicer.key")
|
KEY_FILE = os.path.join(_SCRIPT_DIR, "anycubic_slicer.key")
|
||||||
|
|
||||||
|
|||||||
@@ -24,8 +24,9 @@ import tempfile
|
|||||||
import time
|
import time
|
||||||
import threading
|
import threading
|
||||||
|
|
||||||
# kobrax_client aus dem selben Verzeichnis importieren
|
# Bei PyInstaller-Binary liegt alles neben sys.executable, sonst neben __file__
|
||||||
sys.path.insert(0, os.path.dirname(__file__))
|
_BASE = os.path.dirname(sys.executable) if getattr(sys, "frozen", False) else os.path.dirname(os.path.abspath(__file__))
|
||||||
|
sys.path.insert(0, _BASE)
|
||||||
from kobrax_client import KobraXClient
|
from kobrax_client import KobraXClient
|
||||||
|
|
||||||
try:
|
try:
|
||||||
@@ -1960,7 +1961,7 @@ function toggleCam(){if(camOn)camStop();else camStart()}
|
|||||||
|
|
||||||
def _find_env_path(self) -> pathlib.Path:
|
def _find_env_path(self) -> pathlib.Path:
|
||||||
"""Gibt den Pfad zur .env-Datei zurück (neben Script oder im Parent)."""
|
"""Gibt den Pfad zur .env-Datei zurück (neben Script oder im Parent)."""
|
||||||
script_dir = pathlib.Path(__file__).parent
|
script_dir = pathlib.Path(_BASE)
|
||||||
for base in (script_dir, script_dir.parent):
|
for base in (script_dir, script_dir.parent):
|
||||||
p = base / ".env"
|
p = base / ".env"
|
||||||
if p.is_file():
|
if p.is_file():
|
||||||
@@ -2031,20 +2032,19 @@ function toggleCam(){if(camOn)camStop();else camStart()}
|
|||||||
GITEA_RAW_BASE = "https://gitea.it-drui.de/viewit/KX-Bridge-Release/raw/tag"
|
GITEA_RAW_BASE = "https://gitea.it-drui.de/viewit/KX-Bridge-Release/raw/tag"
|
||||||
|
|
||||||
def _read_version(self) -> str:
|
def _read_version(self) -> str:
|
||||||
for base in (pathlib.Path(__file__).parent, pathlib.Path(__file__).parent.parent):
|
for base in (pathlib.Path(_BASE), pathlib.Path(_BASE).parent):
|
||||||
p = base / "VERSION"
|
p = base / "VERSION"
|
||||||
if p.is_file():
|
if p.is_file():
|
||||||
return p.read_text(encoding="utf-8").strip()
|
return p.read_text(encoding="utf-8").strip()
|
||||||
return "unknown"
|
return "unknown"
|
||||||
|
|
||||||
def _write_version(self, version: str):
|
def _write_version(self, version: str):
|
||||||
for base in (pathlib.Path(__file__).parent, pathlib.Path(__file__).parent.parent):
|
for base in (pathlib.Path(_BASE), pathlib.Path(_BASE).parent):
|
||||||
p = base / "VERSION"
|
p = base / "VERSION"
|
||||||
if p.is_file():
|
if p.is_file():
|
||||||
p.write_text(version + "\n", encoding="utf-8")
|
p.write_text(version + "\n", encoding="utf-8")
|
||||||
return
|
return
|
||||||
# Fallback: neben dem Script
|
(pathlib.Path(_BASE) / "VERSION").write_text(version + "\n", encoding="utf-8")
|
||||||
(pathlib.Path(__file__).parent.parent / "VERSION").write_text(version + "\n", encoding="utf-8")
|
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def _parse_version(v: str) -> "tuple[int, ...]":
|
def _parse_version(v: str) -> "tuple[int, ...]":
|
||||||
@@ -2090,7 +2090,7 @@ function toggleCam(){if(camOn)camStop();else camStart()}
|
|||||||
new_tag = data.get("tag", "")
|
new_tag = data.get("tag", "")
|
||||||
if not download_url:
|
if not download_url:
|
||||||
return web.json_response({"error": "download_url fehlt"}, status=400)
|
return web.json_response({"error": "download_url fehlt"}, status=400)
|
||||||
script_path = pathlib.Path(__file__).resolve()
|
script_path = pathlib.Path(sys.executable if getattr(sys, "frozen", False) else __file__).resolve()
|
||||||
try:
|
try:
|
||||||
async with aiohttp.ClientSession() as session:
|
async with aiohttp.ClientSession() as session:
|
||||||
async with session.get(download_url, timeout=aiohttp.ClientTimeout(total=30)) as resp:
|
async with session.get(download_url, timeout=aiohttp.ClientTimeout(total=30)) as resp:
|
||||||
|
|||||||
Reference in New Issue
Block a user