Всё о о Microsoft Exchange Server и электронной почте.

А у меня зима в OWA 2007 начинается с 15 декабря :-)

Из года в год я в декабре месяце публикую один и тот же пост про снежинки. Этот год не исключение, правда теперь снежинки падают в OWA 2007 и выглядит это примерно так.

image 

В жизни простых людей не так много счастья. Приходит скажем на работу бухгалтер, а у нее предыдущей ночью муж пришел утром домой под утро, да еще в помаде. Скоро Новый год, а сынишка никак не может выправить тройки по математике в школе, будет трояк в четверти. Коты в подъезде орали всю ночь, да колготки еще порвались. Вот так начинается утро. Наливает она себе кофе, включает компьютер, заходит через  OWA в почту и ОБАНА! Снежинки. Блин, а ведь Новый год уже скоро. Здорово. И все проблемы уходят на задний план, все мысли переключается на Новый год. Пусть не все так радужно, но наверняка подобная ситуация возможна.

В прошлом году у нас в OWA пошел снег 15 декабря и закончился 18 января. :-) А как? А вот так.

1. Открываем на CAS в notepad файл C:\Program Files\Microsoft\Exchange Server\ClientAccess\Owa\auth\logon.aspx.
2. Идем в самый конец файла, ищем строки:

</body>
</html>
<% } %>

и ПОСЛЕ </html> вставляем скрипт:

<SCRIPT LANGUAGE=”JavaScript1.2″>
<!– Begin

var d;
d = new Date();
if ((d.getMonth()==11 && d.getDate() > 14) || (d.getMonth()==0 && d.getDate() < 18)) {

var no = 10; // количество снежинок
var speed = 30; // скорость снежинок
var snowflake = “/owa/8.1.240.5/themes/base/sneg.gif”;

var ns4up = (document.layers) ? 1 : 0;
var ie4up = (document.all) ? 1 : 0;
var dx, xp, yp;
var am, stx, sty;
var i, doc_width = 800, doc_height = 600;
if (ns4up) {
doc_width = self.innerWidth;
doc_height = self.innerHeight;
} else if (ie4up) {

doc_width = document.body.clientWidth;
doc_height = document.body.clientHeight;
}
dx = new Array();
xp = new Array();
yp = new Array();
am = new Array();
stx = new Array();
sty = new Array();
for (i = 0; i < no; ++ i) {
dx[i] = 0;
xp[i] = Math.random()*(doc_width-50);
yp[i] = Math.random()*(doc_height);
am[i] = Math.random()*20;
stx[i] = 0.02 + Math.random()/10;
sty[i] = 0.7 + Math.random();
if (ns4up) {
if (i == 0) {
document.write(”<layer name=\”dot”+ i +”\” left=\”15\” “);
document.write(”top=\”15\” visibility=\”show\”><img src=\”»);
document.write(snowflake + “\” border=\”0\”></layer>”);
} else {
document.write(”<layer name=\”dot”+ i +”\” left=\”15\” “);
document.write(”top=\”15\” visibility=\”show\”><img src=\”»);
document.write(snowflake + “\” border=\”0\”></layer>”);
}
} else if (ie4up) {
if (i == 0) {
document.write(”<div id=\”dot”+ i +”\” style=\”POSITION: “);
document.write(”absolute; Z-INDEX: “+ i +”; VISIBILITY: “);
document.write(”visible; TOP: 15px; LEFT: 15px;\”><img src=\”»);
document.write(snowflake + “\” border=\”0\”></div>”);
} else {
document.write(”<div id=\”dot”+ i +”\” style=\”POSITION: “);
document.write(”absolute; Z-INDEX: “+ i +”; VISIBILITY: “);
document.write(”visible; TOP: 15px; LEFT: 15px;\”><img src=\”»);
document.write(snowflake + “\” border=\”0\”></div>”);
}
}
}
function snowNS() {
for (i = 0; i < no; ++ i) {
yp[i] += sty[i];
if (yp[i] > doc_height-50) {
xp[i] = Math.random()*(doc_width-am[i]-30);
yp[i] = 0;
stx[i] = 0.02 + Math.random()/10;
sty[i] = 0.7 + Math.random();
doc_width = self.innerWidth;
doc_height = self.innerHeight;
}
dx[i] += stx[i];
document.layers[”dot”+i].top = yp[i];
document.layers[”dot”+i].left = xp[i] + am[i]*Math.sin(dx[i]);
}
setTimeout(”snowNS()”, speed);
}
function snowIE() {

for (i = 0; i < no; ++ i) {
yp[i] += sty[i];
if (yp[i] > doc_height-50) {
xp[i] = Math.random()*(doc_width-am[i]-30);
yp[i] = 0;
stx[i] = 0.02 + Math.random()/10;
sty[i] = 0.7 + Math.random();
doc_width = document.body.clientWidth;
doc_height = document.body.clientHeight;
}
dx[i] += stx[i];
document.all[”dot”+i].style.pixelTop = yp[i];
document.all[”dot”+i].style.pixelLeft = xp[i] + am[i]*Math.sin(dx[i]);
}
setTimeout(”snowIE()”, speed);

}
if (ns4up) {
snowNS();
} else if (ie4up) {
snowIE();
}
}
// End –>
</script>

!!! ВНИМАНИЕ. Скрипт нужно взять из файла, а не копировать с этого поста !!!
В скрипте поправьте строку с путем к OWA в зависимости от установленной версии Exchangу 2007.

3. Копируем отсюда  ”Снежинку для OWA”, файл sneg.gif и записываем его в C:\Program Files\Microsoft\Exchange Server\ClientAccess\Owa\8.1.240.5\themes\base\

Вот и все. Модифицируя параметры в начале скрипта можно поменять даты начала и конца запуска скрипта, количество и скорость снежинок.

Счастливого Нового года!

p.s. Joker, да да, вот такие вот у меня «проблемы». Гы-Гы-Гы 🙂

Похожие посты:

  • http://www.ram.ru Alexey N-ff

    Загрузка процессора на клиенте — 100%?

  • http://www.exchangerus.ru Pavel Nagaev

    Нет, побольше, где-то 120-130 🙂

    Два года уже работает это дело в сети и прикольно слышать от пользователей в конце декабря: «А у нас снег пошел ….. в OWA :-)» А в Новороссийске снег большая редкость :-(.

  • anton

    интрересная штука. но жаль не работает у меня почему-то. правда у меня 8.0.730.1 а не 8.1.240.5 но я в коде поменял на своё, но всё равно не работает. как-нибудь бы логи посмотреть этого дела.

  • http://www.exchangerus.ru Pavel Nagaev

    Прошу прощения, моя ошибка. Скрипт неправильно отображался моим блогом.
    Поправил пост и выложил скрипт отдельно.

  • Gusev Denis

    А под EXch 2003 снежинки пойдёт? 😉

  • http://www.exchangerus.ru Pavel Nagaev

    В начале этого поста есть ссылка на пост про снежинки в E2003.

  • Gusev Denis

    спасибо. 🙂

  • zorion

    А мы этот скрипт на главную страницу sharepoint 2007 прилепили 🙂

  • http://www.exchangerus.ru Pavel Nagaev

    Это конечно хорошо, но между нами девочками, меня эти снежинки начинают раздражать через время. 🙂 Поэтому они только на заглавной страничке.

  • Joker

    p.s. Joker, да да, вот такие вот у меня “проблемы”. Гы-Гы-Гы

    А на что ты обиделся? Все нормально, молодец, и со снежинками здорово придумано. 🙂

  • http://www.exchangerus.ru Pavel Nagaev

    Я вот заметил, что в последнее время народ моих шуток не понимает 🙂 Вообще никто 🙂 Joker, я никогда ни на кого не обижаюсь, просто серьезно я говорю редко 🙂

  • Anton

    Я так понимаю данный способо актуален для тех у кого CAS вывешен в инет напрямую. Или через простое правило буликации через ISA. А как поступииь тем у кого CAS выпущен в инет через ISA на основе правила Listener ? Ведь в форме аутентифкации на ISA исползуется другой скрипт язык.

  • Mikhail

    Снежинки будут идти только в окне авторизации пользователя, а в самом ящике не будут? =(

  • http://www.exchangerus.ru Pavel Nagaev

    Не, делал как-то давно, чтобы и в ящике шли, очень отвлекает.

  • Anton

    Павел, как быть тем кто через ISA2006 проходит авторизацию?

  • http://www.exchangerus.ru Pavel Nagaev

    Смотреть, как этот скрипт прикрутить на ИСУ

  • Dmitry

    Я версию скриптика для 2010 эксча не опубликуете? 😉

  • AndreyKA

    Отличный скрипт! Спасибо! Настроение поднял всем пользователям!
    У меня загрузка проца — 25/30 процентов, даже при количестве снежинок 3000 шт.)) Попробуйте поставить)
    Вот тока в ФФ не показывает, надо в скрипт дописывать проверку и этого браузера.

  • Shadow

    Дмитрий присоединяюсь к вопросу о том, как этот скрипт прикрутить к TMG если у меня Exchange 2007 SP2 через него опубликован по ssl ???

  • Shadow

    Павел, извините ради бога, просто описался, назвав Вас Дмитрием !!! 
    Все-таки  как этот скрипт прикрутить к TMG если у меня Exchange 2007 SP2 через него опубликован по ssl ???

  • rss_adm

    Для тех кто еще заморочен над темой снега. Скрипт не работает если owa опубликована через ISA или TMG, но есть решение.

    Имеем:
    MS Exchange 2010
    TMG 2010

    Немного теории:
    Когда юзер логинится к owa он получает web форму от tmg\isa, а не от exchange и затем направляется на exchange. По умолчанию на exchange аутентификация на основе форм отключена, и при открытии owa мы видим надпись «Powered by Forefront TMG».

    Чтобы заработал скрипт необходимо на TMG\ISA в правиле публикации OWA и на Exchange проделать следующие операции(это считается менее безопасно):

    TMG\ISA:
    1) В правиле открыть свойства прослушивателя\listener, изменить метод проверки подлинности на «без проверки подлинности\ No Authentification»
    2) В самом правиле во вкладке проверка подлинности, делегирование проверки подлинности или что-то с этим связано поставить «Без делегирования(без аутентификации), но клиент может выполнять проверку подлинности\No Authentification, but clients can authentificate directly»

    Exchange:
    1) Консоль управления Exchange — Конфигурация сервера — Клиентский доступ — Outlook Web App — Свойства — Проверка подлинности — «Использовать проверку подлинности на основе форм» и оставить «домен и имя пользователя»
    2) Перезапуск IIS либо через службы «Служба веб публикаций» либо через cmd «iisreset /noforce»

    Вуаля! worked!

    Автору огромное спасибо за идею со снегом!

    P.S. По возможности добавьте в пост чтобы другим не приходилось искать 🙂