Нет, если управление перейдёт на макрос macro-stdexten, то первым выполнится экстеншин s (start), затем, в зависимости от результата Dial возможен переход на s-NOANSWER или s-BUSY и запись голосовой почты. Если во время записи почты будет нажата *, то управление перейдёт на экстеншин a (assistant) - полный интерфейс голосовой почты. Подробнее о стандартных экстеншинах здесь.
Нет, просто включение голосовой почты у пользователя меняет автогенерацию контекста default. Попробуйте включить hasvoicemail у одного из пользователей, перезапустите asterisk и посмотрите, что станет с контекстом default и звонками на этого пользователя. Затем поставьте stdexten = macro в asterisk.conf, снова перезапустите и посмотрите контекст и звонок на этого пользователя. Выберите оптимальный для Вас вариант.
hint (нужен для подписки на оповещения о статусах) и одна строчка с Gosub, Macro или Dial создаётся в контексте default автоматически для каждого пользователя.
В 11 версии логика работы следующая:
1. Если у пользователя нет голосовой почты (hasvoicemail = no), то для него в контексте default создаётся строка exten => ${EXTEN}, 1, Dial(${HINT})
2. Если у пользователя есть голосовая почта (hasvoicemail = yes) и в asterisk.conf параметр (stdexten = gosub) или не определён, то строка
У Вас есть два варианта - разрешить голосовую почту и переопределить stdexten = macro или убрать include = default из контекста DLPN_DialPlan1 и прописать туда
Проверьте ещё вывод команды 'dialplan show default' в консоли астериска. Если там стоят Gosub, а не Macro, то используется контекст stdexten, а не macro-stdexten. Переключить можно через опцию stdexten в asterisk.conf.
В принципе, md5 с солью (и, возможно, перцем) вполне достаточно для защиты в случае утечки базы без исходных кодов сайта. Но от подбора паролей вида '123456' это всё равно не спасёт.
Добавлю, что если в первом случае массив и будет создан, то по завершению функции память, выделенная для этого массива, останется в области стека и может быть повторно использована и перезаписана в других функциях.
Да, это упрощённый фрагмент с боевого сервера. Несуществующий/выключенный номер проверяется раньше через $["${SIPPEER(${EXTEN},callerid_num)}"=""] и $["${SIPPEER(${EXTEN},status)}"="UNREACHABLE"]
Суд руководствуется здравым смыслом и мнениями экспертов. Практику смотрите здесь, правда в основном эта статья идёт как сопутствующая в разбирательстве.
Противоречия не будет, федеральный закон в любом случае выше лицензионного соглашения. Про размер цитаты в комментарии сказано - в случае спора определит суд.
@top13 Малость ошибся, поправил. Работает так - для каждого параметра (например, $foo) определяется, нужен ли по нему поиск ($byFoo). Если нет, то сработает первая часть условия в скобках ($byFoo = 0), если да, то будет вычислена вторая часть условия (`foo` = $foo).