michzimny / teamy-diff-deals

Let JFR Teamy use different deals per table
MIT License
0 stars 1 forks source link

Odseparowanie skryptów i rozkładów od plików turniejowych #2

Closed Jaom closed 5 years ago

Jaom commented 6 years ago

Proponowałbym wrzucić w podkatalog(i) skrypty i rozkłady. Sądzę, że niczemu nie szkodzi, łatwiej zarządzać uprawnieniami oraz wygodniej operować na plikach gdy nie leżą w jednym katalogu wśród półtora tysiąca automatycznie generowanych (i nigdy lub prawie nigdy nie zmienianych ręcznie) plików, które mogą zaczynać się w zasadzie od dowolnego znaku.

Jaom commented 6 years ago

Trudniejsze zarządzanie -> wzrost ryzyka ludzkiego błędu, który jest najprostszym sposobem wycieku rozdania, chyba na tyle prostym, ze sam ostrzegłeś o tym ze trzy razy, co sugeruje że się pomyliłeś, co sugeruje że inni też będą się mylić, co znaczy że zmniejszanie tego ryzyka bynajmniej nie powinno być very-not-important, ale mniejsza - teog i tak się będzie używało raz na ruski rok, a nawet jak wypłyną jakieś rozkłady, to powodzenia w zgadywaniu z którego meczu (skoro wypłynęły, to były źle podpisane).

michzimny commented 6 years ago

Nie rozumiem implikacji ostrzegłeś->pomyliłeś. Proszę o scenariusz tego ryzyka, przed którym broniłaby ta poprawka.

Jaom commented 6 years ago

Nie broni przed żadnym konkretnym ryzykiem. Natomiast przeciętny sędzia odpali jakiś menadżer FTP, po czym donawiguje do właściwych folderów zdalnie i lokalnie, a następnie prześle pliki. Wyświetlą się one na liście wszystkich plików w katalogu zdalnym, ani na początku ani na końcu (przy sortowaniu alfabetycznym). To jest etap, na którym człowiek naturalnie może chcieć sprawdzić ostatni raz czy wszystko się zgadza (bo to ostatni krok) i jest to utrudnione, bo o ile nie posortuje po typach plików tylko zostanie przy sortowaniu po nazwie (co sądzę będzie prawdziwe dla większości userów), to będzie musiał zjechać odpowiednio nisko (w przypadku ekstraklasy do 146 pliku) i tam może dopiero dokonać weryfikacji. Nie zobaczy tam jednak np. plików, które mają błąd w nazwie (bo wyskoczą w inne miejsce na liście plików). Być może plików, których nigdy nie chciał przesłać. Być może zawierających rozkłady na zupełnie inne zawody, a jak ustaliliśmy - serwer PZBS nie jest szczególnie bezpiecznym miejscem, a w przypadku rozdań innych niż właśnie grane wiąże się to z obniżeniem bezpieczeństwa. Utrudnione jest też sprawdzenie co już zostało przesłane.

Sądzę, że dobrą praktyką jest separowanie folderów, w których są elementy automatycznie generowane od folderów, w których user sam sobie wrzuca i zmienia rzeczy. Szczególnie jeśli user wrzuca sumarycznie bardzo niedużo, bo wtedy na pierwszy rzut oka widać ile jest czego wgrane i czy coś ma inny naming pattern. Szczególnie w sytuacji gdy eventów z diff dealsami w jednym folderze będzie kilka (od play-off1 do finału, ale może to też być jakiś inny turniej z play-offami i miliardem faz).

Ogółem myśl jest taka, że utrudnianie czynności wykonywanych ręcznie wiąże się z jakimś zwiększonym ryzykiem braku skuteczności tychże działań. I tak, nie jest to major issue.

emkael commented 5 years ago

Wyrzucenie PBNów (i w ogóle, plików aplikacji) do osobnego katalogu ułatwiłoby też zarządzanie tym, które rozkłady są wgrane, a które nie. Można wtedy spokojnie skanować sobie wszystkie pliki PBN obecne w folderze, kompilować z nich własną bazę danych rozkładów i zapisywać ją w podfolderze bez ryzyka, że przez przypadek stanie się dostępna przez HTTP. Takie podejście pozwoliłoby również na rozwiązanie #1 - pozbycie się wykrywania prefiksu i numeru rundy na poziomie .htaccess i przerzucenie parsowania nazwy żądanego URL do samego skryptu: z nazw PBNów mamy listę obsługiwanych prefiksów turniejów - więc wiadomo, czy chodzi o 11. rundę turnieju po1, czy pierwszą rundę turnieju po11 (które przecież i tak nie mogłyby istnieć jednocześnie w tym samym katalogu).

michzimny commented 5 years ago

Nie rozumiem fragmentu o kompilowaniu własnej bazy rozkładów i ryzyka ujawnienia.

Ale ogólnie możemy to zrobić, choć mile widziany byłby jakiś wkład.

emkael commented 5 years ago

Nad wkładem pracuję (głównie dlatego pozgłaszałem tematy). Kwestia najbliższego tygodnia pewnie.

Resztę: już tłumaczę.

Dumałem nad problemem #10 na przykład i doszedłem do wniosku, że dużo wygodniej byłoby jednorazowo skanować wszystkie pliki PBN, jakimi dysponujemy i kompilować je do pojedynczego słownika, indeksowanego prefiksem, rundą, numerem rozdania i stołu. Zarówno z punktu widzenia wykrywania, kiedy należy przepuścić wykonywanie skryptu do oryginalnego pliku HTML z protokołem, jak i z punktu widzenia iterowania po stołach podmienianego protokołu. Taki słownik trzymałoby się gdzieś pod ręką i nie zmieniało go, dopóki nie zmieniłby się zestaw PBNów obecnych w katalogu roboczym, zamiast parsować za każdym razem PBN. Naturalnym miejscem składowania takiego słownika jest katalog roboczy skryptu. I tutaj - dużo łatwiej zarządza się tym wszystkim, gdy wywalić pliki PHP, pliki PBN i wszelkie pliki pamięci podręcznej tworzone sobie przez skrypt do osobnego katalogu. Bo wtedy wystarczy nie serwować publicznie żadnej zawartości z tego podkatalogu, zamiast ustawiać reguły dostępu do plików w katalogu stron z wynikami.

A do tego obecność takiego słownika pozwala na odwrócenie procesu dopasowywania prefiksu turnieju do URLa żądanej strony - teraz na podstawie URLa próbujemy zgadnąć prefiks (stąd problemy z prefiksami zakończonymi cyfrą), a mając łatwo dostępny wykaz wszystkich prefiksów, dla których mamy pliki rozkładów, możemy sprawdzać, czy URL pasuje do któregoś z nich, rozwiązując niejednoznaczność prefiksów z cyframi.

michzimny commented 5 years ago

Ok