Add cs.money worker stack with per-worker IPRoyal residential proxy
Brings up the pull-model scraper: the .NET C2 hands skin+wear jobs to Python nodriver workers that scrape cs.money and post results back, plus the supporting Core/EFCore data model, migrations, and docker-compose orchestration. IPRoyal proxying lets workers scale horizontally with a distinct residential exit IP each: every worker process mints its own sticky session at startup, and an in-process forwarding proxy injects the gateway auth so Chromium talks only to an auth-free localhost endpoint (zero CDP). On a Cloudflare challenge a worker rotates to a fresh session/IP and re-warms. Verified end-to-end against live IPRoyal: distinct US residential exits per worker and IP rotation on demand. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
24
BlueLaminate/BlueLaminate.C2/Dockerfile
Normal file
24
BlueLaminate/BlueLaminate.C2/Dockerfile
Normal file
@@ -0,0 +1,24 @@
|
||||
# Build context is the REPO ROOT (so Central Package Management's Directory.*.props
|
||||
# at the root are available). Build with:
|
||||
# docker compose build (compose sets the context)
|
||||
FROM mcr.microsoft.com/dotnet/sdk:10.0 AS build
|
||||
WORKDIR /src
|
||||
|
||||
# Restore against the full solution sources the C2 transitively needs.
|
||||
COPY Directory.Build.props Directory.Packages.props ./
|
||||
COPY BlueLaminate/ BlueLaminate/
|
||||
RUN dotnet restore BlueLaminate/BlueLaminate.C2/BlueLaminate.C2.csproj
|
||||
RUN dotnet publish BlueLaminate/BlueLaminate.C2/BlueLaminate.C2.csproj \
|
||||
-c Release -o /app --no-restore
|
||||
|
||||
FROM mcr.microsoft.com/dotnet/aspnet:10.0 AS runtime
|
||||
# NOTE: deliberately do NOT install libgssapi-krb5-2. Without it Npgsql logs a
|
||||
# harmless "cannot load libgssapi_krb5.so.2" line and falls back to password auth;
|
||||
# WITH it, a failed/misconfigured connection attempt segfaults during GSS negotiation
|
||||
# (observed: container exit 139 / crash-loop). Graceful failure beats the segfault.
|
||||
WORKDIR /app
|
||||
COPY --from=build /app ./
|
||||
# Bind all interfaces inside the container (overrides appsettings' localhost binding).
|
||||
ENV ASPNETCORE_URLS=http://+:5080
|
||||
EXPOSE 5080
|
||||
ENTRYPOINT ["dotnet", "BlueLaminate.C2.dll"]
|
||||
Reference in New Issue
Block a user