# -*- coding: utf-8 -*-
"""
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3 of the License,
or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, see .
@author: RaNaN, Godofdream, zoidberg
"""
import time, httplib
from module.plugins.Hook import Hook
class WindowsPhoneToastNotify(Hook):
__name__ = "WindowsPhoneToastNotify"
__version__ = "0.02"
__description__ = """Send push notifications to Windows Phone"""
__author_name__ = "Andy Voigt"
__author_mail__ = "phone-support@hotmail.de"
__config__ = [("activated", "bool", "Activated", False),
("force", "bool", "Force even if client is connected", False),
("pushId", "str", "pushId", ""),
("pushUrl","str","pushUrl", ""),
("pushTimeout","int","Timeout between notifications in seconds","0")]
def setup(self):
self.info = {}
def getXmlData(self):
myxml = (" "
" Pyload Mobile Captcha waiting! "
" ")
return myxml
def doRequest(self):
URL = self.getConfig("pushUrl")
request = self.getXmlData()
webservice = httplib.HTTP(URL)
webservice.putrequest("POST", self.getConfig("pushId"))
webservice.putheader("Host", URL)
webservice.putheader("Content-type", "text/xml")
webservice.putheader("X-NotificationClass", "2")
webservice.putheader("X-WindowsPhone-Target", "toast")
webservice.putheader("Content-length", "%d" % len(request))
webservice.endheaders()
webservice.send(request)
webservice.close()
self.setStorage("LAST_NOTIFY", time.time())
def newCaptchaTask(self, task):
if not self.getConfig("pushId") or not self.getConfig("pushUrl"):
return False
if self.core.isClientConnected() and not self.getConfig("force"):
return False
if (time.time() - float(self.getStorage("LAST_NOTIFY", 0))) < self.getConf("pushTimeout"):
return False
self.doRequest()