По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
img
Порой появляется необходимость делиться своими файлами с друзьями, которые живут в соседней квартире и делят с вами вашу локальную сеть. Или же у вас есть NAS сервер и вы решили организовать свое файловое хранилище, куда могли бы получить доступ с любой точки мира. Правда, закачать файлы в облако и пользоваться оттуда никто не отменял, но туда вы не поместите терабайты информации, которая хранится у вас на домашнем сетевом хранилище. Вот тут на помощь приходит локальный FTP сервер. Сетевые файловые накопители имеют встроенную возможность и соответствующие средства для организации данного сервиса. О возможностях конкретных моделей можно узнать на сайте производителя. Но мы решили создать свой сервер на обычном домашнем ноутбуке. Для претворения в жизнь нашей затеи выбрали бесплатную и достаточно известную программу FileZilla. С клиентской частью наверное вам приходилось работать чаще, но есть еще и серверная часть, которая позволяет создавать свой FTP сервер. Качаем программу с официально сайта и устанавливаем. Установка стандартная поэтому покажу ту часть, которая может вызвать вопросы. На этом месте установки выбираем Установить как службу, чтобы при загрузке компьютера сервер запускался автоматически. Порт можно поменять, но особого смысла нет, так как он используется только для локального подключения к серверу. Далее переходим к настройке самой программы. Тут тоже буду останавливаться только на основных моментах, которые критичны для работы системы. Итак, первым делом в меню Edit выбираем Settings. В пункте General Settings выставляем значение как на рисунке: Listen on these ports указывает на то, какие порты программа должна прослушивать для входящих соединений. Для большей безопасности их можно изменить и поставить любой порт выше 1023. В принципе можно и выше 1, но хорошим тоном считается выбор не общеизвестных портов, дабы избежать конфликтов. Number of threads указывает на число потоков. Рекомендуется устанавливать равным числу установленных процессоров умноженных на 2. Connection timeout устанавливает время в сессии для поключенного пользователя. No Transfer timeout здесь указывается время после последнего трансфера файлов, по истечении которого соединение с сервером будет прервано. Login timeout задает время ожидания ввода пользователем учётных данных. В принципе в локальной сети этих настроек вполне достаточно. Следующий пункт Passive mode settings, который настраивается если вы подключаетесь к вашему серверу извне, а сервер стоит за маршрутизатором, который в свою очередь преобразует ваш серый IP, который начинается с 192.168. в белый, то бишь публичный, который виден всему Интернету. Use custom ranges указываете порты, которые система выборочно откроет при инициализации подключения извне. Use following IP указываете ваш внешний IP адрес, который можете посмотреть в Интернете вбив в поисковик ключевое слово my ip. Retrieve external IP address from тут остановлюсь поподробней. Дело в том, что внешний IP у обычных поользователей меняется. И если вы укажете текущий адрес, то через некоторое время он будет недоступен. Тут на помощь приходит Dynamic DNS. Это такой вид услуги, которая позволяет обращаться к вашему внешнему IP адресу по доменному имени, например mycomp.com. Для этого нужно зарегистрироваться на одном из многочисленных сервисов, предоставляющих данную услугу, выбрать себе доменное имя и настроить соответствующим образом маршрутизатор. Но обо всем по порядку. Хотя на рынке много поставщиков услуги указанного вида, я остановил свой выбор на noip.com. Во-первых, потому что этот сервис поддерживается моим роутером. А во-вторых, здесь бесплатно предоставляется доменное имя на месяц, а по истечении вы просто заходите и заново регистрируете ваш домен. Для регистрации переходим на сайт noip.com. В главном окне в разделе Quick Add вписываем любое название и выбираем домен третьего уровня. Нажимаем Add hostname и наш домен готов. Затем открываем панель управления маршрутизатором, переходим на вкладку Динамический DNS, выбираем поставщика услуг, вводим имя пользователя указанный при регистрации на сайте сервиса, пароль и доменное имя. Включаем DNS и нажимаем Войти. Если всё указано правильно состояние подключения будет "Успешно!" После всего этого в настройка FileZilla в строке Retrieve external IP address from указываем наш DNS адрес. Дело остается за малым создать пользователя и протестировать подключение. Для этого в меню Edit выбираем Users. В открывшемся окне нажимаем на Add, задаём ему имя, ставим галочки перед Enable account и Password и вводим пароль. Все остальные настройки можно не менять: Затем создаем папку для пользователя, даем ему нужные права и указываем как домашнюю директорию Set as home dir, чтобы при подключении пользователя перебросило сразу в нужное место. Можно для каждого пользователя создать отдельную папку, а также назначать разные уровни доступа на одну и ту же директорию. Но что если вы всё это сделали, но друзья из Канады всё же не могут подключиться? Проблем могут быть две. Первая, не настроен переброс портов на роутере, вторая не прописано нужное правило на сетевом экране. Так настроим! Для переброса портов на маршрутизаторе TP-Link переходим на вкладку Переадресация -> Виртуальные сервера. По умолчанию здесь никаких записей нет. Нажимаем на Добавить и вводим нужные значения. Порт сервиса указываем внешний порт, на который будут идти обращения на наш IP. Здесь можно прописать и свои значения, но при подключении извне нужно будет прописать их в настройках клиента. Стандартный порт FTP 21. Внутренний порт порт, который слушается на нашем сервере. В нашем случае это тоже 21. IP-адрес адрес компьютера, где установлена серверная часть программы FileZilla. Протоколы тут выбор не велик либо TCP, либо UDP. О протоколах можно говорить долго, но вкратце TCP гарантирует доставку отправленного пакета, но работает медленней, так как приходится ждать подтверждения получения каждой порции данных. UDP же шустрее TCP, но его не заботит получит ли адресат пакет или нет. FTP работает поверх TCP. Есть еще набор предопределённых портов, который можно выбрать из выпадающего списка. Если всё стандартно, то выбираем FTP и нам не придётся вручную вводить все значения. Затем нажимаем на Сохранить. Далее переходим к настройке межсетевого экрана. Для начала, чтобы убедиться, что именно он блокирует попытки подключения, лучше его вовсе отключить. Если всё заработало, то переходим к соответствующим настройкам. На Панели управления выбираем Windows Defender Firewall -> Advanced Settings. Нажимаем на Inbound Rules (Правила для входящих соединений) и в правой панели выбираем New Rule. В открывшемся окне значения ставим как на рисунке: Затем указываем порты и протоколы, для которых хотим разрешить соединение. Для FTP указываем TCP/21: Нажимаем Next, указываем действие Разрешить (Allow the connection): Профиль указывает для каких сетей будет действовать данное правило. Выбираем все: В конце вводим название правила и нажимаем Finish. Для Passive Mode делаем все тоже самое, только значение портов указываем те, что были прописаны в настройках программы в пункте Passive mode settings. Тут мы настроили правило для входящих подключений. Также нужно настроить правило для исходящих соединений. Все то же самое, просто настраивается в Outbound Rules (Правила для исходящих подключений). После этого все должно начать работать. Если что-то не работает, попробуйте отключить межсетевой экран антивируса, если там таковой есть. В любом случае программа вам даст подсказки: код и описание ошибки, по причине которой не смог подключиться пользователь. (В данном случае ошибок нет, цель рисунка наглядно показать как выглядит сообщение программы)
img
Седьмая часть тут. Поля фиксированной длины - самый простой из описанных в словаре механизмов. Протокол определяет набор полей, какие данные содержит каждое поле и насколько велико каждое поле. Эта информация «встроена» в определение протокола, поэтому каждая реализация построена в соответствии с этими же спецификациями и, следовательно, может взаимодействовать друг с другом. Рисунок 1 иллюстрирует кодирование поля фиксированной длины, используемое в протоколе Open Shortest Path First (OSPF), взятом из RFC2328. Ряд чисел в верхней части рисунка 1 указывает отдельные биты в формате пакета; каждая строка содержит 32 бита информации. Первые 8 битов указывают номер версии, вторые 8 битов всегда имеют номер 5, следующие 16 битов содержат общую длину пакета и так далее Каждое из этих полей дополнительно определяется в спецификации протокола с видом информации, переносимой в поле и как оно закодировано. Например: Поле номера версии кодируется как целое число без знака. Это метаданные, указывающие словарь и грамматику, используемые для этого пакета. Если формат пакета необходимо изменить, номер версии может быть увеличен, что позволяет передатчикам и получателям использовать правильный словарь и грамматику при кодировании и декодировании информации в пакете Число 5 указывает тип пакета в протоколе; это часть словаря, определенного в другом месте в документе стандартов, поэтому он просто вставляется как фиксированное значение на этом рисунке. Этот конкретный пакет является пакетом подтверждения состояния канала (Link State Acknowledgment Packet). Длина пакета кодируется как целое число без знака, указывающее количество октетов (или наборов из 8 битов), содержащихся в полном пакете. Это позволяет размеру пакета варьироваться по длине в зависимости от объема передаваемой информации. Формат поля фиксированной длины имеет несколько преимуществ. Прежде всего, местоположение любого фрагмента информации в пакете будет одинаковым для каждого пакета, что означает, что легко оптимизировать код, предназначенный для кодирования и декодирования информации вокруг формата пакета. Например, обычным способом обработки формата пакета фиксированной длины является создание структуры данных в памяти, точно соответствующей формату пакета; когда пакет считывается с провода, он просто копируется в эту структуру данных. Поля в пакете могут быть прочитаны напрямую. Форматы фиксированной длины имеют тенденцию быть несколько компактными. Метаданные, необходимые для кодирования и декодирования данных, передаются «вне протокола» в форме спецификации протокола. Сами пакеты содержат только значение и никогда не содержат никакой информации о значениях. С другой стороны, форматы фиксированной длины могут тратить много места на буферизацию полей, чтобы они всегда были одинаковой длины. Например, десятичное число 1 может быть представлено одной двоичной цифрой (один бит), тогда как десятичное число 4 требует 3 двоичных цифры (три бита); если поле фиксированной длины должно быть в состоянии представить любое число от 0 до 4, оно должно быть длиной не менее 3 битов, даже если два из этих битов иногда «теряются» при представлении меньших десятичных чисел. Форматы фиксированной длины также часто занимают место, выравнивая размеры полей по общим границам памяти процессора, чтобы повысить скорость обработки. Поле, которое должно принимать значения от 0 до 3, даже если для представления полного набора значений требуется только два бита, может быть закодировано как 8-битовое поле (полный октет), чтобы обеспечить всегда выравнивание следующего поля на границе октета для более быстрой обработки в памяти. Гибкость - то, где кодирование фиксированной длины часто сталкивается с проблемами. Если какое-либо поле определено как 8-битное значение (один октет) в исходной спецификации, нет очевидного способа изменить длину поля для поддержки новых требований. Основной способ решения этой проблемы в схемах кодирования с фиксированной длиной - через номер версии. Если длина поля должна быть изменена, номер версии изменяется в форматах пакетов, поддерживающих новую длину поля. Это позволяет реализациям использовать старый формат, пока все устройства в сети не будут обновлены для поддержки нового формата; после того как все они обновлены, вся система может быть переключена на новый формат, будь то больше или меньше.
img
Ранее мы уже рассказывали про регулировку громкости в Asterisk. Этот метод рабочий, но весьма статичен. Поэтому в голову пришла интересная мысль. Представьте, вы совершаете звонок. И, неожиданно, ваш собеседник начинает "кричать" в трубку. Пусть кричит – наши нервы прошли и не такое, но дело в том, что громкость звонка задана жёстко в кастомном диалплане. Поэтому, ощущения от крика буду особенно острыми :) А теперь, вообразите, что у вас есть возможность сделать собеседника "тише" кнопками телефонного аппарата. А потом, когда он успокоится, сделать снова громче. Интересно? Поехали. Подготовка Откроем FreePBX. Открыв модуль сервисных кодов (feature codes), мы обнаружим, что в нем можно только изменить существующие коды, но добавить новые нельзя. Решение указанной в начале статьи задачи будет базироваться на встроенных функциях Asterisk. То есть мы не будем добавлять кастомный контекст. Настройка Открываем файл /etc/asterisk/globals_custom.conf. Этот файл позволяет переписать или добавить глобальные переменные, используемые Asterisk (как стандартные, так и ваши личные). Если данного файла нет, то его нужно создать. Например, вот так: touch /etc/asterisk/globals_custom.conf chown asterisk:asterisk /etc/asterisk/globals_custom.conf chmod 775 /etc/asterisk/globals_custom.conf В файл добавляем следующую конструкцию: DYNAMIC_FEATURES=VUp#VDown#MUp#MDown Vol=0 Mic=0 Мы задали специальные функции, которые понадобятся нам далее. Сейчас будем закреплять комбинации цифр за кодами. Для этого открываем файл etc/asterisk/features_applicationmap_custom.conf и запишем в него следующее: VUp => 52*,self,Macro,VolumeUp VDown => 58*,self,Macro,VolumeDown MUp => 54*,self,Macro,MicUp MDown => 56*,self,Macro,MicDown Мы закрепили за кодами выполнение макроса громкости, который мы напишем далее. Не пугайтесь - "странные" комбинации выбраны по причине того, что их просто запомнить, так как на клавиатуре телефона, это так называемый "крест", наподобие джойстика ;) Go ahead. Приступаем к самим макросам. Для этого открываем файл /etc/asterisk/extensions_custom.conf и добавляе: [from-internal-custom] Set(__DYNAMIC_FEATURES=VUp#VDown#MUp#MDown) Таким образом, мы подключаем добавленные коды в диалплан Asterisk, который генерирует FreePBX. Не спешите закрывать файл extensions_custom.conf. В него же добавляем механизм увеличения громкости. То есть, макросы о которых мы писали ранее: [macro-VolumeUp] exten => s,1,Set(Vol=$[${Vol}+5]) same => n,Set(VOLUME(TX)=${Vol}) [macro-VolumeDown] exten => s,1,Set(Vol=$[${Vol}-5]) same => n,Set(VOLUME(TX)=${Vol}) [macro-MUp] exten => s,1,Set(Mic=$[${Mic}+5]) same => n,Set(VOLUME(RX)=${Mic}) [macro-MDown] exten => s,1,Set(Mic=$[${Mic}-5]) same => n,Set(VOLUME(RX)=${Mic}) Можно выдохнуть. На этом правки закончены. Как вы могли заметить, почему-то "громкостей" несколько. Все достаточно просто. Это 2 макроса на увеличение и уменьшение громкости канала звука и, соответственно, канала микрофона. Что нам все эти коды дают (по сравнению с жестко прописанными числами)? В любой момент разговора, если вы плохо (тихо) слышите собеседника, нужно набрать на телефоне 52* и громкость увеличится, так можно делать несколько раз пока уровень громкости собеседника не станет приемлемым. Это работает и наоборот: 58* и собеседник становится "тише". Удобно, правда? :) Из плюсов - не надо прерывать звонок. Нет жёсткого ограничения громкости. Если разговор затягивается на длительное время, можно выставить комфортную слышимость. Ну а второй макрос, спросите вы? Представьте: что делать, если собеседник жалуется, что вас тихо слышно? Нет проблем. Набираем 54* и собеседник начинает нас лучше слышать, то есть, мы увеличиваем громкость канала нашего микрофона!
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59