blob: 990abc95c820d43efcd9080c505346ad0f692b5a (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
namespace ShareGuard.Web;
public static class Api
{
private const string TemplateFilePath = "./wg-quick-template.txt";
public static async Task Redeem(HttpContext context)
{
await using var db = new Database();
var link = db.Links.FirstOrDefault(link => link.Token == context.Request.RouteValues["token"]!.ToString()
&& link.PeerPublicKey == null);
if (link == null)
{
context.Response.StatusCode = StatusCodes.Status403Forbidden;
await context.Response.WriteAsync("Invalid token.");
return;
}
var form = await context.Request.ReadFormAsync();
var peerPublicKey = form["PublicKey"];
if (peerPublicKey.Count < 1)
{
context.Response.StatusCode = StatusCodes.Status400BadRequest;
await context.Response.WriteAsync("Bad request.");
return;
}
link.PeerPublicKey = peerPublicKey[0];
if (!File.Exists(TemplateFilePath))
{
context.Response.StatusCode = StatusCodes.Status204NoContent;
await context.Response.WriteAsync("Template is not set yet.");
return;
}
db.SaveChanges();
await context.Response.WriteAsync(File.ReadAllText(TemplateFilePath).Replace("{ip}", link.IpAddress));
}
}
|