#!/opt/bin/bash fehler=0 probeModus=0 rm /tmp/getmailCreate.tmp > /dev/null 2>&1 rm /tmp/getmailScript.tmp > /dev/null 2>&1 touch /tmp/getmailCreate.tmp writeGetmailScript () { getmailScript="/volume1/homes/$benutzer/getmail.sh" if test $probeModus -eq 0 then if test -e $getmailScript then echo "Das File $getmailScript existiert bereits" echo echo -n "Soll das bestehende File geloescht werden? (j/n default j) " read loeschen case $loeschen in j) rm /volume1/homes/$benutzer/getmail.sh ;; n) mv /volume1/homes/$benutzer/getmail.sh /volume1/homes/$benutzer/getmail.sh.bak ;; *) rm /volume1/homes/$benutzer/getmail.sh ;; esac fi else getmailScript="/tmp/getmailScript.tmp" fi touch $getmailScript echo '#!/bin/sh' >> $getmailScript echo "PATH=/opt/bin:/opt/sbin:/opt/sbin:/opt/bin:/usr/sbin:/usr/bin:/sbin:/bin:/bin:/sbin:/usr/bin:/usr/sbin:/usr/syno/bin:/usr/syno/sbin:/usr/local/bin:/usr/local/sbin" >> $getmailScript echo "pid_getmail='/tmp/getmail.pid'" >> $getmailScript echo 'if [ -s "$pid_getmail" ]; then' >> $getmailScript echo ' exit' >> $getmailScript echo 'else' >> $getmailScript echo ' touch $pid_getmail' >> $getmailScript case $mailLoeschen in true) mailLoeschen='-d' ;; false) mailLoeschen='-l' ;; *) mailLoeschen='-l' ;; esac echo -n " su $benutzer -c '/opt/bin/getmail -q $mailLoeschen --getmaildir /volume1/homes/$benutzer/.getmail" >> $getmailScript for i in $(cat /tmp/getmailCreate.tmp) do echo echo -n " -r $i" >> $getmailScript cat /volume1/homes/$benutzer/.getmail/$i echo done echo >> $getmailScript echo ' exit' >> $getmailScript echo 'fi' >> $getmailScript cat $getmailScript } savaData () { if test $probeModus -eq 1 then echo "$loginname@$server.rc" >> /tmp/getmailCreate.tmp echo "# /volume1/homes/$benutzer/.getmail/$loginname@$server" echo '[options]' echo " delete = $mailLoeschen" echo " message_log = /volume1/homes/$benutzer/.getmail/log" echo echo '[retriever]' echo " type = $accountTyp" echo " server = $server" echo " port = $port" echo " username = $loginname" echo " password = $passwort" echo " use_apop = false" echo " timeout = 180" echo " delete_dup_msgids = true" echo echo '[destination]' echo ' type = Maildir' echo " path = /volume1/homes/$benutzer/.Maildir/" echo " user = $benutzer" echo " filemode = 0600" else if test -e /volume1/homes/$benutzer/.getmail/$loginname@$server.rc then echo "Das File /volume1/homes/$benutzer/.getmail/$loginname@$server.rc existiert bereits" echo echo -n "Soll das bestehende File geloescht werden? (j/n default n) " read loeschen case $loeschen in j) rm /volume1/homes/$benutzer/.getmail/$loginname@$server.rc ;; n) mv /volume1/homes/$benutzer/.getmail/$loginname@$server.rc /volume1/homes/$benutzer/.getmail/$loginname@$server.rc ;; *) mv /volume1/homes/$benutzer/.getmail/$loginname@$server.rc /volume1/homes/$benutzer/.getmail/$loginname@$server.rc ;; esac fi echo "$loginname@$server.rc" >> /tmp/getmailCreate.tmp mkdir -p /volume1/homes/$benutzer/.getmail touch "/volume1/homes/$benutzer/.getmail/$loginname@$server.rc" echo '[options]' >> /volume1/homes/$benutzer/.getmail/$loginname@$server.rc echo " delete = $mailLoeschen" >> /volume1/homes/$benutzer/.getmail/$loginname@$server.rc echo " message_log = /volume1/homes/$benutzer/.getmail/log" >> /volume1/homes/$benutzer/.getmail/$loginname@$server.rc echo >> /volume1/homes/$benutzer/.getmail/$loginname@$server.rc echo '[retriever]' >> /volume1/homes/$benutzer/.getmail/$loginname@$server.rc echo " type = $accountTyp" >> /volume1/homes/$benutzer/.getmail/$loginname@$server.rc echo " server = $server" >> /volume1/homes/$benutzer/.getmail/$loginname@$server.rc echo " port = $port" >> /volume1/homes/$benutzer/.getmail/$loginname@$server.rc echo " username = $loginname" >> /volume1/homes/$benutzer/.getmail/$loginname@$server.rc echo " password = $passwort" >> /volume1/homes/$benutzer/.getmail/$loginname@$server.rc echo " use_apop = false" >> /volume1/homes/$benutzer/.getmail/$loginname@$server.rc echo " timeout = 180" >> /volume1/homes/$benutzer/.getmail/$loginname@$server.rc echo " delete_dup_msgids = true" >> /volume1/homes/$benutzer/.getmail/$loginname@$server.rc echo >> /volume1/homes/$benutzer/.getmail/$loginname@$server.rc echo '[destination]' >> /volume1/homes/$benutzer/.getmail/$loginname@$server.rc echo ' type = Maildir' >> /volume1/homes/$benutzer/.getmail/$loginname@$server.rc echo " path = /volume1/homes/$benutzer/.Maildir/" >> /volume1/homes/$benutzer/.getmail/$loginname@$server.rc echo " user = $benutzer" >> /volume1/homes/$benutzer/.getmail/$loginname@$server.rc echo " filemode = 0600" >> /volume1/homes/$benutzer/.getmail/$loginname@$server.rc fi } if test "$*" = 'install' || test "$*" = '-i' then if ! test "$(whoami)" = 'root' then echo "" echo "Fehler::Das Script muss unter root laufen" fehler=1 echo "" fi which ipkg > /dev/null 2>&1 if ! test $? -eq 0 then echo "" echo "Fehler::ipkg scheint nicht installiert zu sein" fehler=1 echo "" fi ping -c 1 www.google.ch > /dev/null 2>&1 if ! test $? -eq 0 then echo "" echo "Fehler::Keine Internetverbindung" fehler=1 echo "" fi if test $fehler -eq 1 then exit 1 fi echo "Update der ipkg Quellen" ipkg update > /dev/null 2>&1 if ! test $? -eq 0 then echo "" echo "Fehler::ipkg update konnte nicht ausfeguehrt werden" echo "" exit fi ipkg list_installed | grep getmail > /dev/null 2>&1 if test $? -eq 0 then echo "" echo "Fehler::getmail scheint bereits installiert zu sein" ipkg list_installed | grep getmail echo "" exit fi echo "Installiere getmail und die noetigen Pakete" ipkg install getmail > /dev/null 2>&1 if ! test $? -eq 0 then echo "" echo "Fehler::Installation konnte nicht abgeschlossen werden" echo "" exit fi echo "" elif test "$*" = 'create' || test "$*" = '-c' then echo -n "Wieviele externe Accounts sollen erstellt werden? (1-5)" read anzahl if test -z $anzahl then echo "Es wird kein Account erstellt" exit else if test $anzahl -gt 5 then anzahl=5 fi echo -n "Fuer welchen User der DS sind diese Accounts?" read benutzer while ! test -e "/volume1/homes/$benutzer" || test -z $benutzer do echo -n "Bitte einen gueltigen Benutzer angeben: " read benutzer if test -n $benutzer && test -e "/volume1/homes/$benutzer" then break fi done while true do echo -n "Sollen die Mails nach dem Laden durch getmail auf den Servern geloescht werden?(true/false) " read mailLoeschen if test "$mailLoeschen" = 'true' || test "$mailLoeschen" = 'false' then break fi done i=1 while test $i -le $anzahl do while true do echo echo "Daten fuer Account $i von $anzahl werden abgefragt" echo "Was fuer ein Typ Account soll angelegt werden?" echo echo -n "Es werden pop3/pop3s und imap/imaps unterstuetzt: " read accountTyp case $accountTyp in imap) accountTyp="SimpleIMAPRetriever"; break ;; imaps) accountTyp="SimpleIMAPSSLRetriever"; break ;; pop3) accountTyp="SimplePOP3Retriever"; break ;; pop3s) accountTyp="SimplePOP3SSLRetriever"; break ;; *) accountTyp='' ;; esac done while true do echo -n "Name des Servers z.B. pop.gmx.de: " read server if ! test "$(echo $server | ./trim.php)" = '0' then break fi done while true do echo -n "Port der Servers z.B. 143 fuer IMAP und 993 fuer IMAPs: " read port if ! test "$(echo $port | ./trim.php)" = '0' then break fi done while true do echo -n "Benutzername fuer Login an $server:$port: " read loginname if test "$(echo $loginname | ./trim.php)" != '0' then break fi done while true do echo -n "Passwort fuer Login auf $server angeben: " read passwort if test "$(echo $passwort | ./trim.php)" != '0' then break fi done i=`expr $i + 1` savaData done fi else echo "Usage" exit fi writeGetmailScript