peertube-plugin-user-group-privacy-enhanced 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.devcontainer/ClaudeCode/.env.example +4 -0
- package/.devcontainer/ClaudeCode/Dockerfile +41 -0
- package/.devcontainer/ClaudeCode/devcontainer.json +19 -0
- package/.devcontainer/ClaudeCode/post-start.sh +31 -0
- package/.eslintrc.json +41 -0
- package/.stylelintrc.js +9 -0
- package/LICENSE +661 -0
- package/README.md +31 -0
- package/assets/style.scss +1 -0
- package/client/api.ts +24 -0
- package/client/common-client-plugin.ts +8 -0
- package/client/tsconfig.json +28 -0
- package/client/user-group-selection-updater.ts +136 -0
- package/client/video-edit.ts +63 -0
- package/dist/assets/style.css +1 -0
- package/dist/client/common-client-plugin.js +1 -0
- package/dist/client/video-edit.js +1 -0
- package/dist/server/main.js +96 -0
- package/dist/server/main.js.map +1 -0
- package/dist/server/migrations/001_initial_schema.js +55 -0
- package/dist/server/migrations/001_initial_schema.js.map +1 -0
- package/dist/server/migrations/002_add_group_config_id.js +38 -0
- package/dist/server/migrations/002_add_group_config_id.js.map +1 -0
- package/dist/server/migrations/migration-runner.js +130 -0
- package/dist/server/migrations/migration-runner.js.map +1 -0
- package/dist/server/model/params.js +3 -0
- package/dist/server/model/params.js.map +1 -0
- package/dist/server/model/user-group.js +12 -0
- package/dist/server/model/user-group.js.map +1 -0
- package/dist/server/service/db-service.js +129 -0
- package/dist/server/service/db-service.js.map +1 -0
- package/dist/server/service/group-permission-service.js +105 -0
- package/dist/server/service/group-permission-service.js.map +1 -0
- package/dist/server/service/hook-handler-factory.js +149 -0
- package/dist/server/service/hook-handler-factory.js.map +1 -0
- package/dist/server/service/route-handler-factory.js +97 -0
- package/dist/server/service/route-handler-factory.js.map +1 -0
- package/dist/shared/constants.js +6 -0
- package/dist/shared/constants.js.map +1 -0
- package/jest.config.js +7 -0
- package/languages/de.json +8 -0
- package/package.json +80 -0
- package/public/images/.gitkeep +0 -0
- package/scripts/build.js +25 -0
- package/server/main.ts +108 -0
- package/server/migrations/001_initial_schema.ts +65 -0
- package/server/migrations/002_add_group_config_id.ts +47 -0
- package/server/migrations/migration-runner.ts +172 -0
- package/server/model/params.ts +59 -0
- package/server/model/user-group.ts +11 -0
- package/server/service/db-service.ts +187 -0
- package/server/service/group-permission-service.ts +135 -0
- package/server/service/hook-handler-factory.ts +277 -0
- package/server/service/route-handler-factory.ts +122 -0
- package/server/tsconfig.json +24 -0
- package/shared/constants.ts +2 -0
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
FROM node:24.2.0-bookworm
|
|
2
|
+
|
|
3
|
+
# Install basic development tools
|
|
4
|
+
RUN apt update && apt install -y less man-db sudo
|
|
5
|
+
|
|
6
|
+
# Install Docker CLI
|
|
7
|
+
RUN apt-get update && apt-get install -y \
|
|
8
|
+
ca-certificates \
|
|
9
|
+
curl \
|
|
10
|
+
gnupg \
|
|
11
|
+
lsb-release
|
|
12
|
+
RUN mkdir -p /etc/apt/keyrings
|
|
13
|
+
RUN curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg
|
|
14
|
+
RUN echo \
|
|
15
|
+
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \
|
|
16
|
+
$(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null
|
|
17
|
+
RUN apt-get update && apt-get install -y docker-ce-cli
|
|
18
|
+
|
|
19
|
+
# Install the Claude Code CLI
|
|
20
|
+
RUN npm install -g @anthropic-ai/claude-code
|
|
21
|
+
|
|
22
|
+
# Create docker group with GID 999 (this should match the host's docker GID)
|
|
23
|
+
RUN groupadd -g 999 docker
|
|
24
|
+
|
|
25
|
+
# Add node user to docker group
|
|
26
|
+
RUN usermod -aG docker node
|
|
27
|
+
|
|
28
|
+
# Ensure default `node` user has access to `sudo`
|
|
29
|
+
ARG USERNAME=node
|
|
30
|
+
RUN echo $USERNAME ALL=\(root\) NOPASSWD:ALL > /etc/sudoers.d/$USERNAME \
|
|
31
|
+
&& chmod 0440 /etc/sudoers.d/$USERNAME
|
|
32
|
+
|
|
33
|
+
# Set `DEVCONTAINER` environment variable to help with orientation
|
|
34
|
+
ENV DEVCONTAINER=true
|
|
35
|
+
|
|
36
|
+
# Install PeerTube CLI
|
|
37
|
+
RUN npm install -g @peertube/peertube-cli
|
|
38
|
+
|
|
39
|
+
# Add peertube.localhost to hosts file
|
|
40
|
+
# RUN
|
|
41
|
+
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
// See https://containers.dev/implementors/json_reference/ for configuration reference
|
|
2
|
+
{
|
|
3
|
+
"name": "Claude Code",
|
|
4
|
+
"build": {
|
|
5
|
+
"dockerfile": "Dockerfile"
|
|
6
|
+
},
|
|
7
|
+
"remoteUser": "node",
|
|
8
|
+
|
|
9
|
+
// Mount Docker socket from WSL2 host
|
|
10
|
+
"mounts": [
|
|
11
|
+
"source=/var/run/docker.sock,target=/var/run/docker.sock,type=bind"
|
|
12
|
+
],
|
|
13
|
+
|
|
14
|
+
// Add user to docker group for non-root docker access and connect to PeerTube network
|
|
15
|
+
"runArgs": ["--group-add=docker", "--network=local_default"],
|
|
16
|
+
|
|
17
|
+
// Run commands after each container start
|
|
18
|
+
"postStartCommand": ".devcontainer/ClaudeCode/post-start.sh"
|
|
19
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
|
|
3
|
+
# Configure Docker socket permissions
|
|
4
|
+
sudo chgrp docker /var/run/docker.sock
|
|
5
|
+
sudo chmod g+rw /var/run/docker.sock
|
|
6
|
+
|
|
7
|
+
# Add PeerTube host entry if not already present
|
|
8
|
+
if ! grep -q 'peertube.localhost' /etc/hosts; then
|
|
9
|
+
# Find PeerTube container IP dynamically
|
|
10
|
+
PEERTUBE_CONTAINER=$(docker ps -q --filter "name=peertube" 2>/dev/null)
|
|
11
|
+
|
|
12
|
+
if [ -n "$PEERTUBE_CONTAINER" ]; then
|
|
13
|
+
PEERTUBE_IP=$(docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' "$PEERTUBE_CONTAINER" 2>/dev/null | head -n1)
|
|
14
|
+
if [ -n "$PEERTUBE_IP" ]; then
|
|
15
|
+
echo "$PEERTUBE_IP peertube.localhost" | sudo tee -a /etc/hosts
|
|
16
|
+
echo "Added PeerTube container IP $PEERTUBE_IP to /etc/hosts"
|
|
17
|
+
else
|
|
18
|
+
echo "Error: Could not get IP address from PeerTube container"
|
|
19
|
+
exit 1
|
|
20
|
+
fi
|
|
21
|
+
else
|
|
22
|
+
echo "Error: PeerTube container not found. Make sure PeerTube is running."
|
|
23
|
+
exit 1
|
|
24
|
+
fi
|
|
25
|
+
fi
|
|
26
|
+
|
|
27
|
+
# Add PeerTube CLI authentication
|
|
28
|
+
if [ -f ".devcontainer/ClaudeCode/.env" ]; then
|
|
29
|
+
source .devcontainer/ClaudeCode/.env
|
|
30
|
+
peertube-cli auth add -u "http://peertube.localhost:9000" -U "root" --password "$PEERTUBE_PASSWORD" 2>/dev/null || true
|
|
31
|
+
fi
|
package/.eslintrc.json
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
{
|
|
2
|
+
"root": true,
|
|
3
|
+
"env": {
|
|
4
|
+
"browser": true,
|
|
5
|
+
"es6": true
|
|
6
|
+
},
|
|
7
|
+
"extends": [
|
|
8
|
+
"standard-with-typescript"
|
|
9
|
+
],
|
|
10
|
+
"globals": {},
|
|
11
|
+
"parser": "@typescript-eslint/parser",
|
|
12
|
+
"parserOptions": {
|
|
13
|
+
"ecmaVersion": 2018,
|
|
14
|
+
"project": [
|
|
15
|
+
"./server/tsconfig.json",
|
|
16
|
+
"./client/tsconfig.json"
|
|
17
|
+
]
|
|
18
|
+
},
|
|
19
|
+
"plugins": [
|
|
20
|
+
"@typescript-eslint"
|
|
21
|
+
],
|
|
22
|
+
"ignorePatterns": ["dist", "node_modules", "scripts"],
|
|
23
|
+
"rules": {
|
|
24
|
+
"@typescript-eslint/no-unused-vars": [2, {"argsIgnorePattern": "^_"}],
|
|
25
|
+
"@typescript-eslint/no-floating-promises": "error",
|
|
26
|
+
"@typescript-eslint/no-misused-promises": "error",
|
|
27
|
+
"@typescript-eslint/no-var-requires": "off",
|
|
28
|
+
"@typescript-eslint/strict-boolean-expressions": "off",
|
|
29
|
+
"@typescript-eslint/return-await": [2, "in-try-catch"], // FIXME: correct?
|
|
30
|
+
"@typescript-eslint/no-invalid-void-type": "off",
|
|
31
|
+
"@typescript-eslint/triple-slash-reference": "off",
|
|
32
|
+
"max-len": [
|
|
33
|
+
"error",
|
|
34
|
+
{
|
|
35
|
+
"code": 120,
|
|
36
|
+
"comments": 120
|
|
37
|
+
}
|
|
38
|
+
],
|
|
39
|
+
"no-unused-vars": "off"
|
|
40
|
+
}
|
|
41
|
+
}
|