Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ cloud-ai/models/
connector/dist/**
!connector/dist/.gitkeep
connector/installer/tools/*.exe
installer-site/*.exe

# IDE
.vs/
Expand Down
5 changes: 1 addition & 4 deletions backend/appsettings.json
Original file line number Diff line number Diff line change
Expand Up @@ -47,9 +47,6 @@
},
"ConnectorInstaller": {
"Version": "1.1.5",
"Path": "../installer-site",
"DownloadUrl": "https://installer-site-one.vercel.app/ONEVO-Connector-Setup-1.1.5.exe",
"SizeBytes": 98067717,
"Sha256": "4612e540532d54ae5940e24e62d207a60e4d3d1cc74bcad14f91c6b5e86cb7c4"
Comment on lines -52 to -53

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remediation recommended

2. External installer metadata disappears 🐞 Bug ≡ Correctness

The PR removes the configured size and SHA-256 while the new Compose override forwards only
CONNECTOR_INSTALLER_URL. When that URL is configured without another provider supplying metadata,
InstallerInfo returns size 0 and an empty hash, producing incorrect download metadata and
removing the published integrity value.
Agent Prompt
## Issue description
External installer mode no longer supplies the configured artifact size and SHA-256 to the backend.

## Issue Context
The environment template already defines `CONNECTOR_INSTALLER_SIZE_BYTES` and `CONNECTOR_INSTALLER_SHA256`. Map these variables to the corresponding ASP.NET configuration keys alongside the external download URL.

## Fix Focus Areas
- docker-compose.yml[86-88]
- backend/appsettings.json[48-50]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools

"Path": "../installer-site"
}
}
36 changes: 1 addition & 35 deletions connector/installer/onevo-connector.iss
Original file line number Diff line number Diff line change
Expand Up @@ -672,6 +672,7 @@ begin
SourceSetupSkipped := True;
Result := True;
end;
end;
if (CurPageID = RtspPage.ID) and not ValidateRtspUrls(RtspPage.Values[0]) then begin
MsgBox('Enter one or more valid rtsp:// URLs separated by semicolons.', mbError, MB_OK);
Result := False;
Expand Down Expand Up @@ -806,40 +807,5 @@ begin
' "connector_name": "' + JsonEscape(Trim(IdentityPage.Values[1])) + '",' + #13#10 +
' "sources": [' + SourcesJson + ']' + #13#10 +
'}' + #13#10;
RtspText := '';
OnvifText := '';
OnvifUser := '';
OnvifPass := '';
OnvifPort := 80;
SourceFile := '';
if SourcePage.SelectedValueIndex = 0 then
RtspText := Trim(RtspPage.Values[0])
else if SourcePage.SelectedValueIndex = 1 then begin
OnvifText := Trim(OnvifPage.Values[0]);
OnvifPort := StrToIntDef(Trim(OnvifPage.Values[1]), 80);
OnvifUser := Trim(OnvifPage.Values[2]);
OnvifPass := OnvifPage.Values[3];
end
else begin
MediaPath := ExpandConstant('{commonappdata}\ONEVO\Connector\media\installer-video.mp4');
if not CopyFile(FilePage.Values[0], MediaPath, False) then
RaiseException('Could not copy the selected MP4 video.');
SourceFile := MediaPath;
end;

ConfigPath := ExpandConstant('{commonappdata}\ONEVO\Connector\config.json');
Json := '{' + #13#10 +
' "setup_complete": false,' + #13#10 +
' "setup_code": "' + JsonEscape(Trim(IdentityPage.Values[0])) + '",' + #13#10 +
' "connector_name": "' + JsonEscape(Trim(IdentityPage.Values[1])) + '",' + #13#10 +
' "rtsp_text": "' + JsonEscape(RtspText) + '",' + #13#10 +
' "onvif_text": "' + JsonEscape(OnvifText) + '",' + #13#10 +
' "onvif_port": ' + IntToStr(OnvifPort) + ',' + #13#10 +
' "onvif_user": "' + JsonEscape(OnvifUser) + '",' + #13#10 +
' "onvif_pass": "' + JsonEscape(OnvifPass) + '",' + #13#10 +
' "source_file": "' + JsonEscape(SourceFile) + '",' + #13#10 +
' "loop_file": true,' + #13#10 +
' "sources": []' + #13#10 +
'}' + #13#10;
SaveStringToFile(ConfigPath, Json, False);
end;
1 change: 1 addition & 0 deletions docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,7 @@ services:
Pilot__AlertVisibilityMode: ${ALERT_VISIBILITY_MODE}
ConnectorInstaller__Version: ${CONNECTOR_INSTALLER_VERSION:-1.1.5}
ConnectorInstaller__Path: /app/connector-dist
ConnectorInstaller__DownloadUrl: ${CONNECTOR_INSTALLER_URL:-}

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Action required

1. Disk fallback mounts wrong directory 🐞 Bug ≡ Correctness

When CONNECTOR_INSTALLER_URL is unset, the backend uses disk fallback, but Compose mounts
./installer-site while the production workflow copies the generated EXE to
/opt/onevo/connector/dist. Consequently, the installer metadata and download endpoints return 404
after an otherwise successful production deployment.
Agent Prompt
## Issue description
The disk-backed installer deployment copies the generated EXE to a different host directory than the one mounted into the backend container, leaving the backend unable to find the installer.

## Issue Context
The installer workflow uploads to `/opt/onevo/connector/dist`, while Compose mounts `./installer-site` at `/app/connector-dist`. Make these paths identical, either by changing the volume source or the workflow upload destination.

## Fix Focus Areas
- docker-compose.yml[86-103]
- .github/workflows/deploy-mvp.yml[180-192]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools

Smtp__Enabled: ${SMTP_ENABLE:-false}
Smtp__Host: ${SMTP_HOST:-smtp.gmail.com}
Smtp__Port: ${SMTP_PORT:-587}
Expand Down
Binary file removed installer-site/ONEVO-Connector-Setup-1.1.0.exe
Binary file not shown.
Loading