Şimdi sırada LINPHONE kütüphanesi var.. Biz yazılım tasarımı olarak Ejabberd ı IM ve dosya paylaşımında , LINPHONE tarafını da SIP – VOIP çözümü olarak kullanacağımızı düşünerek başladık.. Neden? Çünkü LINPHONE IM ve dosya paylaşımını da destekliyor (dediysem de tonlarca ayar gerekiyor) ancak whatsapp benzeri yıkılmaz bir altyapı için Ejabberd ı tercih ettim.. Whatsapp uçtan uca veri şifrelemeyi sonradan halletmişti ki bizim de bunu bu yapıyı kullanacaksak halletmemiz gerekir.. Tabii onlar 3. Parti bir firmadan bunun desteğini almışlardı.. Firmanin SIGNAL PROTOCOL isimli veri kripto çözümü oldukça iyi. LINPHONE da ise bu iş kendi içinde zaten destekleniyor belirteyim.. sizin bir şey yapmanıza gerek yok..
Ancak biz IM Chat ve dosya paylaşımı için Ejabberd ve görüntülü görüşme ve video konferans için LINPHONE SIP Server ı kullanacağız.. (Turkcell BIP gibi)
LINPHONE un tüm kütüphanesi açık kaynak kodlu.. C++ ve API vb yerlerde PHP var…ister binary kurulumu indirip kurarsınız isterseniz de kaynak kodları indirip C++ derleyici vb yazılımlarla derleyip kendiniz kurabilirsiniz..
Bu kurulum bazan zahmetli bazan kolay olabiliyor.. Makinaya GIT kurun ve linphone un git web sitesinden clone la yın… Kimi yazılarda docker üzerinde kurulumu anlatıyor ancak ben hiç tercih etmedim.. Kaynak kodları alıp derleme işine de girdim ve oldukça zahmetli ve bir çok hata (ki çoğu makinaya eksik yüklenen cmake , compiler vb şeyler) sonunda derleme sonuçlanıyor.. Ancak bu defa daha fazla ayar çekmeniz lazım kurulum için bilmenizde fayda var.. Ama elinizde kaynak kodları da olsun..
LINPHONE Server dedikleri 3 parça : Proxy , Presence ve Conference.. Öyle ayrı ayrı yazılımlar değil ama modüler gibi.. Hepsini tek bir debian 9 üzerinde kurdum.. Önemli olan configuration dosyasını çok iyi bilmek ve ayarlamak.. /etc/flexisip/flexisip.conf isimli ayar dosyasında ilgili ayarları yapıyorsunuz.. Ama günlerce ne yaparsanız yapın çalıştıramadığınız olur söyleyeyim sizi deli edebilir.. (Bana gelmeyin sakın !)
Bu sistem için mutlaka LARAVEL ve COMPOSER denilen framework sistemlerini de linphone ister.. PHP scriptlerinin tümünde LARAVEL framework ü kullanılmış.. Aslında biraz kasılıp kalıp sonra alışıyorsunuz.. LINPHONE un yüklediği /opt altındaki flexisip dizinine girip composer ı uygun parametrelerle çalıştırırsanız tüm laravel ile ilgili kütüphaneleri vb oluşturuyor.. MVC yapısında bir proje oluşturuyor.. Siz mutlaka LINPHONE un size verdiği flexisip içindeki public web i apache2 web server a tanıtmak için apache2 nin site_enabled dizini içine ilgili conf u oluşturup koymalısınız ki web den bu API yi çalıştırabilsin… apache2 nin kendi conf dosyası zaten bu site-enabled içindeki tum conf lari include ediyor otomatik olarak onu bilin… Yani siz kendi conf dosyanız içinde Vhosts oluşturacaksınız bunu da bilin öğrenin…Karışık gibi ama işimiz bunları zorlana zorlana öğrenmek değil mi zaten? Kolay olsa buyursun herkes yapsın.. hadi bari laravel ve composer için bir ipucu vereyim :
Composer ve Laravel 2 veritabani ile calisiyor biri authentication ve session lar icin local sqlite digeri ise mysql veya mssql postgre vb .. .env yi edit edersek ki dizinde gorunmez nano /absolutepath/ .env ile orada database leri set ederiz.
Arada PHP, Apache2 server ları da kurmanız gerekir.. Çünkü LINPHONE da /opt dizini altında ki dizinlerde MySQL üzerinde oluşturacağı tabloların scriptleri vb var.. Onları çalıştırmak için gerekiyor.. Bu scriptleri internette bunlar nasıl kurulur diye anlatan yerleden almayın çünkü yenilediler ve tablolar farklılaştı yoksa delirtir sizi neden çalışmıyor diye..
Bu arada SOCI sql library, REDIS gibi LINPHONE un authentication mekanizmasında kullandığı server ve yapılar da var.. flexisip.conf da bu ayarların hepsini kullandım .. Özellikle soci de soci-request-password de yazacağınız sql sorgusu çok çok önemli.. default u tamamen yanlış geliyor.. ayrıca orada soci için mysql e bağlantı string inde sakın root kullanmayın.. Başta anlatmıştım bunu..
Bir de ben debian 9 linux makinaya DNS kurdum ki öyle IP lerle falan uğraşmadan gerçek ortam gibi çalışayım.. DNS kurulumunda NS kaydı ile birlikte mutlaka SRV kaydı da kullanmalısınız ki SIP çalışan sistemler sizin o server a istek yaptığınızda bu SRV kaydından hangi port üzerinden SIP register vb işlemler yapacaklarını öğreniyorlar ona göre…Ancak yurt dışı server ım da DNS kullanmıyorum sadece IP üzerinden çalışıyorum..
Bunların kurulumlarını ve çıkan problemleri nasıl çözeceğinizi anlatan bir dokuman yok (tu şimdi bende var hem de tümü.. O kadar sorun çıkıyor ki 25 sayfa dokuman çıkardım.) .. ben de burada bunları anlatmak yerine nasıl çözersiniz yaklaşımını öğreteyim.. Bir kere bu süreçte süper derecede Linux öğrenirsiniz.. Ben 2 kez çökerttim ki sorulabilir nasıl yani.. sadece benim hatamdı Linux bana güvendi diyeyim anlayın.. Bir kere baştan sona ne yapacağınızı bilmeniz gerekiyor.. Nasıl yapılacağı ise adımlarda araştırarak çözeceğiniz bir konu.. Log dosyalarını nerede bulacağınız, debug modları nasıl açacağınız, hangi sorunun aslında önemsiz olduğunu hangisinin önemli olduğunu zaman içinde öğreniyorsunuz.. Debian 9 kullanımı kolay ve Windows benzeri arayüzü olan bir Linux.. Ben tümünü 2 Debian 9 Linux sanal makinaya yükledim.. Hem yurt dışı server üzerinde hem de kendi WIFI networküm içinde bir Samsung Galaxy S7 ve IPhone 8 Plus ile denedim.. Harika çalıştı ancak eksikleri var ve nasıl ayar yapıp neyi ekleyeceğimi önceki webRtc deneyimimden biliyorum..
Android ve IOS projesi kaynak kodları da var.. Orada sadece rc uzantılı ayar dosyalarını düzeltip RPC server http adresini ve http upload Php programını kodlayıp adını buraya yazacaksınız ( bunun kodu yok siz yazacaksınız !) http upload server adresini de kendi apache server ınıza verirseniz ve yukarıdaki her işi yapıp buraya kadar hatasız gelirseniz ÇALIŞIR !.. Ben bu PHP yi yazdım ve gayet iyi de çalışıyor..
Bu işlemlerle yaşadığınız problemler için bana başvurmayın lütfen..
Profesyonel olarak böyle bir sistem altyapısını kurmak ve sahip olmak isteyenler bana ulaşabilir.. Tabii bu tamamen ücretlidir.
Yazılım milli ve yerli değil ! Son teknolojidir !… Milleti kandırmayalım..
Bu arada OpenSIPs olmaz mı diye soranlara şunu söyleyeyim.. OpenSIPs sadece bir SIP çözümü.. Geri kalan işleri nasıl yapacak ona bakmanız lazım o zaman..
Ejabberd yerine OpenFire vb bir XMPP kullanamaz mıyız derseniz tabii ki olur ama Ejabberd yüzde 60 ın üzerinde dominant kullanılan bir yapı.. Hem öğrenmiş olursunuz..
Sağlıcakla kalın !.
Selcuk Celik
Harikasın hocam
Hocam 25 sayfalık dokümanı paylaşma şansınız varmı ?
Maalesef paylaşmıyorum.. Paylaştıklarım balığı tutmak için yeterli.. Give a man a fish you feed him for a day, Teach a man to fish you feed him for a life time .. Thats the way it is diyorum..