Страницы

Поиск по вопросам

Показаны сообщения с ярлыком router. Показать все сообщения
Показаны сообщения с ярлыком router. Показать все сообщения

воскресенье, 8 марта 2020 г.

Как в vue.js организовать связь между компонентами?

#javascript #router #vuejs #компоненты


Есть главный компонент и поле для "роутера", содержимое которого меняется в зависимости
от url. Я не могу достучаться из компонента роутера к главному компоненту,передать
значения и наоборот- с главного в дочерние, находящиеся в поле роутера.
Как вызывать функции и передавать значания в другой компонент vue.js ?
    


Ответы

Ответ 1



Смотря в какой версии ? в версии Vue 1.* 1) this.$dispatch('someEvent',[params,...]); - инициировать событие из компонента наверх (всем родителям) 2) this.$broadcast('someEvent',[params,...]); - транслировать событие всем потомкам в самом компоненте перехват события export default { data(){}, events:{ 'someEvent':function([params,...]){} } } В версии Vue 2.* немного иначе, там отказались от всего этого. Нужно создать еще один экземпляр Vue обычно делается это так: var eventHub = new Vue(); eventHub.$on('test', function (msg) { console.log(msg) }) new Vue({ el: '#app', data(){ return { eventHub:eventHub } } }) Далее в любом компоненте в методе можно сделать так: this.$root.eventHub.$emit('test','Тестовое сообщение') Собственно on можно делать внутри компонентов в mounted(){ var self = this; this.$root.eventHub.$on('test',function(){ //тут используем self для доступа к данным компонента }) }

среда, 5 февраля 2020 г.

Как объединить двух провайдеров, увеличив скорость интернета?

#windows #маршрутизация #router


Есть два интернет провайдера.
Как можно при скачивании, например, торрентов, использовать сразу двух провайдеров?  

Либо как-то прописать айпи-адреса. Если один, то подключиться к одному провайдеру,
а если другой - то к другому. Ну либо как-то по другому.
Можно ли прописать в роутере? Либо ставить две сетевых карты? (Конечно, лучше в роутере,
чтоб с каждым компом не заморачиваться).

Спасибо.
    


Ответы

Ответ 1



Распределение нагрузки с лёгкостью можно реализовать на базе Mikrotik Вся суть процесса сводится к настройке 2х каналов интернета,настройки NAT, удалить шлюз по умолчанию, и назначить в качестве шлюзов эти 2 канала в зависимости от пропускной способности. 192.168.1.249 - 1шлюз 192.168.222.1 - 2шлюз вариант для балансировки 50/50 ip route add dst-address=0.0.0.0/0 gateway=192.168.1.249,192.168.222.1 Предположим, что у первого провайдера скорость доступа в два раза выше чем у второго, тогда 2/3 исходящих запросов надо направить на первого, а оставшиеся 1/3 на второго. ip route add dst-address=0.0.0.0/0 gateway=192.168.1.249,192.168.1.249,192.168.222.1 Полное описание процесса настройки Более развёрнуто о способах балансировки нагрузки ПС. Однако всякого рода Http, Https, ftp и тому подобный трафик нужно будет маркировать и направлять ручками (или возможно используя скрипты)) на определённый канал дабы исключить вариант смены IP при обновлении страниц к примеру

Ответ 2



Для того, чтобы вы могли одновременно работать через двух провайдеров, вам надо, чтобы ваш белый ip маршрутизировался обоими провайдерами. Это возможно только в случае PI-адресов, но сейчас IPv4 такие адреса вы не получите. Только IPv6. Варианты с маршрутизацией на железке проблемны тем, что для сервера в инете у вас будет то ip от одного провайдера, то ip от другого. И большинство серверов будет полагать, что это разные клиенты и требовать заново авторизации, установления сессии и т.д.

Ответ 3



Сомневаюсь, что рядовые роутеры спомобны на такое. Подключите 2 роутера в одну сеть. На втором роутере отключите раздачу DHCP. На клиентских ПК укажите либо 2 шлюза с одинаковыми приоритетами, либо одной половине клиентов укажите один шлюз, а второй половине - другой.

Ответ 4



В "продвинутых" роутерах возможно разделить трафик между двумя провайдерами. При этом минимальный квант разделения - это сессия. Не знаю, могут ли такое роутеры, тем более в авторежиме (а совсем хорошо - с учётом загрузки канала). Вон товарищ уверен в Микротике. Малой кровью можно обойтись, если на одном из WAN-интерфейсов не указывать шлюза по умолчанию, а в настройке маршрутизации прописАть через него маршрут(ы) в половину Инета (адрес/маска, делить на глазок). Тогда всё, что попадает под указанные подсети, пойдёт через второго прова, а остальное через того, чей остался дефолтный шлюз. Желательно при этом трафик на узлы одного провайдера не пускать через шлюз другого. А вот вариант, когда трафик сессии идёт то через одного, то через другого провайдера (или через обоих одновременно) невозможен - потому как для этого нужна соотв. договорённость и настройка синхронизации между ними, а зачем ИМ это надо?

понедельник, 23 декабря 2019 г.

Можно ли как то программно заставить роутер переподключиться?

#сеть #router


Можно ли как-то программно заставить роутер переподключиться?

WAN-соединение (динамический ip-адрес). хочу иметь возможность, запустив скрипт,
получить от провайдера новый ip-адрес. хотелось бы увидеть код на любом языке.
    


Ответы

Ответ 1



Это можно сделать разными способами. Через HTTP. Отловите запросы, которые делает ваш браузер когда вы заставляете роутер получить новый IP вручную - и воспроизведите их в скрипте. Желательны знания протокола HTTP. Отловить эти запросы можно через инструменты разработчика в браузере или через Fiddler. Через telnet или ssh. Подключитесь к роутеру по этим протоколам и попробуйте найти нужную команду. В скрипте достаточно послать ее еще раз. Обычно скрипты для такого способа выходят проще - но поиск решения сложнее из-за отсутствия документации. Желательны знания UNIX. Для подключения можно воспользоваться Putty Через UPnP. Винда же как-то умеет интернет отцеплять и подцеплять обратно - значит, и для вас способ должен быть. Но тут подробностей я вообще не знаю. Нужны знания UPnP, которых у меня нет. Более конкретных советов дать не могу: разные роутеры очень сильно отличаются друг от друга, единых стандартов нет (кроме UPnP). Даже одна и та же модель роутера, выпущенная в разные годы, может работать по-разному. Предоставляет ли провайдер VPN-доступ? Если да, то можно отказаться от интернета по DHCP, подключить себе VPN - а переподключать VPN скриптом куда проще. Еще один альтернативный вариант - TOR. Видимый IP-адрес будет меняться при каждой смене выходной ноды. Возможно, клиент можно и как-нибудь пнуть для принудительного изменения выходной ноды (перезапуск клиента - универсальный способ). Для использования этого варианта понадобится научиться работать через прокси-сервер.

Ответ 2



если в маршрутизаторе установлен дистрибутив openwrt, то перезапуск всех сетевых подключений выполняется довольно стандартным для sysvinit способом: # /etc/init.d/network restart

вторник, 16 июля 2019 г.

Роутер TP-Link меняет адрес в пакетах на свой. Как от этого избавиться?

Без использования роутера TP-Link WR740N вся система работает так:

Нужно получить доступ с сервера C к серверу A через сервер B. Настройки всех серверов я привел на изображении. Тестовый стенд готов, на сервере A запускаю программу tcpdump, а на сервере C выполняю команду ping 8.8.8.8. Все как и ожидалось: tcpdump показыват, что пакеты пришли с адреса 192.168.50.2. Все отлично.
Теперь я решил заменить сервер B роутером, о котором говорил выше. Все настройки сделал как у сервера B, к порту WAN подключил сервер A, к порту LAN1 сервер C. И снова, на сервере A запускаю tcpdump а на сервере C ping 8.8.8.8. В результате tcpdump показывает, что отправитель пакетов 172.20.0.2. Что не является ожидаемым для меня результатом.
Собственно вопрос. Каким образом можно настроить этот модем, чтобы результат получился схожим с сервером B? Я слышал, что на этот модем можно поставить OpenWRT. Поможет ли это настроить, если базовых настроек не хватит?
UPD Если запустить команду ping 192.168.50.2 на сервере A, а на сервере C запустить tcpdump, то в качестве источника пакета будет указан адрес 172.20.0.1 (то есть не поменялся при прохождении через роутер)


Ответ

Требуется роутер уровня SOHO, никак не домашний. Минимальное по деньгам, что вполне реально настроить нужным образом - из любимых лично мной микротиков - Mikrotik Hap Lite, на момент публикации стоит от 1500 рублей.
Есть вариант экспериментов с прошивкой dd-wrt, OpenWrt, шанс очень большой, что всё там заработает, но проблема - текущих знаний может не хватить для настройки. К сожалению, у меня такого образчика нет, не смогу сказать, что лучше.
Суть проблемы в механизме NAT. Сервер А и С находятся в разных подсетях, поэтому напрямую они не смогут общаться между собой, им для общения требуется железяка, которая умеет маршрутизировать (домашний "роутер" умеет только NATить), порты которой находятся в обоих подсетях, маршруты в сети А и С прописаны на серверах А и С, либо просто ип адрес порта роутера В указан в качестве шлюза по умолчанию.
Наглядная документация по теме NAT есть в гугле по запросу "сети для самых маленьких", там же и про маршрутизацию немного.

суббота, 13 июля 2019 г.

URL роутинг на PHP

Начал разбираться в MVC PHP, после множества прочитанных статей и просмотренных видео уроков накатал каркас своего приложения. (Сразу попрошу не советовать использовать готовые решение, я хочу изобрести собственный велосипед, так мне легче во всем разобраться). Схема стандартная все запросы идут на index.php, в роутере разбираю URL на controller, action, params. Ну с этим проблем нет. URL получаются такого вида: http://localhost/categories/sport, где categories - имя контроллера, а sport - action. Потом создаю второй контроллер к примеру articles, URL - http://localhost/articles/football ну и все по прежней схеме. Вопрос: как создать ссылку вида http://localhost/categories/sport/articles/football, или http://localhost/categories/sport/football Только так чтобы не писать все в одном контроллере.
Вот класс роутера:
class Router {
protected $uri; protected $controller; protected $action; protected $params; protected $route; protected $method_prefix; protected $language;
public function getUri() { return $this->uri; }
public function getController() { return $this->controller; }
public function getAction() { return $this->action; }
public function getParams() { return $this->params; }
public function getRoute() { return $this->route; }
public function getMethodPrefix() { return $this->method_prefix; }
public function getLanguage() { return $this->language; }
public function __construct($uri) { $this->uri = urldecode(trim($uri, '/'));
// Get defaults $routes = Config::get('routes'); $this->route = Config::get('default_route'); $this->method_prefix = isset($routes[$this->route]) ? $routes[$this->route] : ''; $this->language = Config::get('default_language'); $this->controller = Config::get('default_controller'); $this->action = Config::get('default_action');
$uri_parts = explode('?', $this->uri);
// Get path like /lng/controller/action/param1/param2/ $path = mb_substr($uri_parts[0], 14);
$path_parts = explode('/', $path);
if(count($path_parts)) {
// Get route at first element if(in_array(strtolower(current($path_parts)), array_keys($routes))) { $this->route = strtolower(current($path_parts)); $this->method_prefix = isset($routes[$this->route]) ? $routes[$this->route] : ''; array_shift($path_parts);
} elseif(in_array(strtolower(current($path_parts)), Config::get('languages'))) { $this->language = strtolower(current($path_parts)); array_shift($path_parts); }
//Get controller - next element of array if(current($path_parts)) { $this->controller = strtolower(current($path_parts)); array_shift($path_parts); }
//Get action if(current($path_parts)) { $this->action = strtolower(current($path_parts)); array_shift($path_parts); }
//Get params - all the rest $this->params = $path_parts; } }
public static function redirect($location) { header("Location: $location"); exit(); }
public static function notFound() { header('HTTP/1.0 404 Not Found'); header('HTTP/1.1 404 Not Found'); header('Status: 404 Not Found');
return true;
} }


Ответ

Закрываю вопрос, после долгих поисков нашел, и решил использовать AltoRouter, рекомендую всем: http://altorouter.com/

среда, 21 ноября 2018 г.

Можно ли как то программно заставить роутер переподключиться?

Можно ли как-то программно заставить роутер переподключиться?
WAN-соединение (динамический ip-адрес). хочу иметь возможность, запустив скрипт, получить от провайдера новый ip-адрес. хотелось бы увидеть код на любом языке.


Ответ

Это можно сделать разными способами.
Через HTTP. Отловите запросы, которые делает ваш браузер когда вы заставляете роутер получить новый IP вручную - и воспроизведите их в скрипте. Желательны знания протокола HTTP. Отловить эти запросы можно через инструменты разработчика в браузере или через Fiddler Через telnet или ssh. Подключитесь к роутеру по этим протоколам и попробуйте найти нужную команду. В скрипте достаточно послать ее еще раз. Обычно скрипты для такого способа выходят проще - но поиск решения сложнее из-за отсутствия документации. Желательны знания UNIX. Для подключения можно воспользоваться Putty Через UPnP. Винда же как-то умеет интернет отцеплять и подцеплять обратно - значит, и для вас способ должен быть. Но тут подробностей я вообще не знаю. Нужны знания UPnP, которых у меня нет.
Более конкретных советов дать не могу: разные роутеры очень сильно отличаются друг от друга, единых стандартов нет (кроме UPnP). Даже одна и та же модель роутера, выпущенная в разные годы, может работать по-разному.

Предоставляет ли провайдер VPN-доступ? Если да, то можно отказаться от интернета по DHCP, подключить себе VPN - а переподключать VPN скриптом куда проще.
Еще один альтернативный вариант - TOR. Видимый IP-адрес будет меняться при каждой смене выходной ноды. Возможно, клиент можно и как-нибудь пнуть для принудительного изменения выходной ноды (перезапуск клиента - универсальный способ). Для использования этого варианта понадобится научиться работать через прокси-сервер.