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

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

Ставим FRN-сервер на Raspberry Pi
FRN
13:12, 15 январь 2024
154
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)
Топ из этой категории
Кодекс радиолюбителя! Как избежать конфликтов? Кодекс радиолюбителя! Как избежать конфликтов?
Большинство радиолюбителей, читающих это Руководство, и тех, кто мечтает стать радиолюбителями, вероятнее всего,...
05.05.24
73
0
Что необходимо для получения радиолюбительского позывного в Одессе и Одесской области Что необходимо для получения радиолюбительского позывного в Одессе и Одесской области
1) Для того, чтобы работать в радиолюбительском эфире Вам необходима лицензия на право эксплуатации радиолюбительского...
27.03.24
160
0