Skip to content

Commit f1d9600

Browse files
Check for verification token in kofi endpoint
1 parent 16c577b commit f1d9600

File tree

5 files changed

+27
-4
lines changed

5 files changed

+27
-4
lines changed

build.gradle.kts

-1
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@ dependencies {
2626

2727
// Download api
2828
implementation("de.chojo", "nexus-api-wrapper", "1.0.5")
29-
implementation("com.fasterxml.jackson.datatype:jackson-datatype-jsr310:*")
3029

3130
// Mailing
3231
implementation("org.eclipse.angus", "angus-mail", "2.0.2")

src/main/java/de/chojo/lyna/api/v1/V1.java

+6-2
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
package de.chojo.lyna.api.v1;
22

3+
import de.chojo.jdautil.configuratino.Configuration;
34
import de.chojo.lyna.api.Api;
45
import de.chojo.lyna.api.v1.download.Download;
56
import de.chojo.lyna.api.v1.kofi.KoFiApi;
67
import de.chojo.lyna.api.v1.update.Update;
8+
import de.chojo.lyna.configuration.ConfigFile;
79
import de.chojo.lyna.data.access.KoFiProducts;
810
import de.chojo.lyna.data.access.Products;
911
import de.chojo.lyna.mail.MailingService;
@@ -14,12 +16,10 @@ public class V1 {
1416
private final Download download;
1517
private final Update update;
1618
private final Api api;
17-
private final KoFiProducts koFiProducts;
1819
private final KoFiApi kofi;
1920

2021
public V1(Api api, Products products, MailingService mailingService, KoFiProducts koFiProducts) {
2122
this.api = api;
22-
this.koFiProducts = koFiProducts;
2323
download = new Download(this);
2424
update = new Update(this, products);
2525
kofi = new KoFiApi(this, koFiProducts, mailingService);
@@ -40,4 +40,8 @@ public Api api() {
4040
public Download download() {
4141
return download;
4242
}
43+
44+
public Configuration<ConfigFile> configuration() {
45+
return api.configuration();
46+
}
4347
}

src/main/java/de/chojo/lyna/api/v1/kofi/KoFiApi.java

+5-1
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,10 @@ public void init() {
4545
var results = Urls.splitQuery(ctx.body());
4646
var json = results.get("data");
4747
var post = mapper.readValue(json, KofiPost.class);
48+
if (!post.verificationToken().equals(v1.configuration().config().kofi().verificationToken())) {
49+
ctx.status(HttpCode.FORBIDDEN);
50+
return;
51+
}
4852
if (post.type() == DataType.SHOP_ORDER) {
4953
for (ShopItem shopItem : post.shopItems()) {
5054
Optional<Product> optProduct = kofi.byCode(shopItem.directLinkCode());
@@ -55,7 +59,7 @@ public void init() {
5559
if (optProductMail.isEmpty()) continue;
5660
Mailing productMail = optProductMail.get();
5761
Optional<License> license = product.createLicense("kofi:%s".formatted(post.email()));
58-
if(license.isEmpty()) continue;
62+
if (license.isEmpty()) continue;
5963
var mail = MailCreator.createLicenseMessage(productMail, license.get().key(), post.from(), post.email());
6064
mailing.sendMail(mail);
6165
}

src/main/java/de/chojo/lyna/configuration/ConfigFile.java

+5
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import de.chojo.lyna.configuration.elements.Api;
44
import de.chojo.lyna.configuration.elements.BaseSettings;
55
import de.chojo.lyna.configuration.elements.Database;
6+
import de.chojo.lyna.configuration.elements.Kofi;
67
import de.chojo.lyna.configuration.elements.License;
78
import de.chojo.lyna.configuration.elements.Links;
89
import de.chojo.lyna.configuration.elements.Mailing;
@@ -17,6 +18,7 @@ public class ConfigFile {
1718
private Nexus nexus = new Nexus();
1819
private Api api = new Api();
1920
private Mailing mailing = new Mailing();
21+
private Kofi kofi = new Kofi();
2022

2123
public BaseSettings baseSettings() {
2224
return baseSettings;
@@ -44,4 +46,7 @@ public Api api() {
4446
public Mailing mailing() {
4547
return mailing;
4648
}
49+
public Kofi kofi() {
50+
return kofi;
51+
}
4752
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package de.chojo.lyna.configuration.elements;
2+
3+
import java.util.UUID;
4+
5+
public class Kofi {
6+
private UUID verificationToken = UUID.randomUUID();
7+
8+
public UUID verificationToken() {
9+
return verificationToken;
10+
}
11+
}

0 commit comments

Comments
 (0)