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 default_sendmail_author(&self) -> String;
|
||||
fn default_sendmail_from(&self) -> String;
|
||||
fn http_proxy_config(&self) -> Option<String>;
|
||||
}
|
||||
|
||||
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_json::json;
|
||||
|
||||
use crate::context::context;
|
||||
use proxmox_http::client::sync::Client;
|
||||
use proxmox_http::{HttpClient, HttpOptions};
|
||||
use proxmox_http::{HttpClient, HttpOptions, ProxyConfig};
|
||||
use proxmox_schema::{api, Updater};
|
||||
|
||||
fn severity_to_priority(level: Severity) -> u32 {
|
||||
@ -84,11 +85,6 @@ pub enum DeleteableGotifyProperty {
|
||||
|
||||
impl Endpoint for GotifyEndpoint {
|
||||
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 title = renderer::render_template(
|
||||
@ -121,6 +117,20 @@ impl Endpoint for GotifyEndpoint {
|
||||
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
|
||||
.post(
|
||||
&uri,
|
||||
|
Loading…
Reference in New Issue
Block a user