1 | #!/bin/bash |
---|
2 | PARAM="$1" |
---|
3 | ACK_FILE=/etc/lliurex-analytics/status |
---|
4 | |
---|
5 | # MAIN PURPOSE FOR THIS SCRIPT IS WRITE THE FILE |
---|
6 | # IF ISN'T POSSIBLE IT DOESN'T MAKE SENSE CONTINUE |
---|
7 | RIGHTS_TO_ACK="" |
---|
8 | if [ -w "${ACK_FILE}" ]; then |
---|
9 | RIGHTS_TO_ACK="yes" |
---|
10 | else |
---|
11 | # UNPRIVILEGED USERS CAN'T APPROVE OR FILE DOESN'T EXIST |
---|
12 | exit 0 |
---|
13 | fi |
---|
14 | |
---|
15 | # CHECK BASIC DEPENDENCIES |
---|
16 | WHICH="$(which which)" |
---|
17 | if [ -z "${WHICH}" ]; then |
---|
18 | exit 0 |
---|
19 | fi |
---|
20 | DPKG="$(${WHICH} dpkg)" |
---|
21 | GREP="$(${WHICH} egrep)" |
---|
22 | |
---|
23 | if [ -z "${DPKG}" -o -z "${GREP}" ]; then |
---|
24 | exit 0 |
---|
25 | fi |
---|
26 | # CHECK MAIN DEPENDENCIES |
---|
27 | AUDIT_INSTALLED="$(${DPKG} -l|${GREP} -o auditd)" |
---|
28 | PYTHON_DAEMON_INSTALLED="$(${DPKG} -l|${GREP} -o python-daemon)" |
---|
29 | |
---|
30 | if [ -z "${AUDIT_INSTALLED}" -o -z "${PYTHON_DAEMON_INSTALLED}" ]; then |
---|
31 | exit 0 |
---|
32 | fi |
---|
33 | |
---|
34 | # CHECK DEPENDENCIES 4 TESTING |
---|
35 | N4DCLI="$(${WHICH} n4d-client)" |
---|
36 | FINDMNT="$(${WHICH} findmnt)" |
---|
37 | CAT="$(${WHICH} cat)" |
---|
38 | DEBCONF_COMM="$(${WHICH} debconf-communicate)" |
---|
39 | LLIUREX_VERSION=$(${WHICH} lliurex-version) |
---|
40 | |
---|
41 | if [ -z "${N4DCLI}" -o -z "${FINDMNT}" -o -z "${CAT}" -o -z "${DEBCONF_COMM}" -o -z "${LLIUREX_VERSION}" ]; then |
---|
42 | exit 0 |
---|
43 | fi |
---|
44 | |
---|
45 | |
---|
46 | # ACK FILE FUNCTIONS |
---|
47 | accept_file(){ |
---|
48 | echo "yes" > ${ACK_FILE} |
---|
49 | } |
---|
50 | deny_file(){ |
---|
51 | echo "no" > ${ACK_FILE} |
---|
52 | } |
---|
53 | reset_file(){ |
---|
54 | echo "" > ${ACK_FILE} |
---|
55 | } |
---|
56 | check_file(){ |
---|
57 | if [ -n "${LOCAL_ACKNOWLEDGE}" ]; then |
---|
58 | exit 0 |
---|
59 | fi |
---|
60 | } |
---|
61 | |
---|
62 | # INSTALLATION TYPE DETECTION & ACKNOWLEDGE TYPES |
---|
63 | RUN_ON_LIVE="$(${FINDMNT} -P -t squashfs|${GREP} -i 'target="/rofs" source="/dev/loop[0-9]?"')" |
---|
64 | |
---|
65 | if [ -n "${RUN_ON_LIVE}" ]; then |
---|
66 | #ON LIVE SYSTEMS STATS ARE DEACTIVATED |
---|
67 | deny_file |
---|
68 | exit 0 |
---|
69 | fi |
---|
70 | |
---|
71 | RUN_ON_LTSP="$(echo $LTSP_FATCLIENT)" |
---|
72 | if [ -n "${RUN_ON_LTSP}" -a "${RUN_ON_LTSP}" = "false" ]; then |
---|
73 | #ON THIN CLIENTS THE SERVER SEND THE STATISTICS |
---|
74 | exit 0 |
---|
75 | fi |
---|
76 | |
---|
77 | RUN_AS_CLIENT=$(${LLIUREX_VERSION} |${GREP} -i -o client|uniq) |
---|
78 | RUN_AS_SERVER=$(${LLIUREX_VERSION} |${GREP} -i -o server|uniq) |
---|
79 | RUN_AS_DESKTOP="" |
---|
80 | if [ -z "${RUN_AS_CLIENT}" -a -z "${RUN_AS_SERVER}" ];then |
---|
81 | RUN_AS_DESKTOP="yes" |
---|
82 | else |
---|
83 | #NOT USED INSIDE CONFIRMATOR, THIS LOGIC IS INTO COLLECTOR AND WILL BE ACCEPTED NOT NEED WRITE THE LOCAL FILE |
---|
84 | SERVER_OVERRIDE="$(${N4DCLI} -h server -c VariablesManager -m get_variable -a 'STATS_ENABLED'|${GREP} '1')" |
---|
85 | if [ -n "${SERVER_OVERRIDE}" ]; then |
---|
86 | exit 0 |
---|
87 | fi |
---|
88 | fi |
---|
89 | |
---|
90 | LOCAL_ACKNOWLEDGE="$(${CAT} ${ACK_FILE}|${GREP} -E -i -o 'yes|no')" |
---|
91 | # IF ALREADY ACCEPTED OR DENIED AND IS NOT FORCED EXECUTION AFTER CHECK SERVER OVERRIDE WE CAN EXIT AT THIS POINT |
---|
92 | if [ -n "${LOCAL_ACKNOWLEDGE}" -a "${PARAM}" != "-f" ]; then |
---|
93 | exit 0 |
---|
94 | fi |
---|
95 | |
---|
96 | DEBCONF_ACKNOWLEDGE="$(echo get lliurex-statistics/acknowledge|${DEBCONF_COMM} 2>/dev/null |${GREP} -E -i -o 'true|false')" |
---|
97 | |
---|
98 | |
---|
99 | # DIALOG FUNCTION |
---|
100 | |
---|
101 | show_dialog(){ |
---|
102 | # Script messages l10n |
---|
103 | # Detects which language is set |
---|
104 | RET="" |
---|
105 | _langrc=0 |
---|
106 | echo $LANGUAGE | grep -q "^ca_ES" || _langrc=1 |
---|
107 | |
---|
108 | # All message strings in both languages |
---|
109 | VA_CONFIRM="Desitgeu acceptar la monitorització d'estadístiques?" |
---|
110 | ES_CONFIRM="¿Desea aceptar la monitoritzación de estadísticas?" |
---|
111 | |
---|
112 | # Valencian is selected by default |
---|
113 | CONFIRM="$VA_CONFIRM" |
---|
114 | |
---|
115 | # But they could change if Spanish is detected |
---|
116 | if [ $_langrc -eq 1 ] ; then |
---|
117 | CONFIRM="$ES_CONFIRM" |
---|
118 | fi |
---|
119 | |
---|
120 | zenity --question --text "$CONFIRM" |
---|
121 | |
---|
122 | if [ $? -eq 0 ]; then |
---|
123 | RET="yes" |
---|
124 | fi |
---|
125 | } |
---|
126 | # AT THIS POINT: |
---|
127 | # - FILE IS PRESENT & IT'S WRITEABLE |
---|
128 | # - THIS IS NOT A LIVE SYSTEM |
---|
129 | # - THIS IS NOT A LTSP THIN CLIENT |
---|
130 | # - SERVER IS NOT FORCING THE ACKNOWLEDGE OF COLLECT STATISTICS |
---|
131 | |
---|
132 | # TRY TO WRITE ACK FILE NOW |
---|
133 | # ACCEPTATION PRIORITY: 1 SERVER ACK, 2 DEBCONF ACK, 3 LOCAL ACK |
---|
134 | |
---|
135 | # DEBCONF ACK (HIGH PRIORITY OVER LOCAL FILE) : POSSIBLE VALUES ARE: TRUE, FALSE, ASK (LOCAL ANSWER) (DEFAULT IF UNATTENDED INSTALL) |
---|
136 | if [ -n "${DEBCONF_ACKNOWLEDGE}" ]; then |
---|
137 | if [ "${DEBCONF_ACKNOWLEDGE}" = "true" ]; then |
---|
138 | accept_file |
---|
139 | exit 0 |
---|
140 | fi |
---|
141 | if [ "${DEBCONF_ACKNOWLEDGE}" = "false" ]; then |
---|
142 | deny_file |
---|
143 | exit 0 |
---|
144 | fi |
---|
145 | fi |
---|
146 | |
---|
147 | # LOCAL ACK |
---|
148 | # ALL OTHER EXECUTIONS |
---|
149 | #if [ -n ${RUN_AS_DESKTOP} -o -n ${RUN_AS_SERVER} -o -n ${RUN_AS_CLIENT} ]; then |
---|
150 | |
---|
151 | #IF ALREADY SET THE ANSWER (yes|no) check_file AVOID ASKING ANOTHER TIME |
---|
152 | check_file |
---|
153 | show_dialog |
---|
154 | if [ -n "${RET}" ]; then |
---|
155 | accept_file |
---|
156 | else |
---|
157 | deny_file |
---|
158 | fi |
---|
159 | exit 0 |
---|
160 | |
---|
161 | #fi |
---|
162 | |
---|