package launchserver.auth.provider;
import launcher.helper.CommonHelper;
import launcher.helper.LogHelper;
import launcher.helper.SecurityHelper;
import launcher.helper.VerifyHelper;
import launcher.serialize.config.entry.BlockConfigEntry;
import launcher.serialize.config.entry.ListConfigEntry;
import launcher.serialize.config.entry.StringConfigEntry;
import launchserver.auth.AuthException;
import launchserver.auth.MySQLSourceConfig;
import java.sql.*;
public final class SQLiteAuthProvider extends AuthProvider
{
private final String query;
private final String[] queryParams;
private final Connection sqliteconnection;
public SQLiteAuthProvider(BlockConfigEntry block)
{
super(block);
try
{
Class.forName("org.sqlite.JDBC");
}
catch (Exception e)
{
e.printStackTrace();
//System.out.println("Here");
}
Connection sqliteconnection1;
try
{
sqliteconnection1 = DriverManager.getConnection("jdbc:sqlite:" + block.getEntryValue("path", StringConfigEntry.class));
}
catch (Exception e)
{
LogHelper.error("Error connecting to sqlite: ");
e.printStackTrace();
sqliteconnection1 = null;
}
this.sqliteconnection = sqliteconnection1;
this.query = VerifyHelper.verify(block.getEntryValue("query", StringConfigEntry.class), VerifyHelper.NOT_EMPTY, "Sqlite query can't be empty");
/*
this.queryParams = block.getEntry("queryParams", ListConfigEntry.class).stream(StringConfigEntry.class).toArray((x$0) -> {
return new String[x$0];
});
*/
this.queryParams = block.getEntry("queryParams", ListConfigEntry.class).stream(StringConfigEntry.class).toArray(String[]::new);
}
public AuthProviderResult auth(String login, String password, String ip) throws SQLException, AuthException
{
Connection c = this.sqliteconnection;
Throwable var5 = null;
try
{
PreparedStatement s = c.prepareStatement(this.query);
Throwable var7 = null;
try
{
String[] replaceParams = new String[]{"login", login, "password", password, "ip", ip};
for(int i = 0; i < this.queryParams.length; ++i)
{
s.setString(i + 1, CommonHelper.replace(this.queryParams[i], replaceParams));
}
s.setQueryTimeout(MySQLSourceConfig.TIMEOUT);
ResultSet set = s.executeQuery();
Throwable var10 = null;
try
{
AuthProviderResult var55;
try
{
/*
AuthProviderResult var11 = set.next() ? new AuthProviderResult(set.getString(1), SecurityHelper.randomStringToken()) : authError("Incorrect username or password");
var55 = var11;
*/
var55 = set.next() ? new AuthProviderResult(set.getString(1), SecurityHelper.randomStringToken()) : authError("Incorrect username or password");
return var55;
// return (AuthProviderResult)var55;
}
catch (Throwable var56)
{
//var55 = var56;
var10 = var56;
throw var56;
}
}
finally
{
if (set != null)
{
if (var10 != null)
{
try
{
set.close();
}
catch (Throwable var55)
{
var10.addSuppressed(var55);
}
}
else
{
set.close();
}
}
}
}
catch (Throwable var58)
{
var7 = var58;
throw var58;
}
finally
{
if (s != null)
{
if (var7 != null)
{
try
{
s.close();
}
catch (Throwable var54)
{
var7.addSuppressed(var54);
}
}
else
{
s.close();
}
}
}
}
catch (Throwable var60)
{
var5 = var60;
throw var60;
}
finally
{
if (c != null)
{
if (var5 != null)
{
try
{
c.close();
}
catch (Throwable var53)
{
var5.addSuppressed(var53);
}
}
else
{
c.close();
}
}
}
}
public void close()
{
}
}