# Protokol Bağlantıları (LDAP, SMB)

Liman sisteminde eklenti geliştirirken belirli protokollerle çalışmanız gerekebilir. Böyle bir durumda ek bir kütüphane veya destekliyorsa doğrudan php'nin fonksiyonlarını kullanabilirsiniz.&#x20;

### Örnek LDAP Bağlantısı

LDAP protokolünü PHP diliyle kütüphaneye gerek olmadan kullanabilirsiniz. Fakat eklentinize `php7.3-ldap` debian paketini bağımlılık olarak eklemelisiniz.

{% content-ref url="../genel-bilgiler/paket-bagimliligi-eklemek" %}
[paket-bagimliligi-eklemek](https://docs.liman.dev/eklenti-gelistirme/genel-bilgiler/paket-bagimliligi-eklemek)
{% endcontent-ref %}

LDAP protokolüyle bind olabilmek için kullanıcıdan kullanıcı adı ve şifre gibi bilgileri istemeniz gerekebilir. Eklenti veritabanı ile bu bilgileri kullanıcıdan isteyebilirsiniz.

{% content-ref url="../genel-bilgiler/veritabani-mantigi" %}
[veritabani-mantigi](https://docs.liman.dev/eklenti-gelistirme/genel-bilgiler/veritabani-mantigi)
{% endcontent-ref %}

Sonrasında ise bağlantı açıp istenilen veriler alınmaya başlanabilir.

```
$connection = ldap_connect('ldaps://' . server()->ip_address); //eklentinin eklendiği sunucunun ip adresi ile LDAPS protokolünü kullanarak bağlantı açıyoruz.
ldap_bind($connection, extensionDb('clientUsername'), extensionDb('clientPassword')); //eklenti veritabanına yazdığımız keylere göre kullanıcının LDAP kullanıcı adı ve şifresiyle bind oluyoruz.
$result = ldap_search($connection, "DC=baran,DC=lab", "(cn=*)"); //base dn'e göre arama yapıyoruz.
$data = ldap_get_entries($connection, $result); //arama sonuçlarını alıyoruz.
dd($data); //dönen sonuçları debug etmek için dd helperını kullanıyoruz. 
```

Detaylı bilgi için: <https://www.php.net/manual/tr/ref.ldap.php>

### Örnek SMB Bağlantısı

SMB bağlantısı için `icewind/smb` kütüphanesini kullanabilirsiniz. Bu kütüphaneyi kullanmak için de bazı php debian modüllerini kurmanız gerekebilir. `php-smbclient` ve `smbclient` debian paketlerini eklentinizin bağımlılıklarına ekleyebilirsiniz.&#x20;

* Paket kurulumu için aşağıdaki komutu eklenti dizininizde çalıştırabilirsiniz.

```
composer require icewind/smb
```

{% content-ref url="../ileri-seviye/composer" %}
[composer](https://docs.liman.dev/eklenti-gelistirme/ileri-seviye/composer)
{% endcontent-ref %}

* Paketi kurduktan sonra kütüphaneyi kullanmaya başlayabilirsiniz.

```
$options = new Options();
$options->setTimeOut(5);
$serverFactory = new ServerFactory($options);
$auth = new BasicAuth(extensionDb('clientUsername'), 'workgroup', extensionDb('clientPassword'));
$server = $serverFactory->createServer(server()->ip_address, $auth);
$share = $server->getShare('SYSVOL');
dd($smb->read('ORNEK_PATH'));
```

Daha fazla bilgi için: <https://github.com/icewind1991/SMB>
