Repository navigation
Conversation
…e duyurular Ağa bağlı herkes güvende/yardım lazım kaydı bırakıp isimle arayabilir (Türkçe harflere duyarsız). Kayıtlar yalnızca kutuda; silme kodu, hız sınırları, kayıt üst sınırı. Kutu sahibi scripts/pano.sh ile duyuru yayınlar, tüm kayıtları siler ya da panoyu kapatır.
|
Fikir de çok güzel, kötüye kullanıma karşı düşündüklerin de, eline sağlık. Ama isimler ve konumlar ağdaki herkese açık olacağı için iki şey eklesek iyi olur: kutu sahibinin tek bir kaydı silebilmesi, bir de sayfada kayıtların doğrulanmadığını, herkesin başkası adına yazabileceğini belirten bir not. Bunlar eklenince deneyip karar veririm. Great idea, and nice thinking on the abuse protection. But since names and locations will be visible to everyone on the network, I think we need two things: a way for the box owner to delete a single entry, and a note on the page saying entries aren't verified and anyone can post on someone else's behalf. Once those are in, I'll test it and decide. |
…e unverified Pano: kutu sahibi tek kaydı listeleyip silebilir, kayıtların doğrulanmadığı notu
|
İkisini de ekledim:
Firewall (Proxy34) |
|
Elinize sağlık, kötüye kullanım önlemleri ve görünmez karakterlerin Dosya bozulursa bütün kayıtlar gidiyor. İki not daha:
Küçük bir şey: arama alt dize ile yapıldığı için Nice work; the abuse limits and stripping invisible characters with A corrupted file wipes every entry. Two more notes:
Small thing: search uses substring matching, so |
… word-start search / Pano: satır satır kayıt, bozuk dosya yedeklenir, dolunca reddeder, kelime başı arama
|
@FurkanKY yerelde çalıştırıp bu kadar ayrıntılı denediğin için teşekkürler. Dördü de haklıydı, hepsini düzelttim (37d33cb).
Kutu sahibinin Firewall (Proxy34) |
|
Merhaba Proxy34, bu PR'ı bugün gerçek kutuda, Pi 5 üzerinde baştan sona denedim. Kod çok özenli yazılmış. Servisin sadece 127.0.0.1'i dinlemesi, DynamicUser ile yetkisiz çalışması, IP'nin nginx'ten alınması, girdilerin kaçış karakterleriyle temizlenmesi ve silme kodunun hash olarak saklanması gerçekten çok iyi. FurkanKY'nin bulduğu sorunları da çok güzel çözmüşsün. Ama gerçek kutuda sanal makinede çıkmayan bir hata bulduk ve bu tam olarak gerçek donanımda test etmenin neden önemli olduğunu gösteriyor. Bir kayıt ekledim, sonra "sudo ./scripts/pano.sh sil " ile sildim. Bu komut guvendeyim.jsonl dosyasını root olarak yeniden yazıyor ve dosyanın sahibi root oluyor. Servis DynamicUser ile çalıştığı için o andan sonra her yeni kayıtta "PermissionError: Permission denied" alıyor ve pano kimse fark etmeden yazılamaz hale geliyor. Afette kutu sahibinin tek bir uygunsuz kaydı silmesi bütün panoyu durdurabilirdi. Dosyanın sahibini elle düzeltince her şey düzgün çalıştı. Kayıt, Türkçe arama, kodla silme ve saatler sorunsuzdu. Çözüm olarak pano.sh sil, yeni dosyayı yazdıktan sonra os.replace'ten önce eski dosyanın sahibini ve iznini kopyalayabilir, örneğin st = os.stat(dosya), sonra os.chown(tmp, st.st_uid, st.st_gid) ve os.chmod(tmp, st.st_mode). Bir de sunucu hata verdiğinde sayfa "Pano şu anda kapalı" diyor. Kullanıcı panonun kapatıldığını sanıyor. Yazma hatası için ayrı bir mesaj olursa daha anlaşılır olur. Son olarak #11, #16 ve #17 bu PR'dan sonra merge edildiği için README.md, install.sh, scripts/install-homepage.sh ve www/home/index.html dosyalarında çakışma var. Bunları düzeltip güncel main'e göre yenileyebilirsen kutuda bir kez daha deneyip merge etmek istiyorum. Hi Proxy34, today I tested this PR end to end on the real box, a Pi 5. The code is written with real care. The service listening only on 127.0.0.1, running unprivileged with DynamicUser, taking the IP from nginx, escaping all input and storing the delete code as a hash are all very well done. You also solved the issues FurkanKY found really nicely. But on the real box we found a bug that didn't show up in the VM, and it's exactly why testing on real hardware matters. I added an entry and then deleted it with "sudo ./scripts/pano.sh sil ". That command rewrites guvendeyim.jsonl as root, so the file ends up owned by root. Since the service runs as a DynamicUser, every new entry after that fails with "PermissionError: Permission denied", and the board silently stops accepting entries. In a disaster, the box owner removing a single inappropriate entry could take the whole board down. After I fixed the file owner by hand, everything worked fine. Adding entries, Turkish search, deleting with the code and the timestamps were all correct. As a fix, pano.sh sil could copy the old file's owner and mode before os.replace, for example st = os.stat(path), then os.chown(tmp, st.st_uid, st.st_gid) and os.chmod(tmp, st.st_mode). Also, when the server returns an error the page says "Pano şu anda kapalı" (the board is closed), so users think it was switched off. A separate message for write errors would be clearer. Finally, #11, #16 and #17 were merged after this PR, so there are conflicts in README.md, install.sh, scripts/install-homepage.sh and www/home/index.html. If you can fix these and rebase on the current main, I'd like to test it on the box once more and merge it. |
# Conflicts: # README.md # install.sh # scripts/install-homepage.sh # www/home/index.html
…isk write fails / Pano: silmede dosya sahibi korunur, diske yazılamazsa açık mesaj
…Ana sayfa menüsü: telefonda satır sararken bağlantılar bölünmez
|
@schematrix gerçek kutuda denediğin ve hatayı bu kadar net anlattığın için çok teşekkürler. Haklısın, sanal makinede
Firewall (Proxy34) |
Güvendeyim panosu (
http://box.lan/home/guvendeyim.html) ve ana sayfada duyuru.ayseyazıncaAyşe,ismailyazıncaİsmailbulunur.sudo ./scripts/pano.sh kayitlar Ayşekayıtları numarasıyla listeler,sil <numara>tek kaydı siler,temizletüm kayıtları siler,kapat/acpanoyu kapatıp açar.sudo ./scripts/pano.sh duyuru "Su dağıtımı 14:00'te okul bahçesinde"ana sayfanın en üstünde görünür; yalnızca kutu sahibi yazabilir.Test: Debian 13 + Internet-in-a-Box sanal makinesinde: kayıt, Türkçe arama, eksik/uzun/HTML içerikli girişler, hız sınırları, kodla silme, sahip komutları, yeniden başlatma sonrası kalıcılık ve tarayıcıdan uçtan uca kullanım.
"Güvendeyim" ("I'm safe") board and a homepage announcement.
aysefindsAyşe).sudo ./scripts/pano.sh kayitlar Ayşelists entries with ids,sil <id>deletes one,temizlewipes all entries,kapat/acdisables / enables the board;duyuru "..."puts an announcement at the top of the homepage.Tested in a Debian 13 + IIAB VM, including rate limits, owner commands, reboots and end-to-end browser use.
Firewall (Proxy34)