**Ahenk** ile **Lider** birbirlerine Ejabberd üzerinden mesaj göndererek haberleşir. Bu mesaj **JSON** formatındadır. Ve mesajlar farklı tiplerde olsa da **type** ve **timestamp** alan isimleri her mesajda bulunur.
**Ahenk** kurulu olduğu bilgisayarda ilk kez çalışırken kendini **Ejabberd server**, **veri tabanı**na ve **ldap**'a kaydetmesi üzere bir takım bilgiyi Lider'e gönderir. Bu işlem **Registration**'dır ve mesaj tipi **REGISTER**'dır. Registration mesajına Lider **REGISTRATION_RESPONSE** tipinde bir json mesajı döndürür.
Ahenk kurulu bilgisayarlarda kullanıcılar **LDAP** üzerinden authenticate olurlar. Oturum açma işlemi sırasında Ahenk, Lider'e 2 adet mesaj gönderir. Bunlar **LOGIN** ve **GET_POLICIES** mesajlarıdır. **LOGIN** mesajında Lider'e hangi kullanıcının oturum açtığını bildirilir. **GET_POLICIES** mesajında (varsa önceden gönderilmiş politikanın bilgisi gönderilir) giriş yapan kullanıcı ile çalışmakta olan ajan bilgisayar üzerine önceden tanımlanmış politikaları Lider'den ister.
**GET_POLICIES** tipindeki mesaja Lider, **EXECUTE_POLICY** tipinde mesaj gönderir. Bu mesaj varsa kullanıcı ve ajan bilgisayar üzerinde tanımlı olan politikaların içeriği hakkında cevap döndürür. Burada **dikkat edilmesi gereken nokta**; Ahenk **GET_POLICIES** mesajıyla hali hazırda kayıtlı kullanıcı ve ajan politikalarının versiyonlarını Lidere gönderir. Lider bu kullanıcı-ajan üzerinde bu versiyondan daha yeni bir versiyon politika olmadığını görürse profili null olarak döndürür fakat geçerli politika versiyonunu yazar. Ahenk, Liderden dönen **EXECUTE_POLICY** mesajı ile gelen politikalara bakıp, yeni politika geldi ise veritabanını günceller. Ahenk güncel politikaları çalıştırmaya başlar. Eğer politika versiyonları null ise bu kullanıcı ya da ajan için politika tanımlanmamış demektir.
**EXECUTE_TASK** tipindeki mesajlar ise o anda çalıştırılması gereken görev için kullanılan gereklili parametreleri barındıran mesajdır.
Çalıştırılan her görev ya da Politika Profili sonunda Ahenk, Lidere **RESPONSE** gönderir. Response mesajı ile çalıştırılan görev/politikanın başarı durumu, varsa döndürülen data bu mesaj ile iletilir.
Ahenk bir görev ya da politika çalıştırmayı denediğinde eğer ilgili eklentiyi bulamazsa **MISSING_PLUGIN** tipinde bir mesaj gönderir.
Lider'e **MISSING_PLUGIN** tipinde mesaj eriştiğinde eğer ilgili eklentinin Lider tarafındaki yapılandırma dosyasında bu eklentinin ahenk tarafının deb versiyonuna nasıl erişilebileceği hakkında distro bilgileri tanımlandıysa **INSTALL_PLUGIN** tipinde bir mesaj döndürür.
**hostname,ipAddresses,macAddresses** makine temel bilgileri..
**data:** çalışan işletim sistemi, donanım, oturumlar, vs... hakkında genişleyebilir veriler. Bu verilerin miktarı değişebilir ve Lider tarafında gruplandırma vs.. gibi işlemlerde gerekli olabilir.
**REGISTRATION_ERROR** mesajı dönerse Ahenk belli miktarda tekrar REGISTRATION isteği gönderir. Deneme sayısı biterse hata mesajı oluşturup kendisini kapatır.
```json
{"type":"REGISTRATION_RESPONSE",
"status":"ALREADY_EXISTS",
"message":"cn=2559305d-a415-38e7-8498-2dbc458662a7,ou=Uncategorized,dc=mys,dc=pardus,dc=org already exists! Updated its password and database properties with the values submitted.",
**agentPolicyVersion**: Ajan politikasının versiyonu
**agentPolicyProfiles**: Ajan politikasının barındırdığı profillerin içeriği. Json array formatındadır.
**agentCommandExecutionId**: Ajan politikasının çalıştırma id'si
Aşağıdaki örnekte **userPolicyProfiles** ve **userPolicyVersion** değerleri null atanmış; çünkü gelen **GET_POLICIES** mesajındakinden daha gündel bir versiyon bulunmamakta.
**userPolicyProfiles** ve **agentPolicyProfiles** aynı formattadırlar ve barındırdıkları profillerde id,çalışacakları plugin hakkında bilgileri, profil adı, tanımı, console'da oluşturulan parametreler (**profileData**)bulunur.
**task**: Çalıştırılacak görev hakkında bilgiler bulunur. Yapısı**(user/agent)PolicyProfiles**' e benzerdir. Konsoldan gelen parametreler **parameterMap**'tedir.
```json
{
"type":"EXECUTE_TASK",
"task":{
"id":21856,
"plugin":{
"id":1951,
"name":"network-inventory",
"version":"1.0.0",
"description":"Lider Network Inventory Plugin",
"active":true,
"deleted":false,
"machineOriented":true,
"userOriented":false,
"policyPlugin":false,
"xBased":false,
"createDate":1464254876000,
"modifyDate":1465283994000
},
"commandClsId":"SCANNETWORK",
"parameterMap":{
"timingTemplate":"3",
"ipRange":"192.168.1.100-101",
"executeOnAgent":true
},
"deleted":false,
"cronExpression":null,
"createDate":1465285670481,
"modifyDate":null
},
"timestamp":"07-06-2016 10:47"
}
```
_ _ _
###POLICY RESPONSE (A>>>L)
**policyVersion**: Çalıştırılan politika versiyonu
**responseCode**:Politikanın çalıştırılma durumuna göre POLICY_ERROR,POLICY_KILLED,POLICY_PROCESSED,POLICY_RECEIVED,POLICY_TIMEOUT,POLICY_WARNING değerlerini alabilir.
**responseData**: Varsa politika sonucu döndürülmek istenen data.
**contentType**: Data'yı tanımlayan tip. Bu tipler şimdilik şunlar olabilir: APPLICATION_MS_WORD,APPLICATION_PDF,APPLICATION_VND_MS_EXCEL,IMAGE_JPEG,IMAGE_PNG,TEXT_HTML,TEXT_PLAIN,APPLICATION_JSON
**responseCode**:Görevin çalıştırılma durumuna göre TASK_ERROR,TASK_KILLED,TASK_PROCESSED,TASK_TIMEOUT,TASK_WARNING,TASK_RECEIVED değerlerini alabilir.
**responseData**: Varsa görev sonucu döndürülmek istenen data.
**contentType**: Data'yı tanımlayan tip. Bu tipler şimdilik şunlar olabilir: APPLICATION_MS_WORD,APPLICATION_PDF,APPLICATION_VND_MS_EXCEL,IMAGE_JPEG,IMAGE_PNG,TEXT_HTML,TEXT_PLAIN,APPLICATION_JSON