gRIP + Mailgun (curl --user argument)

Статус
В этой теме нельзя размещать новые ответы.
Сообщения
1,175
Реакции
2,144
Помог
57 раз(а)
Приветствую. Имею задачу отправлять письма при помощи amxx-модуля gRIP через API сервиса mailgun.com. Проблема в том, что я не понимаю, как передать API-ключ. Пример для curl выглядит так
20765

Т.е. используется аргумент --user, который в curl --help описан как "Server user and password"

Пример для API iphub.info, который используется в модуле для Bypass Guard
20766

-H в curl --help описан как "Custom header line", и собственно, как его передать я уже знаю
20767

fantom не подскажешь решение? не знаю к кому ещё можно обратиться по вопросу gRIP
 
Сообщения
2,491
Реакции
2,790
Помог
61 раз(а)
BlackSignature, https://documentation.mailgun.com/en/latest/api-intro.html#authentication
Попробуй такой вариант.
Ну и если не прокатит, тогда вот это https://developer.mozilla.org/ru/docs/Web/HTTP/Авторизация
Тебе нужно отправить заголовок Authorization: Basic BASE64
Где BASE64 это base64(user:password)
Где юзер - api, а пароль твой секретный ключ.

И если это не прокатит, тогда пробуй другие типы описанные в спеке
12 Фев 2020
X-* это кастомные заголовки как правило. В гмх использован именно такой, ибо на одном из шаредов хост резал стандартный Authorization. Тебе он не нужен
 
Сообщения
2,713
Реакции
2,993
Помог
59 раз(а)
Код:
grip_options_add_header(options, "Authorization", "Basic gaywhagq5agahw32hhw6w7qh ");
 
Последнее редактирование:
Сообщения
1,175
Реакции
2,144
Помог
57 раз(а)
Решено, спасибо fantom и wopox1337

Если кому интересно, API-ключ надо передавать в заголовке Authorization, тип Basic, т.е. связку api:КЛЮЧ надо закодировать в BASE64 (см. два поста выше).

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

Код:
L 02/12/2020 - 03:13:56: [grip_mailgun_test.amxx] Response state: 3
L 02/12/2020 - 03:13:56: [grip_mailgun_test.amxx] HTTP status: 200
L 02/12/2020 - 03:13:56: [grip_mailgun_test.amxx] Response body: {
  "id": "<[email protected]>",
  "message": "Queued. Thank you."
}
Код:
#include <amxmodx>
#include <grip>

#define chx charsmax

#define MAX_RESPONSE_LEN 256

public plugin_init() {
    register_plugin("Grip+Mailgun Test", "0.1", "mx?!")

    register_srvcmd("grip", "srvcmd_grip")
}

public srvcmd_grip() {
    new const szURL[] =
        "https://api.eu.mailgun.net/v3/ДОМЕН/messages?from=АДРЕСАТ@ДОМЕН&to=ПОЛУЧАТЕЛЬ@ДОМЕН&subject=Hello World&text=Test Message"

    new GripRequestOptions:hRequestOptions = grip_create_default_options(.timeout = -1.0)

    grip_options_add_header(hRequestOptions, "Authorization", "Basic ЗДЕСЬ_API:КЛЮЧ_КОДИРОВАННЫЕ_В_BASE64")

    grip_request(szURL, Empty_GripBody, GripRequestTypePost, "OnRequestComplete", hRequestOptions)

    grip_destroy_options(hRequestOptions)
}

public OnRequestComplete() {
    new szBuffer[MAX_RESPONSE_LEN]

    new GripResponseState:iResponseState = grip_get_response_state()

    log_amx( fmt("Response state: %i", iResponseState) )

    if(iResponseState != GripResponseStateSuccessful) {
        if(iResponseState == GripResponseStateError && grip_get_error_description(szBuffer, chx(szBuffer))) {
            log_amx( fmt("[ERR] %s", szBuffer) )
        }

        return
    }

    new GripHTTPStatus:iHttpStatus = grip_get_response_status_code()

    log_amx( fmt("HTTP status: %i", iHttpStatus) )

    if(grip_get_response_body_string(szBuffer, chx(szBuffer))) {
        log_amx( fmt("Response body: %s", szBuffer) )
    }
}
 

Вложения

Последнее редактирование:
Статус
В этой теме нельзя размещать новые ответы.

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу