System Uprawień / Zezwoleń

System Zezwoleń to bardzo uniwersalny i funkcjonalny system, który określa jacy użytkownicy mają prawo do wykonania danych działań.

Jakie są rodzaje uprawnień?

++++++++++++++++++++++++++++++++++

Zezwolenia Boolean

Te zezwolenia mogą mieć tylko dwie wartości, prawda lub fałsz.

Przykład:

b_virtualserver_modify_name

 

Z nazwy zezwolenia natychmiast widać, że jest to zezwolenie boolean, ponieważ rozpoczyna się od „b_”. Po tym prefiksie znajduje się aktualna nazwa zezwolenia, która powinna dać Ci pomysł, czego dotyczy dane zezwolenie. W tym przypadku zezwolenie kontroluje, czy możesz zmienić nazwę wirtualnego serwera. Jeśli jest ustawione na prawda, możesz zmienić nazwę wirtualnego serwera, jeśli jest ustawione na fałsz lub jest nieustawione, nie możesz zmienić nazwy wirtualnego serwera.

Zezwolenia Integer

——————-

Te zezwolenia przyjmują liczby całkowite jako wartości.

Przykład:

i_channel_max_depth

Ponownie z nazwy możesz wywnioskować, że jest to zezwolenie integer, ponieważ rozpoczyna się od prefiksu „i_”. Aktualna nazwa zezwolenia, channel_max_depth w tym przypadku, określa co kontroluje to zezwolenie. W tym przypadku kontroluje jak „głęboką” strukturę kanału możesz stworzyć. Zatem jeśli wartość ustawiona jest na „0”, oznacza to, że możesz stworzyć tylko kanały najwyższego poziomu. Jeśli jest ustawione na „1”, to możesz tworzyć subkanały. Ustawienie „2” oznacza, że możesz tworzyć sub-sub-kanały itd.

Podobnie jak w przypadku wielu zezwoleń nie posiadających logicznych limitów, i_channel_max_depth ma specjalną wartość „-1” oznaczającą, że nie ma limitu maksymalnej głębokości kanałów.

Zezwolenia Mocy i potrzebnej Mocy

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Te zezwolenia są specjalnym przypadkiem zezwoleń Integer. Występują zawsze razem, jedno zezwolenie mocy i jedno zezwolenie potrzebnej mocy. Możesz poprawnie wykonać operację kontroli zezwolenia, jeżeli Twoja Moc jest równa lub większa od powiązanej potrzebnej mocy.

Przykład

i_client_kick_power

i_client_needed_kick_power

 

Kiedy chcesz wyrzucić klienta, system zezwoleń porówna Twoją „moc wyrzucenia” z „potrzebną mocą wyrzucenia” celu, który chcesz wyrzucić. Jeśli masz równą lub większą moc, będziesz mógł wyrzucić tego klienta. Jeśli Twoja moc jest mniejsza niż moc potrzebna na Twój cel, nie będziesz mógł tego wykonać. To ustawia „hierarchię”, możesz przykładowo ustalić niższym administratorom zezwolenie na wyrzucanie tylko gości, ale wyżsi administratorzy będą mogli wyrzucać dowolną osobę z serwera.

 

i_needed_modify_power_* lub Przyznane-Zezwolenia

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Każde zezwolenie ma powiązane zezwolenie i_needed_modify_power_*, przykładowo b_client_ban_create ma powiązane zezwolenie nazwane i_needed_modify_power_client_ban_create. W interfejsie klienta te powiązane zezwolenia needed_modify_power są najczęściej wyświetlane jako dodatkowe. „Przyznane” wartości oryginalnego zezwolenia, zamiast osobnego własnego zezwolenia, dlatego też nazwaliśmy te zezwolenia Przyznanymi-Zezwoleniami.

Te Przyznane-Zezwolenia kontrolują, które zezwolenia klient może dostać lub odwołać, są zatem kluczem do modyfikowania systemu zezwoleń i zazwyczaj są zarezerwowane tylko dla administratorów. Edytowanie systemu będzie wyjaśnione w dalszej części w osobnym rozdziale zatytułowanym „Kto może edytować system zezwoleń?”

 

Jak klienci otrzymują zezwolenia? Jak są one powiązane?

++++++++++++++++++++++++++++++++++++++++++++++++++++++

Droga, którą klient otrzymuje zezwolenia, jest określona przez system 5 warstw. Każda warstwa przepisuje zezwolenia z poprzedniej warstwy. Jeśli zezwolenie nie jest przyznane na żadnej z 5 warstw, będzie oznaczane jako zero lub wartość fałsz. Oto 5 warstw:

Poziom 1: Grupy Serwera

Poziom 2: Specjalne zezwolenie klienta

Poziom 3: Specjalne zezwolenie kanału

Poziom 4: Grupy Kanału

Poziom 5: Specjalne zezwolenia kanału i klienta

 

Przykład:

Jesteś w grupie „Gość” serwera (Warstwa 1), która ma zezwolenie b_channel_modify_name ustawione na fałsz. Ale jesteś także w grupie „Administrator Kanału” (Poziom 4) i administrator kanału ma b_channel_modify_name ustawione na prawda. Ponieważ grupa kanału jest w wyższej warstwie niż grupa serwera, ostatecznie *możesz* edytować nazwę kanału (ale nie innych kanałów, gdzie nie jesteś administratorem kanału).

 

Teraz omówimy każdą warstwę i jej specjalne zezwolenia w szczegółach.

 

Warstwa 1: Grupy Serwera

———————

Każdy klient jest członkiem jednej lub więcej grup serwera. Grupy serwera mogą zawierać dowolną ilość zezwoleń, które możesz otrzymać zostając członkiem grupy. Ponieważ możesz być członkiem wielu Grup Serwera jednocześnie i ponieważ to samo zezwolenie może być przyznane w wielu z tych Grup Serwerów, musi być sposób na określenie „wynikowego” zezwolenia warstwy 1 w tych przypadkach. Logika nakazuje użycie najlepszej lub najwyższej wartości jako rezultatu. Każde zezwolenie w grupie Serwera może mieć ustawioną flagę „negacja” lub „pomiń”, zostanie to wyjaśnione później w tym rozdziale. Ponieważ każdy klient jest zawsze członkiem co najmniej jednej grupy serwera, istnieje specjalna grupa która może być konfigurowana w serwerze konfiguracji, nazywana „Domyślną Grupą Serwera”. Kiedy nowy (poprzednio nieznany) klient dołącza do serwera zostaje automatycznie członkiem tej grupy.

Również jeśli aktualnie jesteś w Domyślnej Grupie Serwera i zostałeś dołączony do nowej grupy, wtedy automatycznie opuszczasz Domyślną Grupę Serwera.

 

Przykład:

Powiedzmy, że jesteś członkiem trzech Grup Serwera: Administrator Serwera, Lider Klany oraz Organizator Wojny. Administrator Serwera ma zezwolenie i_client_kick_power o wartości 50. Lider Klanu ma zezwolenie i_client_kick_power o wartości 100 oraz Organizator Wojny nie ma w ogóle i_client_kick_power. Zezwolenie wynikowe w Warstwie 1 dla Ciebie wynosi 100 dla i_client_kick_power, ponieważ jest to najwyższa wartość ze wszystkich Twoich grup serwera.

 

Czasami możesz chcieć utworzyć Grupę Serwera, która wpływa negatywnie na użytkowników w niej umieszczonych. Przykładowo grupa „Przyklejony” uniemożliwiająca zmianę kanałów lub grupa „Cichy” usuwająca pozwolenie na rozmowę klientów lub otrzymywanie wiadomości. Aby na to zezwolić, negatywna flaga może zostać dodana do zezwoleń serwera grupy. Jeśli jesteś członkiem grupy, która posiada zezwolenie oznaczone negatywną flagą, nie otrzymasz najwyższej wartości tego zezwolenia, ale najniższą wartość oznaczoną negacją.

Przykład:

Stworzyłeś Grupę Serwera nazwaną „Przyklejony”. Zawiera ona tylko jedno zezwolenie: i_channel_join_power ustawione na „-1”, to zezwolenie oznaczone jest negatywną flagą. Teraz jeśli przyznasz grupę przyklejoną któremuś klientowi nie będzie mógł on zmieniać więcej kanałów. Działa to również jeżeli użytkownik wstawiony do grupy „Przyklejony” posiada ustawioną pozytywną wartość i__channel_join_power, ponieważ flaga negacji zapewni, że rezultatem warstwy 1 będzie najniższa zanegowana wartość zezwolenia i_channel_join_power, a zatem „-1” lub mniej. Powodem, przez który nie można zmieniać kanałów, jest fakt, że normalnie wartość i_channel_needed_join_power nie jest ustawiona, a nieustawione zezwolenie domyślnie przyjmie wartość 0. Ponieważ „-1” to mniej niż 0, użytkownik nie będzie mógł dołączać do grup.

 

Ponieważ Grupy Serwera są pierwszym poziomem warstw zezwoleń, jest możliwe, że zostaną nadpisane przez zezwolenia wyższych poziomów. Ponieważ często jest pożądane, aby zapobiec Grupom Kanału (Poziom 4) na nadpisanie zezwoleń otrzymanych w Grupach Serwera, istnieje flaga „pomiń”. Jeśli zezwolenie w Grupie Serwera (poziom 1) lub w Specjalnym zezwoleniu klienta (poziom 2) posiada flagę „pomiń”, zezwolenie to nie będzie zmodyfikowane przez zezwolenie z Grup Kanałów (Poziom 4) lub Warstwy 3.

Przykład:

Jako administrator serwera nie chcesz aby grupa kanału mogła omijać Twoje zezwolenia. Poprzez dodanie flagi „pomiń” do wszystkich zezwoleń w grupie administratora serwera upewniasz się, że bez względu na to jak te zezwolenia będą skonfigurowane w dowolnej grupie kanału, która może zostać przyznana, zezwolenia w tych grupach kanału nie wpłyną na żadne z Twoich możliwości.

 

Poziom 2: Specjalne zezwolenia klienta

———————————–

Te zezwolenia ustawione sądla specyficznego klienta i nadpisują dowolne zezwolenia z Warstwy 1. Zezwolenia w tej warstwie mogą także (jak zezwolenia Grup Serwera) mieć flagę „pomiń”, która upewni, że Grupy Kanałów (Poziom 4) i Kanały (Poziom 3) nie nadpiszą wartości tych zezwoleń.

 

Przykład: Jesteś „gościem” Grupy Serwera, która ma wartość i_client_kick_power ustawioną na zero. Ponieważ chcesz mieć możliwość wyrzucania bez przyłączania się do grupy administratora lub podobnej, dodajesz specjalne zezwolenie klienta z i_client_kick_power o wartości 100. Ponieważ Specjalne Zezwolenia Klienta są na poziomie 2, nadpiszą zezwolenia Poziomu 1, kiedy nastąpi nałożenie się.

 

Poziom 3: Specjalne zezwolenie kanału

————————————

Specjalne Zezwolenia Kanału są podobne do Specjalnych Zezwoleń Klienta, ale mają miejsce na poziomie kanału. Przykładem na to może być kontrola tego, kto może rozmawiać na kanale. Po prostu ustaw na kanale wartość i_client_needed_talk_power i tylko klienci z równą lub wyższą wartością zezwolenia i_client_needed_talk_power będą mogli rozmawiać na kanale. Innym pożytecznym przyładem użycia mogą być kanały, na które mogą dołączyć tylko pewni użytkownicy (poprzez i-_channel_needed_join_power) lub które mogą być oglądane tylko przez specjalnych użytkowników (via i_channel_needed_subscribe_power). Wszystkie specjalne zezwolenia kanału, które mogą zostać logicznie użyte w zakresie kanału, są ważne tylko w zakresie kanału. Przykładowo, jeżeli specjalne zezwolenie kanału daje Ci wysoką wartość i_client_kick_power, możesz używać jej tylko do wyrzucania klientów na tym kanale, nie klientów znajdujących się na innych kanałach. Oczywiście niektóre zezwolenia nie mają logicznego zakresu do którego mogą zostać dostosowane, przykładowo b_virtualserver_stop – te będą działały dokładnie tak samo jakby zostały przyznane np. poprzez Grupę Serwera.

 

Poziom 4: Grupy Kanału

———————-

Każdy klient jest częścią dokładnie jednego jednej grupy kanału. Kiedy klient zostaje przydzielony do nowej grupy kanału, serwer automatycznie usuwa tego klienta z poprzedniej grupy kanału. Wszystkie zezwolenia, które otrzymasz poprzez grupę kanału, mogą zostać użyte tylko na poziomie kanału, przykładowo jeżeli otrzymałeś b_channel_modify_password pozwoli Ci to jedynie na zmianę hasła kanału, w którym aktualnie masz zezwolenie. Istnieją dwie specjalne grupy kanału, które są konfigurowane przez ustawienia serwera, „Domyślna Grupa Kanału” przypisana każdemu klientowi, który dołączy po raz pierwszy oraz „Domyślna Grupa Kanału Administratora”, która przydzielana jest klientowi tworzącemu kanał.

 

Poziom 5: Specjalne zezwolenia kanału i klienta

———————————————–

Specjalne zezwolenia kanału i klienta są jakby kombinacją Specjalnych Zezwoleń Klienta (Poziom 2) i Specjalnych Zezwoleń Kanału (Poziom 3). Przypisane są jednocześnie klientowi i kanałowi. Działają tylko jeśli mogą mieć wpływ na określonego klienta i określony kanał. Używane jest to przez klienta dla właściwości priorytetu mówcy: jeśli masz przydzielony status priorytetowego mówcy, kanał i specjalne zezwolenie klienta jest dodawane do Twojego klienta i aktualnego kanału na którym jesteś (nazwane b_client_is_priority_speaker). Podobnie jak w warstwie 3 i warstwie 4 wszystkie zezwolenia, które mogą być logiczne stosowane w zakresie kanału będą ważne wewnątrz kanałów, w których otrzymałeś dane zezwolenie.

 

Kto może edytować system zezwoleń?

+++++++++++++++++++++++++++++++++++

System zezwoleń decyduje również kto może edytować system zezwoleń, zazwyczaj to zadanie powierzane jest tylko administratorom.

 

Tworzenie i Usuwanie Grup

—————————-

Aby utworzyćgrupę serwera potrzebujesz zezwolenia b_virtualserver_servergroup_create.

Aby usunąć grupę serwera potrzebujesz zezwolenia b_virtualserver_servergroup_delete.

Aby utworzyć grupę kanału potrzebujesz zezwolenia b_virtualserver_channelgroup_create.

Aby usunąć grupę kanału potrzebujesz zezwolenia b_virtualserver_channelgroup_delete.

 

Dodawanie i Usuwanie Klientów do/z Grup

——————————————

Aby dodać klienta na serwer lub do grupy kanału potrzebujesz wartości i_group_member_add_power większej lub równej od wartości i_group_needed_member_add_power konkretnej grupy. Analogicznie potrzebujesz wartości i_group_member_remove_power większej lub równej od i_group_needed_member_remove_power konkretnej grupy.

Dodatkowo do usunięcia lub dodania klienta z lub do grupy Twoja wartość i_client_permission_modify_power musi być większa lub równa wartości i_client_needed_permission_modify power klienta.

 

Dodawanie, Usuwanie i Edytowanie Zezwoleń

—————————————-

Wszystkie poniższe pytania muszą być opowiedziane „Tak” przy dodawaniu, usuwaniu lub edytowaniu zezwoleń na dowolnej warstwie:

  1. Czy edytujący klient posiada Przydzieloną Moc dla określonego zezwolenia z wartością, która nie jest zero?
  2. Czy wartość i_permission_modify_power edytującego klienta jest większa lub równa od Przydzielonej Mocy do określonego zezwolenia?
  3. Czy przy edytowaniu i_group_modify_power nowa wartość jest mniejsza lub równa od wartości i_group_modify_power edytującego klienta?
  4. Czy przy edytowaniu i_permission_modify_power nowa wartość jest mniejsza lub równa od wartości i_permission_modify_power edytującego klienta?
  5. Czy przy edytowaniu i_needed_modify_power_* (nazywanej również Przyznanym-Zezwoleniem) czy nowa wartość jest mniejsza lub równa od wartości Przyznanego-Zezwolenia omawianego zezwolenia edytującego klienta?

 

W zależności od miejsca, w którym zezwolenie jest edytowane, muszą być wykonane dodatkowe sprawdzenia:

Edytowanie Zezwoleń w Grupie Serwera (Poziom 1):

-Czy i_group_modify_power edytującego klienta jest większe lub równe od i_group_needed_modify_power grupy która jest edytowana?

Edytowanie Zezwoleń Klienta (Poziom 2):

-Czy i_client_permission_modify_power edytującego klienta jest większe lub równe od i_client_needed_permission_modify_power edytowanego klienta?

Edytowanie Zezwoleń Kanału (Poziom 3):

-Czy i_channel_permission_modify_power edytującego klienta jest większe lub równe od i_channel_needed_permission_modify_power znajdującego się na konfigurowanym kanale?

Edytowanie Zezwoleń w Grupie Kanału (Poziom 4):

-Czy i_group_modify_power edytującego klienta jest większe lub równe od i_group_needed_modify_power grupy, która jest edytowana?

Edytowanie Specjalnych Zezwoleń Klienta i Kanału (Poziom 5):

-Czy i_client_permission_modify_power edytującego klienta jest większe lub równe od i_client_needed_permission_modify_power edytowanego klienta?

-Czy i_channel_permission_modify_power edytującego klienta jest większe lub równe od i_channel_needed_permission_modify_power,znajdującego się na konfigurowanym kanale?

 

Zezwolenia Automatycznej Aktualizacji

————————-

Kiedy System Zezwoleń zostaje zaktualizowany, serwer automatycznie spróbuje przydzielić nowe zezwolenia istniejącym grupom.

Aby zezwolić na automatyczne aktualizacje, dodaj po prostu wartość i_group_auto_update_type do danej grupy. Dostępne są następujące wartości:

 

Wartość 10: Grupa będzie obsługiwana jako „Channel Guest”

Wartość 15: Grupa będzie obsługiwana jako „Server Guest”

Wartość 20: Grupa będzie obsługiwana jako „Query Guest

Wartość 25: Grupa będzie obsługiwana jako „Channel Voice”

Wartość 30: Grupa będzie obsługiwana jako „Server Normal”

Wartość 35: Grupa będzie obsługiwana jako „Channel Operator”

Wartość 40: Grupa będzie obsługiwana jako „Channel Admin”

Wartość 45: Grupa będzie obsługiwana jako „Server Admin”

Wartość 50: Grupa będzie obsługiwana jako „Query Admin”

 

Jak możesz zobaczyć, każda z wartości reprezentuje grupę z domyślnymi ustawieniami zezwoleń dla serwera TeamSpeak 3. Przykładowo, jeśli System Zezwoleń jest zaktualizowany z nowym zezwoleniem dla Administratorów Serwera, wszystkie grupy mające wartość i_group_auto_update_type ustawioną na 45 zostaną automatycznie zaktualizowane.