Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

proxy #152

Open
Asakra opened this issue Mar 6, 2019 · 14 comments
Open

proxy #152

Asakra opened this issue Mar 6, 2019 · 14 comments

Comments

@Asakra
Copy link
Contributor

Asakra commented Mar 6, 2019

создал файл opm.cfg, положил его C:\Program Files\OneScript\bin
{
"Прокси": {
"ИспользоватьПрокси": true,
"ПроксиПоУмолчанию": false,
"Сервер": "",
"Порт": "",
"Пользователь": "",
"Пароль": "",
"ИспользоватьАутентификациюОС": true
},
"СоздаватьShСкриптЗапуска": false
}

не помогает

заполняю настройки так:
{
"Прокси": {
"ИспользоватьПрокси": true,
"ПроксиПоУмолчанию": true,
"Сервер": "10.10.10.10",
"Порт": "8080",
"Пользователь": "Я",
"Пароль": "Я",
"ИспользоватьАутентификациюОС": false
},
"СоздаватьShСкриптЗапуска": false
}

не помогает

screenshot_3

как победить прокси?)

@EvilBeaver
Copy link
Member

Убедиться, что файл настроек вообще подхватился опм-ом. Как убедиться - не знаю. Можно просто Сообщить() в код навставлять в нужных местах, чтобы вывело активные настройки

@EvilBeaver
Copy link
Member

А может есть какой-то флаг, но я про него забыл

@Asakra
Copy link
Contributor Author

Asakra commented Mar 7, 2019

внес правки в модуль ПараметрыПриложенияOpm.os

в функцию СписокФайловНастроек() добавил:

//Каталог BIN
МассивФайлов.Добавить(ОбъединитьПути(КаталогПрограммы(), ИмяФайл));

и

Процедура НастроитьOpm() Экспорт

	НастройкиOpmИзФайлов = СобратьНастройкиИзФайлов();

	Если НастройкиOpmИзФайлов.Количество() = 0 Тогда
		Возврат;
	КонецЕсли;
	
	НастройкиПроксиЕсть = ПолучитьЗначение(НастройкиOpmИзФайлов,"Прокси", Неопределено);
	
	Если Не НастройкиПроксиЕсть = Неопределено  Тогда

		НастройкиПрокси = НастройкиOpmИзФайлов.Прокси;
		
		Сервер = ПолучитьЗначение(НастройкиПрокси, "Сервер", "");
		Порт = Число(ПолучитьЗначение(НастройкиПрокси, "Порт", 80));
		Пользователь = ПолучитьЗначение(НастройкиПрокси, "Пользователь", "");
		Пароль = ПолучитьЗначение(НастройкиПрокси, "Пароль", "");

		НастройкиOpm.УстановитьНастройкиПроксиСервера(Сервер, Порт, Пользователь, Пароль);

		// было:
		// ПроксиПоУмолчанию = ПолучитьЗначение(НастройкиПрокси,"ПроксиПоУмолчанию", Неопределено);
		
		// Если Не ПроксиПоУмолчанию = Неопределено Тогда
			
		// 	НастройкиOpm.УстановитьСистемныеНастройкиПроксиСервера(ПроксиПоУмолчанию);

		// КонецЕсли;

		// ИспользованиеПрокси = ПолучитьЗначение(НастройкиПрокси,"ИспользованиеПрокси", Неопределено);
		
		// Если Не ИспользованиеПрокси = Неопределено Тогда
			
		// 	НастройкиOpm.УстановитьИспользованиеПрокси(ИспользованиеПрокси);

		// КонецЕсли;

		ПроксиПоУмолчанию = ПолучитьЗначение(НастройкиПрокси,"ПроксиПоУмолчанию", Ложь);
		
		Если ПроксиПоУмолчанию Тогда
			
			НастройкиOpm.УстановитьСистемныеНастройкиПроксиСервера(ПроксиПоУмолчанию);

		КонецЕсли;

		ИспользоватьПрокси = ПолучитьЗначение(НастройкиПрокси,"ИспользоватьПрокси", Ложь);
		
		Если ИспользоватьПрокси Тогда
			
			НастройкиOpm.УстановитьИспользованиеПрокси(ИспользоватьПрокси);

		КонецЕсли;
	
	КонецЕсли;

	СоздаватьShСкриптЗапуска = ПолучитьЗначение(НастройкиOpmИзФайлов,"СоздаватьShСкриптЗапуска", Неопределено);
		
	Если Не СоздаватьShСкриптЗапуска = Неопределено Тогда

		НастройкиOpm.УстановитьСозданиеShСкриптЗапуска(СоздаватьShСкриптЗапуска);

	КонецЕсли;

	СервераПакетов = ПолучитьЗначение(НастройкиOpmИзФайлов,"СервераПакетов", Неопределено);
	
	Если Не СервераПакетов = Неопределено Тогда
		Индекс = 1;

		Для каждого ДополнительныйСервер Из СервераПакетов Цикл
			
			Сервер = ПолучитьЗначение(ДополнительныйСервер, "Сервер", "");
			Порт = Число(ПолучитьЗначение(ДополнительныйСервер, "Порт", 80));
			ПутьНаСервере = ПолучитьЗначение(ДополнительныйСервер, "ПутьНаСервере", "/");
			Имя = ПолучитьЗначение(ДополнительныйСервер, "Имя", СтрШаблон("ДопСервер_%1",Индекс));
			Приоритет = Число(ПолучитьЗначение(ДополнительныйСервер, "Приоритет", 0));
		
			Если ПустаяСтрока(Сервер) Тогда
				Лог.Отладка("Для дополнительного сервера <%1> не задан адрес", Индекс);
				Продолжить;
			КонецЕсли;
		
			НастройкиOpm.ДобавитьСерверПакетов(Имя, Сервер, ПутьНаСервере, Порт, Приоритет);
			Индекс = Индекс +1;

		КонецЦикла;

	КонецЕсли;

КонецПроцедуры

Функция ПрочитатьФайлНастроек(Знач ПутьФайлаНастроек)

	Если НЕ Новый Файл(ПутьФайлаНастроек).Существует() Тогда
		ВызватьИсключение "Файл настроек не найдет";
	КонецЕсли;

	Текст = ПрочитатьФайл(ПутьФайлаНастроек);
	
	Чтение = Новый ПарсерJSON;
	// было: Настройки = Чтение.ПрочитатьJSON(Текст,,, Ложь); - видимо баг в ПрочитатьJSON, т.к. на Ложь возвращает Соответствие
	Настройки = Чтение.ПрочитатьJSON(Текст,,, Истина);
	
	Возврат Настройки;

КонецФункции

Функция ПрочитатьФайл(Знач Путь)

	// было: Чтение = Новый ЧтениеТекста(Путь); - из-за кодировки не читался
	Чтение = Новый ЧтениеТекста(Путь, КодировкаТекста.UTF8);
	Текст = Чтение.Прочитать();
	Чтение.Закрыть();

	Возврат Текст;

КонецФункции

ну и файл с параметрами принял вид:

{
    "Прокси": {
        "ИспользоватьПрокси": true,
        "ПроксиПоУмолчанию": true,
        "Сервер": "",
        "Порт": "",
        "Пользователь": "",
        "Пароль": "",
        "ИспользоватьАутентификациюОС": true
    },
    "СоздаватьShСкриптЗапуска": false
}

может "ПроксиПоУмолчанию" лучше переименовать в "ИспользоватьСистемныйПрокси"?

@EvilBeaver
Copy link
Member

@Asakra будьте добры, пришлите сразу пулреквест, чтобы проще было и посмотреть и объединить ваши доработки

@codenull
Copy link

codenull commented Apr 30, 2019

Здравствуйте.

Судя по данной ветке, не я один столкнулся с проблемой настройки прокси-сервера. По каким-то причинам, opm не подхватывает настройки прокси-сервера из cfg файла (лежит в каталоге opm из каталога пользователя так же НЕ работает).

Пришлось в явном виде править текст модуля НастройкиOpm. Примененная заглушка безусловного использования прокси при проблемах с конфиг-файлом.

Процедура Инициализация()

	мНастройки = Новый Структура();
	мНастройки.Вставить("ИспользоватьПрокси", Ложь);
	мНастройки.Вставить("ИспользоватьСистемныйПрокси", Ложь);

	мНастройки.Вставить("НастройкиПрокси", Новый Структура("Сервер, Порт, Пользователь, Пароль, ИспользоватьАутентификациюОС", "","","","", Ложь));
	мНастройки.Вставить("СоздаватьShСкриптЗапуска", Ложь);
	мНастройки.Вставить("СервераПакетов", Новый Массив);

	// Сервера пакетов по умолчанию
	ДобавитьСерверПакетов("ОсновнойСерверПакетов", КонстантыOpm.СерверУдаленногоХранилища, КонстантыOpm.ПутьВХранилище, 80, 0);
	ДобавитьСерверПакетов("ЗапаснойСерверПакетов", КонстантыOpm.СерверЗапасногоХранилища, КонстантыOpm.ПутьВЗапасномХранилище, 80, 1);
	
	// Заглушка принудительного использования прокси.
	мНастройки.Вставить("ИспользоватьПрокси", Истина);
	мНастройки.Вставить("НастройкиПрокси", Новый Структура("Сервер, Порт, Пользователь, Пароль, ИспользоватьАутентификациюОС", "127.0.0.1","47999","","", Ложь));

КонецПроцедуры

Нужно учитывать, что при обновлении самого opm update opm, заглушка слетит.

@Asakra
Copy link
Contributor Author

Asakra commented Apr 30, 2019

А если сюда положить?
c:\ProgramData\opm.cfg

@codenull
Copy link

codenull commented Apr 30, 2019

А если сюда положить?
c:\ProgramData\opm.cfg

Спасибо. Это единственный вариант который сработал, но только после запуска новой консоли. Видимо кэширование мешает подхвату настроек на лету.

@EvilBeaver
Copy link
Member

Коллеги, так надо что-то править в коде ОПМ или нет? Если надо - покажите пулреквестом, что именно? Если нет - закроем задачу.

@asosnoviy
Copy link
Member

asosnoviy commented May 13, 2019

ИМХО вот тут проблема.

создал файл opm.cfg, положил его C:\Program Files\OneScript\bin

А если не создавать его руками, а использовать opm config то где файл с настройками появится?
У меня появился в %USERPROFILE%
win 10

@codenull
Copy link

codenull commented Sep 6, 2019

Обновил oscript до версии 1.1.1.44 и все началось по новой. Существующий конфиг из C:\ProgramData\opm.cfg перестал работать. Конфиг из C:\OneScript\bin\opm.cfg так же игнорируется.

ПРЕДУПРЕЖДЕНИЕ - Ошибка получения списка пакетов с хаба ОсновнойСерверПакетов по причине {Модуль C:\OneScript\lib\opm\src\core\Классы\СерверПакетов.os / Ошибка в строке: 94 / Ошибка подключения к зеркалу }
ПРЕДУПРЕЖДЕНИЕ - Ошибка получения списка пакетов с хаба ЗапаснойСерверПакетов по причине {Модуль C:\OneScript\lib\opm\src\core\Классы\СерверПакетов.os / Ошибка в строке: 94 / Ошибка подключения к зеркалу }
КРИТИЧНАЯОШИБКА - {Модуль C:\OneScript\lib\opm\src\core\Классы\МенеджерПолученияПакетов.os / Ошибка в строке: 18 / Ошибка установки пакета opm: Пакет не найден}

Придется снова вшивать все жестко в код opm.

@EvilBeaver
Copy link
Member

@codenull кажется, вшивка в код опм не поможет.. А оригинальный опм но на версии 1.0.21 работает у вас нормально?

@codenull
Copy link

Вшивка в код помогает. Версию 1.0.21 пока не могу проверить, возможно позже.

@codenull
Copy link

codenull commented Feb 16, 2021

На новом ПК, версия oscript 1.5.0.178 win 10 прокси заработал после его указания в файле bin/opm.cfg, т.е. в том же каталоге, где лежит opm.exe.

@refringerator
Copy link
Contributor

Замечена проблема в установке настроек прокси, которые отличаются от системных
Неверно обрабатывается значение ПроксиПоУмолчанию=false
Если в конфиге в настройках прокси есть ключ ПроксиПоУмолчанию=false, то получается, что условие Не ПроксиПоУмолчанию = Неопределено всегда истинно и настройки прокси не устанавливаются

Возможные решения проблемы через конфиг:

  1. убрать ключ ПроксиПоУмолчанию
  2. установить значение ключа ПроксиПоУмолчанию=undefined

ПроксиПоУмолчанию = ПолучитьЗначение(НастройкиПрокси,"ПроксиПоУмолчанию", Неопределено);
ИспользованиеПрокси = ПолучитьЗначение(НастройкиПрокси, "ИспользоватьПрокси", Неопределено);
Если ИспользованиеПрокси = Истина Тогда
НастройкиOpm.УстановитьИспользованиеПрокси(ИспользованиеПрокси);
Если Не ПроксиПоУмолчанию = Неопределено Тогда
НастройкиOpm.УстановитьСистемныеНастройкиПроксиСервера(ПроксиПоУмолчанию);
Иначе
НастройкиOpm.УстановитьНастройкиПроксиСервера(Сервер, Порт, Пользователь, Пароль);
КонецЕсли;
КонецЕсли;

Дефолтный конфиг

"Прокси": {
"ИспользоватьПрокси": false,
"ПроксиПоУмолчанию": false,
"Сервер": "",
"Порт": "",
"Пользователь": "",
"Пароль": "",
"ИспользоватьАутентификациюОС": false
},
"СоздаватьShСкриптЗапуска": false
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants