javascript изменяем свойство action формы - объекта form

Потребовалось перед отправкой формы изменить “адресат” - action у формы. По идее ничего сложного -
document.form1.action = 'new_address.html';
или аналогичные

document.getElementById('form1').action = 'new_address.html';
document.forms[0].action = 'new_address.html';

однако, такого рода конструкция работает везде, кроме internet explorer…
Объясняется это тем, что в IE нет различий между свойствами и атрибутами.
Поиск подсказал, что для изменения action у формы можно использовать setAttribute
document.form1.setAttribute("action","'new_address.html")
Но и в этом случае, internet explorer не порадовал.
Однако, различия, все-таки обнаружены - оба варианта для internet explorer:
- для случая “form1.action = …” браузер выдал ошибку “object doesn’t support …”;
- для случая “form1.setAttribute();” ie отправляет по старому адресу;

После очередной порции поисков по интернету, размышления над JavaScript мануалами изобразил что-то вроде:

o=document.getElementById('form1');
o.setAttribute("action","new_address.html"); // в IE "пустышка", но ошибку не выдает
// рабочая конструкция для IE - изменяет action для формы путем перебора всех атрибутов
for (var i=0; i < o.attributes.length; i++) {
if (o.attributes[i].nodeName == 'action') {
o.attributes[i].nodeValue = 'new_address.html';
break;
}
}

Понимаю, что решение далеко от идеального, однако, работает :)
Да здравствует IE!..
ps. В очередной раз встает вопрос “А для кого стандарты?” :)

Опубликовано Июль 1, 2009 | автор: levik  |  Без комментариев »

Безопасность терминальных служб в WIN 2008

Особенности, ключевые отличия от предыдущих версий:

- доверие серверу;
- MitM и DOS-атаки;
- доверие RDP-файлам;
- шифрование соединений;
- печать из приложений;
- простой вход для пользователей;

NLA - Network Level Authentification:
- окно для ввода данных - “стандартное” окно аутентификации;
- пользователь получает доступ к виртуальному рабочему столу ПОСЛЕ аутентификации! (в отличие от предыдущих версий);

Использование сертификатов для подписывания RDP-файлов;
- сертифицированный файл подписан издателем;
- при многократном запуске имеется возможность запускать без предупреждения;
- неподписанные файлы при попытке запуска вызывают предупреждение.

Технология Easy Print:
- установка драйверов только для клиентов (проблема “старого железа” и новых ОС);

Технология Single Sign On:
- при входе в систему пользователь автоматически получает доступ к терминальным серверам и приложениям без дополнительного запроса учетных данных;
- запуск терминальных служб с рабочей станции;

Несколько способов шифрования
- более современный (ключ 128 бит) - не совместим со старыми версиями RDP Client;
- “Максимально допустимый для клиента”;
- менее защищенный (ключ 52 бита) - совместим со старыми версиями;

Удаленный доступ через TS Gateway:
- ранее возможно было организовать терминальный доступ лишь одним из двух возможных способов - через порт 3389 /либо с использованием VPN;
- TS Gateway позволяет осуществлять доступ к удаленному рабочему столу через 443 порт!
- CAP - Connection Authorisation Policies - Разрешенные методы авторизации, каким пользователям и с каких компьютеров разрешено подключаться + для каких устройств разрешено перенаправление;
- RAP - Resource Authorisation Policies - “Политики ресурсов” - К каким группам компьютеров AD разрешено подключаться (или группам TSG) и через какие порты может происходить подключение

NAP - Network Access Protection
- основанная на стандартах платформа для управления доступом на основе “здоровья” конечных рабочих станций;
- TSG может быть интегрирован в расширенную структуру NAP, либо NAP может использоваться только для удаленного доступа;
- проверка статуса обновлений антивируса/файрволла/обновлений безопасности происходит при подключении к TS Gateway - TS Gateway при помощи NAP производит проверку и либо отклоняет соединение, либо “разрешает”;

Опубликовано Июнь 6, 2009 | автор: levik  |  Без комментариев »

СURL в PHP (libcurl)

CURL (Client URL Library), libcurl - библиотека функций для работы с серверами по различным протоколам (http, ftp, https … и ряд других - более подробно смотрите описание последней версии).

В php включена  (если точнее, имеется возможность включить - зависит от конфигурации сервера) поддержка curl. Проверить, поддерживается ли сервером функции curl проще всего, произведя вызов любой из функций, например
<?php
$ch = curl_init("http://www.example.com/");
?>

Если исполнение этого кода не приведет к ошибке - все в порядке, можем использовать CURL в “корыстных целях”. Если же “функция не существует”… Но, впрочем, это уже совсем другая история. А пока вернемся к нашим.. CURL ам.

В PHP самый простой вариант использования библиотеки обычно  сводится к следующим шагам:

Инициализация - curl_init($url);
Установка параметров - curl_setopt($ch, $opt, $value);
Выполнение запроса - curl_exec($ch);
// Получение и обработка информации - обычно хватает результата, возвращенного предыдущей функцией, однако, существует несколько дополнительных функций, например curl_getinfo($ch);
Закрытие - curl_close($ch);

Особенности и подводные камни:
CURLOPT_COOKIEFILE и CURLOPT_COOKIEJAR при работе в  WINDOWS будут правильно работать только при указании полного пути к файлу.

Опубликовано Апрель 7, 2009 | автор: levik  |  Без комментариев »

И снова бланки - работа с word средствами javascript и php

В очередной раз стала актуальной задача с подготовкой бланков. Однако, способ с бланком в формате rtf не подходит - файл .doc весит ~2 Мб, файл же rtf ~ 34 Мб. Видимо, зависит от хранения рисунков…

Работать с COM-объектом Word можно непосредственно из PHP:

// Код PHP
$word=new COM("Word.application") or die("Couldn't start Word!");
//после создания объект невидимый
//сделаем его видимым и активизируем (разумеется, для работы на сервере это необязательно)
$word->visible =1;
$word->Activate();
//Создать документ по шаблону:
$word->Documents->Add("c:\\template.dot");
// действия - найти-заменить и т.д. Описаны в документации по VisualBasic for Application - в справке MS Word (по умолчанию не устанавливается)
$word->ActiveDocument->SaveAs("C:\\".$fname);
$word->Quit();

Однако, подобный способ подходит только для Windows-серверов.

Еще один вариант - работа с COM-объектом на стороне клиента через Active-X при помощи JavaScript:


><script language="javascript">
// Создание объекта MS Word:
word = new ActiveXObject ("Word.Application");
// Создание документа и установка параметров страницы:
with (word) {
Documents.Open('c:\\0.doc');
ActiveDocument.Label1.Caption = < ?=$sum?>;
ActiveDocument.SaveAs ('c:\\1.doc');
Quit (); // завершает работу MS Word
}
</script>

Предварительно следует сохранить документ-шаблон на диск C:\ с именем 0.doc.
В шаблоне - создать “Label”-ы и расположить их в соответствии с нужным расположением текста.
С учетом специфики задачи - получаем еще один небольшой выйгрыш - “основной” файл не качается с сервера.
Технология, думаю, понятна. Вариации - насколько фантазии хватит.

ps. Не забудьте поставить разрешения в свойствах обозревателя.

( Свойства обозревателя - безопасность - Выбираем “Надежные узлы”. После чего, нажимаем “Другой..” - и устанавливаем все переключатели, где упоминается ActiveX в “Разрешено”.)

А в Надежные узлы следует добавить “Наш” сайт - где формируются бланки.

Опубликовано Март 18, 2009 | автор: levik  |  Без комментариев »

Устанавливаем модули Perl

При попытке запустить скрипт получил ошибку 500, а в логах:
Can't locate Archive/Zip
После пары минут поиска понимаем, что нужно установить модуль perl “Module Archive::Zip ”
Вариант первый - ручная установка модулей Perl
На сайте cpan.org находим (search.cpan.org) нужный модуль, сохраняем в каталоге (/tmp, например)# cd /tmp
# gzip -d Archive-Zip-1.26.tar.gz
# tar xvf Archive-Zip-1.26.tar
# cd Archive-Zip-1.26

Собираем: # perl Makefile.PL
...
# make
# make test
И установка модуля:
# make install
Вариант второй - Установка модуля Perl с использованием CPAN
Для установки модулей Perl при помощи CPAN следует убедиться, работает ли команда cpan:.# cpan
-bash: cpan: command not found

Если выдается сообщение “not found” - следует установить модуль CPAN. Для установки cpan с помощью yum следует набрать:
# yum install perl-CPAN
При первом запуске нужно будет “сконфигурировать” cpan в режиме вопрос-ответ. Большая часть ответов уже подставлена - достаточно нажатия ENTER. Некоторые вопросы требуют выбора из нескольких пунктов.
После настройки набираем:
# cpan
Terminal does not support AddHistory.

cpan shell -- CPAN exploration and modules installation (v1.7602)
ReadLine support available (try 'install Bundle::CPAN')

cpan> install Archive::Zip
….
/usr/bin/make install — OK
cpan> quit

Итак, мы установили Модуль perl “Archive::Zip”.
По аналогии можно установить любой другой модуль. Однако при установке следует учитывать, что для некоторые модули зависят от других модулей. При использовании установки вторым методом cpan автоматически устанавливает необходимые для работы модули perl.

Опубликовано Март 4, 2009 | автор: levik  |  Без комментариев »

Блокировка домена за неправильный WHOIS - suspending the domain name

On 28 Jan 2009 we had asked you to modify the contact details of the domain name ……. Since you have not made the necessary modifications, we are suspending the domain name. To get this domain name UNSUSPENDED, please send a signed letter on either1. The Registrant’s Letterhead stating that the current Contact Details of the domain name ……. are ACCURATE, as per the WHOIS Lookup Results at http://whois.publicdomainregistry.com
OR
2. Your Letterhead stating the CORRECT Contact Details for this domain name.

Двухдневная переписка свелась к тому, что я отправил скан паспорта и скан счета за квартиру. После чего домен разблокировали с условием смены контактных данных на корректные в течение суток. В следующий раз буду внимательней читать “письма из-за бугра” :)

If the contact details are not modified in time, we will be SUSPENDING all domain names using this contact. We also suggest that you provide us with
1. a letter on the letterhead of the Registrant Contact, stating that the new contact details of the domain name are accurate; &
2. proof of the new contact details in the form of an identification proof or a copy of a utility bill like electricity bill or telephone bill.

The documents can be sent as an attachment to this mail.

Опубликовано Февраль 15, 2009 | автор: levik  |  Комментарий (1) »

Настройка собственных NS-серверов

Для настройки собственных NS-серверов я сделал следующее:

У регистратора доменных имен прописал DNS-сервера для домена mydomain.com примерно так:

ns1: ns1.mydomain.com 155.155.155.154
ns2: ns2.mydomain.com 153.153.153.154

Где вместо фиктивных IP-адресов подставил IP-адреса своего сервера.

На сервере по аналогии прописал “A”-записи.

ns1.mydomain.com - A - 155.155.155.154
ns2.mydomain.com - A - 153.153.153.154

Пока баловался - успел поймать ошибку:

Попытка тестирования DNS-серверов для домена mydomain.com завершена неудачно. Обнаружены следующие ошибки:

1. В качестве имени DNS-сервера ns1.mydomain.com используется CNAME

Еще раз убедился, что RTFM надо внимательнее. :)

Опубликовано Январь 11, 2009 | автор: levik  |  Без комментариев »

анкор-лист? легко.

Делаем “человеческий” анкор-лист. Дешево и сердито.

Особенности:

  • уходим от «склейки» - для тех, кто в нее верит; 
  • даже для тех, кто не боится «тошноты» и «склейки» это пригодится, если нужно быстро создать большое количество различных анкоров для прогона по каталогам, сап-ксап и тд.
  • делаем анкор-лист больше похожим на естественный;
  • поднимаем по некоторым НЧ.

Технология:
1. Берем наш ключевик, к примеру, «проекты домов» и смотрим, в какие запросы он входит по статистике запросов. Лучше пользоваться статистикой Рамблера, так Яндекс выкидывает предлоги и найти по Яндексе такие запросы, как «из рук в руки», «муж на час» или «магазин на диване» вы не сможете. Найдутся только: «руки», «часы муж» и «магазины диванов».
Вместо окончаний ставим звездочки. Получится: «проект* дом*». Это еще не все. Чтобы уйти от ненужных нам запросов, типа: «проектирование домов», сделаем так:
проект* дом* !проектиров*
Запросы не совсем “по теме”  вроде «когда закроется проект дом 2» можно удалять вручную, но можно и оставлять – тоже разбавление анкор-листа, да и ключевик встречается.

2. Копируем странички получившегося списка в Excel, пока хватит терпения :).

3. Иногда Рамблер запрашивает авторизацию - не думаю, что велика проблема.

4. Подкорректируем списочек - удаляем “неугодные” и получаем результат..

Тоже самое можно проделать со статистикой от Яндекса.

Что с ним делать - на усмотрение.. :)

Опубликовано Декабрь 14, 2008 | автор: levik  |  Без комментариев »

Виртуальный выделенный сервер для начинающих

Наверное, у каждого наступает момент, когда хочется чего-то большего. Выражается это по-своему.. Кто-то покупает новые шмотки-машины-железяки.. Кто-то делает что-то грандиозное..

“Услышав невозможное, некоторые скажут “А почему? А зачем?”, а другие - “А почему НЕТ?”..

В общем, тестируем VDS-сервер от firstvds.ru - недорогой но полноценный. Естественно, по некоторым параметрам он уступает серверам от “монстров” хостинговой индустрии. Однако, в качестве ознакомительного - более чем достаточно.

Сервер подняли быстро - в течение двух дней. Техподдержка отзывчивая, правда не круглосуточная. Но в общем-то цена оправдана. Пока вполне устраивает, потому как не особо требовательный, наверное.

Опубликовано Ноябрь 29, 2008 | автор: levik  |  Без комментариев »

Virtuemart напильником

Волей судьбы пришлось бороться с Virtuemart’ом. Сразу хочу отметить, что бОльшая часть файлов находится в каталоге administrator/components/com_virtuemart/.

1. меню из каталога товаров стандартное (mod_virtuemart) слишком сильно грузит магазин. Альтернативный вариант решения - меню “ручками”. Т.е. делаем меню, пунктами которого становятся ссылки на категории нашего магазина.

2. главная страница магазина (html/shop.index.php), вывод категориий (classes/ps_product_category.php), шаблон вывода товаров в категории (html/templates/browse/browse_1.php - настраивается в административной части)

3. навигационная строка где-то тут:
$nav_list = $ps_product_category->get_navigation_list($category_id);
$mainframe->appendPathWay( $nav_list );

Продолжение следует…

Опубликовано Октябрь 13, 2008 | автор: levik  |  Без комментариев »