Corestone

Rozwiązywanie problemów

Konsola nie pokazuje linku konfiguracji

Link jest pokazywany tylko wtedy, gdy nie ma konta Ownera. Jeśli już je utworzyłeś, zaloguj się. Jeśli nikt nie może się już zalogować, wpisz /ac resetowner w konsoli serwera.

Panel się nie otwiera

  • Sprawdź /ac version: pokazuje adres panelu albo powód, dla którego nie wystartował (na przykład zajęty port).
  • Na panelu hostingu użyj w web.port portu, który daje ci hosting, i otwórz ten port. Bez reverse proxy panel działa wtedy na zwykłym HTTP, czytelnym dla każdego w sieci: zobacz Panel przez HTTPS.
  • Za reverse proxy web.host: 127.0.0.1 sprawia, że panel jest dostępny tylko przez proxy.

Logowanie mówi „too many attempts”

Po 5 błędnych hasłach z jednego adresu konto czeka 15 minut na tym adresie (adresy IPv6 liczą się według sieci /64); z innego adresu dalej można się zalogować. Po 50 błędnych hasłach z dowolnych adresów konto czeka 15 minut wszędzie. W sieci na jednej bazie MySQL te liczniki (i limity kodów 2FA) są wspólne dla paneli wszystkich serwerów w ciągu około 2 sekund. Odczekaj albo poproś innego Ownera, żeby sprawdził w Dziennik zdarzeń wpisy auth.login z wynikiem denied i adresem, z którego przyszły. Za reverse proxy dodaj proxy w Ustawienia → Serwer → Bezpieczeństwo → Zaufane proxy, inaczej każdy wpis pokazuje adres proxy.

Linki w grze prowadzą pod zły adres

Ustaw web.public-url na adres, pod którym otwierasz panel, i zrestartuj.

Części panelu na żywo się nie odświeżają

Twoje reverse proxy musi przepuszczać upgrade do WebSocket (zobacz przykład Nginx w Panelu przez HTTPS).

Komendy innego pluginu są przejmowane

Z punishments.shortcuts: true AdminControl rejestruje /ban, /mute i inne tylko tam, gdzie nie zrobił tego już inny plugin. Ustaw false i zrestartuj, żeby zostawić je wszystkie innemu pluginowi; /ac ban działa zawsze.

RCON nie pokazuje odpowiedzi na komendy kar

Komendy kar odpowiadają po zapisie do bazy, gdy RCON już odpowiedział. Kara jest nałożona; zobaczysz ją w panelu, w dzienniku zdarzeń albo w logu serwera.

Ostrzeżenia przy starcie z MySQL lub MariaDB

Dwie linie Unknown system variable 'WSREP_ON' przy starcie są nieszkodliwe: narzędzie migracji sprawdza, czy baza jest klastrem.

Velocity: każdy gracz ma adres 127.0.0.1

Serwery nie dostają od proxy prawdziwych adresów graczy. Włącz nowoczesne przekazywanie z sekretem na proxy i na każdym serwerze: Sieć Velocity, „Nowoczesne przekazywanie”.

Velocity albo BungeeCord: proxy nie egzekwuje kar

  • Log proxy mówi needs the shared MySQL/MariaDB database: ustaw database.type: mysql w plugins/admincontrol/config.yml (Velocity) albo plugins/AdminControl/config.yml (BungeeCord) na proxy, z bazą, której używają serwery.
  • Kara z jednego serwera nie dociera do pozostałych: każdy serwer musi używać tej samej bazy MySQL lub MariaDB (nie SQLite). /ac version na proxy pokazuje, jak daleko odczytało dziennik kar; liczba rośnie z każdą nową karą.

AdminControl nie ładuje się po pierwszym starcie albo aktualizacji

Przy pierwszym starcie tej wersji serwer pobiera z Maven Central biblioteki Adventure, które wymienia AdminControl (Paper, Purpur i Folia też, choć używa ich tylko Spigot). Bez dostępu do internetu zapisuje błąd o bibliotekach net.kyori i pomija plugin. Uruchom serwer raz z dostępem do sieci albo skopiuj folder libraries/ z serwera, na którym zadziałało, i sprawdź go z sumami w Instalacji, „Na Spigocie”.

Spigot: MSPT pokazuje „–”

Spigot nie podaje, jak długo trwa tick, więc pulpit pokazuje TPS (z własnego licznika ticków AdminControl) i bez MSPT. Tak ma być.

BungeeCord: AdminControl nie ładuje się na proxy

Przy pierwszym starcie z AdminControl BungeeCord pobiera biblioteki Adventure z Maven Central. Bez dostępu do internetu zapisuje błąd o bibliotekach net.kyori i pomija plugin. Uruchom proxy raz z dostępem do sieci albo skopiuj folder libraries/ z proxy, na którym zadziałało; bardzo stare buildy BungeeCorda nie potrafią załadować tych bibliotek i wymagają aktualizacji (Sieć BungeeCord).

Ostrzeżenie „Niezabezpieczony forwarding” albo „without BungeeGuard”

Serwer jest w trybie BungeeCord (settings.bungeecord: true w spigot.yml) bez BungeeGuard. Każdy, kto dostanie się bezpośrednio do jego portu, może wejść jako dowolny gracz. Zamknij port dla wszystkiego poza proxy albo zainstaluj BungeeGuard na proxy i serwerach: Sieć BungeeCord, „Zabezpieczenie serwerów”. Z zaporą ostrzeżenie zostaje, bo AdminControl nie widzi reguł zapory.

„checked against the in-memory list” w logu

Baza nie odpowiedziała w ciągu 3 sekund na sprawdzenie bana wchodzącego gracza, więc zdecydowały bany, które AdminControl trzyma w pamięci: zbanowany gracz dostaje odmowę, każdy inny wchodzi. Lista w pamięci jest odczytywana ponownie co 5 minut. Wiele takich linii pod rząd oznacza, że baza jest przeciążona albo nieosiągalna; sprawdź jej połączenie i obciążenie.

Panel sieci pokazuje serwer jako „Konflikt”

Dwa działające serwery używają tego samego server-name albo tego samego identyfikatora w plugins/AdminControl/server-id (skopiowany folder serwera). Zobacz Panel sieci, „Konflikty i skopiowane foldery”.

„survival nie odebrał polecenia” po komendzie w konsoli

Serwer nie odebrał komendy w ciągu 30 sekund: był zatrzymany, zawieszony albo nie może połączyć się z bazą. Komenda nie wykona się później. Sprawdź konsolę tego serwera pod kątem błędów bazy, a potem wyślij komendę ponownie, gdy serwer pokaże się jako online na liście sieci.

Znane ograniczenia

Drobne zachowania, znane i zaakceptowane w tej wersji. Żadne z nich nie traci danych ani nie osłabia kontroli dostępu.

Panel

  • Po wygaśnięciu sesji strona otwarta w innej karcie zachowuje dane do przeładowania.
  • Pole kodu 2FA traci fokus po błędnym kodzie; czytniki ekranu nie dostają informacji, że pole jest błędne.
  • Mobilny arkusz „Więcej” nie zatrzymuje fokusu i nie przywraca go do swojego przycisku po zamknięciu.
  • Odpowiedź z limitem zapytań nie pokazuje, ile sekund czekać.
  • Filtr gracza na liście kar dopasowuje tylko dokładną nazwę.
  • Filtr czatu „do” działa z dokładnością do minuty: wiadomości z sekund po niej są pomijane.
  • Licznik nieprzeczytanych wiadomości prywatnych dalej liczy wiadomości sprzed wyłączenia przełącznika i rośnie, gdy czytający zostaje przewinięty w górę.
  • Niektóre teksty przełączników nie są klikalnymi etykietami.
  • Wygasła blokada zgłaszania jest widoczna, dopóki lista się nie odświeży.
  • Notatka odrzucona przez serwer pokazuje ogólny błąd zamiast komunikatu przy polu.
  • „Wyślij test” używa zapisanego webhooka, nawet gdy wpisany jest nowy, niezapisany adres.
  • Niezapisana kolejność ról nie resetuje się, gdy role zmienią się po odświeżeniu (zapis odpowiada wtedy 422).
  • Przechodzenie między stronami po zmianie roli używa starej roli, dopóki sesja się nie odświeży.

Logowanie i konta

  • Oczekująca zmiana aplikacji 2FA nie ma własnego wygaśnięcia (kończy się razem z wyzwaniem).
  • Dwie rejestracje z jednego zaproszenia w tej samej chwili, z kodami z sąsiednich 30-sekundowych okien, mogą usunąć pierwsze konto (wymaga sekretu 2FA tego konta).
  • Brak pól w żądaniu logowania daje 422, a błędne hasło daje 401.
  • Publiczne żądania zaproszeń i resetu sprawdzają pola przed linkiem (422 przy martwym linku zamiast 404/410).
  • Logowanie, które się udaje, ale nie może zakończyć poprzedniej sesji przeglądarki, zgłasza błąd, choć nowa sesja działa.
  • Pola urządzenia sesji są pomijane (a nie puste), gdy przeglądarka albo system są nieznane.

Gracze i kary

  • Nałożenie kary nie wymaga dodatkowo players.view (własna rola tylko z punish.ban może karać po UUID).
  • Nieznana wartość filtra graczy zwraca wszystkich graczy.
  • Bardzo szybkie ponowne połączenie na MySQL może otworzyć dwie sesje i policzyć ich nakładanie się dwa razy w czasie gry.
  • Nieudane pobrania skórek nie są zapamiętywane, więc wolna odpowiedź Mojang jest ponawiana przy każdym żądaniu (po 5 s).
  • /ac punish pokazuje stopień z własnego podglądu, który może różnić się od zapisanego, gdy dwie osoby z ekipy działają naraz.
  • Szablon usunięty w trakcie używającej go komendy jest zgłaszany jako nieznany gracz.
  • API szablonów i reguł sprawdza treść przed uprawnieniem (422 przed 403).

Czat

  • Domyślne komendy wiadomości prywatnych to msg, tell, w, whisper, pm, emsg, etell, ewhisper; serwery z innymi aliasami dopisują je w config.yml.
  • Zmiana samego slow mode też informuje graczy, że zmienił się stan czatu.
  • Wiadomości wysłane z panelu mogą zawierać podziały linii.
  • Wiadomości prywatne są usuwane pełnym przeszukaniem przy bardzo długiej historii czatu (brak indeksu na kanale i czasie).

Konsola i ogłoszenia

  • Własne role z console.view widzą w wyjściu konsoli adresy IP graczy i wiadomości prywatne, niezależnie od innych uprawnień.
  • Ręczne ogłoszenie i rotacja w tej samej sekundzie albo edycja w trakcie wysyłania mogą wysłać je dwa razy.
  • announcements.send trafia do dziennika, zanim wysłanie się powiedzie.
  • Prefiks komend z panelu w konsoli nie jest szary jak w podglądzie.
  • Komendy kar wysłane przez RCON nie pokazują odpowiedzi (przychodzi po zapisie do bazy, gdy RCON już odpowiedział); wynik jest w panelu, dzienniku zdarzeń i logu serwera.
  • /ac whitelist off i /ac resetowner działają tylko z konsoli samego serwera, nie przez RCON ani konsolę panelu.
  • Na Folii komendy vanilla z konsoli panelu, działające na byty poza globalnym regionem, mogą zostać odrzucone przez Folię; komendy pluginów i /ac działają.

Ekipa i dziennik

  • Zmiany ról używają roli wykonującego z początku żądania (degradacja w tej samej chwili jest widoczna następnym razem).
  • Odczyt sesji członka ekipy trafia do dziennika bez adresu IP żądania.
  • Żądania zespołu sprawdzają treść przed team.manage (422 przed 403).
  • Limity ról podane jako liczby dziesiętne bez części ułamkowej (3600.0) są odrzucane.
  • Filtr celu w dzienniku dopasowuje też nazwy zaproszeń.
  • Wpisy o odczytach (podgląd IP i wiadomości prywatnych) są zapisywane przy każdym wczytaniu strony.

Ustawienia i integracje

  • Zmiana ustawień na innym serwerze ze wspólną bazą dociera do tego w ciągu minuty.
  • Retencja czatu w config.yml przyjmuje 1–365 dni; obowiązuje minimum 7 z panelu.
  • Godzina statystyk uśredniona tuż przed ostatnią próbką zachowuje 11 z 12 próbek.
  • Discord: wiadomości w kolejce zachowują adres webhooka z chwili dodania; znaczniki list markdown, -# i <@…> nie są escapowane.
  • LuckPerms: rozłączenie na jednym serwerze i ponowne połączenie na innym mogą zadziałać w odwrotnej kolejności (poprawiane w ciągu 10 minut).
  • Alert TPS zachowuje swój stan, gdy komunikaty o stanie serwera są wyłączone.

Zgłoszenia

  • Słowa kategorii są dopasowywane tylko ze spacjami ASCII (twarda spacja jest częścią słowa).
  • Zachowanie przy równoczesnym przejmowaniu jest takie samo na SQLite i MySQL, ale testy obciążeniowe były tylko na SQLite.
  • Zgłoszenie zamknięte dokładnie w chwili, gdy zgłaszający wychodzi z gry, może nie wysłać mu wiadomości o zamknięciu.

Import

  • Kicki pokazują się jako wygasłe (zasada panelu kar); podgląd w makiecie pokazywał je jako aktywne.
  • Daty zdjęcia kar z LiteBans są czytane w strefie czasowej serwera.
  • Tekst jest przycinany do rozmiarów kolumn (powód 200, nazwy 32 znaki).
  • Zakres serwera w LiteBans nie jest używany: trafiają kary całej sieci.
  • AdvancedBan w trybie UUID offline (nazwy zamiast UUID) nic nie importuje.
  • Całe źródło jest wczytywane do pamięci; sieci z milionami wierszy LiteBans potrzebują dużej sterty.
  • Otwarcie strony importu łączy się z bazami LiteBans/AdvancedBan (do 5 s, gdy któraś nie działa).

Sieci Velocity i BungeeCord

  • Podpowiedzi /ac w sieci pokazują tylko komendy proxy.
  • Wyciszenia egzekwują serwery, nie proxy.
  • Proxy nie ma panelu; panel dowolnego serwera obejmuje całą sieć.
  • Ostrzeżenie „Niezabezpieczony forwarding” nie widzi reguł zapory: zostaje na serwerze, z którego portem może się łączyć tylko proxy.
  • BungeeCord potrzebuje dostępu do internetu przy pierwszym starcie z AdminControl, żeby pobrać biblioteki Adventure.

Działanie

  • Uszkodzony plik server-id jest zastępowany bez ostrzeżenia. Sklonowane foldery serwerów dzielą jeden identyfikator; panel sieci pokazuje je jako konflikt.
  • Jeśli metody próbkowania Papera zawiodą, pulpit pokazuje 20 TPS i bez liczby chunków i bytów.
  • Gniazda bez sesji nie mają limitu na adres.
  • Wyszukiwanie w SQLite nie rozróżnia wielkości liter dla wszystkich liter; sama baza dalej sortuje nazwy według kodów znaków.
  • Z MySQL lub MariaDB sterownik bazy zapisuje przy starcie dwa nieszkodliwe ostrzeżenia: Unknown system variable 'WSREP_ON' (sprawdzenie klastra przez narzędzie migracji).
  • /ac reload nie wprowadza web., database., punishments.shortcuts ani modułów konsoli, ogłoszeń, zgłoszeń i importu; wypisuje klucze, które wymagają restartu.