mirror of
https://github.com/xtr-dev/rondevu-server.git
synced 2025-12-13 20:33:25 +00:00
Compare commits
7 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 6a1ca14bf8 | |||
| 350d15591a | |||
| 7246d4c723 | |||
| f53d3024c7 | |||
| 384b80ef0d | |||
| b5799fa9ac | |||
| 2a648c5818 |
4
package-lock.json
generated
4
package-lock.json
generated
@@ -1,12 +1,12 @@
|
||||
{
|
||||
"name": "@xtr-dev/rondevu-server",
|
||||
"version": "0.5.0",
|
||||
"version": "0.5.2",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "@xtr-dev/rondevu-server",
|
||||
"version": "0.5.0",
|
||||
"version": "0.5.2",
|
||||
"dependencies": {
|
||||
"@hono/node-server": "^1.19.6",
|
||||
"@noble/ed25519": "^3.0.0",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@xtr-dev/rondevu-server",
|
||||
"version": "0.5.0",
|
||||
"version": "0.5.2",
|
||||
"description": "DNS-like WebRTC signaling server with username claiming and service discovery",
|
||||
"main": "dist/index.js",
|
||||
"scripts": {
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
*/
|
||||
|
||||
import * as ed25519 from '@noble/ed25519';
|
||||
import { Buffer } from 'node:buffer';
|
||||
|
||||
// Set SHA-512 hash function for ed25519 (required in @noble/ed25519 v3+)
|
||||
// Uses Web Crypto API (compatible with both Node.js and Cloudflare Workers)
|
||||
@@ -13,7 +14,7 @@ ed25519.hashes.sha512Async = async (message: Uint8Array) => {
|
||||
};
|
||||
|
||||
// Username validation
|
||||
const USERNAME_REGEX = /^[a-z0-9][a-z0-9-]*[a-z0-9]$/;
|
||||
const USERNAME_REGEX = /^[a-z0-9][a-z0-9.-]*[a-z0-9]$/;
|
||||
const USERNAME_MIN_LENGTH = 3;
|
||||
const USERNAME_MAX_LENGTH = 32;
|
||||
|
||||
@@ -34,20 +35,18 @@ export function generateAnonymousUsername(): string {
|
||||
|
||||
/**
|
||||
* Convert Uint8Array to base64 string
|
||||
* Uses Buffer for compatibility with Node.js-based clients
|
||||
*/
|
||||
function bytesToBase64(bytes: Uint8Array): string {
|
||||
const binString = Array.from(bytes, (byte) =>
|
||||
String.fromCodePoint(byte)
|
||||
).join('');
|
||||
return btoa(binString);
|
||||
return Buffer.from(bytes).toString('base64');
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert base64 string to Uint8Array
|
||||
* Uses Buffer for compatibility with Node.js-based clients
|
||||
*/
|
||||
function base64ToBytes(base64: string): Uint8Array {
|
||||
const binString = atob(base64);
|
||||
return Uint8Array.from(binString, (char) => char.codePointAt(0)!);
|
||||
return new Uint8Array(Buffer.from(base64, 'base64'));
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -17,7 +17,7 @@ OFFER_MIN_TTL = "60000" # Min offer TTL: 1 minute
|
||||
MAX_OFFERS_PER_REQUEST = "100" # Max offers per request
|
||||
MAX_TOPICS_PER_OFFER = "50" # Max topics per offer
|
||||
CORS_ORIGINS = "*" # Comma-separated list of allowed origins
|
||||
VERSION = "0.4.0" # Semantic version
|
||||
VERSION = "0.5.2" # Semantic version
|
||||
|
||||
# AUTH_SECRET should be set as a secret, not a var
|
||||
# Run: npx wrangler secret put AUTH_SECRET
|
||||
|
||||
Reference in New Issue
Block a user