a822f3a220e5c34033920d7b1e9658450c73b7d1
[ossec-hids.git] / src / init / update.sh
1 #!/bin/sh
2 # Shell script update functions for the OSSEC HIDS
3 # Author: Daniel B. Cid <daniel.cid@gmail.com>
4 # Last modification: May 24, 2006
5
6
7 FALSE="false"
8 TRUE="true"
9
10
11 ##########
12 # isUpdate
13 ##########
14 isUpdate()
15 {
16     ls -la ${OSSEC_INIT} > /dev/null 2>&1
17     if [ $? = 0 ]; then
18         . ${OSSEC_INIT}
19         if [ "X$DIRECTORY" = "X" ]; then
20             echo "${FALSE}"
21             return 1;
22         fi
23         ls -la $DIRECTORY > /dev/null 2>&1
24         if [ $? = 0 ]; then
25             echo "${TRUE}"
26             return 0;
27         fi    
28     fi
29     
30     echo "${FALSE}"
31     return 1;    
32 }
33
34
35 ##########
36 # doUpdatecleanup 
37 ##########
38 doUpdatecleanup()
39 {
40     . ${OSSEC_INIT}
41
42     if [ "X$DIRECTORY" = "X" ]; then
43         # Invalid ossec init file. Unable to update
44         echo "${FALSE}"
45         return 1;
46     fi
47     
48     # Checking if the directory is valid.
49     echo $DIRECTORY | grep -E "^/[a-zA-Z0-9/-]{3,128}$" > /dev/null 2>&1
50     if [ ! $? = 0 ]; then
51         echo "${FALSE}"
52         return 1;
53     fi
54 }
55
56
57 ##########
58 # getPreinstalled 
59 ##########
60 getPreinstalled()
61 {
62     . ${OSSEC_INIT}
63
64     # agent
65     cat $DIRECTORY/etc/ossec.conf | grep "<client>" > /dev/null 2>&1
66     if [ $? = 0 ]; then
67         echo "agent"
68         return 0;
69     fi
70     
71     cat $DIRECTORY/etc/ossec.conf | grep "<remote>" > /dev/null 2>&1
72     if [ $? = 0 ]; then
73         echo "server"
74         return 0;
75     fi
76     
77     echo "local"
78     return 0;   
79 }
80
81
82 ##########
83 # getPreinstalledDir
84 ##########
85 getPreinstalledDir()
86 {
87     . ${OSSEC_INIT}
88     echo "$DIRECTORY"
89     return 0;
90 }
91
92
93 ##########
94 # UpdateStartOSSEC
95 ##########
96 UpdateStartOSSEC()
97 {
98    . ${OSSEC_INIT}
99    
100    $DIRECTORY/bin/ossec-control start 
101 }
102
103
104 ##########
105 # UpdateStopOSSEC
106 ##########
107 UpdateStopOSSEC()
108 {
109    . ${OSSEC_INIT}
110    
111    $DIRECTORY/bin/ossec-control stop 
112
113    # We also need to remove all syscheck queue file (format changed)
114    if [ "X$VERSION" = "X0.9-3" ]; then
115         rm -f $DIRECTORY/queue/syscheck/* > /dev/null 2>&1
116         rm -f $DIRECTORY/queue/agent-info/* > /dev/null 2>&1
117    fi
118    rm -f $DIRECTORY/queue/syscheck/.* > /dev/null 2>&1
119 }
120
121
122 ##########
123 # UpdateOSSECRules 
124 ##########
125 UpdateOSSECRules()
126 {
127     . ${OSSEC_INIT}
128
129     OSSEC_CONF_FILE="$DIRECTORY/etc/ossec.conf"
130
131     # Backing up the old config
132     cp -pr ${OSSEC_CONF_FILE} "${OSSEC_CONF_FILE}.$$.bak"
133     
134     cat ${OSSEC_CONF_FILE}|grep -v "<rules>" |grep -v "</rules>" |grep -v "<include>" > "${OSSEC_CONF_FILE}.$$.tmp"
135
136     cat "${OSSEC_CONF_FILE}.$$.tmp" > ${OSSEC_CONF_FILE}
137     rm "${OSSEC_CONF_FILE}.$$.tmp"
138     echo "" >> ${OSSEC_CONF_FILE}
139     echo "<ossec_config>  <!-- rules global entry -->" >> ${OSSEC_CONF_FILE}
140     cat ${RULES_TEMPLATE} >> ${OSSEC_CONF_FILE}
141     echo "</ossec_config>  <!-- rules global entry -->" >> ${OSSEC_CONF_FILE}
142