This commit is contained in:
Benjamin Toby 2026-03-14 09:03:01 +01:00
parent c5bbe1361a
commit a7bef6de2a
36 changed files with 77 additions and 59 deletions

2
dist/web/BUILD_ID vendored
View File

@ -1 +1 @@
hp8Dmk2dba-pzMh79OIf7
B8h757HZtfNZGW9LO45Ns

View File

@ -5,8 +5,8 @@
"devFiles": [],
"ampDevFiles": [],
"lowPriorityFiles": [
"static/hp8Dmk2dba-pzMh79OIf7/_buildManifest.js",
"static/hp8Dmk2dba-pzMh79OIf7/_ssgManifest.js"
"static/B8h757HZtfNZGW9LO45Ns/_buildManifest.js",
"static/B8h757HZtfNZGW9LO45Ns/_ssgManifest.js"
],
"rootMainFiles": [],
"pages": {
@ -15,13 +15,13 @@
"static/chunks/framework-bfa817c72d812316.js",
"static/chunks/main-761b7faf59ba862f.js",
"static/chunks/29107295-2819ba6e51dbf961.js",
"static/chunks/e5d67320-ccbab4288ca637ad.js",
"static/chunks/e5d67320-bf1772fa71739690.js",
"static/chunks/664-e347d64e56042a02.js",
"static/chunks/433-ace0b205fb566ad3.js",
"static/chunks/433-bb8bdacebff9ab53.js",
"static/chunks/225-f257bb5bd6014d68.js",
"static/chunks/7-f0121001f735b8fe.js",
"static/chunks/827-7975edcf8481ec69.js",
"static/chunks/pages/index-5ce092dbf4b7ea2c.js"
"static/chunks/pages/index-13e31ea96205b999.js"
],
"/404": [
"static/chunks/webpack-38cee4c0e358b1a3.js",
@ -49,9 +49,9 @@
"static/chunks/framework-bfa817c72d812316.js",
"static/chunks/main-761b7faf59ba862f.js",
"static/chunks/29107295-2819ba6e51dbf961.js",
"static/chunks/e5d67320-ccbab4288ca637ad.js",
"static/chunks/e5d67320-bf1772fa71739690.js",
"static/chunks/664-e347d64e56042a02.js",
"static/chunks/433-ace0b205fb566ad3.js",
"static/chunks/433-bb8bdacebff9ab53.js",
"static/chunks/7-f0121001f735b8fe.js",
"static/chunks/827-7975edcf8481ec69.js",
"static/chunks/910-7de3855073c34589.js",
@ -63,9 +63,9 @@
"static/chunks/framework-bfa817c72d812316.js",
"static/chunks/main-761b7faf59ba862f.js",
"static/chunks/29107295-2819ba6e51dbf961.js",
"static/chunks/e5d67320-ccbab4288ca637ad.js",
"static/chunks/e5d67320-bf1772fa71739690.js",
"static/chunks/664-e347d64e56042a02.js",
"static/chunks/433-ace0b205fb566ad3.js",
"static/chunks/433-bb8bdacebff9ab53.js",
"static/chunks/7-f0121001f735b8fe.js",
"static/chunks/827-7975edcf8481ec69.js",
"static/chunks/910-7de3855073c34589.js",
@ -77,9 +77,9 @@
"static/chunks/framework-bfa817c72d812316.js",
"static/chunks/main-761b7faf59ba862f.js",
"static/chunks/29107295-2819ba6e51dbf961.js",
"static/chunks/e5d67320-ccbab4288ca637ad.js",
"static/chunks/e5d67320-bf1772fa71739690.js",
"static/chunks/664-e347d64e56042a02.js",
"static/chunks/433-ace0b205fb566ad3.js",
"static/chunks/433-bb8bdacebff9ab53.js",
"static/chunks/7-f0121001f735b8fe.js",
"static/chunks/827-7975edcf8481ec69.js",
"static/chunks/910-7de3855073c34589.js",
@ -91,9 +91,9 @@
"static/chunks/framework-bfa817c72d812316.js",
"static/chunks/main-761b7faf59ba862f.js",
"static/chunks/29107295-2819ba6e51dbf961.js",
"static/chunks/e5d67320-ccbab4288ca637ad.js",
"static/chunks/e5d67320-bf1772fa71739690.js",
"static/chunks/664-e347d64e56042a02.js",
"static/chunks/433-ace0b205fb566ad3.js",
"static/chunks/433-bb8bdacebff9ab53.js",
"static/chunks/7-f0121001f735b8fe.js",
"static/chunks/827-7975edcf8481ec69.js",
"static/chunks/910-7de3855073c34589.js",
@ -104,21 +104,21 @@
"static/chunks/framework-bfa817c72d812316.js",
"static/chunks/main-761b7faf59ba862f.js",
"static/chunks/29107295-2819ba6e51dbf961.js",
"static/chunks/e5d67320-ccbab4288ca637ad.js",
"static/chunks/e5d67320-bf1772fa71739690.js",
"static/chunks/664-e347d64e56042a02.js",
"static/chunks/433-ace0b205fb566ad3.js",
"static/chunks/433-bb8bdacebff9ab53.js",
"static/chunks/7-f0121001f735b8fe.js",
"static/chunks/910-7de3855073c34589.js",
"static/chunks/pages/admin/shell-c4ef7e6bc7ca42e9.js"
"static/chunks/pages/admin/shell-ba3a42e18b796e90.js"
],
"/admin/users": [
"static/chunks/webpack-38cee4c0e358b1a3.js",
"static/chunks/framework-bfa817c72d812316.js",
"static/chunks/main-761b7faf59ba862f.js",
"static/chunks/29107295-2819ba6e51dbf961.js",
"static/chunks/e5d67320-ccbab4288ca637ad.js",
"static/chunks/e5d67320-bf1772fa71739690.js",
"static/chunks/664-e347d64e56042a02.js",
"static/chunks/433-ace0b205fb566ad3.js",
"static/chunks/433-bb8bdacebff9ab53.js",
"static/chunks/7-f0121001f735b8fe.js",
"static/chunks/910-7de3855073c34589.js",
"static/chunks/pages/admin/users-73e9775838b56d95.js"
@ -128,11 +128,11 @@
"static/chunks/framework-bfa817c72d812316.js",
"static/chunks/main-761b7faf59ba862f.js",
"static/chunks/29107295-2819ba6e51dbf961.js",
"static/chunks/e5d67320-ccbab4288ca637ad.js",
"static/chunks/e5d67320-bf1772fa71739690.js",
"static/chunks/ff39441c-88f593a46cb65964.js",
"static/chunks/d848df63-a470d32e7be4bfe3.js",
"static/chunks/664-e347d64e56042a02.js",
"static/chunks/433-ace0b205fb566ad3.js",
"static/chunks/433-bb8bdacebff9ab53.js",
"static/chunks/281-dcee0c6401936d5e.js",
"static/chunks/7-f0121001f735b8fe.js",
"static/chunks/827-7975edcf8481ec69.js",
@ -144,9 +144,9 @@
"static/chunks/framework-bfa817c72d812316.js",
"static/chunks/main-761b7faf59ba862f.js",
"static/chunks/29107295-2819ba6e51dbf961.js",
"static/chunks/e5d67320-ccbab4288ca637ad.js",
"static/chunks/e5d67320-bf1772fa71739690.js",
"static/chunks/664-e347d64e56042a02.js",
"static/chunks/433-ace0b205fb566ad3.js",
"static/chunks/433-bb8bdacebff9ab53.js",
"static/chunks/7-f0121001f735b8fe.js",
"static/chunks/827-7975edcf8481ec69.js",
"static/chunks/910-7de3855073c34589.js",
@ -157,9 +157,9 @@
"static/chunks/framework-bfa817c72d812316.js",
"static/chunks/main-761b7faf59ba862f.js",
"static/chunks/29107295-2819ba6e51dbf961.js",
"static/chunks/e5d67320-ccbab4288ca637ad.js",
"static/chunks/e5d67320-bf1772fa71739690.js",
"static/chunks/664-e347d64e56042a02.js",
"static/chunks/433-ace0b205fb566ad3.js",
"static/chunks/433-bb8bdacebff9ab53.js",
"static/chunks/225-f257bb5bd6014d68.js",
"static/chunks/7-f0121001f735b8fe.js",
"static/chunks/827-7975edcf8481ec69.js",
@ -178,9 +178,9 @@
"static/chunks/framework-bfa817c72d812316.js",
"static/chunks/main-761b7faf59ba862f.js",
"static/chunks/29107295-2819ba6e51dbf961.js",
"static/chunks/e5d67320-ccbab4288ca637ad.js",
"static/chunks/e5d67320-bf1772fa71739690.js",
"static/chunks/664-e347d64e56042a02.js",
"static/chunks/433-ace0b205fb566ad3.js",
"static/chunks/433-bb8bdacebff9ab53.js",
"static/chunks/7-f0121001f735b8fe.js",
"static/chunks/827-7975edcf8481ec69.js",
"static/chunks/pages/auth/signup-5c0f6835749e755e.js"

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because one or more lines are too long

View File

@ -1 +1 @@
{"version":4,"routes":{},"dynamicRoutes":{},"preview":{"previewModeId":"c4721f018fc5fea1b5afce9998704450","previewModeSigningKey":"8d66936831b01d04f26054b37825829be522efd00da72ffe585055cbcaf33ad3","previewModeEncryptionKey":"27ebfd2d91e169ca30163d491e4ef024a413647900c7dfc786915953ded846e3"},"notFoundRoutes":[]}
{"version":4,"routes":{},"dynamicRoutes":{},"preview":{"previewModeId":"4b8b0b53393c966d0a6979313f7157f1","previewModeSigningKey":"a1563620443734cbb802cf388791f47da7b0ba238d51927f1163dc44c88b77e9","previewModeEncryptionKey":"bbdb0a985648484af873a8e4a4f45e83a74d191bf0e2b8f1d4f05e593b45a8ed"},"notFoundRoutes":[]}

View File

@ -1 +1 @@
{"version":3,"pages404":true,"caseSensitive":false,"basePath":"","redirects":[{"source":"/:path+/","destination":"/:path+","internal":true,"statusCode":308,"regex":"^(?:/((?:[^/]+?)(?:/(?:[^/]+?))*))/$"}],"headers":[],"dynamicRoutes":[{"page":"/admin/services/[service_name]","regex":"^/admin/services/([^/]+?)(?:/)?$","routeKeys":{"nxtPservice_name":"nxtPservice_name"},"namedRegex":"^/admin/services/(?<nxtPservice_name>[^/]+?)(?:/)?$"},{"page":"/admin/users/[deployment_user_id]","regex":"^/admin/users/([^/]+?)(?:/)?$","routeKeys":{"nxtPdeployment_user_id":"nxtPdeployment_user_id"},"namedRegex":"^/admin/users/(?<nxtPdeployment_user_id>[^/]+?)(?:/)?$"}],"staticRoutes":[{"page":"/","regex":"^/(?:/)?$","routeKeys":{},"namedRegex":"^/(?:/)?$"},{"page":"/404","regex":"^/404(?:/)?$","routeKeys":{},"namedRegex":"^/404(?:/)?$"},{"page":"/admin","regex":"^/admin(?:/)?$","routeKeys":{},"namedRegex":"^/admin(?:/)?$"},{"page":"/admin/services","regex":"^/admin/services(?:/)?$","routeKeys":{},"namedRegex":"^/admin/services(?:/)?$"},{"page":"/admin/settings","regex":"^/admin/settings(?:/)?$","routeKeys":{},"namedRegex":"^/admin/settings(?:/)?$"},{"page":"/admin/shell","regex":"^/admin/shell(?:/)?$","routeKeys":{},"namedRegex":"^/admin/shell(?:/)?$"},{"page":"/admin/users","regex":"^/admin/users(?:/)?$","routeKeys":{},"namedRegex":"^/admin/users(?:/)?$"},{"page":"/admin/users/add-user","regex":"^/admin/users/add\\-user(?:/)?$","routeKeys":{},"namedRegex":"^/admin/users/add\\-user(?:/)?$"},{"page":"/auth/login","regex":"^/auth/login(?:/)?$","routeKeys":{},"namedRegex":"^/auth/login(?:/)?$"},{"page":"/auth/logout","regex":"^/auth/logout(?:/)?$","routeKeys":{},"namedRegex":"^/auth/logout(?:/)?$"},{"page":"/auth/signup","regex":"^/auth/signup(?:/)?$","routeKeys":{},"namedRegex":"^/auth/signup(?:/)?$"}],"dataRoutes":[{"page":"/","dataRouteRegex":"^/_next/data/hp8Dmk2dba\\-pzMh79OIf7/index.json$"},{"page":"/admin","dataRouteRegex":"^/_next/data/hp8Dmk2dba\\-pzMh79OIf7/admin.json$"},{"page":"/admin/services","dataRouteRegex":"^/_next/data/hp8Dmk2dba\\-pzMh79OIf7/admin/services.json$"},{"page":"/admin/services/[service_name]","routeKeys":{"nxtPservice_name":"nxtPservice_name"},"dataRouteRegex":"^/_next/data/hp8Dmk2dba\\-pzMh79OIf7/admin/services/([^/]+?)\\.json$","namedDataRouteRegex":"^/_next/data/hp8Dmk2dba\\-pzMh79OIf7/admin/services/(?<nxtPservice_name>[^/]+?)\\.json$"},{"page":"/admin/settings","dataRouteRegex":"^/_next/data/hp8Dmk2dba\\-pzMh79OIf7/admin/settings.json$"},{"page":"/admin/shell","dataRouteRegex":"^/_next/data/hp8Dmk2dba\\-pzMh79OIf7/admin/shell.json$"},{"page":"/admin/users","dataRouteRegex":"^/_next/data/hp8Dmk2dba\\-pzMh79OIf7/admin/users.json$"},{"page":"/admin/users/add-user","dataRouteRegex":"^/_next/data/hp8Dmk2dba\\-pzMh79OIf7/admin/users/add-user.json$"},{"page":"/admin/users/[deployment_user_id]","routeKeys":{"nxtPdeployment_user_id":"nxtPdeployment_user_id"},"dataRouteRegex":"^/_next/data/hp8Dmk2dba\\-pzMh79OIf7/admin/users/([^/]+?)\\.json$","namedDataRouteRegex":"^/_next/data/hp8Dmk2dba\\-pzMh79OIf7/admin/users/(?<nxtPdeployment_user_id>[^/]+?)\\.json$"},{"page":"/auth/login","dataRouteRegex":"^/_next/data/hp8Dmk2dba\\-pzMh79OIf7/auth/login.json$"},{"page":"/auth/logout","dataRouteRegex":"^/_next/data/hp8Dmk2dba\\-pzMh79OIf7/auth/logout.json$"},{"page":"/auth/signup","dataRouteRegex":"^/_next/data/hp8Dmk2dba\\-pzMh79OIf7/auth/signup.json$"}],"rsc":{"header":"RSC","varyHeader":"RSC, Next-Router-State-Tree, Next-Router-Prefetch","prefetchHeader":"Next-Router-Prefetch","didPostponeHeader":"x-nextjs-postponed","contentTypeHeader":"text/x-component","suffix":".rsc","prefetchSuffix":".prefetch.rsc"},"rewrites":[]}
{"version":3,"pages404":true,"caseSensitive":false,"basePath":"","redirects":[{"source":"/:path+/","destination":"/:path+","internal":true,"statusCode":308,"regex":"^(?:/((?:[^/]+?)(?:/(?:[^/]+?))*))/$"}],"headers":[],"dynamicRoutes":[{"page":"/admin/services/[service_name]","regex":"^/admin/services/([^/]+?)(?:/)?$","routeKeys":{"nxtPservice_name":"nxtPservice_name"},"namedRegex":"^/admin/services/(?<nxtPservice_name>[^/]+?)(?:/)?$"},{"page":"/admin/users/[deployment_user_id]","regex":"^/admin/users/([^/]+?)(?:/)?$","routeKeys":{"nxtPdeployment_user_id":"nxtPdeployment_user_id"},"namedRegex":"^/admin/users/(?<nxtPdeployment_user_id>[^/]+?)(?:/)?$"}],"staticRoutes":[{"page":"/","regex":"^/(?:/)?$","routeKeys":{},"namedRegex":"^/(?:/)?$"},{"page":"/404","regex":"^/404(?:/)?$","routeKeys":{},"namedRegex":"^/404(?:/)?$"},{"page":"/admin","regex":"^/admin(?:/)?$","routeKeys":{},"namedRegex":"^/admin(?:/)?$"},{"page":"/admin/services","regex":"^/admin/services(?:/)?$","routeKeys":{},"namedRegex":"^/admin/services(?:/)?$"},{"page":"/admin/settings","regex":"^/admin/settings(?:/)?$","routeKeys":{},"namedRegex":"^/admin/settings(?:/)?$"},{"page":"/admin/shell","regex":"^/admin/shell(?:/)?$","routeKeys":{},"namedRegex":"^/admin/shell(?:/)?$"},{"page":"/admin/users","regex":"^/admin/users(?:/)?$","routeKeys":{},"namedRegex":"^/admin/users(?:/)?$"},{"page":"/admin/users/add-user","regex":"^/admin/users/add\\-user(?:/)?$","routeKeys":{},"namedRegex":"^/admin/users/add\\-user(?:/)?$"},{"page":"/auth/login","regex":"^/auth/login(?:/)?$","routeKeys":{},"namedRegex":"^/auth/login(?:/)?$"},{"page":"/auth/logout","regex":"^/auth/logout(?:/)?$","routeKeys":{},"namedRegex":"^/auth/logout(?:/)?$"},{"page":"/auth/signup","regex":"^/auth/signup(?:/)?$","routeKeys":{},"namedRegex":"^/auth/signup(?:/)?$"}],"dataRoutes":[{"page":"/","dataRouteRegex":"^/_next/data/B8h757HZtfNZGW9LO45Ns/index.json$"},{"page":"/admin","dataRouteRegex":"^/_next/data/B8h757HZtfNZGW9LO45Ns/admin.json$"},{"page":"/admin/services","dataRouteRegex":"^/_next/data/B8h757HZtfNZGW9LO45Ns/admin/services.json$"},{"page":"/admin/services/[service_name]","routeKeys":{"nxtPservice_name":"nxtPservice_name"},"dataRouteRegex":"^/_next/data/B8h757HZtfNZGW9LO45Ns/admin/services/([^/]+?)\\.json$","namedDataRouteRegex":"^/_next/data/B8h757HZtfNZGW9LO45Ns/admin/services/(?<nxtPservice_name>[^/]+?)\\.json$"},{"page":"/admin/settings","dataRouteRegex":"^/_next/data/B8h757HZtfNZGW9LO45Ns/admin/settings.json$"},{"page":"/admin/shell","dataRouteRegex":"^/_next/data/B8h757HZtfNZGW9LO45Ns/admin/shell.json$"},{"page":"/admin/users","dataRouteRegex":"^/_next/data/B8h757HZtfNZGW9LO45Ns/admin/users.json$"},{"page":"/admin/users/add-user","dataRouteRegex":"^/_next/data/B8h757HZtfNZGW9LO45Ns/admin/users/add-user.json$"},{"page":"/admin/users/[deployment_user_id]","routeKeys":{"nxtPdeployment_user_id":"nxtPdeployment_user_id"},"dataRouteRegex":"^/_next/data/B8h757HZtfNZGW9LO45Ns/admin/users/([^/]+?)\\.json$","namedDataRouteRegex":"^/_next/data/B8h757HZtfNZGW9LO45Ns/admin/users/(?<nxtPdeployment_user_id>[^/]+?)\\.json$"},{"page":"/auth/login","dataRouteRegex":"^/_next/data/B8h757HZtfNZGW9LO45Ns/auth/login.json$"},{"page":"/auth/logout","dataRouteRegex":"^/_next/data/B8h757HZtfNZGW9LO45Ns/auth/logout.json$"},{"page":"/auth/signup","dataRouteRegex":"^/_next/data/B8h757HZtfNZGW9LO45Ns/auth/signup.json$"}],"rsc":{"header":"RSC","varyHeader":"RSC, Next-Router-State-Tree, Next-Router-Prefetch","prefetchHeader":"Next-Router-Prefetch","didPostponeHeader":"x-nextjs-postponed","contentTypeHeader":"text/x-component","suffix":".rsc","prefetchSuffix":".prefetch.rsc"},"rewrites":[]}

View File

@ -1 +1 @@
{"version":1,"functions":{"/_app":{},"/admin/services/[service_name]":{},"/admin/services":{},"/admin":{},"/admin/shell":{},"/admin/settings":{},"/admin/users/[deployment_user_id]":{},"/admin/users/add-user":{},"/admin/users":{},"/auth/login":{},"/auth/logout":{},"/":{},"/auth/signup":{}}}
{"version":1,"functions":{"/_app":{},"/admin":{},"/admin/services":{},"/admin/services/[service_name]":{},"/admin/shell":{},"/admin/settings":{},"/admin/users/add-user":{},"/admin/users/[deployment_user_id]":{},"/admin/users":{},"/auth/logout":{},"/":{},"/auth/signup":{},"/auth/login":{}}}

File diff suppressed because one or more lines are too long

View File

@ -1 +1 @@
{"/_error":"pages/_error.js","/_document":"pages/_document.js","/404":"pages/404.html","/api/admin/delete-user":"pages/api/admin/delete-user.js","/api/admin/download-private-ssh-key":"pages/api/admin/download-private-ssh-key.js","/api/admin/edit-user":"pages/api/admin/edit-user.js","/api/admin/settings":"pages/api/admin/settings.js","/api/auth/login":"pages/api/auth/login.js","/api/auth/signup":"pages/api/auth/signup.js","/api/hello":"pages/api/hello.js","/admin":"pages/admin.js","/admin/services":"pages/admin/services.js","/_app":"pages/_app.js","/admin/shell":"pages/admin/shell.js","/admin/services/[service_name]":"pages/admin/services/[service_name].js","/admin/settings":"pages/admin/settings.js","/admin/users/add-user":"pages/admin/users/add-user.js","/admin/users":"pages/admin/users.js","/admin/users/[deployment_user_id]":"pages/admin/users/[deployment_user_id].js","/auth/logout":"pages/auth/logout.js","/auth/login":"pages/auth/login.js","/":"pages/index.js","/auth/signup":"pages/auth/signup.js"}
{"/_error":"pages/_error.js","/_document":"pages/_document.js","/404":"pages/404.html","/api/admin/delete-user":"pages/api/admin/delete-user.js","/api/admin/download-private-ssh-key":"pages/api/admin/download-private-ssh-key.js","/api/admin/edit-user":"pages/api/admin/edit-user.js","/api/admin/settings":"pages/api/admin/settings.js","/api/auth/login":"pages/api/auth/login.js","/api/auth/signup":"pages/api/auth/signup.js","/api/hello":"pages/api/hello.js","/_app":"pages/_app.js","/admin/services/[service_name]":"pages/admin/services/[service_name].js","/admin":"pages/admin.js","/admin/services":"pages/admin/services.js","/admin/shell":"pages/admin/shell.js","/admin/settings":"pages/admin/settings.js","/admin/users/[deployment_user_id]":"pages/admin/users/[deployment_user_id].js","/admin/users/add-user":"pages/admin/users/add-user.js","/admin/users":"pages/admin/users.js","/auth/login":"pages/auth/login.js","/auth/logout":"pages/auth/logout.js","/":"pages/index.js","/auth/signup":"pages/auth/signup.js"}

View File

@ -1 +1 @@
<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link rel="preload" href="/_next/static/css/08e6997802749ec3.css" as="style"/><link rel="stylesheet" href="/_next/static/css/08e6997802749ec3.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" noModule="" src="/_next/static/chunks/polyfills-42372ed130431b0a.js"></script><script src="/_next/static/chunks/webpack-38cee4c0e358b1a3.js" defer=""></script><script src="/_next/static/chunks/framework-bfa817c72d812316.js" defer=""></script><script src="/_next/static/chunks/main-761b7faf59ba862f.js" defer=""></script><script src="/_next/static/chunks/pages/_app-12c3cc69366c709d.js" defer=""></script><script src="/_next/static/chunks/29107295-2819ba6e51dbf961.js" defer=""></script><script src="/_next/static/chunks/664-e347d64e56042a02.js" defer=""></script><script src="/_next/static/chunks/pages/404-8292e1046538596b.js" defer=""></script><script src="/_next/static/hp8Dmk2dba-pzMh79OIf7/_buildManifest.js" defer=""></script><script src="/_next/static/hp8Dmk2dba-pzMh79OIf7/_ssgManifest.js" defer=""></script></head><body class="antialiased"><div id="__next"><main class="flex flex-col items-center twui-main w-screen h-screen overflow-hidden"><section class="flex flex-col items-center px-4 sm:px-10 py-10 twui-section w-full h-full"><div class="flex w-full max-w-container gap-4 justify-between flex-wrap flex-col xl:flex-row items-start xl:items-center twui-container grid-frame grid-cols-1 h-full"><div class="flex flex-col items-start gap-4 twui-stack w-full justify-between h-full grid-cell"><div class="flex flex-col items-start twui-stack gap-0"><div class="flex flex-row gap-2 flex-wrap items-center twui-row"><div class="flex flex-row gap-2 flex-wrap items-center twui-row p-6"><a aria-label="TurboCI home" class="inline-flex items-center gap-3" href="/"><svg viewBox="0 0 48 48" aria-hidden="true" class="h-10 w-10 shrink-0"><defs><linearGradient id="_R_1am_" x1="9" y1="9" x2="31" y2="34" gradientUnits="userSpaceOnUse"><stop offset="0%" stop-color="#9cf0c0"></stop><stop offset="100%" stop-color="#42d392"></stop></linearGradient><linearGradient id="_R_1amH1_" x1="22" y1="22" x2="36" y2="40" gradientUnits="userSpaceOnUse"><stop offset="0%" stop-color="#2bc67e"></stop><stop offset="100%" stop-color="#1f8458"></stop></linearGradient></defs><path d="M35 6H23.6c-2 0-3.8 1-4.8 2.7L7.5 28.3c-1.4 2.5.4 5.7 3.2 5.7h9.1c2 0 3.8-1 4.8-2.7l11.2-19.6C39.6 9.2 37.8 6 35 6Z" fill="url(#_R_1am_)"></path><path d="M23.9 24h13.4c2.8 0 4.6 3.1 3.2 5.6l-4.1 7.1c-1 1.7-2.8 2.7-4.8 2.7H18.2c-2.8 0-4.6-3.1-3.2-5.6l4.1-7.1c1-1.7 2.8-2.7 4.8-2.7Z" fill="url(#_R_1amH1_)"></path></svg><span class="font-display text-[1.02rem] font-semibold tracking-tight text-foreground">TurboCI</span></a></div><div class="border-slate-200 dark:border-white/10 border-0 border-l h-full min-h-5 twui-divider twui-divider-vertical border-solid"></div></div><div class="border-slate-200 dark:border-white/10 border-0 border-t w-full twui-divider twui-divider-horizontal border-solid"></div></div><div class="flex flex-col items-center justify-center gap-4 w-full h-full twui-center p-10"><h2 class="text-2xl md:text-3xl mb-4 twui-headings twui-heading twui-h2">Page Not Found!</h2></div><div class="flex flex-col items-start gap-4 twui-stack"><div class="border-slate-200 dark:border-white/10 border-0 border-t w-full twui-divider twui-divider-horizontal border-solid"></div><div class="twui-spacer h-20 w-full"></div></div></div></div></section></main></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/404","query":{},"buildId":"hp8Dmk2dba-pzMh79OIf7","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link rel="preload" href="/_next/static/css/08e6997802749ec3.css" as="style"/><link rel="stylesheet" href="/_next/static/css/08e6997802749ec3.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" noModule="" src="/_next/static/chunks/polyfills-42372ed130431b0a.js"></script><script src="/_next/static/chunks/webpack-38cee4c0e358b1a3.js" defer=""></script><script src="/_next/static/chunks/framework-bfa817c72d812316.js" defer=""></script><script src="/_next/static/chunks/main-761b7faf59ba862f.js" defer=""></script><script src="/_next/static/chunks/pages/_app-12c3cc69366c709d.js" defer=""></script><script src="/_next/static/chunks/29107295-2819ba6e51dbf961.js" defer=""></script><script src="/_next/static/chunks/664-e347d64e56042a02.js" defer=""></script><script src="/_next/static/chunks/pages/404-8292e1046538596b.js" defer=""></script><script src="/_next/static/B8h757HZtfNZGW9LO45Ns/_buildManifest.js" defer=""></script><script src="/_next/static/B8h757HZtfNZGW9LO45Ns/_ssgManifest.js" defer=""></script></head><body class="antialiased"><div id="__next"><main class="flex flex-col items-center twui-main w-screen h-screen overflow-hidden"><section class="flex flex-col items-center px-4 sm:px-10 py-10 twui-section w-full h-full"><div class="flex w-full max-w-container gap-4 justify-between flex-wrap flex-col xl:flex-row items-start xl:items-center twui-container grid-frame grid-cols-1 h-full"><div class="flex flex-col items-start gap-4 twui-stack w-full justify-between h-full grid-cell"><div class="flex flex-col items-start twui-stack gap-0"><div class="flex flex-row gap-2 flex-wrap items-center twui-row"><div class="flex flex-row gap-2 flex-wrap items-center twui-row p-6"><a aria-label="TurboCI home" class="inline-flex items-center gap-3" href="/"><svg viewBox="0 0 48 48" aria-hidden="true" class="h-10 w-10 shrink-0"><defs><linearGradient id="_R_1am_" x1="9" y1="9" x2="31" y2="34" gradientUnits="userSpaceOnUse"><stop offset="0%" stop-color="#9cf0c0"></stop><stop offset="100%" stop-color="#42d392"></stop></linearGradient><linearGradient id="_R_1amH1_" x1="22" y1="22" x2="36" y2="40" gradientUnits="userSpaceOnUse"><stop offset="0%" stop-color="#2bc67e"></stop><stop offset="100%" stop-color="#1f8458"></stop></linearGradient></defs><path d="M35 6H23.6c-2 0-3.8 1-4.8 2.7L7.5 28.3c-1.4 2.5.4 5.7 3.2 5.7h9.1c2 0 3.8-1 4.8-2.7l11.2-19.6C39.6 9.2 37.8 6 35 6Z" fill="url(#_R_1am_)"></path><path d="M23.9 24h13.4c2.8 0 4.6 3.1 3.2 5.6l-4.1 7.1c-1 1.7-2.8 2.7-4.8 2.7H18.2c-2.8 0-4.6-3.1-3.2-5.6l4.1-7.1c1-1.7 2.8-2.7 4.8-2.7Z" fill="url(#_R_1amH1_)"></path></svg><span class="font-display text-[1.02rem] font-semibold tracking-tight text-foreground">TurboCI</span></a></div><div class="border-slate-200 dark:border-white/10 border-0 border-l h-full min-h-5 twui-divider twui-divider-vertical border-solid"></div></div><div class="border-slate-200 dark:border-white/10 border-0 border-t w-full twui-divider twui-divider-horizontal border-solid"></div></div><div class="flex flex-col items-center justify-center gap-4 w-full h-full twui-center p-10"><h2 class="text-2xl md:text-3xl mb-4 twui-headings twui-heading twui-h2">Page Not Found!</h2></div><div class="flex flex-col items-start gap-4 twui-stack"><div class="border-slate-200 dark:border-white/10 border-0 border-t w-full twui-divider twui-divider-horizontal border-solid"></div><div class="twui-spacer h-20 w-full"></div></div></div></div></section></main></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/404","query":{},"buildId":"B8h757HZtfNZGW9LO45Ns","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>

View File

@ -1 +1 @@
<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><title>500: Internal Server Error</title><meta name="next-head-count" content="3"/><link rel="preload" href="/_next/static/css/08e6997802749ec3.css" as="style"/><link rel="stylesheet" href="/_next/static/css/08e6997802749ec3.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" noModule="" src="/_next/static/chunks/polyfills-42372ed130431b0a.js"></script><script src="/_next/static/chunks/webpack-38cee4c0e358b1a3.js" defer=""></script><script src="/_next/static/chunks/framework-bfa817c72d812316.js" defer=""></script><script src="/_next/static/chunks/main-761b7faf59ba862f.js" defer=""></script><script src="/_next/static/chunks/pages/_app-12c3cc69366c709d.js" defer=""></script><script src="/_next/static/chunks/pages/_error-10090a8ee211d5fd.js" defer=""></script><script src="/_next/static/hp8Dmk2dba-pzMh79OIf7/_buildManifest.js" defer=""></script><script src="/_next/static/hp8Dmk2dba-pzMh79OIf7/_ssgManifest.js" defer=""></script></head><body class="antialiased"><div id="__next"><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div style="line-height:48px"><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding-right:23px;font-size:24px;font-weight:500;vertical-align:top">500</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:28px">Internal Server Error<!-- -->.</h2></div></div></div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{"statusCode":500}},"page":"/_error","query":{},"buildId":"hp8Dmk2dba-pzMh79OIf7","nextExport":true,"isFallback":false,"gip":true,"scriptLoader":[]}</script></body></html>
<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><title>500: Internal Server Error</title><meta name="next-head-count" content="3"/><link rel="preload" href="/_next/static/css/08e6997802749ec3.css" as="style"/><link rel="stylesheet" href="/_next/static/css/08e6997802749ec3.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" noModule="" src="/_next/static/chunks/polyfills-42372ed130431b0a.js"></script><script src="/_next/static/chunks/webpack-38cee4c0e358b1a3.js" defer=""></script><script src="/_next/static/chunks/framework-bfa817c72d812316.js" defer=""></script><script src="/_next/static/chunks/main-761b7faf59ba862f.js" defer=""></script><script src="/_next/static/chunks/pages/_app-12c3cc69366c709d.js" defer=""></script><script src="/_next/static/chunks/pages/_error-10090a8ee211d5fd.js" defer=""></script><script src="/_next/static/B8h757HZtfNZGW9LO45Ns/_buildManifest.js" defer=""></script><script src="/_next/static/B8h757HZtfNZGW9LO45Ns/_ssgManifest.js" defer=""></script></head><body class="antialiased"><div id="__next"><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div style="line-height:48px"><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding-right:23px;font-size:24px;font-weight:500;vertical-align:top">500</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:28px">Internal Server Error<!-- -->.</h2></div></div></div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{"statusCode":500}},"page":"/_error","query":{},"buildId":"B8h757HZtfNZGW9LO45Ns","nextExport":true,"isFallback":false,"gip":true,"scriptLoader":[]}</script></body></html>

File diff suppressed because one or more lines are too long

View File

@ -1 +1 @@
self.__BUILD_MANIFEST=function(s,e,a,c,t,i,d,n,u){return{__rewrites:{afterFiles:[],beforeFiles:[],fallback:[]},"/":[s,a,e,c,u,t,i,"static/chunks/pages/index-5ce092dbf4b7ea2c.js"],"/404":[s,e,"static/chunks/pages/404-8292e1046538596b.js"],"/_error":["static/chunks/pages/_error-10090a8ee211d5fd.js"],"/admin":[s,a,e,c,t,i,d,n,"static/chunks/pages/admin-914586c03dfda5c1.js"],"/admin/services":[s,a,e,c,t,i,d,n,"static/chunks/pages/admin/services-16971626ad193c95.js"],"/admin/services/[service_name]":[s,a,e,c,t,i,d,n,"static/chunks/pages/admin/services/[service_name]-e8b08e5c11b1b12c.js"],"/admin/settings":[s,a,e,c,t,i,d,"static/chunks/pages/admin/settings-f58d63b2752f72a6.js"],"/admin/shell":[s,a,e,c,t,d,"static/chunks/pages/admin/shell-c4ef7e6bc7ca42e9.js"],"/admin/users":[s,a,e,c,t,d,"static/chunks/pages/admin/users-73e9775838b56d95.js"],"/admin/users/add-user":[s,a,e,c,t,i,d,"static/chunks/pages/admin/users/add-user-1db7c9ee89830b5b.js"],"/admin/users/[deployment_user_id]":[s,a,"static/chunks/ff39441c-88f593a46cb65964.js","static/chunks/d848df63-a470d32e7be4bfe3.js",e,c,"static/chunks/281-dcee0c6401936d5e.js",t,i,d,"static/chunks/pages/admin/users/[deployment_user_id]-fb1c3c9148c518cd.js"],"/auth/login":[s,a,e,c,u,t,i,"static/chunks/pages/auth/login-3f936f997e58438c.js"],"/auth/logout":[s,e,"static/chunks/pages/auth/logout-c8b207f96be4f684.js"],"/auth/signup":[s,a,e,c,t,i,"static/chunks/pages/auth/signup-5c0f6835749e755e.js"],sortedPages:["/","/404","/_app","/_error","/admin","/admin/services","/admin/services/[service_name]","/admin/settings","/admin/shell","/admin/users","/admin/users/add-user","/admin/users/[deployment_user_id]","/auth/login","/auth/logout","/auth/signup"]}}("static/chunks/29107295-2819ba6e51dbf961.js","static/chunks/664-e347d64e56042a02.js","static/chunks/e5d67320-ccbab4288ca637ad.js","static/chunks/433-ace0b205fb566ad3.js","static/chunks/7-f0121001f735b8fe.js","static/chunks/827-7975edcf8481ec69.js","static/chunks/910-7de3855073c34589.js","static/chunks/926-4b397e2b281b7271.js","static/chunks/225-f257bb5bd6014d68.js"),self.__BUILD_MANIFEST_CB&&self.__BUILD_MANIFEST_CB();
self.__BUILD_MANIFEST=function(s,e,a,c,t,i,n,d,u){return{__rewrites:{afterFiles:[],beforeFiles:[],fallback:[]},"/":[s,a,e,c,u,t,i,"static/chunks/pages/index-13e31ea96205b999.js"],"/404":[s,e,"static/chunks/pages/404-8292e1046538596b.js"],"/_error":["static/chunks/pages/_error-10090a8ee211d5fd.js"],"/admin":[s,a,e,c,t,i,n,d,"static/chunks/pages/admin-914586c03dfda5c1.js"],"/admin/services":[s,a,e,c,t,i,n,d,"static/chunks/pages/admin/services-16971626ad193c95.js"],"/admin/services/[service_name]":[s,a,e,c,t,i,n,d,"static/chunks/pages/admin/services/[service_name]-e8b08e5c11b1b12c.js"],"/admin/settings":[s,a,e,c,t,i,n,"static/chunks/pages/admin/settings-f58d63b2752f72a6.js"],"/admin/shell":[s,a,e,c,t,n,"static/chunks/pages/admin/shell-ba3a42e18b796e90.js"],"/admin/users":[s,a,e,c,t,n,"static/chunks/pages/admin/users-73e9775838b56d95.js"],"/admin/users/add-user":[s,a,e,c,t,i,n,"static/chunks/pages/admin/users/add-user-1db7c9ee89830b5b.js"],"/admin/users/[deployment_user_id]":[s,a,"static/chunks/ff39441c-88f593a46cb65964.js","static/chunks/d848df63-a470d32e7be4bfe3.js",e,c,"static/chunks/281-dcee0c6401936d5e.js",t,i,n,"static/chunks/pages/admin/users/[deployment_user_id]-fb1c3c9148c518cd.js"],"/auth/login":[s,a,e,c,u,t,i,"static/chunks/pages/auth/login-3f936f997e58438c.js"],"/auth/logout":[s,e,"static/chunks/pages/auth/logout-c8b207f96be4f684.js"],"/auth/signup":[s,a,e,c,t,i,"static/chunks/pages/auth/signup-5c0f6835749e755e.js"],sortedPages:["/","/404","/_app","/_error","/admin","/admin/services","/admin/services/[service_name]","/admin/settings","/admin/shell","/admin/users","/admin/users/add-user","/admin/users/[deployment_user_id]","/auth/login","/auth/logout","/auth/signup"]}}("static/chunks/29107295-2819ba6e51dbf961.js","static/chunks/664-e347d64e56042a02.js","static/chunks/e5d67320-bf1772fa71739690.js","static/chunks/433-bb8bdacebff9ab53.js","static/chunks/7-f0121001f735b8fe.js","static/chunks/827-7975edcf8481ec69.js","static/chunks/910-7de3855073c34589.js","static/chunks/926-4b397e2b281b7271.js","static/chunks/225-f257bb5bd6014d68.js"),self.__BUILD_MANIFEST_CB&&self.__BUILD_MANIFEST_CB();

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[890],{25292:function(e,l,n){(window.__NEXT_P=window.__NEXT_P||[]).push(["/admin/shell",function(){return n(30904)}])},40806:function(e,l,n){"use strict";n.d(l,{Z:function(){return x}});var s=n(85893),r=n(93452),t=n(76242),i=n(36969),c=n(25808),a=n(94495),u=n(57493),o=n(94655),d=n(3668),p=n(60),f=n(67294),m=n(98388);function x(e){let{url:l,wrapperProps:n,title:x,...h}=e,{loading:j,setLoading:g}=(0,c.Z)();return(0,s.jsx)(r.Z,{...n,className:(0,m.m6)("p-0",null==n?void 0:n.className),children:(0,s.jsxs)(p.Z,{className:"gap-0",children:[(0,s.jsxs)(o.Z,{className:"p-4 w-full justify-between",children:[(0,s.jsx)(o.Z,{children:x?(0,s.jsx)(f.Fragment,{children:(0,s.jsx)(d.Z,{size:"small",variant:"faded",children:x})}):null}),(0,s.jsxs)(o.Z,{children:[(0,s.jsx)(a.Z,{title:"Open Full Screen",variant:"ghost",className:"p-1!",onClick:()=>{window.open(l,"__blank")},children:(0,s.jsx)(i.Z,{name:"ArrowUpRight",size:20})}),(0,s.jsx)(a.Z,{title:"Refresh Iframe",variant:"ghost",className:"p-1!",loading:j,onClick:()=>{g(!0),setTimeout(()=>{g(!1)},2e3)},loadingProps:{size:"smaller"},children:(0,s.jsx)(i.Z,{name:"RotateCcw",size:18})})]})]}),(0,s.jsx)("hr",{}),j?(0,s.jsx)(u.Z,{className:"w-full p-10 h-[400px]",children:(0,s.jsx)(t.Z,{})}):(0,s.jsx)("iframe",{...h,src:l,className:(0,m.m6)("w-full h-[400px]",h.className)})]})})}},30904:function(e,l,n){"use strict";n.r(l),n.d(l,{__N_SSP:function(){return g},default:function(){return v}});var s=n(85893),r=n(67294),t=n(5606),i=n(60705),c=n(33028),a=n(60),u=n(71077),o=n(76242),d=n(57493),p=n(40806),f=n(25808);function m(e){let{paradigm:l}=e,{pageProps:n,ws:i}=(0,r.useContext)(t.AppContext),{user:c}=n,m=c.super_admin?"root":c.username,x="pm2-logs"==l?"pm2 logs":c.super_admin?"bash":m?"su - ".concat(m,' -c "bash"'):void 0,{data:h}=(0,u.Z)(),[j,g]=(0,r.useState)(),{refresh:v,setRefresh:Z}=(0,f.Z)(),N=(0,r.useRef)(!1);function w(){(null==j?void 0:j.port)&&i.sendData({event:"client:kill-port",port:j.port})}return(0,r.useEffect)(()=>{if((null==i?void 0:i.socket)&&!N.current)return i.sendData({event:"pm2-logs"==l?"client:relay-pm2-logs":"client:relay-shell",cmd:x}),N.current=!0,function(){w()}},[i,v]),(0,r.useEffect)(()=>{N.current&&(w(),g(void 0),N.current=!1,Z(e=>e+1))},[]),(0,r.useEffect)(()=>{!j&&("shell"==l&&(null==h?void 0:h.event)=="server:relay-shell"&&(null==h?void 0:h.ttyd)||"pm2-logs"==l&&(null==h?void 0:h.event)=="server:relay-pm2-logs"&&(null==h?void 0:h.ttyd))&&setTimeout(()=>{g(h.ttyd?{...h.ttyd,href:"".concat(window.location.origin).concat(h.ttyd.url)}:void 0)},2e3)},[h]),(0,s.jsxs)(a.Z,{className:"gap-0 w-full",children:[(null==j?void 0:j.url)&&j.port?(0,s.jsx)(a.Z,{className:"gap-0",children:(0,s.jsx)(p.Z,{url:null==j?void 0:j.url,title:"pm2-logs"==l?"Admin Logs":"Relay Shell",wrapperProps:{className:"border-none"}})}):(0,s.jsx)(d.Z,{className:"p-10 h-[460px]",children:(0,s.jsx)(o.Z,{})}),(0,s.jsx)("hr",{})]})}function x(){let{pageProps:e}=(0,r.useContext)(t.AppContext),{user:l}=e;return(0,s.jsxs)(a.Z,{className:"w-full nested-grid-frame xl:grid-cols-2",children:[(0,s.jsx)(a.Z,{className:"grid-cell w-full",children:(0,s.jsx)(m,{paradigm:"shell"})}),l.super_admin?(0,s.jsx)(a.Z,{className:"grid-cell w-full",children:(0,s.jsx)(m,{paradigm:"pm2-logs"})}):null]})}function h(){let{pageProps:e}=(0,r.useContext)(t.AppContext);return(0,s.jsxs)(r.Fragment,{children:[(0,s.jsx)(c.Z,{title:"Shell",description:(0,s.jsx)(s.Fragment,{children:"Access the relay server shell"})}),(0,s.jsx)(i.Z,{}),(0,s.jsx)(x,{})]})}var j=n(89350),g=!0;function v(){return(0,s.jsx)(j.Z,{children:(0,s.jsx)(h,{})})}},93452:function(e,l,n){"use strict";n.d(l,{Z:function(){return t}});var s=n(85893),r=n(98388);function t(e){let{spacing:l,componentRef:n,...t}=e;return(0,s.jsx)("div",{...t,className:(0,r.m6)("relative flex items-center gap-2 border border-solid rounded-default","border-slate-200 dark:border-white/10",l?"normal"==l?"px-3 py-2":"tight"==l?"px-2 py-1":"":"px-3 py-2","twui-border",t.className),ref:n,children:t.children})}},57493:function(e,l,n){"use strict";n.d(l,{Z:function(){return t}});var s=n(85893),r=n(98388);function t(e){let{...l}=e;return(0,s.jsx)("div",{...l,className:(0,r.m6)("flex flex-col items-center justify-center gap-4 p-2 w-full","h-full twui-center",l.className),children:l.children})}},9008:function(e,l,n){e.exports=n(23867)}},function(e){e.O(0,[662,75,664,433,7,910,888,774,179],function(){return e(e.s=25292)}),_N_E=e.O()}]);

View File

@ -1 +0,0 @@
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[890],{25292:function(e,l,n){(window.__NEXT_P=window.__NEXT_P||[]).push(["/admin/shell",function(){return n(30904)}])},40806:function(e,l,n){"use strict";n.d(l,{Z:function(){return x}});var s=n(85893),r=n(93452),t=n(76242),i=n(36969),c=n(25808),a=n(94495),u=n(57493),o=n(94655),d=n(3668),f=n(60),p=n(67294),m=n(98388);function x(e){let{url:l,wrapperProps:n,title:x,...h}=e,{loading:j,setLoading:v}=(0,c.Z)();return(0,s.jsx)(r.Z,{...n,className:(0,m.m6)("p-0",null==n?void 0:n.className),children:(0,s.jsxs)(f.Z,{className:"gap-0",children:[(0,s.jsxs)(o.Z,{className:"p-4 w-full justify-between",children:[(0,s.jsx)(o.Z,{children:x?(0,s.jsx)(p.Fragment,{children:(0,s.jsx)(d.Z,{size:"small",variant:"faded",children:x})}):null}),(0,s.jsxs)(o.Z,{children:[(0,s.jsx)(a.Z,{title:"Open Full Screen",variant:"ghost",className:"p-1!",onClick:()=>{window.open(l,"__blank")},children:(0,s.jsx)(i.Z,{name:"ArrowUpRight",size:20})}),(0,s.jsx)(a.Z,{title:"Refresh Iframe",variant:"ghost",className:"p-1!",loading:j,onClick:()=>{v(!0),setTimeout(()=>{v(!1)},2e3)},loadingProps:{size:"smaller"},children:(0,s.jsx)(i.Z,{name:"RotateCcw",size:18})})]})]}),(0,s.jsx)("hr",{}),j?(0,s.jsx)(u.Z,{className:"w-full p-10 h-[400px]",children:(0,s.jsx)(t.Z,{})}):(0,s.jsx)("iframe",{...h,src:l,className:(0,m.m6)("w-full h-[400px]",h.className)})]})})}},30904:function(e,l,n){"use strict";n.r(l),n.d(l,{__N_SSP:function(){return v},default:function(){return Z}});var s=n(85893),r=n(67294),t=n(5606),i=n(60705),c=n(33028),a=n(60),u=n(71077),o=n(76242),d=n(57493),f=n(40806),p=n(25808);function m(e){let{paradigm:l}=e,{pageProps:n,ws:i}=(0,r.useContext)(t.AppContext),{user:c}=n,m=c.super_admin?"root":c.username,x="pm2-logs"==l?"pm2 logs":c.super_admin?"bash":m?"su - ".concat(m,' -c "bash"'):void 0,{data:h}=(0,u.Z)(),[j,v]=(0,r.useState)(),{refresh:Z,setRefresh:g}=(0,p.Z)(),N=(0,r.useRef)(!1);function w(){(null==j?void 0:j.port)&&i.sendData({event:"client:kill-port",port:j.port})}return(0,r.useEffect)(()=>{if((null==i?void 0:i.socket)&&!N.current)return i.sendData({event:"pm2-logs"==l?"client:relay-pm2-logs":"client:relay-shell",cmd:x}),N.current=!0,function(){w()}},[i,Z]),(0,r.useEffect)(()=>{N.current&&(w(),v(void 0),N.current=!1,g(e=>e+1))},[]),(0,r.useEffect)(()=>{!j&&((null==h?void 0:h.event)=="server:relay-shell"||(null==h?void 0:h.event)=="server:relay-pm2-logs")&&(null==h?void 0:h.ttyd)&&setTimeout(()=>{v(h.ttyd?{...h.ttyd,href:"".concat(window.location.origin).concat(h.ttyd.url)}:void 0)},2e3)},[h]),(0,s.jsxs)(a.Z,{className:"gap-0 w-full",children:[(null==j?void 0:j.url)&&j.port?(0,s.jsx)(a.Z,{className:"gap-0",children:(0,s.jsx)(f.Z,{url:null==j?void 0:j.url,title:"Relay Shell",wrapperProps:{className:"border-none"}})}):(0,s.jsx)(d.Z,{className:"p-10 h-[460px]",children:(0,s.jsx)(o.Z,{})}),(0,s.jsx)("hr",{})]})}function x(){let{pageProps:e}=(0,r.useContext)(t.AppContext),{user:l}=e;return(0,s.jsxs)(a.Z,{className:"w-full nested-grid-frame xl:grid-cols-2",children:[(0,s.jsx)(a.Z,{className:"grid-cell w-full",children:(0,s.jsx)(m,{paradigm:"shell"})}),l.super_admin?(0,s.jsx)(a.Z,{className:"grid-cell w-full",children:(0,s.jsx)(m,{paradigm:"pm2-logs"})}):null]})}function h(){let{pageProps:e}=(0,r.useContext)(t.AppContext);return(0,s.jsxs)(r.Fragment,{children:[(0,s.jsx)(c.Z,{title:"Shell",description:(0,s.jsx)(s.Fragment,{children:"Access the relay server shell"})}),(0,s.jsx)(i.Z,{}),(0,s.jsx)(x,{})]})}var j=n(89350),v=!0;function Z(){return(0,s.jsx)(j.Z,{children:(0,s.jsx)(h,{})})}},93452:function(e,l,n){"use strict";n.d(l,{Z:function(){return t}});var s=n(85893),r=n(98388);function t(e){let{spacing:l,componentRef:n,...t}=e;return(0,s.jsx)("div",{...t,className:(0,r.m6)("relative flex items-center gap-2 border border-solid rounded-default","border-slate-200 dark:border-white/10",l?"normal"==l?"px-3 py-2":"tight"==l?"px-2 py-1":"":"px-3 py-2","twui-border",t.className),ref:n,children:t.children})}},57493:function(e,l,n){"use strict";n.d(l,{Z:function(){return t}});var s=n(85893),r=n(98388);function t(e){let{...l}=e;return(0,s.jsx)("div",{...l,className:(0,r.m6)("flex flex-col items-center justify-center gap-4 p-2 w-full","h-full twui-center",l.className),children:l.children})}},9008:function(e,l,n){e.exports=n(23867)}},function(e){e.O(0,[662,75,664,433,7,910,888,774,179],function(){return e(e.s=25292)}),_N_E=e.O()}]);

6
dist/web/trace vendored

File diff suppressed because one or more lines are too long

View File

@ -77,9 +77,12 @@ export default function RelayShellView({ paradigm }: Props) {
if (ttyd) return;
if (
(data?.event == "server:relay-shell" ||
data?.event == "server:relay-pm2-logs") &&
data?.ttyd
(paradigm == "shell" &&
data?.event == "server:relay-shell" &&
data?.ttyd) ||
(paradigm == "pm2-logs" &&
data?.event == "server:relay-pm2-logs" &&
data?.ttyd)
) {
setTimeout(() => {
setTtyd(
@ -94,13 +97,15 @@ export default function RelayShellView({ paradigm }: Props) {
}
}, [data]);
const title = paradigm == "pm2-logs" ? `Admin Logs` : `Relay Shell`;
return (
<Stack className="gap-0 w-full">
{ttyd?.url && ttyd.port ? (
<Stack className="gap-0">
<TtydIframe
url={ttyd?.url}
title={`Relay Shell`}
title={title}
wrapperProps={{
className: "border-none",
}}

View File

@ -2,7 +2,7 @@ import {
NSQLITE_TURBOCI_ADMIN_USERS_PORTS,
NSQLiteTables,
} from "@/src/db/types";
import { TtydInfoObject, User } from "@/src/types";
import { TtydInfoObject, TtydParams, User } from "@/src/types";
import getNextAvailablePort from "@/src/utils/grab-next-available-port";
import grabTtydCmd from "@/src/utils/grab-ttyd-cmd";
import grabConnectedWebsocketUserdata from "@/src/websocket/(utils)/grab-connected-websocket-user-data";
@ -12,11 +12,13 @@ import { exec } from "child_process";
type Params = {
user: User;
cmd: string;
ttyd_options?: Omit<TtydParams, "cmd" | "port">;
};
export default async function grabTtydInfo({
user,
cmd,
ttyd_options,
}: Params): Promise<TtydInfoObject> {
const available_port = await getNextAvailablePort();
@ -25,6 +27,7 @@ export default async function grabTtydInfo({
const ttyd_cmd = grabTtydCmd({
cmd,
port: available_port,
...ttyd_options,
});
const ttyd_exec = exec(ttyd_cmd.cmd);

View File

@ -151,3 +151,10 @@ export const ServerTerminalTargets = [
{ name: "logs" },
{ name: "shell" },
] as const;
export type TtydParams = {
cmd: string;
cwd?: string;
flags?: string[];
port: number;
};

View File

@ -1,18 +1,12 @@
import { AppData } from "../data/app-data";
type Params = {
cmd: string;
cwd?: string;
flags?: string[];
port: number;
};
import { TtydParams } from "../types";
export default function grabTtydCmd({
cmd: ttydCmd,
cwd,
flags,
port,
}: Params) {
}: TtydParams) {
let cmd = ``;
cmd += `${AppData["TerminalBinName"]}`;
cmd += ` --writable`;

View File

@ -10,7 +10,10 @@ export default async function socketClientRelayPm2Logs({
try {
const user = ws.data.user;
const ttyd = await grabTtydInfo({ cmd: `pm2 logs`, user });
const ttyd = await grabTtydInfo({
cmd: `pm2 logs`,
user,
});
sendData(ws, {
event: "server:relay-pm2-logs",

View File

@ -15,7 +15,13 @@ export default async function socketClientRelayShell({
throw new Error(`No Command Passed`);
}
const ttyd = await grabTtydInfo({ cmd, user });
const ttyd = await grabTtydInfo({
cmd,
user,
ttyd_options: {
cwd: user.super_admin ? "/root" : `/home/${user.username}`,
},
});
sendData(ws, {
event: "server:relay-shell",