forked from proxmox-mirrors/proxmox
notify: gotify: add proxy support
The proxy configuration will be read from datacenter.cfg via a new method of the `Context` trait. Signed-off-by: Lukas Wagner <l.wagner@proxmox.com>
This commit is contained in:
parent
da2e7b8da9
commit
d44ce2c70d
@ -5,6 +5,7 @@ pub trait Context: Send + Sync + Debug {
|
|||||||
fn lookup_email_for_user(&self, user: &str) -> Option<String>;
|
fn lookup_email_for_user(&self, user: &str) -> Option<String>;
|
||||||
fn default_sendmail_author(&self) -> String;
|
fn default_sendmail_author(&self) -> String;
|
||||||
fn default_sendmail_from(&self) -> String;
|
fn default_sendmail_from(&self) -> String;
|
||||||
|
fn http_proxy_config(&self) -> Option<String>;
|
||||||
}
|
}
|
||||||
|
|
||||||
static CONTEXT: OnceCell<&'static dyn Context> = OnceCell::new();
|
static CONTEXT: OnceCell<&'static dyn Context> = OnceCell::new();
|
||||||
|
@ -8,8 +8,9 @@ use proxmox_schema::api_types::COMMENT_SCHEMA;
|
|||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
use serde_json::json;
|
use serde_json::json;
|
||||||
|
|
||||||
|
use crate::context::context;
|
||||||
use proxmox_http::client::sync::Client;
|
use proxmox_http::client::sync::Client;
|
||||||
use proxmox_http::{HttpClient, HttpOptions};
|
use proxmox_http::{HttpClient, HttpOptions, ProxyConfig};
|
||||||
use proxmox_schema::{api, Updater};
|
use proxmox_schema::{api, Updater};
|
||||||
|
|
||||||
fn severity_to_priority(level: Severity) -> u32 {
|
fn severity_to_priority(level: Severity) -> u32 {
|
||||||
@ -84,11 +85,6 @@ pub enum DeleteableGotifyProperty {
|
|||||||
|
|
||||||
impl Endpoint for GotifyEndpoint {
|
impl Endpoint for GotifyEndpoint {
|
||||||
fn send(&self, notification: &Notification) -> Result<(), Error> {
|
fn send(&self, notification: &Notification) -> Result<(), Error> {
|
||||||
// TODO: What about proxy configuration?
|
|
||||||
let client = Client::new(HttpOptions::default());
|
|
||||||
|
|
||||||
let uri = format!("{}/message", self.config.server);
|
|
||||||
|
|
||||||
let properties = notification.properties.as_ref();
|
let properties = notification.properties.as_ref();
|
||||||
|
|
||||||
let title = renderer::render_template(
|
let title = renderer::render_template(
|
||||||
@ -121,6 +117,20 @@ impl Endpoint for GotifyEndpoint {
|
|||||||
format!("Bearer {}", self.private_config.token),
|
format!("Bearer {}", self.private_config.token),
|
||||||
)]);
|
)]);
|
||||||
|
|
||||||
|
let proxy_config = context()
|
||||||
|
.http_proxy_config()
|
||||||
|
.map(|url| ProxyConfig::parse_proxy_url(&url))
|
||||||
|
.transpose()
|
||||||
|
.map_err(|err| Error::NotifyFailed(self.name().to_string(), err.into()))?;
|
||||||
|
|
||||||
|
let options = HttpOptions {
|
||||||
|
proxy_config,
|
||||||
|
..Default::default()
|
||||||
|
};
|
||||||
|
|
||||||
|
let client = Client::new(options);
|
||||||
|
let uri = format!("{}/message", self.config.server);
|
||||||
|
|
||||||
client
|
client
|
||||||
.post(
|
.post(
|
||||||
&uri,
|
&uri,
|
||||||
|
Loading…
Reference in New Issue
Block a user