fix(clients): reject dot names and recover legacy clients (#7062)

Reject reserved dot-segment client names and recover legacy records through query aliases. Preserve token scopes and path identity precedence, and update the generated API reference.
This commit is contained in:
Benjamin Mitchell
2026-11-05 09:02:39 -08:00
committed by GitHub
parent 2541080c91
commit cd176faf4e
29 changed files with 895 additions and 17 deletions
+1
View File
@@ -876,6 +876,7 @@
"subIdDesc": "يُستخدم أيضًا كرمز دعوة لهذا العميل في بوت تيليجرام: من يرسله إلى البوت يُربط بهذا العميل. اجعله طويلًا وعشوائيًا — فالمعرّف القصير أو السهل التخمين قد يستولي عليه شخص آخر.",
"online": "متصل",
"email": "البريد",
"emailReservedName": "لا يمكن أن يكون اسم العميل «.» أو «..» فقط",
"emailInvalidChars": "لا يمكن أن يحتوي البريد الإلكتروني على مسافات أو '/' أو '\\' أو أحرف تحكم",
"subIdInvalidChars": "لا يمكن أن يحتوي معرّف الاشتراك على مسافات أو '/' أو '\\' أو أحرف تحكم",
"group": "المجموعة",
+1
View File
@@ -876,6 +876,7 @@
"subIdDesc": "Also works as this client's Telegram bot invite code: whoever sends it to the bot is linked to this client. Keep it long and random — a short or guessable ID can be claimed by someone else.",
"online": "Online",
"email": "Email",
"emailReservedName": "Client name cannot be exactly \".\" or \"..\"",
"emailInvalidChars": "Email cannot contain spaces, '/', '\\', or control characters",
"subIdInvalidChars": "Subscription ID cannot contain spaces, '/', '\\', or control characters",
"group": "Group",
+1
View File
@@ -876,6 +876,7 @@
"subIdDesc": "También sirve como código de invitación de este cliente en el bot de Telegram: quien lo envíe al bot queda vinculado a este cliente. Mantenlo largo y aleatorio: un ID corto o fácil de adivinar puede ser reclamado por otra persona.",
"online": "En línea",
"email": "Email",
"emailReservedName": "El nombre del cliente no puede ser exactamente \".\" o \"..\"",
"emailInvalidChars": "El correo no puede contener espacios, '/', '\\' ni caracteres de control",
"subIdInvalidChars": "El ID de suscripción no puede contener espacios, '/', '\\' ni caracteres de control",
"group": "Grupo",
+1
View File
@@ -876,6 +876,7 @@
"subIdDesc": "این شناسه، کد دعوت این کاربر در ربات تلگرام هم هست: هر کسی آن را به ربات بفرستد به این کاربر متصل می‌شود. آن را طولانی و تصادفی نگه دارید؛ شناسهٔ کوتاه یا قابل حدس ممکن است توسط شخص دیگری تصاحب شود.",
"online": "آنلاین",
"email": "ایمیل",
"emailReservedName": "نام کاربر نمی‌تواند فقط «.» یا «..» باشد",
"emailInvalidChars": "ایمیل نمی‌تواند شامل فاصله، '/'، '\\' یا کاراکترهای کنترلی باشد",
"subIdInvalidChars": "شناسه‌ی اشتراک نمی‌تواند شامل فاصله، '/'، '\\' یا کاراکترهای کنترلی باشد",
"group": "گروه",
+1
View File
@@ -876,6 +876,7 @@
"subIdDesc": "Juga berfungsi sebagai kode undangan bot Telegram untuk klien ini: siapa pun yang mengirimkannya ke bot akan ditautkan ke klien ini. Buat panjang dan acak — ID yang pendek atau mudah ditebak bisa diklaim orang lain.",
"online": "Online",
"email": "Email",
"emailReservedName": "Nama klien tidak boleh hanya \".\" atau \"..\"",
"emailInvalidChars": "Email tidak boleh mengandung spasi, '/', '\\', atau karakter kontrol",
"subIdInvalidChars": "ID langganan tidak boleh mengandung spasi, '/', '\\', atau karakter kontrol",
"group": "Grup",
+1
View File
@@ -876,6 +876,7 @@
"subIdDesc": "このクライアントの Telegram ボット招待コードとしても使われます。ボットに送信した人がこのクライアントに紐付けられます。長くランダムな値にしてください。短い、または推測しやすい ID は他人に取得されるおそれがあります。",
"online": "オンライン",
"email": "メール",
"emailReservedName": "クライアント名を「.」または「..」だけにすることはできません",
"emailInvalidChars": "メールアドレスにスペース、'/'、'\\'、または制御文字を含めることはできません",
"subIdInvalidChars": "サブスクリプションIDにスペース、'/'、'\\'、または制御文字を含めることはできません",
"group": "グループ",
+1
View File
@@ -876,6 +876,7 @@
"subIdDesc": "Também funciona como código de convite deste cliente no bot do Telegram: quem enviá-lo ao bot fica vinculado a este cliente. Mantenha-o longo e aleatório — um ID curto ou fácil de adivinhar pode ser reivindicado por outra pessoa.",
"online": "Online",
"email": "Email",
"emailReservedName": "O nome do cliente não pode ser exatamente \".\" ou \"..\"",
"emailInvalidChars": "O e-mail não pode conter espaços, '/', '\\' ou caracteres de controle",
"subIdInvalidChars": "O ID de assinatura não pode conter espaços, '/', '\\' ou caracteres de controle",
"group": "Grupo",
+1
View File
@@ -876,6 +876,7 @@
"subIdDesc": "Также служит кодом приглашения этого клиента в Telegram-боте: тот, кто отправит его боту, будет привязан к этому клиенту. Используйте длинное случайное значение — короткий или легко угадываемый ID может присвоить кто-то другой.",
"online": "В сети",
"email": "Email",
"emailReservedName": "Имя клиента не может состоять только из «.» или «..»",
"emailInvalidChars": "Email не может содержать пробелы, '/', '\\' или управляющие символы",
"subIdInvalidChars": "ID подписки не может содержать пробелы, '/', '\\' или управляющие символы",
"group": "Группа",
+1
View File
@@ -876,6 +876,7 @@
"subIdDesc": "Slúži aj ako pozývací kód klienta do Telegram bota. Kto ho pošle botovi, priradí sa k tomuto klientovi. Použite dlhé náhodné ID. Krátke alebo odhadnuteľné ID si môže privlastniť niekto iný.",
"online": "Online",
"email": "Názov klienta",
"emailReservedName": "Názov klienta nesmie byť presne \".\" ani \"..\"",
"emailInvalidChars": "Názov klienta nesmie obsahovať medzery, '/', '\\' ani riadiace znaky",
"subIdInvalidChars": "ID odberu nesmie obsahovať medzery, '/', '\\' ani riadiace znaky",
"group": "Skupina",
+1
View File
@@ -876,6 +876,7 @@
"subIdDesc": "Bu istemcinin Telegram botu davet kodu olarak da kullanılır: bunu bota gönderen kişi bu istemciye bağlanır. Uzun ve rastgele tutun — kısa veya tahmin edilebilir bir kimlik başkası tarafından sahiplenilebilir.",
"online": "Çevrimiçi",
"email": "E-posta",
"emailReservedName": "İstemci adı yalnızca \".\" veya \"..\" olamaz",
"emailInvalidChars": "E-posta boşluk, '/', '\\' veya kontrol karakterleri içeremez",
"subIdInvalidChars": "Abonelik kimliği boşluk, '/', '\\' veya kontrol karakterleri içeremez",
"group": "Grup",
+1
View File
@@ -876,6 +876,7 @@
"subIdDesc": "Також слугує кодом запрошення цього клієнта в Telegram-боті: той, хто надішле його боту, буде прив'язаний до цього клієнта. Використовуйте довге випадкове значення — короткий або легко вгадуваний ID може привласнити хтось інший.",
"online": "У мережі",
"email": "Email",
"emailReservedName": "Ім’я клієнта не може складатися лише з «.» або «..»",
"emailInvalidChars": "Email не може містити пробіли, '/', '\\' або керуючі символи",
"subIdInvalidChars": "ID підписки не може містити пробіли, '/', '\\' або керуючі символи",
"group": "Група",
+1
View File
@@ -876,6 +876,7 @@
"subIdDesc": "Cũng được dùng làm mã mời bot Telegram của client này: ai gửi mã này cho bot sẽ được liên kết với client. Hãy để mã dài và ngẫu nhiên — ID ngắn hoặc dễ đoán có thể bị người khác chiếm.",
"online": "Trực tuyến",
"email": "Email",
"emailReservedName": "Tên máy khách không được chỉ là \".\" hoặc \"..\"",
"emailInvalidChars": "Email không được chứa khoảng trắng, '/', '\\' hoặc ký tự điều khiển",
"subIdInvalidChars": "ID đăng ký không được chứa khoảng trắng, '/', '\\' hoặc ký tự điều khiển",
"group": "Nhóm",
+1
View File
@@ -876,6 +876,7 @@
"subIdDesc": "同时用作该客户端的 Telegram 机器人邀请码:任何人将其发送给机器人即会绑定到此客户端。请保持足够长且随机——过短或易猜的 ID 可能被他人抢先绑定。",
"online": "在线",
"email": "邮箱",
"emailReservedName": "客户端名称不能仅为“.”或“..”",
"emailInvalidChars": "邮箱不能包含空格、'/'、'\\' 或控制字符",
"subIdInvalidChars": "订阅 ID 不能包含空格、'/'、'\\' 或控制字符",
"group": "分组",
+1
View File
@@ -876,6 +876,7 @@
"subIdDesc": "同時作為此用戶端的 Telegram 機器人邀請碼:任何人將其傳送給機器人即會綁定到此用戶端。請保持足夠長且隨機——過短或容易猜到的 ID 可能被他人搶先綁定。",
"online": "上線",
"email": "電子郵件",
"emailReservedName": "用戶端名稱不能僅為「.」或「..」",
"emailInvalidChars": "電子郵件不能包含空格、'/'、'\\' 或控制字元",
"subIdInvalidChars": "訂閱 ID 不能包含空格、'/'、'\\' 或控制字元",
"group": "群組",