961 lines
30 KiB
C++
961 lines
30 KiB
C++
#include "notepad.h"
|
||
|
||
const std::u8string Notepad::ConfigComment::type(Lang lang, TunnelType type)
|
||
{
|
||
switch (lang)
|
||
{
|
||
case Lang::ru: {
|
||
static const std::u8string ru {u8"# Тип туннеля:\n"};
|
||
return ru + tunnelTypeDescription(lang, type);
|
||
}
|
||
default: {
|
||
static const std::u8string en {u8"# Tunnel type. You have selected\n"};
|
||
return en + tunnelTypeDescription(lang, type);
|
||
}
|
||
}
|
||
}
|
||
|
||
const char8_t *Notepad::ConfigComment::clientAddress(Lang lang)
|
||
{
|
||
switch (lang)
|
||
{
|
||
case Lang::ru: {
|
||
static const char8_t* ru {u8"# Локальный адрес, на котором будет доступен туннель\n"
|
||
"# Например, 127.0.0.1\n"};
|
||
return ru;
|
||
}
|
||
default: {
|
||
static const char8_t* en {u8"# Local address where the tunnel will be accessed\n"
|
||
"# For example, 127.0.0.1\n"};
|
||
return en;
|
||
}
|
||
}
|
||
}
|
||
|
||
const char8_t *Notepad::ConfigComment::clientPort(Lang lang)
|
||
{
|
||
switch (lang)
|
||
{
|
||
case Lang::ru: {
|
||
static const char8_t* ru {u8"# Локальный порт, на котором будет доступен туннель\n"
|
||
"# Например, 8080\n"};
|
||
return ru;
|
||
}
|
||
default: {
|
||
static const char8_t* en {u8"# Local port where the tunnel will be accessed\n"
|
||
"# For example, 8080\n"};
|
||
return en;
|
||
}
|
||
}
|
||
}
|
||
|
||
const char8_t *Notepad::ConfigComment::clientDestination(Lang lang)
|
||
{
|
||
switch (lang)
|
||
{
|
||
case Lang::ru: {
|
||
static const char8_t* ru {u8"# I2P-адрес сервера (*.b32.i2p)\n"};
|
||
return ru;
|
||
}
|
||
default: {
|
||
static const char8_t* en {u8"# I2P server address (*.b32.i2p)\n"};
|
||
return en;
|
||
}
|
||
}
|
||
}
|
||
|
||
const char8_t *Notepad::ConfigComment::clientDestinationPort(Lang lang)
|
||
{
|
||
switch (lang)
|
||
{
|
||
case Lang::ru: {
|
||
static const char8_t* ru {u8"# Порт сервера в сети I2P\n"
|
||
"# Можно не указывать, если по адресу доступен только один сервис\n"};
|
||
return ru;
|
||
}
|
||
default: {
|
||
static const char8_t* en {u8"# Server port on the I2P network\n"
|
||
"# Can be omitted if only one service is available at the address\n"};
|
||
return en;
|
||
}
|
||
}
|
||
}
|
||
|
||
const char8_t *Notepad::ConfigComment::clientKeepAlive(Lang lang)
|
||
{
|
||
switch (lang)
|
||
{
|
||
case Lang::ru: {
|
||
static const char8_t* ru {u8"# Интервал между отправками пингов на сервер для поддержания соединения\n"
|
||
"# Для отключения используется значение 0 (значение по умолчанию)\n"};
|
||
return ru;
|
||
}
|
||
default: {
|
||
static const char8_t* en {u8"# Interval between sending pings to the server to maintain connection\n"
|
||
"# To disable, the value 0 is used (default)\n"};
|
||
return en;
|
||
}
|
||
}
|
||
}
|
||
|
||
const char8_t *Notepad::ConfigComment::serverAddress(Lang lang)
|
||
{
|
||
switch (lang)
|
||
{
|
||
case Lang::ru: {
|
||
static const char8_t* ru {u8"# Адрес локального интерфейса, который будет использован\n"
|
||
"# для доступа к сервису (например, 192.168.0.2 или 127.0.0.1)\n"};
|
||
return ru;
|
||
}
|
||
default: {
|
||
static const char8_t* en {u8"# The address of the local interface to be used\n"
|
||
"# to access the service (for example, 192.168.0.2 or 127.0.0.1)\n"};
|
||
return en;
|
||
}
|
||
}
|
||
}
|
||
|
||
const char8_t *Notepad::ConfigComment::serverHost(Lang lang)
|
||
{
|
||
switch (lang)
|
||
{
|
||
case Lang::ru: {
|
||
static const char8_t* ru {u8"# Адрес сервиса, который будет доступен в сети I2P\n"
|
||
"# Например, 192.168.0.3 или 127.0.0.1\n"};
|
||
return ru;
|
||
}
|
||
default: {
|
||
static const char8_t* en {u8"# The address of the service that will be available on the I2P\n"
|
||
"# For example, 192.168.0.3 or 127.0.0.1\n"};
|
||
return en;
|
||
}
|
||
}
|
||
}
|
||
|
||
const char8_t *Notepad::ConfigComment::serverPort(Lang lang)
|
||
{
|
||
switch (lang)
|
||
{
|
||
case Lang::ru: {
|
||
static const char8_t* ru {u8"# Порт сервиса, по которому он доступен в обычной сети\n"};
|
||
return ru;
|
||
}
|
||
default: {
|
||
static const char8_t* en {u8"# The service port on which it is accessible on the regular network\n"};
|
||
return en;
|
||
}
|
||
}
|
||
}
|
||
|
||
const char8_t *Notepad::ConfigComment::serverInport(Lang lang)
|
||
{
|
||
switch (lang)
|
||
{
|
||
case Lang::ru: {
|
||
static const char8_t* ru {u8"# Порт, по которому сервис будет доступен в сети I2P\n"};
|
||
return ru;
|
||
}
|
||
default: {
|
||
static const char8_t* en {u8"# The port on which the service will be available on the I2P\n"};
|
||
return en;
|
||
}
|
||
}
|
||
}
|
||
|
||
const char8_t *Notepad::ConfigComment::serverBlinded(Lang lang)
|
||
{
|
||
switch (lang)
|
||
{
|
||
case Lang::ru: {
|
||
static const char8_t* ru {u8"# Параметры для зашифрованного лизсета (b33 aka bb32).\n"
|
||
"# Используется для дополнительной приватности сервера,"
|
||
"# делая невозможным пассивное обнаружение сервиса через мониторинг флудфилов\n"
|
||
"# Подробнее: https://habr.com/ru/articles/555604/\n"};
|
||
return ru;
|
||
}
|
||
default: {
|
||
static const char8_t* en {u8"# Parameters for encrypted leaseset (b33 aka bb32).\n"
|
||
"# Used for additional server privacy,\n"
|
||
"# making it impossible to passively detect the service through monitoring floodfilles\n"
|
||
"# Read more (russian): https://habr.com/ru/articles/555604/\n"};
|
||
return en;
|
||
}
|
||
}
|
||
}
|
||
|
||
const char8_t *Notepad::ConfigComment::inbound(Lang lang)
|
||
{
|
||
switch (lang)
|
||
{
|
||
case Lang::ru: {
|
||
static const char8_t* ru {u8"# Это конфиг туннеля, который является логической сущностью, обеспечивающей\n"
|
||
"# соединение через сеть I2P. Фактически туннель состоит из нескольких туннелей,\n"
|
||
"# которые называются нитями.\n"
|
||
"# Параметры входящих нитей:\n"};
|
||
return ru;
|
||
}
|
||
default: {
|
||
static const char8_t* en {u8"# This is a tunnel config, which is a logical term that enables communication.\n"
|
||
"# In fact, a tunnel consists of several tunnels, which are called strands.\n"
|
||
"# Parameters of inbound strands:\n"};
|
||
return en;
|
||
}
|
||
}
|
||
}
|
||
|
||
const char8_t *Notepad::ConfigComment::outbound(Lang lang)
|
||
{
|
||
switch (lang)
|
||
{
|
||
case Lang::ru: {
|
||
static const char8_t* ru {u8"# Параметры исходящих нитей:\n"};
|
||
return ru;
|
||
}
|
||
default: {
|
||
static const char8_t* en {u8"# Parameters of outbound strands:\n"};
|
||
return en;
|
||
}
|
||
}
|
||
}
|
||
|
||
const char8_t *Notepad::ConfigComment::length(Lang lang)
|
||
{
|
||
switch (lang)
|
||
{
|
||
case Lang::ru: {
|
||
static const char8_t* ru {u8"# - Количество транзитных узлов (длина)\n"};
|
||
return ru;
|
||
}
|
||
default: {
|
||
static const char8_t* en {u8"# - Number of transit nodes (length)\n"};
|
||
return en;
|
||
}
|
||
}
|
||
}
|
||
|
||
const char8_t *Notepad::ConfigComment::quantity(Lang lang)
|
||
{
|
||
switch (lang)
|
||
{
|
||
case Lang::ru: {
|
||
static const char8_t* ru {u8"# - Количество нитей\n"};
|
||
return ru;
|
||
}
|
||
default: {
|
||
static const char8_t* en {u8"# - Strands count\n"};
|
||
return en;
|
||
}
|
||
}
|
||
}
|
||
|
||
const char8_t *Notepad::ConfigComment::variance(Lang lang)
|
||
{
|
||
switch (lang)
|
||
{
|
||
case Lang::ru: {
|
||
static const char8_t* ru {u8"# - Число, на которое будет меняться длина случайных нитей (от -3 до 3)\n"};
|
||
return ru;
|
||
}
|
||
default: {
|
||
static const char8_t* en {u8"# - The number by which the length of random strands will be changed (from -3 to 3)\n"};
|
||
return en;
|
||
}
|
||
}
|
||
}
|
||
|
||
const char8_t *Notepad::ConfigComment::keysTransient(Lang lang)
|
||
{
|
||
switch (lang)
|
||
{
|
||
case Lang::ru: {
|
||
static const char8_t* ru {u8"# Временные ключи. Адрес туннеля будет меняться после каждого запуска i2pd.\n"
|
||
"# Чтобы использовать одинаковый временный адрес на нескольких туннелях,\n"
|
||
"# указывайте одинаковое название transient-*\n"};
|
||
return ru;
|
||
}
|
||
default: {
|
||
static const char8_t* en {u8"# Temporary keys. The tunnel address will change after each i2pd startup.\n"
|
||
"# To use the same temporary address on multiple tunnels,\n"
|
||
"# specify the same transient-* name\n"};
|
||
return en;
|
||
}
|
||
}
|
||
}
|
||
|
||
const char8_t *Notepad::ConfigComment::keys(Lang lang)
|
||
{
|
||
switch (lang)
|
||
{
|
||
case Lang::ru: {
|
||
static const char8_t* ru {u8"# Ключи, обеспечивающие постоянный адрес. Если указанный файл не существует,\n"
|
||
"# ключи будут созданы при первом запуске. Ключи хранятся в рабочей директории i2pd\n"};
|
||
return ru;
|
||
}
|
||
default: {
|
||
static const char8_t* en {u8"# Keys that provide a permanent address. If the specified file does not exist,\n"
|
||
"# keys will be created at the first startup. Keys are stored in the i2pd working directory\n"};
|
||
return en;
|
||
}
|
||
}
|
||
}
|
||
|
||
const char8_t *Notepad::ConfigComment::footer(Lang lang, bool isBlinded)
|
||
{
|
||
switch (lang)
|
||
{
|
||
case Lang::ru: {
|
||
if (isBlinded)
|
||
{
|
||
static const char8_t* ru {u8"\n"
|
||
"# Для создания туннеля нужно вставить этот текст в начало конфига tunnels.conf,\n"
|
||
"# который находится в рабочей директории i2pd. Расположение рабочей директории\n"
|
||
"# в системе отображается на главной странице веб-консоли i2pd (http://127.0.0.1:7070).\n"
|
||
"# Адрес созданного туннеля можно найти также через веб-консоль\n"
|
||
"# по пути I2P Tunnels -> TUNNEL NAME -> Encrypted B33 address.\n"
|
||
"# Другие параметры и более подробное описание приведенных параметров смотрите\n"
|
||
"# в документации: https://i2pd.readthedocs.io/en/latest/user-guide/tunnels/"};
|
||
return ru;
|
||
}
|
||
else
|
||
{
|
||
static const char8_t* ru {u8"\n"
|
||
"# Для создания туннеля нужно вставить этот текст в начало конфига tunnels.conf,\n"
|
||
"# который находится в рабочей директории i2pd. Расположение рабочей директории\n"
|
||
"# в системе отображается на главной странице веб-консоли i2pd (http://127.0.0.1:7070).\n"
|
||
"# Адрес созданного туннеля можно найти также через веб-консоль, вкладка I2P Tunnels.\n"
|
||
"# Другие параметры и более подробное описание приведенных параметров смотрите\n"
|
||
"# в документации: https://i2pd.readthedocs.io/en/latest/user-guide/tunnels/"};
|
||
return ru;
|
||
}
|
||
}
|
||
default: {
|
||
if (isBlinded)
|
||
{
|
||
static const char8_t* en {u8"\n"
|
||
"# To create a tunnel, you need to paste this text into the beginning of the tunnels.conf config,\n"
|
||
"# which is located in the i2pd working directory. Location of the working directory\n"
|
||
"# in the system is displayed on the main page of the i2pd web console (http://127.0.0.1:7070).\n"
|
||
"# The address of the created tunnel can also be found through the web console\n"
|
||
"# on the path I2P Tunnels -> TUNNEL NAME -> Encrypted B33 address.\n"
|
||
"# For other parameters and more detailed description of the above parameters see\n"
|
||
"# in the documentation: https://i2pd.readthedocs.io/en/latest/user-guide/tunnels/"};
|
||
return en;
|
||
}
|
||
else
|
||
{
|
||
static const char8_t* en {u8"\n"
|
||
"# To create a tunnel, you need to paste this text into the beginning of the tunnels.conf config,\n"
|
||
"# which is located in the i2pd working directory. Location of the working directory\n"
|
||
"# in the system is displayed on the main page of the i2pd web console (http://127.0.0.1:7070).\n"
|
||
"# The address of the created tunnel can also be found through the web console, I2P Tunnels tab.\n"
|
||
"# For other parameters and more detailed description of the above parameters see\n"
|
||
"# in the documentation: https://i2pd.readthedocs.io/en/latest/user-guide/tunnels/"};
|
||
return en;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
std::string Notepad::langToString(Lang lang)
|
||
{
|
||
return lang == Lang::ru ? "ru" : "en";
|
||
}
|
||
|
||
std::string Notepad::langToCode(Lang lang)
|
||
{
|
||
switch (lang)
|
||
{
|
||
case Lang::ru:
|
||
return "ru";
|
||
default:
|
||
return "en";
|
||
}
|
||
}
|
||
|
||
Notepad::Lang Notepad::stringToLang(const std::string &string)
|
||
{
|
||
return string == "ru" ? Lang::ru : Lang::en;
|
||
}
|
||
|
||
const char8_t *Notepad::tunnelTypeDescription(Lang lang, TunnelType type)
|
||
{
|
||
switch (type)
|
||
{
|
||
case TunnelType::TcpClient: {
|
||
switch (lang)
|
||
{
|
||
case Lang::ru: {
|
||
static const char8_t* ru {u8"# Клиентское подключение по протоколу TCP\n"};
|
||
return ru;
|
||
}
|
||
default: {
|
||
static const char8_t* en {u8"# Client connection via TCP protocol\n"};
|
||
return en;
|
||
}
|
||
}
|
||
}
|
||
case TunnelType::TcpServer: {
|
||
switch (lang)
|
||
{
|
||
case Lang::ru: {
|
||
static const char8_t* ru {u8"# Серверный туннель для приема подключений по протоколу TCP\n"};
|
||
return ru;
|
||
}
|
||
default: {
|
||
static const char8_t* en {u8"# Server tunnel to accept TCP connections\n"};
|
||
return en;
|
||
}
|
||
}
|
||
}
|
||
case TunnelType::UdpClient: {
|
||
switch (lang)
|
||
{
|
||
case Lang::ru: {
|
||
static const char8_t* ru {u8"# Клиентское подключение по протоколу UDP\n"};
|
||
return ru;
|
||
}
|
||
default: {
|
||
static const char8_t* en {u8"# Client connection via UDP protocol\n"};
|
||
return en;
|
||
}
|
||
}
|
||
}
|
||
case TunnelType::UdpServer: {
|
||
switch (lang)
|
||
{
|
||
case Lang::ru: {
|
||
static const char8_t* ru {u8"# Серверный туннель для приема подключений по протоколу UDP\n"};
|
||
return ru;
|
||
}
|
||
default: {
|
||
static const char8_t* en {u8"# Server tunnel to accept UDP connections\n"};
|
||
return en;
|
||
}
|
||
}
|
||
}
|
||
case TunnelType::HttpServer: {
|
||
switch (lang)
|
||
{
|
||
case Lang::ru: {
|
||
static const char8_t* ru {u8"# Серверный туннель для приема подключений по протоколу TCP\n"
|
||
"# с добавлением специальных заголовков HTTP к каждому запросу\n"
|
||
"# для идентификации клиента\n"};
|
||
return ru;
|
||
}
|
||
default: {
|
||
static const char8_t* en {u8"# Server tunnel to accept TCP connections\n"
|
||
"# with adding special HTTP headers to each request\n"
|
||
"# to identify the client\n"};
|
||
return en;
|
||
}
|
||
}
|
||
}
|
||
case TunnelType::HttpProxy: {
|
||
switch (lang)
|
||
{
|
||
case Lang::ru: {
|
||
static const char8_t* ru {u8"# HTTP-прокси для выхода в сеть I2P\n"};
|
||
return ru;
|
||
}
|
||
default: {
|
||
static const char8_t* en {u8"# HTTP proxy for I2P network access\n"};
|
||
return en;
|
||
}
|
||
}
|
||
}
|
||
case TunnelType::SocksProxy: {
|
||
switch (lang)
|
||
{
|
||
case Lang::ru: {
|
||
static const char8_t* ru {u8"# SOCKS5-прокси для выхода в сеть I2P\n"};
|
||
return ru;
|
||
}
|
||
default: {
|
||
static const char8_t* en {u8"# SOCKS5 proxy for I2P network access\n"};
|
||
return en;
|
||
}
|
||
}
|
||
}
|
||
case TunnelType::IrcServer: {
|
||
switch (lang)
|
||
{
|
||
case Lang::ru: {
|
||
static const char8_t* ru {u8"# Серверный туннель для приема подключений по протоколу TCP\n"
|
||
"# с добавлением специального заголовка для отображения I2P-адресов\n"
|
||
"# клиентов, которые подключаются к серверу IRC (Internet Relay Chat)\n"};
|
||
return ru;
|
||
}
|
||
default: {
|
||
static const char8_t* en {u8"# Server tunnel to accept TCP connections\n"
|
||
"# with addition of a special header for displaying I2P addresses\n"
|
||
"# of clients that connect to the IRC (Internet Relay Chat) server\n"};
|
||
return en;
|
||
}
|
||
}
|
||
}
|
||
default: {
|
||
switch (lang)
|
||
{
|
||
case Lang::ru: {
|
||
static const char8_t* ru {u8"# ^-^ это баг\n"};
|
||
return ru;
|
||
}
|
||
default: {
|
||
static const char8_t* en {u8"# ^-^ this is a bug\n"};
|
||
return en;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
const char8_t *Notepad::SetterError::name(Lang lang)
|
||
{
|
||
switch (lang)
|
||
{
|
||
case Lang::ru: {
|
||
static const char8_t* ru {u8"Имя может содержать только латиницу, цифры, а также символы - _ ."};
|
||
return ru;
|
||
}
|
||
default: {
|
||
static const char8_t* en {u8"The name can contain only Latin characters, digits, and symbols - _ ."};
|
||
return en;
|
||
}
|
||
}
|
||
}
|
||
|
||
const char8_t *Notepad::SetterError::length(Lang lang)
|
||
{
|
||
switch (lang)
|
||
{
|
||
case Lang::ru: {
|
||
static const char8_t* ru {u8"Максимальная длина туннеля составляет 8 транзитных узлов (минимальная - 0)"};
|
||
return ru;
|
||
}
|
||
default: {
|
||
static const char8_t* en {u8"The maximum length of the tunnel is 8 transit nodes (minimum is 0)"};
|
||
return en;
|
||
}
|
||
}
|
||
}
|
||
|
||
const char8_t *Notepad::SetterError::variance(Lang lang)
|
||
{
|
||
switch (lang)
|
||
{
|
||
case Lang::ru: {
|
||
static const char8_t* ru {u8"Фактор случайного изменения длины нитей может принимать значения от -3 до 3."};
|
||
return ru;
|
||
}
|
||
default: {
|
||
static const char8_t* en {u8"The factor of random variation in strands length can take values from -3 to 3."};
|
||
return en;
|
||
}
|
||
}
|
||
}
|
||
|
||
const char8_t *Notepad::SetterError::quantity(Lang lang)
|
||
{
|
||
switch (lang)
|
||
{
|
||
case Lang::ru: {
|
||
static const char8_t* ru {u8"Максимальная ширина туннеля (количество нитей) - 16. Минимальное - 1."};
|
||
return ru;
|
||
}
|
||
default: {
|
||
static const char8_t* en {u8"Maximum tunnel width (number of strands) - 16. Minimum - 1."};
|
||
return en;
|
||
}
|
||
}
|
||
}
|
||
|
||
const char8_t * Notepad::WebUi::tagline(Lang lang)
|
||
{
|
||
switch (lang)
|
||
{
|
||
case Lang::ru: {
|
||
static const char8_t* ru {u8"Конструктор конфигов туннелей I2P"};
|
||
return ru;
|
||
}
|
||
default: {
|
||
static const char8_t* en {u8"I2P tunnel config builder"};
|
||
return en;
|
||
}
|
||
}
|
||
}
|
||
|
||
const char8_t * Notepad::WebUi::error(Lang lang)
|
||
{
|
||
switch (lang)
|
||
{
|
||
case Lang::ru: {
|
||
static const char8_t* ru {u8"Ошибка"};
|
||
return ru;
|
||
}
|
||
default: {
|
||
static const char8_t* en {u8"Error"};
|
||
return en;
|
||
}
|
||
}
|
||
}
|
||
|
||
const char8_t *Notepad::WebUi::mainThOption(Lang lang)
|
||
{
|
||
switch (lang)
|
||
{
|
||
case Lang::ru: {
|
||
static const char8_t* ru {u8"Параметр"};
|
||
return ru;
|
||
}
|
||
default: {
|
||
static const char8_t* en {u8"Parameter"};
|
||
return en;
|
||
}
|
||
}
|
||
}
|
||
|
||
const char8_t *Notepad::WebUi::mainThInput(Lang lang)
|
||
{
|
||
switch (lang)
|
||
{
|
||
case Lang::ru: {
|
||
static const char8_t* ru {u8"Значение"};
|
||
return ru;
|
||
}
|
||
default: {
|
||
static const char8_t* en {u8"Value"};
|
||
return en;
|
||
}
|
||
}
|
||
}
|
||
|
||
const char8_t *Notepad::WebUi::mainTunnelName(Lang lang)
|
||
{
|
||
switch (lang)
|
||
{
|
||
case Lang::ru: {
|
||
static const char8_t* ru {u8"Название туннеля"};
|
||
return ru;
|
||
}
|
||
default: {
|
||
static const char8_t* en {u8"Tunnel name"};
|
||
return en;
|
||
}
|
||
}
|
||
}
|
||
|
||
const char8_t *Notepad::WebUi::mainTunnelNamePlaceholder(Lang lang)
|
||
{
|
||
switch (lang)
|
||
{
|
||
case Lang::ru: {
|
||
static const char8_t* ru {u8"Латиница, цифры и _ - ."};
|
||
return ru;
|
||
}
|
||
default: {
|
||
static const char8_t* en {u8"Letters, numbers, and _ - ."};
|
||
return en;
|
||
}
|
||
}
|
||
}
|
||
|
||
const char8_t *Notepad::WebUi::mainTunnelType(Lang lang)
|
||
{
|
||
switch (lang)
|
||
{
|
||
case Lang::ru: {
|
||
static const char8_t* ru {u8"Тип туннеля"};
|
||
return ru;
|
||
}
|
||
default: {
|
||
static const char8_t* en {u8"Tunnel type"};
|
||
return en;
|
||
}
|
||
}
|
||
}
|
||
|
||
const char8_t *Notepad::WebUi::mainDropdownClientTCP(Lang lang)
|
||
{
|
||
switch (lang)
|
||
{
|
||
case Lang::ru: {
|
||
static const char8_t* ru {u8"Клиент TCP"};
|
||
return ru;
|
||
}
|
||
default: {
|
||
static const char8_t* en {u8"TCP client"};
|
||
return en;
|
||
}
|
||
}
|
||
}
|
||
|
||
const char8_t *Notepad::WebUi::mainDropdownClientUDP(Lang lang)
|
||
{
|
||
switch (lang)
|
||
{
|
||
case Lang::ru: {
|
||
static const char8_t* ru {u8"Клиент UDP"};
|
||
return ru;
|
||
}
|
||
default: {
|
||
static const char8_t* en {u8"UDP client"};
|
||
return en;
|
||
}
|
||
}
|
||
}
|
||
|
||
const char8_t *Notepad::WebUi::mainDropdownServerTCP(Lang lang)
|
||
{
|
||
switch (lang)
|
||
{
|
||
case Lang::ru: {
|
||
static const char8_t* ru {u8"Сервер TCP"};
|
||
return ru;
|
||
}
|
||
default: {
|
||
static const char8_t* en {u8"TCP server"};
|
||
return en;
|
||
}
|
||
}
|
||
}
|
||
|
||
const char8_t *Notepad::WebUi::mainDropdownServerUDP(Lang lang)
|
||
{
|
||
switch (lang)
|
||
{
|
||
case Lang::ru: {
|
||
static const char8_t* ru {u8"Сервер UDP"};
|
||
return ru;
|
||
}
|
||
default: {
|
||
static const char8_t* en {u8"UDP server"};
|
||
return en;
|
||
}
|
||
}
|
||
}
|
||
|
||
const char8_t *Notepad::WebUi::mainDropdownServerHTTP(Lang lang)
|
||
{
|
||
switch (lang)
|
||
{
|
||
case Lang::ru: {
|
||
static const char8_t* ru {u8"Сервер HTTP"};
|
||
return ru;
|
||
}
|
||
default: {
|
||
static const char8_t* en {u8"HTTP server"};
|
||
return en;
|
||
}
|
||
}
|
||
}
|
||
|
||
const char8_t *Notepad::WebUi::mainDropdownServerIRC(Lang lang)
|
||
{
|
||
switch (lang)
|
||
{
|
||
case Lang::ru: {
|
||
static const char8_t* ru {u8"Сервер IRC"};
|
||
return ru;
|
||
}
|
||
default: {
|
||
static const char8_t* en {u8"IRC server"};
|
||
return en;
|
||
}
|
||
}
|
||
}
|
||
|
||
const char8_t *Notepad::WebUi::mainDropdownSOCKSProxy(Lang lang)
|
||
{
|
||
switch (lang)
|
||
{
|
||
case Lang::ru: {
|
||
static const char8_t* ru {u8"SOCKS5-прокси"};
|
||
return ru;
|
||
}
|
||
default: {
|
||
static const char8_t* en {u8"SOCKS5 proxy"};
|
||
return en;
|
||
}
|
||
}
|
||
}
|
||
|
||
const char8_t *Notepad::WebUi::mainDropdownHTTPProxy(Lang lang)
|
||
{
|
||
switch (lang)
|
||
{
|
||
case Lang::ru: {
|
||
static const char8_t* ru {u8"HTTP-прокси"};
|
||
return ru;
|
||
}
|
||
default: {
|
||
static const char8_t* en {u8"HTTP proxy"};
|
||
return en;
|
||
}
|
||
}
|
||
}
|
||
|
||
const char8_t *Notepad::WebUi::mainInbound(Lang lang)
|
||
{
|
||
switch (lang)
|
||
{
|
||
case Lang::ru: {
|
||
static const char8_t* ru {u8"Входящие"};
|
||
return ru;
|
||
}
|
||
default: {
|
||
static const char8_t* en {u8"Inbound"};
|
||
return en;
|
||
}
|
||
}
|
||
}
|
||
|
||
const char8_t *Notepad::WebUi::mainOutbound(Lang lang)
|
||
{
|
||
switch (lang)
|
||
{
|
||
case Lang::ru: {
|
||
static const char8_t* ru {u8"Исходящие"};
|
||
return ru;
|
||
}
|
||
default: {
|
||
static const char8_t* en {u8"Outbound"};
|
||
return en;
|
||
}
|
||
}
|
||
}
|
||
|
||
const char8_t *Notepad::WebUi::mainLength(Lang lang)
|
||
{
|
||
switch (lang)
|
||
{
|
||
case Lang::ru: {
|
||
static const char8_t* ru {u8"Длина нитей (количество транзитных узлов)"};
|
||
return ru;
|
||
}
|
||
default: {
|
||
static const char8_t* en {u8"Thread length (number of transit nodes)"};
|
||
return en;
|
||
}
|
||
}
|
||
}
|
||
|
||
const char8_t *Notepad::WebUi::mainQuantity(Lang lang)
|
||
{
|
||
switch (lang)
|
||
{
|
||
case Lang::ru: {
|
||
static const char8_t* ru {u8"Количество нитей (ширина туннеля)"};
|
||
return ru;
|
||
}
|
||
default: {
|
||
static const char8_t* en {u8"Number of strands (tunnel width)"};
|
||
return en;
|
||
}
|
||
}
|
||
}
|
||
|
||
const char8_t *Notepad::WebUi::mainVariance(Lang lang)
|
||
{
|
||
switch (lang)
|
||
{
|
||
case Lang::ru: {
|
||
static const char8_t* ru {u8"Число для изменения длины случайных нитей"};
|
||
return ru;
|
||
}
|
||
default: {
|
||
static const char8_t* en {u8"Number to change the length of random strands"};
|
||
return en;
|
||
}
|
||
}
|
||
}
|
||
|
||
const char8_t *Notepad::WebUi::mainB33(Lang lang)
|
||
{
|
||
switch (lang)
|
||
{
|
||
case Lang::ru: {
|
||
static const char8_t* ru {u8"Зашифрованный лизсет (защита от пассивного обнаружения ресурса, только для серверов)"};
|
||
return ru;
|
||
}
|
||
default: {
|
||
static const char8_t* en {u8"Encrypted leaseset (protection against passive resource discovery, for servers only)"};
|
||
return en;
|
||
}
|
||
}
|
||
}
|
||
|
||
const char8_t *Notepad::WebUi::mainTransient(Lang lang)
|
||
{
|
||
switch (lang)
|
||
{
|
||
case Lang::ru: {
|
||
static const char8_t* ru {u8"Временные ключи (внутрисетевой адрес изменится после рестарта i2pd)"};
|
||
return ru;
|
||
}
|
||
default: {
|
||
static const char8_t* en {u8"Temporary keys (on-net address will change after i2pd restart)"};
|
||
return en;
|
||
}
|
||
}
|
||
}
|
||
|
||
const char8_t *Notepad::WebUi::mainKeepalive(Lang lang)
|
||
{
|
||
switch (lang)
|
||
{
|
||
case Lang::ru: {
|
||
static const char8_t* ru {u8"Пинг сервера для поддержания соединения (интервал в секундах; чтобы выключить - 0)"};
|
||
return ru;
|
||
}
|
||
default: {
|
||
static const char8_t* en {u8"Server ping to keep the connection alive (interval in seconds; to turn off - 0)"};
|
||
return en;
|
||
}
|
||
}
|
||
}
|
||
|
||
const char8_t *Notepad::WebUi::mainComments(Lang lang)
|
||
{
|
||
switch (lang)
|
||
{
|
||
case Lang::ru: {
|
||
static const char8_t* ru {u8"Добавить подробные комментарии в конфиг"};
|
||
return ru;
|
||
}
|
||
default: {
|
||
static const char8_t* en {u8"Add detailed comments to the config"};
|
||
return en;
|
||
}
|
||
}
|
||
}
|
||
|
||
const char8_t *Notepad::WebUi::mainGenerate(Lang lang)
|
||
{
|
||
switch (lang)
|
||
{
|
||
case Lang::ru: {
|
||
static const char8_t* ru {u8"Сгенерировать"};
|
||
return ru;
|
||
}
|
||
default: {
|
||
static const char8_t* en {u8"Generate"};
|
||
return en;
|
||
}
|
||
}
|
||
}
|
||
|
||
const char8_t *Notepad::WebUi::configGoBack(Lang lang)
|
||
{
|
||
switch (lang)
|
||
{
|
||
case Lang::ru: {
|
||
static const char8_t* ru {u8"На главную"};
|
||
return ru;
|
||
}
|
||
default: {
|
||
static const char8_t* en {u8"Main page"};
|
||
return en;
|
||
}
|
||
}
|
||
}
|