Neler yeni

Uneralircd 5 Neler Yeni ?

admin

Yönetici
Moderatör
Katılım
23 Nis 2019
Mesajlar
28
Tepkime puanı
3
Konum
Türkiye
Unrealircd 5 Neler Yeni ?

Yenilikler aşagıda sıraladığım gibi bir çok yenilik barındiriyor unrealircd 5

Son kullanıcılara yapılan en görünür değişiklik kanal geçmişidir. Gottem'in çeşitli modülleri entegre edildi ve geliştirildi.
+ P kanallarının ve * LINES kanal ayarları bir veritabanına kaydedilir ve başlangıçta geri yüklenir (sırasıyla 'channeldb' ve 'tkldb' aracılığıyla).
Kanal modu + L hafif bir anlam değişikliğine sahiptir, mevcut taşkın koruma modu (+ f) tekrarlanan mesajları engellemek için yeni bir türe ve yeni bir bırakma işlemine sahiptir. Birkaç uzatılmış yasak da eklenmiştir (p ve p).
IRCOps artık / ELINE komutu ile yasak istisnaları ekleme olanağına sahip.
Gelişmiş yöneticiler değişkenleri tanımlayabileceğiniz ve bunları daha sonra yapılandırma dosyasında kullanabileceğiniz daha dinamik yapılandırma seçeneklerini kullanabilir.
Son olarak, hız iyileştirmeleri yapıldı, daha iyi varsayılanlar kullanıyoruz ve spam botlarına karşı daha fazla önlem ve seçenek ekledik.
Kaputun altında bir çok kaynak kod değiştirildi ve temizlendi.

geliştirmeleri:
JOIN ve PRIVMSG gibi protokol mesajlarında ek bilgi iletmemize izin veren sunucu tarafından üretilen mesaj etiketlerini destekler. Şu anda uygulanan ve izin verilen ileti etiketleri:
hesap: kullanıcının kullandığı hizmetler hesabını bildir
msgstr: Her mesaja benzersiz bir mesaj kimliği ata
time: Her mesaja bir zaman etiketi atayın.
Son ikisi esas olarak tarih oynatma içindir.
Müşterilerin, başka şeylerin yanı sıra, gönderdiğiniz mesajın herhangi bir şekilde değiştirilip değiştirilmediğini görmelerine yardımcı olan IRCv3 "echo-message" desteği, örneğin: sansürlü, renkten sıyrılmış vb
Bazı diğer özellikler için gerekli olan IRCv3 "BATCH" desteği.
Kanal modu + H ayarlandığında kanal geçmişinin kaydedilmesi ve oynatılması.
Sözdizimi şöyledir: + H, maksimum satır-kayıt: dakika cinsinden maksimum zaman.
Örneğin: + H 50: 1440, son 50 mesajın saklanacağı ve hiçbir mesajın 1440 dakikadan (1 gün) daha uzun saklanmayacağı anlamına gelir.
Kanal geçmişi daha sonra böyle bir kanala katılırken oynatılır, ancak akılda tutulması gereken iki şey vardır:
İstemci 'sunucu zamanı' CAP'yi desteklemelidir, aksi takdirde geçmiş gösterilmez. Herhangi bir modern IRC istemcisi bunu destekler.
Varsayılan olarak en fazla 15 satır birleştirme sırasında oynatılır
En fazla 15 satıra katılma izninin nedeni, tekrar tekrar katılırsanız ve kullanıcıların ekranını çok fazla su basmamanız (istenmeyen) için bunun can sıkıcı olabileceğidir. Gelecekte, müşterilerin katılımı göndermek yerine geçmişi "alması" için bir mekanizmayı destekleyeceğiz, böylece + H kanalı modunda yapılandırılan satır ve zamana kadar 15 satırdan fazlasını alabilirler.
Oynanan tam hat sayısını ve + H için geçerli olan tüm limitleri set :: history :: channel ile yapılandırabilirsiniz .
Geçmişi kaydetmek ve almak için şu anda aşağıdaki seçeneklere sahibiz:
history_backend_mem: Kanal geçmişi hafızada saklanır. Bu çok hızlı ancak aynı zamanda yeniden başlatma sırasında tarihin kaybolduğu anlamına geliyor.
history_backend_null: Kanal geçmişini saklamayın. Bu, geçmişi saklamanın gereksiz olduğu bir hub server gibi üzerinde kullanıcı bulunmayan sunuculara yüklemek için faydalı olabilir.
Gördüğünüz gibi şu anda hiçbir 'disk' arka ucu yok. Ancak, gelecekte daha fazla seçenek eklenebilir.
Ayrıca, 3. parti modüllerinin de geçmiş arka uçlar ekleyebileceğini unutmayın.
New / ELINE komutu ile yasaklama istisnaları için destek. Bu,
normal yasaklar (KLINE / GLINE / ZLINE / etc) için istisnalar eklemenize izin verir , aynı zamanda
bağlantı azaltma ve kara liste kontrolü için.
Daha fazla bilgi için, IRC istemcinize IRCOp olarak / ELINE yazmanız yeterlidir.
Kanal modu + L şimdi reddedilen herhangi bir birleşme için devreye giriyor, bu nedenle sadece + l için değil + b, + i, + O, + z, + R ve + k için de geçerli.
Örneğin, kanal + L # insecure ve ayrıca + z ise, güvensiz bir kullanıcı katılmak istediğinde, #insecure'a yönlendirilir.
Yeni yasaklama, yasaklama eşleşirse kullanıcıları belirtilen kanala iletmek için genişletildi. Örnek: + b ~ f: #badisp: *! * @ *. İsp.org
Kanal modu + f şimdi 'd' eylemine sahip: mesajı bırak. Bu, kullanıcıya bir hata mesajı gönderir ve mesajı kanalda göstermez ancak başka bir şey yapmaz (tekme veya yasak yok).
Örnek: + f [5t # d]: 15, kullanıcı başına 15 saniyede maksimum 5 mesaj göndermeyi sınırlayacak ve bu sınırın üstünde gönderilen mesajları bırakacaktır.
Kanal kipi + f şimdi tekrarlanan çizgileri önlemek için 'r' taşkın tipine sahip. Bu, mevcut mesajı son mesajla ve kullanıcının kanala göndermesinden önceki mesajla karşılaştırır. Tekrar ise, kullanıcı tekme basabilir (varsayılan işlem), mesaj bırakılabilir ('d') veya kullanıcı yasaklanabilir ('b'). Örnek: + f [1r # d]: 15. Tekrarlanan 1 satıra izin vermek, ancak 2 değil izin vermek istiyorsanız şunu kullanın: + f [2r # d]: 15
Yeni modül tkldb (varsayılan olarak yüklenir): tüm * LINES ve spam filtreleri şimdi yeniden başlatmalar arasında kaydedilir. Artık bunun için hizmetlere gerek yok.
Yeni modül channeldb (varsayılan olarak yüklenir): + P (kalıcı) kanalların konu, modları, yasakları vb. Dahil olmak üzere tüm kanal ayarlarını kaydeder ve geri yükler.
"Bu kullanıcının ne kadar süre bağlandığı", "bu kullanıcı kayıtlı (hizmet hesabı var)" gibi ölçütler temelinde herhangi bir IRC komutunu kısıtlamanıza izin veren yeni modül restrict komutları.
Example.conf şimdi yapılandırmayla birlikte gönderilir LIST'i ilk 60 saniyede devre dışı bırakmak ve ilk 120 saniyede INVITE özelliğini devre dışı bırakmak için
Spambot sorunları yaşıyorsanız, bu düzenlemede değişiklik yapmak size yardımcı olabilir. Set :: restrict-commands bölümüne bakın .
Yeni modül rmtkl (varsayılan olarak yüklenir): bu, GLINE'ler gibi TKL'leri / RMTKL komutu ile kolayca kaldırmanıza olanak sağlar.
Yeni modül webredir. Oldukça bazı kişiler IRCd'lerini 443 veya 80 numaralı bağlantı noktasında çalıştırırlar, böylece kullanıcıları güvenlik duvarı kısıtlamalarını engelleyebilir. Böyle bir durumda, bu modülle, bazı kullanıcıların IRC sunucu adınızı tarayıcılarına girmesi durumunda bir HTTP yönlendirme gönderebilirsiniz. Örneğin https://irc.example.org/ yönlendirme yapılabilir https://www.example.org/
bakın https://www.unrealircd.org/docs/Set_blo ... Redir :: url
İtibar ve kontrol modülleri şimdi varsayılan olarak yüklenmiştir.
Bunun bir hatırlatıcısı olarak, kullanıcılarınızın daha önce görülmemiş (veya yalnızca kısa bir süre için) IP'leri için "bilinen kullanıcılar (bilinen IP'ler)" ve "bilinmeyen IP'ler" olarak kullanıcılarınızı sınıflandırmasıdır. Ardından, bir bağlantı taşması olduğunda, bilinmeyen / yeni IP adresleri dakikada 20 bağlantıda azaltılır, bilinen kullanıcılar her zaman içeri girebilir. Daha fazla bilgi için, bkz: https://www.unrealircd.org/docs/Connthrottle
@define ve @IF üzerinden daha dinamik yapılandırma için destek ekleyin. Bu çoğunlukla uzman kullanıcılar içindir, özellikle aynı konfigürasyon dosyasını birkaç sunucuda paylaşan kullanıcılar.

Yeni özellikler:

Yeni extban ~ p (+ b ~ p: *! * @ *. Nl) PART ve QUIT mesajlarını gizlemek için.
Artık bir sunucu zaman aşımına uğramadan önce bile yanıt vermediğinde bir uyarı göreceksiniz.
PING üzerine bir PONG yanıtını beklemek ne kadar süre set :: ping-alert ile değiştirilebilir ve varsayılan olarak 15 saniyedir.
Uyarıyı sık sık görürseniz, bağlantınız kesikli olur.
Yeni ayar grubu ekleyin: kanal-mesajlarının sunucu linklerinden ne zaman gönderileceğini tanımlayan yayın-kanal mesajları.
Varsayılan ayar, hemen hemen herkes için doğru ayar olan 'auto'dur.
Yeni seçenek kümesi ekle :: yerine-değiştir-yerine-yerine-değiştir-değiştir:
renk sıyırma veya bir kelimeyi sansürleme gibi kanal kısıtlamaları nedeniyle bir QUIT mesajı değiştirildiğinde, normal olarak QUIT mesajını değiştiririz. Bunun TÜM kanallar üzerinde bir etkisi var, sadece kısıtlamaları uygulayana değil. Bunun en iyi tradeoff olduğunu düşünüyor olsak da, artık böyle bir durumda QUIT'i bir PART olarak değiştirecek olan (varsayılan olarak kapalı) bu yeni seçenek de var, bu nedenle kısıtlamaları olmayan diğer kanallar (örneğin: -S ve -G) orijinal ÇIKIŞ mesajını hala görebilir.
Değişen:
"Tkl hariç" bloğuna şimdi "ban hariç" adı verilir. Bir ban hariç {} bloğunda hiçbir tür belirtilmezse, girişi kline, gline, zline, gzline ve shun'dan muaf tutarız.
Windows: Artık Windows 7 veya daha yeni bir 64 bit sürümü gerekiyor. Yeni program yolu: C: \ Program Files \ UnrealIRCd 5 ve ikili dosyalar yeni bir alt dizine taşındı: bin \
Modüller m_ ön eklerini kaybetti, bu nedenle örneğin m_map şimdi sadece harita. Ayrıca kapaktaki modüller şimdi doğrudan modüller halindedir.
Daha önce PERM (kalıcı) olan daha fazla modül şimdi anında boşaltılabilir ve yeniden yüklenebilir. Bu, bir hata durumunda yeniden başlatmadan daha fazla "düzeltme" yapılmasına ve çalışma zamanında yöneticiler için daha fazla kontrol yapılmasına olanak sağlar. Şimdi 173'ten sadece <5 modül kalıcıdır.
Kullanıcı modu + T şimdi kanal CTCP'lerini de engelliyor.
set :: mode-on-join, şimdi varsayılan olarak + nt'dir.
Authprompt modülü şimdi varsayılan olarak yüklenmiştir. Bu, eğer birine yumuşak bir çizgi çizerseniz (örneğin: KLINE %*@*.badisp), kullanıcı SASL'siz bile hizmetleri doğrulamak ve kimliğini doğruladıysa yasağı atlamak için bir şans olur.
WHOX modülü şimdi varsayılan olarak kullanılmaktadır. Önceden isteğe bağlıydı.
WHOX, "WHO" çıktısını geliştirerek, birinin kullandığı hizmetler hesabı gibi IRC müşterilerine ek bilgi sağlar.
Standart WHO'dan daha evrenseldir. Ne yazık ki bu aynı zamanda WHO sözdiziminin daha az mantıklı bir şeye değiştirildiği anlamına gelir.
Birçok yerde "SSL" terimi "SSL / TLS" veya "TLS" olarak değiştirildi.
Yapılandırma öğeleri (örneğin: set :: ssl to set :: tls) de yeniden adlandırılmış ve böylece dizinleri var (örneğin: conf / ssl - conf / tls).
Eski yapılandırma adları hala çalışıyor ve şu anda herhangi bir uyarıyı yükseltmiyor. Ayrıca, * NIX'te varolan bir yüklemeyi yükseltirken, conf / tls dizini, Let's Encrypt sertifika komut dosyalarını bozmayacak şekilde conf / ssl'ye bağlanacaktır.
Şimdi en az bir açık SSL / TLS portuna sahip olmak zorunlu, aksi takdirde UnrealIRCd önyüklemeyi reddedecek. Daha önce bu bir uyarıydı.
IRCOps şimdi set :: plaintext-policy :: oper varsayılan ayarı şimdi 'inkar' olduğundan, işlem yapmak için SSL / TLS kullanması gerekir.
Set :: modası geçmiş-tls-policy :: oper ve set :: modası geçmiş-tls-policy :: sunucu şimdi 'inkar', çünkü tüm ircops ve sunucular makul SSL / TLS protokollerini ve şifrelerini kullanmalı.
Üretilen sertifikalı varsayılan sertifika RSA 4096 bit'ten Elliptic Curve Cryptography "384r1" olarak değiştirildi.
Bu, aynı miktarda güvenlik sağlar ancak daha yüksek hızda. Bu yalnızca varsayılan kendinden imzalı sertifikayı etkiler. RSA sertifikalarını hala iyi kullanabilirsiniz.
Bir RSA sertifikası kullanıyorsanız, şimdi en az 2048 bit olmasını istiyoruz, aksi takdirde UnrealIRCd önyüklemeyi reddedecektir.
Eşleştirme allow {} bloklarına eşleme yaparken, eğer şifre eşleşmediyse veya şifre belirtilmediyse şimdi her zaman bir sonraki bloğa (varsa) devam ediyoruz. Başka bir deyişle, allow :: options :: nopasscont artık varsayılan ve biz de bir :: wrongpasscont varmış gibi davranıyoruz.
Bütün snomasks artık sadece oper. Daha önce bazıları kafa karıştırıcı değildi ve bilgi sızıntılarına yol açabiliyordu. Ayrıca tuhaf set :: snomask-on-connect buna göre kaldırıldı.
IRCd şimdi karma tablo saldırılarına karşı dayanıklı karma tabloları kullanıyor. Ayrıca, hash tablolarının takma adlar vb.
VERSION'daki sunucu seçenekleri (örneğin: Fhin6OoEMR3) artık normal kullanıcılara gösterilmez. Bugünlerde pek bir şey ifade etmiyorlar.
Şimdi sistem libs için varsayılan (örneğin: --with-system-pcre2 varsayılır)
Küçük sorunlar düzeltildi:
Özel bir OpenSSL / LibreSSL yolu belirlemek şimdi çalışıyor
kaldırıldı:
Genişletilmiş yasak ~ R (kayıtlı nick): Bu kayıtlı kullanıcılar ile eşleşmenin eski yöntemiydi. Herkes bunun yerine ~ a (hizmet hesabı) kullanmalıdır.
Eski TRE 'posix' regex yöntemi kaldırıldı, çünkü TRE kütüphanesi on yıldan fazla bir süredir kullanılmıyor ve birçok hata içeriyor. (UnrealIRCd 4.2.3'te zaten kullanımdan kaldırılmıştı). Bunun yerine, modern PCRE2 regex motorunu kullanan 'regex' tipini kullanın.
Timesync desteği kaldırıldı. Bunun yerine işletim sistemi zaman senkronizasyonunuzu kullanın. (Timesync’in 2018’de varsayılan olarak devre dışı bırakıldığını unutmayın)
Zaman ofsetlerini TSCTL OFFSET ve TSCTL SVSTIME ile değiştirmek artık desteklenmiyor. İşletim sistemi zaman senkronizasyonunuzu kullanın (NTP!). TSCTL üzerinden yapılan ayarlamalar yeterince doğru değil.
'Nopost' modülü, artık herhangi bir faydalı amaca hizmet etmediği için çıkarıldı. UnrealIRCd zaten bu tür saldırılara karşı ping çerezleri ile korunmaktadır (set :: ping-çerez, varsayılan olarak etkindir).
Geliştiriciler:
ÖNEMLİ: UnrealIRCd alfa olduğu sürece, 3. parti modül yazarlarına henüz modüllerinizi taşımaya başlamalarını önermiyoruz. Tabii ki yapabilirsiniz, ancak modül API'sinin hala değişme olasılığı çok yüksektir, bu yüzden bir sonraki alfa sürümünde tekrar belirli (diğer) değişiklikler yapmanız gerekebilir. Beta1 kadar beklemek en iyisidir. Uyarıldın

ModuleHeader yapısı değiştirildi. Bir yazar alanı eklendi, son alan (her zaman NULL idi) kaldırıldı ve şimdi sürümün bir rakamla başlamasını sağlamak için ad ve sürüm alanları üzerinde kısıtlamalar
var. Birçok src'den birine bakın. İlham almak için /modules/*.c. Ayrıca, son alan için "unrealircd-5" kullandığınızdan emin olun.
UnrealIRCd 5'te geliştirme sırasında, --enable-asan, daha fazla hata yakalamak için varsayılan olarak AÇIK'tır. Bu ayrıca 10 kata kadar yavaşlama ve daha fazla hafıza kullanımı anlamına gelir. 5.0.0'a ulaştığımızda bu durum kapanacak.
Şimdi kendi BuildBot altyapımızı kullanıyoruz, böylece Travis-CI ve AppVeyor kaldırıldı.
Şimdi yeni bir test çerçevesi kullanıyoruz.
Yeni bir mesaj gönderildiğinde çağrılması gereken yeni işlev new_message () veya en azından tüm kanal olayları için. 'Hesap', 'msgstr', 'saat' gibi ileti etiketlerini ekler (veya miras alır).
Gönderme işlevlerinin çoğu şimdi bunlarla sınırlı olmamak üzere ekstra bir MessageTag * mtags parametresi alır: sendto_one () ve sendto_server ().
Tüm kanal komutları tarafından kullanılan yeni tek birleşik sendto_channel () ve sendto_local_common_channels () işlevleri.
Nümerikler şimdi sendnumeric () kullanılarak gönderilmelidir. İhtiyacınız olması durumunda sendnumericfmt () biçiminde bir dize sürümü de vardır.
Çeşitli kancalardaki parametreler değişmiştir. Birçoğunda artık ekstra bir MessageTag * mtags parametresi var. Bazen başka değişiklikler de olabilir, örneğin HOOKTYPE_CHANMSG şimdi 4 ekstra parametreye sahiptir.
Eğer sendto_server () gibi bir printf benzeri işlevde zaman damgası gönderirseniz,% lld kullandığınızdan ve zaman damgasını 'uzun' olacak şekilde kullandığınızdan emin olun, böylece * NIX ve Windows ile uyumludur.
Örnek: sendnotice (sptr, "Zaman damgası% lld", (uzun uzun) ts);
Yeni HOOKTYPE_IS_HANDSHAKE_FINISHED. Bir modül orada 0 döndürürse, register_user () işlevi çağrılmaz ve kullanıcı
çevrimiçi duruma gelmez (henüz). Bu CAP ve diğer bazı şeyler tarafından kullanılır. Modülünüzün kayıt aşamasında bir kullanıcıyı "tutması" gerekiyorsa faydalı olabilir.
İs_module_loaded () işlevi artık "usermodes / noctcp" gibi göreceli bir yol izlemektedir, çünkü sadece "ctcp" ile bir kullanıcı usermodes / noctcp ve chanmodes / noctcp arasındaki farkı görememiştir.
CHFL_CHANPROT şimdi CHFL_CHANADMIN, is_chanprot () şimdi is_chanadmin ()
Artık tüm karma tabloları, karma tablo saldırılarına karşı dayanıklı bir karma işlevi olan SipHash kullanıyor. Bir modül dev olarak, herhangi bir yerde herhangi bir karma tablo kullanıyorsanız (not: bu oldukça nadirdir), o zaman işlevlerimizi kullanmanız önerilir, src / hash.c'deki siphash () ve siphash_nocase () işlevlerine bakın.
Rastgele jeneratör ChaCha (daha modern) kullanacak şekilde güncellendi.
Artık LoadPersistentPointer () ve SavePersistentPointer () kullanarak işaretçileri ve tamsayıları vb.
Örnek olarak, bunun nasıl kullanılabileceğini görmek için src / module / chanmodes / floodprot.c'ye bakın. Yeniden yapılanmalar arasında hiçbir yapı veya tür değişikliği olamayacağını unutmayın.
Yeni ModData türleri: MODDATA_LOCALVAR ve MODDA_GLOBALVAR. Bunlar, yalnızca değişken adıyla yerel olarak veya genel olarak tanımlanmış ve herhangi bir kullanıcı / kanala bağlı olmayan ayar veya şeylerdir.
Çeşitli dosyalar yeniden adlandırıldı. Daha önce belirtildiği gibi, m_ öneki, src / module / m _ * 'e düşürüldü. Benzer şekilde s_ öneki, artık bir anlamı olmadığından src / s _ *. C içerisinde bırakılmıştır. Ayrıca bazı dosyalar silinmiş ve başka bir yere entegre edilmiş ya da gerçek anlamlarını daha iyi yansıtan bir isme sahip olacak şekilde yeniden adlandırılmıştır.
Sunucu protokolü:
Sunucuda UnrealIRCd 4 ve UnrealIRCd 5 arasında sunucu protokolüne şaşırtıcı bir şekilde küçük değişiklikler yapıldı:
"PROTOCTL MTAGS", sunucunun mesaj etiketlerini kullanabildiğini ve sunucunun 4K satırlarıyla başa çıkabileceğini belirtir. (Mesaj etiketinin sıradan olmayan bölümünün hala 512 bayt ile sınırlı olduğunu unutmayın).
Şimdi SID, NICKv2, TKLEXT2, vb. Gibi en azından UnrealIRCd 4 benzeri protokol yetenekleri olduğunu varsayıyoruz. Daha kesin bilgi takip edecek.
Özellikle, bu UnrealIRCd 3.2.x'in 5.x ile bağlantısı olmayacağı anlamına gelir.
 
Üst