У роботі над проектом мені довелося зіткнутися з задачею реалізації RADIUS сервера на Python для обробки запитів від ocserv з використанням бібліотеки pyrad. Основною метою було обробка запитів на автентифікацію від ocserv, для чого я встановив radcli для сприяння взаємодії між ocserv та моєю програмою на Python.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
from pyrad.server import Server from pyrad.dictionary import Dictionary from pyrad import packet def auth_callback(req, *args, **kwargs): print('ok') username = req.get_user_name() try: password = req.PwDecrypt(kwargs["secret"]) except Exception as e: print(f"Error decrypting password: {e}") req.reply(packet.AccessReject) return if username == "1" and password == "2": req.reply(packet.AccessAccept) else: req.reply(packet.AccessReject) def callback_wrapper(req, *args, **kwargs): auth_callback(req, *args, **kwargs) def main(): dict_obj = Dictionary() server = Server(dict=dict_obj) server.hosts["0.0.0.0"] = callback_wrapper server.hosts["0.0.0.0"].kwargs = {"secret": b"testing123"} server.Run() if __name__ == "__main__": main() |
Я переконався, що всі необхідні залежності встановлені, і код виглядає правильно. Однак жодні запити не обробляються. Якщо хтось має досвід інтеграції pyrad та radcli для автентифікації ocserv на Python або може надати поради щодо відлагодження та вирішення цієї проблеми, я вдячний за вашу допомогу.
Дякую!