Skip to content

Commit

Permalink
Initial commit
Browse files Browse the repository at this point in the history
  • Loading branch information
Maximvdw committed Aug 5, 2017
0 parents commit 984a571
Show file tree
Hide file tree
Showing 32 changed files with 6,045 additions and 0 deletions.
190 changes: 190 additions & 0 deletions pom.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,190 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>be.maximvdw</groupId>
<artifactId>SpigotBuyerCheck</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging>

<repositories>
<repository>
<id>public</id>
<name>Public Repositories</name>
<url>http://repo.mvdw-software.be/content/groups/public/</url>
</repository>
</repositories>

<properties>
<spring.version>4.2.5.RELEASE</spring.version>
</properties>
<build>
<sourceDirectory>${basedir}/src/main/java</sourceDirectory>
<resources>
<resource>
<directory>${basedir}/src/main/resources</directory>
<excludes>
<exclude>**/*.java</exclude>
</excludes>
</resource>
</resources>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.3</version>
<configuration>
<!--<packagingExcludes>WEB-INF/lib/jstl*.jar</packagingExcludes>-->
<warSourceDirectory>src/webapp</warSourceDirectory>
<failOnMissingWebXml>false</failOnMissingWebXml>
<webResources>
<resource>
<directory>${basedir}</directory>
<excludes>
<exclude>src/**</exclude>
<exclude>build/**</exclude>
<exclude>.settings/**</exclude>
<exclude>.project</exclude>
<exclude>.classpath</exclude>
<exclude>WEB-INF/lib/**</exclude>
<exclude>target/**</exclude>
<exclude>ivy.xml</exclude>
<exclude>ivysettings.xml</exclude>
<exclude>pom.xml</exclude>
<exclude>.idea/**</exclude>
</excludes>
</resource>
</webResources>
</configuration>
</plugin>
</plugins>
</build>

<dependencies>
<!-- Spring 3 dependencies -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.yaml</groupId>
<artifactId>snakeyaml</artifactId>
<version>1.17</version>
</dependency>
<dependency>
<artifactId>commons-logging</artifactId>
<groupId>commons-logging</groupId>
<version>1.0</version>
</dependency>
<dependency>
<groupId>javax.json</groupId>
<artifactId>javax.json-api</artifactId>
<version>1.0</version>
</dependency>
<dependency>
<groupId>org.glassfish</groupId>
<artifactId>javax.json</artifactId>
<version>1.0.4</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4.7</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.6.4</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
<version>1.6.4</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.6.4</version>
</dependency>
<dependency>
<groupId>be.maximvdw</groupId>
<artifactId>spigotsite</artifactId>
<version>0.0.24-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>be.maximvdw</groupId>
<artifactId>spigotsite-api</artifactId>
<version>0.0.14-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.gargoylesoftware</groupId>
<artifactId>HTMLUnit</artifactId>
<version>2.15</version>
<classifier>OSGi</classifier>
</dependency>
<dependency>
<groupId>com.paypal.sdk</groupId>
<artifactId>rest-api-sdk</artifactId>
<version>LATEST</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.openejb</groupId>
<artifactId>javaee-api</artifactId>
<version>6.0-5</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>5.1.0.Final</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.persistence</groupId>
<artifactId>persistence-api</artifactId>
<version>1.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.ejb</groupId>
<artifactId>ejb-api</artifactId>
<version>3.0</version>
<scope>provided</scope>
</dependency>
</dependencies>

</project>
19 changes: 19 additions & 0 deletions src/main/java/be/maximvdw/spigotbuyercheck/SpigotSiteServer.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package be.maximvdw.spigotbuyercheck;

import java.util.List;

/**
* Created by maxim on 19-Dec-16.
*/
public interface SpigotSiteServer {

boolean isReady();

boolean hasError();

boolean isValidUser(String username);

boolean isInBuyers(String pluginName, String username);

List<String> isInBuyersForPlugins(String username);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,150 @@
package be.maximvdw.spigotbuyercheck.beans;

import be.maximvdw.spigotbuyercheck.SpigotSiteServer;
import be.maximvdw.spigotbuyercheck.config.Configuration;
import be.maximvdw.spigotbuyercheck.schedulers.SchedulerManager;
import be.maximvdw.spigotsite.SpigotSiteCore;
import be.maximvdw.spigotsite.api.SpigotSite;
import be.maximvdw.spigotsite.api.exceptions.ConnectionFailedException;
import be.maximvdw.spigotsite.api.resource.PremiumResource;
import be.maximvdw.spigotsite.api.resource.Resource;
import be.maximvdw.spigotsite.api.resource.ResourceManager;
import be.maximvdw.spigotsite.api.user.User;
import be.maximvdw.spigotsite.api.user.exceptions.InvalidCredentialsException;
import be.maximvdw.spigotsite.api.user.exceptions.TwoFactorAuthenticationException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import javax.annotation.PostConstruct;
import javax.ejb.Remote;
import javax.ejb.Singleton;
import javax.ejb.Startup;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.TimeUnit;

/**
* SpigotSiteServerBean
* <p>
* Created by maxim on 19-Dec-16.
*/
@Startup
@Remote(SpigotSiteServer.class)
@Singleton(mappedName = "SpigotSiteServer")
public class SpigotSiteServerBean implements SpigotSiteServer {
// Logging
private final Logger logger = LoggerFactory.getLogger(SpigotSiteServerBean.class);
private boolean initialized = false;
private Map<String, ArrayList<String>> buyers = new ConcurrentHashMap<>();

private User pluginAuthor = null;
private boolean error = false;
private BuyerFetchTask buyerFetchTask = new BuyerFetchTask();

private List<PremiumResource> resources = new ArrayList<>();

@PostConstruct
public void init() throws ConnectionFailedException {
new SpigotSiteCore();
new Configuration("SpigotBuyerCheck", 1); // Version 1

String username = Configuration.getString("username");
String password = Configuration.getString("password");
String totpSecret = Configuration.getString("2fakey");

logger.info("Logging in " + username + " ...");
try {
pluginAuthor = SpigotSite.getAPI().getUserManager()
.authenticate(username, password, totpSecret);
} catch (InvalidCredentialsException e) {
logger.info("Unable to log in! Wrong credentials!");
setError(true);
return;
} catch (TwoFactorAuthenticationException e) {
logger.info("Unable to log in! Two factor authentication failed!");
setError(true);
return;
} catch (Exception e) {
logger.error("Something went wrong!", e);
setError(true);
return;
}
ResourceManager resourceManager = SpigotSite.getAPI().getResourceManager();
List<Resource> allResources = resourceManager.getResourcesByUser(pluginAuthor);
for (Resource resource : allResources) {
if (resource instanceof PremiumResource) {
resources.add((PremiumResource) resource);
}
}
SchedulerManager.createAsyncTask(buyerFetchTask, 30, TimeUnit.MINUTES);
}

@Override
public boolean isReady() {
return initialized;
}

@Override
public boolean isValidUser(String username) {
User u = SpigotSite.getAPI().getUserManager().getUserByName(username);
return u != null;
}

@Override
public boolean isInBuyers(String pluginName, String username) {
ArrayList<String> usernames = buyers.get(pluginName);
if (usernames.contains(username.toLowerCase())) {
return true;
}
return false;
}

@Override
public List<String> isInBuyersForPlugins(String username) {
List<String> plugins = new ArrayList<>();
for (Resource resource : resources) {
ArrayList<String> usernames = buyers.get(resource.getResourceName());
if (usernames.contains(username.toLowerCase())) {
plugins.add(resource.getResourceName());
}
}
return plugins;
}

public boolean hasError() {
return error;
}

public void setError(boolean error) {
this.error = error;
}

public class BuyerFetchTask implements Runnable {

@Override
public void run() {
try {
ResourceManager resourceManager = SpigotSite.getAPI().getResourceManager();
logger.info("Refreshing buyers list ...");
for (PremiumResource resource : resources) {
logger.info("Loading buyers from: " + resource.getResourceName() + "...");
try {
List<User> users = resourceManager.getPremiumResourceBuyers(resource, pluginAuthor);
ArrayList<String> usernames = new ArrayList<String>();
for (User u : users) {
usernames.add(u.getUsername().toLowerCase());
}
buyers.put(resource.getResourceName(), usernames);
} catch (ConnectionFailedException e) {
logger.error("Unable to load buyers ...", e);
}
}
initialized = true;
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
}
Loading

0 comments on commit 984a571

Please sign in to comment.