PSPx форум

PSPx форум (https://www.pspx.ru/forum/index.php)
-   PS3 хакинг и девелопмент (https://www.pspx.ru/forum/forumdisplay.php?f=207)
-   -   PKGi PS3 RUS MOD - новая продвинутая качалка (https://www.pspx.ru/forum/showthread.php?t=110158)

Inpos 06.10.2023 11:29

Цитата:

Сообщение от in1975 (Сообщение 1275047)
В шапке есть ссылки на исходный код, дерзай :)

А где посмотреть, как получить параметры сети из системы?

petro_kyznecov6 06.10.2023 13:15

Ребятушки,здравствуйте.Помогите советом или делом,я в этом деле новенький.Итак решился я все таки на прошивку,поставил hen 4.90.2,установил новый PKGi,в самой программе про скачивании игры на русском или руссификатора,вылетает ошибка HTTP-запрос не удался.Это можно поправить?Заранее спасибо.

Ang3l42 06.10.2023 13:17

Цитата:

Сообщение от petro_kyznecov6 (Сообщение 1275050)
Это можно поправить?

В шапке нет такой ошибки?

petro_kyznecov6 06.10.2023 13:21

Нет,только в программе PKGi непосредственно про скачивании.Допустим,находу игру с символикой(FullRus) нажимаю скачать,появляется окно с надписью загрузка иконки,а затем красным шрифтом HTTP-запрос не удался.Но так только с играми на русском,та же самая игра,но на английском ставится,не очень комфортно играть.

Ang3l42 06.10.2023 13:47

petro_kyznecov6, Ну так и что, в шапке точно нет такой ошибки с описанием, что делать? Точно точно?

petro_kyznecov6 06.10.2023 14:29

Может и я сляпой)Я в этих вопросах не грамотен(

Ang3l42 06.10.2023 14:32

petro_kyznecov6,
Нажмите для увеличения

petro_kyznecov6 06.10.2023 15:12

Спасибо друг,буду пробовать)

in1975 06.10.2023 16:29

petro_kyznecov6,
Цитата:

Сообщение от in1975 (Сообщение 1212494)
HTTP-запрос не удался - Возможные причины:
Ошибка возникает, при достижении лимитов Яндекса. Решение: скачать из темы Прямое скачивание на свой Диск и скачать со своего диска без лимитов и ожиданий, либо ждать когда лимиты будут сняты.


petro_kyznecov6 06.10.2023 17:28

Изменение DNS не поменяло ситуацию

Ang3l42 06.10.2023 17:29

Цитата:

Сообщение от petro_kyznecov6 (Сообщение 1275076)
Изменение DNS не поменяло ситуацию

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

petro_kyznecov6 06.10.2023 17:32

Множество вариантов решения ошибки,изменение DNS был самым простым.настроить VPN у меня не получится,ну а скачать из прямого скачивания Яндекс не дает.Либо я рукожоп либо делаю что-то не так,как и писал выше я от этого далек,но оооочень хочу во всем разобраться.

Ang3l42 06.10.2023 17:33

Цитата:

Сообщение от petro_kyznecov6 (Сообщение 1275078)
ну а скачать из прямого скачивания Яндекс не дает.

Как именно не дает? Просит на яндекс диск свой сохранить? Тогда никакие днс и впн тебе не помогут, потому что квоты превышены. И единственный вариант это скачать на свой яндекс диск с пк или смартфона.

petro_kyznecov6 06.10.2023 18:54

Объясни мне дураку пожалуйста,что я должен скачать и откуда?

Ang3l42 06.10.2023 18:55

petro_kyznecov6, Тебе выше даже со ссылкой на тему прямого скачивания ответили.
Цитата:

Сообщение от petro_kyznecov6 (Сообщение 1275082)
что я должен скачать

Тебе лучше знать, что ты должен скачать.

Inpos 07.10.2023 00:03

Цитата:

Сообщение от petro_kyznecov6 (Сообщение 1275082)
Объясни мне дураку пожалуйста,что я должен скачать и откуда?

Если тебе Яндекс оставляет из вариантов только сохранить на Яндекс.Диск (кнопка только эта активна), то жмёшь эту кнопку, а после завершения идёшь в свой Яндекс.Диск и качаешь игру оттуда.

Ang3l42 08.10.2023 18:15

Цитата:

Сообщение от Inpos (Сообщение 1275000)
А нет вариантов вычитывать настройки прокси из системных настроек сети и подсовывать в set_opt libcurl ?

Раз у тебя на роутере поднята прокся, то можно покурить мануалы в сторону прероутинга с порта 80 на порт прокси, то есть прозрачный прокси сделать. Но в таком случае у тебя весь трафик из внутренней сети во внешку будет идти через прокси, что доп нагрузка на роутер. Ну и прокси должна транспарент поддерживать.

Inpos 09.10.2023 09:02

Цитата:

Сообщение от Ang3l42 (Сообщение 1275195)
Раз у тебя на роутере поднята прокся, то можно покурить мануалы в сторону прероутинга с порта 80 на порт прокси, то есть прозрачный прокси сделать. Но в таком случае у тебя весь трафик из внутренней сети во внешку будет идти через прокси, что доп нагрузка на роутер. Ну и прокси должна транспарент поддерживать.

Чтобы корректно настроить прозрачную проксю для HTTPS-трафика (порт 443), который сейчас больше распространён (в том числе и на интересующих нас ресурсах), надо сломать тысячи копий. Поэтому это не вариант. По поводу того, что весь трафик будет или не весь, это вообще не проблема, когда условием для такого заворачивания на порт указываешь исходящий IP. Думал я над этим.

Неужели нигде не почитать, как взять параметры из XMB? Это такое тайное знание?

in1975 09.10.2023 12:10

Inpos, Какие параметры тебя интересуют? В логах прокси можно увидеть, если ты об этом:

Код:

GET http://xmb-e.dl.playstation.net/xmb/l?env=np&serv=PKGi%20PS3%20RUS%20MOD&cc=nl HTTP/1.1
Host: xmb-e.dl.playstation.net
User-Agent: PS3Application libhttp/4.9.0-000 (CellOS)
Proxy-Connection: Keep-Alive
Accept-Encoding: identity


Inpos 09.10.2023 13:31

Цитата:

Сообщение от in1975 (Сообщение 1275233)
Inpos, Какие параметры тебя интересуют? В логах прокси можно увидеть, если ты об этом:

Код:

GET http://xmb-e.dl.playstation.net/xmb/l?env=np&serv=PKGi%20PS3%20RUS%20MOD&cc=nl HTTP/1.1
Host: xmb-e.dl.playstation.net
User-Agent: PS3Application libhttp/4.9.0-000 (CellOS)
Proxy-Connection: Keep-Alive
Accept-Encoding: identity


В инициализацию lubcurl, в PKGi можно добавить set_opt для использования прокси. Здесь есть два варианта:
1 - добавить настройки в самом PKGi (что мне не нравится)
2 - использовать хост и порт прокси из настроек сети ОС (XMB).

Чтобы пойти по второму варианту, надо взять настройки сети ОС и проверить, указана ли прокся. Вот это мне и надо - как взять настройки сети ОС? Где есть пример или описание этого?

in1975 09.10.2023 15:25

Цитата:

Сообщение от Inpos (Сообщение 1275236)
хост и порт прокси из настроек сети ОС

И что мешает это сделать ? в шапке давно этот метод описан:

Цитата:

На Playstation3 открываем настройки сети, выбираем специальные, пролистываем до пункта "Использовать прокси" , нажимаем использовать.
Вводим адрес, который указан в exposed via (в данном примере 192.168.и далее), порт ставим 8080.

Код:

#define PKGI_USER_AGENT "Mozilla/5.0 (PLAYSTATION 3; 1.00)"
...
void pkgi_curl_init(CURL *curl)
{
    // Set user agent string
    curl_easy_setopt(curl, CURLOPT_USERAGENT, PKGI_USER_AGENT);
    // don't verify the certificate's name against host
    curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L);
    // don't verify the peer's SSL certificate
    curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L);
    // Set SSL VERSION to TLS 1.2
    curl_easy_setopt(curl, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1_2);
    // Set timeout for the connection to build
    curl_easy_setopt(curl, CURLOPT_CONNECTTIMEOUT, 20L);
    // Follow redirects
    curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);
    // maximum number of redirects allowed
    curl_easy_setopt(curl, CURLOPT_MAXREDIRS, 20L);
    // Fail the request if the HTTP code returned is equal to or larger than 400
    curl_easy_setopt(curl, CURLOPT_FAILONERROR, 1L);
}

Изменения USER_AGENT ничего не дало, как я писал ранее

Inpos 09.10.2023 20:04

Цитата:

Сообщение от in1975 (Сообщение 1275241)
И что мешает это сделать ? в шапке давно этот метод описан:

На Playstation3 открываем настройки сети, выбираем специальные, пролистываем до пункта "Использовать прокси" , нажимаем использовать.
Вводим адрес, который указан в exposed via (в данном примере 192.168.и далее), порт ставим 8080.

Это такая шутка, да? Я спрашивал, как это сделать программно? Как из кода PKGi обратиться к системе и вытащить структуру с параметрами сети, где проверить (в коде, а не глазами), есть ли прокся и, если есть, то взять хост и порт, конкатенацией составить строку "http://хост:порт" и передать в
Код:

curl_easy_setopt(CURL *handle, CURLOPT_PROXY, char *proxy);
Цитата:

Изменения USER_AGENT ничего не дало, как я писал ранее
Это я понял и в первый раз ))

Er_dag_za 09.10.2023 20:28

А что с русификатором Persona 5? То он выдает http ошибку, два раза было что он все-таки начал загрузку(прямую), но на 100% выдаёт ошибку целостности.

ErikPshat 10.10.2023 04:26

Цитата:

Сообщение от Er_dag_za (Сообщение 1275251)
То он выдает http ошибку

Читайте в шапке темы вкладку Ошибки, там всё расписано.

Цитата:

Сообщение от Er_dag_za (Сообщение 1275251)
на 100% выдаёт ошибку целостности.

Исправлена SHA-256 для русификатора Persona 5. Перекачайте с Гитхаба...

in1975 10.10.2023 08:31

Inpos, Да Вас не поймешь. Тут Вы писали, что не хотите делать это в pkgi.

Для фоновой загрузки не надо ничего править в коде pkgi, там прокси уже из системы берется (если он есть), ибо это официальный метод скачки.

Inpos 10.10.2023 09:02

Цитата:

Сообщение от in1975 (Сообщение 1275265)
Inpos, Да Вас не поймешь. Тут Вы писали, что не хотите делать это в pkgi.

Я, наверное, пишу на инопланетном. Или одно из двух. Я писал, что не хочу делать "настройки". "Настройки"... Такие окошечки с полями для ввода адреса прокси и кнопочками ОК и Отменить. Вторым пунктом в том же сообщении, что Вы указываете, сказано - использовать хост и порт из настроек ОС. Оба эти пункта являются вариантами решения одной единственной цели:
Цитата:

В инициализацию lubcurl, в PKGi можно добавить set_opt для использования прокси. Здесь есть два варианта
О чём написано в самом начале того сообщения.

Как Вы же мне сами и написали, есть исходный код и мне надо дерзать. Я готов дерзать, но в SDK PS3 я не шарю от слова "совсем".

Цитата:

Для фоновой загрузки не надо ничего править в коде pkgi, там прокси уже из системы берется (если он есть), ибо это официальный метод скачки.
Мне кажется (или это только в моей голове), что я достаточно объяснил причины доработки прямой загрузки. Даже, если Вы с ними не согласны, не вижу причин отказать мне, хотя бы, в спортивном интересе.

Inpos добавил 10.10.2023 в 09:02
Уже который день мы топчемся на одном месте. Народ, кто-нибудь знает, какой Си-шный заголовок подключить и какую функцию вызвать, чтобы получить хост и порт прокси из параметров сети ОС PS3?

ErikPshat 10.10.2023 09:16

Цитата:

Сообщение от Inpos (Сообщение 1275267)
Как Вы же мне сами и написали, есть исходный код и мне надо дерзать. Я готов дерзать, но в SDK PS3 я не шарю от слова "совсем"

Объясните проще, что вы хотите добавить в исходном коде в эту секцию?

Inpos 10.10.2023 09:49

Цитата:

Сообщение от ErikPshat (Сообщение 1275269)
Объясните проще, что вы хотите добавить в исходном коде в эту секцию?

Т.е. ответа на вопрос "какой функцией прочитать параметры прокси из системных настроек ОС" мне не получить тут, как я понимаю. В указанной секции кода можно добавить:
- обращение к ОС, чтобы получить параметры сети
- извлечение из параметров сети строк хоста и порта прокси
- если эти строки есть и не пустые, тогда сформировать строку http://хост:порт (например, http://192.168.1.1:8080) и вызвать:
Код:

curl_easy_setopt(curl, CURLOPT_PROXY, "http://192.168.1.1:8080");
Inpos добавил 10.10.2023 в 09:48
понятно, что "http://192.168.1.1:8080" должна быть значением переменной

Inpos добавил 10.10.2023 в 09:49
Цитата:

Сообщение от ErikPshat (Сообщение 1275269)
Объясните проще, что вы хотите добавить в исходном коде в эту секцию?

А вообще, для этого существуют пул-реквесты. Неужели я так сложно спрашиваю?

ErikPshat 10.10.2023 10:43

Цитата:

Сообщение от Inpos (Сообщение 1275270)
CURLOPT_PROXY

А такая команда на CURL для PS3 имеется?
И вообще, какой ты хочешгь прокси? 192.168.1.1 не пойдёт, это локальный адрес в домашней сети.

Inpos 10.10.2023 10:57

Цитата:

Сообщение от ErikPshat (Сообщение 1275277)
А такая команда на CURL для PS3 имеется?

Это не команда, а опция. Не думаю, что порт на PS3 урезали для чего-то. Сама libcurl поддерживает прокси с самого своего рождения.
Цитата:

И вообще, какой ты хочешгь прокси? 192.168.1.1 не пойдёт, это локальный адрес в домашней сети.
Ещё чуть-чуть и я начну между строк ругаться матом. Хост и порт прокси брать вызовом функции (мне никто здесь так и не ответил, какой) из параметров ОС. 192.168.1.1 здесь, как пример. Если пользователь в ОС задал ходить через прокси, то libcurl, увидев, что прокси прописан в системе, задаёт опцию у себя, используя хост и порт из параметров системы. АВТОМАТОМ.

ErikPshat 10.10.2023 11:20

Цитата:

Сообщение от Inpos (Сообщение 1275278)
Ещё чуть-чуть и я начну между строк ругаться матом. Хост и порт прокси брать вызовом функции (мне никто здесь так и не ответил, какой) из параметров ОС.

Какие параметры ОС ты пропишешь в настройках сети, такие и будет брать программа при соединении. Пропишешь там соединение через прокси, значит прога так и будет соединяться. Я щас точно начну кричать матом.

Цитата:

Сообщение от Inpos (Сообщение 1275278)
Это не команда, а опция.

Хорошо, через прогу тоже можно выставить опцию. Например, если там указана опция PKGI_USER_AGENT, то в начале файла исходников видно что подставляется:
Код:

#define PKGI_USER_AGENT "Mozilla/5.0 (PLAYSTATION 3; 1.00)"

Inpos 10.10.2023 11:33

Цитата:

Сообщение от ErikPshat (Сообщение 1275281)
Какие параметры ОС ты пропишешь в настройках сети, такие и будет брать программа при соединении. Пропишешь там соединение через прокси, значит прога так и будет соединяться

Это было, когда PKGi использовал встроенный клиент ОС. После переезда на libcurl, за соединения теперь отвечает сама libcurl. Вы можете сами убедиться, прописав в системе проксю и попробовав скачать прямой загрузкой из PKGi. Соединение пойдёт не через проксю. Я не пойму, это так трудно? Трудно ответить, какой функцией из ОС можно взять параметры прокси? Я всё оформлю в пулреквесте и Вы увидите, какие изменения кода я внёс.
Простой вопрос: какой функцией можно получить параметры прокси из сетевых настроек системы?
Хочу простой ответ. Без убеждения меня, что это не надо и я хочу странного.

ErikPshat 10.10.2023 11:50

Цитата:

Сообщение от Inpos (Сообщение 1275282)
Хочу простой ответ. Без убеждения меня, что это не надо и я хочу странного.

Вот тебе уже логи с консоли выкладывали здесь: https://www.pspx.ru/forum/showpost.php?p=1275233
Это мы тестировали соединение из PKGi. Остальные функции спрашивай у SONY.

Если хочешь сам посмотреть логи соединения консоли, ставь PS3.ProxyServer и смотри.

Inpos 10.10.2023 11:52

Цитата:

Сообщение от ErikPshat (Сообщение 1275283)
Вот тебе уже логи с консоли выкладывали здесь: https://www.pspx.ru/forum/showpost.php?p=1275233
Это мы тестировали соединение из PKGi. Остальные функции спрашивай у SONY.

Если хочешь сам посмотреть логи соединения консоли, ставь PS3.ProxyServer и смотри.

Понятно.

in1975 11.10.2023 15:15

Цитата:

Сообщение от Inpos (Сообщение 1275282)
параметры прокси из сетевых настроек системы?

Какой-то странный вопрос от человека, знающего программирование. Смотрите какой язык программирования используется, смотрите библиотеки, которые используются.
Формируете в программе запрос, обрабатываете ответ.

Примеры обработки запросов можете увидеть в pkgi-master\source\pkgi_ps3.c

Inpos 11.10.2023 17:56

Цитата:

Сообщение от in1975 (Сообщение 1275320)
Какой-то странный вопрос от человека, знающего программирование. Смотрите какой язык программирования используется, смотрите библиотеки, которые используются.

Я написал, что в SDK PS3 не разбираюсь. Опыт разработки ПО не дают все знания мира. Все SDK и фреймворки имеют свои особенности. Поэтому и спросил здесь, в ветке разработчиков отечественного форка.
Цитата:

Формируете в программе запрос, обрабатываете ответ.
Спасибо, Кэп.

Цитата:

Примеры обработки запросов можете увидеть в pkgi-master\source\pkgi_ps3.c
Там нет получения сетевых параметров (или я не нашёл в силу незнания SDK PS3).

В общем, не парьтесь. Я запросил эту информацию у разработчика PKGi.

Provodnik1337 11.10.2023 20:06

Здравствуйте, я задался очень сложным вопросом. Вот игры с регионом EUR контента: "игры из регионов" будут на русском языке либо русской озвучке? Например я хотел скачать с этого контента AC creed 2 и там два региона:EUR и USA, то по логике EUR будет на русском?

Ang3l42 11.10.2023 20:10

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

Provodnik1337 11.10.2023 21:49

Ang3l42, мне нужно скачать именно с "игры из регионов", ибо в "игры на русском" AC 2 выбивает ошибку "http запрос не удался" и поэтому я спрашиваю будут ли в регионе EUR "игры из регионов" на русском языке либо с русской озвучкой

in1975 12.10.2023 00:40

Цитата:

Сообщение от Inpos (Сообщение 1275323)
я не нашёл в силу незнания SDK PS3

https://www.psdevwiki.com/ps3/VSH_Exports#cellHttp

Код:

0x4D40CF98        cellHttpClientGetProxy        int cellHttpClientGetProxy(CellHttpClientId clientId, CellHttpUri *proxy, void *pool, size_t poolSize, size_t *required)
Если нужно еще, через поиск proxy думаю найдете.

цитата из pkgi_ps3
код

Код:

void pkgi_curl_init(CURL *curl)
{
    // Set user agent string
    curl_easy_setopt(curl, CURLOPT_USERAGENT, PKGI_USER_AGENT);
    // don't verify the certificate's name against host
    curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L);
    // don't verify the peer's SSL certificate
    curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L);
    // Set SSL VERSION to TLS 1.2
    curl_easy_setopt(curl, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1_2);
    // Set timeout for the connection to build
    curl_easy_setopt(curl, CURLOPT_CONNECTTIMEOUT, 20L);
    // Follow redirects
    curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);
    // maximum number of redirects allowed
    curl_easy_setopt(curl, CURLOPT_MAXREDIRS, 20L);
    // Fail the request if the HTTP code returned is equal to or larger than 400
    curl_easy_setopt(curl, CURLOPT_FAILONERROR, 1L);
}

pkgi_http* pkgi_http_get(const char* url, const char* content, uint64_t offset)
{
    LOG("http get");

    if (!pkgi_validate_url(url))
    {
        LOG("unsupported URL (%s)", url);
        return NULL;
    }

    pkgi_http* http = NULL;
    for (size_t i = 0; i < 4; i++)
    {
        if (g_http[i].used == 0)
        {
            http = &g_http[i];
            break;
        }
    }

    if (!http)
    {
        LOG("too many simultaneous http requests");
        return NULL;
    }

    http->curl = curl_easy_init();
    if (!http->curl)
    {
        LOG("curl init error");
        return NULL;
    }

    pkgi_curl_init(http->curl);
    curl_easy_setopt(http->curl, CURLOPT_URL, url);

    LOG("starting http GET request for %s", url);

    if (offset != 0)
    {
        LOG("setting http offset %ld", offset);
        /* resuming upload at this position */
        curl_easy_setopt(http->curl, CURLOPT_RESUME_FROM_LARGE, (curl_off_t) offset);
    }

    http->used = 1;
    return(http);
}

int pkgi_http_response_length(pkgi_http* http, int64_t* length)
{
    CURLcode res;

    // do the download request without getting the body
    curl_easy_setopt(http->curl, CURLOPT_NOBODY, 1L);
    curl_easy_setopt(http->curl, CURLOPT_NOPROGRESS, 1L);

    // Perform the request
    res = curl_easy_perform(http->curl);

    if(res != CURLE_OK)
    {
        LOG("curl_easy_perform() failed: %s", curl_easy_strerror(res));
        return 0;
    }

    long status = 0;
    curl_easy_getinfo(http->curl, CURLINFO_RESPONSE_CODE, &status);
    LOG("http status code = %d", status);

    curl_easy_getinfo(http->curl, CURLINFO_CONTENT_LENGTH_DOWNLOAD_T, length);
    LOG("http response length = %llu", *length);
    http->size = *length;

    return 1;
}

int pkgi_http_read(pkgi_http* http, void* write_func, void* xferinfo_func)
{
    CURLcode res;

    curl_easy_setopt(http->curl, CURLOPT_NOBODY, 0L);
    // The function that will be used to write the data
    curl_easy_setopt(http->curl, CURLOPT_WRITEFUNCTION, write_func);
    // The data file descriptor which will be written to
    curl_easy_setopt(http->curl, CURLOPT_WRITEDATA, NULL);

    if (xferinfo_func)
    {
        /* pass the struct pointer into the xferinfo function */
        curl_easy_setopt(http->curl, CURLOPT_XFERINFOFUNCTION, xferinfo_func);
        curl_easy_setopt(http->curl, CURLOPT_XFERINFODATA, NULL);
        curl_easy_setopt(http->curl, CURLOPT_NOPROGRESS, 0L);
    }

    // Perform the request
    res = curl_easy_perform(http->curl);

    if(res != CURLE_OK)
    {
        LOG("curl_easy_perform() failed: %s", curl_easy_strerror(res));
        return 0;
    }

    return 1;
}

void pkgi_http_close(pkgi_http* http)
{
    LOG("http close");
    curl_easy_cleanup(http->curl);

    http->used = 0;
}



Текущее время: 14:59. Часовой пояс GMT +3.

Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2024, vBulletin Solutions, Inc. Перевод: zCarot
PSPx Forum - Сообщество фанатов игровых консолей.