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)

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;
}



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

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