Merge pull request #2 from Xephi/master

Syncing
This commit is contained in:
Maxetto 2015-07-05 20:55:06 +02:00
commit 86d41294a7
10 changed files with 188 additions and 186 deletions

View File

@ -9,3 +9,11 @@ cache:
script: script:
- mvn clean install -B && mvn clean -B - mvn clean install -B && mvn clean -B
notifications:
webhooks:
urls:
- https://webhooks.gitter.im/e/952357dbd9d3cea70fd5
on_success: change # options: [always|never|change] default: always
on_failure: always # options: [always|never|change] default: always
on_start: false # default: false

View File

@ -4,6 +4,8 @@
<hr> <hr>
#####Development tools: #####Development tools:
[![Join the chat at https://gitter.im/Xephi/AuthMeReloaded](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/Xephi/AuthMeReloaded?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
- Build status: [![Build Status](https://travis-ci.org/Xephi/AuthMeReloaded.svg?branch=master)](https://travis-ci.org/Xephi/AuthMeReloaded) - Build status: [![Build Status](https://travis-ci.org/Xephi/AuthMeReloaded.svg?branch=master)](https://travis-ci.org/Xephi/AuthMeReloaded)
- Build Server: <a href="http://ci.xephi.fr">Jenkins</a> - Build Server: <a href="http://ci.xephi.fr">Jenkins</a>

70
pom.xml
View File

@ -3,7 +3,7 @@
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 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> <modelVersion>4.0.0</modelVersion>
<groupId>fr.xephi.authme.AuthMe</groupId> <groupId>fr.xephi.authme</groupId>
<artifactId>AuthMe</artifactId> <artifactId>AuthMe</artifactId>
<version>5.0-SNAPSHOT</version> <version>5.0-SNAPSHOT</version>
@ -79,6 +79,29 @@
</archive> </archive>
</configuration> </configuration>
</plugin> </plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.3</version>
<configuration>
<artifactSet>
<includes>
<include>com.maxmind.geoip:*</include>
<include>com.sun.mail:*</include>
<include>javax.mail:*</include>
<include>com.comphenix.attribute:*</include>
</includes>
</artifactSet>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins> </plugins>
</build> </build>
@ -114,12 +137,6 @@
<url>http://repo.minelink.net/content/repositories/public</url> <url>http://repo.minelink.net/content/repositories/public</url>
</repository> </repository>
<!-- CombatTag Repo, Unofficial (needs replacement) UPDATE: this server is OFFLINE
<repository>
<id>techcable-repo</id>
<url>http://repo.techcable.net/content/repositories/snapshots/</url>
</repository> -->
<!-- XAuth Repo --> <!-- XAuth Repo -->
<repository> <repository>
<id>luricos-releases</id> <id>luricos-releases</id>
@ -175,12 +192,7 @@
<dependency> <dependency>
<groupId>com.sun.mail</groupId> <groupId>com.sun.mail</groupId>
<artifactId>javax.mail</artifactId> <artifactId>javax.mail</artifactId>
<version>1.5.3</version> <version>1.5.4</version>
</dependency>
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.5.0-b01</version>
</dependency> </dependency>
<!-- Maxmind GeoIp API --> <!-- Maxmind GeoIp API -->
@ -198,7 +210,7 @@
<version>${bukkitVersion}</version> <version>${bukkitVersion}</version>
</dependency> </dependency>
<!-- Attribute --> <!-- Attribute -->
<dependency> <dependency>
<groupId>com.comphenix.attribute</groupId> <groupId>com.comphenix.attribute</groupId>
<artifactId>AttributeStorage</artifactId> <artifactId>AttributeStorage</artifactId>
@ -212,7 +224,7 @@
<groupId>org.bukkit</groupId> <groupId>org.bukkit</groupId>
<artifactId>craftbukkit</artifactId> <artifactId>craftbukkit</artifactId>
</exclusion> </exclusion>
</exclusions> </exclusions>
</dependency> </dependency>
<!-- Vault, http://dev.bukkit.org/bukkit-plugins/vault/ --> <!-- Vault, http://dev.bukkit.org/bukkit-plugins/vault/ -->
@ -229,7 +241,7 @@
<groupId>org.bukkit</groupId> <groupId>org.bukkit</groupId>
<artifactId>craftbukkit</artifactId> <artifactId>craftbukkit</artifactId>
</exclusion> </exclusion>
</exclusions> </exclusions>
</dependency> </dependency>
<!-- Citizens 2.X, NPC plugin, http://dev.bukkit.org/bukkit-plugins/citizens/ --> <!-- Citizens 2.X, NPC plugin, http://dev.bukkit.org/bukkit-plugins/citizens/ -->
@ -246,7 +258,7 @@
<groupId>org.bukkit</groupId> <groupId>org.bukkit</groupId>
<artifactId>craftbukkit</artifactId> <artifactId>craftbukkit</artifactId>
</exclusion> </exclusion>
</exclusions> </exclusions>
</dependency> </dependency>
<!-- Multi World plugin, http://www.spigotmc.org/resources/multiverse-core.390/ --> <!-- Multi World plugin, http://www.spigotmc.org/resources/multiverse-core.390/ -->
@ -265,7 +277,7 @@
<groupId>org.bukkit</groupId> <groupId>org.bukkit</groupId>
<artifactId>craftbukkit</artifactId> <artifactId>craftbukkit</artifactId>
</exclusion> </exclusion>
</exclusions> </exclusions>
</dependency> </dependency>
<!-- Essentials plugin --> <!-- Essentials plugin -->
@ -282,7 +294,7 @@
<groupId>org.bukkit</groupId> <groupId>org.bukkit</groupId>
<artifactId>craftbukkit</artifactId> <artifactId>craftbukkit</artifactId>
</exclusion> </exclusion>
</exclusions> </exclusions>
</dependency> </dependency>
<!-- Anti PvPLogging plugin, https://github.com/MinelinkNetwork/CombatTagPlus --> <!-- Anti PvPLogging plugin, https://github.com/MinelinkNetwork/CombatTagPlus -->
@ -299,7 +311,7 @@
<groupId>org.bukkit</groupId> <groupId>org.bukkit</groupId>
<artifactId>craftbukkit</artifactId> <artifactId>craftbukkit</artifactId>
</exclusion> </exclusion>
</exclusions> </exclusions>
</dependency> </dependency>
<!-- Anti PvPLogging plugin, http://www.spigotmc.org/resources/combat-tag.3182/ --> <!-- Anti PvPLogging plugin, http://www.spigotmc.org/resources/combat-tag.3182/ -->
@ -316,7 +328,7 @@
<groupId>org.bukkit</groupId> <groupId>org.bukkit</groupId>
<artifactId>craftbukkit</artifactId> <artifactId>craftbukkit</artifactId>
</exclusion> </exclusion>
</exclusions> </exclusions>
</dependency> </dependency>
<!-- XAuth, another authentication plugin, required by the database converter --> <!-- XAuth, another authentication plugin, required by the database converter -->
@ -333,7 +345,7 @@
<groupId>org.bukkit</groupId> <groupId>org.bukkit</groupId>
<artifactId>craftbukkit</artifactId> <artifactId>craftbukkit</artifactId>
</exclusion> </exclusion>
</exclusions> </exclusions>
</dependency> </dependency>
<!-- Spout API, https://spoutcraft.org/downloads/ --> <!-- Spout API, https://spoutcraft.org/downloads/ -->
@ -350,11 +362,11 @@
<groupId>org.bukkit</groupId> <groupId>org.bukkit</groupId>
<artifactId>craftbukkit</artifactId> <artifactId>craftbukkit</artifactId>
</exclusion> </exclusion>
</exclusions> </exclusions>
</dependency> </dependency>
<!-- Local Dependencies --> <!-- Local Dependencies -->
<!-- It doesn't have a Maven Repo, http://dev.bukkit.org/bukkit-plugins/chestshop/ --> <!-- It doesn't have a Maven Repo, http://dev.bukkit.org/bukkit-plugins/chestshop/ -->
<dependency> <dependency>
<groupId>com.Acrobot</groupId> <groupId>com.Acrobot</groupId>
@ -362,16 +374,6 @@
<version>3.8.10</version> <version>3.8.10</version>
<scope>system</scope> <scope>system</scope>
<systemPath>${project.basedir}/libs/ChestShop.jar</systemPath> <systemPath>${project.basedir}/libs/ChestShop.jar</systemPath>
<exclusions>
<exclusion>
<groupId>org.bukkit</groupId>
<artifactId>bukkit</artifactId>
</exclusion>
<exclusion>
<groupId>org.bukkit</groupId>
<artifactId>craftbukkit</artifactId>
</exclusion>
</exclusions>
</dependency> </dependency>
<!-- Citizens 1.X (No API) --> <!-- Citizens 1.X (No API) -->

View File

@ -6,7 +6,6 @@ import java.util.Properties;
import javax.mail.BodyPart; import javax.mail.BodyPart;
import javax.mail.Message; import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart; import javax.mail.Multipart;
import javax.mail.Session; import javax.mail.Session;
import javax.mail.Transport; import javax.mail.Transport;
@ -41,53 +40,56 @@ public class SendMailSSL {
sendername = Settings.getmailSenderName; sendername = Settings.getmailSenderName;
} }
String port = String.valueOf(Settings.getMailPort); final String sender = sendername;
Properties props = new Properties(); final String port = String.valueOf(Settings.getMailPort);
props.put("mail.smtp.host", Settings.getmailSMTP); final String acc = Settings.getmailAccount;
props.put("mail.smtp.auth", "true"); final String subject = Settings.getMailSubject;
props.put("mail.smtp.port", port); final String smtp = Settings.getmailSMTP;
props.put("mail.smtp.starttls.enable", true); final String password = Settings.getmailPassword;
final String mailText = Settings.getMailText;
final String mail = auth.getEmail();
try { Bukkit.getScheduler().runTaskAsynchronously(plugin, new Runnable() {
Session session = Session.getInstance(props, null);
final Message message = new MimeMessage(session); @Override
try { public void run() {
message.setFrom(new InternetAddress(Settings.getmailAccount, sendername)); try {
} catch (UnsupportedEncodingException uee) { Properties props = new Properties();
message.setFrom(new InternetAddress(Settings.getmailAccount)); props.put("mail.smtp.host", smtp);
} props.put("mail.smtp.auth", "true");
message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(auth.getEmail())); props.put("mail.smtp.port", port);
message.setSubject(Settings.getMailSubject); props.put("mail.smtp.starttls.enable", true);
message.setSentDate(new Date()); Session session = Session.getInstance(props, null);
BodyPart messageBodyPart = new MimeBodyPart();
String text = Settings.getMailText;
messageBodyPart.setText(text);
Multipart multipart = new MimeMultipart(); Message message = new MimeMessage(session);
multipart.addBodyPart(messageBodyPart);
messageBodyPart = new MimeBodyPart();
multipart.addBodyPart(messageBodyPart);
message.setContent(multipart);
final Transport transport = session.getTransport("smtp");
transport.connect(Settings.getmailSMTP, Settings.getmailAccount, Settings.getmailPassword);
Bukkit.getScheduler().runTaskAsynchronously(plugin, new Runnable() {
@Override
public void run() {
try { try {
transport.sendMessage(message, message.getAllRecipients()); message.setFrom(new InternetAddress(acc, sender));
} catch (MessagingException e) { } catch (UnsupportedEncodingException uee) {
System.out.println("Some error occured while trying to send a mail to " + auth.getEmail()); message.setFrom(new InternetAddress(acc));
} }
} message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(mail));
message.setSubject(subject);
message.setSentDate(new Date());
BodyPart messageBodyPart = new MimeBodyPart();
messageBodyPart.setText(mailText);
}); Multipart multipart = new MimeMultipart();
} catch (Exception e) {
System.out.println("Some error occured while trying to send a mail to " + auth.getEmail()); multipart.addBodyPart(messageBodyPart);
}
messageBodyPart = new MimeBodyPart();
multipart.addBodyPart(messageBodyPart);
message.setContent(multipart);
Transport transport = session.getTransport("smtp");
transport.connect(smtp, acc, password);
transport.sendMessage(message, message.getAllRecipients());
} catch (Exception e) {
System.out.println("Some error occured while trying to send a mail to " + mail);
}
}
});
} }
} }

View File

@ -1,10 +1,8 @@
package fr.xephi.authme; package fr.xephi.authme;
import java.io.File; import java.util.ArrayList;
import java.io.FileWriter;
import java.util.Iterator; import java.util.Iterator;
import java.util.Random; import java.util.List;
import java.util.Scanner;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.GameMode; import org.bukkit.GameMode;
@ -12,10 +10,10 @@ import org.bukkit.Location;
import org.bukkit.World; import org.bukkit.World;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import fr.xephi.authme.api.API;
import fr.xephi.authme.cache.limbo.LimboCache; import fr.xephi.authme.cache.limbo.LimboCache;
import fr.xephi.authme.cache.limbo.LimboPlayer; import fr.xephi.authme.cache.limbo.LimboPlayer;
import fr.xephi.authme.events.AuthMeTeleportEvent; import fr.xephi.authme.events.AuthMeTeleportEvent;
import fr.xephi.authme.security.RandomString;
import fr.xephi.authme.settings.Settings; import fr.xephi.authme.settings.Settings;
public class Utils { public class Utils {
@ -24,6 +22,7 @@ public class Utils {
private static Utils singleton; private static Utils singleton;
int id; int id;
public AuthMe plugin; public AuthMe plugin;
private static List<String> tokens = new ArrayList<String>();
public Utils(AuthMe plugin) { public Utils(AuthMe plugin) {
this.plugin = plugin; this.plugin = plugin;
@ -167,19 +166,18 @@ public class Utils {
* Random Token for passpartu * Random Token for passpartu
*/ */
public boolean obtainToken() { public boolean obtainToken() {
File file = new File("plugins" + File.separator + "AuthMe" + File.separator + "passpartu.token");
if (file.exists())
file.delete();
FileWriter writer = null;
try { try {
file.createNewFile(); final String token = new RandomString(10).nextString();
writer = new FileWriter(file); tokens.add(token);
String token = generateToken();
writer.write(token + ":" + System.currentTimeMillis() / 1000 + API.newline);
writer.flush();
ConsoleLogger.info("[AuthMe] Security passpartu token: " + token); ConsoleLogger.info("[AuthMe] Security passpartu token: " + token);
writer.close(); Bukkit.getScheduler().runTaskLaterAsynchronously(plugin, new Runnable() {
@Override
public void run() {
tokens.remove(token);
}
}, 600);
return true; return true;
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
@ -191,46 +189,11 @@ public class Utils {
* Read Token * Read Token
*/ */
public boolean readToken(String inputToken) { public boolean readToken(String inputToken) {
File file = new File("plugins" + File.separator + "AuthMe" + File.separator + "passpartu.token"); boolean ret = false;
if (tokens.contains(inputToken))
if (!file.exists()) ret = true;
return false; tokens.remove(inputToken);
return (ret);
if (inputToken.isEmpty())
return false;
Scanner reader = null;
try {
reader = new Scanner(file);
while (reader.hasNextLine()) {
final String line = reader.nextLine();
if (line.contains(":")) {
String[] tokenInfo = line.split(":");
if (tokenInfo[0].equals(inputToken) && System.currentTimeMillis() / 1000 - 30 <= Integer.parseInt(tokenInfo[1])) {
file.delete();
reader.close();
return true;
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
reader.close();
return false;
}
/*
* Generate Random Token
*/
private String generateToken() {
// obtain new random token
Random rnd = new Random();
char[] arr = new char[5];
for (int i = 0; i < 5; i++) {
int n = rnd.nextInt(36);
arr[i] = (char) (n < 10 ? '0' + n : 'a' + n - 10);
}
return new String(arr);
} }
/* /*

View File

@ -73,6 +73,7 @@ public class AdminCommand implements CommandExecutor {
sender.sendMessage("/authme getemail <playername> - Get player email"); sender.sendMessage("/authme getemail <playername> - Get player email");
sender.sendMessage("/authme purgelastpos <playername> - Purge last position for a player"); sender.sendMessage("/authme purgelastpos <playername> - Purge last position for a player");
sender.sendMessage("/authme switchantibot on/off - Enable/Disable antibot method"); sender.sendMessage("/authme switchantibot on/off - Enable/Disable antibot method");
sender.sendMessage("/authme forcelogin <playername>");
return true; return true;
} }
@ -552,6 +553,26 @@ public class AdminCommand implements CommandExecutor {
database.updateQuitLoc(auth); database.updateQuitLoc(auth);
sender.sendMessage("[AuthMe] Successfully reset position for " + auth.getNickname()); sender.sendMessage("[AuthMe] Successfully reset position for " + auth.getNickname());
return true; return true;
} else if (args[0].equalsIgnoreCase("forcelogin")) {
if (args.length < 2) {
sender.sendMessage("Usage : /authme forcelogin <playerName>");
return true;
}
try {
Player player = Bukkit.getPlayer(args[1]);
if (player == null || !player.isOnline()) {
sender.sendMessage("Online player only !");
return true;
}
if (!plugin.authmePermissible(player, "authme.canbeforced")) {
sender.sendMessage("You cannot force login for this player!");
return true;
}
plugin.management.performLogin(player, "dontneed", true);
sender.sendMessage("Force Login performed !");
} catch (Exception e) {
sender.sendMessage("An error occured while trying to get that player!");
}
} else { } else {
sender.sendMessage("Usage: /authme reload|register playername password|changepassword playername password|unregister playername"); sender.sendMessage("Usage: /authme reload|register playername password|changepassword playername password|unregister playername");
} }

View File

@ -263,7 +263,7 @@ public final class Settings extends YamlConfiguration {
delayJoinMessage = configFile.getBoolean("settings.delayJoinMessage", false); delayJoinMessage = configFile.getBoolean("settings.delayJoinMessage", false);
noTeleport = configFile.getBoolean("settings.restrictions.noTeleport", false); noTeleport = configFile.getBoolean("settings.restrictions.noTeleport", false);
crazyloginFileName = configFile.getString("Converter.CrazyLogin.fileName", "accounts.db"); crazyloginFileName = configFile.getString("Converter.CrazyLogin.fileName", "accounts.db");
getPassRegex = configFile.getString("settings.restrictions.allowedPasswordCharacters", "[a-zA-Z0-9_?!@+&-]*"); getPassRegex = configFile.getString("settings.restrictions.allowedPasswordCharacters", "[\\x21-\\x7E]*");
applyBlindEffect = configFile.getBoolean("settings.applyBlindEffect", false); applyBlindEffect = configFile.getBoolean("settings.applyBlindEffect", false);
emailBlacklist = configFile.getStringList("Email.emailBlacklisted"); emailBlacklist = configFile.getStringList("Email.emailBlacklisted");
emailWhitelist = configFile.getStringList("Email.emailWhitelisted"); emailWhitelist = configFile.getStringList("Email.emailWhitelisted");
@ -430,7 +430,7 @@ public final class Settings extends YamlConfiguration {
delayJoinMessage = configFile.getBoolean("settings.delayJoinMessage", false); delayJoinMessage = configFile.getBoolean("settings.delayJoinMessage", false);
noTeleport = configFile.getBoolean("settings.restrictions.noTeleport", false); noTeleport = configFile.getBoolean("settings.restrictions.noTeleport", false);
crazyloginFileName = configFile.getString("Converter.CrazyLogin.fileName", "accounts.db"); crazyloginFileName = configFile.getString("Converter.CrazyLogin.fileName", "accounts.db");
getPassRegex = configFile.getString("settings.restrictions.allowedPasswordCharacters", "[a-zA-Z0-9_?!@+&-]*"); getPassRegex = configFile.getString("settings.restrictions.allowedPasswordCharacters", "[\\x21-\\x7E]*");
applyBlindEffect = configFile.getBoolean("settings.applyBlindEffect", false); applyBlindEffect = configFile.getBoolean("settings.applyBlindEffect", false);
emailBlacklist = configFile.getStringList("Email.emailBlacklisted"); emailBlacklist = configFile.getStringList("Email.emailBlacklisted");
emailWhitelist = configFile.getStringList("Email.emailWhitelisted"); emailWhitelist = configFile.getStringList("Email.emailWhitelisted");
@ -554,7 +554,7 @@ public final class Settings extends YamlConfiguration {
changes = true; changes = true;
} }
if (!contains("settings.restrictions.allowedPasswordCharacters")) { if (!contains("settings.restrictions.allowedPasswordCharacters")) {
set("settings.restrictions.allowedPasswordCharacters", "[a-zA-Z0-9_?!@+&-]*"); set("settings.restrictions.allowedPasswordCharacters", "[\\x21-\\x7E]*");
changes = true; changes = true;
} }
if (!contains("settings.applyBlindEffect")) { if (!contains("settings.applyBlindEffect")) {
@ -579,13 +579,11 @@ public final class Settings extends YamlConfiguration {
set("settings.forceRegisterCommandsAsConsole", new ArrayList<String>()); set("settings.forceRegisterCommandsAsConsole", new ArrayList<String>());
changes = true; changes = true;
} }
if (!contains("Hooks.customAttributes")) if (!contains("Hooks.customAttributes")) {
{
set("Hooks.customAttributes", false); set("Hooks.customAttributes", false);
changes = true; changes = true;
} }
if (!contains("Purge.removePermissions")) if (!contains("Purge.removePermissions")) {
{
set("Purge.removePermissions", false); set("Purge.removePermissions", false);
changes = true; changes = true;
} }

View File

@ -1,56 +1,56 @@
unknown_user: "L'utente non è presente nel database" unknown_user: "L'utente non è presente nel database."
unsafe_spawn: 'Il tuo punto di logout non era sicuro, sei stato teletrasportato allo Spawn' unsafe_spawn: 'Il punto di disconnessione è attualmente ostruito o insicuro, sei stato teletrasportato al punto di rigenerazione!'
not_logged_in: '&cNon loggato!' not_logged_in: "&cL'utente non ha ancora eseguito l'autenticazione!"
reg_voluntarily: 'Puoi registrare il tuo nickname nel server con "/register <password> <ConfermaPassword>"' reg_voluntarily: 'Per eseguire la registrazione al server devi eseguire il seguente comando: "/register <password> <ConfermaPassword>"'
usage_log: '&cUtilizzo: /login <password>' usage_log: '&cUtilizzo: /login <password>'
wrong_pwd: '&cPassword sbagliata' wrong_pwd: '&cPassword non corretta!'
unregistered: '&cCancellato correttamente!' unregistered: "&cL'utente è stato rimosso dal database con successo!"
reg_disabled: '&cLe registrazioni sono disabilitate' reg_disabled: '&cLa registrazione tramite i comandi del gioco è disabilitata.'
valid_session: '&cLoggato attraverso la sessione' valid_session: '&cAutenticato attraverso la sessione ripresa!'
login: '&cLoggato correttamente!' login: '&cAutenticazone effettuata correttamente!'
vb_nonActiv: 'Il tuo account non è ancora attivo, controlla le tue Email!' vb_nonActiv: 'Il tuo Account non è stato ancora verificato, controlla le tue Email per scoprire come attivarlo!'
user_regged: '&cUtente già registrato' user_regged: "&cL'utente si è già registrato, impossibile eseguire nuovamente la registrazione."
usage_reg: '&cUtilizzo: /register <password> <confermaPassword>' usage_reg: '&cUtilizzo: /register <password> <confermaPassword>'
max_reg: 'Hai raggiunto il numero massimo di registrazioni per il tuo account' max_reg: 'Hai raggiunto il numero massimo di registrazioni per indirizzo IP!'
no_perm: '&cNessun Permesso' no_perm: '&cNon hai il permesso di eseguire questa operazione.'
error: "Errore; Perfavore, contatta l'admin" login_msg: '&cPerfavore, per giocare devi effettuare l'autenticazione con il comando: "/login <password>"'
login_msg: '&cPerfavore, loggati con "/login <password>"' reg_msg: '&cPerfavore, per connetterti al server devi prima registrarti con il comando: "/register <password> <ConfermaPassword>"'
reg_msg: '&cPerfavore, registrati con "/register <password> <confermaPassword>"' reg_email_msg: '&cPerfavore, per connetterti al server devi prima registrarti con il comando: "/register <email> <confermaEmail>"'
reg_email_msg: '&cPerfavore, registrati con "/register <email> <confermaEmail>"'
usage_unreg: '&cUtilizzo: /unregister <password>' usage_unreg: '&cUtilizzo: /unregister <password>'
pwd_changed: '&cPassword cambiata correttamente!' pwd_changed: '&cPassword cambiata con successo!'
user_unknown: '&cUtente non registrato' user_unknown: "&cL'utente non ha ancora eseguito la registrazione."
password_error: 'Le Password non corrispondono' password_error: 'Le Password non corrispondono!'
unvalid_session: "I tuoi dati non combaciano con l'ultima sessione. Per favore attendi la fine della sessione attuale" invalid_session: "I tuoi dati di connessione attuali non sono quelli utilizzati in precedenza. Attendere la fine della sessione attuale."
reg_only: 'Possono entrare solo utenti registrati! Perfavore, vai su http://example.com per registrarti' reg_only: 'La registrazione è effettuabile soltanto attraverso il sito web! Perfavore, vai su http://example.com per procedere!'
logged_in: '&cSei già loggato!' logged_in: '&cHai già eseguito l'autenticazione!'
logout: '&cDisconnesso correttamente' logout: '&cDisconnessione avvenuta correttamente!'
same_nick: 'Lo stesso nickname è già online' same_nick: 'Lo stesso nickname è già online sul server!'
registered: '&cRegistrato correttamente!' registered: '&cRegistrato correttamente!'
pass_len: 'La tua password è troppo corta o troppo lunga' pass_len: 'La tua password è troppo corta o troppo lunga, prova a cambiarla!'
reload: 'La configurazione e il database sono stati ricaricati' reload: 'La configurazione e il database sono stati ricaricati con successo!'
timeout: 'Timeout di Login' timeout: "Tempo scaduto per effettuare l'autenticazione"
usage_changepassword: 'Utilizzo: /changepassword <vecchiaPassword> <nuovaPassword>' usage_changepassword: 'Utilizzo: /changepassword <vecchiaPassword> <nuovaPassword>'
name_len: '&cIl tuo nickname è troppo corto o troppo lungo' name_len: '&cIl tuo nickname è troppo corto o troppo lungo!'
regex: '&cIl tuo nickname contiene caratteri strani. Caratteri abilitati: REG_EX' regex: '&cIl tuo nickname contiene caratteri non consentiti. I caratteri consentiti sono: REG_EX'
add_email: '&cPer una maggiore sicurezza, aggiungi una mail con : /email add <tuaEmail> <confermaEmail>' add_email: '&cPer poter recuperare la password in futuro, aggiungi una email al tuo account con il comando: "/email add tuaEmail confermaEmail"'
bad_database_email: '[AuthMe] Il comando /email è utilizzabile solo con MySQL o SQLite, contatta un admin' bad_database_email: 'Il comando /email è utilizzabile solo con database MySQL o SQLite, riporta questo errore ad un Admin!'
recovery_email: '&cDimenticata la tua password? Perfavore, fai /email recovery <tuaEmail>' recovery_email: '&cHai dimenticato la tua password? Puoi recuperarla eseguendo il comando: "/email recovery <tuaEmail>"'
usage_captcha: '&cUtilizzo: /captcha <ilCaptcha>' usage_captcha: '&cUtilizzo: /captcha <ilCaptcha>'
wrong_captcha: '&cCaptcha sbagliato, perfavore fai: /captcha THE_CAPTCHA' wrong_captcha: '&cCodice captcha sbagliato, perfavore riprova eseguendo il comando: "/captcha THE_CAPTCHA"'
valid_captcha: '&cIl tuo captcha è valido!' valid_captcha: '&cIl tuo captcha è valido!'
kick_forvip: '&cUn utente VIP è entrato mentre il server era pieno!' kick_forvip: '&cUn utente VIP è entrato mentre il server era pieno!'
kick_fullserver: '&cIl server è attualmente pieno, riprova più tardi!' kick_fullserver: '&cIl server è attualmente pieno, riprova più tardi!'
usage_email_add: '&fUtilizzo: /email add <email> <confermaEmail>' usage_email_add: '&fUtilizzo: /email add <email> <confermaEmail>'
usage_email_change: '&fUtilizzo: /email change <vecchiaEmail> <nuovaEmail>' usage_email_change: '&fUtilizzo: /email change <vecchiaEmail> <nuovaEmail>'
usage_email_recovery: '&fUtilizzo: /email recovery <email>' usage_email_recovery: '&fUtilizzo: /email recovery <email>'
new_email_invalid: '[AuthMe] La nuova Email non è valida!' new_email_invalid: 'La nuova Email non è valida!'
old_email_invalid: '[AuthMe] La vecchia Email non è valida!' old_email_invalid: 'La vecchia Email non è valida!'
email_invalid: "[AuthMe] L'Email non è valida" email_invalid: "L'Email non è valida"
email_added: '[AuthMe] Email aggiunta!' email_added: 'Email aggiunta correttamente!'
email_confirm: '[AuthMe] Conferma la tua Email!' email_confirm: 'Conferma la tua Email!'
email_changed: '[AuthMe] Email cambiata!' email_changed: 'Email cambiata correttamente!'
email_send: '[AuthMe] Email di recupero inviata!' email_send: 'Email di recupero inviata al tuo indirizzo!'
country_banned: 'Il tuo paese è bannato su questo server' email_exists: 'Il tuo account ha già una Email configurata. Se vuoi, puoi cambiarla con il seguente comando:'
antibot_auto_enabled: '[AuthMe] AntiBotMod è stato automaticamente abilitato a seguito delle numerose connessioni!' country_banned: 'Il tuo paese è bandito su questo server!'
antibot_auto_disabled: "[AuthMe] AntiBotMod è stato automaticamente disabilitato dopo %m Minuti, sperando che l'invasione sia finita" antibot_auto_enabled: 'Il servizio di AntiBot è stato automaticamente abilitato a seguito delle numerose connessioni!'
antibot_auto_disabled: "Il servizio di AntiBot è stato automaticamente disabilitato dopo %m Minuti, sperando che l'attacco sia finito!"

View File

@ -1,5 +1,4 @@
# Translator: uSoc_lifehome (http://lifeho.me) # # Translator: uSoc_lifehome (http://lifeho.me) #
# '-- Last edit: 1405878032 UTC #
# -------------------------------------------- # # -------------------------------------------- #
unknown_user: '&8[&6用戶系統&8] &f用戶資料並不存在於資料庫中。' unknown_user: '&8[&6用戶系統&8] &f用戶資料並不存在於資料庫中。'
unsafe_spawn: '&8[&6用戶系統&8] &f你的登出位置不安全現在將傳送你到重生點。' unsafe_spawn: '&8[&6用戶系統&8] &f你的登出位置不安全現在將傳送你到重生點。'
@ -25,7 +24,7 @@ pwd_changed: '&8[&6用戶系統&8] &c你成功的更換了你的密碼 '
user_unknown: '&8[&6用戶系統&8] &c此用戶名沒有已登記資料。' user_unknown: '&8[&6用戶系統&8] &c此用戶名沒有已登記資料。'
password_error: '&8[&6用戶系統&8] &f密碼不符合。' password_error: '&8[&6用戶系統&8] &f密碼不符合。'
unvalid_session: '&8[&6用戶系統&8] &f登入階段資料已損壞請等待登入階段結束。' unvalid_session: '&8[&6用戶系統&8] &f登入階段資料已損壞請等待登入階段結束。'
reg_only: '&8[&6用戶系統&8] &f限已註冊會員請先到 https://www.craftinghk.com/ 註冊。' reg_only: '&8[&6用戶系統&8] &f限已註冊會員請先到 https://www.example.com/ 註冊。'
logged_in: '&8[&6用戶系統&8] &c你已經登入過了。' logged_in: '&8[&6用戶系統&8] &c你已經登入過了。'
logout: '&8[&6用戶系統&8] &b你成功的登出了。' logout: '&8[&6用戶系統&8] &b你成功的登出了。'
same_nick: '&8[&6用戶系統&8] &f同名玩家已在遊玩。' same_nick: '&8[&6用戶系統&8] &f同名玩家已在遊玩。'

View File

@ -69,6 +69,7 @@ permissions:
authme.admin.getip: true authme.admin.getip: true
authme.admin.converter: true authme.admin.converter: true
authme.admin.resetposition: true authme.admin.resetposition: true
authme.admin.forcelogin: true
authme.register: authme.register:
description: Register an account description: Register an account
default: true default: true
@ -165,3 +166,9 @@ permissions:
authme.admin.resetposition: authme.admin.resetposition:
description: Reset last position for a player description: Reset last position for a player
default: op default: op
authme.admin.forcelogin:
description: Force login for that player
default: op
authme.canbeforced:
description: Can this player be forced to login
default: true