132 lines
3.3 KiB
Markdown
132 lines
3.3 KiB
Markdown
# 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
|
||
``` |