Exemplo n.º 1
0
def create_flag(name, token, value, box, description="No description", is_file=False):
    if Flag.by_name(name) is not None:
        logging.info("Flag with name '%s' already exists, skipping" % (name))
        return Flag.by_name(name)
    if Flag.by_token(token) is not None:
        logging.info("Flag with token '%s' already exists, skipping" % (token))
        return Flag.by_token(token)
    if is_file and os.path.exists(token):
        with open(token) as favatar:
            _token = Flag.digest(favatar.read())
    elif is_file and 40 == len(token):
        _token = unicode(token)  # Just assume it's a SHA1
    elif is_file:
        raise ValueError("Flag token file does not exist, and is not a hash.")
    else:
        _token = unicode(token[:256])
    logging.info("Create Flag: %s" % name)
    flag = Flag(
        name=unicode(name[:32]),
        token=_token,
        is_file=is_file,
        description=unicode(description[:256]),
        value=abs(int(value)),
        box_id=box.id,
    )
    dbsession.add(flag)
    dbsession.flush()
    return flag
Exemplo n.º 2
0
 def create_flag(self):
     ''' Create a flag '''
     form = Form(
         box_uuid="Please select a box",
         flag_name="Please enter a name",
         token="Please enter a token value",
         reward="Please enter a reward value",
         is_file="Please select a file setting",
         description="Please enter a flag description",
     )
     if form.validate(self.request.arguments):
         try:
             if Flag.by_name(self.get_argument('flag_name')) is not None:
                 self.render('admin/create/flag.html',
                     errors=["Name already exists"]
                 )
             elif Flag.by_token(self.get_argument('token')) is not None:
                 self.render('admin/create/flag.html',
                     errors=["Token value is not unique"]
                 )
             elif Box.by_uuid(self.get_argument('box_uuid')) is None:
                 self.render('admin/create/flag.html',
                     errors=["Box does not exist"]
                 )
             else:
                 reward = int(self.get_argument('reward', 'NaN'))
                 self.__mkflag__(reward)
                 self.redirect('/admin/view/game_objects')
         except ValueError:
             self.render('admin/create/flag.html',
                 errors=["Invalid reward value"]
             )
     else:
         self.render("admin/create/flag.html", errors=form.errors)
Exemplo n.º 3
0
 def create_flag(self):
     ''' Create a flag '''
     form = Form(
         box_uuid="Please select a box",
         flag_name="Please enter a name",
         token="Please enter a token value",
         reward="Please enter a reward value",
         is_file="Please select a file setting",
         description="Please enter a flag description",
     )
     if form.validate(self.request.arguments):
         try:
             if Flag.by_name(self.get_argument('flag_name')) is not None:
                 self.render('admin/create/flag.html',
                             errors=["Name already exists"])
             elif Flag.by_token(self.get_argument('token')) is not None:
                 self.render('admin/create/flag.html',
                             errors=["Token value is not unique"])
             elif Box.by_uuid(self.get_argument('box_uuid')) is None:
                 self.render('admin/create/flag.html',
                             errors=["Box does not exist"])
             else:
                 reward = int(self.get_argument('reward', 'NaN'))
                 self.__mkflag__(reward)
                 self.redirect('/admin/view/game_objects')
         except ValueError:
             self.render('admin/create/flag.html',
                         errors=["Invalid reward value"])
     else:
         self.render("admin/create/flag.html", errors=form.errors)
Exemplo n.º 4
0
 def edit_flags(self):
     ''' Super ugly code, yes - Edit existing flags in the database '''
     form = Form(
         uuid="Object not selected",
         name="Please enter a name",
         token="Please enter a toke value",
         description="Please provide a description",
         value="Please enter a reward value",
         box_uuid="Please select a box",
     )
     if form.validate(self.request.arguments):
         flag = Flag.by_uuid(self.get_argument('uuid'))
         if flag is not None:
             errors = []
             if flag.name != self.get_argument('name'):
                 if Flag.by_name(unicode(self.get_argument('name'))) is None:
                     logging.info("Updated flag name %s -> %s" %
                         (flag.name, self.get_argument('name'),)
                     )
                     flag.name = unicode(self.get_argument('name'))
                 else:
                     errors.append("Flag name already exists")
             if flag.token != self.get_argument('token'):
                 if Flag.by_token(unicode(self.get_argument('token'))) is None:
                     logging.info("Updated %s's token %s -> %s" %
                         (flag.name, flag.token, self.get_argument('token'),)
                     )
                     flag.token = unicode(self.get_argument('token'))
                 else:
                     errors.append("Token is not unique")
             if flag.description != self.get_argument('description'):
                 logging.info("Updated %s's description %s -> %s" %
                     (flag.name, flag.description, self.get_argument('description'),)
                 )
                 flag.description = unicode(self.get_argument('description'))
             try:
                 reward_value = int(self.get_argument('value'))
                 if reward_value != flag.value:
                     logging.info("Updated %s's value %d -> %d" %
                         (flag.name, flag.value, reward_value,)
                     )
                     flag.value = reward_value
             except ValueError:
                 errors.append("Invalid reward amount")
             box = Box.by_uuid(self.get_argument('box_uuid'))
             if box is not None and box.id != flag.box_id:
                 logging.info("Updated %s's box %d -> %d" %
                     (flag.name, flag.box_id, box.id)
                 )
                 flag.box_id = box.id
             elif box is None:
                 errors.append("Box does not exist")
             dbsession.add(flag)
             dbsession.flush()
             self.render("admin/view/game_objects.html", errors=errors)
         else:
             self.render("admin/view/game_objects.html",
                 errors=["Flag does not exist"]
             )
     else:
         self.render("admin/view/game_objects.html", errors=form.errors)
Exemplo n.º 5
0
 def edit_flags(self):
     ''' Super ugly code, yes - Edit existing flags in the database '''
     form = Form(
         uuid="Object not selected",
         name="Please enter a name",
         token="Please enter a toke value",
         description="Please provide a description",
         value="Please enter a reward value",
         box_uuid="Please select a box",
     )
     if form.validate(self.request.arguments):
         flag = Flag.by_uuid(self.get_argument('uuid'))
         if flag is not None:
             errors = []
             if flag.name != self.get_argument('name'):
                 if Flag.by_name(unicode(
                         self.get_argument('name'))) is None:
                     logging.info("Updated flag name %s -> %s" % (
                         flag.name,
                         self.get_argument('name'),
                     ))
                     flag.name = unicode(self.get_argument('name'))
                 else:
                     errors.append("Flag name already exists")
             if flag.token != self.get_argument('token'):
                 if Flag.by_token(unicode(
                         self.get_argument('token'))) is None:
                     logging.info("Updated %s's token %s -> %s" % (
                         flag.name,
                         flag.token,
                         self.get_argument('token'),
                     ))
                     flag.token = unicode(self.get_argument('token'))
                 else:
                     errors.append("Token is not unique")
             if flag.description != self.get_argument('description'):
                 logging.info("Updated %s's description %s -> %s" % (
                     flag.name,
                     flag.description,
                     self.get_argument('description'),
                 ))
                 flag.description = unicode(
                     self.get_argument('description'))
             try:
                 reward_value = int(self.get_argument('value'))
                 if reward_value != flag.value:
                     logging.info("Updated %s's value %d -> %d" % (
                         flag.name,
                         flag.value,
                         reward_value,
                     ))
                     flag.value = reward_value
             except ValueError:
                 errors.append("Invalid reward amount")
             box = Box.by_uuid(self.get_argument('box_uuid'))
             if box is not None and box.id != flag.box_id:
                 logging.info("Updated %s's box %d -> %d" %
                              (flag.name, flag.box_id, box.id))
                 flag.box_id = box.id
             elif box is None:
                 errors.append("Box does not exist")
             dbsession.add(flag)
             dbsession.flush()
             self.render("admin/view/game_objects.html", errors=errors)
         else:
             self.render("admin/view/game_objects.html",
                         errors=["Flag does not exist"])
     else:
         self.render("admin/view/game_objects.html", errors=form.errors)