]> gitweb.fluxo.info Git - firma.git/commitdiff
sendkey pgp/mime fixes; new function RandomString
authorrhatto <rhatto>
Mon, 9 Oct 2006 19:58:45 +0000 (19:58 +0000)
committerrhatto <rhatto>
Mon, 9 Oct 2006 19:58:45 +0000 (19:58 +0000)
firma

diff --git a/firma b/firma
index 30be64184d5d52a5c2a375300521b7fabe683d7f..b42ca5ee2525b63d80aad179938eead15038534a 100755 (executable)
--- a/firma
+++ b/firma
@@ -1258,7 +1258,7 @@ function UnsubscribeUser {
     done
   fi
 
-  chown -R $FIRMA_USER.$FIRMA_GROUP $LIST_PATH
+  FixListOwnership
   return $return_code
 }
 
@@ -1346,8 +1346,8 @@ function SubscribeUsers {
     echo >&2 "subscribe: wrong option: type subscribe help"
     return_code=1
   fi
-
-  chown -R $FIRMA_USER.$FIRMA_GROUP $LIST_PATH
+  
+  FixListOwnerShip
   return $return_code
 }
 
@@ -1394,32 +1394,36 @@ function SendListPubkey {
     fi
 
     recipients="$key"
-    random="$RANDOM"
+    boundary="`RandomString 15`"
 
     # these are the headers of the message to be sent, so no indentation here
     MESSAGE_HEADERS="\
 From: $LIST_ADDRESS
 Subject: List public key for $LIST_ADDRESS
-To: $recipients"
+To: $recipients
+MIME-Version: 1.0
+Content-Type: multipart/encrypted;
+  protocol=\"application/pgp-encrypted\";
+  boundary=\"${boundary}\"
+Content-Disposition: inline"
 
     # this is the body of the message to be sent, so no indentation here
     MESSAGE_BODY="`$GPG --armor --export $LIST_ADDRESS`"
 
     MESSAGE_BODY="
-Content-Type: multipart/encrypted; protocol="application/pgp-encrypted"; boundary="$random"
---$random
+--$boundary
 Content-Type: application/pgp-encrypted
 Content-Disposition: attachment
 
 Version: 1
 
---$random
+--$boundary
 Content-Type: application/octet-stream
 Content-Disposition: inline; filename="msg.asc"
 
 $(echo -e "${PASSPHRASE}\n${MESSAGE_BODY}" | $GPG_ENCRYPT --recipient $recipients)
 
---$random--"
+--$boundary--"
 
     AssembleMessage
 
@@ -1465,6 +1469,54 @@ function GetSubscribersInfo {
   return $?
 }
 
+
+function FixListOwnershipt {
+  #-------------------------------------------------------------
+  # fix list ownership
+  #
+  # parameter(s): none
+  # depends on function(s): none
+  # returns: 0 on success
+  #          1 on failure
+  #-------------------------------------------------------------
+
+  chown -R $FIRMA_USER.$FIRMA_GROUP $LIST_PATH
+  return $?
+}
+
+
+function RandomString {
+  #-------------------------------------------------------------
+  # print a random string
+  # +got it from http://funcoeszz.net/
+  #
+  # parameter(s): string size (max 62)
+  # depends on function(s): none
+  # returns: 0
+  #          1 if string size is greater than 62
+  #-------------------------------------------------------------
+
+  local n alpha="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
+
+  if [ -z "$1" ]; then
+    n=6 
+  else
+    n=`echo "$1" | sed 's/[^0-9]//g'`
+  fi
+
+  if [ $n -gt 62 ]; then
+    return 1
+  fi
+
+  while [ $n -ne 0 ]; do n=$((n-1)) ; pos=$((RANDOM%${#alpha}+1))
+    echo -n "$alpha" | sed "s/\(.\)\{$pos\}.*/\1/"
+    alpha=`echo $alpha | sed "s/.//$pos"`
+  done | tr -d '\012' ; echo
+
+  return 0
+
+}
+
 #-------------------------------------------------------------
 # main()
 #-------------------------------------------------------------