Skip to content

Commit c18687b

Browse files
committed
feat: update NetworkManagerDispatcherScripts
1 parent 963d45c commit c18687b

File tree

2 files changed

+82
-6
lines changed

2 files changed

+82
-6
lines changed

hosts/idols-ai/default.nix

Lines changed: 41 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -54,27 +54,65 @@ rec {
5454
source = pkgs.writeText "upHook" ''
5555
INTERFACE=$1
5656
STATUS=$2
57+
58+
get_ip_info(){
59+
# 获取IPv4地址
60+
IPV4_ADDR=$(ip -4 addr show dev $INTERFACE 2>/dev/null | grep -oP '(?<=inet\s)\d+(\.\d+){3}' | head -n1)
61+
62+
# 获取IPv6地址(全局范围)
63+
IPV6_ADDR=$(ip -6 addr show dev $INTERFACE 2>/dev/null | grep -oP '(?<=inet6\s)[0-9a-f:]+' | grep -v '^fe80:' | head -n1)
64+
65+
# 获取公网IP(如果有网络连接)
66+
PUBLIC_IP=$(curl -s -4 ifconfig.co 2>/dev/null || curl -s -6 ifconfig.co 2>/dev/null || echo "N/A")
67+
68+
# 构建IP信息字符串
69+
IP_INFO=""
70+
if [ -n "$IPV4_ADDR" ]; then
71+
IP_INFO="IPv4: $IPV4_ADDR"
72+
fi
73+
if [ -n "$IPV6_ADDR" ]; then
74+
if [ -n "$IP_INFO" ]; then
75+
IP_INFO="$IP_INFO, IPv6: $IPV6_ADDR"
76+
else
77+
IP_INFO="IPv6: $IPV6_ADDR"
78+
fi
79+
fi
80+
if [ -n "$PUBLIC_IP" ] && [ "$PUBLIC_IP" != "N/A" ]; then
81+
IP_INFO="$IP_INFO, Public: $PUBLIC_IP"
82+
fi
83+
84+
echo "''${IP_INFO:-No IP addresses found}"
85+
}
86+
5787
notify_status(){
5888
alias_for_work=/etc/agenix/alias-for-work.bash
5989
if [ -f $alias_for_work ]; then
6090
. $alias_for_work
6191
else
6292
echo "No alias file found for work"
6393
fi
64-
MSG="PC[r9000p2025][nixos] online(Device Interface: $DEVICE_IFACE, Connection: $CONNECTION_ID($CONNECTION_UUID), Status: $STATUS, Time: $(date +%Y-%m-%dT%H:%M:%S%Z))"
65-
notify-send $MSG
66-
${pkgs.ntfy-sh}/bin/ntfy publish $ntfy_topic $MSG
94+
95+
# 获取IP信息
96+
IP_INFO=$(get_ip_info)
97+
98+
MSG="PC[r9000p2025][nixos] online(Device Interface: $DEVICE_IFACE, Connection: $CONNECTION_ID($CONNECTION_UUID), Status: $STATUS, IP: $IP_INFO, Time: $(date +%Y-%m-%dT%H:%M:%S%Z))"
99+
notify-send "Network Status" "$MSG"
100+
${pkgs.ntfy-sh}/bin/ntfy publish $ntfy_topic "$MSG"
67101
}
102+
68103
anonymous(){
69104
~/.config/*/scripts/tp_link_script http://192.168.0.1 111111 "$(cat /sys/class/net/wlp0s20f3/address)" "匿名主机" 0
70105
}
71106
72107
case "$STATUS" in
73108
up)
109+
# 等待一下确保IP地址已经分配
110+
sleep 2
74111
notify_status
75112
anonymous
76113
;;
77114
vpn-up)
115+
sleep 2
78116
notify_status
79117
anonymous
80118
;;

hosts/wsl-r9000p2025/default.nix

Lines changed: 41 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -52,27 +52,65 @@ rec {
5252
source = pkgs.writeText "upHook" ''
5353
INTERFACE=$1
5454
STATUS=$2
55+
56+
get_ip_info(){
57+
# 获取IPv4地址
58+
IPV4_ADDR=$(ip -4 addr show dev $INTERFACE 2>/dev/null | grep -oP '(?<=inet\s)\d+(\.\d+){3}' | head -n1)
59+
60+
# 获取IPv6地址(全局范围)
61+
IPV6_ADDR=$(ip -6 addr show dev $INTERFACE 2>/dev/null | grep -oP '(?<=inet6\s)[0-9a-f:]+' | grep -v '^fe80:' | head -n1)
62+
63+
# 获取公网IP(如果有网络连接)
64+
PUBLIC_IP=$(curl -s -4 ifconfig.co 2>/dev/null || curl -s -6 ifconfig.co 2>/dev/null || echo "N/A")
65+
66+
# 构建IP信息字符串
67+
IP_INFO=""
68+
if [ -n "$IPV4_ADDR" ]; then
69+
IP_INFO="IPv4: $IPV4_ADDR"
70+
fi
71+
if [ -n "$IPV6_ADDR" ]; then
72+
if [ -n "$IP_INFO" ]; then
73+
IP_INFO="$IP_INFO, IPv6: $IPV6_ADDR"
74+
else
75+
IP_INFO="IPv6: $IPV6_ADDR"
76+
fi
77+
fi
78+
if [ -n "$PUBLIC_IP" ] && [ "$PUBLIC_IP" != "N/A" ]; then
79+
IP_INFO="$IP_INFO, Public: $PUBLIC_IP"
80+
fi
81+
82+
echo "''${IP_INFO:-No IP addresses found}"
83+
}
84+
5585
notify_status(){
5686
alias_for_work=/etc/agenix/alias-for-work.bash
5787
if [ -f $alias_for_work ]; then
5888
. $alias_for_work
5989
else
6090
echo "No alias file found for work"
6191
fi
62-
MSG="PC[r9000p2025][nixos] online(Device Interface: $DEVICE_IFACE, Connection: $CONNECTION_ID($CONNECTION_UUID), Status: $STATUS, Time: $(date +%Y-%m-%dT%H:%M:%S%Z))"
63-
notify-send $MSG
64-
${pkgs.ntfy-sh}/bin/ntfy publish $ntfy_topic $MSG
92+
93+
# 获取IP信息
94+
IP_INFO=$(get_ip_info)
95+
96+
MSG="PC[r9000p2025][nixos-wsl] online(Device Interface: $DEVICE_IFACE, Connection: $CONNECTION_ID($CONNECTION_UUID), Status: $STATUS, IP: $IP_INFO, Time: $(date +%Y-%m-%dT%H:%M:%S%Z))"
97+
notify-send "Network Status" "$MSG"
98+
${pkgs.ntfy-sh}/bin/ntfy publish $ntfy_topic "$MSG"
6599
}
100+
66101
anonymous(){
67102
~/.config/*/scripts/tp_link_script http://192.168.0.1 111111 "$(cat /sys/class/net/wlp0s20f3/address)" "匿名主机" 0
68103
}
69104
70105
case "$STATUS" in
71106
up)
107+
# 等待一下确保IP地址已经分配
108+
sleep 2
72109
notify_status
73110
anonymous
74111
;;
75112
vpn-up)
113+
sleep 2
76114
notify_status
77115
anonymous
78116
;;

0 commit comments

Comments
 (0)