validate Telegram bot token in production
This commit is contained in:
@@ -1958,3 +1958,9 @@ Doğrulama: 284 test geçti, üretim derlemesi başarılı.
|
||||
Resend gönderiminden önce alıcılar (en fazla 50 ve metin), konu ve HTML/metin gövdesi tip/uzunluk kontrollerinden geçiyor; trim edilmiş değerler sağlayıcıya gönderiliyor.
|
||||
|
||||
Doğrulama: 284 test geçti, üretim derlemesi başarılı.
|
||||
|
||||
### 2026-09-06 · Telegram üretim token doğrulaması
|
||||
|
||||
Telegram kanalı üretimde artık yalnızca BotFather biçimindeki tokenlarla etkin görünüyor; eksik veya placeholder değerler entegrasyonu yanlışlıkla aktif göstermiyor. Test/geliştirme ortamlarında sentetik tokenlarla mevcut entegrasyon testleri korunuyor.
|
||||
|
||||
Doğrulama: 285 test geçti, üretim derlemesi başarılı.
|
||||
|
||||
+5
-1
@@ -10,7 +10,11 @@
|
||||
const API = () => `https://api.telegram.org/bot${process.env.TELEGRAM_BOT_TOKEN}`;
|
||||
|
||||
export function telegramConfigured() {
|
||||
return Boolean(process.env.TELEGRAM_BOT_TOKEN);
|
||||
const token = String(process.env.TELEGRAM_BOT_TOKEN || '').trim();
|
||||
if (!token) return false;
|
||||
// Üretimde placeholder veya hatalı token ile kanalın aktif görünmesini engelle.
|
||||
if (process.env.NODE_ENV === 'production') return /^\d{6,}:[A-Za-z0-9_-]{20,}$/.test(token);
|
||||
return true;
|
||||
}
|
||||
|
||||
let botOnbellek = { ad: null, zaman: 0 };
|
||||
|
||||
@@ -4,13 +4,27 @@ import {mkdtempSync,rmSync} from 'node:fs';
|
||||
import {join} from 'node:path';
|
||||
import {tmpdir} from 'node:os';
|
||||
import {createTelegramLinker} from '../server/telegram-link.mjs';
|
||||
import {kodIleBagla} from '../server/telegram.mjs';
|
||||
import {kodIleBagla,telegramConfigured} from '../server/telegram.mjs';
|
||||
const directory=mkdtempSync(join(tmpdir(),'telegram-link-'));
|
||||
process.env.IHALEIST_USER_DATA_DIR=directory;
|
||||
const store=await import('../server/user-store.mjs');
|
||||
after(()=>rmSync(directory,{recursive:true,force:true}));
|
||||
const found={chatId:'123',ad:'Test'};
|
||||
|
||||
test('production rejects malformed Telegram bot token values',()=>{
|
||||
const oldNode=process.env.NODE_ENV,oldToken=process.env.TELEGRAM_BOT_TOKEN;
|
||||
process.env.NODE_ENV='production';
|
||||
try {
|
||||
process.env.TELEGRAM_BOT_TOKEN='synthetic-token';
|
||||
assert.equal(telegramConfigured(),false);
|
||||
process.env.TELEGRAM_BOT_TOKEN='123456:abcdefghijklmnopqrstuvwxyz';
|
||||
assert.equal(telegramConfigured(),true);
|
||||
} finally {
|
||||
if(oldNode===undefined)delete process.env.NODE_ENV;else process.env.NODE_ENV=oldNode;
|
||||
if(oldToken===undefined)delete process.env.TELEGRAM_BOT_TOKEN;else process.env.TELEGRAM_BOT_TOKEN=oldToken;
|
||||
}
|
||||
});
|
||||
|
||||
test('server challenge belongs to its account, expires, rotates and is consumed once',async()=>{
|
||||
let time=1000000;const linker=createTelegramLinker(store,()=>time),email='link@example.test';
|
||||
const first=linker.issue(email);assert.match(first.kod,/^[a-f0-9]{48}$/);
|
||||
|
||||
Reference in New Issue
Block a user