summaryrefslogtreecommitdiffstats
path: root/support/scripts/newpackage-notify
diff options
context:
space:
mode:
Diffstat (limited to 'support/scripts/newpackage-notify')
-rwxr-xr-xsupport/scripts/newpackage-notify86
1 files changed, 86 insertions, 0 deletions
diff --git a/support/scripts/newpackage-notify b/support/scripts/newpackage-notify
new file mode 100755
index 00000000..24a996f3
--- /dev/null
+++ b/support/scripts/newpackage-notify
@@ -0,0 +1,86 @@
+#!/usr/bin/python -O
+# $Id$
+# This program is intended to be run as a once-a-day cronjob, it
+# sends a batched email containing the names of all new pacakges in
+# the AUR, added within the last 24 hours, to those who have requested
+# it on their account page.
+
+import sys
+import os
+import MySQLdb, MySQLdb.connections
+import ConfigParser
+from time import time
+
+#some options
+SENDMAIL="/usr/sbin/sendmail"
+
+#Copied and pasted from tupkg updater:
+###########################################################
+# Deal with configuration
+###########################################################
+
+conffile = '/home/aur/tupkgs.conf'
+
+if not os.path.isfile(conffile):
+ print "Error: cannot access config file ("+conffile+")"
+ sys.exit(1)
+
+config = ConfigParser.ConfigParser()
+config.read(conffile)
+############################################################
+
+############################################################
+# Step 1, figure out the unix time 24 hours ago
+starttime = time() - 24*60*60
+
+############################################################
+# Step 2, do all the mysql mucking
+dbconnection = MySQLdb.connect(host=config.get('mysql', 'host'), user=config.get('mysql', 'username'), passwd=config.get('mysql', 'password'), db=config.get('mysql', 'db'))
+q = dbconnection.cursor()
+
+q.execute("SELECT Packages.Name, Packages.ID FROM Packages WHERE Packages.SubmittedTS >= %d AND Packages.DummyPkg = 0"%starttime)
+packages = q.fetchall()
+
+q.execute("SELECT Users.Email FROM Users WHERE Users.NewPkgNotify = 1")
+emails = q.fetchall()
+
+###########################################################
+# Step 3, generate the message, depending on what we found
+
+#generate the headers to say where it is going
+message = "To: \nBcc: "
+emails_list=[]
+for i in emails:
+ emails_list.append(i[0])
+message = message + (", ".join(emails_list))
+
+#where it came from + other headers
+message = message + "\nReply-to: nobody@archlinux.org\nFrom: aur-notify@archlinux.org\nX-Mailer: Python\nX-MimeOLE: Produced by AUR\n"
+
+#the subject
+message = message + "Subject: AUR New Package Notification\n\n"
+
+#TODO: translations of message wouldn't kill anyone, but this would then need to find out the users language pref too
+#Ok now the body
+message = message + "Packages added to the AUR within the last 24 hours include:\n\n"
+pkgs_list=[]
+for i in packages:
+ message = message + i[0] + " ( http://aur.archlinux.org/packages.php?do_Details=1&ID=%d )\n"%i[1]
+message = message + '''
+---
+You received this email because you chose to receive new package
+notifications on your user options page in the AUR. If you no
+longer wish to receive this daily mailing, please go to your
+user options page in the AUR (http://aur.archlinux.org) and
+uncheck "New Package Notify".
+
+'''
+#print message #that's for debug
+
+###########################################################
+# Step 4, mail that sucker
+mailer = os.popen("%s -t" % SENDMAIL, 'w')
+mailer.write(message)
+mailer.close()
+
+# vim:noet:ts=2 sw=2 ft=python