Menambah Shortcut Program di Desktop Ubuntu 18.04

Ini catatan buat diri sendiri sih.. selalu lupa gimana caranya menambah shortcut program di desktop Ubuntu setelah install program/app baru.

  • Masuk ke direktori /usr/share/applications 
  • Drag & drop icon applications yang hendak ditambahkan.
  • Pertama kali muncul di desktop, icon program belum seperti bawaan aslinya:

cukup klik untuk menjalankan program lalu pilih Trusn and Launch

setelah itu icon akan muncul:

Yealink T19 E2 dengan OPUS

Yay!! Hari ini dapet kiriman Yalink T19 E2 untuk dicoba dengan codec OPUS dan berjalan baik sejauh ini. Belum tau bagaimana nanti jika sudah dipasang di lapangan. Ada keperluan panggilan melalui jalur data satelit yang sudah tentu latensinya tinggi. G729 tidak dapat mengakomodir komunikasi dengan baik, hingga akhirnya dicoba dengan OPUS dan diterima cukup baik.

Beberapa waktu yang lalu sudah mencoba mengontak beberapa produsen IP phone, rata-rata codec OPUS hanya didukung di perangat hi-end, maklum, butuh prosesor agak kenceng. Entah bagaimana Yealink bisa membuat firmware codec OPUS di perangkat low end seperti kelas T19 ini. Love it!

[Tips] Problem Mengaktifkan Kamailio TLS Dengan LetsEncrypt

Jadi barusan nyoba mengaktifkan TLS di SIP server Kamailio saya dengan LetsEncrypt. Pada intinya instalasi sertifikat dengan certbot-auto cukup mudah. Kali ini tinggal menambahkan konfigurasi di tls.cfg di dalam direktori konfigurasi Kamailio:

[server:default]
method = TLSv1
verify_certificate = no
require_certificate = no
certificate = /etc/letsencrypt/live/domain.tld/fullchain.pem
private_key = /etc/letsencrypt/live/domain.tld/privkey.pem

Lalu di file kamailio.cfg SIP server (ip address 192.168.0.123) edit/tambahkan baris berikut:

enable_tls = yes
listen=192.168.0.123:5061

####### TLS Parameters #########
loadmodule "tls.so"
modparam("tls", "config", "/etc/kamailio/tls.cfg")
modparam("tls", "low_mem_threshold1", 0)

Ketika mencoba reload Kamailio, saya mendapati error seperti berikut:

kamailio[18322]: ERROR: tls [tls_domain.c:529]: load_cert(): TLSs<defaul>: Unable to load certificate file '/etc/letsencrypt/live/domain.tld/fullchain.pem'
kamailio[18322]: ERROR: tls [tls_util.h:42]: tls_err_ret(): load_cert:error:0200100D:system library:fopen:Permission denied
kamailio[18322]: ERROR: tls [tls_util.h:42]: tls_err_ret(): load_cert:error:20074002:BIO routines:FILE_CTRL:system lib
kamailio[18322]: ERROR: tls [tls_util.h:42]: tls_err_ret(): load_cert:error:140DC002:SSL routines:SSL_CTX_use_certificate_chain_file:system lib
kamailio[18322]: ERROR: <core> [core/sr_module.c:923]: init_mod_child(): Error while initializing module tls (/usr/lib64/kamailio/modules/tls.so)

f
Karena ada indikasi error yang disebabkan kepemilikan file cert, perlu diubah hak akses file dengan langkah berikut:

root# chmod go+x /etc/letsencrypt/archive
root# chmod go+x /etc/letsencrypt/live

catatan: gunakan sudo juga bukan login sebagai root.

Setelah itu dicoba kembali reload Kamailio dan masalah sudah tidak muncul lagi. Untuk check ,apakah port sudah listen ke TLS, jalankan:

root# ss -ln | egrep "5061"

Links:

Mencoba ‘firewalld’ Sebagai Pengganti ‘iptables’

Dari awal dulu kenal ipchains trus ganti jadi iptables. Belum sempet mainan sampe ngeh banget, eh sekarang sudah ada firewalld. Karena kebanyakan berkutat dengan distro Centos 7 yang defaultnya menggunakan firewalld, akhirnya mau ndak mau ya harus ngeh juga walaupun sedikit-sedikit. Sebelumnya saya pernah posting soal iptables untuk Asterisk di sini. Jadi saya coba ndak jauh-jauh mengingat perintah berikut ini untuk server-server VoIP saya. Yang biasanya saya lakukan sebagai berikut:

Mengaktifkan firewalld agar secara default up setelah reboot atau start.

# systemctl enable firewalld
# systemctl start firewalld

Mengganti port ssh dari 22 ke 8022 (soalnya kalo ndak begitu, selalu diprobe dari mana-mana):

# firewall-cmd --permanent --zone=public --add-port=8022/tcp
# firewall-cmd --permanent --zone=public --remove-service=ssh

Lalu menambahkan port-port penting untuk produksi:

# firewall-cmd --permanent --zone=public --add-service={http,https}
# firewall-cmd --permanent --zone=public --add-port={5060,5061,7000,7001,8000,8443,11000}/tcp
# firewall-cmd --permanent --zone=public --add-port={5060,5061,7000,7001,8000,8443,11000}/udp
# firewall-cmd --permanent --zone=public --add-port=16384-32784/udp

Lalu menambahkan blok ip address yang diperbolehkan untuk mengakses service ke server:

# firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="1.2.3.4" accept'
# firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="6.7.8.0/24" accept'

Optional, kita bisa menambahkan blocking ICMP. Pertama, kita bisa lihat list tipe ICMP:

# firewall-cmd --get-icmptypes
address-unreachable bad-header communication-prohibited destination-unreachable echo-reply echo-request fragmentation-needed host-precedence-violation host-prohibited host-redirect host-unknown host-unreachable ip-header-bad neighbour-advertisement neighbour-solicitation network-prohibited network-redirect network-unknown network-unreachable no-route packet-too-big parameter-problem port-unreachable precedence-cutoff protocol-unreachable redirect required-option-missing router-advertisement router-solicitation source-quench source-route-failed time-exceeded timestamp-reply timestamp-request tos-host-redirect tos-host-unreachable tos-network-redirect tos-network-unreachable ttl-zero-during-reassembly ttl-zero-during-transit unknown-header-type unknown-option

dari list di atas misal kita akan melakukan block echo-reply:

# firewall-cmd --permanent --zone=public --add-icmp-block=echo-reply

Jika dirasa sudah cukup, reload rule di atas dengan perintah:

# firewall-cmd --reload

Dari contoh di atas, sudah keliatan polanya kan? Jika masih belum juga, url berikut ini bisa membantu menjelaskan cara kerja firewalld dengan lebih jelas.

Selamat mencoba!

[Tips] “sngrep” Sebagai Pengganti “ngrep”

Kadang satu atau dua server yang sedang saya tangani tidak selalu bisa terambung ke monitoring Homer. Jadi untuk troubleshoot masih harus meminta bantuan ngrepHanya saja perintahnya cukup panjang dan agak susah merunut ketika trafik sedang ramai. Belakangan nemu tool yang sebenarnya berbasis ngrep, hanya memang dikhususkan untuk trafik SIP, namanya sngrep

Di Yum packaging Centos 7 saat ini belum ada, jadi harus menambahkan file /etc/yum.repos.d/irontec.repo dengan isi:

[irontec]
name=Irontec RPMs repository
baseurl=http://packages.irontec.com/centos/$releasever/$basearch/

tambahkan public key:

rpm --import http://packages.irontec.com/public.key

jalankan update dan install:

[root@aio ~]# yum check-update -y
[root@aio ~]# yum install sngrep -y

Untuk menjalankan cukup ketik: sngrep

Dari tabel di atas kita bisa menggerakkan highlight ke atas dan ke bawah untuk memilih barus transaksi yang hendak dilihat. Misal hendak melihat salah satu proses Register, turunkan highlight ke daftar Method Register lalu tekan enter:

Contoh dialog/transaksi REGISTER yang berhasil dan tidak berhasil seperti berikut:

Lebih enak liatnya kan?

Ada kalanya gambar garis transaksi dengan anak panah di atas muncul sebagai rentetan huruf q seperti: qqqqqqqqqqqqqqqqqqqqqqqqq>
hal ini bisa diatasi dengan menjalankan perintah:

[root@aio ~]# export NCURSES_NO_UTF8_ACS=1

Agar tidak mengulang perintah tiap kali kita login, tambahkan baris berikut di /root/.bash_profile atau di dalam /etc/environment :

export NCURSES_NO_UTF8_ACS=1

Setiap kali login ke username yang sama, maka perintah tersebut akan otomatis dieksekusi.
Selamat mencoba!

[TIPS] Problem Kamailio “contact uri is too long”

Suatu hari saya menemukan masalah Mobile Dialer tidak dapat register ke SIP server kecuali port SIP client diganti ke 5060. Saya pikir firewall SIP server memblokir akses SIP port ke client dari server. Tapi ternyata, saya mendapati error di SIP server sebagai berikut:

kamailio[7968]: WARNING: registrar [sip_msg.c:194]: check_contacts(): contact uri is too long: [sip:021xxxxxxxx@11.2.33.444:48573;app-id=123412341234;pn-type=firebase;pn-tok=fnszKs2QQoA:AbCdEfGHIJkLmNoPQRsTuVwXyZ_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;pn-silent=1;transport=udp]

Secara default panjang maksimal SIP contact URI kamailio diset 255. Kalo kondisi normal sebenarnya baik-baik saja. Tapi kebetulan saya mengaktifkan Google Firebase Cloud Messaging sehingga contact URI menjadi lebih panjang… daaaaann… karena port SIP saya setting random, ada kalanya port SIP client menjadi sepanjang 5 digit. Setelah dihitung, panjang contact URI akan pas 255 kalau port nya 4 digit seperti 5060. Kalo pas kebetulan dapet 48573 seperti di log, akan kelebihan satu digit. Akhirnya di config Kamailio saya tambahkan baris:

modparam("registrar", "contact_max_size", 500)

Lalu setelah reload, akhirnya mobile dialer bisa register dengan lancar

[Tips] Windows 10 Tersambung ke Internet Tapi Tidak Bisa Browsing

Memang sudah ndak bisa lepas dari Windows sih, jadi beberapa pekerjaan perlu digarap dengan aplikasi di bawah OS satu ini walaupun sudah mulai sering ake Ubuntu. Sampe suatu saat entah kenapa tidak bisa browsing sama sekali sementara kegiatan remote ssh, icmp ping, resolve dns, email OutLook masih bisa berjalan dengan lancar. Sampe akhirnya ketemu cara ini:

  • Jalankan  CMD prompt Windows 10 sebagai Administrator.
  • Ketik perintah: netsh int ip reset
  • Reboot Windows 10.
  • Jalankan CMD prompt Windows 10 sebagai Administator.
  • Ketik perintah: netsh winsock reset
  • Reboot Windows 10.

setelah itu laptop kembali bisa dibuat browse lancar.

Transcoding G711 ke Opus di Kazoo

Tempo hari kantor kedatangan tamu dari Aarenet. Mereka memperesentasikan layanan UC yang bisa mereka sediakan untuk level provider. Platform yang mereka gunakan buatan sendiri yang didevelop dari tahun 2004 – 2009, tanpa jualan dulu. Hasilnya juga ndak main-main. Menarik lah pokoknya. Kelak kalo punya ITSP sendiri mungkin kepikiran pakai produk mereka, terutama kalo sudah males ngoprek. Hehehe.

Ada beberapa hal yang bisa dipelajari dari presentasi mereka, yang juga bisa diterapkan di network yang lagi saya bangun. Dari sekian banyak hal, saya jadi ngeh kalau ingin layanan UC bisa diakses dari jaringan 3G/4G (untuk saat ini), yang dipake adalah codec Opus. Hal lain yang saya pelajari dari mereka mungkin nanti saja diceritakan dalam postingan berikutnya (kalo sempet dan inget). Sekarang ini sudah banyak aplikasi softphone yang sudah menggunakan Opus. Salah satu yang saya pakai di PC/laptop yang cukup ringan adalah Microsip. Sedangkan di smartphone, saya memanfaatkan Linphone. Jadi di media server Kazoo yang menghadap ke user akan selalu dipaksa menggunakan Opus (kecuali jika user hendak menggunakan fax di mana harus menggunakan codec G711 ulaw/alaw), sedangkan di sisi menghadap OLO (Other Local Operator) akan tetap menggunakan G711 untuk menjamin kualitas. Karena media server melakukan transcoding, maka di FreeSWITCH ditambahkan konfigurasi seperti berikut:

  • Di sip profile (kebetulan dalam topologi Kazoo hanya punya satu profile), tambahkan baris:
    • disable-transcoding = false (tujuannya untuk mengaktifkan transcoding).
    • inbound-late-negotiation = true (tujuannya supaya media server tidak memilih codec hingga RTP lewat).
    • inherit_codec = true (tujuannya adalah agar media server mencoba codec yang pertama digunakan oleh call leg satunya. Hal ini berhubungan dengan penghematan resource server).
<param name="inbound-late-negotiation" value="true"/>
<param name="inherit_codec" value="true"/>
<param name="disable-transcoding" value="false"/>
  • di dalam freeswitch.xml (di FS Kazoo tidak ada vars.xml) tambahkan baris:
<X-PRE-PROCESS cmd="set" data="media_mix_inbound_outbound_codecs=true"/>
  • Dan terakhir, paksa Device yang teregister ke Kazoo untuk selalu menggunakan Opus dengan cara hanya mengaktifkan codec Opus di setting Device dan di masing-masing software SIP client:

Ketika kita coba melakukan panggilan, maka SDP akan tampak seperti:

INVITE

v=0
o=FreeSWITCH 1522990346 1522990347 IN IP4 116.68.171.76
s=FreeSWITCH
c=IN IP4 1.2.3.4
t=0 0
m=audio 25278 RTP/AVP 102 101 13
a=rtpmap:102 opus/48000/22
a=fmtp:102 useinbandfec=1; maxaveragebitrate=30000; maxplaybackrate=48000; ptime=20; minptime=10; maxptime=40
a=rtpmap:101 telephone-event/48000
a=fmtp:101 0-16
a=rtpmap:13 CN/48000
a=ptime:20

Selamat mencoba!

Ref:

[Tips] Mengganti Nama Multiple File Dalam Direktori

Sepele sih, entah kenapa automake mencari Makefile.in alih-alih mencari Makefile.am. Pasti ada alasannya cuma kondisi sudah cape, jadi saya pikir kapan-kapan saja nyarinya. Paling gampang ngganti nama Makefile.am menjadi Makefile.in. Pada saat sudah merename satu nama file tersebut, ternyata di sub direktori yang sama ada banyak sekali Makefile.am, dan mengganti satu per satu sepertinya bodoh. Akhirnya pake cara perintah shell berikut yang mengcopy file Makefile.am ke Makefile.in dalam direktori yang sama.

$ find -iname "Makefile.am" -exec rename Makefile.am Makefile.in '{}' \;

dan seluruh nama Makefile.am dicopy ke Makefile.in dalam direktori yang sama dan subdirektorinya.

2018

Sudah mulai awal tahun lagi. Cepet banget 12 bulan, ndak tau ilangnya ke mana. Resolusi tahun lalu banyak  yang belum tercapai, malah dapet hasil yang ndak masuk ke daftar resolusi. Jadi untuk tahun ini kira-kira daftarnya seperti ini:

  • Lancar mainan OpenSIPS, Kamailio, dan FreeSWITCH.
  • Lancar dengan Kazoo.
  • Mulai lagi utak atik bahasa pemrograman.
  • Beli gitar akustik.
  • Six packs.
  • Ke Amrik lagi.
  • Mbayar utang-utang.

Kayaknya yang paling penting itu saja. Semoga kali ini tidak meleset, terutama yang terakhir itu. Amin.