Ver código fonte

Command for adding a mailing list rule

Bob Mottram 10 anos atrás
pai
commit
4b4fb4e5e5
5 arquivos alterados com 111 adições e 62 exclusões
  1. 4
    0
      Makefile
  2. 1
    0
      debian/source/include-binaries
  3. BIN
      man/freedombone-addlist.1.gz
  4. 1
    62
      src/freedombone
  5. 105
    0
      src/freedombone-addlist

+ 4
- 0
Makefile Ver arquivo

@@ -17,6 +17,7 @@ install:
17 17
 	install -m 755 src/${APP}-config ${DESTDIR}${PREFIX}/bin
18 18
 	install -m 755 src/${APP}-sec ${DESTDIR}${PREFIX}/bin
19 19
 	install -m 755 src/${APP}-addcert ${DESTDIR}${PREFIX}/bin
20
+	install -m 755 src/${APP}-addlist ${DESTDIR}${PREFIX}/bin
20 21
 	mkdir -m 755 -p ${DESTDIR}${PREFIX}/share/man/man1
21 22
 	install -m 644 man/${APP}.1.gz ${DESTDIR}${PREFIX}/share/man/man1
22 23
 	install -m 644 man/${APP}-prep.1.gz ${DESTDIR}${PREFIX}/share/man/man1
@@ -25,6 +26,7 @@ install:
25 26
 	install -m 644 man/${APP}-config.1.gz ${DESTDIR}${PREFIX}/share/man/man1
26 27
 	install -m 644 man/${APP}-sec.1.gz ${DESTDIR}${PREFIX}/share/man/man1
27 28
 	install -m 644 man/${APP}-addcert.1.gz ${DESTDIR}${PREFIX}/share/man/man1
29
+	install -m 644 man/${APP}-addlist.1.gz ${DESTDIR}${PREFIX}/share/man/man1
28 30
 uninstall:
29 31
 	rm -f ${PREFIX}/share/man/man1/${APP}.1.gz
30 32
 	rm -f ${PREFIX}/share/man/man1/${APP}-prep.1.gz
@@ -33,6 +35,7 @@ uninstall:
33 35
 	rm -f ${PREFIX}/share/man/man1/${APP}-config.1.gz
34 36
 	rm -f ${PREFIX}/share/man/man1/${APP}-sec.1.gz
35 37
 	rm -f ${PREFIX}/share/man/man1/${APP}-addcert.1.gz
38
+	rm -f ${PREFIX}/share/man/man1/${APP}-addlist.1.gz
36 39
 	rm -rf ${PREFIX}/share/${APP}
37 40
 	rm -f ${PREFIX}/bin/${APP}
38 41
 	rm -f ${PREFIX}/bin/${APP}-prep
@@ -41,6 +44,7 @@ uninstall:
41 44
 	rm -f ${PREFIX}/bin/${APP}-config
42 45
 	rm -f ${PREFIX}/bin/${APP}-sec
43 46
 	rm -f ${PREFIX}/bin/${APP}-addcert
47
+	rm -f ${PREFIX}/bin/${APP}-addlist
44 48
 clean:
45 49
 	rm -f \#* \.#* debian/*.substvars debian/*.log
46 50
 	rm -fr deb.* debian/${APP}

+ 1
- 0
debian/source/include-binaries Ver arquivo

@@ -5,3 +5,4 @@ man/freedombone-remote.1.gz
5 5
 man/freedombone-config.1.gz
6 6
 man/freedombone-sec.1.gz
7 7
 man/freedombone-addcert.1.gz
8
+man/freedombone-addlist.1.gz

BIN
man/freedombone-addlist.1.gz Ver arquivo


+ 1
- 62
src/freedombone Ver arquivo

@@ -5887,66 +5887,6 @@ function email_archiving {
5887 5887
   echo 'email_archiving' >> $COMPLETION_FILE
5888 5888
 }
5889 5889
 
5890
-function folders_for_mailing_lists {
5891
-  if [[ $SYSTEM_TYPE == "$VARIANT_CHAT" || $SYSTEM_TYPE == "$VARIANT_MEDIA" || $SYSTEM_TYPE == "$VARIANT_NONMAILBOX" ]]; then
5892
-      return
5893
-  fi
5894
-  if grep -Fxq "folders_for_mailing_lists" $COMPLETION_FILE; then
5895
-      return
5896
-  fi
5897
-  echo '#!/bin/bash' > /usr/bin/addmailinglist
5898
-  echo 'MYUSERNAME=$1' >> /usr/bin/addmailinglist
5899
-  echo 'MAILINGLIST=$2' >> /usr/bin/addmailinglist
5900
-  echo 'SUBJECTTAG=$3' >> /usr/bin/addmailinglist
5901
-  echo 'MUTTRC=/home/$MYUSERNAME/.muttrc' >> /usr/bin/addmailinglist
5902
-  echo 'PM=/home/$MYUSERNAME/.procmailrc' >> /usr/bin/addmailinglist
5903
-  echo 'LISTDIR=/home/$MYUSERNAME/Maildir/$MAILINGLIST' >> /usr/bin/addmailinglist
5904
-  echo '' >> /usr/bin/addmailinglist
5905
-  echo '# Exit if the list was already added' >> /usr/bin/addmailinglist
5906
-  echo 'if grep -q "=$MAILINGLIST" $MUTTRC; then' >> /usr/bin/addmailinglist
5907
-  echo '  exit 1' >> /usr/bin/addmailinglist
5908
-  echo 'fi' >> /usr/bin/addmailinglist
5909
-  echo '' >> /usr/bin/addmailinglist
5910
-  echo 'if ! [[ $MYUSERNAME && $MAILINGLIST && $SUBJECTTAG ]]; then' >> /usr/bin/addmailinglist
5911
-  echo '  echo "addmailinglist [user name] [mailing list name] [subject tag]"' >> /usr/bin/addmailinglist
5912
-  echo '  exit 1' >> /usr/bin/addmailinglist
5913
-  echo 'fi' >> /usr/bin/addmailinglist
5914
-  echo '' >> /usr/bin/addmailinglist
5915
-  echo 'if [ ! -d "$LISTDIR" ]; then' >> /usr/bin/addmailinglist
5916
-  echo '  mkdir -m 700 $LISTDIR' >> /usr/bin/addmailinglist
5917
-  echo '  mkdir -m 700 $LISTDIR/tmp' >> /usr/bin/addmailinglist
5918
-  echo '  mkdir -m 700 $LISTDIR/new' >> /usr/bin/addmailinglist
5919
-  echo '  mkdir -m 700 $LISTDIR/cur' >> /usr/bin/addmailinglist
5920
-  echo 'fi' >> /usr/bin/addmailinglist
5921
-  echo '' >> /usr/bin/addmailinglist
5922
-  echo 'chown -R $MYUSERNAME:$MYUSERNAME $LISTDIR' >> /usr/bin/addmailinglist
5923
-  echo 'echo "" >> $PM' >> /usr/bin/addmailinglist
5924
-  echo 'echo ":0" >> $PM' >> /usr/bin/addmailinglist
5925
-  echo 'echo "  * ^Subject:.*()\[$SUBJECTTAG\]" >> $PM' >> /usr/bin/addmailinglist
5926
-  echo 'echo "$LISTDIR/new" >> $PM' >> /usr/bin/addmailinglist
5927
-  echo 'chown $MYUSERNAME:$MYUSERNAME $PM' >> /usr/bin/addmailinglist
5928
-  echo '' >> /usr/bin/addmailinglist
5929
-  echo 'if [ ! -f "$MUTTRC" ]; then' >> /usr/bin/addmailinglist
5930
-  echo '  cp /etc/Muttrc $MUTTRC' >> /usr/bin/addmailinglist
5931
-  echo '  chown $MYUSERNAME:$MYUSERNAME $MUTTRC' >> /usr/bin/addmailinglist
5932
-  echo 'fi' >> /usr/bin/addmailinglist
5933
-  echo '' >> /usr/bin/addmailinglist
5934
-  echo 'PROCMAILLOG=/home/$MYUSERNAME/log' >> /usr/bin/addmailinglist
5935
-  echo 'if [ ! -d $PROCMAILLOG ]; then' >> /usr/bin/addmailinglist
5936
-  echo '  mkdir $PROCMAILLOG' >> /usr/bin/addmailinglist
5937
-  echo '  chown -R $MYUSERNAME:$MYUSERNAME $PROCMAILLOG' >> /usr/bin/addmailinglist
5938
-  echo 'fi' >> /usr/bin/addmailinglist
5939
-  echo '' >> /usr/bin/addmailinglist
5940
-  echo 'MUTT_MAILBOXES=$(grep "mailboxes =" $MUTTRC)' >> /usr/bin/addmailinglist
5941
-  echo 'if [[ $MUTT_MAILBOXES != *$MAILINGLIST* ]]; then' >> /usr/bin/addmailinglist
5942
-  echo '  sed -i "s|$MUTT_MAILBOXES|$MUTT_MAILBOXES =$MAILINGLIST|g" $MUTTRC' >> /usr/bin/addmailinglist
5943
-  echo '  chown $MYUSERNAME:$MYUSERNAME $MUTTRC' >> /usr/bin/addmailinglist
5944
-  echo 'fi' >> /usr/bin/addmailinglist
5945
-  echo 'exit 0' >> /usr/bin/addmailinglist
5946
-  chmod +x /usr/bin/addmailinglist
5947
-  echo 'folders_for_mailing_lists' >> $COMPLETION_FILE
5948
-}
5949
-
5950 5890
 # Ensure that the from field is correct when sending email from Mutt
5951 5891
 function email_from_address {
5952 5892
   if grep -Fxq "email_from_address" $COMPLETION_FILE; then
@@ -6109,7 +6049,7 @@ function create_public_mailing_list {
6109 6049
       echo "cleartext email to $PUBLIC_MAILING_LIST+subscribe@$DEFAULT_DOMAIN_NAME" >> /home/$MY_USERNAME/README
6110 6050
   fi
6111 6051
 
6112
-  addmailinglist $MY_USERNAME "$PUBLIC_MAILING_LIST" "$PUBLIC_MAILING_LIST"
6052
+  freedombone-addlist -u $MY_USERNAME -l "$PUBLIC_MAILING_LIST" -s "$PUBLIC_MAILING_LIST"
6113 6053
 
6114 6054
   echo 'create_public_mailing_list' >> $COMPLETION_FILE
6115 6055
 }
@@ -9012,7 +8952,6 @@ email_client
9012 8952
 email_archiving
9013 8953
 email_from_address
9014 8954
 configure_firewall_for_email
9015
-folders_for_mailing_lists
9016 8955
 folders_for_email_addresses
9017 8956
 create_public_mailing_list
9018 8957
 #create_private_mailing_list

+ 105
- 0
src/freedombone-addlist Ver arquivo

@@ -0,0 +1,105 @@
1
+#!/bin/bash
2
+
3
+# Adds a mailing list to the email configuration
4
+
5
+# License
6
+# =======
7
+#
8
+# Copyright (C) 2015 Bob Mottram <bob@robotics.uk.to>
9
+#
10
+# This program is free software: you can redistribute it and/or modify
11
+# it under the terms of the GNU General Public License as published by
12
+# the Free Software Foundation, either version 3 of the License, or
13
+# (at your option) any later version.
14
+#
15
+# This program is distributed in the hope that it will be useful,
16
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
17
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18
+# GNU General Public License for more details.
19
+#
20
+# You should have received a copy of the GNU General Public License
21
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
22
+
23
+MYUSERNAME=$USER
24
+MAILINGLIST=
25
+SUBJECTTAG=
26
+
27
+function show_help {
28
+    echo ''
29
+    echo 'freedombone-addlist -u [username] -l [mailing list name] -s [subject tag]'
30
+    echo ''
31
+	exit 0
32
+}
33
+
34
+while [[ $# > 1 ]]
35
+do
36
+key="$1"
37
+
38
+case $key in
39
+    -h|--help)
40
+    show_help
41
+    ;;
42
+    -u|--user)
43
+    shift
44
+    MYUSERNAME="$1"
45
+    ;;
46
+    -l|--list)
47
+    shift
48
+    MAILINGLIST="$1"
49
+    ;;
50
+    -s|--subject)
51
+    shift
52
+    SUBJECTTAG="$1"
53
+    ;;
54
+    *)
55
+    # unknown option
56
+    ;;
57
+esac
58
+shift
59
+done
60
+
61
+if ! [[ $MYUSERNAME && $MAILINGLIST && $SUBJECTTAG ]]; then
62
+    show_help
63
+fi
64
+
65
+MUTTRC=/home/$MYUSERNAME/.muttrc
66
+PM=/home/$MYUSERNAME/.procmailrc
67
+LISTDIR=/home/$MYUSERNAME/Maildir/$MAILINGLIST
68
+
69
+# Exit if the list was already added
70
+if grep -q "=$MAILINGLIST" $MUTTRC; then
71
+    exit 54678
72
+fi
73
+
74
+if [ ! -d "$LISTDIR" ]; then
75
+    mkdir -m 700 $LISTDIR
76
+    mkdir -m 700 $LISTDIR/tmp
77
+    mkdir -m 700 $LISTDIR/new
78
+    mkdir -m 700 $LISTDIR/cur
79
+fi
80
+
81
+chown -R $MYUSERNAME:$MYUSERNAME $LISTDIR
82
+echo "" >> $PM
83
+echo ":0" >> $PM
84
+echo "  * ^Subject:.*()\[$SUBJECTTAG\]" >> $PM
85
+echo "$LISTDIR/new" >> $PM
86
+chown $MYUSERNAME:$MYUSERNAME $PM
87
+
88
+if [ ! -f "$MUTTRC" ]; then
89
+    cp /etc/Muttrc $MUTTRC
90
+    chown $MYUSERNAME:$MYUSERNAME $MUTTRC
91
+fi
92
+
93
+PROCMAILLOG=/home/$MYUSERNAME/log
94
+if [ ! -d $PROCMAILLOG ]; then
95
+    mkdir $PROCMAILLOG
96
+    chown -R $MYUSERNAME:$MYUSERNAME $PROCMAILLOG
97
+fi
98
+
99
+MUTT_MAILBOXES=$(grep "mailboxes =" $MUTTRC)
100
+if [[ $MUTT_MAILBOXES != *$MAILINGLIST* ]]; then
101
+    sed -i "s|$MUTT_MAILBOXES|$MUTT_MAILBOXES =$MAILINGLIST|g" $MUTTRC
102
+    chown $MYUSERNAME:$MYUSERNAME $MUTTRC
103
+fi
104
+
105
+exit 0