libjuice ( JUICE adalah perpustakaan Pembentukan Konektivitas Interaktif UDP ) memungkinkan untuk membuka aliran Protokol Datagram Pengguna (UDP) dua arah dengan traversal Network Address Translator (NAT).
Pustaka ini merupakan implementasi yang disederhanakan dari protokol Pembentukan Konektivitas Interaktif (ICE), sisi klien dan sisi server, ditulis dalam C tanpa ketergantungan untuk platform POSIX (termasuk GNU/Linux, Android, Apple macOS dan iOS) dan Microsoft Windows. Klien hanya mendukung satu komponen melalui UDP per sesi dalam topologi jaringan gateway tunggal standar, karena ini sudah cukup untuk sebagian besar kasus penggunaan saat ini.
libjuice dilisensikan di bawah MPL 2.0, lihat LISENSI.
libjuice tersedia di AUR dan vcpkg. Binding tersedia untuk Rust.
Untuk aplikasi server STUN/TURN berdasarkan libjuice, lihat Violet.
Perpustakaan mengimplementasikan agen ICE lengkap yang disederhanakan (RFC5245 lalu RFC8445) yang menampilkan:
Protokol STUN (RFC5389 lalu RFC8489)
MENGHIDUPKAN relay (RFC5766 lalu RFC8656)
Kesegaran Persetujuan ICE (RFC7675)
ICE Dengan Sabar Menunggu Konektivitas (RFC 8863)
Antarmuka berbasis SDP (RFC8839)
Dukungan tumpukan ganda IPv4 dan IPv6
Multiplexing opsional pada satu port UDP
Keterbatasan dibandingkan dengan agen ICE berfitur lengkap adalah:
Hanya UDP yang didukung sebagai protokol transport dan protokol lainnya diabaikan.
Hanya satu komponen yang didukung, yang cukup untuk Saluran Data WebRTC dan RTP+RTCP multipleks.
Kandidat dikumpulkan tanpa terikat pada setiap antarmuka jaringan, yang berperilaku identik dengan implementasi penuh pada sebagian besar sistem klien.
Ini juga mengimplementasikan server STUN/TURN yang ringan (RFC8489 dan RFC8656). Server dapat dinonaktifkan pada waktu kompilasi dengan flag NO_SERVER
.
Tidak ada!
Secara opsional, Nettle dapat menyediakan algoritma SHA1 dan SHA256 alih-alih implementasi internal.
$ git klon https://github.com/paullouisageneau/libjuice.git $cd jus lib
Pustaka CMake menargetkan libjuice
dan libjuice-static
masing-masing sesuai dengan pustaka bersama dan statis. Target default akan membangun perpustakaan dan pengujian. Ini mengekspor target dengan namespace LibJuice::LibJuice
dan LibJuice::LibJuiceStatic
untuk menghubungkan perpustakaan dari proyek CMake lain.
$ cmake -B membangun $ cd membangun $ membuat -j2
Opsi USE_NETTLE
memungkinkan untuk menggunakan perpustakaan Nettle alih-alih implementasi internal untuk HMAC-SHA1:
$ cmake -B membangun -DUSE_NETTLE=1 $ cd membangun $ membuat -j2
$ cmake -B build -DCMAKE_TOOLCHAIN_FILE=/usr/share/mingw/toolchain-x86_64-w64-mingw32.cmake # ganti dengan file rantai alat Anda$ cd build $ membuat -j2
$ cmake -B build -G "NMake Makefiles"$cd build $ membuat
$ membuat
Opsi USE_NETTLE
memungkinkan untuk menggunakan perpustakaan Nettle alih-alih implementasi internal untuk HMAC-SHA1:
$ jadikan USE_NETTLE=1
Lihat test/connectivity.c untuk contoh koneksi lokal lengkap.
Lihat test/server.c untuk contoh server.