def GET(self, name): d = web.input() logging.info("Receiving an alert\n%s" % (d)) if d.subject: d.subject = urllib.unquote_plus(d.subject) else: return "No subject. -s is required on sending a oncall message" if d.message: d.message = urllib.unquote_plus(d.message) else: return "No message. -m is required on sending a oncall message" if d.passwd: d.passwd = urllib.unquote_plus(d.passwd) if d.team: d.team = urllib.unquote_plus(d.team) else: d.team = "default" try: #check for security password if configured to do so goAhead = True if "security_passwd" in conf: if d.passwd == conf['security_passwd']: goAhead = True else: goAhead = False if goAhead == True: isNewAlert = True # check to see if this alert is a new one for a in Alert.fresh_alerts(): if a.subject == d.subject and a.message == d.message and a.team == d.team: isNewAlert = False if isNewAlert == True: # save new alert to the db newalert = Alert.Alert() newalert.subject = d.subject newalert.message = d.message newalert.team = d.team newalert.send_alert() return "OK:\n" + newalert.print_alert() else: return "Not authorized" except Exception, e: logging.error(e.__str__()) return e.__str__()
def create(self): if self.target == "alert" or self.target == "alerts": if self.subject: self.subject = urllib.unquote_plus(self.subject) else: self.populate(1201, "No subject in alert creation") return if self.message: self.message = urllib.unquote_plus(self.message) else: self.populate(1202, "No message in alert creation") return if self.team: self.team = urllib.unquote_plus(self.team) else: self.team = "default" # check to see if this alert is a new one isNewAlert = True for a in Alert.fresh_alerts(): if a.subject == self.subject and a.message == self.message and a.team == self.team: isNewAlert = False if isNewAlert == True: # save new alert to the db newalert = Alert.Alert() newalert.subject = self.subject newalert.message = self.message newalert.team = self.team newalert.send_alert() self.populate(200, "OK") else: self.populate(200, "OK", json.dumps("Repeat alert")) elif self.target == "user" or self.target == "users": if self.name == None or len(self.name) <= 0: self.populate(1301, "No name parameter given in user creation") return if self.email == None or len( self.email) <= 0 or "@" not in self.email: self.populate( 1302, "No or invalid email parameter given in user creation") return if self.phone == None or len( self.phone) != 12 or self.phone.startswith("+"): if self.state != 9: self.populate( 1303, "No or invalid phone number parameter given in user creation" ) return if self.state == None or isinstance(self.state, int): self.state = 0 if self.team == None: self.team = "default" newuser = User.User() newuser.name = self.name newuser.email = self.email newuser.phone = self.phone newuser.state = self.state newuser.team = self.team newuser.save_user() if newuser.state != 9: valid_code = twilio.validate_phone(newuser) if valid_code == False: self.populate( 1401, "Unable to get a validation code for new phone number") return elif valid_code == True: self.populate( 1402, "Phone has already been verified with Twilio") return else: self.populate(1400, "Validation Code: %s" % (valid_code)) else: self.populate(200, "OK") return else: self.populate( 1101, "Invalid API create call: Missing valid target parameter") return
def create(self): if self.target == "alert" or self.target == "alerts": if self.subject: self.subject = urllib.unquote_plus(self.subject) else: self.populate(1201,"No subject in alert creation") return if self.message: self.message = urllib.unquote_plus(self.message) else: self.populate(1202,"No message in alert creation") return if self.team: self.team= urllib.unquote_plus(self.team) else: self.team="default" # check to see if this alert is a new one isNewAlert = True for a in Alert.fresh_alerts(): if a.subject == self.subject and a.message == self.message and a.team == self.team: isNewAlert = False if isNewAlert == True: # save new alert to the db newalert = Alert.Alert() newalert.subject = self.subject newalert.message = self.message newalert.team = self.team newalert.send_alert() self.populate(200,"OK") else: self.populate(200,"OK",json.dumps("Repeat alert")) elif self.target == "user" or self.target == "users": if self.name == None or len(self.name) <= 0: self.populate(1301,"No name parameter given in user creation") return if self.email == None or len(self.email) <= 0 or "@" not in self.email: self.populate(1302,"No or invalid email parameter given in user creation") return if self.phone == None or len(self.phone) != 12 or self.phone.startswith("+"): if self.state != 9: self.populate(1303,"No or invalid phone number parameter given in user creation") return if self.state == None or isinstance(self.state, int): self.state = 0 if self.team == None: self.team = "default" newuser = User.User() newuser.name = self.name newuser.email = self.email newuser.phone = self.phone newuser.state = self.state newuser.team = self.team newuser.save_user() if newuser.state != 9: valid_code = twilio.validate_phone(newuser) if valid_code == False: self.populate(1401,"Unable to get a validation code for new phone number") return elif valid_code == True: self.populate(1402,"Phone has already been verified with Twilio") return else: self.populate(1400,"Validation Code: %s" % (valid_code)) else: self.populate(200,"OK") return else: self.populate(1101,"Invalid API create call: Missing valid target parameter") return