mirror of
https://github.com/Pardus-LiderAhenk/lider-ahenk-docs.git
synced 2024-11-10 10:02:34 +03:00
346 lines
12 KiB
Markdown
346 lines
12 KiB
Markdown
#Lider - Ahenk Mesaj Tipleri ve JSON Yapıları
|
||
|
||
##Mesaj Tipleri
|
||
|
||
**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.
|
||
|
||
|
||
_ _ _
|
||
|
||
###REGISTER (A>>>L)
|
||
|
||
**from:** alınmak istenen ejabberd jid.
|
||
|
||
**password:** alınacak ejabberd hesabının şifresi.
|
||
|
||
**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.
|
||
|
||
```json
|
||
{
|
||
"type":"REGISTER",
|
||
"timestamp":"07-06-2016 09:58",
|
||
"from":"2559305d-a415-38e7-8498-2dbc458662a7",
|
||
"password":"41b6eeb5-1927-459a-b596-3115a40dfade",
|
||
"hostname":"volkansahin",
|
||
"ipAddresses":"'192.168.1.121', '192.168.56.1'",
|
||
"macAddresses":"'74:d4:35:0c:74:2c', '0a:00:27:00:00:00'",
|
||
"data":{
|
||
"hardware.disk.used":86574,
|
||
"hardware.cpu.architecture":"x86_64",
|
||
"hardware.disk.partitions":[
|
||
["/dev/sda2","/","ext4","rw,errors=remount-ro"],
|
||
["/dev/sda1","/boot/efi","vfat","rw"]],
|
||
"os.name":"Linux",
|
||
"hostname":"volkansahin",
|
||
"ipAddresses":"'192.168.1.121', '192.168.56.1'",
|
||
"sessions.userNames":["volkan"],
|
||
"hardware.cpu.physicalCoreCount":2,
|
||
"os.distributionVersion":"17",
|
||
"macAddresses":"'74:d4:35:0c:74:2c', '0a:00:27:00:00:00'",
|
||
"hardware.memory.total":7112,
|
||
"hardware.disk.total":104790,
|
||
"os.kernel":"3.13.0-24-generic",
|
||
"hardware.disk.free":12869,
|
||
"os.architecture":"64bit",
|
||
"os.version":"#47-Ubuntu SMP Fri May 2 23:30:00 UTC 2014",
|
||
"os.distributionName":"LinuxMint",
|
||
"hardware.network.ipAddresses":[
|
||
"192.168.1.121",
|
||
"192.168.56.1"],
|
||
"hardware.cpu.logicalCoreCount":4,
|
||
"os.distributionId":"qiana"
|
||
}
|
||
}
|
||
```
|
||
|
||
_ _ _
|
||
|
||
###REGISTRATION_RESPONSE (L>>>A)
|
||
**status:** Kayıt işleminin sonucu. (status **REGISTERED, REGISTERED_WITHOUT_LDAP, ALREADY_EXISTS, REGISTRATION_ERROR** değerlerinden biri olabilir)
|
||
|
||
**message:** Kayıt işleminin sonucu (text alan)
|
||
|
||
**agentDn:** LDAP kayıtı gerçekleştirdiyse LDAP kaydının DN değeri.
|
||
|
||
**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.",
|
||
"agentDn":"cn=2559305d-a415-38e7-8498-2dbc458662a7,ou=Uncategorized,dc=mys,dc=pardus,dc=org",
|
||
"timestamp":1465282735658}
|
||
```
|
||
|
||
|
||
_ _ _
|
||
|
||
###LOGIN (A>>>L)
|
||
**username:** Giriş yapan kullanıcının adı.
|
||
|
||
```json
|
||
{"type": "LOGIN",
|
||
"username": "volkan",
|
||
"timestamp": "07-06-2016 10:01"}
|
||
```
|
||
|
||
_ _ _
|
||
|
||
###LOGOUT (A>>>L)
|
||
**username:** Çıkış yapan kullanıcının adı.
|
||
```json
|
||
{
|
||
"type":"LOGOUT",
|
||
"username":"volkan",
|
||
"timestamp":"07-06-2016 11:11"
|
||
}
|
||
```
|
||
|
||
_ _ _
|
||
|
||
###GET_POLICIES (A>>>L)
|
||
|
||
**userPolicyVersion:** Kayıtlı kullanıcı politikası versiyonu
|
||
|
||
**agentPolicyVersion:** Kayıtlı ajan politikası versiyonu
|
||
|
||
**username:** İstenilen politikanın sahibi.
|
||
(aşağıdaki örnekte kayıtlı bir versiyon bulunmadığı için değerler null atanmış)
|
||
|
||
```json
|
||
{
|
||
"type":"GET_POLICIES",
|
||
"userPolicyVersion":null,
|
||
"agentPolicyVersion":null,
|
||
"username":"volkan",
|
||
"timestamp":"07-06-2016 10:01"
|
||
}
|
||
```
|
||
|
||
_ _ _
|
||
|
||
###EXECUTE_POLICY (L>>>A)
|
||
**username**: Kullanıcı politikasının sahibinin kullanıcı adı.
|
||
|
||
**userPolicyProfiles**: Kullanıcı politikasının barındırdığı profillerin içeriği. Json array formatındadır.
|
||
|
||
**userPolicyVersion**: Kullanıcı politikasının versiyonu
|
||
|
||
**userCommandExecutionId**: Kullanıcı politikasının çalıştırma id'si
|
||
|
||
**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.
|
||
|
||
```json
|
||
{
|
||
"type":"EXECUTE_POLICY",
|
||
"username":"volkan",
|
||
"userPolicyProfiles":null,
|
||
"userPolicyVersion":null,
|
||
"userCommandExecutionId":null,
|
||
"agentPolicyVersion":"2701-1",
|
||
"agentCommandExecutionId":2454,
|
||
"agentPolicyProfiles":[
|
||
{
|
||
"id":2651,
|
||
"plugin":{
|
||
"id":1801,
|
||
"name":"browser",
|
||
"version":"1.0.0",
|
||
"description":"Lider Browser Plugin",
|
||
"active":true,
|
||
"deleted":true,
|
||
"machineOriented":false,
|
||
"userOriented":true,
|
||
"policyPlugin":true,
|
||
"xBased":false,
|
||
"createDate":1464254239000,
|
||
"modifyDate":1465203376000
|
||
},
|
||
"label":"volkan_t",
|
||
"description":"anasayfa",
|
||
"overridable":false,
|
||
"active":true,
|
||
"deleted":false,
|
||
"profileData":{
|
||
"preferences":[
|
||
{
|
||
"preferenceName":"extensions.BlockSite.enabled",
|
||
"value":"false"
|
||
},
|
||
{
|
||
"preferenceName":"extensions.BlockSite.showWarning",
|
||
"value":"false"
|
||
},
|
||
{
|
||
"preferenceName":"extensions.BlockSite.removeLinks",
|
||
"value":"false"
|
||
},
|
||
....
|
||
]
|
||
},
|
||
"createDate":1464263525000,
|
||
"modifyDate":null
|
||
}
|
||
],
|
||
"timestamp":1465282879781
|
||
}
|
||
```
|
||
|
||
_ _ _
|
||
|
||
###EXECUTE_TASK (L>>>A)
|
||
|
||
**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
|
||
|
||
**commandExecutionId**: Polikanın çalıştırılma id'si
|
||
|
||
**responseMessage**: Sonuç mesajı(free text)
|
||
|
||
**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
|
||
|
||
```json
|
||
{
|
||
"timestamp":"07-06-2016 03:43",
|
||
"type":"POLICY_STATUS",
|
||
"policyVersion":"2551-1",
|
||
"commandExecutionId":"2502",
|
||
"responseMessage":"/opt/thunderbird/thunderbird | Unprivileged | Successful, /opt/firefox/firefox | Privileged | Successful, /usr/bin/kate | Unprivileged | Successful, /usr/bin/gedit | Privileged | Successful, ",
|
||
"responseCode":"POLICY_PROCESSED",
|
||
"responseData":null,
|
||
"contentType":null
|
||
}
|
||
```
|
||
|
||
|
||
_ _ _
|
||
|
||
###TASK RESPONSE (A>>>L)
|
||
|
||
**taskId**: Çalıştırılan görevin id'si
|
||
**responseMessage**: Sonuç mesajı(free text)
|
||
**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
|
||
|
||
|
||
```json
|
||
{
|
||
"timestamp":"07-06-2016 03:43",
|
||
"type":"POLICY_STATUS",
|
||
"taskId":"2502",
|
||
"responseMessage":"/opt/thunderbird/thunderbird | Unprivileged | Successful, /opt/firefox/firefox | Privileged | Successful, /usr/bin/kate | Unprivileged | Successful, /usr/bin/gedit | Privileged | Successful, ",
|
||
"responseCode":"POLICY_PROCESSED",
|
||
"responseData":null,
|
||
"contentType":null
|
||
}
|
||
```
|
||
|
||
_ _ _
|
||
|
||
|
||
###MISSING_PLUGIN (A>>>L)
|
||
**pluginName:** Eksik ahenk eklentisinin adı.
|
||
**pluginVersion:** Eksik ahenk eklentisinin versiyonu.
|
||
|
||
```json
|
||
{
|
||
"pluginVersion":"1.0.0",
|
||
"type":"MISSING_PLUGIN",
|
||
"pluginName":"browser"
|
||
}
|
||
```
|
||
|
||
_ _ _
|
||
|
||
###INSTALL_PLUGIN (L>>>A)
|
||
**pluginName**: Kurulacak Ahenk eklentisinin adı.
|
||
**pluginVersion**:Kurulacak Ahenk eklentisinin versiyonu.
|
||
**protocol**: Kurma yönteminin protokolu. (ssh,htttp,torrent)
|
||
**parameterMap**: Seçilen protokole bağlı parametre isterleri
|
||
|
||
```json
|
||
{
|
||
"type":"INSTALL_PLUGIN",
|
||
"pluginName":"browser",
|
||
"pluginVersion":"1.0.0",
|
||
"protocol":"HTTP",
|
||
"parameterMap":{
|
||
"url":"http://www.liderahenk.org"
|
||
},
|
||
"timestamp":1465282879968
|
||
}
|
||
```
|
||
|
||
_ _ _
|
||
|
||
**(L>>>A) Liderden Ahenk' e giden mesaj tipleri</br>(A>>>L) Ahenk'ten Lider'e giden mesaj tipleri**
|
||
|