X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=support%2Fdoc%2Fplugins%2Fguide.md;h=9ddab3ece7c89da363e03ea2efeb273de3610735;hb=60b880acdfa85eab5c9ec09ba1283f82ae58ec85;hp=e460f214e2098c343a1e2068183f30107c7288a2;hpb=09f33366a765b860555236af877e5f37b6886d02;p=github%2FChocobozzz%2FPeerTube.git diff --git a/support/doc/plugins/guide.md b/support/doc/plugins/guide.md index e460f214e..9ddab3ece 100644 --- a/support/doc/plugins/guide.md +++ b/support/doc/plugins/guide.md @@ -12,6 +12,7 @@ - [Storage](#storage) - [Update video constants](#update-video-constants) - [Add custom routes](#add-custom-routes) + - [Add custom WebSocket handlers](#add-custom-websocket-handlers) - [Add external auth methods](#add-external-auth-methods) - [Add new transcoding profiles](#add-new-transcoding-profiles) - [Server helpers](#server-helpers) @@ -317,6 +318,43 @@ The `ping` route can be accessed using: * Or `/plugins/:pluginName/router/ping` +#### Add custom WebSocket handlers + +**PeerTube >= 5.0** + +You can create custom WebSocket servers (like [ws](https://github.com/websockets/ws) for example) using `registerWebSocketRoute`: + +```js +function register ({ + registerWebSocketRoute, + peertubeHelpers +}) { + const wss = new WebSocketServer({ noServer: true }) + + wss.on('connection', function connection(ws) { + peertubeHelpers.logger.info('WebSocket connected!') + + setInterval(() => { + ws.send('WebSocket message sent by server'); + }, 1000) + }) + + registerWebSocketRoute({ + route: '/my-websocket-route', + + handler: (request, socket, head) => { + wss.handleUpgrade(request, socket, head, ws => { + wss.emit('connection', ws, request) + }) + } + }) +} +``` + +The `my-websocket-route` route can be accessed using: + * `/plugins/:pluginName/:pluginVersion/ws/my-websocket-route` + * Or `/plugins/:pluginName/ws/my-websocket-route` + #### Add external auth methods If you want to add a classic username/email and password auth method (like [LDAP](https://framagit.org/framasoft/peertube/official-plugins/-/tree/master/peertube-plugin-auth-ldap) for example): @@ -395,7 +433,27 @@ function register (...) { username: 'user' email: 'user@example.com' role: 2 - displayName: 'User display name' + displayName: 'User display name', + + // Custom admin flags (bypass video auto moderation etc.) + // https://github.com/Chocobozzz/PeerTube/blob/develop/shared/models/users/user-flag.model.ts + // PeerTube >= 5.1 + adminFlags: 0, + // Quota in bytes + // PeerTube >= 5.1 + videoQuota: 1024 * 1024 * 1024, // 1GB + // PeerTube >= 5.1 + videoQuotaDaily: -1, // Unlimited + + // Update the user profile if it already exists + // Default behaviour is no update + // Introduced in PeerTube >= 5.1 + userUpdater: ({ fieldName, currentValue, newValue }) => { + // Always use new value except for videoQuotaDaily field + if (fieldName === 'videoQuotaDaily') return currentValue + + return newValue + } }) }) @@ -914,7 +972,10 @@ If you want to write modern JavaScript, please use a transpiler like [Babel](htt **Typescript** -If you want to use __Typescript__, you can add __PeerTube__ types as dev dependencies: +The easiest way to use __Typescript__ for both front-end and backend code is to clone [peertube-plugin-quickstart-typescript](https://github.com/JohnXLivingston/peertube-plugin-quickstart-typescript/) (also available on [framagit](https://framagit.org/Livingston/peertube-plugin-quickstart-typescript/)) instead of `peertube-plugin-quickstart`. +Please read carefully the [README file](https://github.com/JohnXLivingston/peertube-plugin-quickstart-typescript/blob/main/README.md), as there are some other differences with `peertube-plugin-quickstart` (using SCSS instead of CSS, linting rules, ...). + +If you don't want to use `peertube-plugin-quickstart-typescript`, you can also manually add a dev dependency to __Peertube__ types: ``` npm install --save-dev @peertube/peertube-types @@ -1036,7 +1097,7 @@ $ npm run setup:cli * Run PeerTube (you can access to your instance on http://localhost:9000): ``` -$ NODE_ENV=test npm start +$ NODE_ENV=dev npm start ``` * Register the instance via the CLI: