This commit is contained in:
2
.vscode/launch.json
vendored
2
.vscode/launch.json
vendored
@@ -53,7 +53,7 @@
|
|||||||
"AYANOVA_FOLDER_USER_FILES": "c:\\temp\\RavenTestData\\userfiles",
|
"AYANOVA_FOLDER_USER_FILES": "c:\\temp\\RavenTestData\\userfiles",
|
||||||
"AYANOVA_FOLDER_BACKUP_FILES": "c:\\temp\\RavenTestData\\backupfiles",
|
"AYANOVA_FOLDER_BACKUP_FILES": "c:\\temp\\RavenTestData\\backupfiles",
|
||||||
"AYANOVA_FOLDER_TEMPORARY_SERVER_FILES": "c:\\temp\\RavenTestData\\tempfiles",
|
"AYANOVA_FOLDER_TEMPORARY_SERVER_FILES": "c:\\temp\\RavenTestData\\tempfiles",
|
||||||
"AYANOVA_SERVER_TEST_MODE": "false",
|
"AYANOVA_SERVER_TEST_MODE": "true",
|
||||||
"AYANOVA_SERVER_TEST_MODE_SEEDLEVEL": "small",
|
"AYANOVA_SERVER_TEST_MODE_SEEDLEVEL": "small",
|
||||||
"AYANOVA_SERVER_TEST_MODE_TZ_OFFSET": "-7",
|
"AYANOVA_SERVER_TEST_MODE_TZ_OFFSET": "-7",
|
||||||
"AYANOVA_BACKUP_PG_DUMP_PATH": "C:\\data\\code\\postgres_13\\bin\\"
|
"AYANOVA_BACKUP_PG_DUMP_PATH": "C:\\data\\code\\postgres_13\\bin\\"
|
||||||
|
|||||||
@@ -123,7 +123,7 @@ namespace AyaNova.Api.ControllerHelpers
|
|||||||
throw new System.NotSupportedException("ApiServerState:ApiErrorCode - No error code is associated with server state OPEN");
|
throw new System.NotSupportedException("ApiServerState:ApiErrorCode - No error code is associated with server state OPEN");
|
||||||
case ServerState.OpsOnly:
|
case ServerState.OpsOnly:
|
||||||
return ApiErrorCode.API_OPS_ONLY;
|
return ApiErrorCode.API_OPS_ONLY;
|
||||||
case ServerState.MigrateMode:
|
case ServerState.MigrateMode:
|
||||||
return ApiErrorCode.API_MIGRATE_MODE;
|
return ApiErrorCode.API_MIGRATE_MODE;
|
||||||
case ServerState.Closed:
|
case ServerState.Closed:
|
||||||
return ApiErrorCode.API_CLOSED;
|
return ApiErrorCode.API_CLOSED;
|
||||||
@@ -173,6 +173,14 @@ namespace AyaNova.Api.ControllerHelpers
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public bool IsMigrateMode
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return _currentState == ServerState.MigrateMode && !SYSTEM_LOCK;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public bool IsOpen
|
public bool IsOpen
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
@@ -190,13 +198,13 @@ namespace AyaNova.Api.ControllerHelpers
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool IsOpenOrOpsOnly
|
// public bool IsOpenOrOpsOnly
|
||||||
{
|
// {
|
||||||
get
|
// get
|
||||||
{
|
// {
|
||||||
return (IsOpen || IsOpsOnly) && !SYSTEM_LOCK;
|
// return (IsOpen || IsOpsOnly) && !SYSTEM_LOCK;
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
|
||||||
public bool IsSystemLocked
|
public bool IsSystemLocked
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -168,10 +168,10 @@ namespace AyaNova.Api.Controllers
|
|||||||
{
|
{
|
||||||
//Valid password, user is effectively authorized at this point
|
//Valid password, user is effectively authorized at this point
|
||||||
|
|
||||||
//check if server closed
|
//check if server available to SuperUser account only (closed or migrate mode)
|
||||||
//if it is it means we got here only because there is no license
|
//if it is it means we got here either because there is no license
|
||||||
//and only *the* SuperUser account can login now
|
//and only *the* SuperUser account can login now or we're in migrate mode
|
||||||
if (serverState.IsClosed)
|
if (serverState.IsClosed || serverState.IsMigrateMode)
|
||||||
{
|
{
|
||||||
//if not SuperUser account then boot closed
|
//if not SuperUser account then boot closed
|
||||||
//SuperUser account is always ID 1
|
//SuperUser account is always ID 1
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ namespace AyaNova.Api.Controllers
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Get server state
|
/// Get server state
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <returns>Current server state (Closed, OpsOnly, Open)</returns>
|
/// <returns>Current server state (Closed, MigrateMode, OpsOnly, Open)</returns>
|
||||||
[HttpGet]
|
[HttpGet]
|
||||||
public ActionResult Get()
|
public ActionResult Get()
|
||||||
{
|
{
|
||||||
@@ -79,8 +79,29 @@ namespace AyaNova.Api.Controllers
|
|||||||
if (desiredState == ApiServerState.ServerState.Closed)
|
if (desiredState == ApiServerState.ServerState.Closed)
|
||||||
return BadRequest(new ApiErrorResponse(ApiErrorCode.VALIDATION_INVALID_VALUE, null, "Invalid state - must be one of \"OpsOnly\", \"MigrateMode\" or \"Open\""));
|
return BadRequest(new ApiErrorResponse(ApiErrorCode.VALIDATION_INVALID_VALUE, null, "Invalid state - must be one of \"OpsOnly\", \"MigrateMode\" or \"Open\""));
|
||||||
|
|
||||||
|
var TransId = UserTranslationIdFromContext.Id(HttpContext.Items);
|
||||||
|
|
||||||
log.LogInformation($"ServerState change request by user {UserNameFromContext.Name(HttpContext.Items)} from current state of \"{serverState.GetState().ToString()}\" to \"{desiredState.ToString()}-{state.Reason}\"");
|
log.LogInformation($"ServerState change request by user {UserNameFromContext.Name(HttpContext.Items)} from current state of \"{serverState.GetState().ToString()}\" to \"{desiredState.ToString()}-{state.Reason}\"");
|
||||||
|
|
||||||
|
//Add a message if user didn't enter one so other users know why they can't login
|
||||||
|
if (string.IsNullOrWhiteSpace(state.Reason))
|
||||||
|
{
|
||||||
|
switch (desiredState)
|
||||||
|
{
|
||||||
|
case ApiServerState.ServerState.Open:
|
||||||
|
break;
|
||||||
|
case ApiServerState.ServerState.MigrateMode:
|
||||||
|
state.Reason += await TranslationBiz.GetTranslationStaticAsync("ServerStateLoginRestricted", TransId, ct) + " " + await TranslationBiz.GetTranslationStaticAsync("ServerStateMigrateMode", TransId, ct);
|
||||||
|
break;
|
||||||
|
case ApiServerState.ServerState.OpsOnly:
|
||||||
|
state.Reason += await TranslationBiz.GetTranslationStaticAsync("ServerStateLoginRestricted", TransId, ct) + " " + await TranslationBiz.GetTranslationStaticAsync("ServerStateOps", TransId, ct);
|
||||||
|
break;
|
||||||
|
case ApiServerState.ServerState.Closed:
|
||||||
|
state.Reason += await TranslationBiz.GetTranslationStaticAsync("ServerStateLoginRestricted", TransId, ct) + " " + await TranslationBiz.GetTranslationStaticAsync("ErrorAPI2000", TransId, ct);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
serverState.SetState(desiredState, state.Reason);
|
serverState.SetState(desiredState, state.Reason);
|
||||||
|
|
||||||
//Log
|
//Log
|
||||||
|
|||||||
@@ -1781,6 +1781,7 @@
|
|||||||
"ServerStateOps": "Nur Systembetrieb",
|
"ServerStateOps": "Nur Systembetrieb",
|
||||||
"ServerStateMigrateMode": "Server-Migrationsmodus",
|
"ServerStateMigrateMode": "Server-Migrationsmodus",
|
||||||
"ServerStateReason": "Grund",
|
"ServerStateReason": "Grund",
|
||||||
|
"ServerStateLoginRestricted": "Anmeldung aufgrund der Serverstatuseinstellung eingeschränkt",
|
||||||
"TooManyResults": "Zu viele Ergebnisse, um alle anzuzeigen",
|
"TooManyResults": "Zu viele Ergebnisse, um alle anzuzeigen",
|
||||||
"NoResults": "Keine Ergebnisse",
|
"NoResults": "Keine Ergebnisse",
|
||||||
"EventTextra": "Anmerkungen",
|
"EventTextra": "Anmerkungen",
|
||||||
|
|||||||
@@ -1781,6 +1781,7 @@
|
|||||||
"ServerStateOps": "Server operations only",
|
"ServerStateOps": "Server operations only",
|
||||||
"ServerStateMigrateMode": "Server migration mode",
|
"ServerStateMigrateMode": "Server migration mode",
|
||||||
"ServerStateReason": "Reason",
|
"ServerStateReason": "Reason",
|
||||||
|
"ServerStateLoginRestricted": "Login restricted due to server state setting",
|
||||||
"TooManyResults": "Too many results to show all",
|
"TooManyResults": "Too many results to show all",
|
||||||
"NoResults": "No results",
|
"NoResults": "No results",
|
||||||
"EventTextra": "Notes",
|
"EventTextra": "Notes",
|
||||||
|
|||||||
@@ -1781,6 +1781,7 @@
|
|||||||
"ServerStateOps": "Solo operaciones del sistema",
|
"ServerStateOps": "Solo operaciones del sistema",
|
||||||
"ServerStateMigrateMode": "Modo de migración del servidor",
|
"ServerStateMigrateMode": "Modo de migración del servidor",
|
||||||
"ServerStateReason": "Razón",
|
"ServerStateReason": "Razón",
|
||||||
|
"ServerStateLoginRestricted": "Inicio de sesión restringido debido a la configuración del estado del servidor",
|
||||||
"TooManyResults": "Demasiados resultados para mostrar todos",
|
"TooManyResults": "Demasiados resultados para mostrar todos",
|
||||||
"NoResults": "No hay resultados",
|
"NoResults": "No hay resultados",
|
||||||
"EventTextra": "Notas",
|
"EventTextra": "Notas",
|
||||||
|
|||||||
@@ -1781,6 +1781,7 @@
|
|||||||
"ServerStateOps": "Opérations système uniquement",
|
"ServerStateOps": "Opérations système uniquement",
|
||||||
"ServerStateMigrateMode": "Mode de migration du serveur",
|
"ServerStateMigrateMode": "Mode de migration du serveur",
|
||||||
"ServerStateReason": "Objectif",
|
"ServerStateReason": "Objectif",
|
||||||
|
"ServerStateLoginRestricted": "Connexion restreinte en raison du paramètre d'état du serveur",
|
||||||
"TooManyResults": "Trop de résultats pour tout montrer",
|
"TooManyResults": "Trop de résultats pour tout montrer",
|
||||||
"NoResults": "Aucun résultat",
|
"NoResults": "Aucun résultat",
|
||||||
"EventTextra": "Remarques",
|
"EventTextra": "Remarques",
|
||||||
|
|||||||
@@ -401,11 +401,16 @@ namespace AyaNova.Util
|
|||||||
cmd.CommandText = "ALTER SEQUENCE auser_id_seq RESTART WITH 2;";
|
cmd.CommandText = "ALTER SEQUENCE auser_id_seq RESTART WITH 2;";
|
||||||
await cmd.ExecuteNonQueryAsync();
|
await cmd.ExecuteNonQueryAsync();
|
||||||
|
|
||||||
|
|
||||||
cmd.CommandText = "delete from \"adashboardview\" where userid <> 1;";
|
cmd.CommandText = "delete from \"adashboardview\" where userid <> 1;";
|
||||||
|
await cmd.ExecuteNonQueryAsync();
|
||||||
|
cmd.CommandText = $"ALTER SEQUENCE adashboardview_id_seq RESTART WITH 2;";
|
||||||
await cmd.ExecuteNonQueryAsync();
|
await cmd.ExecuteNonQueryAsync();
|
||||||
|
|
||||||
cmd.CommandText = "delete from \"apartwarehouse\" where id <> 1;";
|
cmd.CommandText = "delete from \"apartwarehouse\" where id <> 1;";
|
||||||
await cmd.ExecuteNonQueryAsync();
|
await cmd.ExecuteNonQueryAsync();
|
||||||
|
cmd.CommandText = $"ALTER SEQUENCE apartwarehouse_id_seq RESTART WITH 2;";
|
||||||
|
await cmd.ExecuteNonQueryAsync();
|
||||||
}
|
}
|
||||||
|
|
||||||
await conn.CloseAsync();
|
await conn.CloseAsync();
|
||||||
|
|||||||
Reference in New Issue
Block a user