; This file is part of OpenTTD.
; OpenTTD 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, version 2.
; OpenTTD 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 OpenTTD. If not, see <http://www.gnu.org/licenses/>.
;

; Network settings as stored in the secrets configuration file ("secrets.cfg").

[pre-amble]
static bool ReplaceAsteriskWithEmptyPassword(std::string &newval);
static bool IsValidHex128BitKeyString(std::string &newval);
static bool IsValidHex256BitKeyString(std::string &newval);
static void ParseCompanyPasswordStorageToken(const std::string &value);
static void ParseCompanyPasswordStorageSecret(const std::string &value);

static const SettingTable _network_secrets_settings = {
[post-amble]
};
[templates]
SDTC_SSTR  =  SDTC_SSTR(              $var, $type, $flags, $def,             $length,                                  $pre_cb, $post_cb, $from, $to, $extver,        $cat, $guiproc, $startup, nullptr),

[validation]

[defaults]
flags    = SF_NONE
interval = 0
str      = STR_NULL
strhelp  = STR_CONFIG_SETTING_NO_EXPLANATION_AVAILABLE_HELPTEXT
strval   = STR_NULL
pre_cb   = nullptr
post_cb  = nullptr
guiproc  = nullptr
load     = nullptr
from     = SL_MIN_VERSION
to       = SL_MAX_VERSION
cat      = SC_ADVANCED
extra    = 0
startup  = false
extver   = SlXvFeatureTest()


[SDTC_SSTR]
var      = network.server_password
type     = SLE_STR
length   = NETWORK_PASSWORD_LENGTH
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_NETWORK_ONLY
def      = nullptr
pre_cb   = ReplaceAsteriskWithEmptyPassword
post_cb  = [](auto) { NetworkServerUpdateGameInfo(); }
cat      = SC_BASIC

[SDTC_SSTR]
var      = network.rcon_password
type     = SLE_STR
length   = NETWORK_PASSWORD_LENGTH
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_NETWORK_ONLY
def      = nullptr
pre_cb   = ReplaceAsteriskWithEmptyPassword
cat      = SC_BASIC

[SDTC_SSTR]
var      = network.admin_password
type     = SLE_STR
length   = NETWORK_PASSWORD_LENGTH
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_NETWORK_ONLY
def      = nullptr
cat      = SC_BASIC

[SDTC_SSTR]
var      = network.settings_password
type     = SLE_STR
length   = NETWORK_PASSWORD_LENGTH
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_NETWORK_ONLY
def      = nullptr
pre_cb   = ReplaceAsteriskWithEmptyPassword
cat      = SC_EXPERT

[SDTC_SSTR]
var      = network.default_company_pass
type     = SLE_STR
length   = NETWORK_PASSWORD_LENGTH
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def      = nullptr

[SDTC_SSTR]
var      = network.network_id
type     = SLE_STR
length   = NETWORK_SERVER_ID_LENGTH
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_NETWORK_ONLY
def      = nullptr
startup  = true

[SDTC_SSTR]
var      = network.server_invite_code
type     = SLE_STR
length   = NETWORK_INVITE_CODE_LENGTH
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_NETWORK_ONLY
def      = nullptr

[SDTC_SSTR]
var      = network.server_invite_code_secret
type     = SLE_STR
length   = NETWORK_INVITE_CODE_SECRET_LENGTH
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_NETWORK_ONLY
def      = nullptr

[SDTC_SSTR]
var      = network.company_password_storage_token
type     = SLE_STR
length   = 33
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_NETWORK_ONLY | SF_RUN_CALLBACKS_ON_PARSE
def      = nullptr
pre_cb   = IsValidHex128BitKeyString
post_cb  = ParseCompanyPasswordStorageToken
startup  = true

[SDTC_SSTR]
var      = network.company_password_storage_secret
type     = SLE_STR
length   = 65
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_NETWORK_ONLY | SF_RUN_CALLBACKS_ON_PARSE
def      = nullptr
pre_cb   = IsValidHex256BitKeyString
post_cb  = ParseCompanyPasswordStorageSecret
startup  = true
