# !!THIS FILE IS WRITTEN IN THE HOCON FORMAT!!
# The hocon format is very similar to JSON, but it has some extra features.
# You can find more information about the format on the sponge wiki:
# https://docs.spongepowered.org/stable/en/server/getting-started/configuration/hocon.html
# ----------------------------------------------------------------------------------------
# LibreLogin Configuration
# ----------------------------------------------------------------------------------------
# This is the configuration file for LibreLogin.
# You can find more information about LibreLogin on the github page:
# https://github.com/kyngs/LibreLogin

# This section is used for MySQL database configuration.
database {
    properties {
        mysql {
            # The host of the database.
            host=localhost
            # The name of the database.
            database=librelogin
            # The password of the database.
            password=""
            # The port of the database.
            port=3306
            # The user of the database.
            user=root
            # The maximum lifetime of a database connection in milliseconds. Don't touch this if you don't know what you're doing.
            max-life-time=600000
            # The JDBC URL of the database. Don't touch this if you don't know what you're doing. (Using jdbc:mariadb also works for pure mysql)
            jdbc-url="jdbc:mariadb://%host%:%port%/%database%?autoReconnect=true&zeroDateTimeBehavior=convertToNull"
        }
        sqlite {
            # Path to SQLite database file. Relative to plugin datafolder.
            path="user-data.db"
        }
        postgresql {
            # The host of the database.
            host=localhost
            # The name of the database.
            database=librelogin
            # The password of the database.
            password=""
            # The port of the database.
            port=5432
            # The user of the database.
            user=root
            # The maximum lifetime of a database connection in milliseconds. Don't touch this if you don't know what you're doing.
            max-life-time=600000
        }
    }
    # The type of the database. Built-in types:
    # librelogin-mysql - MySQL database, you must fill out the mysql section below.
    # librelogin-postgresql - PostgreSQL database, you must fill out the postgresql section below.
    # librelogin-sqlite - SQLite database, default file is "database.db", you can change it in the sqlite section below.
    # 
    type=librelogin-sqlite
}
# This is used for migrating the database from other plugins.
# Please see the wiki for further information: https://github.com/Navio1430/LibreLoginProd/wiki/Database-Migration
# 
migration {
    old-database {
        mysql {
            # The host of the database.
            host=localhost
            # The name of the database.
            database=librelogin
            # The password of the database.
            password=""
            # The port of the database.
            port=3306
            # The user of the database.
            user=root
            # The maximum lifetime of a database connection in milliseconds. Don't touch this if you don't know what you're doing.
            max-life-time=600000
            # The JDBC URL of the database. Don't touch this if you don't know what you're doing. (Using jdbc:mariadb also works for pure mysql)
            jdbc-url="jdbc:mariadb://%host%:%port%/%database%?autoReconnect=true&zeroDateTimeBehavior=convertToNull"
            # The table of the old database.
            table=user-data
        }
        sqlite {
            # Path to SQLite database file. Relative to plugin datafolder.
            path="user-data.db"
        }
        postgresql {
            # The host of the database.
            host=localhost
            # The name of the database.
            database=librelogin
            # The password of the database.
            password=""
            # The port of the database.
            port=5432
            # The user of the database.
            user=root
            # The maximum lifetime of a database connection in milliseconds. Don't touch this if you don't know what you're doing.
            max-life-time=600000
            # The table of the old database.
            table=user-data
        }
    }
    # Migrate the database on the next startup.
    on-next-startup=false
    # The type of the migration. Available Types:
    # jpremium-mysql - Can convert from MySQL JPremium SHA256, SHA512 and BCrypt
    # authme-mysql - Can convert from MySQL AuthMe BCrypt and SHA256
    # authme-sqlite - Can convert from SQLite AuthMe BCrypt and SHA256
    # authme-postgresql - Can convert from PostgreSQL AuthMe BCrypt and SHA256
    # aegis-mysql - Can convert from MySQL Aegis BCrypt
    # dba-mysql - Can convert from MySQL DynamicBungeeAuth, which was configured to use SHA-512
    # nlogin-sqlite - Can convert from SQLite NLogin SHA512
    # nlogin-mysql - Can convert from MySQL NLogin SHA512
    # loginsecurity-mysql - Can convert from MySQL LoginSecurity BCrypt
    # loginsecurity-sqlite - Can convert from SQLite LoginSecurity BCrypt
    # fastlogin-sqlite - Can convert from SQLite FastLogin, !!YOU MUST RUN CONVERSION FROM AUTHME FIRST!!
    # fastlogin-mysql - Can convert from MySQL FastLogin, !!YOU MUST RUN CONVERSION FROM AUTHME FIRST!!
    # limboauth-mysql - Can convert from MySQL LimboAuth BCrypt and SHA256
    # authy-mysql - Can convert from MySQL Authy SHA256
    # authy-sqlite - Can convert from SQLite Authy SHA256
    # logit-mysql - Can convert from MySQL LogIt SHA256
    # librelogin-mysql - Can convert from MySQL LibreLogin, useful for migrating to a different database
    # librelogin-sqlite - Can convert from SQLite LibreLogin, useful for migrating to a different database
    # 
    type=authme-sqlite
}
# Commands that are allowed while the user is not authorized.
allowed-commands-while-unauthorized=[
    login,
    register,
    "2fa",
    "2faconfirm",
    l,
    log,
    reg,
    resetpassword,
    confirmpasswordreset
]
# The authentication servers/worlds, players should be sent to, when not authenticated. On Paper, players will be spawned on the world spawn. THIS SERVERS MUST BE REGISTERED IN THE PROXY CONFIG. IN CASE OF PAPER, THE WORLDS MUST EXIST.
limbo=[
    limbo
]
# !!WHEN USING PAPER, PUT ALL WORLDS UNDER "root"!!
# On Paper, players will be spawned on the world spawn.
# 
# The servers/worlds player should be sent to when they are authenticated. THE SERVERS MUST BE REGISTERED IN THE PROXY CONFIG. IN CASE OF PAPER, THE WORLDS MUST EXIST.
# The configuration allows configuring forced hosts; the servers/worlds in "root" are used when players do not connect from a forced host. Use § instead of dots.
# See: https://github.com/Navio1430/LibreLoginProd/wiki/Configuring-Servers
# 
lobby {
    root=[
        spawn2
    ]
}
# By default, when choosing available lobby/limbos LibreLogin will rule out all the servers which are full.
# Sometimes this may not work as expected. In such case, you can enable this option, which will ignore the max players field obtained by pinging the backend server.
# 
ignore-max-players-from-backend-ping=false
# The default crypto provider. This is used for hashing passwords. Available Providers:
# SHA-256 - Older, not recommended. Kept for compatibility reasons.
# SHA-512 - More safer than SHA-256, but still not recommended. Kept for compatibility reasons.
# BCrypt-2A - Newer, more safe, recommended
# Argon-2ID - Newest, should be safer than BCrypt-2A, however, it can slow down the server.
# 
default-crypto-provider=BCrypt-2A
# Sets the strategy for resolving profile conflicts. Available strategies:
# BLOCK - Kick both players with the message key "kick-name-mismatch". An admin must resolve the conflict manually.
# USE_OFFLINE - Use the offline profile. When both of the players attempt to join, they will be provided with a login screen and will be able to login with the offline player's password. The online player will have to change their nickname to a available one in order to recover their account. Beware, that there's a 30 days cool down for changing nicknames.
# OVERWRITE - Overwrite the offline profile's data with the online profile's data. This will irreversibly delete the offline player's data. !!USE WITH CAUTION; PLAYERS CAN AND WILL ABUSE THIS!!
# 
profile-conflict-resolution-strategy=BLOCK
# Kick the player, if the password was incorrect more or equal times. -1 means disabled
max-login-attempts=-1
# Time to reset login attempts. The amount of time the player should have waited for their login attempts to expire. On every rejoin, login attempts are reset.
milliseconds-to-refresh-login-attempts=10000
# Whether or not to use titles when player is awaiting authentication.
use-titles=true
# Whether or not to use action bar when player is awaiting authentication.
use-action-bar=false
# Sets which method should be used for creating fixed UUID when a new player is created.
# See the wiki for further information: https://github.com/Navio1430/LibreLoginProd/wiki/UUID-Creators
# Available Creators:
# RANDOM - Generates a random UUID
# CRACKED - Generates a UUID based on the player's name, the same method as if the server was in offline mode
# MOJANG - If the player exists in the Mojang's database, it will be used. Otherwise, CRACKED will be used.
# 
new-uuid-creator=MOJANG
# Sets the maximum amount of accounts that can be registered from the same IP address.
# Set to zero or less to disable.
# !!THIS IS NOT RECOMMENDED!! Due to the lack of IPv4 addresses, sometimes even entire villages share the same IP address.
# 
ip-limit=-1
# Should we automatically register all players with a premium nickname?
# !!CRACKED PLAYERS WILL NOT BE ABLE TO REGISTER PREMIUM USERNAMES!!
# 
auto-register=false
# This specifies how often players should be notified when not authenticated. Set to negative to disable.
# This includes (but is not limited to):
# - Message in chat
# - Title
# 
milliseconds-to-refresh-notification=10000
# Sets the login/register time limit in seconds. Set to negative to disable.
seconds-to-authorize=-1
# This section is used for 2FA configuration.
# !! YOU MUST HAVE PROTOCOLIZE INSTALLED FOR THIS TO WORK !!
# 
# You can find more information on the wiki: https://github.com/Navio1430/LibreLoginProd/wiki/2FA
# 
totp {
    # Should we enable TOTP-Based Two-Factor Authentication? If you don't know what this is, this is the 2FA used in applications like Google Authenticator etc.
    # I heavily suggest you to read this wiki page: https://github.com/Navio1430/LibreLoginProd/wiki/2FA
    # 
    enabled=true
    # The label to be displayed in the 2FA app. Change this to your network name.
    label="NEMESYS Network"
    # The delay in milliseconds until player is given a map to scan the QR code. Increase this value if the map disappears too quickly.
    delay=1000
}
# The minimum length of a password. Set to negative to disable.
minimum-password-length=-1
# The minimum length the player's name can have. Only applies to new players, set to 0 or lower to disable.
minimum-username-length=-1
# Defines a time in seconds after a player's session expires. Default value is one week (604800 seconds). Set to zero or less to disable sessions.
session-timeout=0
# !!THIS OPTION IS IRRELEVANT WHEN USING PAPER!! Should we ping servers to check if they are online, and get their player count? If you disable this, the pinging servers message will still appear in the console, even though the servers will not be pinged.
ping-servers=false
# Should we remember the last server/world a player was on? This is not recommended for large networks.
remember-last-server=false
# Should we enable debug mode? This will print out debug messages to the console.
debug=false
# !!THIS OPTION IS IRRELEVANT WHEN USING PAPER!! Should we fallback players to lobby servers if the server they are on shutdowns? If set to false, they will be kicked.
fallback=false
mail {
    # Should we enable the email password recovery feature?
    enabled=true
    # The host of the SMTP server.
    host="mail.nemesysnetwork.com"
    # The port of the SMTP server.
    port=587
    # The username used to login to the SMTP server.
    username="support@nemesysnetwork.com"
    # The password used to login to the SMTP server. We highly recommend you use a unique one-time password for this.
    password="Alexandru2877#"
    # The sender of the email.
    sender="NEMESYS Network"
    # The email to use as a sender in the From field.
    email="support@nemesysnetwork.com"
}
# !!!THIS ONLY AFFECTS PAPER!!!
# Verifies whether the IP the players had used when authenticating to Mojang matches the IP they are connecting from. Disabling this may break LibreLogin if the server is running under a reverse proxy/VPN.
# 
allow-proxy-connections=true
# !!THIS OPTION IS IRRELEVANT WHEN USING PAPER!! Defines port(s) that limbo server can be bounded to.
limbo-port-range="30000-40000"
# The config revision number. !!DO NOT TOUCH THIS!!
revision=8
