Skip to content

Commit

Permalink
Begin work on Enterprise
Browse files Browse the repository at this point in the history
AntiCheat Enterprise is a powerful new system to allow owners of large servers to efficiently run the plugin on their networks. I've ended the commit here because there are significant changes to the configuration methods I'd like to revise before continuing with development.
  • Loading branch information
gravitylow committed Sep 21, 2013
1 parent 045ac99 commit 1e42d58
Show file tree
Hide file tree
Showing 5 changed files with 113 additions and 2 deletions.
2 changes: 1 addition & 1 deletion src/main/java/net/h31ix/anticheat/Anticheat.java
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,7 @@ public void onDisable() {
cleanup();
}

private boolean save(InputStream in, File file) {
public boolean save(InputStream in, File file) {
if (!file.exists()) {
file.getParentFile().mkdirs();
try {
Expand Down
23 changes: 23 additions & 0 deletions src/main/java/net/h31ix/anticheat/util/Configuration.java
Original file line number Diff line number Diff line change
Expand Up @@ -36,15 +36,20 @@
public class Configuration {
private AnticheatManager micromanage = null;
private Anticheat plugin;

private File configFile = null;
private File levelFile = null;
private File langFile = null;
private File magicFile = null;
private File eventsFile = null;
private File enterpriseFile = null;

private CommentedConfiguration config;
private FileConfiguration level;
private FileConfiguration magic;
private FileConfiguration events;
private FileConfiguration enterprise;

private boolean logConsole;
private boolean logXRay;
private boolean alertXRay;
Expand All @@ -56,6 +61,8 @@ public class Configuration {
private boolean opExempt;
private boolean trackCreativeXRay;
private boolean eventChains;
private boolean isEnterprise;

private int fileLogLevel = 0;
private String updateFolder;
private String chatActionKick;
Expand All @@ -76,6 +83,7 @@ public Configuration(Anticheat plugin, AnticheatManager instance) {
langFile = new File(micromanage.getPlugin().getDataFolder() + "/lang.yml");
magicFile = new File(micromanage.getPlugin().getDataFolder() + "/magic.yml");
eventsFile = new File(micromanage.getPlugin().getDataFolder() + "/events.yml");
enterpriseFile = new File(micromanage.getPlugin().getDataFolder() + "/enterprise.yml");

//
language = new Language(YamlConfiguration.loadConfiguration(langFile), langFile);
Expand All @@ -87,6 +95,9 @@ private void save() {
events.save(eventsFile);
level.save(levelFile);
magic.save(magicFile);
if(isEnterprise) {
enterprise.save(enterpriseFile);
}
} catch (IOException ex) {
Logger.getLogger(Configuration.class.getName()).severe(ex.getMessage());
}
Expand Down Expand Up @@ -139,6 +150,10 @@ public boolean trackCreativeXRay() {
public boolean eventChains() {
return eventChains;
}

public boolean enterprise() {
return isEnterprise;
}

public String chatActionKick() {
return chatActionKick;
Expand Down Expand Up @@ -282,6 +297,7 @@ public final void load() {
opExempt = getBoolean("System.Exempt op", false);
trackCreativeXRay = getBoolean("XRay.Track creative", true);
eventChains = getBoolean("System.Event Chains", true);
isEnterprise = getBoolean("System.Enterprise", false);
chatActionKick = getString("Chat.Kick Action", "KICK");
chatActionBan = getString("Chat.Ban Action", "BAN");
chatSpam = getBoolean("Chat.Block chat spam", true);
Expand Down Expand Up @@ -335,6 +351,13 @@ public final void load() {
version = magic.getString("VERSION");
}

if(isEnterprise) {
if(!enterpriseFile.exists()) {
micromanage.getPlugin().save(micromanage.getPlugin().getResource("enterprise.yml"), enterpriseFile);
}
enterprise = YamlConfiguration.loadConfiguration(enterpriseFile);
}

save();
magicInstance = new Magic(getMagic(), this, CommentedConfiguration.loadConfiguration(micromanage.getPlugin().getResource("magic.yml")), Double.parseDouble(version));
if(micromanage.getBackend() != null) { // If this is first run, backend may not be setup yet (this is for reloads)
Expand Down
44 changes: 44 additions & 0 deletions src/main/java/net/h31ix/anticheat/util/enterprise/Database.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
/*
* AntiCheat for Bukkit.
* Copyright (C) 2012-2013 AntiCheat Team | http://gravitydevelopment.net
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/

package net.h31ix.anticheat.util.enterprise;

public class Database {

public enum DatabaseType {
MYSQL,
}

private DatabaseType type;
private String hostname;
private int port;
private String username;
private String password;
private String schema;
private String prefix;

public Database(DatabaseType type, String hostname, int port, String username, String password, String schema, String prefix) {
this.type = type;
this.hostname = hostname;
this.port = port;
this.username = username;
this.password = password;
this.schema = schema;
this.prefix = prefix;
}
}
4 changes: 3 additions & 1 deletion src/main/resources/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -31,4 +31,6 @@ System:
# Should ops be exempt from all checks?
Exempt op: false
# Should AntiCheat track plugins in its own registered events?
Event Chains: true
Event Chains: true
# Should Enterprise options be enabled? Only set this to true if you're an advanced user.
Enterprise: false
42 changes: 42 additions & 0 deletions src/main/resources/enterprise.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
# AntiCheat configuration file
# Please report any bugs: http://dev.bukkit.org/server-mods/anticheat/

# Server-specific settings
server:
# An identifiable name for this server
name: 'server-1'

# Database settings
database:
# Type of database.
type: MySQL

# Address of the server
hostname: ''

# Port of the server
port: 3306

# Username to connect with
username: ''

# Password for the user
password: ''

# Prefix for the tables
prefix: 'ac_'

# Database/Schema to use
database: 'minecraft'

logging:
# Keep events in the database?
enable: true
# Time for actions logged to stay in the database (in days)
life: 2

users:
# Synchronize user's levels in the database?
enable: true
# How often to query the databse for synchronization? (in seconds)
interval: 60

1 comment on commit 1e42d58

@drtshock
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can't wait to see where this goes :)

Please sign in to comment.