Dokumentacja AlgoJudge0.1

Zasoby zewnętrzne

Skąd instalacja może pobierać dokumenty i czy w ogóle może.

Żeby zaimportować zadanie skądinąd, trzeba pobrać jego treść, a hosta, który nie wysyła nagłówka Access-Control-Allow-Origin, przeglądarka nie odczyta — choćby prowadzący bardzo chciał. Pobiera więc Server — i wyłącznie z hostów wymienionych na tym ekranie.

Przełącznika nie ma na tym ekranie

Lista hostów wygląda jak zgoda, a drzwi są zamknięte

O tym, czy cokolwiek z tego się dzieje, decyduje zezwól na ocenianie przez usługi, których ta instalacja nie prowadzi, na ekranie ustawień instancji. Domyślnie jest wyłączone. Dopóki jest wyłączone, nic stąd nie jest pobierane i żadne takie zadanie nie jest wydawane — praca czeka w kolejce — więc włączysz je później i nic nie stracisz.

Strona mówi to na górze, gdy przełącznik jest wyłączony, zanim pokaże ci listę.

Lista hostów

Dodaj hosta po nazwie, usuń go przyciskiem obok. Instalacja przechowuje listę nazw, a dopasowanie jest celowo wąskie:

  • porównywane po całym hoście, więc nazwa, która jedynie kończy się tak samo, nie pasuje;
  • wyłącznie HTTPS i wyłącznie port domyślny;
  • usuń wszystko, a ta instalacja nie pobierze niczego.

Zmiana listy zapisuje się od razu. Obszar otwiera instance:update, więc ta sama osoba, która może włączyć przełącznik, decyduje, dokąd wolno sięgać.

Import z UVa Online Judge

Dwie drogi do środka, dalej jedna wspólna.

Wklej numery zadań, oddzielone przecinkami lub spacjami. Server odszukuje każdy numer w publicznym katalogu, żeby poznać tytuł, pobiera treść i zakłada osobne zadanie — nazwane tak, jak nazywa je archiwum, i widoczne dla całej instalacji, bo zaimportowane zadanie jest wpisem w bibliotece, a nie czyimś szkicem.

Przeglądaj archiwum otwiera zamiast tego przeglądarkę zadań. Podaje ona numer, tytuł i adres treści, więc o nic nie trzeba dopytywać.

Każdy numer dostaje własny wiersz w odpowiedzi. Partia, która zadziałała w połowie, jest przypadkiem zwykłym, a nie błędem: te, które weszły, są już zadaniami.

Co może powiedzieć wiersz
zaimportowano jako UVa-100jest w bibliotece
archiwum nie zna zadania o tym numerze
już zaimportowaneslug jest zajęty, co rozstrzyga Server, a nie zgadujący ekran
treści nie udało się pobraćzadanie mogło zostać wycofane z archiwum

To, czy treść nadal istnieje, rozstrzyga się przez jej pobranie, a nie przez odczytanie pola statusu w cudzym katalogu.

Prefiks sluga można zarezerwować, a wtedy założenie zadania w zarezerwowanej przestrzeni nazw wymaga problem:import:external. To właśnie powstrzymuje kogoś przed ręcznym zrobieniem drugiego UVa-100 obok zaimportowanego — dwa zadania o tej samej nazwie, jedno zaimportowane i jedno wpisane, to pomyłka, której potem nikt nie odkręci.

Lista rezerwacji jest konfiguracją i przychodzi pusta

Zabezpieczenie działa, ale listy prefiksów, którą czyta, nikt za ciebie nie wypełni. Dopóki operator nie zarezerwuje UVa-, nic nie odmówi ręcznie założonemu zadaniu o takim slugu i nic nie zapyta o problem:import:external.

Klucz do archiwum

Instalacja może mieć klucz do archiwum; ustawisz go wśród kluczy dostępu na ekranie instancji. Server prosi o niego dopiero wtedy, gdy otwierasz przeglądarkę zadań — ekran, którego nikt nie otworzył, nie wydał ani jednego z tokenów archiwum.

Sam klucz nigdy nie trafia do przeglądarki. Przeglądarka zadań jest stroną osadzoną, a wszystko, co dostanie, znajdzie się w adresie — dlatego Server wymienia klucz długoterminowy na token krótkotrwały i wysyła tylko ten. Jak długo ten token jest ważny, mówi archiwum; gdy nie mówi nic, dostaje godzinę. Nieudana wymiana jest odmową i nigdy powrotem do zapisanego klucza, i po to właśnie ta wymiana istnieje.

Wyniki są trzy, nie dwa:

  • klucz otwiera archiwum z prywatnymi metadanymi tej instalacji;
  • brak klucza otwiera archiwum publiczne, a strona mówi, że przeglądasz to, co archiwum udostępnia wszystkim. Instalacja, która nie ma żadnego, wybrała przeglądanie anonimowe — to pełnoprawny tryb pracy;
  • wszystko inne jest odmową i mówi jaką: klucz odrzucony, adres tej instalacji odrzucony, archiwum nie ma teraz wolnego poświadczenia albo nie dało się do niego dotrzeć. Dwa pierwsze naprawia administrator; trzeci mija sam.

Server celowo nie schodzi po cichu do trybu anonimowego — ukryłby zepsutą konfigurację za przeglądarką, która wygląda jedynie na ubogą w metadane.

Na tej stronie