def _sendNotifyEmail(self, templateTitle, templateParms, to, from_, subject):
      emailText = rdw_helpers.compileTemplate(templateTitle+'.txt',
                                             **templateParms)
      emailHtml = rdw_helpers.compileTemplate(templateTitle+'.html',
                                             **templateParms)

      msgRoot = MIMEMultipart('related')
      msgRoot['Subject'] = subject
      msgRoot['From'] = from_
      msgRoot['To'] = to

      # Attach HTML version
      msgAlternative = MIMEMultipart('alternative')
      msgRoot.attach(msgAlternative)
      msgAlternative.attach(MIMEText(emailHtml, 'html'))

      # Attach plaintext version
      msgAlternative = MIMEMultipart('alternative')
      msgRoot.attach(msgAlternative)
      msgAlternative.attach(MIMEText(emailText))

      # Send email
      session = smtplib.SMTP(self.getEmailHost())
      if self._getEmailUsername():
         session.login(self._getEmailUsername(), self._getEmailPassword())
      smtpresult = session.sendmail(from_, to.split(","), msgRoot.as_string())
      session.quit()
Esempio n. 2
0
 def index(self):
     page = rdw_helpers.compileTemplate("page_start.html",
                                        title="rdiffWeb - Error",
                                        rssLink="",
                                        rssTitle="")
     page = page + self.error
     page = page + rdw_helpers.compileTemplate("page_end.html")
     return page
 def index(self):
    page = rdw_helpers.compileTemplate("page_start.html", title='Set up rdiffWeb', rssLink='', rssTitle='')
    rootEnabled = False
    error = ""
    try:
       rootEnabled = self._rootAccountEnabled()
    except KeyError:
       error = "rdiffWeb setup must be run with root privileges."
    page += rdw_helpers.compileTemplate("setup.html", rootEnabled=rootEnabled, error=error)
    page += rdw_helpers.compileTemplate("page_end.html")
    return page
 def sendEmails(self):
    for user in self.userDB.getUserList():
       userRepos = self.userDB.getUserRepoPaths(user)
       oldRepos = []
       for repo in userRepos:
          maxDaysOld = self.userDB.getRepoMaxAge(user, repo)
          if maxDaysOld != 0:
             # get the last backup date
             try:
                lastBackup = librdiff.getLastBackupHistoryEntry(rdw_helpers.joinPaths(self.userDB.getUserRoot(user), repo), False)
             except librdiff.FileError:
                pass # Skip repos that have never been successfully backed up
             else:
                if lastBackup:
                   oldestGoodBackupTime = rdw_helpers.rdwTime()
                   oldestGoodBackupTime.initFromMidnightUTC(-maxDaysOld)
                   if lastBackup.date < oldestGoodBackupTime:
                      oldRepos.append({"repo" : repo, "lastBackupDate" : lastBackup.date.getDisplayString(), "maxAge" : maxDaysOld })
                
       if oldRepos:
          userEmailAddress = self.userDB.getUserEmail(user)
          emailText = rdw_helpers.compileTemplate("email_notification.txt", repos=oldRepos, sender=self._getEmailSender(), user=user)
 
          session = smtplib.SMTP(self._getEmailHost())
          session.login(self._getEmailUsername(), self._getEmailPassword())
          smtpresult = session.sendmail(self._getEmailSender(), userEmailAddress.split(";"), emailText)
          session.quit()
Esempio n. 5
0
 def index(self):
     page = rdw_helpers.compileTemplate("page_start.html",
                                        title='Set up rdiffWeb',
                                        rssLink='',
                                        rssTitle='')
     rootEnabled = False
     error = ""
     try:
         rootEnabled = self._rootAccountEnabled()
     except KeyError:
         error = "rdiffWeb setup must be run with root privileges."
     page += rdw_helpers.compileTemplate("setup.html",
                                         rootEnabled=rootEnabled,
                                         error=error)
     page += rdw_helpers.compileTemplate("page_end.html")
     return page
    def sendEmails(self):
        for user in self.userDB.getUserList():
            userRepos = self.userDB.getUserRepoPaths(user)
            oldRepos = []
            for repo in userRepos:
                maxDaysOld = self.userDB.getRepoMaxAge(user, repo)
                if maxDaysOld != 0:
                    # get the last backup date
                    try:
                        lastBackup = librdiff.getLastBackupHistoryEntry(
                            rdw_helpers.joinPaths(
                                self.userDB.getUserRoot(user), repo), False)
                    except librdiff.FileError:
                        pass  # Skip repos that have never been successfully backed up
                    else:
                        if lastBackup:
                            oldestGoodBackupTime = rdw_helpers.rdwTime()
                            oldestGoodBackupTime.initFromMidnightUTC(
                                -maxDaysOld)
                            if lastBackup.date < oldestGoodBackupTime:
                                oldRepos.append({
                                    "repo":
                                    repo,
                                    "lastBackupDate":
                                    lastBackup.date.getDisplayString(),
                                    "maxAge":
                                    maxDaysOld
                                })

            if oldRepos:
                userEmailAddress = self.userDB.getUserEmail(user)
                emailText = rdw_helpers.compileTemplate(
                    "email_notification.txt",
                    repos=oldRepos,
                    sender=self._getEmailSender(),
                    user=user)

                session = smtplib.SMTP(self._getEmailHost())
                session.login(self._getEmailUsername(),
                              self._getEmailPassword())
                smtpresult = session.sendmail(self._getEmailSender(),
                                              userEmailAddress.split(";"),
                                              emailText)
                session.quit()
def emailNotifications():
   emailHost = getEmailHost()
   emailSender = getEmailSender()
   emailUsername = getEmailUsername()
   emailPassword = getEmailPassword()
      
   dbBackend = db.userDB().getUserDBModule()
   for user in dbBackend.getUserList():
      userRepos = dbBackend.getUserRepoPaths(user)
      oldRepos = []
      for repo in userRepos:
         maxDaysOld = dbBackend.getRepoMaxAge(user, repo)
         if maxDaysOld != 0:
            # get the last backup date
            try:
               lastBackup = librdiff.getLastBackupHistoryEntry(rdw_helpers.joinPaths(dbBackend.getUserRoot(user), repo), False)
            except librdiff.FileError:
               pass # Skip repos that have never been successfully backed up
            else:
               if lastBackup:
                  oldestGoodBackupTime = rdw_helpers.rdwTime()
                  oldestGoodBackupTime.initFromMidnightUTC(-maxDaysOld)
                  if lastBackup.date < oldestGoodBackupTime:
                     oldRepos.append({"repo" : repo, "lastBackupDate" : lastBackup.date.getDisplayString(), "maxAge" : maxDaysOld })
               
      if oldRepos:
         userEmailAddress = dbBackend.getUserEmail(user)
         emailText = rdw_helpers.compileTemplate("email_notification.txt", repos=oldRepos, sender=emailSender, user=user)

         session = smtplib.SMTP(emailHost)
         session.login(emailUsername, emailPassword)
         smtpresult = session.sendmail(emailSender, userEmailAddress.split(";"), emailText)
         if smtpresult:
            error = ""
            for recipient in smtpresult.keys():
               error = """Could not delivery mail to: %s

Server said: %s
%s

%s""" % (recipient, smtpresult[recipient][0], smtpresult[recipient][1], error)
            raise smtplib.SMTPException, error
         session.quit()
def buildNotificationsTable(notify_options):
   """ options should be a dictionary of optionName to selectedOptionNum """
   
   options = []
   keys = notify_options.keys()
   keys.sort()
   for key in keys:
      notifyOptions = []
      for i in range(0, 8):
         notifyStr = "Don't notify"
         if i == 1:
            notifyStr = "1 day"
         elif i > 1:
            notifyStr = str(i) + " days"
            
         selectedStr = ""
         if i == notify_options[key]:
            selectedStr = "selected"
         
         notifyOptions.append({ "optionStr": notifyStr, "selectedStr": selectedStr })
      options.append({ "key" : key, "notifyOptions" : notifyOptions })

   return rdw_helpers.compileTemplate("notifications_table.html", options=options)
Esempio n. 9
0
 def compileTemplate(self, templatePath, **kwargs):
     return rdw_helpers.compileTemplate(templatePath, **kwargs)
Esempio n. 10
0
 def compileTemplate(self, templatePath, **kwargs):
    return rdw_helpers.compileTemplate(templatePath, **kwargs)
Esempio n. 11
0
 def index(self):
     page = rdw_helpers.compileTemplate("page_start.html", title="rdiffWeb - Error", rssLink="", rssTitle="")
     page = page + self.error
     page = page + rdw_helpers.compileTemplate("page_end.html")
     return page