예제 #1
0
def fmt_elapsed_time(view, context, model, name):
    date_b = getattr(model, name)
    date_f = model.date_f
    if model.status_f == "InProgress":
        etime = str(dtparser(str(dtime.now())) - dtparser(str(date_f)))
    else:
        etime = str(dtparser(str(date_b)) - dtparser(str(date_f)))
    return Markup('<strong><i>{}</i></strong>'.format(etime))
예제 #2
0
class EvalsView(MyBaseView):
    column_list = [
        'id', 'uuid_f', 'client', 'corrid', 'date_f', 'date_b', 'status_f',
        'score', 'files_count'
    ]
    column_sortable_list = [
        'id', 'uuid_f', 'client', 'corrid', 'date_f', 'date_b', 'status_f',
        'score', 'files_count'
    ]
    column_details_list = [
        'id', 'client', 'uuid_f', 'corrid', 'date_f', 'date_b', 'score',
        'status_f', 'files_count', 'files'
    ]
    column_exclude_list = [
        '',
    ]
    column_export_list = [
        'id', 'client', 'uuid_f', 'corrid', 'date_f', 'date_b', 'score',
        'status_f', 'files_count'
    ]
    column_export_exclude_list = ['files']
    column_formatters_export = dict(
        score=fmt_render_score,
        client=lambda v, c, m, p: str(getattr(m, p)),
        date_f=lambda v, c, m, p: str(getattr(m, p)),
        date_b=lambda v, c, m, p: str(
            dtparser(str(m.date_b)) - dtparser(str(m.date_f))))
    column_searchable_list = []
    column_default_sort = ('date_f', True)
    column_filters = [
        'uuid_f', 'corrid', 'status_f', 'score', 'client', 'files_count'
    ]
    column_formatters = dict(score=macro('render_score'),
                             client=fmt_eclient_details,
                             uuid_f=fmt_eval_details,
                             corrid=fmt_text_boldital,
                             date_b=fmt_elapsed_time,
                             status_f=fmt_text_bold,
                             files_count=fmt_counts,
                             files=macro('render_files_name'))

    column_labels = dict(id='Id',
                         client_id='Client Id',
                         client='[X.509] Common Name',
                         uuid_f='Evaluation UUID',
                         corrid='Correlation ID',
                         status_f='Status',
                         date_f='Submit Date',
                         date_b='Elapsed Time',
                         score='Is Malicious?',
                         files_count='# of Files',
                         files='List of Files')
예제 #3
0
	def deserialize(d):
		'''Creates a block object from a dict/json.

		d: the dict/json containing index, hash, previousHash, timestamp, data, difficulty, nonce as keys

		Returns:
			A block object.
		'''
		data = list()
		for da in d['data']:
			data.append(transaction.Transaction.deserialize(da))
		return block(d['index'], d['hash'], d['previousHash'], dtparser(d['timestamp']), data, d['difficulty'], d['nonce'])
예제 #4
0
def parse_form_field(value: str, field_type: str):
    """Parse strings into type according to field_type provided."""
    if field_type == 'decimal':
        return float(value)
    elif field_type == 'integer':
        return int(value)
    elif field_type in ('datetime', 'date'):
        return dtparser(value).astimezone(timezone.utc)
    elif field_type == 'geopoint':
        lat, lon, _, _ = value.split(' ')
        return {'lat': float(lat), 'lon': float(lon)}
    else:
        return value
예제 #5
0
def marshal_eval(sfile):
    r_eval = {
        "id": "",
        "correlationID": "",
        "date": "",
        "elapsedTime": "",
        "statusDate": "",
        "status": "InProgress",
        "malicious": False,
        "files": [],
    }
    # Evaluation
    r_eval["id"] = sfile["uuid_f"]
    r_eval["correlationID"] = sfile["corrid"]
    r_eval["date"] = sfile["date_f"]
    if sfile["score"] > 5:
        r_eval["malicious"] = True
    r_eval["statusDate"] = sfile["date_b"]
    r_eval["status"] = sfile["status_f"]
    if r_eval["status"] == "InProgress":
        eval_keys = ["malicious", "date_b"]
        for key in eval_keys:
            r_eval.pop(key, None)
        r_eval["elapsedTime"] = str(dtime.now() -
                                    dtparser(str(sfile.get("date_f"))))
        dtime_fmt = "%Y-%m-%d %H:%M:%S.%f"
        r_eval["statusDate"] = dtime.strptime(
            dtime.now().strftime(dtime_fmt)[:-3], dtime_fmt)
    elif r_eval["status"] == "Error":
        r_eval.pop("malicious", None)
        r_eval["elapsedTime"] = str(
            dtparser(str(sfile.get("date_b"))) -
            dtparser(str(sfile.get("date_f"))))
    else:
        r_eval["elapsedTime"] = str(
            dtparser(str(sfile.get("date_b"))) -
            dtparser(str(sfile.get("date_f"))))
    return r_eval
예제 #6
0
def parse_datetime_params():
    """Transform into datetime objects used for filtering form responses."""
    begin_datetime_str = request.args.get('beginDateTime', '2000-01-01')
    begin_datetime = dtparser(begin_datetime_str).replace(tzinfo=timezone.utc)

    end_datetime_str = request.args.get('endDateTime')
    if end_datetime_str is not None:
        end_datetime = dtparser(end_datetime_str)
    else:
        # 10 years.
        end_datetime = datetime.now() + timedelta(days=365 * 10)

    end_datetime = end_datetime.replace(tzinfo=timezone.utc)

    # strptime function includes hours, minutes, and seconds as 00 by default.
    # This check is done in case the begin and end datetime values are the same.
    if end_datetime == begin_datetime:
        end_datetime = end_datetime + timedelta(days=1)

    if begin_datetime > end_datetime:
        raise BadRequest('beginDateTime value must be lower than endDateTime')

    return begin_datetime, end_datetime
예제 #7
0
def fltr_elapsedTime(date_f, date_b=None):
    if date_b is None:
        date_b = dtime.now()
    return str(dtparser(str(date_b)) - dtparser(str(date_f)))