feat(webhooks): verify that url is accessible before saving it
This commit is contained in:
parent
0a244eb9b5
commit
ece17f7470
@ -1,3 +1,4 @@
|
|||||||
|
using System;
|
||||||
using System.Text.RegularExpressions;
|
using System.Text.RegularExpressions;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
@ -126,6 +127,15 @@ namespace PluralKit.Bot
|
|||||||
if (_webhookRegex.IsMatch(newUrl))
|
if (_webhookRegex.IsMatch(newUrl))
|
||||||
throw new PKError("PluralKit does not currently support setting a Discord webhook URL as your system's webhook URL.");
|
throw new PKError("PluralKit does not currently support setting a Discord webhook URL as your system's webhook URL.");
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
await _dispatch.DoPostRequest(ctx.System.Id, newUrl, null, true);
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
throw new PKError($"Could not verify that the new URL is working: {e.Message}");
|
||||||
|
}
|
||||||
|
|
||||||
var newToken = StringUtils.GenerateToken();
|
var newToken = StringUtils.GenerateToken();
|
||||||
|
|
||||||
await _repo.UpdateSystem(ctx.System.Id, new()
|
await _repo.UpdateSystem(ctx.System.Id, new()
|
||||||
|
@ -21,7 +21,7 @@ namespace PluralKit.Core
|
|||||||
_provider = provider;
|
_provider = provider;
|
||||||
}
|
}
|
||||||
|
|
||||||
private async Task DoPostRequest(SystemId system, string webhookUrl, HttpContent content)
|
public async Task DoPostRequest(SystemId system, string webhookUrl, HttpContent content, bool isVerify = false)
|
||||||
{
|
{
|
||||||
if (!await DispatchExt.ValidateUri(webhookUrl))
|
if (!await DispatchExt.ValidateUri(webhookUrl))
|
||||||
{
|
{
|
||||||
@ -35,7 +35,10 @@ namespace PluralKit.Core
|
|||||||
}
|
}
|
||||||
catch (HttpRequestException e)
|
catch (HttpRequestException e)
|
||||||
{
|
{
|
||||||
_logger.Error("Could not dispatch webhook request!", e);
|
if (isVerify)
|
||||||
|
throw;
|
||||||
|
else
|
||||||
|
_logger.Error("Could not dispatch webhook request!", e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user