Как настроить Atom для использования настроек прокси файла (pac)?

В Windows можно настроить Atom на использование прокси-сервера по умолчанию вместо того, чтобы вручную указывать параметры прокси-сервера в файле .apmrc?


Недавно я начал использовать atom-editor для Windows (Windows 7 Pro), и до сих пор мне это нравится. Я искал какое-то время, чтобы попытаться заставить редактор иметь возможность подключаться к внешнему миру и не имел никакого успеха.

Наша сеть (я не специалист по сети) настроена на использование прокси-сервера (внутреннего) для доступа в Интернет. В моей системе это выполняется в настройках прокси с помощью "Автоматическая конфигурация Script", например: http://internal-server-name/sub-dir/file-name.pac.

Многие ресурсы предложили вручную установить прокси-информацию в файле .apmrc:

Они не отвечают на мой вопрос, поскольку мне нужны системные настройки по умолчанию

Я попытался настроить Atom на то же самое, но когда я изменяю файл .apmrc, чтобы:

http-proxy = http://internal-server-name/sub-dir/file-name.pac
https-proxy = https://internal-server-name/sub-dir/file-name.pac
strict-ssl = false

Я получаю следующую ошибку (предположительно потому, что указанный выше адрес не является самим прокси):

tunneling socket could not be established, cause=Parse Error

Когда я оставляю файл .apmrc без проблем, я получаю следующую ошибку при попытке просмотра пакетов:

getaddrinfo ENOTFOUND

Даже если бы у меня был IP-адрес прокси-сервера и номер порта для указания, я бы не хотел, чтобы я не хотел жестко кодировать мои учетные данные в файле конфигурации, но я уверен, что аутентификация каким-то образом настроена на использование токенов Kerberos во всяком случае, поэтому я не смог бы их вообще указать.

Интересно, что обновления Atom говорят о том, что мои установленные пакеты (из коробки) обновлены, что, по-видимому, указывает на то, что эта часть работает, пока пакеты и темы этого не делают.


Вот несколько скриншотов для справки:

Изменения .apmrc No .apmrc changes

Прокси-сервер, указанный в .apmrc Proxy server specified in .apmrc

Редактировать 08/31/2015

В ответ на некоторые из отзывов я попытался просмотреть файл .pac и извлечь информацию о адресе прокси-сервера. Я смог получить информацию о прокси из файла и поместить его в файл .apmrc, но он не повлиял на результат (я все равно получаю те же ошибки). Я также с тех пор пытался использовать CNTLM безрезультатно.

Также обратите внимание, что для моего прокси требуется аутентификация, как указано выше. Я занимаюсь дальнейшим исследованием этой проблемы, и это может быть комбинация настроек прокси для параметров APM и прокси для GitHub. См. Следующую соответствующую статью:

В идеале я бы хотел получить решение, которое не требует полной конфигурации компьютера или хрупкой настройки файла с несколькими конфигурациями.

Ответы

Ответ 1

A .pac файл - это просто файл javascript, который браузеры могут запускать, чтобы программно определить, какой прокси использовать. Это полезно, если вашей сети необходимо использовать разные прокси для доступа к различным ресурсам. Если вы откроете этот файл, вы, вероятно, сможете это понять (это просто javascript, в конце концов) и выяснить, какой прокси-сервер использует ваша сеть для общего доступа в Интернет. Установите это как ваш прокси-сервер в свой файл .apmrc, и он должен работать.

Все становится сложнее, если ваш прокси требует какой-либо проверки подлинности. Если это ваша проблема, дайте мне знать. У меня есть некоторый опыт, связанный с этим.


Проверка подлинности

ОК, поэтому вам нужно пройти аутентификацию. Тогда ваша ситуация, вероятно, очень похожа на мою. Вы правильно используете CNTLM, нам просто нужно настроить его правильно. Ваш файл cntlm.ini будет выглядеть примерно так:

Username    <your windows username>
Domain      <your domain name>
Password    <leave this blank>
PassLM      <get this by running `cntlm -H` on the command line>
PassNT      <get this by running `cntlm -H` on the command line>
PassNTLMv2  <get this by running `cntlm -H` on the command line>

Proxy       <Your proxy address like ip_address:port>
Proxy       <If you have multiple proxies, you may list them each on a new line>

NoProxy     localhost, 127.0.0.*, <any others that should bypass the proxy>

Listen      <a local port to listen on (I use 53128)>

Там что-то смешное, что вы должны знать об этом файле (cntlm.ini). Когда вы устанавливаете cntlm, он включается в папку программы, но фактически работает, только если он находится в C:\Program Files (x86)\cntlm\cntlm.ini. Вероятно, более вероятно сказать, что он должен находиться в папке cntlm внутри каталога PROGRAMFILES, поэтому вам следует дважды проверить, что это так.

В любом случае, выполнив все это, вы можете начать cntlm (инструкции в readme). Затем вам нужно настроить apm, чтобы на самом деле использовать ваш локальный прокси. Ваш .apmrc должен выглядеть следующим образом:

http-proxy = http://localhost:<port # from cntlm.ini>
https-proxy = https://localhost:<port # from cntlm.ini>
strict-ssl = false

Вы бы подумали, что этого будет достаточно, но там больше, что может помочь. У меня было много проблем с npm, пока я не обнаружил, что https не работает хорошо через cntlm, поэтому мне нужно было изменить свой реестр с https://registry.npmjs.org/ на http://registry.npmjs.org/. Поскольку apm также использует тот же реестр, я тоже решил изменить это:

apm config set registry http://registry.npmjs.org/

И затем... он также помог войти в Atom config.cson и установить core.proxy на http://localhost:<port # from cntlm.ini>

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

netsh winhttp set proxy localhost:<port # from cntlm.ini> "localhost, 127.0.0.*"

Это избавит вас от необходимости конфигурировать большинство (все?) других приложений один за другим. По какой-то причине apm необходимо настроить именно так. Я полагаю, что по какой-то причине он не использует настройки winhttp? Я не знаю ответа на это.

Новая информация 2016/03/18

Недавно я заметил, что для некоторых приложений вам может понадобиться еще одна вещь. Вы также должны установить следующие переменные среды для своего локального прокси:

HTTP_PROXY
HTTPS_PROXY
FTP_PROXY
http_proxy
https_proxy
ftp_proxy

Может показаться, что overkill устанавливает как верхний, так и нижний регистр, но я недавно установил MSys2 и обнаружил, что он ищет версии в нижнем регистре, поэтому просто установите их все и сберегите некоторые проблемы.

Ответ 2

Вы должны загрузить файл http://internal-server-name/sub-dir/file-name.pac и открыть его текстовым редактором, затем найти фактический адрес прокси и порт внутри него (рядом с ключевым словом PROXY).

Ответ 3

Я использовал это для своей проблемы с npm и .npmrc

c:\users\%user%\.atom\.apmrc (добавьте, если не существует) и поместите это

proxy=http://YOUR-DOMAIN**%5C**USER-NAME:[email protected]:PORT/