Ой, логотип кудато делся

Ставим FRN-сервер на Raspberry Pi

Ставим FRN-сервер на Raspberry Pi
FRN
13:12, 15 январь 2024
663
0

FRN - Free Radio Network (сеть свободной радиосвязи) ошибочно ассоциируется только со шлюзами CB или PMR.

Исходный веб-сайт проекта — https://www.freeradionetwork.eu/, где вы найдете приложения для Windows.

На сайте http://alterfrn.ucoz.ru/ вы найдете как серверную программу, так и клиентскую программу данной сети FRN для различных операционных систем. На его основе были созданы другие продукты и дополнительные графические наложения, например PiCQ или Java FRN с сайта freeradionetwork.de.

Но нынешнее бьющееся сердце – российское производство AlterFRN.


Устанавливаем сервер следующим образом...

wget https://odradio.link/frn/FRNServerConsole.Linux-armhf.7348r.tgz

sudo tar -zxvf FRNServerConsole.Linux-armhf.7348r.tgz

sudo rm FRNServerConsole.Linux-armhf.7348r.tgz

sudo mv FRNServerConsole.Linux-armhf.7348r FRNserver

cd FRNserver

sudo mv FRNServerConsole.Linux-armhf.7348r FRNserver

 

Результатом всех этих операций будет каталог и исполняемый файл под названием FRNserver.

pi@raspberrypi:/opt/FRNserver $ ls
FRNserver networks.cfg intflags.cfg server.ini 

 

Конфигурация включает в себя редактирование файлов network.cfg и server.in.

Запускаем и останавливаем программу с помощью значков в меню или команд.

/opt/FRNserver/FRNserver daemon /opt/FRNserver/server.ini

/opt/FRNserver/FRNserver stop /opt/FRNserver/server.ini

 Попытка запустить сервер заканчивается сообщением об ошибке

Error: Parameter [Server].ServerCharsetName is empty

Который обычно сообщает нам о необходимости настройки сервера, прежде чем мы захотим его запустить.

Настройка сервера происходит в два этапа. Первый — отредактировать файл server.ini, содержащий основные настройки сервера, и файл network.cfg, содержащий информацию о количестве каналов и функциях отдельных каналов.


 Для редактирования файла server.ini вводим команду sudo nano /opt/FRNserver/server.ini и видим содержимое файла, в котором нам необходимо внести изменения для персонализации настроек сервера.

# AlterFRN server
# National names MUST be UTF-8
# Revision 7348
# 2021-01-22



# http://alterfrn.ucoz.ru/index/server_config/0-27#s_1
[Server]

# ServerCharsetName
# RU: Обазятельно для UNIX/Linux, необязательно для Windows
#     Имя ANSI кодировки FRN это печальное "наследие" оригинального FRN: только MSWindows, только ANSI.
#     Корректной ANSI кодировкой для FRN является текущая ANSI кодировка для вашего языка на Microsoft Windows.
#     Выяснить текущую ANSI кодировку поможет команда "ansi" для AlterFRN-Server-Win32
#     Просто запустите на MS Windows команду "C:\FRN\FRNServerConsole.Win32.exe ansi"
#       Для Германии: ISO-8859-1
#       Для России: WINDOWS-1251
# EN: Mandatory for UNIX/Linux, optional for Windows
#     Name of ANSI charset for FRN is very sad "heritage" of the original FRN: only MSWindows, only ANSI.
#     Correct FRN ANSI charset is default ANSI charset on MS Windows for your language.
#     Command "ansi" for AlterFRN-Win32-server will show it for you.
#     Just run on command console of your MSWindows with your language: "C:\FRN\FRNServerConsole.Win32.exe ansi"
#       For Germany: ISO-8859-1
#       For Russia: WINDOWS-1251
ServerCharsetName=


PresentServerAddress=your.main.server.address
PresentServerPort=10024
ServerOwnerEMail=server.owner@mail.com
BackupServerAddress=your.backup.server.address
BackupServerPort=10024
ClientHandshakeTimeout=4
ClientActivityTimeout=8
ListenServerPorts=10024
DefaultNetworkName=Test
DefaultCountry=
IPVersion=46
ManagerInvalidPasswordScript=
ClientSessionMaxTime=1y

# ManagerMode
# Ru: режим всего сервера для взаимодействия с FRNSysMan
#       - Standalone/S/0 - нет взаимодействия с FRNSysMan, по умолчанию
#       - Notify/N/1 - только уведомлять FRNSysMan о подключающихся клиентах
#       - Light/L/2 - мягкий режим: использовать авторизацию клиентов от FRNSysMan, 
#                       но разрешать подключения при неработающем FRNSysMan
#       - FRN/F/3 - жесткий режим: использовать авторизацию клиентов от FRNSysMan, 
#                       но запрещать подключения при неработающем FRNSysMan
# En: the mode of interaction with FRNSysMan for the whole server
#       - Standalone/S/0 - no interaction with FRNSysMan, default
#       - Notify/N/1 - just notify the FRNSysMan about connected clients
#       - Light/L/2 - soft mode: use FRNSysMan authentification, 
#                       but allow client connections if FRNSysMans does not work(answer)
#       - FRN/F/3 - hard mode: use FRNSysMan authentification,

#                       but disallow client connections if FRNSysMans does not work(answer)
ManagerMode=Standalone

 

Информацию об отдельных функциях можно найти на сайте http://alterfrn.ucoz.ru, но я попробую объяснить чуть подробнее.

 Как правило, нас чаще всего будет интересовать изменение базовых функций.



ServerCharsetName=

Настройки клавиатуры


PresentServerAddress=your.main.server.address

Адрес, под которым будет представляться сервер

 

PresentServerPort=10024

Порт, на котором будет представлен сервер

 

ServerOwnerEMail=server.owner@mail.com

Учетная запись супер администратора сервера

 

BackupServerAddress=your.backup.server.address

Адрес резервного сервера

 

BackupServerPort=10024

Порт резервного сервера

 

ListenServerPorts=10024

Порт или порты, по которым сервер должен принимать клиентов (их может быть несколько)

 

DefaultNetworkName=Test

Канал по умолчанию на сервере

 

ManagerMode=Standalone

Режим работы сервера (автономный или сотрудничество с SysManager Нидерланды или Германия)

 

После первоначальной настройки вы можете запустить сервер и попробовать авторизоваться на нем. Для этого мы даем команду

sudo /opt/FRNserver/FRNserver daemon /opt/FRNserver/server.ini

 

И мы должны увидеть в ответ на терминале аналогичное сообщение

pi@raspberrypi:~ $ sudo /opt/FRNserver/FRNserver daemon /opt/FRNserver/server.ini
AlterFRN-Server-r7348-Linux-armhf [/opt/FRNserver/server.ini] started as daemon with PID=4299 [/var/run/frnserver.pid]
pi@raspberrypi:~ $ 

 

После подключения клиент Windows FRN должен показать что-то вроде этого

 

Итак, сервер запустился, но нам нужно заменить эти странные каналы на те, которые мы хотели бы иметь на нашем сервере. Поэтому теперь шаг номер два — настройка каналов на сервере.

Для этого редактируем файл network.cfg, введя команду

sudo nano /opt/FRNserver/networks.cfg

и мы видим конфигурацию канала, которую можем свободно изменить.

# National names MUST be UTF-8


Test | ParrotEnable=yes ; ParrotStartStopEnable=no
Parrot5|ParrotEnable=yes;ParrotRepeatCount=5
Parrot15|ParrotEnable=yes;ParrotRepeatCount=15
Room
Debug
Mäßüöen(CP1252)|CharsetName=CP1252
Привет(Serv CP1251)
Привет(Net CP1251)|CharsetName=CP1251
Привет(CP866)|CharsetName=CP866
Привет(ISO-8859-5)|CharsetName=ISO-8859-5
Привет(KOI8R)|CharsetName=KOI8-R
ПРИВЕТ(KOI7)|CharsetName=KOI-7
Привет(UTF8)|CharsetName=UTF-8;MaxSpeechTime=60
Длинное имя комнаты в UTF-8|CharsetName=UTF-8
HiddenNet|Hidden=yes;ManagerMode=S

 

У меня файл выглядит так:

# National names MUST be UTF-8


ORLink
Speek Chat
Test | ParrotEnable=yes ; ParrotStartStopEnable=no
#Parrot5|ParrotEnable=yes;ParrotRepeatCount=5
#Parrot15|ParrotEnable=yes;ParrotRepeatCount=15
#Room
#Debug
#Mäßüöen(CP1252)|CharsetName=CP1252
#Привет(Serv CP1251)
#Привет(Net CP1251)|CharsetName=CP1251
#Привет(CP866)|CharsetName=CP866
#Привет(ISO-8859-5)|CharsetName=ISO-8859-5
#Привет(KOI8R)|CharsetName=KOI8-R
#ПРИВЕТ(KOI7)|CharsetName=KOI-7
#Привет(UTF8)|CharsetName=UTF-8;MaxSpeechTime=60
#Длинное имя комнаты в UTF-8|CharsetName=UTF-8
#HiddenNet|Hidden=yes;ManagerMode=S

Об атрибутах в этом файле смотрите в конце статьи.


После внесения этих изменений мы можем перезагрузить сервер FRN с помощью команд.

sudo /opt/FRNserver/FRNserver stop /opt/FRNserver/server.ini
sudo /opt/FRNserver/FRNserver daemon /opt/FRNserver/server.ini

 

Стоит еще раз отредактировать файл server.ini и включить опцию журналов сервера и возможность выполнения сервером команд, выдаваемых с терминала. Стоит прочитать описание на сайте   http://alterfrn.ucoz.ru/.

Чтобы активировать эти опции в редактируемом файле, найдите такие функции в самом низу

[System]
PidFile=frnserver.pid
LogFile=frnserver.log
DataDir=
LogClientLevel=2
LogExec=yes
DataChangeScript=

SystemCharsetName=

[Command]
CommandEnabled=no
CommandPort=10023
CommandIPVersion=4
CommandPreferIPv4=yes

 

И замените записи на

[System]
PidFile=frnserver.pid
LogFile=/var/log/frnserver.log
DataDir=
LogClientLevel=5
LogExec=yes
DataChangeScript=

SystemCharsetName=UTF-8

[Command]
CommandEnabled=yes
CommandPort=10023
CommandIPVersion=4
CommandPreferIPv4=yes

 

Благодаря этой процедуре вы сможете дать команду

 tail -f /var/log/frnserver.log

 

и в консоли мы увидим живой лог

pi@raspberrypi:~ $ tail -f /var/log/frnserver.log
2021-02-06 14:05:59.757: ERROR: Read blocks: /opt/FRNserver/blocks.dat: error [2] of opening file "/opt/FRNserver/blocks.dat": No such file or directory
2021-02-06 14:05:59.758: ERROR: Read modes: /opt/FRNserver/modes.dat: error [2] of opening file "/opt/FRNserver/modes.dat": No such file or directory
2021-02-06 14:05:59.758: ERROR: Read rights: /opt/FRNserver/rights.dat: error [2] of opening file "/opt/FRNserver/rights.dat": No such file or directory
2021-02-06 14:05:59.758: ERROR: Read notices: /opt/FRNserver/notices.dat: error [2] of opening file "/opt/FRNserver/notices.dat": No such file or directory
2021-02-06 14:05:59.759: Start listening: Command: 127.0.0.1:10023
2021-02-06 14:05:59.759: Start listening: Client: [::]:10024
2021-02-06 14:05:59.759: Start listening: Client: 0.0.0.0:10024
2021-02-06 14:06:02.135: Client: 192.168.1.160 35495 CONNECT
2021-02-06 14:06:02.260: Client: 192.168.1.160 35495 HANDSHAKE_STR_OK CT:<VX>2014003</VX><EA>digit4all@gmail.com</EA><PW>AFHMWGW</PW><ON>M0IQF, Marcin</ON><CL>2</CL><BC>PC Only</BC><DS></DS><NN>Poland</NN><CT>- - -</CT><NT>Test</NT>
2021-02-06 14:06:02.759: Client: 192.168.1.160 35495 LOGIN EMail=`digit4all@gmail.com` Call=`M0IQF, Marcin` Net=`Test` SID=`ra2BrFqjwxv6Niy1sXW2MgCK` City=`- - -` Band=`PC Only` Country=`Poland`
2021-02-06 14:06:13.148: Client: 192.168.1.160 35495 DISCONNECT_BY_CLIENT EMail=`digit4all@gmail.com` Call=`M0IQF, Marcin` Net=`Test` SID=`ra2BrFqjwxv6Niy1sXW2MgCK` City=`- - -` Band=`PC Only` Country=`Poland`

 

 Дополнительно вы сможете давать команды серверу, например

sudo /opt/FRNserver/FRNserver list /opt/FRNserver/server.ini
sudo /opt/FRNserver/FRNserver -f list /opt/FRNserver/server


И многие другие команды, описанные на сайте http://alterfrn.ucoz.ru/ - телепортация, временное отключение звука, временная блокировка и т.д. и т.п.

 

В статье я намеренно не описываю интеграцию с серверами SysManager (авторизацию). Для меня сотрудничество с ними — пустая трата времени и нервов, а единственные плюсы такого сотрудничества — это СПИСОК, где может быть виден наш сервер.

Что касается соображений безопасности, я могу сам защитить сервер без необходимости скачивать логины и пароли и таким образом быть САМОДОСТАТОЧНЫМ и независимым.


Процесс создания ИКОН в МЕНЮ представлен на видео   https://youtu.be/7-n7AYSmIpE


Атрибуты для файла networks.cfg:

Список и конфигурация сетей (комнат). Находится в файле networks.cfg. Одна строка - одна сеть(комната). Дополнительные атрибуты для сети(комнаты) дописываются после собственно имени сети(комнаты) через символ '|' (десятичный код 124), атрибуты отделяются друг от друга точкой с запятой:

n.1. Атрибут OwnerEMail - адрес электронной почты владельца сети(комнаты) при наличии; версия r5195+ - может быть указано несколько владельцев сети(комнаты) через запятую;

n.2. Атрибут MaxClients - максимальное количество корреспондентов, которые могут подключиться в комнату одновременно, по умолчанию 65535;

n.3. Атрибут MaxSpeechTime - максимальное время в секундах, которое может непрерывно говорить корреспондент, после чего клиенту будет послана команда прервать трансляцию сигнала в комнату; минимальное - 10 секунд; максимальное - 1800 секунд (30 минут); по умолчанию - 300 секунд (5 минут);

n.4. Атрибут ParrotEnable - разрешить работу попугая в сети(комнате); допустимые значения: No, Yes; по умолчанию: No - попугай не работает;

n.5. Атрибут ParrotStartStopEnable - разрешить включение/выключение попугая через сообщения start и stop; допустимые значения: No, Yes; по умолчанию: No - включение/выключение запрещено;

n.6. Атрибут ParrotMuteEnable - разрешить блокировку самого попугая; допустимые значения: No, Yes; по умолчанию: No заглушение попугая запрещено;

n.7. Атрибут ParrotMaxRecordTime - максимальное время звука в секундах, которое может записать попугай для последующего повтора; по умолчанию: 600 секунд (5 минут);

n.8. Атрибут ParrotPause - время в миллисекундах перед началом воспроизведения попугаем записанного звука; по умолчанию: 2000 мс (2 секунды);

n.9. Атрибут ParrotRepeatCount - количество повторов попугаем записанного звука; по умолчанию: 1 (один);

n.10. Атрибут CharsetName -- [ревизия 4210+] -- имя ANSI кодировки символов для сети(комнаты), если кодировка отличается от кодировки всего сервера в серверном параметре ServerCharsetName (s.1.4) в секции [Server] (s.1); В эту кодировку будет перекодировано имя этой конкретной сети(комнаты) при передаче списка сетей(комнат) FRN-клиентам без поддержки Unicode(UTF-8); также используется для перекодирования информации о клиенте без поддержки Unicode(UTF-8) для записи в журнале сервера AlterFRN и для исполнения команд list (s.0.16) и listnet (s.0.17);

n.11. Атрибут ManagerMode - [ревизия 4210+] режим взаимодействия с FRN-System-Manager для этой конкретной сети(комнаты), если режим отличается от режима всего сервера; допустимые значения как у серверного параметра ManagerMode (s.1.10);

n.12. Атрибут ManagersMask - [ревизия 4690+] битовая маска, разрешающая или запрещающая работу сети(комнаты) с конкретным FRN-System-Manager; используются биты 0-2; по умолчанию значение 7 - разрешены все;

n.13. Атрибут SpeechPause - [ревизия 4690+] - принудительная пауза между включениями корреспондентов для этой конкретной сети(комнаты) в миллисекундах; минимальная и по умолчанию - 0 мс; максимальная - 10000 мс (10 сек);

n.14. Атрибут AccessInfoMode - [ревизия 4690+] - режим выдачи информации доступа при подключении клиента:
n.14.1. - Значение Original или O или 0: информация доступа выдается сервером AlterFRN как в оригинальном сервере FRN только при активированном списке доступа для сети(комнаты); по умолчанию;
n.14.2. - Значение Always или A или 1: информация доступа выдается сервером AlterFRN всегда;
n.14.3. - Значение Never или N или 2: информация доступа никогда не выдается сервером AlterFRN;

n.15. Атрибут ClientSessionMaxTime управляет ограничением длительности подключения одного клиента к конкретно этой сети(комнате), если отличается от значения в серверном параметре ClientSessionMaxTime (s.1.16) в секции [Server] (s.1);

n.16. Атрибут SpeechLimit управляет ограничением длительности разговора в конкретно этой сети(комнате), если отличается от значения в серверном параметре SpeechLimit (s.1.19) в секции [Server] (s.1);

n.17. Атрибут ShortFrames управляет поддержкой коротких (40мс) звуковых пакетов в конкретно этой сети(комнате), если отличается от значения в серверном параметре ShortFrames (s.1.20) в секции [Server] (s.1);

n.18. Атрибут QuarantineTime управляет временем карантина клиентских подключений к конкретно этой сети(комнате), если это время отличается от значения серверного параметра QuarantineTime (s.1.21) в секции [Server] (s.1);

n.19. Атрибут Hidden позволяет исключить конкретно эту сеть(комнату) из списка сетей(комнат); допустимые значения: No, Yes; по умолчанию: No - сеть(комната) присутствует в списке сетей(комнат); для подключения к такой скрытой сети(комнате) необходимо точно знать имя этой сети(комнаты); чтобы сеть(комната) также не показывалась в списке серверов на FRN-System-Manager, то необходимо для этой сети(комнаты) включить автономный режим атрибутом ManagerMode=Standalone;


Ctrl
Enter
Заметили ошЫбку
Выделите текст и нажмите Ctrl+Enter
Комментарии (0)
Топ из этой категории
Виды модуляции при дальней связи на УКВ Виды модуляции при дальней связи на УКВ
Дальняя радиосвязь на УКВ перестает быть редкостью. Сейчас уже достаточно большое число радиолюбителей регулярно...
21.04.25
31
0
Радиолюбительской DMR сети ADN Systems сегодня исполнился год Радиолюбительской DMR сети ADN Systems сегодня исполнился год
Год назад, благодаря усилиям небольшой, но увлечённой группы радиолюбителей, объединённых общей мечтой сделать...
21.04.25
33
0