# 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="/pages/-Mg5IUpWQ4\_GnNFaofxA" %}
[Paket Bağımlılığı Eklemek](/eklenti-gelistirme/genel-bilgiler/paket-bagimliligi-eklemek.md)
{% 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="/pages/-Mg5IBMvvxfyigjIBauE" %}
[Veritabanı Mantığı](/eklenti-gelistirme/genel-bilgiler/veritabani-mantigi.md)
{% 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="/pages/-Mg5JZ2vA9zwwidEUCqC" %}
[Composer](/eklenti-gelistirme/ileri-seviye/composer.md)
{% 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>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.liman.dev/eklenti-gelistirme/gelistirme/protokol-baglantilari-ldap-smb.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
