public void Initialise(IConfigSource source)
{
m_log.Info ("[FreeMoney] Initialising.");
m_config = source;
IConfig config = m_config.Configs["FreeMoney"];
if (null == config) {
m_log.Warn ("[FreeMoney] No configuration specified. Skipping.");
return;
}
if (!config.GetBoolean ("Enabled", false))
{
m_log.Info ("[FreeMoney] Not enabled. (to enable set \"Enabled = true\" in [FreeMoney])");
return;
}
m_allowPayPal = config.GetBoolean("AllowPayPal", false);
m_allowBitcoin = config.GetBoolean("AllowBitcoin", false);
if (!m_allowBitcoin && !m_allowPayPal) {
m_log.Warn ("[FreeMoney] No payment methods permitted - PayPal and Bitcoin both disabled. Skipping.");
return;
}
// If we use PayPal, we need a page allowing the user to start a PayPal transaction or choose a Bitcoin one.
// If we only do Bitcoin, we can skip that page and take them straight to a Bitcoin transaction.
m_directToBitcoin = ( m_allowBitcoin && !m_allowPayPal );
m_ppurl = config.GetString ("FreeMoneyURL", m_ppurl);
m_ppprotocol = config.GetString ("FreeMoneyProtocol", m_ppprotocol);
m_pprequesturi = config.GetString ("FreeMoneyRequestURI", m_pprequesturi);
m_allowGridEmails = config.GetBoolean ("AllowGridEmails", false);
m_allowGroups = config.GetBoolean ("AllowGroups", false);
m_balanceOnEntry = config.GetBoolean ("BalanceOnEntry", true);
m_messageOnEntry = config.GetString ("MessageOnEntry", m_messageOnEntry);
IConfig startupConfig = m_config.Configs["Startup"];
if (startupConfig != null)
{
m_enabled = (startupConfig.GetString("economymodule", "FreeMoneyModule") == "FreeMoneyModule");
if (!m_enabled) {
m_log.Info ("[FreeMoney] Not enabled. (to enable set \"economymodule = FreeMoneyMoneyModule\" in [Startup])");
return;
}
}
IConfig economyConfig = m_config.Configs["Economy"];
if (economyConfig != null)
{
PriceEnergyUnit = economyConfig.GetInt("PriceEnergyUnit", 100);
PriceObjectClaim = economyConfig.GetInt("PriceObjectClaim", 10);
PricePublicObjectDecay = economyConfig.GetInt("PricePublicObjectDecay", 4);
PricePublicObjectDelete = economyConfig.GetInt("PricePublicObjectDelete", 4);
PriceParcelClaim = economyConfig.GetInt("PriceParcelClaim", 1);
PriceParcelClaimFactor = economyConfig.GetFloat("PriceParcelClaimFactor", 1f);
PriceUpload = economyConfig.GetInt("PriceUpload", 0);
PriceRentLight = economyConfig.GetInt("PriceRentLight", 5);
TeleportMinPrice = economyConfig.GetInt("TeleportMinPrice", 2);
TeleportPriceExponent = economyConfig.GetFloat("TeleportPriceExponent", 2f);
EnergyEfficiency = economyConfig.GetFloat("EnergyEfficiency", 1);
PriceObjectRent = economyConfig.GetFloat("PriceObjectRent", 1);
PriceObjectScaleFactor = economyConfig.GetFloat("PriceObjectScaleFactor", 10);
PriceParcelRent = economyConfig.GetInt("PriceParcelRent", 1);
PriceGroupCreate = economyConfig.GetInt("PriceGroupCreate", -1);
}
m_log.Info ("[FreeMoney] Getting btc config.");
m_gridCurrencyCode = config.GetString("GridCurrencyCode", "USD");
m_gridCurrencyText = config.GetString("GridCurrencyText", "US$");
m_gridCurrencySmallDenominationText = config.GetString("GridCurrencySmallDenominationText", "US$ cents");
m_gridCurrencySmallDenominationFraction = Convert.ToDecimal(config.GetFloat("GridCurrencySmallDenominationFraction", 100.0f));
m_btcNumberOfConfirmationsRequired = config.GetInt("BitcoinNumberOfConfirmations", 0);
m_btcconfig.Add("bitcoin_db_host", config.GetString ("BitcoinDBHost", "localhost"));
m_btcconfig.Add("bitcoin_db_name", config.GetString ("BitcoinDBName", "opensim_btc"));
m_btcconfig.Add("bitcoin_db_user", config.GetString ("BitcoinDBUser", "opensim_btc_user"));
m_btcconfig.Add("bitcoin_db_password", config.GetString ("BitcoinDBPassword", ""));
m_btcconfig.Add("bitcoin_external_url", config.GetString ("BitcoinServerExternalURL", ""));
m_btcconfig.Add("bitcoin_address_for_email_payer_name", config.GetString ("BitcoinEmailServicePayerName", "OpenSim Bitcoin Processor"));
m_btcconfig.Add("bitcoin_address_for_email_message_text", config.GetString ("BitcoinEmailServiceMessageText", "To make payments go directly to your own wallet in future instead of via email, please login and register some Bitcoin addresses."));
m_btcconfig.Add("bitcoin_address_for_email_service_1_url", config.GetString ("BitcoinEmailService1URL", "http://coinapult.com/payload/send/"));
m_btcconfig.Add("bitcoin_ping_service_1_agent_name", config.GetString ("BitcoinConfirmationService1AgentName", "opensim_bitcoin_dev_agent"));
m_btcconfig.Add("bitcoin_ping_service_1_base_url", config.GetString ("BitcoinConfirmationService1BaseURL", ""));
// If you put an agent ID in the config, this will save the money server somework.
m_btcconfig.Add("bitcoin_ping_service_1_agent_id", config.GetString ("BitcoinConfirmationService1AgentID", ""));
m_btcconfig.Add("bitcoin_ping_service_1_accesskey", config.GetString ("BitcoinConfirmationService1AccessKey", ""));
m_btcconfig.Add("bitcoin_ping_service_1_verificationkey", config.GetString ("BitcoinConfirmationService1VerificationKey", ""));
m_btcconfig.Add("bitcoin_exchange_rate_service_1_url", config.GetString ("BitcoinExchangeRateService1", "http://bitcoincharts.com/t/weighted_prices.json"));
// Fixed exchange rate.
// If this is zero, we'll use an external lookup service.
m_btcconfig.Add("bitcoin_exchange_rate", config.GetString("BitcoinExchangeRate", "0"));
//string baseUrl = m_scenes[0].RegionInfo.ExternalHostName + ":" + m_scenes[0].RegionInfo.HttpPort;
m_log.Info ("[FreeMoney] Got btc config.");
m_connectionString = "" +
"Server=" + m_btcconfig["bitcoin_db_host"]+";" +
"Database="+ m_btcconfig["bitcoin_db_name"]+";" +
"User ID=" + m_btcconfig["bitcoin_db_user"]+";" +
"Password="+ m_btcconfig["bitcoin_db_password"]+";" +
"Pooling=false";
m_log.Info ("[FreeMoney] Loaded.");
m_enabled = true;
}