22 Commits

Author SHA1 Message Date
776cc7a1f0 Merge pull request 'fix file upload for Chrome' (#45) from b119_model_upload_chrome into development
All checks were successful
InnoHub Processor/tatort/pipeline/head This commit looks good
Reviewed-on: #45
2025-12-15 12:19:11 +01:00
eaa75833df fix file upload for Chrome 2025-12-15 12:18:00 +01:00
30d457f562 Merge pull request 'sync dev with main' (#44) from main into development
All checks were successful
InnoHub Processor/tatort/pipeline/head This commit looks good
Reviewed-on: #44
2025-12-15 10:43:14 +01:00
titver968
c1dd9092ea config_prod und dev auf s3 minio 2025-12-10 14:37:03 +01:00
79e0b01796 Merge pull request 'development' (#43) from development into main
Reviewed-on: #43
2025-12-10 10:28:32 +01:00
f008cee404 make share-button secondary style for less emphasis
All checks were successful
InnoHub Processor/tatort/pipeline/head This commit looks good
2025-12-10 08:36:43 +01:00
bb91162438 copy link into clipboard and open mail client
All checks were successful
InnoHub Processor/tatort/pipeline/head This commit looks good
2025-12-09 11:37:47 +01:00
c078266449 change config to new minio setup for prod
All checks were successful
InnoHub Processor/tatort/pipeline/head This commit looks good
2025-12-09 10:26:30 +01:00
922b840c9a fix jenkins pipeline: update packages
All checks were successful
InnoHub Processor/tatort/pipeline/head This commit looks good
2025-12-09 10:18:30 +01:00
68823d6ced change config to new minio setup
Some checks failed
InnoHub Processor/tatort/pipeline/head There was a failure building this commit
2025-12-09 10:01:56 +01:00
9bb4d23a2d Merge pull request 'main' (#42) from main into development
Some checks failed
InnoHub Processor/tatort/pipeline/head There was a failure building this commit
Reviewed-on: #42
2025-12-09 09:34:26 +01:00
titver968
e2cd6945f5 Dockerfile.prod 2025-12-02 14:44:35 +01:00
titver968
ba21f797de src/lib/config.ts -> config.json 2025-12-02 14:36:02 +01:00
titver968
646ff668f7 Dockerfile.prod und tailwind.config.cjs 2025-12-02 14:23:12 +01:00
8b6d35b66f remove old configs 2025-11-25 11:44:32 +01:00
e0d6e3cc62 Merge branch 'development' 2025-11-25 11:43:18 +01:00
titver968
2d9acb402d Merge branch 'main' of ssh://gitea.innovation-hub-niedersachsen.de:4422/innohub/tatort 2025-06-25 12:27:00 +02:00
titver968
a71807c63a Dockerfile end config.json for prod and dev 2025-06-25 12:26:18 +02:00
78bf7c7dbc Jenkinsfile gelöscht 2025-06-25 09:29:34 +02:00
aeccb684b4 Jenkinsfile aktualisiert
All checks were successful
InnoHub Processor/tatort/pipeline/head This commit looks good
rename file
2025-06-25 09:11:37 +02:00
425b1ee8fa Jenkins hinzugefügt 2025-06-24 17:20:25 +02:00
6b1a49583e Merge pull request 'refactor-login-page' (#7) from refactor-login-page into main
Reviewed-on: #7
2025-06-18 13:10:25 +02:00
8 changed files with 59 additions and 38 deletions

View File

@@ -1,7 +1,5 @@
# --- Build stage --- # --- Build stage ---
FROM node:22 AS build FROM node:22 AS build
ENV NODE_ENV=production
ENV ORIGIN=https://tatort.innovation-hub-niedersachsen.de
WORKDIR /app WORKDIR /app
COPY package*.json ./ COPY package*.json ./
RUN npm ci RUN npm ci
@@ -11,7 +9,13 @@ RUN npm run build
# --- Production stage --- # --- Production stage ---
FROM node:22-alpine3.20 FROM node:22-alpine3.20
COPY --from=build /app . WORKDIR /app
ENV NODE_ENV=production
ENV ORIGIN=https://tatort.innovation-hub-niedersachsen.de
COPY --from=build /app/build ./build
COPY --from=build /app/package*.json ./
COPY --from=build /app/config.json ./config.json
RUN npm ci --omit=dev
ENV HOST=0.0.0.0 ENV HOST=0.0.0.0
EXPOSE 3000 EXPOSE 3000
CMD ["sh", "-c", "ORIGIN=https://tatort.innovation-hub-niedersachsen.de node build/index.js"] CMD ["node", "build/index.js"]

View File

@@ -1,10 +1,10 @@
{ {
"minio": { "minio": {
"endPoint": "sws3.innovation-hub-niedersachsen.de", "endPoint": "api-s3.innovation-hub-niedersachsen.de",
"port": 443, "port": 443,
"useSSL": true, "useSSL": true,
"accessKey": "wjpKrmaqXra99rX3D61H", "accessKey": "AbCdEfGhIjKlMnOpQrSt",
"secretKey": "fTPi0u0FR6Lv9Y9IKydWv6WM0EA5XrsK008HCt9u" "secretKey": "UvWxYz1234567890AbCdEfGhIjKlMnOpQrStUvWx"
}, },
"jwt": { "jwt": {
"secret": "@S2!q@@wXz$dCQ8JoVsHLpzaJ6JCfB", "secret": "@S2!q@@wXz$dCQ8JoVsHLpzaJ6JCfB",

View File

@@ -1,10 +1,10 @@
{ {
"minio": { "minio": {
"endPoint": "sws3.innovation-hub-niedersachsen.de", "endPoint": "api-s3.innovation-hub-niedersachsen.de",
"port": 443, "port": 443,
"useSSL": true, "useSSL": true,
"accessKey": "wjpKrmaqXra99rX3D61H", "accessKey": "AbCdEfGhIjKlMnOpQrSt",
"secretKey": "fTPi0u0FR6Lv9Y9IKydWv6WM0EA5XrsK008HCt9u" "secretKey": "UvWxYz1234567890AbCdEfGhIjKlMnOpQrStUvWx"
}, },
"jwt": { "jwt": {
"secret": "@S2!q@@wXz$dCQ8JoVsHLpzaJ6JCfB", "secret": "@S2!q@@wXz$dCQ8JoVsHLpzaJ6JCfB",

View File

@@ -1,10 +1,10 @@
{ {
"minio": { "minio": {
"endPoint": "sws3.innovation-hub-niedersachsen.de", "endPoint": "api-s3.innovation-hub-niedersachsen.de",
"port": 443, "port": 443,
"useSSL": true, "useSSL": true,
"accessKey": "wjpKrmaqXra99rX3D61H", "accessKey": "GxKhfnfkNvlDU7qzsz0D",
"secretKey": "fTPi0u0FR6Lv9Y9IKydWv6WM0EA5XrsK008HCt9u" "secretKey": "cqSM5rIRr4MPtqzu2sNKgmB9k2OghPbyxwAWogeM"
}, },
"jwt": { "jwt": {
"secret": "@S2!q@@wXz$dCQ8JoVsHLpzaJ6JCfB", "secret": "@S2!q@@wXz$dCQ8JoVsHLpzaJ6JCfB",

14
package-lock.json generated
View File

@@ -1461,9 +1461,9 @@
} }
}, },
"node_modules/@sveltejs/kit": { "node_modules/@sveltejs/kit": {
"version": "2.49.0", "version": "2.49.2",
"resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-2.49.0.tgz", "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-2.49.2.tgz",
"integrity": "sha512-oH8tXw7EZnie8FdOWYrF7Yn4IKrqTFHhXvl8YxXxbKwTMcD/5NNCryUSEXRk2ZR4ojnub0P8rNrsVGHXWqIDtA==", "integrity": "sha512-Vp3zX/qlwerQmHMP6x0Ry1oY7eKKRcOWGc2P59srOp4zcqyn+etJyQpELgOi4+ZSUgteX8Y387NuwruLgGXLUQ==",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@standard-schema/spec": "^1.0.0", "@standard-schema/spec": "^1.0.0",
@@ -4534,12 +4534,12 @@
} }
}, },
"node_modules/jws": { "node_modules/jws": {
"version": "3.2.2", "version": "3.2.3",
"resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.3.tgz",
"integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", "integrity": "sha512-byiJ0FLRdLdSVSReO/U4E7RoEyOCKnEnEPMjq3HxWtvzLsV08/i5RQKsFVNkCldrCaPr2vDNAOMsfs8T/Hze7g==",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"jwa": "^1.4.1", "jwa": "^1.4.2",
"safe-buffer": "^5.0.1" "safe-buffer": "^5.0.1"
} }
}, },

View File

@@ -1,3 +1,3 @@
import { readFileSync } from 'fs'; import { readFileSync } from 'fs';
export default JSON.parse(readFileSync('./config_prod.json').toString()); export default JSON.parse(readFileSync('./config.json').toString());

View File

@@ -1,4 +1,5 @@
<script lang="ts"> <script lang="ts">
import { fade } from 'svelte/transition';
import shortenFileSize from '$lib/helper/shortenFileSize'; import shortenFileSize from '$lib/helper/shortenFileSize';
import timeElapsed from '$lib/helper/timeElapsed'; import timeElapsed from '$lib/helper/timeElapsed';
import { deserialize } from '$app/forms'; import { deserialize } from '$app/forms';
@@ -46,6 +47,9 @@
let openUL = $state(false); let openUL = $state(false);
let inProgressUL = $state(form === null); let inProgressUL = $state(form === null);
// Variablen für Copy-Funktion
let copied = $state(false);
async function buttonClick(event: MouseEvent) { async function buttonClick(event: MouseEvent) {
if (!(await validateForm())) { if (!(await validateForm())) {
event.preventDefault(); event.preventDefault();
@@ -128,17 +132,17 @@
// big endian! // big endian!
let file = files[0]; let file = files[0];
let file_header = file.slice(0, 4); const fileHeader = file.slice(0, 4);
console.log(file_header); const buffer = await fileHeader.arrayBuffer();
let header_bytes = await file_header.bytes(); console.log(fileHeader);
let file_header_hex = '0x' + header_bytes.toHex().toString(); let headerBytes = new Uint8Array(buffer);
let fileHeaderHex = '0x' + headerBytes.toHex().toString();
if (GLD_MAGIC == swap_endian(file_header_hex)) { if (GLD_MAGIC == swap_endian(fileHeaderHex)) {
return true; return true;
} else { } else {
return false; return false;
} }
return true;
} }
async function getUrl() { async function getUrl() {
@@ -248,9 +252,8 @@
} }
} }
function constructMailToLink() { async function copyAndOpenMail() {
const subject = 'Link zum Tatvorgang'; const subject = 'Link zum Tatvorgang';
const link = data.url.origin + data.url.pathname; const link = data.url.origin + data.url.pathname;
const body = `Hallo, const body = `Hallo,
@@ -262,9 +265,22 @@ Der Zugangs-PIN wird zur Sicherheit über einen zweiten Kommunikationskanal übe
Mit freundlichen Grüßen, Mit freundlichen Grüßen,
`; `;
const mailtoLink = `mailto:?subject=${encodeURIComponent(subject)}&body=${encodeURIComponent(body)}`; try {
await navigator.clipboard.writeText(body);
return mailtoLink; copied = true;
// Kurz warten, dann Mail öffnen
setTimeout(() => {
const mailtoLink = `mailto:?subject=${encodeURIComponent(subject)}`;
window.location.href = mailtoLink;
}, 1000);
setTimeout(() => copied = false, 2000);
} catch (err) {
console.error('Clipboard-Fehler:', err);
error = 'Konnte Text nicht kopieren. Bitte manuell markieren und kopieren.';
}
} }
function closeModal() { function closeModal() {
@@ -288,9 +304,10 @@ Mit freundlichen Grüßen,
onDelete={null} onDelete={null}
/> />
</div> </div>
<a class="pt-2 pb-6" href={constructMailToLink()} <Button variant="secondary" on:click={copyAndOpenMail} disabled={isEmptyList}>Link kopieren und Mail verfassen</Button>
><Button disabled={isEmptyList}>Share Link</Button></a {#if copied}
> <p transition:fade>✔ Kopiert! Per Ctrl+V einfügen.</p>
{/if}
{/if} {/if}
</div> </div>
<div class="mx-auto flex justify-center max-w-7xl h-full"> <div class="mx-auto flex justify-center max-w-7xl h-full">