Remove legacy steamcmd and SCUM runtime coupling

This commit is contained in:
npc0-hue
2026-09-04 12:37:39 +08:00
parent 26c07e232d
commit a695aafd0f
16 changed files with 113 additions and 91 deletions
+10 -10
View File
@@ -24,7 +24,7 @@ const (
ue4ssExtensionMarkerVersion = 2
maxUE4SSMetadataBytes int64 = 16 * 1024
maxUE4SSDLLBytes int64 = 128 * 1024 * 1024
maxSCUMExecutableBytes int64 = 2 * 1024 * 1024 * 1024
maxTargetExecutableBytes int64 = 2 * 1024 * 1024 * 1024
managedRCONConfigMarker = "; managed by Run UE4SS DLL extension"
)
@@ -56,7 +56,7 @@ func (executor LifecycleExecutor) synchronizeUE4SSDLLExtensions(ctx context.Cont
}
executableKey := template.TargetExecutableKey
// Older generated plugin packages do not have targetExecutableKey yet,
// but SCUM's existing start action already carries the same logical path
// but the existing start action already carries the same logical path
// in SERVER_EXECUTABLE_REF. Keep those packages forward-compatible.
if executableKey == "" && template.Environment != nil {
executableKey = template.Environment["SERVER_EXECUTABLE_REF"]
@@ -68,7 +68,7 @@ func (executor LifecycleExecutor) synchronizeUE4SSDLLExtensions(ctx context.Cont
executableKey = template.ExecutableKey
}
if executableKey == "" || !strings.HasSuffix(strings.ToLower(executableKey), ".exe") {
return dllExtensionError{code: "extension_scum_executable_invalid", message: "UE4SS DLL extensions require a declared SCUM executable"}
return dllExtensionError{code: "extension_target_executable_invalid", message: "UE4SS DLL extensions require a declared target executable"}
}
resolver := NewWorkspaceResolver(executor.workspaceRoot)
@@ -76,28 +76,28 @@ func (executor LifecycleExecutor) synchronizeUE4SSDLLExtensions(ctx context.Cont
if deployment := assignment.ExecutionInput.Deployment; deployment != nil && deployment.ServerRoot != "" {
root := filepath.Clean(deployment.ServerRoot)
if root == "." || !filepath.IsAbs(root) {
return dllExtensionError{code: "extension_scum_executable_invalid", message: "declared executable root is unsafe"}
return dllExtensionError{code: "extension_target_executable_invalid", message: "declared executable root is unsafe"}
}
targetResolver = NewWorkspaceResolver(filepath.Dir(root))
targetScope = root
}
executable, err := declaredLifecycleExecutable(targetResolver, targetScope, executableKey)
if err != nil {
return dllExtensionError{code: "extension_scum_executable_invalid", message: "declared SCUM executable is unavailable"}
return dllExtensionError{code: "extension_target_executable_invalid", message: "declared target executable is unavailable"}
}
executableChecksum, _, err := checksumRegularFile(executable, maxSCUMExecutableBytes)
executableChecksum, _, err := checksumRegularFile(executable, maxTargetExecutableBytes)
if err != nil {
return dllExtensionError{code: "extension_scum_executable_invalid", message: "declared SCUM executable cannot be verified"}
return dllExtensionError{code: "extension_target_executable_invalid", message: "declared target executable cannot be verified"}
}
for _, plan := range assignment.ExecutionInput.DLLExtensions {
if !strings.EqualFold(executableChecksum, plan.SCUMExecutableChecksum) {
return dllExtensionError{code: "extension_scum_checksum_mismatch", message: "declared SCUM executable does not match the extension release"}
if !strings.EqualFold(executableChecksum, plan.TargetExecutableChecksum) {
return dllExtensionError{code: "extension_target_checksum_mismatch", message: "declared target executable does not match the extension release"}
}
}
gameRootKey, err := gameRootKeyForExecutable(template.ExecutableKey)
if err != nil {
return dllExtensionError{code: "extension_scum_executable_invalid", message: "declared SCUM executable location is unsafe"}
return dllExtensionError{code: "extension_target_executable_invalid", message: "declared target executable location is unsafe"}
}
if err := verifyUE4SSBootstrap(targetResolver, targetScope, gameRootKey); err != nil {
return err