Jiří Eischmann v příspěvku na svém blogu představuje typy, jak lépe chránit své soukromí na mobilním telefonu: "Asi dnes neexistuje způsob, jak se sledování vyhnout úplně. Minimálně ne způsob, který by byl kompatibilní s tím, jak lidé technologie běžně používají. Soukromí ovšem není binární věc, ale škála. Absolutního soukromí je dnes na Internetu dost dobře nedosažitelné, ale jen posun na škále blíže k němu se počítá. Čím méně dat se o vás posbírá, tím nepřesnější budou vaše profily a tím méně budou zneužitelné proti vám."
Byla vydána nová stabilní verze 25.05 linuxové distribuce NixOS (Wikipedie). Její kódové označení je Warbler. Podrobný přehled novinek v poznámkách k vydání. O balíčky se v NixOS stará správce balíčků Nix.
Multiplatformní open source spouštěč her Heroic Games Launcher byl vydán v nové stabilní verzi 2.17.0 Franky (Mastodon, 𝕏). Přehled novinek na GitHubu. Instalovat lze také z Flathubu.
Organizace Apache Software Foundation (ASF) vydala verzi 26 integrovaného vývojového prostředí a vývojové platformy napsané v Javě NetBeans (Wikipedie). Přehled novinek na GitHubu. Instalovat lze také ze Snapcraftu a Flathubu.
Klávesnice IBM Enhanced Keyboard, známá také jako Model M, byla poprvé představena v roce 1985, tzn. před 40 lety, s počítači IBM 7531/7532 Industrial Computer a 3161/3163 ASCII Display Station. Výročí připomíná článek na zevrubném sběratelském webu Admiral Shark's Keyboards. Rozložení kláves IBM Enhanced Keyboard se stalo průmyslovým standardem.
Vyšlo Pharo 13 s vylepšenou podporou HiDPI či objektovým Transcriptem. Pharo je programovací jazyk a vývojové prostředí s řadou pokročilých vlastností.
Java má dnes 30. narozeniny. Veřejnosti byla představena 23. května 1995.
1. července Mozilla vypne službu Fakespot pro detekci podvodných recenzí v internetových obchodech. Mozilla koupila Fakespot v květnu 2023.
8. července Mozilla vypne službu Pocket (Wikipedie) pro ukládání článků z webu na později. Do 8. října si uživatelé mohou vyexportovat data. Mozilla koupila Pocket v únoru 2017. Několik měsíců byl Pocket integrovanou součástí Firefoxu.
Turris OS má aktuálně problém s aktualizací související s ukončením podpory protokolu OCSP u certifikační autority Let's Encrypt.
Záměrně jsem se rozhodl pro demonstraci konfigurace prostřednictvím jednoduchého příkladu, protože není v silách (a koneckonců ani záměrem) tohoto článku probrat detailně všechny možnosti ústředny. Nechť vám tento díl slouží jen jako jakýsi "nástřel" usnadňující začátek. Zájemci o serióznější aplikaci určitě nevynechají buď knihu Asterisk-TFOT zmiňovanou v prvním díle nebo on-line stránky dokumentace.
Asterisk se konfiguruje zásadně pomocí textových konfiguračních souborů, které najdeme (pokud jsme při instalaci neopomněli make samples
) všechny pěkně pohromadě v adresáři /etc/asterisk
. Dobrou zprávou je, že nejnovější verze Asterisku (1.4) obsahuje GUI rozhraní založené na vestavěném web serveru, které vám pomůže Asterisk nakonfigurovat i bez detailních znalostí jeho architektury. Je ovšem nutno poznamenat, že tato schopnost je v Asterisku úplně nová (a tudíž také ne dostatečně odladěná), takže bych na ni příliš nespoléhal (já to ani nezkoušel, ale rád si přečtu zkušenosti čtenářů). Ti, kdož chtějí spolehlivou ústřednu bez experimentů, se proto spíše spolehnou na starý dobrý textový editor.
Tento soubor obsahuje konfiguraci zařízení komunikujících s Asteriskem pomocí SIP protokolu. V našem připadě (a v drtivé většině případů) půjde o telefony. Zde definujeme 3 telefony:
; ; SIP Configuration for Asterisk ; ; Syntax for specifying a SIP device in extensions.conf is ; SIP/devicename where devicename is defined in a section below. ; [general] port = 5060 ; Port to bind to context = praha ; Default context for incoming calls disallow=all ; need to disallow=all before we can use allow= allow=ulaw ; Note: In user sections the order of codecs dtmfmode=auto ; Set default dtmfmode for sending DTMF. Default: rfc2833 [jarda] type=friend username=jarda userid=Jarda Toman <17> host=dynamic [tomas] type=friend username=tomas userid=Tomas Rukl <27> host=dynamic [jirka] type=friend username=Jirka userid=Jiri Fuml <37> host=dynamic
V sekci [general]
vidíme všeobecné nastavení platné pro všechny telefony. Port 5060 je standardizován pro všechna SIP zařízení. Asterisk rozlišuje umístění zařízení do domén, tzn. kontextů. My pro jednoduchost užijeme pouze jediný, pracovně nazvaný Praha. Dále vidíte, že z důvodu kvality hovorů povoluji pouze jediný kodek, totiž G.711 u-law. Specifikuji také způsob přenosu DTMF po kanálu.
Po sekci [general]
následují záznamy registrující jednotlivé telefony. Naše telefony nemají pevnou IP adresu (host=dynamic
), a proto se identifikují logováním pomocí uživatelského jména (to je samozřejmě také nutno nastavit u každého telefonu). Je ale možno použít i hesla, ta tu pro jednoduchost neužívám.
Telefony se obvykle používají obousměrně (jednou volám já, jindy někdo zavolá mně) a to Asterisku řekneme pomocí type=friend
. Na displeji volaného obvykle chceme zobrazit jméno volajícího a jeho linku - to nám zajistí volba userid
.
Tento soubor je, dá se říci, srdcem naší ústředny - definuje totiž celý číslovací plán. Zde definujeme chování všech spojení v ústředně. Oproti tradičním ústřednám, kde je každé číslo (klapka) přiřazeno telefonu nebo obecně nějakému rozhraní, je v Asterisku číslo definováno jako seznam příkazů k vykonání. Příkazy jsou obecně vykonávány v pořadí definovaném svým priority
tagem, přičemž jisté příkazy jako Dial nebo GotoIf mají možnost, v závislosti na určitých podmínkách, přesměrování někam jinam.
V syntaxi souboru je každý krok zapsán v tomto formátu:
exten => číslo,priorita,příkaz(parametry)
V tomto souboru tedy přiřadíme našim SIP telefonům jejich čísla a propojíme je tak, aby si mohly vzájemně volat:
; ; Static extension configuration file. This is where you ; configure all your inbound and outbound calls in Asterisk. ; ; ; The "General" category is for certain variables. ; [general] ; static=yes writeprotect=yes ; The "Globals" category contains global variables that ; can be referenced in the dialplan with ${VARIABLE} or ; ${ENV(VARIABLE)} for Environmental variable ; ${${VARIABLE}} or ${text${VARIABLE}} or any hybrid ; [globals] ; ========================================================== ; =============== Dialplan ================================= ; ========================================================== [praha] exten => 100,1,Answer exten => 100,n,Playback(demo-echotest) exten => 100,n,Echo() exten => 100,n,Hangup() ;SIP users exten => 17,1,Dial(SIP/jarda) exten => 27,1,Dial(SIP/tomas) exten => 37,1,Dial(SIP/jirka)
Vidíme, že jsem našim uživatelům přiřadil v kontextu praha
čísla, na která si mohou volat. Zároveň jsem pro zkoušku ústředny nadefinoval číslo 100, které přehraje volajícímu zprávu a demonstruje také možnost ústředny zaznamenávat hovory (funkce Echo). Jistě si povšimnete, že jsem pro toto číslo nadefinoval pouze prioritu 1 a ostatní jsem nahradil písmenkem n
. To v podstatě značí prioritu o jedna větší než byla předchozí. Stejného efektu bych dosáhl, pokud bych místo těchto písmenek dosadil priority 2, 3 a 4.
Uplně na začátku v sekci [general]
jsem prostřednictvím direktiv static
a writeprotect
také zablokoval možnost dynamické změny dialplánu. Je to jakási bezpečnostní pojistka, protože za jistých okolností a pomocí vzdálené administrace je možné dynamicky měnit číslovací plán - pokud to nepotřebujeme, je vhodné to zakázat.
Takže náš první a velice triviální (nicméně funkční) číslovací plán máme hotov, a pokud máme i telefony připojeny do sítě, můžeme vše otestovat. Spustíme démona Asterisku příkazem
/etc/init.d/asterisk start
Pokud máme vše správně nainstalováno, tak by se spuštěný démon měl automaticky připojit k deváté virtuální konzoli (Alt-F9), kde bude pravděpodobně vidět spousta hlášek informujících o nahrávání různých konfiguračních souborů. Je dobré si to pročíst, občas se tam objeví docela důležité hlášení informující třeba o syntaktické chybě nebo jiném problému.
Na této konzoli se také objevuje hlášení o stavu ústředny, postup spojování, rozpojování nových či stávajících hovorů a vůbec všech akcích, které ústředna právě vykonává.
Kromě tohoto dosti důležitého výstupu můžeme protřednictvím této konzole ústředně zadávat i různé příkazy a efektivně ji tak spravovat - po nastartování Asterisku by se nám po stisku klávesy Enter měla objevit příkazová řádka
*CLI>
kam můžeme tyto příkazy zadávat. Zmíním alespoň některé hodně užívané příkazy:
help |
vypíše všechny známé příkazy |
help <příkaz> |
vypíše návod k použití příkazu |
reload |
znovu načte knofiguraci |
restart when convenient |
restartuje Asterisk, až nebude nikdo volat |
Pokud vás nebaví pořád fyzicky sedět u ústředny a koukat na devátou konzoli, pak je tu možnost vzdáleného připojení. Stačí se na stroj nějak přilogovat (ssh, telnet) a zadat:
asterisk -r
Tak, ústředna běží, telefony připojeny, můžeme to otestovat. Zkuste si mezi nimi zavolat, a pokud jste udělali vše správně, mělo by to zafungovat.
V příštím dílu seriálu náš číslovací plán trochu vylepšíme - ošetříme chybové stavy a připojíme naši našlápnutou ústřednu k veřejné telefonní síti. Takže se těšte!
Nástroje: Tisk bez diskuse
Tiskni
Sdílej:
1. re-INITE: skoro bych rekl, ze jeho pouzivani je velmi nerozumne. A nejen proto, ze nekteri klienti ho "nerozdychaji", ale zejmena proto, ze tim ztratite kontrolu na RTP streamem a nebudete schopen zabijet "uhnile" hovory.
2. userid: S tim jsem se tez nesetkal a IMHO se jedna spise o chybu, nez starou/novou versi. Ale kdyz to Asterisk zkousne (jeko ostatne kde co , tak proc ne...
Hezky den!
kokoska.rokoska
1. Cesta RTP: pokud neni potreba "prekonavat" NAT a Asterisk je spravne nastaven, tak po re-INVITE Asterisk samozrejme "vypadne z kola ven"
2. Traskodovani: ja se domnivam, ze se nejedna o bug, ale u umysl. Pri generovani noveho INVITE totiz Asterisk nabizi v SDP celou sadu kodeku nastavenou pro konkretniho peera (a v poradi definovanem administratorem - ten preci vi, co dela, ze . A vcelku pochopitelne akceptuje odpoved od peera. Zvysuje se tim pravdepodobnost uspesneho spojeni a tim, ze vychazite vstric klientskym zarizenim, tak sice mozna zvysite zatez systemu, ale statisticky skoro urcite zkvalitnite samotnou komunikaci - kazdy klient ma prece duvod, pro si nastavil prave takove poradi kodeku...
Druha moznost je posilat v SDP odchoziho INVITE jen to co prislo "z druhe strany" - tuto filozofii razi FreeSWITCH. Vyhnete se tim transkodovani, ale znacne snizite uzivatelum komfort.
Jedinou (byt pofiderni) moznosti by bylo pouziti Asteriskova soucasneho systemu a nasledne zaslani re-INVITE zpet "na sebe". Ale to by byla velka cunarna, jak jiste uznate
1. Rychlosti: Ano, soucasna kvalita linek (nepocitame-li nektere wifi spoje) je uz dostatecna pro G.711 a kdo muze at ho pouziva...
Problem muze nastat pouze pri mnoha soucasnych hovorech z firemnich PBX - pouhych 20 soucasnych hovoru spotrebuje na upstreamu od ustredny temer 2 Mb/s. A u roadwarrioru dokonce dvojnasobek...
2. G.711a <-> G.711u: Prehazet poradi bitu skutecne na prvni pohled kvalitu nezhorsi Ale i zde existuji uskali - naroste latence spoje (problem pro echocancel a jitterbuffer) a protoze nepouzivame (aspon vetsina ne) HW prevodniky, tak velmi pravdepodobne naroste i jitter. Takze i trasnkodovani "alaw" <-> "ulaw" je vhodne se vyhnout
1. Prudeni vyrobcu: v tom s Vami samozrejme souhlasim
2. Prepojeni hovoru: tam by IMHO re-INVITE vubec nemel prijit do hry. Pro prepojeni hovoru by mel byt pouzit bud REFER na klientske strane nebo transparentni prepojeni na strane PBX (u Asteriska je implementovano pomoci "kodu" z features.conf)
3. Dohled nad RTP: znovu opakuji, ze IMHO existuje velmi zavazny duvod, proc udrzovat kontrolu nad RTP. A tim duvodem je prave zminovana moznost zabijeni "uhnilych" hovoru. Aneb tech, u nichz signalizacne nedoslo k ukonceni a pritom RTP uz davno netecou. My nemame na "ustredne" velky provoz (max 15 000 hovoru mesicne), ale i tak je takovych hovoru nekolik desitek kazdy mesic. Operatori by Vam zajiste potvrdili, ze procento takto nasilne ukoncovanych hovoru vubec neni zanedbatelne...
Asterisk 1.0.7-BRIstuffed-0.2.0-RC7k, Copyright (C) 1999-2004 Digium. Written by Mark Spencer ========================================================================= Connected to Asterisk 1.0.7-BRIstuffed-0.2.0-RC7k currently running on server (pid = 8691) server*CLI> reload Feb 27 13:58:09 NOTICE[8692]: indications.c:397 ast_unregister_indication_country: Removed default indication country 'us' Feb 27 13:58:09 WARNING[8692]: chan_sip.c:8703 reload_config: Unknown dtmf mode 'auto', using rfc2833 Feb 27 13:58:09 WARNING[8692]: pbx_config.c:1663 pbx_load_module: Invalid priority 'n' at line 10 Feb 27 13:58:09 WARNING[8692]: pbx_config.c:1663 pbx_load_module: Invalid priority 'n' at line 11 Feb 27 13:58:09 WARNING[8692]: pbx_config.c:1663 pbx_load_module: Invalid priority 'n' at line 12