OpenALPR Webhook Processor for IP Cameras

when you upgrade it's going to switch over to the new authentication method, your user will be deleted and you'll need to recreate one when you reload the page. other than that nothing you need to do!
 
I
Yes, I actually have my agent sending data directly to the app, bypassing rekor's website.
I tried installing it on my windows machine and it is giving me an error with the database.
Edit: Here is the log:
Microsoft Windows [Version 10.0.26100.4946]
(c) Microsoft Corporation. All rights reserved.

C:\OpenAlprWebHookProcessor-v6.0.2-windows64>dotnet ./OpenAlprWebhookProcessor.dll
Could not execute because the specified command or file was not found.
Possible reasons for this include:
* You misspelled a built-in dotnet command.
* You intended to execute a .NET program, but dotnet-./OpenAlprWebhookProcessor.dll does not exist.
* You intended to run a global tool, but a dotnet-prefixed executable with this name could not be found on the PATH.

C:\OpenAlprWebHookProcessor-v6.0.2-windows64>dotnet ./OpenAlprWebhookProcessor.Server.dll
[09:40:33 INF] User profile is available. Using 'C:\Users\Xeon\AppData\Local\ASP.NET\DataProtection-Keys' as key repository and Windows DPAPI to encrypt keys at rest.
[09:40:34 INF] SimpleCameraScheduler hosted service starting
[09:40:34 INF] Starting simple camera scheduler
[09:40:34 INF] Resetting all cameras to correct day/night mode
[09:40:34 WRN] The query uses the 'First'/'FirstOrDefault' operator without 'OrderBy' and filter operators. This may lead to unpredictable results.
[09:40:34 ERR] Failed executing DbCommand (2ms) [Parameters=[], CommandType='Text', CommandTimeout='30']
SELECT "c"."Id", "c"."CameraPassword", "c"."CameraUsername", "c"."DayFocus", "c"."DayZoom", "c"."IpAddress", "c"."LatestProcessedPlateUuid", "c"."Latitude", "c"."Longitude", "c"."Manufacturer", "c"."ModelNumber", "c"."NextClearOverlayScheduleId", "c"."NextDayNightScheduleId", "c"."NightFocus", "c"."NightZoom", "c"."OpenAlprCameraId", "c"."OpenAlprEnabled", "c"."OpenAlprName", "c"."PlatesSeen", "c"."SunriseOffset", "c"."SunsetOffset", "c"."TimezoneOffset", "c"."UpdateDayNightModeEnabled", "c"."UpdateDayNightModeUrl", "c"."UpdateOverlayEnabled", "c"."UpdateOverlayTextUrl"
FROM "Cameras" AS "c"
WHERE "c"."UpdateDayNightModeEnabled"
[09:40:34 ERR] Failed executing DbCommand (13ms) [Parameters=[], CommandType='Text', CommandTimeout='30']
SELECT "w"."Id", "w"."IsEnabled", "w"."PrivateKey", "w"."PublicKey", "w"."SendEveryPlateEnabled", "w"."Subject"
FROM "WebPushSettings" AS "w"
LIMIT 1
[09:40:34 ERR] An exception occurred while iterating over the results of a query for context type 'OpenAlprWebhookProcessor.Data.ProcessorContext'.
Microsoft.Data.Sqlite.SqliteException (0x80004005): SQLite Error 1: 'no such table: Cameras'.
at Microsoft.Data.Sqlite.SqliteException.ThrowExceptionForRC(Int32 rc, sqlite3 db)
at Microsoft.Data.Sqlite.SqliteCommand.PrepareAndEnumerateStatements()+MoveNext()
at Microsoft.Data.Sqlite.SqliteCommand.GetStatements()+MoveNext()
at Microsoft.Data.Sqlite.SqliteDataReader.NextResult()
at Microsoft.Data.Sqlite.SqliteCommand.ExecuteReader(CommandBehavior behavior)
at Microsoft.Data.Sqlite.SqliteCommand.ExecuteReaderAsync(CommandBehavior behavior, CancellationToken cancellationToken)
at Microsoft.Data.Sqlite.SqliteCommand.ExecuteDbDataReaderAsync(CommandBehavior behavior, CancellationToken cancellationToken)
at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.ExecuteReaderAsync(RelationalCommandParameterObject parameterObject, CancellationToken cancellationToken)
at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.ExecuteReaderAsync(RelationalCommandParameterObject parameterObject, CancellationToken cancellationToken)
at Microsoft.EntityFrameworkCore.Query.Internal.SingleQueryingEnumerable`1.AsyncEnumerator.InitializeReaderAsync(AsyncEnumerator enumerator, CancellationToken cancellationToken)
at Microsoft.EntityFrameworkCore.Query.Internal.SingleQueryingEnumerable`1.AsyncEnumerator.MoveNextAsync()
Microsoft.Data.Sqlite.SqliteException (0x80004005): SQLite Error 1: 'no such table: Cameras'.
at Microsoft.Data.Sqlite.SqliteException.ThrowExceptionForRC(Int32 rc, sqlite3 db)
at Microsoft.Data.Sqlite.SqliteCommand.PrepareAndEnumerateStatements()+MoveNext()
at Microsoft.Data.Sqlite.SqliteCommand.GetStatements()+MoveNext()
at Microsoft.Data.Sqlite.SqliteDataReader.NextResult()
at Microsoft.Data.Sqlite.SqliteCommand.ExecuteReader(CommandBehavior behavior)
at Microsoft.Data.Sqlite.SqliteCommand.ExecuteReaderAsync(CommandBehavior behavior, CancellationToken cancellationToken)
at Microsoft.Data.Sqlite.SqliteCommand.ExecuteDbDataReaderAsync(CommandBehavior behavior, CancellationToken cancellationToken)
at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.ExecuteReaderAsync(RelationalCommandParameterObject parameterObject, CancellationToken cancellationToken)
at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.ExecuteReaderAsync(RelationalCommandParameterObject parameterObject, CancellationToken cancellationToken)
at Microsoft.EntityFrameworkCore.Query.Internal.SingleQueryingEnumerable`1.AsyncEnumerator.InitializeReaderAsync(AsyncEnumerator enumerator, CancellationToken cancellationToken)
at Microsoft.EntityFrameworkCore.Query.Internal.SingleQueryingEnumerable`1.AsyncEnumerator.MoveNextAsync()
[09:40:34 ERR] An exception occurred while iterating over the results of a query for context type 'OpenAlprWebhookProcessor.Data.ProcessorContext'.
Microsoft.Data.Sqlite.SqliteException (0x80004005): SQLite Error 1: 'no such table: WebPushSettings'.
at Microsoft.Data.Sqlite.SqliteException.ThrowExceptionForRC(Int32 rc, sqlite3 db)
at Microsoft.Data.Sqlite.SqliteCommand.PrepareAndEnumerateStatements()+MoveNext()
at Microsoft.Data.Sqlite.SqliteCommand.GetStatements()+MoveNext()
at Microsoft.Data.Sqlite.SqliteDataReader.NextResult()
at Microsoft.Data.Sqlite.SqliteCommand.ExecuteReader(CommandBehavior behavior)
at Microsoft.Data.Sqlite.SqliteCommand.ExecuteReaderAsync(CommandBehavior behavior, CancellationToken cancellationToken)
at Microsoft.Data.Sqlite.SqliteCommand.ExecuteDbDataReaderAsync(CommandBehavior behavior, CancellationToken cancellationToken)
at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.ExecuteReaderAsync(RelationalCommandParameterObject parameterObject, CancellationToken cancellationToken)
at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.ExecuteReaderAsync(RelationalCommandParameterObject parameterObject, CancellationToken cancellationToken)
at Microsoft.EntityFrameworkCore.Query.Internal.SingleQueryingEnumerable`1.AsyncEnumerator.InitializeReaderAsync(AsyncEnumerator enumerator, CancellationToken cancellationToken)
at Microsoft.EntityFrameworkCore.Query.Internal.SingleQueryingEnumerable`1.AsyncEnumerator.MoveNextAsync()
Microsoft.Data.Sqlite.SqliteException (0x80004005): SQLite Error 1: 'no such table: WebPushSettings'.
at Microsoft.Data.Sqlite.SqliteException.ThrowExceptionForRC(Int32 rc, sqlite3 db)
at Microsoft.Data.Sqlite.SqliteCommand.PrepareAndEnumerateStatements()+MoveNext()
at Microsoft.Data.Sqlite.SqliteCommand.GetStatements()+MoveNext()
at Microsoft.Data.Sqlite.SqliteDataReader.NextResult()
at Microsoft.Data.Sqlite.SqliteCommand.ExecuteReader(CommandBehavior behavior)
at Microsoft.Data.Sqlite.SqliteCommand.ExecuteReaderAsync(CommandBehavior behavior, CancellationToken cancellationToken)
at Microsoft.Data.Sqlite.SqliteCommand.ExecuteDbDataReaderAsync(CommandBehavior behavior, CancellationToken cancellationToken)
at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.ExecuteReaderAsync(RelationalCommandParameterObject parameterObject, CancellationToken cancellationToken)
at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.ExecuteReaderAsync(RelationalCommandParameterObject parameterObject, CancellationToken cancellationToken)
at Microsoft.EntityFrameworkCore.Query.Internal.SingleQueryingEnumerable`1.AsyncEnumerator.InitializeReaderAsync(AsyncEnumerator enumerator, CancellationToken cancellationToken)
at Microsoft.EntityFrameworkCore.Query.Internal.SingleQueryingEnumerable`1.AsyncEnumerator.MoveNextAsync()
[09:40:34 ERR] SimpleCameraScheduler hosted service encountered an error
Microsoft.Data.Sqlite.SqliteException (0x80004005): SQLite Error 1: 'no such table: Cameras'.
at Microsoft.Data.Sqlite.SqliteException.ThrowExceptionForRC(Int32 rc, sqlite3 db)
at Microsoft.Data.Sqlite.SqliteCommand.PrepareAndEnumerateStatements()+MoveNext()
at Microsoft.Data.Sqlite.SqliteCommand.GetStatements()+MoveNext()
at Microsoft.Data.Sqlite.SqliteDataReader.NextResult()
at Microsoft.Data.Sqlite.SqliteCommand.ExecuteReader(CommandBehavior behavior)
at Microsoft.Data.Sqlite.SqliteCommand.ExecuteReaderAsync(CommandBehavior behavior, CancellationToken cancellationToken)
at Microsoft.Data.Sqlite.SqliteCommand.ExecuteDbDataReaderAsync(CommandBehavior behavior, CancellationToken cancellationToken)
at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.ExecuteReaderAsync(RelationalCommandParameterObject parameterObject, CancellationToken cancellationToken)
at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.ExecuteReaderAsync(RelationalCommandParameterObject parameterObject, CancellationToken cancellationToken)
at Microsoft.EntityFrameworkCore.Query.Internal.SingleQueryingEnumerable`1.AsyncEnumerator.InitializeReaderAsync(AsyncEnumerator enumerator, CancellationToken cancellationToken)
at Microsoft.EntityFrameworkCore.Query.Internal.SingleQueryingEnumerable`1.AsyncEnumerator.MoveNextAsync()
at Microsoft.EntityFrameworkCore.EntityFrameworkQueryableExtensions.ToListAsync[TSource](IQueryable`1 source, CancellationToken cancellationToken)
at Microsoft.EntityFrameworkCore.EntityFrameworkQueryableExtensions.ToListAsync[TSource](IQueryable`1 source, CancellationToken cancellationToken)
at OpenAlprWebhookProcessor.Data.Repositories.Repository`1.FindAsync(Expression`1 predicate, CancellationToken cancellationToken) in /home/runner/work/OpenAlprWebhookProcessor/OpenAlprWebhookProcessor/OpenAlprWebhookProcessor.Server/Data/Repositories/Repository.cs:line 35
at OpenAlprWebhookProcessor.CameraUpdateService.SimpleCameraScheduler.ResetAllCamerasAsync(CancellationToken cancellationToken) in /home/runner/work/OpenAlprWebhookProcessor/OpenAlprWebhookProcessor/OpenAlprWebhookProcessor.Server/CameraUpdateService/SimpleCameraScheduler.cs:line 90
at OpenAlprWebhookProcessor.CameraUpdateService.SimpleCameraScheduler.StartAsync(CancellationToken cancellationToken) in /home/runner/work/OpenAlprWebhookProcessor/OpenAlprWebhookProcessor/OpenAlprWebhookProcessor.Server/CameraUpdateService/SimpleCameraScheduler.cs:line 47
at OpenAlprWebhookProcessor.CameraUpdateService.SimpleCameraSchedulerHostedService.ExecuteAsync(CancellationToken stoppingToken) in /home/runner/work/OpenAlprWebhookProcessor/OpenAlprWebhookProcessor/OpenAlprWebhookProcessor.Server/CameraUpdateService/SimpleCameraSchedulerHostedService.cs:line 27
[09:40:34 INF] WebsocketClientOrganizerHostedService cancellation requested
System.Threading.Tasks.TaskCanceledException: A task was canceled.
at OpenAlprWebhookProcessor.Features.Webhooks.WebhookProcessor.OpenAlprWebsocket.WebsocketClientOrganizerHostedService.ExecuteAsync(CancellationToken stoppingToken) in /home/runner/work/OpenAlprWebhookProcessor/OpenAlprWebhookProcessor/OpenAlprWebhookProcessor.Server/Features/Webhooks/WebhookProcessor/OpenAlprWebsocket/WebSocketClientOrganizerHostedService.cs:line 31
[09:40:34 INF] HydrationHostedService starting...
[09:40:34 INF] Disconnecting all websocket clients...
[09:40:34 INF] Disconnecting all 0 websocket clients
[09:40:34 INF] All websocket clients disconnected
[09:40:34 WRN] The query uses the 'First'/'FirstOrDefault' operator without 'OrderBy' and filter operators. This may lead to unpredictable results.
[09:40:34 ERR] An error occurred using the connection to database 'main' on server 'config/processor.db'.
[09:40:34 FTL] Host terminated unexpectedly
System.Threading.Tasks.TaskCanceledException: A task was canceled.
at Microsoft.EntityFrameworkCore.Storage.RelationalConnection.OpenInternalAsync(Boolean errorsExpected, CancellationToken cancellationToken)
at Microsoft.EntityFrameworkCore.Storage.RelationalConnection.OpenInternalAsync(Boolean errorsExpected, CancellationToken cancellationToken)
at Microsoft.EntityFrameworkCore.Storage.RelationalConnection.OpenAsync(CancellationToken cancellationToken, Boolean errorsExpected)
at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.ExecuteReaderAsync(RelationalCommandParameterObject parameterObject, CancellationToken cancellationToken)
at Microsoft.EntityFrameworkCore.Query.Internal.SingleQueryingEnumerable`1.AsyncEnumerator.InitializeReaderAsync(AsyncEnumerator enumerator, CancellationToken cancellationToken)
at Microsoft.EntityFrameworkCore.Query.Internal.SingleQueryingEnumerable`1.AsyncEnumerator.MoveNextAsync()
at Microsoft.EntityFrameworkCore.Query.ShapedQueryCompilingExpressionVisitor.SingleOrDefaultAsync[TSource](IAsyncEnumerable`1 asyncEnumerable, CancellationToken cancellationToken)
at Microsoft.EntityFrameworkCore.Query.ShapedQueryCompilingExpressionVisitor.SingleOrDefaultAsync[TSource](IAsyncEnumerable`1 asyncEnumerable, CancellationToken cancellationToken)
at OpenAlprWebhookProcessor.Data.Repositories.AgentRepository.GetFirstAgentAsync(CancellationToken cancellationToken) in /home/runner/work/OpenAlprWebhookProcessor/OpenAlprWebhookProcessor/OpenAlprWebhookProcessor.Server/Data/Repositories/AgentRepository.cs:line 15
at OpenAlprWebhookProcessor.Hydrator.HydrationService.ScheduleHydrationAsync(CancellationToken cancellationToken) in /home/runner/work/OpenAlprWebhookProcessor/OpenAlprWebhookProcessor/OpenAlprWebhookProcessor.Server/Hydration/HydrationService.cs:line 74
at OpenAlprWebhookProcessor.Hydrator.HydrationHostedService.ExecuteAsync(CancellationToken stoppingToken) in /home/runner/work/OpenAlprWebhookProcessor/OpenAlprWebhookProcessor/OpenAlprWebhookProcessor.Server/Hydration/HydrationHostedService.cs:line 40
at Microsoft.Extensions.Hosting.Internal.Host.<StartAsync>b__14_1(IHostedService service, CancellationToken token)
at Microsoft.Extensions.Hosting.Internal.Host.ForeachService[T](IEnumerable`1 services, CancellationToken token, Boolean concurrent, Boolean abortOnFirstException, List`1 exceptions, Func`3 operation)
at Microsoft.Extensions.Hosting.Internal.Host.StartAsync(CancellationToken cancellationToken)
at Microsoft.Extensions.Hosting.HostingAbstractionsHostExtensions.RunAsync(IHost host, CancellationToken token)
at Microsoft.Extensions.Hosting.HostingAbstractionsHostExtensions.RunAsync(IHost host, CancellationToken token)
at OpenAlprWebhookProcessor.Program.Main(String[] args) in /home/runner/work/OpenAlprWebhookProcessor/OpenAlprWebhookProcessor/OpenAlprWebhookProcessor.Server/Program.cs:line 72

C:\OpenAlprWebHookProcessor-v6.0.2-windows64>
 
Last edited:
@mlapaglia Amazing work... how long could it take to load up all data...?

Upgrade on docker container was seamless..

My previous 5.3.0 Db size : )

1756052162097.png

1756052137499.png
 
Last edited:
I am starting from scratch on a whole new VM

What user does the container run as? Wondering what the permissions should be like for the config folder
 
Not sure what I'm doing wrong really, I set 777 permissions on the folder for now, just so no matter what, it could write. Got logged in and I can save settings etc, so clearly that works

However, pushover will fail to test right away, even though it has the same settings as my old install which works fine

The agent also will not start, despite having the exact same settings. It fails instantly like it never tries and gives this in the log

13:11:13 INF] Request finished HTTP/1.1 POST - 400 null application/problem+json; charset=utf-8 4.4812ms

Any ideas? New UI looks AWESOME.
 
Well, I guess nevermind. Just got the email from Rekor that they are increasing the price to $12/mo per camera. I though the jump to $10/mo per camera was already too high, just had not got around to looking into alternatives

$12/mo just is unacceptable IMO, cancelled the subscription
 
  • Like
Reactions: Vettester