]> gitweb.fluxo.info Git - firma.git/commitdiff
- SIGNATURE_MADE_BY_SENDER checking wasn't working. Fixed.
authorluis <luis>
Thu, 2 Aug 2007 04:33:31 +0000 (04:33 +0000)
committerluis <luis>
Thu, 2 Aug 2007 04:33:31 +0000 (04:33 +0000)
- Better firma config file checking.

firma

diff --git a/firma b/firma
index 8e38babff2a9de514d99a1b9e82f09c771b05bd1..3c8dc73648e824cb162345f907b171ade8e3e0f6 100755 (executable)
--- a/firma
+++ b/firma
@@ -131,12 +131,49 @@ function CheckFirmaConfigFile {
 
   local -i return_code=0
 
+  # check LOG_TO_SYSLOG value first, since it will define if firma
+  #+should print or log error messages
+  if [[ -n "$LOG_TO_SYSLOG" && \
+        "$LOG_TO_SYSLOG" != "0" && \
+        "$LOG_TO_SYSLOG" != "1"
+     ]]; then
+
+    LOG_TO_SYSLOG="0"
+    LogMessage "\
+WARNING: LOG_TO_SYSLOG should be set either to '0' or '1'.
+WARNING: Setting LOG_TO_SYSLOG to '0'."
+
+  elif [[ -z "$LOG_TO_SYSLOG" ]]; then
+    LOG_TO_SYSLOG="0"
+  elif [[ "$LOG_TO_SYSLOG" == "1" ]]; then
+
+    if [[ ! -f "$LOGGER_BINARY" || ! -x "$LOGGER_BINARY" ]]; then
+
+      LOG_TO_SYSLOG="0"
+      LogMessage "\
+WARNING: logger binary ($LOGGER_BINARY) could not be found.
+WARNING: Setting LOG_TO_SYSLOG to '0'."
+
+    else
+
+      # set SYSLOG_PRIORITY to the default value, if needed
+      SYSLOG_PRIORITY=${SYSLOG_PRIORITY:-"user.err"}
+
+    fi
+
+  fi
+
+  # check GPG_BINARY value
   if [[ ! -f "$GPG_BINARY" || ! -x "$GPG_BINARY" ]]; then
     LogMessage "FATAL: GPG binary ($GPG_BINARY) could not be found. Quitting."
     return_code=1
+
+  # check MAIL_AGENT value
   elif [[ ! -f "$MAIL_AGENT" || ! -x "$MAIL_AGENT" ]]; then
     LogMessage "FATAL: Mail transport agent binary ($MAIL_AGENT) could not be found. Quitting."
     return_code=1
+
+  # check LISTS_DIR value
   elif [[ ! -d "$LISTS_DIR" ]]; then
     LogMessage "FATAL: Lists directory ($LISTS_DIR) could not be found. Quitting."
     return_code=1
@@ -144,20 +181,30 @@ function CheckFirmaConfigFile {
   # optional parameters
   else
 
-    if [[ "$USE_GPG_HIDDEN_RECIPIENT_OPTION" == "1" && "$($GPG_BINARY --version | head -n1 | tr -dc '[:digit:]')" -lt "140" ]]; then
+    # check USE_GPG_HIDDEN_RECIPIENT_OPTION value
+    if [[ -n "$USE_GPG_HIDDEN_RECIPIENT_OPTION" && \
+          "$USE_GPG_HIDDEN_RECIPIENT_OPTION" != "0" && \
+          "$USE_GPG_HIDDEN_RECIPIENT_OPTION" != "1"
+       ]]; then
+
       LogMessage "\
-WARNING: GPG's \"--hidden-recipient\" option is only available from version 1.4.0 onwards.
+WARNING: USE_GPG_HIDDEN_RECIPIENT_OPTION should be set either to '0' or '1'.
 WARNING: Setting USE_GPG_HIDDEN_RECIPIENT_OPTION to '0'."
-      USE_GPG_HIDDEN_RECIPIENT_OPTION=0
-    fi
+      USE_GPG_HIDDEN_RECIPIENT_OPTION="0"
+
+    elif [[ -z "$USE_GPG_HIDDEN_RECIPIENT_OPTION" ]]; then
+      USE_GPG_HIDDEN_RECIPIENT_OPTION="0"
+    elif [[ "$USE_GPG_HIDDEN_RECIPIENT_OPTION" == "1" ]]; then
+
+      if [[ "$($GPG_BINARY --version | head -n1 | tr -dc '[:digit:]')" -lt "140" ]]; then
 
-    if [[ "$LOG_TO_SYSLOG" == "1" ]]; then
-      if [[ ! -f "$LOGGER_BINARY" || ! -x "$LOGGER_BINARY" ]]; then
         LogMessage "\
-WARNING: logger binary ($LOGGER_BINARY) could not be found.
-WARNING: Setting LOG_TO_SYSLOG to '0'."
-        LOG_TO_SYSLOG=0
+WARNING: GPG's \"--hidden-recipient\" option is only available from version 1.4.0 onwards.
+WARNING: Setting USE_GPG_HIDDEN_RECIPIENT_OPTION to '0'."
+        USE_GPG_HIDDEN_RECIPIENT_OPTION="0"
+
       fi
+
     fi
 
     if [[ -z "$(echo "$FIRMA_USER" | tr -d '[:space:]')" ]]; then
@@ -275,7 +322,7 @@ WARNING: $LIST_NAME: Setting REPLAY_COUNT to '150'."
       else # REPLAY_COUNT is either empty/equals '0' (defaults to '150') or contains a valid value
 
         REPLAY_COUNT="$(( 10#$(echo "$REPLAY_COUNT" | tr -dc '[:digit:]') ))"
-        if [[ "$REPLAY_COUNT" -eq "0" ]]; then
+        if [[ "$REPLAY_COUNT" == "0" ]]; then
           REPLAY_COUNT="150"
         fi
 
@@ -399,16 +446,16 @@ function ParseGpgDecryptStderr {
       cut -d : -f 5
     )"
   then
-    ENCRYPTED_TO_LIST=1
+    ENCRYPTED_TO_LIST="1"
 
     # if it was, check if its signature is valid
     if
       echo "$gpg_decrypt_stderr" | \
       grep -q '^\[GNUPG:] GOODSIG'
     then
-      GOOD_SIGNATURE=1
+      GOOD_SIGNATURE="1"
 
-      if [[ -n "$SENDER_ADDRESS" ]]; then
+      if [[ -z "$SENDER_ADDRESS" ]]; then
         GetSenderAddress
       fi
 
@@ -427,21 +474,21 @@ function ParseGpgDecryptStderr {
       echo "$gpg_decrypt_stderr" | \
       grep -q '^\[GNUPG:] BADSIG'
     then
-      BAD_SIGNATURE=1
+      BAD_SIGNATURE="1"
 
     # else, check if the signature couldn't be verified
     elif
       echo "$gpg_decrypt_stderr" | \
       grep -q '^\[GNUPG:] ERRSIG'
     then
-      SIGNATURE_CHECKING_FAILED=1
+      SIGNATURE_CHECKING_FAILED="1"
 
     # else, check if the message could at least be decrypted
     elif
       echo "$gpg_decrypt_stderr" | \
       grep -q '^\[GNUPG:] DECRYPTION_OKAY'
     then
-      MESSAGE_DECRYPTION_OKAY=1
+      MESSAGE_DECRYPTION_OKAY="1"
 
     fi
   fi
@@ -537,8 +584,8 @@ function EditListMessageHeaders {
   if [[ -n "$REMOVE_THESE_HEADERS" ]]; then
 
     # remove local variables contents, in case they have been used above
-    header=''
-    sed_args=''
+    header=""
+    sed_args=""
 
     for header in $REMOVE_THESE_HEADERS; do
       sed_args="$sed_args -e /^${header}/Id"
@@ -646,7 +693,7 @@ function GetSenderAddress {
 
   local from
 
-  from=$(echo "$ORIG_MESSAGE" | grep -im 1 '^From:')
+  from="$(echo "$ORIG_MESSAGE" | grep -im 1 '^From:')"
   SENDER_ADDRESS=$(
     if [[ -z "$(echo $from | grep '>$')" ]]; then
       echo $from
@@ -1482,9 +1529,9 @@ function CheckPermission {
   #-------------------------------------------------------------
 
   local file="$1"
-  local perms="$(ls -ld $file)"
+  local perms="$(ls -ld "$file")"
 
-  perms=${perms:4:6}
+  perms="${perms:4:6}"
   if [[ "$perms" != "------" ]]; then
     LogMessage "WARNING: Configuration files must not be group or world writable/readable! Wrong permission for file $file"
     return 1
@@ -1853,16 +1900,16 @@ function RandomString {
 
   n="$(( 10#$(echo "$1" | tr -dc '[:digit:]') ))"
   if [[ "$n" == "0" ]]; then
-    n=6
+    n="6"
   fi
 
-  if [[ $n -gt 62 ]]; then
+  if [[ "$n" -gt "62" ]]; then
     return 1
   fi
 
-  while [[ $n -ne 0 ]]; do n=$((n-1)) ; pos=$((RANDOM%${#alpha}+1))
+  while [[ "$n" != "0" ]]; do n="$((n-1))" ; pos="$((RANDOM%${#alpha}+1))"
     echo -n "$alpha" | sed "s/\(.\)\{$pos\}.*/\1/"
-    alpha=$(echo $alpha | sed "s/.//$pos")
+    alpha="$(echo $alpha | sed "s/.//$pos")"
   done | tr -d '\012' ; echo
 
   return 0
@@ -1901,10 +1948,10 @@ function EmailListAdministration {
   local sender found
   local command
 
-  found=0
+  found="0"
   for sender in $LIST_ADMIN; do
     if [[ "$sender" == "$SENDER_ADDRESS" ]]; then
-      found=1
+      found="1"
       break
     fi
   done
@@ -2473,11 +2520,6 @@ case $# in
       # evaluate its parameters
       SourceFirmaConfig
 
-      # set SYSLOG_PRIORITY to the default value, if needed
-      if [[ "$LOG_TO_SYSLOG" == "1" ]]; then
-        SYSLOG_PRIORITY=${SYSLOG_PRIORITY:-"user.err"}
-      fi
-
       # and finally check firma.conf parameters and permissions
       if CheckFirmaConfigFile && CheckPermission $FIRMA_CONFIG_FILE; then
 
@@ -2513,7 +2555,7 @@ case $# in
                   -a|--admin-task)
 
                     MODE="admin-interactive"
-                    # while a quit command isn't entered (returns 2), read STDIN
+                    # while a "quit" command isn't entered (returns 3), read STDIN
                     while (( $EXIT_CODE != 3 )) && read -rep "Command> " STDIN; do
                       # if line is not empty or commented, process command
                       if [[ -n "$STDIN" && "$STDIN" != "#"* ]]; then