Полчаса борьбы и я пришел к выводу, что использовать точки в именах скриптов в /etc/network/if-up.d, /etc/network/if-down.d, /etc/network/if-pre-up.d и /etc/network/if-post-down.d нельзя. Почему - непонятно, но скрипты с точками в имени не исполняются.
barbitoff programmer`s blog
Здесь я публикую заметки из программерской жизни: грабли, на которые мне случилось наступить, проблемы, для которых было найдено элегантное (или не очень) решение, а также все, с чем мне пришлось столкнуться и чем хотелось бы поделиться =)
PS Если хотите меня поблагодарить - на странице есть 3 места, чтобы это сделать =)
суббота, 16 июня 2012 г.
bash: определение ipv4-адреса на заданном интерфейсе
Для определения ip-шника на интерфейсе (для использования в каком-либо скрипте) мне пришла в головку такая комбинация:
ifconfig eth0 | grep 'inet addr' | sed -e 's/\s*inet addr://' | sed -e 's/ .*//g'
пятница, 15 июня 2012 г.
Включение WCF Tracing
Для включения трэйсинга WCF-приложения в web.config / конфиг настолького приложения нужно добавить:
<configuration>
<system.diagnostics>
<sources>
<source name="System.ServiceModel"
switchValue="Information, ActivityTracing"
propagateActivity="true">
<listeners>
<add name="traceListener"
type="System.Diagnostics.XmlWriterTraceListener"
initializeData= "c:\log\Traces.svclog" />
</listeners>
</source>
</sources>
</system.diagnostics>
</configuration>
четверг, 14 июня 2012 г.
КриптоПРО Sharpei: ошибка "MessageSecurityException: The algorithm 'http://www.w3.org/2001/04/xmldsig-more#gostr34102001-gostr3411' is not accepted for operation 'AsymmetricSignature' by algorithm suite CryptoPro.Sharpei.ServiceModel.GostAlgorithmSuite."
Проблема:
При проверке веб-сервисом, использующим КриптоПРО Sharpei 3.6, ЭЦП SOAP-сообщения в логи валится ошибка:
MessageSecurityException: The algorithm 'http://www.w3.org/2001/04/xmldsig-more#gostr34102001-gostr3411' is not accepted for operation 'AsymmetricSignature' by algorithm suite CryptoPro.Sharpei.ServiceModel.GostAlgorithmSuite.Причина:
В запросе используется указание алгоритма ЭЦП "http://www.w3.org/2001/04/xmldsig-more#gostr34102001-gostr3411", тогда как шарпей версии 3.6 использует идентификатор "urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102001-gostr3411" для обозначения этого алгоритма.
Решение:
Поменять обозначение алгоритма в запросе на "urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102001-gostr3411".
среда, 13 июня 2012 г.
Проброс портов c Amazon EC2-инстанса (Ubuntu 12.04) на домашний HTTP-сервер
Задача:
Есть инстанс Amazon EC2 под Ubuntu 12.04 (как любой инстанс, он имеет публичное DNS-имя), хочется пробросить HTTP-порт с него на локальный ПК, находящийся, во-первых, за NAT-ом интернет-провайдера, а, во-вторых, за домашним роутером. Внешний IP провайдер не предоставляет.
Решение:
Во-первых, я поднял OpenVPN-сервер на инстансе, чтобы объединить его с моим ПК в единую виртуальную локалку (подсеть 192.168.7.0/24, амазоновский инстанс имеет ip-адрес 192.168.7.1, мой ПК - 192.168.7.10). Конфиг сервера следующий:
; подключениеКонфиг клиента:
port 1194
proto udp
dev tun
; аутентификация
ca ca.crt
cert aspxvpnserver.crt
key aspxvpnserver.key
dh dh1024.pem
; адресация
server 192.168.7.0 255.255.255.0
; клиентские конфиги
client-config-dir ccd
; прочее
keepalive 10 120
comp-lzo
persist-key
persist-tun
user nobody
group nogroup
client-to-client
; логирование
status /var/log/openvpn-status.log
log-append /var/log/openvpn.log
verb 5
client
; подключение
dev tun
proto udp
remote ec2-xxx-xxx-xxx-xxx.compute-1.amazonaws.com 1194
; аутентификация
ca ca.crt
cert aspxclient.crt
key aspxclient.key
; прочее
resolv-retry infinite
nobind
persist-key
persist-tun
comp-lzo
; логирование
verb 5
На сервере для клиента aspxclient определен собственный конфиг в файле /etc/openvpn/ccd/aspxclient:
ifconfig-push 192.168.7.10 192.168.7.9, что позволяет задать клиенту статичный IP.
Подключаю OpenVPN, поднимаю на локальном ПК HTTP-сервер, проверяю, что с сервера есть телнет на 192.168.7.10:80, и что с моего ПК идут пинги на 192.168.7.1.
Теперь осталось настроить iptables на сервере для проброса 80 порта (конечно, ещё нужно открыть этот самый 80 порт в амазоновском файрволе):
#!/bin/sh
/sbin/modprobe iptable_nat
echo "1" > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A PREROUTING -d 10.203.50.215 -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.7.10:80
iptables -t nat -A POSTROUTING -p tcp --dst 192.168.7.10 --dport 80 -j SNAT --to-source 192.168.7.1
exit 0
Здесь 10.203.50.215 - ip-адрес инстанса в локалке амазона. Т.к. этот адрес выдается инстансу динамически и меняется при перезапуске, удобнее вместо фильтрации по адресу назначения использовать фильтрацию по входящему интерфейсу:
#!/bin/sh
/sbin/modprobe iptable_nat
echo "1" > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A PREROUTING -i eth0 -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.7.10:80
iptables -t nat -A POSTROUTING -p tcp --dst 192.168.7.10 --dport 80 -j SNAT --to-source 192.168.7.1
exit 0
Ну или модифицировать скрипт так, чтобы он подхватывал ip-адрес с интерфейса eth0:
#!/bin/shДля удаления созданных выше правил iptables нужно выполнить:
/sbin/modprobe iptable_nat
echo "1" > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A PREROUTING -d `ifconfig eth0 | grep 'inet addr' | sed -e 's/\s*inet addr://' | sed -e 's/ .*//g'` -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.7.10:80
iptables -t nat -A POSTROUTING -p tcp --dst 192.168.7.10 --dport 80 -j SNAT --to-source 192.168.7.1
exit 0
#!/bin/shПоместив эти 2 скрипта, соответственно, в /etc/network/if-up.d и /etc/network/if-down.d, получим сохраняемость этих правил при перезапуске интерфейса и при перезагрузке сервера (важно не использовать точки в именах скриптов!).
iptables -t nat -D PREROUTING 1
iptables -t nat -D POSTROUTING 1
exit 0
воскресенье, 10 июня 2012 г.
soapUI 4.5: особенность разворачивания WAR-ника Mock-сервиса, собранного на Windows, на томкате под Linux
Проблема:
Решение:
При разворачивании WAR-ника Mock-сервиса, собранного на Windows, на томкате под Linux, в логи валятся ошибки вида:
ERROR [SoapUI] An error occured [Missing local file for [file:/D:/Документы/...%201.2%2005052012/wsdl/types/documents.xsd]], see error log for details
java.lang.Exception: Missing local file for [file:/D:/Документы/...%201.2%2005052012/wsdl/types/documents.xsd]
at com.eviware.soapui.impl.support.definition.export.AbstractDefinitionExporter.replaceLocation(AbstractDefinitionExporter.java:212)
at com.eviware.soapui.impl.support.definition.export.AbstractDefinitionExporter.replaceImportsAndIncludes(AbstractDefinitionExporter.java:184)
и, естественно, сервис не разворачивается. При этом при создании soapUI-проекта кэширование было включено.
Решение:
Очевидно, мок-сервис не находит xsd-схем, используемых wsdl-файлом, на основании которого создавался проект для мока. Вот только на виндовом томкате на машине, на которой также этих файлов и в помине нет, WAR-ник стартует без проблем, потому что копии всех необходимых моку ресурсов есть внутри WAR-ника (в XML-ке soapUI-шного проекта, которая там лежит) и по идее моку не нужно никуда за ними лазить.
Оказалось, причина в том, что "умный" soapUI (не могу сказать точно, начиная с какой версии, но на 3.0 все было в этом плане в порядке, насчет 3.6 точно не помню), использует в XML-ке soapUI-шного проекта разделители, зависящие от ОС, для именования путей к файлам, которые он закэшировал (в 3.0 всегда использовался прямой слеш). При поиске закэшированных файлов также используется ОС-зависимый разделитель, поэтому сохраняются в проекте файлы с обратными слешами в названии, а ищутся при разворачивании - с прямыми.
Выход из такой ситуации - исправить вручную обратные слеши на прямые в soapUI-шном проекте, лежащем внутри WAR-ника мок-сервиса (где именно, сейчас не помню, попозже посмотрю и уточню). У меня правда после этого все равно не получилось развернуть моки на линуксе, исключения валиться перестают, но и мок не стартует, валится с 404-ошибкой с полной тишиной в логах, поэтому было принято решение разворачивать моки на виндовой машине.
PS При генерации WAR-ника под XP есть ещё одна проболема - неверная кодировка генерируемого web.xml, он кодируется в cp1251, тогда как нужно - в UTF-8 (что важно, если soapUI-шный проект назывался по-русски), поэтому перед деплоем его нужно перекодировать.
в
14:40:00
0
коммент.
Отправить по электронной почтеНаписать об этом в блогеПоделиться в XОпубликовать в FacebookПоделиться в Pinterest
Ярлыки:
разворачивание мок-веб-сервисов soapUI,
Debian,
encoding,
Linux,
mock,
SOAP,
SOAP Mock-service,
soapUI,
soapUI mock-service,
soapUI mock-service WAR,
Tomcat,
WAR,
web.xml,
Windows
Подписаться на:
Сообщения (Atom)
