Перейти к содержанию

Desti

Актив
  • Постов

    2089
  • Зарегистрирован

  • Посещение

  • Победитель дней

    130

Сообщения, опубликованные Desti

  1. Не, не то. Собака порылась в другом похожем месте:

    Найти надо в таблицу скрипт ips.core.commentFeed.js (location - front) , в нем закомментить строчку с animate

    	// Get top postition of feed
    		var elemPosition = ips.utils.position.getElemPosition( this.scope );
    		/*$('html, body').animate( { scrollTop: elemPosition.absPos.top + 'px' } );*/

    Но за наводку спасибо, победил.

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

  2. 5 минут назад, siv1987 сказал:

    отключить Rewrite URL's на форуме, получить  ключ

    не работает этот путь. Что с включенным, что с выключенным, не пропускает дальше красной надписи. Лезть в кишочки лень,  заработало и хорошо.  Этот реврайт вообще кривой, как и весь ipb, у меня два идентичных сервера, на одном админка кажет красную надпись "реврайт не работает, звони бородатому админу", на другом не пишет. Конфиги идентичны вплоть до комментов :)

    6 минут назад, siv1987 сказал:

    Если ключ передается обычным get параметром как в этом примере, конфигурировать как-то nginx не требуется.

    Но это небезопасно. А конфигурировать в любом случае придется, локации /api/ по умолчанию нет. Не надо будет ставить auth - да. 

  3. Совсем забыл..

    Чтобы получилось совсем по феншую, надо передавать в параметрах авторизации не произвольное имя, а ключ API. То есть:

    $ htpassdw /home/htpasswd <ваш ключ API>
    Вводим пароль, который будем использовать, чтобы всякие хацкеры не лазили.

    В поле авторизации вводим ключ, пароль и сразу попадаем в нужное место уже без ключа. 
    Ну или в своем коде делаем запрос в виде 

    $key="ваш api ключ";
    $pass = "1234rrr";
    
    var_dump(
    	\IPS\Http\Url::external( $url . "api/core/hello" )->request()->login( $key, "" )->get()->decodeJson()
    	);

     

    Вместо кавычек - $pass.

    айте мне уже право на редактирование )

  4. Идем в файл applications/core/modules/admin/applications/api.php

    Находим 

            catch ( \Exception $e )
            {
                \IPS\Output::i()->title = \IPS\Member::loggedIn()->language()->addToStack('menu__core_applications_api');
                \IPS\Output::i()->output = \IPS\Theme::i()->getTemplate( 'api' )->htaccess( isset( \IPS\Request::i()->recheck ), $url );
                return;
            }

    и комментируем return; После этого грязнейшего хака попадаем в возможность настроить ключи. 

    Идем в конфиг nginx и в блок server{} своего форума добавляем

            location /api/ {
                    auth_basic "auth";
                    auth_basic_user_file /home/htpasswd;
                    index index.php;
                    try_files $uri $uri/ /api/index.php?$args;
            }

    Затем, используя утилиту htpasswd из apache2-utils (apt-get install apache2-utils) создаем пароль для ограничения доступа.

    $ htpassdw /home/htpasswd username

    Вводим пароль, создается файл паролей. Перегружаем nginx.

    Всё, идем в ACP -> Rest api, создаем ключ, открываем браузер, вводим //site/api/core/hello?key=<ваш API ключ>, наслаждаемся результатом.
    У меня получилось, чего и вам желаю.

    Вот правильный ответ сервера на команду hello:

    {
        "communityName": "Invision Community",
        "communityUrl": "http:\/\/dev.microsoft.ru\/",
        "ipsVersion": "4.3.6"
    }

     

  5. 11 минут назад, siv1987 сказал:

    Не совсем понимаю что значит "локация с авторизацией",

    ну как бы 

    RewriteRule .* index.php [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L]

    А это означает, что используется встроенная серверная HTTP авторизация.  Я пока не разобрался до конца.

×
×
  • Создать...