Клиент, с помощью которого можно посылать запросы серверу.
Точка входа delegate сервера.
директория с конфигом delegate сервера.
config = {
'serve': '0.0.0.0', # на каком адресе слушаем порт
'port': 2390, # какой порт слушаем
'verbosity': 1, # вербозити движка
'salt1': b"ahThiodai0ohG1phokoo", # соль сервера
'salt2': b"Aej1ohv8Naish5Siec3U", # соль клиентов
'path_to_users': 'config/users', # путь до файла с пользователями
'path_to_policies': 'config/policies', # путь до файла с политиками
'limit': { # секция лимитов одновременных запусков скриптов из очередей
'default': 10, # настройка для дефолтной очереди (когда не указана очередь у скрипта)
'date': 2, # настройка для очереди с названием date
}
}
Вторая секция конфига -- скрипты у данного delegate сервера
scripts = {
"test": { # название скрипта
"cmd_line": "/bin/sleep", # исполняемый файл
"need_arguments": True, # может ли пользователь передавать скрипту аргументы
"default_arguments": ["5"], # дефолтный аргумент, который будет передан в любом случае
},
"test_date": {
"cmd_line": "/bin/date",
"need_arguments": False,
"lock": "date", # в какую очередь исполнения добавляется скрипт
"default_arguments": [],
},
}
Этот файл состоит из двух частей: -- пользователи -- группы Пользователи характеризуются именем и pre-shared ключом, переданным по безопасному каналу.
username:pre-shared-key
username2:pre-shared-key-2
Группы характеризуются названием и списком пользователей из списка, объявленного выше и начинаются с ключевого слова group.
group groupname : username username2
ВНИМАНИЕ: Хорошим тоном является не перемешивать список пользователей с группами, т.к. в группу нельзя добавить еще не существующего пользователя, а конфиг парсится за 1 проход.
Это файл политик. Изначально считается, что всем все запрещено и все политики имеют разрешительный характер. Политики бывают двух видов: -- Политика для пользователя начинается с
-u username
-- Политика для группы пользователей начинается с
-g groupname
Не бывает смешанных политик, делайте их сами, вручную.
Полная строка политики состоит из трех частей:
-u username
-g groupname
-p param_name
Параметров у одной политики может быть сколько угодно или не быть вообще. На данный момент есть 2 возможных параметра для политик:
ALLOW_ARGUMENTS: разрешить пользователю передавать аргументы. Без этого параметра все аргументы, кроме дефолтных из config.py, игнорируются.
PROVIDE_USERNAME: запустить проставив в env DELEGATE_USERNAME
scriptname
-u username -p param1 -p param2 script1
-g groupname script2
-g groupname1 -p param1 script1
Подкапотное пространство delegate сервера. Без должной необходимости не ломайте там ничего.