понедельник, 1 сентября 2008 г.

Автосмена настроек прокси в Miranda IM

Эта статья является переводом записи, опубликованной в блоге Василича. В ней описывается способ запуска Miranda IM с USB флеш-драйва на нескольких компьютерах, имеющих различные настройки подключения к сети.

Сегодня я опишу особенности своего ежедневного использования Miranda IM:
Прежде всего — я запускаю Miranda IM с флеш-драйва — это дает мне возможность использовать ее на любом ПК с Windows, без необходимости синхронизировать историю чата. Я общаюсь на нескольких языках, и поэтому использую Unicode-версию Miranda IM. Кроме того за последние 4 года я не видел ни одного ПК с Windows 9x, так что у меня нет никаких причин использовать ANSI-версию

Запуск Миранды с флеш-диска имеет один (как минимум) недостаток — время запуска резко возрастает. Мой профиль занимает примерно 50 мегабайт, и Миранде требуется около 15 секунд для запуска (хотя простое копирование файла профиля в Explorer-е занимает около 4-х секунд); и хотя я использую драйвер dbx_mmap, это никак не помогает уменьшить время запуска.

Одна из вещей, которая раздражаетм меня каждый раз, когда я запускаю Миранду — это необходимость настройки соединения с интернетом. Дома у меня прямое подключение (через DSL роутер с uPnP), а на работе — через корпоративный прокси. К сожалению, Миранда не умеет читать настройки из IE или Windows, так что мне приходилось открывать диалог настройки и включать/выключать прокси для каждого протокола. Тогда я решил как-то это автоматизировать. После нескольких экспериментов я добился того, чего хотел: простого запуска Миранды вне зависимости от того, домашний ли это ПК или рабочий. Вот способ, которым я воспользовался:

  1. Миранда должна запускаться из командного файла, потому что настройки прокси считываются только при запуске Миранды, и если мы изменим их после подключения всех протоколов, нам придется перезапускать ее. В этом командном файле мы проверяем, где мы находимся — на работе, или дома. Я сделал это путем проверки некоторых папок, о которых мне известно, что они существуют только дома, или только на работе. И далее, в зависимости от расположения, я копирую соответствующий *.ini файл в Autoexex*.ini в папке Миранды. Вот пример моего командного файла:

    if exist "b:\Programs\MirandaIM\miranda32.exe" goto Home
    if exist "c:\Dokumente und Einstellungen\abakumov.BFE\" goto Work
    echo unknown PC. Trying to start Miranda without proxy.
    pause
    goto Home

    :Work
    rem work proxy settings
    copy work.ini autoexec_proxy.ini
    start miranda32.exe
    goto End

    :Home
    rem No proxy settings
    copy home.ini autoexec_proxy.ini
    start miranda32.exe
    goto End

    :End

    Я надеюсь, что здесь всё понятно, поэтому перейдем к рассмотрению *.ini-файлов.

  2. В файле Work.ini я активирую прокси для всех протоколов, и выполняю несколько дополнительных настроек вроде отключения звуков, поп-апов, отключения прямой передачи файлов в Jabber, установки только одной иконки в трее для контакт-листа и т.д.

    SETTINGS:


    [Netlib]
    NLEnableUPnP=b0
    NLUseProxy=b1[ICQ]
    NLUseProxy=b1

    [ICQP2P]
    NLUseProxy=b1
    NLEnableUPnP=b0

    [ICQJ]
    NLUseProxy=b1

    [ICQJP2P]
    NLUseProxy=b1
    NLEnableUPnP=b0

    [JABBER]
    NLUseProxy=b1
    NLEnableUPnP=b0
    BsDirect=b0
    Resource=uWork
    ManualConnect=b1

    [MSN]
    NLUseProxy=b1
    UseGateway=b1
    NLEnableUPnP=b0

    [MSN_HTTPS]
    NLUseProxy=b1

    [MSN2]
    NLUseProxy=b1
    UseGateway=b1
    NLEnableUPnP=b0

    [MSN2_HTTPS]
    NLUseProxy=b1

    [IRC]
    NLUseProxy=b1
    NLEnableUPnP=b0

    [IRC DCC]
    NLUseProxy=b1
    NLEnableUPnP=b0

    [IRC_Freenode]
    NLUseProxy=b1
    NLEnableUPnP=b0

    [IRC_Freenode DCC]
    NLUseProxy=b1
    NLEnableUPnP=b0

    [IRC2]
    NLUseProxy=b1
    NLEnableUPnP=b0

    [IRC2 DCC]
    NLUseProxy=b1
    NLEnableUPnP=b0

    [MRA]
    NLUseProxy=b1
    NLEnableUPnP=b0

    [MRA Avatars]
    NLUseProxy=b1

    [Updater]
    NLUseProxy=b1

    [UpdateNotify]
    NLUseProxy=b1

    [PopUp]
    ModuleIsEnabled=b0

    [Skin]
    UseSound=b0

    [CList]
    TrayIcon=b1
  3. В Home.ini делаем всё наоборот (настройки очень похожи, поэтому приведу здесь только небольшую часть):

    SETTINGS:

    [Netlib]
    NLUseProxy=b0
    NLEnableUPnP=b1

    [ICQ]
    NLUseProxy=b0

    [ICQP2P]
    NLUseProxy=b0
    NLEnableUPnP=b1

    [ICQJ]
    NLUseProxy=b0

    [ICQJP2P]
    NLUseProxy=b0
    NLEnableUPnP=b1

    [JABBER]
    NLUseProxy=b0
    NLEnableUPnP=b1
    BsDirect=b1
    Resource=uHome
    ManualConnect=b0

    [MSN]
    NLUseProxy=b0
    NLEnableUPnP=b1
    UseGateway=b0

    [MSN_HTTPS]
    NLUseProxy=b0
    ……………

    Чтобы всё это начало работать, нужно отредактировать файл MirandaBoot.ini. Я опишу необходимые изменения и прокомментирую некоторые из них.

    [Database]
    ProfileDir=.
    ;Эта опция позволяет нам использовать профиль из папки Миранды, а не из папки пользователя в Windows.


    [AutoExec]
    Use=yes
    Glob=autoexec_*.ini
    Safe=CLC Icons CLUI CList SkinSounds
    Unsafe=AIM ICQ MSN Jabber
    OverrideSecurityFilename=autoexec_proxy.ini
    ;Эта строчка отключает вывод сообщения об импорте файла autoexec_proxy.ini, но для других файлов autoexec_*.ini предупреждения сохраняются в целях безопасности.
    Warn=onlyunsafe
    OnCompletion=recycle
    RenamePrefix=done_
  4. После всех приготовлений нам надо выставить нужные настройки прокси для всех протоколов в Миранде, и на этом всё.

В этом примере (это реальный пример моих настроек) описана автоматическая обраотка наличия прокси на работе и прямого соединения дома. Если у вас больше двух ПК с разными настройками прокси, вам нужно сделать следующее:

  • добавить в командный файл распознавание третьего ПК и копирование соответствующего *.ini файла;
  • создать третий *.ini файл для третьег ПК;
  • добавить во все ini файлы необходимые настройки прокси. Необходимые опции для каждого протокола выглядят так (значения даны в качестве примера):NLUseProxy=b0
    NLProxyType=b4
    NLProxyPort=w3128
    NLUseProxyAuth=b0
    NLProxyAuthUser=s
    NLProxyAuthPassword=s
    NLUseProxyAuthNtlm=b0
    NLDnsThroughProxy=b0
    NLSpecifyOutgoingPorts=b0
    NLSpecifyIncomingPorts=b0
    NLIncomingPorts=s2000-2010
    NLProxyServer=s192.168.150.2
    NLOutgoingPorts=s2000-2010
    NLEnableUPnP=b1

    Конечно, всё это довольно сложно, но всё, что вам нужно — это настроить всё один раз, и забыть об этом. В дальнейшем всё будет происходить автоматически, и избавит вас от рутинной операции смены настроек при каждом подключении.

    Я надеюсь, эта короткая инструкция поможет вам упростить запуск Miranda IM с USB drive даже при разных настройках прокси на разных ПК.

2 коммент. :

Анонимный комментирует...

Советую убирать часть статьи под кат! Сайт после этого станет более читабельным!

Johan комментирует...

Я бы обязательно сделал это, если бы движок Blogger.com поддерживал такую возможность.

Отправить комментарий

 
 
Copyright © Johan's blog
Blogger Theme by BloggerThemes Design by Diovo.com