@@ -175,16 +175,93 @@ echo ""
175175echo " Checking WolfNet (cluster networking)..."
176176
177177if command -v wolfnet & > /dev/null && systemctl is-active --quiet wolfnet 2> /dev/null; then
178- # Already installed and running — nothing to do
178+ # Already installed and running — check for upgrades
179179 echo " ✓ WolfNet already installed and running"
180180 WOLFNET_IP=$( ip -4 addr show wolfnet0 2> /dev/null | awk ' /inet / {split($2,a,"/"); print a[1]}' || echo " " )
181181 if [ -n " $WOLFNET_IP " ]; then
182182 echo " WolfNet IP: $WOLFNET_IP "
183183 fi
184184
185+ # Check if WolfNet needs an upgrade
186+ WOLFNET_SRC_DIR=" /opt/wolfnet-src"
187+ if [ -d " $WOLFNET_SRC_DIR " ]; then
188+ echo " Checking for WolfNet updates..."
189+ cd " $WOLFNET_SRC_DIR "
190+ git fetch origin 2> /dev/null || true
191+ LOCAL_HASH=$( git rev-parse HEAD 2> /dev/null || echo " unknown" )
192+ REMOTE_HASH=$( git rev-parse origin/main 2> /dev/null || echo " unknown" )
193+ if [ " $LOCAL_HASH " != " $REMOTE_HASH " ] && [ " $REMOTE_HASH " != " unknown" ]; then
194+ echo " ⚡ WolfNet update available — upgrading..."
195+ git reset --hard origin/main
196+
197+ # Ensure Rust is available
198+ export PATH=" $REAL_HOME /.cargo/bin:/usr/local/bin:/usr/bin:$PATH "
199+ if command -v cargo & > /dev/null; then
200+ cd " $WOLFNET_SRC_DIR /wolfnet"
201+ if [ " $REAL_USER " != " root" ] && [ -f " $REAL_HOME /.cargo/bin/cargo" ]; then
202+ chown -R " $REAL_USER :$REAL_USER " " $WOLFNET_SRC_DIR "
203+ su - " $REAL_USER " -c " cd $WOLFNET_SRC_DIR /wolfnet && $REAL_HOME /.cargo/bin/cargo build --release"
204+ else
205+ cargo build --release
206+ fi
207+
208+ # Install updated binaries
209+ systemctl stop wolfnet 2> /dev/null || true
210+ cp " $WOLFNET_SRC_DIR /wolfnet/target/release/wolfnet" /usr/local/bin/wolfnet
211+ chmod +x /usr/local/bin/wolfnet
212+ if [ -f " $WOLFNET_SRC_DIR /wolfnet/target/release/wolfnetctl" ]; then
213+ cp " $WOLFNET_SRC_DIR /wolfnet/target/release/wolfnetctl" /usr/local/bin/wolfnetctl
214+ chmod +x /usr/local/bin/wolfnetctl
215+ fi
216+ systemctl start wolfnet 2> /dev/null || true
217+ echo " ✓ WolfNet upgraded and restarted"
218+ else
219+ echo " ⚠ Cargo not found — skipping WolfNet rebuild"
220+ fi
221+ else
222+ echo " ✓ WolfNet is up to date"
223+ fi
224+ fi
225+
185226elif command -v wolfnet & > /dev/null; then
186- # Installed but not running — just start it
227+ # Installed but not running — check for upgrades, then start
187228 echo " ✓ WolfNet installed (not running)"
229+
230+ # Check for upgrades first
231+ WOLFNET_SRC_DIR=" /opt/wolfnet-src"
232+ if [ -d " $WOLFNET_SRC_DIR " ]; then
233+ echo " Checking for WolfNet updates..."
234+ cd " $WOLFNET_SRC_DIR "
235+ git fetch origin 2> /dev/null || true
236+ LOCAL_HASH=$( git rev-parse HEAD 2> /dev/null || echo " unknown" )
237+ REMOTE_HASH=$( git rev-parse origin/main 2> /dev/null || echo " unknown" )
238+ if [ " $LOCAL_HASH " != " $REMOTE_HASH " ] && [ " $REMOTE_HASH " != " unknown" ]; then
239+ echo " ⚡ WolfNet update available — upgrading..."
240+ git reset --hard origin/main
241+ export PATH=" $REAL_HOME /.cargo/bin:/usr/local/bin:/usr/bin:$PATH "
242+ if command -v cargo & > /dev/null; then
243+ cd " $WOLFNET_SRC_DIR /wolfnet"
244+ if [ " $REAL_USER " != " root" ] && [ -f " $REAL_HOME /.cargo/bin/cargo" ]; then
245+ chown -R " $REAL_USER :$REAL_USER " " $WOLFNET_SRC_DIR "
246+ su - " $REAL_USER " -c " cd $WOLFNET_SRC_DIR /wolfnet && $REAL_HOME /.cargo/bin/cargo build --release"
247+ else
248+ cargo build --release
249+ fi
250+ cp " $WOLFNET_SRC_DIR /wolfnet/target/release/wolfnet" /usr/local/bin/wolfnet
251+ chmod +x /usr/local/bin/wolfnet
252+ if [ -f " $WOLFNET_SRC_DIR /wolfnet/target/release/wolfnetctl" ]; then
253+ cp " $WOLFNET_SRC_DIR /wolfnet/target/release/wolfnetctl" /usr/local/bin/wolfnetctl
254+ chmod +x /usr/local/bin/wolfnetctl
255+ fi
256+ echo " ✓ WolfNet upgraded"
257+ else
258+ echo " ⚠ Cargo not found — skipping WolfNet rebuild"
259+ fi
260+ else
261+ echo " ✓ WolfNet is up to date"
262+ fi
263+ fi
264+
188265 echo " Starting WolfNet..."
189266 systemctl start wolfnet 2> /dev/null || true
190267 sleep 2
0 commit comments