LINUX.ORG.RU

Сообщения greek_31

 

Default route failover

На шлюзе есть два cту маршрута по-умолчанию от двух разных провайдеров.

Нужен автоматический FAILOVER(второй маршрут работает только когда не работает первый) маршрута по-умолчанию. Причем отказ маршрута должен определятся по доступности шлюза провайдера, а не ya.ru или <что там еще пишут>

Сейчас меняются руками, через ip route replace default ...

Не взлетело:

  • Протоколы маршрутизации. Надо договариваться с провайдерами. Если ли есть варианты, что бы не договариваться, то я обеими руками за.
  • Два маршрута с разными метриками и изменение настроек ядра. Это работает, но проблема в том, что только пока линк становиться неактивным. Если линк активен, но связи нет, то переключения не будет.
  • Скрипт с ping. Шел 2018 год.

Какие есть еще варианты?

 ,

greek_31
()

Asterisk отключить MixMonitor

Есть Asterisk версии 11.13.1

На нем настроен один входящий транк, который распределяется на очередь. В диалплане выглядит вот так:

[sip-incoming]
 exten => XXX,1,NoOp()
 exten => XXX,n,Answer()
 exten => XXX,n,Ringing()
 exten => XXX,n,Queue(managers,rtTk,,,3600)
 exten => XXX,n,Hangup()
Сам queues.conf:
[general]

persistentmembers = yes 
;autofill = no
;monitor-format = wav
;monitor-type = MixMonitor
; updatecdr = no
;shared_lastcall=no
;negative_penalty_invalid = no
;log_membername_as_agent = no

[managers]
 strategy = ringall 
 ... members ...
Ну и есть диалплан всех телефонов:
[sip-phones]
 include => sip-incoming
 include => outgoing

 exten => 123,1,NoOp()
 exten => 123,n,Dial(SIP/123,10800,rt)
 exten => 123,n,Hangup()

 .....

Но в логах при звонке и verbose 3 все равно присутствуют записи типа:

  == Begin MixMonitor Recording SIP/123-00000033
  == MixMonitor close filestream (mixed)
  == End MixMonitor Recording SIP/123-00000033
  == Spawn extension (sip-incoming, XXX, 6) exited non-zero on 'SIP/sip-00000031'
  == MixMonitor close filestream (mixed)
  == End MixMonitor Recording SIP/123-00000030

и ИЧСХ файлы создаются и их можно прослушать.

Мне так то MixMonitor нужен(а если бы не был нужен?!), но я хочу сам его создавать с записью CDR и именами файлов.

Как отключить MixMonitor по-умолчанию, хз как его назвать?

 

greek_31
()

Django валидация формы по двум или более полям.

Как в джанге правильно делать валидацию по двум полям?

Допустим у меня есть два поля: id и tехt. Как проверить, что бы к примеру при id = 15 text должен быть `111`. При чем данные формы реально не корректные, т.е. пользователь сам никак не может их ввести в форму (только подделать).

Есть 2 варианта...

Переопределять метод clean()[причем все советуют иммено его] у всей формы. Но он пишет ошибки не к полям, а в спец поле `__all__`. Для меня это бред. Плюс к этому я не понял как его использовать. Метод формы is_valid() его не вызывает почему-то, хотя вроде как должен.

Использовать `field_order` при инициализации формы и дальше делать то, что мне нужно в методе validate() у нужного поля. Не уверен будут ли отрабатывать валидаторы по-умолчанию, если я переопределю этот метод. Более того, если нужна будет валидация по трем полям, то этот метод не уже годиться.

Как ты валидируешь два или более поля, %username%?

 , ,

greek_31
()

Arch Gnome звук

Не работает звук в ArchLinux.

Если открыть настройки вывода звука в Gnome, то там есть 2 устройства вывода. S/PDIF и Аналоговые наушники, которые у меня подлючены. Но значение наушников постоянно пропадает и моментально появляется. Тоже самое с микрофоном. Стоит alsa и pulseaudio. Дело скорее всего не в пульсе, т.к. это было до её установки. Alsa находит 2 звуковухи встроеную ALC892 и HDMI от видюхи, которая не нужна. Помогите починить звук, никогда с звуковыми проблемами не сталкивался, даже не знаю с чего начать.

Прочитал Arch ASLA troubleshooting, там моей проблеммы не описано.

 , ,

greek_31
()

postfix spf проверка только указаных доменов

Реально ли проверять SPF запись только у указанных мной доменов? Остальные просто должны проходить без проверки.

 , ,

greek_31
()

Asterisk sip-to-sip

Что надо прописать в extensions.conf что-бы делать звонки с user@mydomain на user@somedomain?

Я настроил звонки из/на транк и внутренние номера, а такую вроде бы простую вещь что-то не осилю. Пробовал шаблон:

exten => _.@.,1,Dial(SIP/${EXTEN},60,rt)
не получилось... Да и думаю не правильно я это как-то. Как правильно?

 

greek_31
()

C++ потомка наследника как аргумент функции

Я пишу на С, но надо реализовать кое-что на С++ Нужна помощь сообщества.

Есть родительский класс с одним методом

class root {
   void do_work();
};

От него наследуется 100500 потомков, каждый из потомков реализует свою собственную do_work()

Нужно написать функцию которая может принимать любой из потомков родительского класса и вызывает в нём do_work()

Я написал по минимуму. Вызывается метод класса root.

#include <iostream>

using namespace std;


class root
{
    public:
        root(void);
        ~root(void);
        void do_job();
};

class second: public root
{
    public:
        second();
        ~second();
        void do_job();
};

root::root(void) {};
root::~root(void) {};
void root::do_job(void) { cout << "ROOT do job\n"; }

second::~second(void) {};
second::second(void) {}; 
void second::do_job(void) { cout << "Fuck yeah!\n"; }

void work(root rt) { rt.do_job(); }

int main(int argc, char **argv)
{
    root rr = root();
    second sec = second();

    work(sec);
    
    return 0;
}

Это вообще реально? Как реализовывать подобное?

 

greek_31
()

FreeBSD route не пишет маршрут

FreeBSD выступает в роли клиента OpenVPN. Сервер пушит ему две свои сетки. Первая прописывается нормально, вторая не прописывается.

Вручную прописать маршрут, то тоже не прописывается.

Добавляю так(абсолютно аналогично с первой):

route add -net x.x.x.x/24 $GW_IP
 add net x.x.x.x: gateway y.y.y.y
echo $?
0

Проверяю через netstat -rn. В dmesg пусто.

wtf?

 ,

greek_31
()

Multihomed, CONNMARK и rp_filter.

Сабж. http://habrahabr.ru/sandbox/38722/

На ЛОР-е тоже встречал много ответов типа «отключи rp_filter» по этой же проблеме

К примеру, у меня eth174 - линк одного из провайдеров(маршрут НЕ по-умолчанию) и eth0 - локальная сеть. iptables настроен с помощью CONNMARK. Таблицы, маршрутизация, всё настроено. Если отключить rp_filter тогда DNAT до eth0 192.168.1.1 будет работать, если нет то не будет(при rp_fiter=2 все работает). Т.е. что делать понятно, непонятно почему.... Ведь там используюся известные IP-адреса...

Не могу понять почему так. Кто-нибудь может дать развёрнутый ответ почему так?

ЗЫ. Хотя завтро с утра всяко будет виднее...

 

greek_31
()

Вопросы по ICMP Redirect.

Допустим есть такая сеть:

Шлюз, у которого на eth0 два адреса: x.x.1.1/24 и x.x.2.1/24.
send_redirect=1, ip_forward=1, iptables ACCEPT на всё.
Хост 1: x.x.1.2/24, у него прописан шлюз: x.x.1.1
Хост 2: x.x.2.2/24, у него прописан шлюз: x.x.2.1
И всё это находится в одном L2-сегменте.

Если 1.2 пытается связываться c 2.2, то шлюз посылает ICMP-Redirect, что адрес 2.2 доступен через 2.2. Linux(не знаю как оффтопик) нормально реагирует на такой пакет и шлёт всё на 2.2 мимо шлюза.

Я не понимаю с какой стати шлюз отправляет редирект и почему хост нормально на это реагирует.

Судя по RFC-792 по ICMP, шлюз не должен так делать.

The gateway sends a redirect message to a host in the following
situation. A gateway, G1, receives an internet datagram from a
host on a network to which the gateway is attached. The gateway,
G1, checks its routing table and obtains the address of the next
gateway, G2, on the route to the datagram’s internet destination
network, X. If G2 and the host identified by the internet source
address of the datagram are on the same network, a redirect
message is sent to the host. The redirect message advises the
host to send its traffic for network X directly to gateway G2 as
this is a shorter path to the destination. The gateway forwards
the original datagram’s data to its internet destination.

For datagrams with the IP source route options and the gateway
address in the destination address field, a redirect message is
not sent even if there is a better route to the ultimate
destination than the next address in the source route.

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

Ну и как отключить такую фичу, не отключая send_redirect?

 ,

greek_31
()

Разограничение прокси/без проски, WPAD

Есть работающая подсеть /24 и в ней шлюз с прокси. В ней работают пользователи двух групп: «интернет напрямую» и «интернет через прокси». Списки IP адресов для iptables и squid3 лежат на сервере в обычный файлах, тупо список IP адресов; Эти файлы читаются при старте либо при перезапуске службы. Всё настроено и обе группы отлично работают(если прописать вручную прокси в браузер для прокси-группы).

Проблема в том, что нужно часто менять группы пользователям. На сервере вообще не проблема, просто отредактировать 2 файла и перезапустить squid и ipset. А у пользователей проблема: каджый раз нужно снимать/устанавливать настройки прокси в браузере(ах!).

Самое очевидное в данной ситуации — использовать WPAD. Но как разограничить обе эти группы?

Я родил только такие варианты:

1. Ограничить на веб-сервере доступ к wpad-файлу кому это не нужно. Веб-сервер отдельный и тогда придётся помимо редактирования файликов на шлюзе каждый раз править конфиг сервера. Неудобно и можно забыть поправить.

2. С помощью DHCP раздавать путь до WPAD только прокси-группе, использовать привязку по MAC-адресу. Хороший вариант. DHCP находится на шлюз, можно автоматизировать скриптами. Правда, в интернете пишут, Firefox не поддерживает подобный(через DHCP) режим работы.

3. В самом WPAD-файле задать кто через прокси, а кто нет. Там JavaScript и адреса задаются по IP и маске. Крайне неудобно редактировать, опять же веб-сервер отдельный...

Ищу советов мудрых, как лучше всё организовать.

 ,

greek_31
()

Помогите пофиксить regexp

Призываю джедаев Perl'а.

Есть avavis-new версии 2.10.0. Собственно одна из его задач — распаковывать архивы и передавать их антивирусу. В логах ошибка

(!)do_unrar: can't parse info line for .....
Покопавшись в коде выяснилось что там неработающая регулярка.
# amavisd:30296
/^ ([* ]) \s+ \S+ \s+ (\d+) \s+ (\d+) \s+ ( \d+ % | --> | <-- | <-> ) \s+ \S+ \s+ \S+ \s+ \S+ \s+ (.*)/xs
Вот строки которые отдает ему unrar v -c- -p- -idcdp — test.rar при запароленом архиве:
*-rw-rw-r--      2760      1920  69%  30-09-14 11:33  8EF1D373  a.txt
Архив без пароля:
 -rw-rw-r--    496640    179100  36%  30-09-14 21:54  0647CF31  tttt.exe    \n

Я не особо разбираюсь в регулярках, особенно в перловских. Подскажите как поправить.

PS. Если убрать первое '\s+' после группы ([* ]), то начинает почти(!) парсить строку, кроме последней группы. Туда попадают пробелы, \n, и следующие строки.

 , ,

greek_31
()

Django Python3 Mysql Exception ignored | ResourceWarning

Ubuntu 14.04. Версия Django 1.6(ставил из изходников), пробую использовать БД Mysql, но Django ORM не может в Python3. Поставил mysql-connector-python из репозитория всё запустилось. Но при работе с БД, периодически в консоль сыпятся сообщения вида:

Exception ignored in: <socket.socket fd=9, family=AddressFamily.AF_INET, type=SocketType.SOCK_STREAM, proto=6, laddr=('127.0.0.1', 57006), raddr=('127.0.0.1', 3306)>
ResourceWarning: unclosed <socket.socket fd=9, family=AddressFamily.AF_INET, type=SocketType.SOCK_STREAM, proto=6, laddr=('127.0.0.1', 57006), raddr=('127.0.0.1', 3306)>
Exception ignored in: <socket.socket fd=11, family=AddressFamily.AF_INET, type=SocketType.SOCK_STREAM, proto=6, laddr=('127.0.0.1', 57010), raddr=('127.0.0.1', 3306)>
ResourceWarning: unclosed <socket.socket fd=11, family=AddressFamily.AF_INET, type=SocketType.SOCK_STREAM, proto=6, laddr=('127.0.0.1', 57010), raddr=('127.0.0.1', 3306)>

Не могу понять как отловить этот Exception. Пробовал:

try:
   db.get(...)
except BaseException as E:
   print(E)
Как отловить исключение, либо просто узнать из-за чего ошибка? Может быть её можно смело проигнорить.

Есть еще вариант сменить БД, Postgress не хочу, sqlite не могу(нет регистронезависемого поиска по русскому языку). Данных очень мало 3 таблицы макс по 200 значений в каждой. Между таблицами нужна связи ко ключу. Есть какие-нибудь безгеморные варианты?

 , ,

greek_31
()

bash select проблема.

Есть такой код:

PS3="What next:"
CH1="lineline ine ine ine ine ineline."
CH2="linel nel nelinel ineline."
CH3="Quit."
select choose in "$CH1" "$CH2" "$CH3"
do
case "$REPLY" in
  1 ) echo "$choose";;
  3 ) exit 0
esac
done

Его выхлоп:

1) lineline ine ine ine ine ineline.  3) Quit.
2) linel nel nelinel ineline.

Как сделать что-бы quit был отдельной строкой? спасибо

 

greek_31
()

Gnome 3.10 слетает раскладка.

x86 Ubuntu 14.04 LTS (Обновлена с 12.04)

Периодически рандомно перестаёт клавиша смены раскладки. Меняет только в одну сторону. Обратно только можно только мышкой. Лечиться перезагрузкой. Бесит жутко. Может кто сталкивался, как починить-то хотя бы без перезгрузки?

Настройки клавиатуры в Gnome:
Переключиться на след. источник: Выключено
Переключитбся на пред. источник: Выключено
Modifiers-only switch to next source: CapsLock

Настройки gnome tweak:

Переключение на другую раскладку: CapsLock
Всё остальное выключено.

 ,

greek_31
()

Вернуть состояние ветки в исходное состояние.

Есть проект на github, я его форкнул и пилю PR через временные ветки. Проект подключен как удаленный источник(remote) uptsream. Но, недавно возникла иная ситуация. Надо было сделать PR в ветку другого человека и я накосячил. Я влил(pull) его ветку в свою origin/master, вместо временной ветки и послал изменения на сервер. Я доделал работу из временной ветки и удалил её. Теперь я не могу получить обновления из uptream т.к. моя master ветка содержит кучу изменений из ветки другого человека и при git pull жалуется на файлы с конфликтами.

Как мне всё исправить? Надо что-бы моя master ветка полностью соответствовала upstream/master.

 ,

greek_31
()

gnome-terminal Запуск без меню

Как в gnome-terminal сделать что-бы он запускался не показывая панель меню по-умолчанию? Один раз, давно, так сделал теперь найти не могу.

greek_31
()

Не проходит ARP-запрос при AF_PACKET

Исходник: http://pastebin.com/umDeDFU2, требует прав root.

Создается AF_PACKET SOCK_RAW socket, прикрепляется к eth0 или во всем интерфейсам в системе, не суть важно. И socket() и bind() в качестве протокола назначается ETH_P_ARP - только ARP пакеты.

host: 192.168.1.2 remote_host: 192.168.1.7. Изначально arp записей этих хостов нет. Выхлоп:

...
ARP OPER: Response(0x0002)
ARP Sender HA: 50:67:F0:94:70:F5
ARP Sender PA: 192.168.1.7
ARP Target HA: 00:22:15:A2:D0:C5
ARP Target PA: 192.168.1.2
ARP DONE =====================
...
ARP OPER: Request(0x0001)
ARP Sender HA: 50:67:F0:94:70:F5
ARP Sender PA: 192.168.1.7
ARP Target HA: 00:00:00:00:00:00
ARP Target PA: 192.168.1.2
ARP DONE =====================
Из 4-х реальных пакетов(tcpdump подтверждает) на сокет пришло 2. Ответ от 1.7 и Запрос от 1.7

НО! Если в socket() и bind() указать параметр ETH_P_ALL, то всё срабатывает как надо.

Почему так? Где ошибка? Как сделать, что бы все ARP приходили при протоколе ETH_P_ARP? Развернутые ответы приветствуются.

greek_31
()

os.path.normpath не убирает начальные слэши

Кто-нибудь знает почему normpath не убирает 2 слэша если они стоят первыми?

>>> path.normpath('//ololo/file.txt')
'//ololo/file.txt'
>>> path.normpath('///ololo/file.txt')
'/ololo/file.txt'
>>> path.normpath('a//ololo//file.txt')
'a/ololo/file.txt'

 

greek_31
()

Выбор медиацентра трэд

Есть небольшой NAS, провайдер дает IPTV, есть телевизор с максимальным разрешением 1360х768,есть деньги и желание установить аппаратный медиацентр.

Хочу что-бы оболочкой был xbmc и иметь возможность писать для него плагины. Есть варианты:

1. Собрать самому. В продаже есть корпуса, одноплатники на Атоме и т.д. Нужно будет накатить live-xbmc или gentoo с xmbc. Не знаю какую графику выбрать и как там с драйверами для воспроизведение видео.

2. Купить готовый девайс с xbmc. Раньше, когда интересовался этим вопросом, видел магазин с аппаратными xbmc плеерами. Сейчас уже не могу нагуглить.

Ищу советов мудрых, как бы сделать всё хорошо. В качестве советов мудрых подойдут: готовые девайсы, сайты, комплектующие, прохладные истории.

greek_31
()

RSS подписка на новые темы