# myRPC ## Описание Проект **myRPC** представляет собой систему удалённого выполнения команд через RPC (Remote Procedure Call). Проект включает клиентское приложение `myRPC-client` и серверное приложение-демон `myRPC-server`, которые взаимодействуют через сокеты. ## Структура проекта ``` myRPC/ ├── libmysyslog/ │ ├── Makefile │ ├── README.md │ ├── libmysyslog.c │ └── libmysyslog.h ├── systemd/ │ └── myrpc-server.service ├── myRPC-client/ │ ├── Makefile │ ├── README.md │ └── src/ │ └── myRPC-client.c ├── myRPC-server │ ├── Makefile │ ├── README.md │ └── src/ │ └── myRPC-server.c └── Makefile ``` ## Требования - gcc - libconfig (`sudo apt-get install libconfig-dev`) - dpkg-deb ## Сборка проекта Для сборки проекта выполните команду: ```bash make all ``` Сборка производится в директории соответствующих подпроектам дирректориях. Там же будут размещены исполняемые файлы: - `myRPC-client/myRPC-client` - `myRPC-server/myRPC-server` ### Подлючение библиотеки проекта 1. При работе на локальном машине, требуется подключить библиотеку `libmysyslog` для работоспособности проекта. 2. Выполните следующую команду: ```sh export LD_LIBRARY_PATH=/home/user/myRPC/libmysyslog:$LD_LIBRARY_PATH ``` ## Использование ### Настройка сервера Создайте конфигурационный файл `/etc/myRPC/myRPC.conf` со следующим содержимым: ```conf # Порт, на котором будет слушать сервер port = 1234 # Тип сокета : stream(TCP) или dgram(UDP) socket_type = stream ``` Создайте файл со списком разрешенных пользователей `/etc/myRPC/users.conf`: ```conf # Список разрешённых пользователей username1 username2 username3 ``` Запустите сервер: ```bash sudo myRPC-server ``` ### Использование клиента ```bash myRPC-client -h <адрес_сервера> -p <порт> -s -c "команда bash" ``` Пример: ```bash myRPC-client -h 127.0.0.1 -p 1234 -s -c "ls -la" ``` ## Создание deb-пакетов Для сборки deb-пакетов выполните: ```bash make deb ``` ## Создание локального репозитория Для создания локального репозитория APT выполните: ```bash make repo ``` После этого вы сможете устанавливать пакеты через apt: ```bash sudo apt-get install myrpc-client myrpc-server ``` ## systemd unit ```bash make systemd_install ``` ## Очистка Очистка временных файлов и папок: ```bash make clean ```