########## lubelogger — bench probes, 2026-10-10T10:22:38Z ##########

=== 0.3 the image, its tags and its architectures ===
  ghcr.io/hargata/lubelogger:v1.7.3 -> [('linux', 'amd64'), ('linux', 'arm64')]
  image size: 266966427 bytes (8 layers)

=== 0.6 / 4.5 the image's own config ===
  ExposedPorts={"8080/tcp":{}} Entrypoint=null Cmd=["./CarCareTracker"] User="" WorkingDir=/App Healthcheck=null

=== 1.7 the image has NO entrypoint script at all — it execs the app. Its start-time switches are
    configuration keys, and ASP.NET reads them from (in this order) appsettings.json, the
    environment, then data/config/*.json. The shipped defaults:
    {
      "Logging": {
        "LogLevel": {
          "Default": "Information",
          "Microsoft.AspNetCore": "Warning"
        }
      },
      "AllowedHosts": "*",
      "UseDarkMode": false,
      "UseSystemColorMode": false,
      "EnableCsvImports": true,
      "UseMPG": true,
      "UseDescending": false,
      "EnableAuth": false,
      "DisableRegistration": false,
      "EnableRootUserOIDC": false,
      "HideZero": false,
      "AutomaticDecimalFormat": false,
      "EnableAutoReminderRefresh": false,
      "EnableAutoOdometerInsert": false,
      "EnableAutoFillOdometer":  false,
      "EnableShopSupplies": false,
      "ShowCalendar": true,
      "ShowVehicleThumbnail": true,
      "EnableExtraFieldColumns": false,
      "UseUKMPG": false,
      "UseThreeDecimalGasCost": true,
      "UseThreeDecimalGasConsumption": true,
      "UseMarkDownOnSavedNotes": false,
      "HideSoldVehicles": false,
      "PreferredGasMileageUnit": "",
      "UserColumnPreferences": [],
      "UseUnitForFuelCost": false,
      "PreferredGasUnit": "",
      "UserLanguage": "en_US",
      "VisibleTabs": [ 8 ],
      "TabOrder": [ 8, 9, 10, 0, 1, 4, 2, 7, 3, 6, 12, 13, 5 ],
      "DefaultTab": 8,
      "UserNameHash": "",
      "UserPasswordHash": "",
      "DefaultReminderEmail": ""
    }

=== 4.1 which HTTP clients the image carries (this is why the healthcheck is a fifth family) ===
  curl       MISSING
  wget       MISSING
  nc         MISSING
  python3    MISSING
  perl       /usr/bin/perl
  ruby       MISSING
  node       MISSING
  bash       /usr/bin/bash
  sha256sum  /usr/bin/sha256sum
  openssl    /usr/bin/openssl

=== 3.1 the image's OWN default: what a stranger gets with no template ===
  the app answered 200 after 2s
  GET /                     -> 200
    title: <title>Garage - LubeLogger</title>
  GET /api/vehicles         -> 200
  GET /Home/Settings        -> 200
  POST /Vehicle/SaveVehicle -> 200 {"success":true,"message":""}
    and it came back: [{"id":1,"imageLocation":"/defaults/noimage.png","mapLocation":null,"year":2020,"make":"Stranger","model":"X","licensePl
  ^ THIS is the image's own default: no login at all, and a stranger WRITES.

=== the template's entrypoint, same image: auth on before the first byte ===
  t+1s  /api/vehicles=000000  /=000000
  t+2s  /api/vehicles=401  /=302
  the plaintext password in PID 1's environment: 0  (0 = the entrypoint unset it)
  what the app wrote to /App/data/config: 0 file(s)

=== 4.1 the compose healthcheck command, both directions ===
    against the app  rc=0
    against a dead port rc=1

=== 1.5 / 1.8 the process it runs and the environment it reports ===
        PID USER     COMMAND
          1 root     ./CarCareTracker
         69 root     bash -c ps -o pid,user,args | head -3
    SMTP Not Configured
          Now listening on: http://[::]:8080
          Hosting environment: Production

=== 0.4 every outbound host in the source, and what triggers it ===
    29:https://hargata.github.io/hargata/sponsors.json
    30:https://hargata.github.io/lubelog
    31:https://api.github.com/repos/hargata/lubelog/releases/latest
    323:https://lubelogger.com
    324:https://docs.lubelogger.com
    325:https://github.com/hargata/lubelog
    (sponsors: HomeController, a page the household opens; release check: APIController behind a
     checkForUpdate flag; translations: the household's own language download. Nothing at start.)

=== 3.10 where the client address is read, and what is decided on it ===
    /root/fit/lubelog/Controllers/LoginController.cs:521:                    string ipAddressToLog = Request.HttpContext?.Connection.RemoteIpAddress?.ToString() ?? string.Empty;
    /root/fit/lubelog/Controllers/LoginController.cs:523:                    if (Request.Headers.ContainsKey("X-Forwarded-For"))
    /root/fit/lubelog/Controllers/LoginController.cs:525:                        string forwardedIp = Request.Headers["X-Forwarded-For"].ToString();

=== 7.1 does it send mail? ===
    MailHelper references: 10
    SMTP is OFF unless MailConfig is set; the startup banner says 'SMTP Not Configured'.

=== 0.2 Hungarian: the project's own translation directory and the hu_HU file ===
    languages offered: 26 -> Europe has ['ro_RO', 'cs_CZ', 'de', 'en_GB', 'es_ES', 'fr', 'hu_HU', 'it_IT', 'nl', 'nl_BE', 'no', 'pl_PL', 'pt_PT', 'sl', 'uk', 'ru', 'sv', 'bg', 'ca']
    hu_HU: 403 keys, 3 still equal to the English key -> 99.3 % translated of what it covers
    de   : 559 keys (the fullest file) -> hu_HU covers 72 % of that key set; the rest falls back to English

########## end ##########
