Exemple #1
0
 def add_source_code(self):
     form = Form(
         box_uuid="Please select a box",
         price="Please input a price for the source code",
         description="Please enter a description",
     )
     if form.validate(self.request.arguments):
         box = Box.by_uuid(self.get_argument('box_uuid'))
         if box is not None:
             if not 'source_archive' in self.request.files and 0 < len(self.request.files['source_archive']):
                 self.render('admin/upgrades/source_code_market.html',
                     errors=["No file data"]
                 )
             else:
                 try:
                     price = abs(int(self.get_argument('price', 'NaN')))
                     self.create_source_code(box, price)
                     self.render('admin/upgrades/source_code_market.html',
                         errors=None
                     )
                 except ValueError:
                     self.render('admin/upgrades/source_code_market.html',
                         errors=["Price must be an integer"]
                     )
         else:
             self.render('admin/upgrades/source_code_market.html',
                 errors=["The selected box does not exist"]
             )
     else:
         self.render('admin/upgrades/source_code_market.html',
             errors=form.errors
         )
 def edit_ipv6(self):
     ''' Add ipv6 addresses to a box (sorta edits the box object) '''
     form = Form(box_uuid="Select a box",
                 ipv6="Please provide a list of IPv6 addresses")
     if form.validate(self.request.arguments):
         errors = []
         box = Box.by_uuid(self.get_argument('box_uuid'))
         if box is not None:
             ips_string = self.get_argument('ipv6').replace('\n',
                                                            ',').lower()
             ips = filter(lambda char: char in "1234567890abcdef:,",
                          ips_string).split(",")
             for ip in filter(lambda ip: 0 < len(ip), ips):
                 try:
                     box = Box.by_ip_address(ip)
                     if box is None:
                         addr = IpAddress(box_id=box.id, v6=ip)
                         dbsession.add(addr)
                     else:
                         errors.append(
                             "%s has already been assigned to %s." % (
                                 ip,
                                 box.name,
                             ))
                 except ValueError:
                     errors.append("'%s' is not a valid IPv6 address" %
                                   str(ip[:39]))
             dbsession.flush()
         else:
             errors.append("Box does not exist")
         self.render("admin/view/game_objects.html", errors=errors)
     else:
         self.render("admin/view/game_objects.html", errors=form.errors)
Exemple #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)
 def add_source_code(self):
     form = Form(
         box_uuid="Please select a box",
         price="Please input a price for the source code",
         description="Please enter a description",
     )
     if form.validate(self.request.arguments):
         box = Box.by_uuid(self.get_argument('box_uuid'))
         if box is not None:
             if not 'source_archive' in self.request.files and 0 < len(
                     self.request.files['source_archive']):
                 self.render('admin/upgrades/source_code_market.html',
                             errors=["No file data"])
             else:
                 try:
                     price = abs(int(self.get_argument('price', 'NaN')))
                     self.create_source_code(box, price)
                     self.render('admin/upgrades/source_code_market.html',
                                 errors=None)
                 except ValueError:
                     self.render('admin/upgrades/source_code_market.html',
                                 errors=["Price must be an integer"])
         else:
             self.render('admin/upgrades/source_code_market.html',
                         errors=["The selected box does not exist"])
     else:
         self.render('admin/upgrades/source_code_market.html',
                     errors=form.errors)
Exemple #5
0
 def edit_ipv6(self):
     ''' Add ipv6 addresses to a box (sorta edits the box object) '''
     form = Form(box_uuid="Select a box", ipv6="Please provide a list of IPv6 addresses")
     if form.validate(self.request.arguments):
         errors = []
         box = Box.by_uuid(self.get_argument('box_uuid'))
         if box is not None:
             ips_string = self.get_argument('ipv6').replace('\n', ',').lower()
             ips = filter(lambda char: char in "1234567890abcdef:,", ips_string).split(",")
             for ip in filter(lambda ip: 0 < len(ip), ips):
                 try:
                     box = Box.by_ip_address(ip)
                     if box is None:
                         addr = IpAddress(box_id=box.id, v6=ip)
                         dbsession.add(addr)
                     else:
                         errors.append(
                             "%s has already been assigned to %s." % (ip, box.name,)
                         )
                 except ValueError:
                     errors.append(
                         "'%s' is not a valid IPv6 address" % str(ip[:39])
                     )
             dbsession.flush()
         else:
             errors.append("Box does not exist")
         self.render("admin/view/game_objects.html", errors=errors)
     else:
         self.render("admin/view/game_objects.html", errors=form.errors)
 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)
 def edit_boxes(self):
     ''' Edit existing boxes in the database '''
     form = Form(
         uuid="Object not selected",
         name="Missing box name",
         corporation_uuid="Please select a corporation",
         description="Please enter a description",
         difficulty="Please enter a difficulty",
     )
     if form.validate(self.request.arguments):
         box = Box.by_uuid(self.get_argument('uuid'))
         if box is not None:
             errors = []
             if self.get_argument('name') != box.name:
                 if Box.by_name(self.get_argument('name')) is None:
                     logging.info("Updated box name %s -> %s" % (
                         box.name,
                         self.get_argument('name'),
                     ))
                     box.name = unicode(self.get_argument('name'))
                 else:
                     errors.append("Box name already exists")
             corp = Corporation.by_uuid(
                 self.get_argument('corporation_uuid'))
             if corp is not None and corp.id != box.corporation_id:
                 logging.info("Updated %s's corporation %s -> %s" % (
                     box.name,
                     box.corporation_id,
                     corp.id,
                 ))
                 box.corporation_id = corp.id
             elif corp is None:
                 errors.append("Corporation does not exist")
             if self.get_argument('description') != box.description:
                 logging.info("Updated %s's description %s -> %s" % (
                     box.name,
                     box.description,
                     self.get_argument('description'),
                 ))
                 box.description = unicode(self.get_argument('description'))
             if self.get_argument('difficulty') != box.difficulty:
                 logging.info("Updated %s's difficulty %s -> %s" % (
                     box.name,
                     box.difficulty,
                     self.get_argument('difficulty'),
                 ))
                 box.difficulty = unicode(self.get_argument('difficulty'))
             dbsession.add(box)
             dbsession.flush()
             self.render("admin/view/game_objects.html", errors=errors)
         else:
             self.render("admin/view/game_objects.html",
                         errors=["Box does not exist"])
     else:
         self.render("admin/view/game_objects.html", errors=form.errors)
 def __mkflag__(self, reward):
     ''' Creates a flag in the database '''
     box = Box.by_uuid(self.get_argument('box_uuid'))
     flag = Flag(
         name=unicode(self.get_argument('flag_name')),
         token=unicode(self.get_argument('token')),
         description=unicode(self.get_argument('description')),
         is_file=bool(self.get_argument('is_file', 'false') == 'true'),
         box_id=box.id,
         value=reward,
     )
     dbsession.add(flag)
     dbsession.flush()
Exemple #9
0
 def __mkflag__(self, reward):
     ''' Creates a flag in the database '''
     box = Box.by_uuid(self.get_argument('box_uuid'))
     flag = Flag(
         name=unicode(self.get_argument('flag_name')),
         token=unicode(self.get_argument('token')),
         description=unicode(self.get_argument('description')),
         is_file=bool(self.get_argument('is_file', 'false') == 'true'),
         box_id=box.id,
         value=reward,
     )
     dbsession.add(flag)
     dbsession.flush()
 def get(self, *args, **kwargs):
     ''' Renders the box details page '''
     uuid = self.get_argument('uuid', '')
     box = Box.by_uuid(uuid)
     if box is not None:
         user = self.get_current_user()
         self.render('missions/box.html', 
             box=box, 
             team=user.team,
             errors=[],
         )
     else:
         self.render('public/404.html')
 def get(self, *args, **kwargs):
     ''' Renders the box details page '''
     uuid = self.get_argument('uuid', '')
     box = Box.by_uuid(uuid)
     if box is not None:
         user = self.get_current_user()
         self.render(
             'missions/box.html',
             box=box,
             team=user.team,
             errors=[],
         )
     else:
         self.render('public/404.html')
 def post(self, *args, **kwargs):
     form = Form(box_uuid="Please select leaked code to buy")
     if form.validate(self.request.arguments):
         box = Box.by_uuid(self.get_argument('box_uuid', ''))
         if box is not None and box.source_code is not None:
             user = self.get_current_user()
             if box.source_code.price <= user.team.money:
                 self.purchase_code(box)
                 self.redirect("/source_code_market")
             else:
                 self.render_page(["You cannot afford to purchase this code"])
         else:
             self.render_page(["Box does not exist"])
     else:
         self.render_page(form.errors)
Exemple #13
0
 def edit_boxes(self):
     ''' Edit existing boxes in the database '''
     form = Form(
         uuid="Object not selected",
         name="Missing box name",
         corporation_uuid="Please select a corporation",
         description="Please enter a description",
         difficulty="Please enter a difficulty",
     )
     if form.validate(self.request.arguments):
         box = Box.by_uuid(self.get_argument('uuid'))
         if box is not None:
             errors = []
             if self.get_argument('name') != box.name:
                 if Box.by_name(self.get_argument('name')) is None:
                     logging.info("Updated box name %s -> %s" %
                         (box.name, self.get_argument('name'),)
                     )
                     box.name = unicode(self.get_argument('name'))
                 else:
                     errors.append("Box name already exists")
             corp = Corporation.by_uuid(self.get_argument('corporation_uuid'))
             if corp is not None and corp.id != box.corporation_id:
                 logging.info("Updated %s's corporation %s -> %s" %
                     (box.name, box.corporation_id, corp.id,))
                 box.corporation_id = corp.id
             elif corp is None:
                 errors.append("Corporation does not exist")
             if self.get_argument('description') != box.description:
                 logging.info("Updated %s's description %s -> %s" %
                     (box.name, box.description, self.get_argument('description'),)
                 )
                 box.description = unicode(self.get_argument('description'))
             if self.get_argument('difficulty') != box.difficulty:
                 logging.info("Updated %s's difficulty %s -> %s" %
                     (box.name, box.difficulty, self.get_argument('difficulty'),)
                 )
                 box.difficulty = unicode(self.get_argument('difficulty'))
             dbsession.add(box)
             dbsession.flush()
             self.render("admin/view/game_objects.html", errors=errors)
         else:
             self.render("admin/view/game_objects.html",
                 errors=["Box does not exist"]
             )
     else:
         self.render("admin/view/game_objects.html", errors=form.errors)
 def box_level(self):
     ''' Changes a boxs level '''
     form = Form(box_uuid="No box selected", level_uuid="No level selected")
     if form.validate(self.request.arguments):
         errors = []
         box = Box.by_uuid(self.get_argument('box_uuid'))
         level = GameLevel.by_uuid(self.get_argument('level_uuid'))
         if box is not None and level is not None:
             box.game_level_id = level.id
             dbsession.add(box)
             dbsession.flush()
         elif box is None:
             errors.append("Box does not exist")
         elif level is None:
             errors.append("GameLevel does not exist")
         self.render("admin/view/game_levels.html", errors=errors)
     else:
         self.render("admin/view/game_levels.html", errors=form.errors)
Exemple #15
0
 def box_level(self):
     ''' Changes a boxs level '''
     form = Form(box_uuid="No box selected", level_uuid="No level selected")
     if form.validate(self.request.arguments):
         errors = []
         box = Box.by_uuid(self.get_argument('box_uuid'))
         level = GameLevel.by_uuid(self.get_argument('level_uuid'))
         if box is not None and level is not None:
             box.game_level_id = level.id
             dbsession.add(box)
             dbsession.flush()
         elif box is None:
             errors.append("Box does not exist")
         elif level is None:
             errors.append("GameLevel does not exist")
         self.render("admin/view/game_levels.html", errors=errors)
     else:
         self.render("admin/view/game_levels.html", errors=form.errors)
Exemple #16
0
 def delete_source_code(self):
     ''' Delete source code file '''
     uuid = self.get_argument('box_uuid', '')
     box = Box.by_uuid(uuid)
     if box is not None and box.source_code is not None:
         source_code_uuid = box.source_code.uuid
         dbsession.delete(box.source_code)
         dbsession.flush()
         root = self.application.settings['source_code_market_dir']
         source_code_path = root + '/' + source_code_uuid
         logging.info("Delete souce code market file: %s (box: %s)" %
             (source_code_path, box.name,)
         )
         if os.path.exists(source_code_path):
             os.unlink(source_code_path)
         errors = None
     else:
         errors = ["Box does not exist, or contains no source code"]
     self.render('admin/upgrades/source_code_market.html', errors=errors)
 def delete_source_code(self):
     ''' Delete source code file '''
     uuid = self.get_argument('box_uuid', '')
     box = Box.by_uuid(uuid)
     if box is not None and box.source_code is not None:
         source_code_uuid = box.source_code.uuid
         dbsession.delete(box.source_code)
         dbsession.flush()
         root = self.application.settings['source_code_market_dir']
         source_code_path = root + '/' + source_code_uuid
         logging.info("Delete souce code market file: %s (box: %s)" % (
             source_code_path,
             box.name,
         ))
         if os.path.exists(source_code_path):
             os.unlink(source_code_path)
         errors = None
     else:
         errors = ["Box does not exist, or contains no source code"]
     self.render('admin/upgrades/source_code_market.html', errors=errors)
Exemple #18
0
 def get(self, *args, **kwargs):
     ''' Send file to user if their team owns it '''
     uuid = self.get_argument('uuid', '')
     box = Box.by_uuid(uuid)
     if box is not None and box.source_code is not None:
         user = self.get_current_user()
         if box.source_code in user.team.purchased_source_code:
             root = self.application.settings['source_code_market_dir']
             src_file = open(root + '/' + box.source_code.uuid, 'r')
             src_data = b64decode(src_file.read())
             src_file.close()
             content_type = guess_type(box.source_code.file_name)[0]
             if content_type is None: content_type = 'unknown/data'
             self.set_header('Content-Type', content_type)
             self.set_header('Content-Length', len(src_data))
             self.set_header(
                 'Content-Disposition',
                 'attachment; filename=%s' % box.source_code.file_name)
             self.write(src_data)
             self.finish()
         else:
             self.render('public/404.html')
     else:
         self.render('public/404.html')
 def get(self, *args, **kwargs):
     ''' Send file to user if their team owns it '''
     uuid = self.get_argument('uuid', '')
     box = Box.by_uuid(uuid)
     if box is not None and box.source_code is not None:
         user = self.get_current_user()
         if box.source_code in user.team.purchased_source_code:
             root = self.application.settings['source_code_market_dir']
             src_file = open(root + '/' + box.source_code.uuid, 'r')
             src_data = b64decode(src_file.read())
             src_file.close()
             content_type = guess_type(box.source_code.file_name)[0]
             if content_type is None: content_type = 'unknown/data'
             self.set_header('Content-Type', content_type)
             self.set_header('Content-Length', len(src_data))
             self.set_header('Content-Disposition', 
                 'attachment; filename=%s' % box.source_code.file_name
             )
             self.write(src_data)
             self.finish()
         else:
             self.render('public/404.html')
     else:
         self.render('public/404.html')
 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)
Exemple #21
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)