commit 135d258eb3c2eac6925cfeb85d36a1f1c43d75fc
parent 12138ed7f9cb90d273221838274a071cf7061a8a
Author: ms <ms@taler.net>
Date: Thu, 19 May 2022 07:10:34 +0200
set/show config values. CLI: account deletion
Diffstat:
3 files changed, 72 insertions(+), 30 deletions(-)
diff --git a/cli/bin/libeufin-cli b/cli/bin/libeufin-cli
@@ -1262,6 +1262,26 @@ def sandbox_demobank_info(obj, bank_account):
exit(1)
tell_user(resp, withsuccess=True)
+@sandbox_demobank.command("delete",
+ help="""delete the bank account pointed by LIBEUFIN_SANDBOX_{USERNAME, PASSWORD}."""
+)
+@click.pass_obj
+def sandbox_demobank_register(obj, public, name):
+ url = obj.access_api_url ("/testing/unregister")
+ req = dict(username=obj.username, password=obj.password, isPublic=public)
+ if name != "":
+ req.update(name=name)
+ try:
+ resp = post(
+ url,
+ json=req,
+ )
+ except Exception as e:
+ print(e)
+ print("Could not reach sandbox at " + url)
+ exit(1)
+ check_response_status(resp)
+
@sandbox_demobank.command("register",
help="""register a new bank account. Credentials will be taken
from the LIBEUFIN_SANDBOX_{USERNAME, PASSWORD} env variables. Note
diff --git a/sandbox/src/main/kotlin/tech/libeufin/sandbox/Main.kt b/sandbox/src/main/kotlin/tech/libeufin/sandbox/Main.kt
@@ -64,6 +64,7 @@ import io.ktor.util.*
import io.ktor.util.date.*
import kotlinx.coroutines.newSingleThreadContext
import org.jetbrains.exposed.sql.*
+import org.jetbrains.exposed.sql.SqlExpressionBuilder.eq
import org.jetbrains.exposed.sql.statements.api.ExposedBlob
import org.jetbrains.exposed.sql.transactions.experimental.newSuspendedTransaction
import org.jetbrains.exposed.sql.transactions.transaction
@@ -134,13 +135,12 @@ class Config : CliktCommand(
}
private val nameArgument by argument(
- "NAME", help = "Name of this configuration"
+ "NAME", help = "Name of this configuration. Currently, only 'default' is admitted."
)
- private val overrideOption by option(
- "--override",
- help = "Override an existing --with/--without -registrations policy." +
- " It has NO effect on other options"
- ).flag("--no-override", default = false)
+ private val showOption by option(
+ "--show",
+ help = "Only show values, other options will be ignored."
+ ).flag("--no-show", default = false)
private val currencyOption by option("--currency").default("EUR")
private val bankDebtLimitOption by option("--bank-debt-limit").int().default(1000000)
private val usersDebtLimitOption by option("--users-debt-limit").int().default(1000)
@@ -155,37 +155,56 @@ class Config : CliktCommand(
override fun run() {
val dbConnString = getDbConnFromEnv(SANDBOX_DB_ENV_VAR_NAME)
+ if (nameArgument != "default") {
+ println("This version admits only the 'default' name")
+ exitProcess(1)
+ }
execThrowableOrTerminate {
dbCreateTables(dbConnString)
transaction {
- val maybeDemobank = DemobankConfigEntity.find {
- DemobankConfigsTable.name eq nameArgument
- }.firstOrNull()
- if (maybeDemobank != null) {
- if (overrideOption) {
- println("Overriding the registration policy to: "
- + allowRegistrationsOption)
- maybeDemobank.allowRegistrations = allowRegistrationsOption
+ val maybeDemobank = BankAccountEntity.find(BankAccountsTable.label eq "bank").firstOrNull()
+ if (showOption) {
+ if (maybeDemobank != null) {
+ println(
+ object {
+ val currency = maybeDemobank.demoBank.currency
+ val bankDebtLimit = maybeDemobank.demoBank.bankDebtLimit
+ val usersDebtLimit = maybeDemobank.demoBank.usersDebtLimit
+ val allowRegistrations = maybeDemobank.demoBank.allowRegistrations
+ val name = maybeDemobank.demoBank.name // always 'default'
+ val withSignupBonus = maybeDemobank.demoBank.withSignupBonus
+ }
+ )
return@transaction
}
- println("Error, demobank ${nameArgument} exists already, not overriding it.")
- exitProcess(1)
+ println("Nothing to show")
+ return@transaction
}
- val demoBank = DemobankConfigEntity.new {
- currency = currencyOption
- bankDebtLimit = bankDebtLimitOption
- usersDebtLimit = usersDebtLimitOption
- allowRegistrations = allowRegistrationsOption
- name = nameArgument
- this.withSignupBonus = withSignupBonusOption
- }
- BankAccountEntity.new {
- iban = getIban()
- label = "bank" // used by the wire helper
- owner = "bank" // used by the person name finder
- // For now, the model assumes always one demobank
- this.demoBank = demoBank
+ if (maybeDemobank == null) {
+ val demoBank = DemobankConfigEntity.new {
+ currency = currencyOption
+ bankDebtLimit = bankDebtLimitOption
+ usersDebtLimit = usersDebtLimitOption
+ allowRegistrations = allowRegistrationsOption
+ name = nameArgument
+ this.withSignupBonus = withSignupBonusOption
+ }
+ BankAccountEntity.new {
+ iban = getIban()
+ label = "bank" // used by the wire helper
+ owner = "bank" // used by the person name finder
+ // For now, the model assumes always one demobank
+ this.demoBank = demoBank
+ }
+ return@transaction
}
+ println("Overriding existing values")
+ maybeDemobank.demoBank.currency = currencyOption
+ maybeDemobank.demoBank.bankDebtLimit = bankDebtLimitOption
+ maybeDemobank.demoBank.usersDebtLimit = usersDebtLimitOption
+ maybeDemobank.demoBank.allowRegistrations = allowRegistrationsOption
+ maybeDemobank.demoBank.withSignupBonus = withSignupBonusOption
+ maybeDemobank.demoBank.name = nameArgument
}
}
}
diff --git a/util/src/main/kotlin/HTTP.kt b/util/src/main/kotlin/HTTP.kt
@@ -83,6 +83,9 @@ fun conflict(msg: String): UtilError {
fun ApplicationRequest.getBaseUrl(): String {
return if (this.headers.contains("X-Forwarded-Host")) {
logger.info("Building X-Forwarded- base URL")
+ /**
+ * FIXME: should tolerate a missing X-Forwarded-Prefix.
+ */
var prefix: String = this.headers.get("X-Forwarded-Prefix")
?: throw internalServerError("Reverse proxy did not define X-Forwarded-Prefix")
if (!prefix.endsWith("/"))