-
Notifications
You must be signed in to change notification settings - Fork 654
Expand file tree
/
Copy pathMakefile
More file actions
185 lines (139 loc) · 6.53 KB
/
Copy pathMakefile
File metadata and controls
185 lines (139 loc) · 6.53 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
all: clean prepare server client extenders
DIST_DIR := dist
UNAME_S := $(shell uname -s)
ifeq ($(UNAME_S),Linux)
NPROC := $(shell nproc)
endif
ifeq ($(UNAME_S),Darwin)
NPROC := $(shell sysctl -n hw.ncpu)
endif
### CLEAN ###
prepare:
@if [ ! -d "$(DIST_DIR)" ]; then \
mkdir "$(DIST_DIR)"; \
echo "[+] Created '$(DIST_DIR)' directory"; \
fi
clean:
@ rm -rf $(DIST_DIR)
clean-all: clean
@ echo "[*] Cleaning all build artifacts..."
@ find . -name "*.o" -delete
@ find . -name "*.so" -delete
@ find . -name "*.a" -delete
@ find . -name "build_error.log" -delete
@ find . -name "cmake_error.log" -delete
@ echo "[+] All artifacts cleaned"
docker-clean:
@ echo "[*] Cleaning Docker containers and images..."
@ docker compose --profile build-server --profile build-extenders --profile build-server-ext down --rmi local 2>/dev/null || true
@ echo "[+] Docker containers and images cleaned"
docker-clean-all: docker-clean
@ echo "[*] Cleaning all Docker artifacts (containers, images, volumes, networks)..."
@ docker compose --profile build-server --profile build-extenders --profile build-server-ext --profile runtime down --rmi all --volumes 2>/dev/null || true
@ echo "[*] Cleaning build output directories..."
@ rm -rf AdaptixServer/server-dist 2>/dev/null || true
@ echo "[+] All Docker artifacts cleaned"
### EXTENDERS ###
EXTENDER_DIRS := $(shell find AdaptixServer/extenders -maxdepth 1 -type d -not -path "$(DIST_DIR)" -exec test -f {}/Makefile \; -print)
extenders: prepare
@ echo "[*] Building default extenders"
@ mkdir -p $(DIST_DIR)/extenders
@ for dir in $(EXTENDER_DIRS); do \
(cd $$dir && $(MAKE) --no-print-directory); \
plugin_name=$$(basename $$dir); \
mv $$dir/dist $(DIST_DIR)/extenders/$$plugin_name; \
done
@ echo "[+] done"
### SERVER ###
server: prepare
@ echo "[*] Building adaptixserver..."
@ cd AdaptixServer && GOEXPERIMENT=jsonv2,greenteagc go build -buildvcs=false -ldflags="-s -w" -o adaptixserver > /dev/null 2>build_error.log || { echo "[ERROR] Failed to build AdaptixServer:"; cat build_error.log >&2; exit 1; } # for static build use CGO_ENABLED=0
@ mv AdaptixServer/adaptixserver ./$(DIST_DIR)/
@ cp AdaptixServer/ssl_gen.sh AdaptixServer/profile.yaml AdaptixServer/404page.html ./$(DIST_DIR)/
@ echo "[+] done"
server-ext: clean server extenders
### CLIENT ###
client: prepare
@ echo "[*] Building AdaptixClient..."
@ cd AdaptixClient && cmake . > /dev/null 2>cmake_error.log || { echo "[ERROR] CMake failed:"; cat cmake_error.log >&2; exit 1; }
@ cd AdaptixClient && make --no-print-directory
@ mv ./AdaptixClient/AdaptixClient ./$(DIST_DIR)/
@ echo "[+] done"
client-fast: prepare
@ echo "[*] Building AdaptixClient in $(NPROC) threads..."
@ cd AdaptixClient && cmake . > /dev/null 2>cmake_error.log || { echo "[ERROR] CMake failed:"; cat cmake_error.log >&2; exit 1; }
@ cd AdaptixClient && make --no-print-directory -j$(NPROC)
@ mv ./AdaptixClient/AdaptixClient ./$(DIST_DIR)/
@ echo "[+] done"
### DOCKER BUILD ###
docker-build-server:
@ echo "[*] Building server via Docker..."
@ docker compose --profile build-server build
@ docker compose --profile build-server up --abort-on-container-exit
@ docker compose --profile build-server down
@ echo "[+] Server built via Docker"
docker-build-client:
@ echo "[*] Building client via Docker..."
@ docker compose --profile build-client build
@ docker compose --profile build-client up --abort-on-container-exit
@ docker compose --profile build-client down
@ echo "[+] Client AppImage built via Docker"
docker-build-extenders:
@ echo "[*] Building extenders via Docker..."
@ docker compose --profile build-extenders build
@ docker compose --profile build-extenders up --abort-on-container-exit
@ docker compose --profile build-extenders down
@ echo "[+] Extenders built via Docker"
docker-build-server-ext:
@ echo "[*] Building server and extenders via Docker..."
@ docker compose --profile build-server-ext build
@ docker compose --profile build-server-ext up --abort-on-container-exit
@ docker compose --profile build-server-ext down
@ echo "[+] Server and extenders built via Docker"
docker-build-all: docker-build-server-ext
@ echo "[+] All Docker builds completed"
### DOCKER RUNTIME ###
docker-up:
@ echo "[*] Starting Adaptix server runtime container..."
@ docker compose --profile runtime up -d
@ echo "[+] Runtime container started"
@ echo "[*] Use 'make docker-logs' to view logs"
@ echo "[*] Use 'make docker-down' to stop container"
docker-down:
@ echo "[*] Stopping Adaptix server runtime container..."
@ docker compose --profile runtime down
@ echo "[+] Runtime container stopped"
docker-logs:
@ docker compose --profile runtime logs -f
docker-restart: docker-down docker-up
### HELP ###
help:
@ echo "AdaptixC2 Build System"
@ echo ""
@ echo "Available targets:"
@ echo " all - Build everything (server, client, extenders)"
@ echo " extenders - Build only the extenders"
@ echo " server-ext - Build server and extenders (no client, ideal for VPS)"
@ echo " server - Build only the server"
@ echo " client-fast - Build only the client in multithread mode (fast build)"
@ echo " client - Build only the client"
@ echo " clean - Remove dist directory"
@ echo " clean-all - Remove all build artifacts"
@ echo ""
@ echo "Docker commands:"
@ echo " docker-build-server - Build server via Docker Compose"
@ echo " docker-build-client - Build client AppImage via Docker Compose"
@ echo " docker-build-extenders - Build extenders via Docker Compose"
@ echo " docker-build-server-ext - Build server and extenders via Docker Compose"
@ echo " docker-build-all - Build server and extenders via Docker Compose (alias)"
@ echo " docker-up - Start runtime container (detached)"
@ echo " docker-down - Stop runtime container"
@ echo " docker-logs - View runtime container logs (follow mode)"
@ echo " docker-restart - Restart runtime container"
@ echo " docker-clean - Remove Docker containers and images (builders only)"
@ echo " docker-clean-all - Remove all Docker artifacts (containers, images, volumes, networks)"
@ echo ""
@ echo " help - Show this help message"
@ echo ""
@ echo "Platform: $(UNAME_S) [$(NPROC) proc]"
.PHONY: all extenders server-ext server client clean clean-all docker-build-server docker-build-extenders docker-build-server-ext docker-build-all docker-up docker-down docker-logs docker-restart docker-clean docker-clean-all help prepare