Skip to content

BRAMPP 2.05

Latest

Choose a tag to compare

@macitkaraca macitkaraca released this 24 Aug 18:42

Veritabanı araçları yazma işlerini gerçekten yapabiliyor — ama bir satır güncellemekle bir tabloyu düşürmek artık aynı izne bağlı değil. Yanında, alan adı işlemlerinde makineyi tutarsız bırakan dört yol.

Eklendi

  • Şema keşfi: db_tables ve db_describe. Tablolar satır sayısı ve boyutla, sütunlar tip, anahtar ve varsayılanlarıyla listeleniyor. Bir yapay zekâ istemcisinin en sık ihtiyaç duyduğu iki işlem artık ham SQL yazmayı gerektirmiyor — ve sorgu yazmadan önce sütun adlarını doğrulamak, uydurmanın yerini alıyor.
  • SQL yazma üç kademeye ayrıldı. Okuma serbest; INSERT/UPDATE/REPLACE için allow_write; DELETE/DROP/TRUNCATE/ALTER/CREATE için ayrıca allow_destructive. Bir satır güncellemek ile bir tabloyu düşürmek aynı istek değil ve aynı anahtara bağlanamaz.

Düzeltildi

  • allow_write açıldığında hiçbir denetim kalmıyordu. Çoklu ifade reddi bile yalnızca salt-okunur daldaydı, yani allow_write ile "DROP DATABASE a; DROP DATABASE b" çalışıyordu. Artık çoklu ifade her kademede reddediliyor ve SQL hiçbir bayrakla dosya sistemine ulaşamıyor — bir veritabanına yazma izni, diski okuma izni değildir.
  • Silinen bir alan adının vhost'u geri yazılabiliyordu. Kayıt denetimi yazımın etrafındaydı, içinde değil; aradaki configtest beklemesinde silme baştan sona koşabiliyordu. Sonuç, artık var olmayan bir sertifikayı gösteren öksüz bir vhost: configtest kalıcı olarak düşer ve Apache hiç başlamaz — makinedeki bütün siteler birden gider. Üstelik hata logu bastırıldığı için sessizce.
  • Alan adı oluşturulurken kayıt en sonda yazılıyordu. Site klasörü, sertifika, vhost ve /etc/hosts girişi hazırken kayıt yoktu; /etc/hosts yönetici parolası isteyip süresiz beklediğinden bu pencere dakikalar sürebiliyordu. Orada çıkılırsa geriye hiçbir arayüzde görünmeyen, hiçbir şeyin toplamadığı dosyalar kalıyordu.
  • Yedekten geri yükleme, canlı bir paylaşımın altından vhost'u çekiyordu. Tünel ayakta kalıp Host başlığını artık var olmayan bir bloğa taşıyor ve istek varsayılan siteye düşüyordu — localhost kökü, phpMyAdmin ve Adminer dâhil. Çalışan bir arka plan uygulaması da kaydı gittiği için bir daha hiç durdurulamıyordu. Artık silmeden önce canlılığa bakılıyor. Ayrıca localhost.conf yanlışlıkla öksüz sayılabiliyordu.
  • nginx.conf korumasız yazılıyordu. Yedek başarısız olsa bile yazım devam ediyor, nginx -t yapılmıyor ve geri dönüş bulunmuyordu. Dahası budama en eskiden başlayarak sildiğinden, kullanıcının BRAMPP öncesi nginx.conf'u altı rutin işlemden sonra kayboluyordu. En eski yedek artık kalıcı.

Değişti

  • Teşhis paneli kaydı olmayan vhost dosyalarını bildiriyor — ve bilerek silmiyor. Aynı dizinde elle eklenmiş yapılandırmalar da duruyor; "kaydı yok" ile "çöp" aynı şey değil.
  • MCP izin sınırı test altına alındı. 25 aracın alanı ve yazma gereksinimi elle yazılıyordu ve hiçbir doğrulaması yoktu; bir bayrağı ters çevirmek yıkıcı bir aracı salt-okunur bir izinde sessizce kullanılabilir kılardı.

Ayrıntı: Değişiklikler

Apple Silicon, macOS 14+.


In English

The database tools can genuinely write now — but updating a row and dropping a table are no longer the same permission. Alongside that, four ways domain operations could leave the machine inconsistent.

Added

  • Schema discovery: db_tables and db_describe. Tables with row counts and size, columns with types, keys and defaults. The two things an AI client needs most often no longer require writing raw SQL — and checking a column name beats guessing it.
  • SQL writing is split into three levels. Reading is open; INSERT/UPDATE/REPLACE need allow_write; DELETE/DROP/TRUNCATE/ALTER/CREATE additionally need allow_destructive. Updating a row and dropping a table are not the same request and cannot share a switch.

Fixed

  • Turning on allow_write removed every check. Even the multiple-statement rejection lived only in the read-only branch, so allow_write also accepted "DROP DATABASE a; DROP DATABASE b". Multiple statements are now refused at every level, and SQL cannot reach the filesystem under any flag — write permission on a database is not permission to read the disk.
  • A deleted domain's vhost could be written back. The record check sat around the write rather than inside it, and deletion can complete during the configtest wait in between. The result is an orphan vhost pointing at a certificate that no longer exists: configtest fails permanently and Apache will not start at all, taking every site on the machine with it — silently, because the error log was suppressed.
  • Creating a domain saved the record last. The site folder, certificate, vhost and /etc/hosts entry all existed before the record did, and the hosts step can sit on an admin password prompt indefinitely. Quit in that window and the files stayed, invisible to the UI and collected by nothing.
  • Restoring a backup removed a vhost out from under a live share. The tunnel kept carrying the Host header to a block that no longer existed, so the request fell through to the default site — localhost root, phpMyAdmin and Adminer included. A running background app also became unstoppable once its record was gone. Liveness is now checked before removal, and localhost.conf could previously be mistaken for an orphan.
  • nginx.conf was rewritten without protection. A failed backup did not stop the write, there was no nginx -t and no rollback. Worse, pruning dropped the oldest first, so the user's pre-BRAMPP nginx.conf disappeared after six routine operations. The oldest backup is now kept permanently.

Changed

  • Diagnostics reports vhost files with no record — and deliberately does not delete them. Hand-written configuration lives in the same directory; "no record" and "garbage" are not the same thing.
  • The MCP permission boundary is under test. The scope and write requirement of all 25 tools were written by hand with nothing asserting them; flipping one flag would silently expose a destructive tool at a read-only permission level.

Details: Changelog

Apple Silicon, macOS 14+.