Tech debt¶
| ID | Severity | Finding | Evidence | Suggested remediation |
|---|---|---|---|---|
| TD-CR-01 | Medium | Dead generated proxy: ~900 KB of generated code (Reference.cs), 8 metadata files, and 35 .datasource files are compiled and shipped in SAIF.Services.Web.Proxies.dll with no in-repo consumer |
Services/SAIF.Services.Web.Proxies/Service References/CallRex/ |
Remove the service reference if no consumer is planned, or document the intended external consumer that justifies keeping it |
| TD-CR-02 | Low | Unused vendor assembly references: CallRex.Utilities.dll and CallrexAPIUtilities.dll are referenced by the project but not imported by any source file |
SAIF.Services.Web.Proxies.csproj:57-62; Libs/ThirdParty/CallRex/ |
Remove the references if unused, or confirm a runtime need (e.g., reflection-based use) |
| TD-CR-03 | Medium | Ambiguous configuration: two endpoints (CustomBinding_IClientService, CustomBinding_IClientService1) share the same contract with no endpoint name distinction a caller must supply; IClientAccessPolicy has no endpoint at all |
app.config:61-70; service.wsdl:1753,3315-3330 |
Consolidate to one endpoint per intended use case, or document why two coexist; add an IClientAccessPolicy endpoint if that contract is ever needed |
| TD-CR-04 | Low | No timeouts configured on CustomBinding_IClientService; framework defaults (1 min send/open/close, 10 min receive) would silently apply if the proxy were ever used |
app.config:34-37 |
Set explicit timeouts before any caller is introduced |
| TD-CR-05 | Low | Stale test namespace: AudioVideoTests is namespaced SAIF.Services.Tests.CallRex but depends on an undefined CallRecordingSystem type and is permanently skipped |
Tests/SAIF.Services.Tests/AudioVideo/AudioVideoTests.cs:13,21,35,83,132,161 |
Delete or rewrite the test; the namespace is misleading since it does not exercise this proxy |
| SEC-CR-01 | High | Transport is plain HTTP (http://callrexprod:8002/ClientService, http://callrexprod:8002/ClientServiceBasic); NTLM authenticates the caller, but message bodies are not encrypted in transit |
app.config:61,66 |
Require HTTPS/TLS transport before any caller is introduced, given the sensitive operations below |
| SEC-CR-02 | High | Sensitive operations are present on the contract but unused: Login(username, password), ChangePassword(oldPassword, newPassword), SetNewEncryptionKey(username1, password1, username2, password2, revokeExistingKeys, enableEncryption), UpdateUser(user, passwordChanged) carry credentials in message bodies over HTTP |
service.xsd element definitions for these operations |
If a caller is ever introduced, ensure TLS transport and avoid logging these message bodies |
Config applicability gap¶
The app.config of a class library that ships only DLL/PDB is not loaded by package consumers*, so any external SAIF.SAIFCode.Core consumer that constructs these clients would need to supply its own <client> configuration — the two endpoints documented here would not apply automatically.
Related documentation¶
Note: Statements marked with
*were inferred from code structure, naming conventions, or contextual evidence where direct confirmation was not available in source artifacts.
Sources¶
Services/SAIF.Services.Web.Proxies/app.configServices/SAIF.Services.Web.Proxies/SAIF.Services.Web.Proxies.csprojServices/SAIF.Services.Web.Proxies/Service References/CallRex/service.wsdlServices/SAIF.Services.Web.Proxies/Service References/CallRex/service.xsdTests/SAIF.Services.Tests/AudioVideo/AudioVideoTests.csLibs/ThirdParty/CallRex/CallRex.Utilities.dllLibs/ThirdParty/CallRex/CallrexAPIUtilities.dll