Superuser do

Üstün
Katılım
16 Temmuz 2026
Mesajlar
859
Makaleler
4
Çözümler
5
Beğeniler
698
Selamlar dostlar,

Kick'te birden fazla kanalda moderatörlük yaparken aynı kullanıcıyı her kanalda tek tek banlamak oldukça zahmetli olabiliyor. Bu sorunu çözmek için AI Assist desteğiyle geliştirdiğim Magnetosphere adlı açık kaynaklı tarayıcı eklentisini sizlerle paylaşmak istiyorum.

MAGNETOSPHERE NEDİR?

Magnetosphere, birden fazla Kick kanalını yöneten moderatörler için ortak bir ban listesi sunuyor. Bir trolü veya spam botunu her kanalda ayrı ayrı banlamak yerine kullanıcı adını bir kez girerek listedeki kanallarda ban işlemini tek yerden başlatabiliyorsun.

Kimin, kimi, ne zaman ve hangi nedenle banladığı da kayıt altında tutuluyor. Eklentiyi tek başına kullanabilir veya ekip arkadaşlarınla ortak bir liste oluşturabilirsin.

ÖNE ÇIKAN ÖZELLİKLER

  • Çoklu kanal desteği: Tek işlemle birden fazla kanalda kalıcı ban veya 10 dakika ile 7 gün arasında süreli uzaklaştırma.
  • Toplu ban: Kullanıcı adlarını yapıştırabilir ya da .txt, .csv ve .json dosyaları yükleyebilirsin.
  • Arka planda işlem: Uzun listeler sıraya alınır; paneli kapatsan bile işlem devam eder.
  • Ortak ban geçmişi: Kimin, kimi, ne zaman, neden banladığını ve işlemin hangi kanalda başarılı olduğunu görebilirsin.
  • Tekrar deneme ve geri alma: Başarısız işlemleri yeniden deneyebilir, banları tüm kanallarda tek işlemle kaldırabilirsin.
  • Hızlı banlama: Kick'te bir kullanıcı adını seçip sağ tıklayarak ban işlemini başlatabilirsin.
  • Ekip yönetimi: Sahip, yönetici, moderatör ve izleyici rolleriyle erişimi düzenleyebilirsin.
EKRAN GÖRÜNTÜLERİ

Banlama ekranı:
ekran-1-banla.webp


Ban geçmişi ve kanal bazında sonuçlar:

ekran-2-liste.webp


Arka plan işlem sırası:

ekran-3-sira.webp


Ekip yönetimi ve roller:

ekran-4-ekip.webp


NASIL BAŞLANIR?
  1. Eklentiyi Chrome Web Store üzerinden yükle ve Kick hesabınla giriş yap.
  2. Tek başına kullanmak için "Tek başıma başla" seçeneğini seç veya bir ekibin davet kodunu gir.
  3. Moderatörlük yaptığın kanalları ekle ve ban işlemlerini tek yerden yönet.
Not: Bir kanalda ban işleminin başarılı olması için gerekli moderasyon yetkisi gerekir. Yayıncı yetkisi paylaşımı da kanal sahibinin tercihine bağlıdır.

AÇIK KAYNAK

Magnetosphere GPL-3.0 lisansıyla yayımlanıyor. Kaynak kodunu inceleyebilir ve projeye katkıda bulunabilirsin.

LİNKLER

Chrome Web Store: Magnetosphere - Chrome Web Mağazası

GitHub / kaynak kodu: GitHub - Helyosfer/magnetosphere: Kick moderasyon ekipleri için ortak ban listesi: bir kullanıcıyı ekibin tüm kanallarında tek işlemle banla.

Gizlilik politikası: Magnetosphere Gizlilik Politikası

Destek ve geri bildirim: [email protected]

Her türlü görüş, öneri ve hata bildirimi benim için çok değerli. Deneyip yorumlarınızı paylaşırsanız sevinirim.

Not: Magnetosphere, Kick ile bağlantılı değildir ve Kick tarafından onaylanmamıştır.
 
Hocam fikir güzel ama görseller dahil tamamen vibe coded duruyor. Claude'a selam söyleyin 🫪
Hocam selamlar, eleştiri için teşekkürler.

Evet, geliştirirken yapay zekâdan (Claude) yardım aldım; bunu saklamıyorum, GitHub'daki katkıcılar listesinde de görünüyor. Hâkim olduğum diller Python ve HTML; kodun %57,9'u Python, %8,8'i HTML, yani büyük kısmını kendim okuyup denetleyebiliyorum. Arayüzde yapay zekâ izlerinin görünmesi normal: tam yığın (full stack) ya da ön yüz (frontend) tarafında, backend de kadar iyi değilim. Ama bence asıl soru bir uygulamanın "vibe coded" olup olmaması değil, ne kadar güvenli olduğu ve nelerin test edildiği. Aşağıda onu anlatıyorum.
1792004215084.webp

1792004219217.webp

Uygulama GPL-3.0 lisansıyla açık kaynak: GitHub - Helyosfer/magnetosphere: Kick moderasyon ekipleri için ortak ban listesi: bir kullanıcıyı ekibin tüm kanallarında tek işlemle banla.
Bu alanlara hâkimseniz ve bir açık ya da hata görürseniz bana iletirseniz gerçekten çok memnun olurum (güvenlik açıkları için: [email protected]).

Veriler nerede, nasıl tutuluyor?

  • Sunucu Türkiye'deki bir hosting firmasının VPS'inde çalışıyor; dışarıya yalnızca HTTPS (TLS 1.2/1.3) ile açık.
  • Tutulan veri az: Kick kullanıcı adı ve kimliği, Kick erişim tokenları ve ekip verisi (kanallar, ban listesi, roller). E-posta, şifre ya da sohbet mesajı alınmıyor; giriş Kick'in kendi sayfasında yapılıyor.
  • Kick tokenları veritabanında Fernet (AES-128-CBC + HMAC-SHA256) ile şifreli; anahtar veritabanından ve yedeklerden ayrı duruyor. Oturum anahtarlarının yalnızca SHA-256 özeti saklanıyor.
  • Sunucu kayıtlarına IP adresi, oturum anahtarı ya da token yazılmıyor.
  • Veritabanı her gece yedekleniyor; bir kopya sunucuda 14 gün, bir kopya sunucu dışında (Google Drive) 90 gün tutuluyor.
  • Kullanıcı hesabını panelden kendisi silebiliyor; silinince Kick'teki erişim de geri alınıyor.

Hangi verinin neden ve ne kadar tutulduğu: Magnetosphere Gizlilik Politikası

Yapılan testler

Sunucu, Kick API'sini taklit eden sahte bir sunucuya karşı uçtan uca test ediliyor (Python unittest; 5 test grubu, 158 doğrulama, server/test_app.py). Testler her sürümden önce hem geliştirme ortamında hem canlı sunucuda çalıştırılıyor. Öne çıkanlar:

1. OAuth yönlendirme doğrulaması:** giriş OAuth 2.1 + PKCE (S256) ve tek kullanımlık state ile yapılıyor. Dönüş adresi yalnızca izinli uzantı kimliğinin chromiumapp.org adresi olabilir; başka alan adı, izinsiz uzantı ya da satır sonu içeren adres → 400.
2. Ekipler arası yalıtım:** üye olmayan biri bir ekibin herhangi bir ucunu çağırırsa 404 döner; ekibin var olduğu bile anlaşılmaz. Başka ekibin kaydına kendi ekip yolu üzerinden erişim → 404.
3. Rol matrisi:** 4 rolün (izleyici, moderatör, yönetici, sahip) her uçtaki yetkisi ayrı ayrı test ediliyor; kontrol sunucuda yapılıyor, istemcinin düğmeyi gizlemesine güvenilmiyor.
4. Token güvenliği:** test, veritabanında düz metin token bulunmadığını doğruluyor. Geçersiz, süresi dolmuş ya da silinmiş hesaba ait oturum → 401.
5. Yetki ödünç verme koruması:** bir yayıncının token'ı, yayıncı paylaşımı kendisi açmadıkça başka birinin banında kullanılmıyor.
6. Bozuk ve kötü niyetli istekler:** 1 MB'tan büyük gövde → 413; negatif ya da sayı olmayan Content-Length → 400 (bağlantı askıda kalmıyor); 50.000 seviye iç içe JSON → 400; yanlış veri türleri → 400; beklenmeyen hata → 500, yanıtta stack trace yok.
7. Hız ve kaynak sınırları:** IP başına 10 dakikada 30 giriş, hesap başına dakikada 300 istek ve aynı anda 2 Kick işlemi; aşılınca → 429. Ekipler arası adil sıra; 3 işçi aynı anda çalışırken hiçbir kayıt iki kez işlenmiyor.
8. Regresyon kanıtı:** güvenlik testleri önceki sürüme karşı çalıştırıldı ve başarısız oldu; yani hatayı gerçekten yakalıyorlar.

Ayrıca: CORS yalnızca resmi uzantıya açık; tüm SQL sorguları parametreli; uzantıda innerHTML/eval yok, içerik textContent ile yazılıyor; uzantı izinleri yalnızca identity, storage, contextMenus. Canlı sunucuda TLS 1.0/1.1 kapalı; HSTS, nosniff, X-Frame-Options: DENY başlıkları var; .git, .env ve veritabanı dosyası dışarıdan erişilemiyor (404).

Kendiniz denemek isterseniz:

git clone GitHub - Helyosfer/magnetosphere: Kick moderasyon ekipleri için ortak ban listesi: bir kullanıcıyı ekibin tüm kanallarında tek işlemle banla.
cd magnetosphere/server
pip install -r requirements.txt
python -m unittest test_app

Testler gerçek Kick'e bağlanmaz, hesap ya da anahtar gerektirmez.

Henüz yapılmayanlar:
  • Bağımsız bir sızma testi yok.
  • Yük testi yapılmadı.
  • Otomatik testler Dummy Kick'de karşı çalışıyor; giriş, ban, ban kaldırma ve toplu içe aktarma gerçek Kick'te de denendi.

Bağımsız bir sızma testi yapamadım çünkü daha oldukça yeni bir eklenti. Bu yazıyı gören iyi bir QA revize ya da feedback verirse, seve seve eksikleri paylaşırım.

Teşekkür ederim.
 
Son düzenleme: