-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path.llmnr.sh
138 lines (117 loc) · 3.11 KB
/
.llmnr.sh
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
#!/bin/sh
########################################################################
# insserv LSB header #
########################################################################
### BEGIN INIT INFO
# Provides: llmnrd
# Required-Start: $network $syslog dbus hostname
# Required-Stop: $network $syslog dbus hostname
# Should-Start: $time
# Should-Start: $time
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Link local multicast name resolution
# Description: Zeroconf daemon for configuring your network
# RFC 4795
### END INIT INFO
########################################################################
# Variables #
########################################################################
PATH=/sbin:/bin:/usr/sbin:/usr/bin
DIR=/etc/llmnr
DAEMONFILE=llmnrd
PIDFILE=llmnr.pid
NSSFILE=/etc/nsswitch.conf
########################################################################
# Functions #
########################################################################
check_file()
{
test -f $1
if [ "$?" -eq 0 ]; then
return 0
fi
return 1
}
__start()
{
echo -n "[Starting $DAEMONFILE]..."
check_file "$DIR/$DAEMONFILE"
if [ "$?" -eq "1" ]; then
echo "Fail ($DIR/$DAEMONFILE does not exists)"
return 1
fi
start-stop-daemon -S -x $DIR/$DAEMONFILE
if [ "$?" -eq "0" ]; then
sed -i '/^hosts:/ s/rnmll/llmnr/' $NSSFILE
echo "OK"
return 0
fi
return 0
}
__stop()
{
echo -n "[Stopping $DAEMONFILE]..."
check_file "$DIR/$PIDFILE"
if [ "$?" -eq "0" ]; then
start-stop-daemon -K -p $DIR/$PIDFILE --remove-pidfile
else
start-stop-daemon -K -n $DAEMONFILE
fi
if [ "$?" -eq "0" ]; then
sed -i '/^hosts:/ s/llmnr/rnmll/' $NSSFILE
echo "OK"
return 0
fi
return 1
}
__status()
{
echo -n "[Checking $DAEMONFILE]..."
check_file $DIR/$PIDFILE
if [ "$?" -eq "0" ]; then
start-stop-daemon -T -p $DIR/$PIDFILE
else
start-stop-daemon -T -n $DAEMONFILE
fi
case $? in
0)
PID=$(pidof $DAEMONFILE)
echo "Running (PID $PID)"
;;
1)
echo "Not running (pid file exists)"
;;
3)
echo "Not running"
;;
4)
echo "Unknow status"
;;
esac
return 0
}
########################################################################
# Main #
########################################################################
case "$1" in
start)
__start
;;
stop)
__stop
;;
status)
__status
;;
reload)
__stop
if [ "$?" -eq "0" ]; then
__start
fi
;;
*)
echo "Use: /etc/init.d/$NAME {start|stop|reload|status}"
;;
esac
exit 0