Uživatelské nástroje

Nástroje pro tento web


navody:vps:api

Rozdíly

Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.

Odkaz na výstup diff

Obě strany předchozí revizePředchozí verze
Následující verze
Předchozí verze
navody:vps:api [2019/06/07 10:31] – [Linux] Oprava, CLI nyni funguje i po restartu lebauxnavody:vps:api [2026/05/28 12:15] (aktuální) domogled
Řádek 8: Řádek 8:
 ===== Dokumentace API ===== ===== Dokumentace API =====
 Dokumentace API, tzn. seznam zdrojů, možných akcí, vstupních a výstupních Dokumentace API, tzn. seznam zdrojů, možných akcí, vstupních a výstupních
-parametrů je k vidění na https://api.vpsfree.cz/v5.0/.+parametrů je k vidění na https://api.vpsfree.cz/.
  
 Bez přihlášení se zobrazuje seznam všech zdrojů, tj. i těch, se kterými můžou Bez přihlášení se zobrazuje seznam všech zdrojů, tj. i těch, se kterými můžou
Řádek 26: Řádek 26:
   * JavaScript - https://github.com/vpsfreecz/haveapi/tree/master/clients/js   * JavaScript - https://github.com/vpsfreecz/haveapi/tree/master/clients/js
   * Go - https://github.com/vpsfreecz/haveapi/tree/master/clients/go   * Go - https://github.com/vpsfreecz/haveapi/tree/master/clients/go
-  * Webové rozhraní z HaveAPI - https://github.com/vpsfreecz/haveapi-webui +  * Webové rozhraní z HaveAPI - https://github.com/vpsfreecz/haveapi-webui (zastaralé) 
-  * Souborový systém založený na FUSE - https://github.com/vpsfreecz/haveapi-fs+  * Souborový systém založený na FUSE - https://github.com/vpsfreecz/haveapi-fs (zastaralé)
  
 Ukázka použití je vždy v ''README.md'' každého klienta. Obecně se klientovi Ukázka použití je vždy v ''README.md'' každého klienta. Obecně se klientovi
Řádek 37: Řádek 37:
 [[https://api.vpsfree.cz/doc/protocol.md|dokumentaci]]. [[https://api.vpsfree.cz/doc/protocol.md|dokumentaci]].
  
-===== Autentizace ===== +**poznámka** Pokud API vpsfree vrací http kód 500, ujistěte se, že váš REST klient posílá http hlavičku `User-Agent: x"`, která nesmí být prázdným řetězcemNejspíš jsou povinné i hlavičky `Accept: application/json` `"Content-Type: application/json`Většina http rest knihoven hlavičku `User-Agent` přidá automaticky, ale některé to nedělají.
-Lze využívat dvě autentizační metodyTou první a jednodušší z nich je HTTP +
-basic. S každým požadavkem na API se musí zaslat jméno hesloJe to dobrá +
-volba pro jednorázové akcepokud je ale potřeba API volat vícekrát nebo +
-automatizovaně, ukládání hesla na disk či neustálé opisování není dobrý nápad.+
  
-Druhou metodou je autentizace přes tokeny. Funguje to tak, že klient nejprve 
-požádá o vytvoření tokenu, k tomu potřebuje jméno, heslo a připadně i TOTP. 
-Jakmile klient dostane token, může jméno a heslo zapomenout a dále se autentizuje 
-získaným tokenem. 
  
-Tokeny mohou být několika typů s různě dlouhou životností: 
  
-  * fixed - platnost tokenu je pevně dána +===== Autentizace ===== 
-  * renewable_manual - platnost tokenu lze manuálně prodloužit +API podporuje dva způsoby autentizace:
-  * renewable_auto - platnost tokenu je prodloužena při každém požadavku +
-  * permament - token je platný napořád, resp. dokud není smazán+
  
-Typ tokenu a časový interval, o který se prodlužuje, si volí klient.+  * [[#http_basic|HTTP Basic]] 
 +  * [[#tokeny|Pomocí tokenů]]
  
-===== CLI ===== +Konkrétní ukázky autentizace pro podporované programovací jazyky a CLI najdete 
-[[https://github.com/vpsfreecz/vpsfree-client|Klient pro Ruby]] obsahuje i CLI. +[[https://api.vpsfree.cz/v6.0/#auth|dokumentaci API]].
-Pro správnou funkci vyžaduje Ruby >= 2.0 a nainstalované hlavičkové soubory +
-Ruby, OpenSSL a ncurses (většinou balíčky s příponou ''-dev'' či ''-devel'').+
  
-==== Linux ==== +==== HTTP Basic ==== 
-Instalace CLI na Linux distribucích založených na Arch Linux (Testováno na [[https://manjaro.org/download/xfce/|Manjaro 18.04 Xfce]]):+S každým požadavkem na API se musí zaslat jméno a heslo v HTTP hlavičce "Authorization"
 +Je to dobrá volba pro jednorázové akce, pokud je ale potřeba API volat vícekrát nebo 
 +automatizovaně, ukládání hesla na disk či neustálé opisování není dobrý nápadHTTP basic 
 +nelze použít, pokud máte aktivované dvoufaktorové ověřování.
  
-<code bash> +==== Tokeny ==== 
-sudo pacman -Syu #aktualizujeme systém +Klient nejprve požádá o vytvoření tokenu, k tomu potřebuje jméno, heslo připadně i TOTP. 
-sudo pacman -S rubygems #nainstaluje rubygems ruby +Jakmile klient dostane token, může jméno a heslo zapomenout a dále se autentizuje 
-gem install vpsfree-client #nainstalujeme vpsfreeclient (nepoužívejte tady SUDO install!) +získaným tokenem.
-</code>+
  
-Přidáme PATH k nainstalovaným gems do ''~./bashrc''.+Tokeny mohou být několika typů s různě dlouhou životností:
  
-<code bash> +  * //fixed// - platnost tokenu je pevně dána 
-sudo nano ~/.bashrc +  //renewable_manual// - platnost tokenu lze manuálně prodloužit 
-</code>+  //renewable_auto// - platnost tokenu je prodloužena při každém požadavku 
 +  * //permanent// - token je platný napořád, resp. dokud není smazán
  
-Na konec souboru přidáme:+Typ tokenu a časový interval, o který se prodlužuje, si volí klient.
  
-<code bash> +===== Scopes ===== 
-if which ruby >/dev/null && which gem >/dev/null; then +U autentizačních tokenů si můžeme zvolit, jaké akce bude token mít k dispozici. 
-    PATH="$(ruby -r rubygems -e 'puts Gem.user_dir')/bin:$PATH" +To se může hodit u tokenů s dlouhou nebo permanentní platností. Každá akce 
-fi +má svůj //scope//, jehož název najdeme v dokumentaciDostupné scope se nastavuje, 
-</code>+když žádáme o nový token, tj. zasílá se společně s přihlašovacími údaji.
  
-Restartujeme shell ''exec $SHELL'' nebo počítač. Otestujeme funkčnost CLI, třeba příkazem: +Ukázky možných scopes:
-<code bash> +
-vpsfreectl ip_traffic top +
-</code>+
  
-še uvedené íkazy nefungují na distribucích založených na Debian/Ubuntu jiných.+  * ''all'' povolí přístup ke všem akcím, toto je výchozí hodnota 
 +  * prázdný scope, ístup je povolen jen k akci ''user#current'', což zobrazí info o aktuálním uživateli; toto se využívá pro přihlášení do Discourse a KB 
 +  * ''vps#show'' povolí zobrazení info o jakékoli VPS 
 +  * ''vps#show:vps_id=123'' info o VPS s ID 123 
 +  * ''vps#*'' umožní volat všechny akce nad všemi VPS 
 +  * ''vps#*:vps_id=123'' všechny akce nad VPS s ID 123 
 +  * ''{vps,dataset}#{index,show}''  umožní vylistovat VPS a datasety zobrazit údaje o jednom konkrétním
  
-==== macOS ====+Scope může obsahovat globy pro název resource a akce. Akce je od resource oddělena křížkem (''#''). Volitelné ID objektů se píšou za dvojtečkou ('':'') a nemohou obsahovat globy, musí být přesně. Každý token může mít více nastavených scopes, oddělují se mezerou. Pro udělení přístupu musí aspoň jedno nastavené scope platit pro volanou akci v API.
  
-Na OS X je nutné nainstalovat OpenSSL přes [[http://brew.sh/|Homebrew]] a až +===== Instalace klienta ===== 
-poté se dá nainstalovat EventMachine (gem, jenž klient vyžaduje).+[[https://github.com/vpsfreecz/vpsfree-client|Klient pro Ruby]] obsahuje CLI 
 +(rozhraní pro příkazovou řádku) a knihovnu pro použití v Ruby skriptech. 
 +Pro správnou funkci vyžaduje Ruby >= 2.7, nainstalované hlavičkové soubory 
 +Ruby a ncurses (většinou balíčky s příponou ''-dev'' či ''-devel''). 
 +Poté klienta nainstalujeme pomocí Ruby gems:
  
 <code bash> <code bash>
-$ brew install openssl +gem install vpsfree-client
-$ sudo gem install eventmachine -- --with-opt-include="/usr/local/opt/openssl/"+
 </code> </code>
  
-Nainstalovat jej lze pomocí ruby gems: +Konkrétní postupy instalace podle platformy:
- +
-<code bash> +
-$ sudo gem install vpsfree-client +
-</code> +
- +
-<note> +
-gem vypíše PATH pod kterým lze najít nainstalovaný balíček +
-<code bash> +
-WARNING:  You don\'t have /home/user/.gem/ruby/2.5.0/bin in your PATH, +
-   gem executables will not run. +
- +
-</code> +
-</note> +
- +
-==== Windows ==== +
-Instalace ve Windows 10 využitím Ubuntu Linux subsystem: +
- +
-  - ve Windows 10 povolit developer mode, nechat nainstalovat +
-  - přes Programy a funkce otevřít přidání součástí Windows, úplně dole zvolit Linux subsystem, nechat nainstalovat a restartovat počítač +
-  - po restartu jako admin spustit v nabídce Start bash +
-  - vytvořit Unix username a heslo +
-  - stisknout y a nechat nainstalovat základ Ubuntu +
- +
-=== Instalace závislostí === +
- +
-<code bash> +
-sudo apt-get install ruby2.1 ruby2.1-dev libssl-dev make g++ +
-</code> +
- +
-=== Quick & Dirty fix pro nastavení ruby2.1 jako výchozího namísto 1.9 === +
- +
-<code bash> +
-sudo rm /usr/bin/ruby /usr/bin/gem /usr/bin/irb /usr/bin/rdoc /usr/bin/erb +
-sudo ln -s /usr/bin/ruby2.1 /usr/bin/ruby +
-sudo ln -s /usr/bin/gem2.1 /usr/bin/gem +
-sudo ln -s /usr/bin/irb2.1 /usr/bin/irb +
-sudo ln -s /usr/bin/rdoc2.1 /usr/bin/rdoc +
-sudo ln -s /usr/bin/erb2.1 /usr/bin/erb +
-sudo gem update --system +
-sudo gem pristine --all +
-</code> +
- +
-Zdroj: http://blog.costan.us/2014/04/restoring-ruby-20-on-ubuntu-1404.html +
- +
-=== Instalace vpsfree-client === +
- +
-<code bash> +
-sudo gem install vpsfree-client +
-</code> +
- +
- +
-----+
  
 +  * Linux
 +    * [[navody:vps:api:arch|Arch Linux]]
 +    * [[navody:vps:api:centos|CentOS]]
 +    * [[navody:vps:api:ubuntu|Ubuntu 20.04]]
 +  * [[navody:vps:api:macos|macOS]]
 +  * [[navody:vps:api:windows|Windows]]
  
 Po instalaci by v ''$PATH'' měl být k dispozici ''vpsfreectl''. Pokud tomu tak Po instalaci by v ''$PATH'' měl být k dispozici ''vpsfreectl''. Pokud tomu tak
Řádek 168: Řádek 119:
  
 <code bash> <code bash>
-$ PATH="$PATH:/home/user/.gem/ruby/2.0.0/bin"+$ PATH="$PATH:/home/user/.gem/ruby/2.7.0/bin"
 </code> </code>
  
-==== Použití CLI ====+===== Použití CLI =====
  
 <code> <code>
Řádek 326: Řádek 277:
         --user USER                  User name         --user USER                  User name
         --password PASSWORD          Password         --password PASSWORD          Password
 +        --scope [SCOPE]              Scope
         --token TOKEN                Token         --token TOKEN                Token
         --token-lifetime LIFETIME    Token lifetime, defaults to renewable_auto         --token-lifetime LIFETIME    Token lifetime, defaults to renewable_auto
Řádek 370: Řádek 322:
 přístupem k ''~/.haveapi-client.yml'' může token získat a použít. přístupem k ''~/.haveapi-client.yml'' může token získat a použít.
 </note> </note>
 +
 +Při vytváření tokenu můžeme specifikovat scope:
 +<code bash>
 +$ vpsfreectl --auth token --scope 'vps#*:vps_id=123' --save vps show 123
 +</code>
 +
 +Příkaz výše vytvoří autentizační token, který bude omezen na volání akcí nad resource ''vps'' s ID 123.
  
 ==== Akce a parametry ==== ==== Akce a parametry ====
navody/vps/api.1559903467.txt.gz · Poslední úprava: autor: lebaux