mirror of
https://github.com/MobSF/Mobile-Security-Framework-MobSF.git
synced 2026-10-12 02:06:59 +00:00
782 lines
28 KiB
HTML
Executable File
782 lines
28 KiB
HTML
Executable File
{% extends "base/base_layout.html" %}
|
||
{% load static %}
|
||
{% block sidebar_option %}
|
||
sidebar-mini
|
||
{% endblock %}
|
||
{% block extra_css %}
|
||
<!-- DataTables -->
|
||
<link rel="stylesheet" href="{% static "adminlte/plugins/datatables-bs4/dataTables.bootstrap4.min.css" %}">
|
||
<style type="text/css" media="print">
|
||
@page { size: landscape; }
|
||
@media print {
|
||
.btn, #scan_options {
|
||
display: none;
|
||
}
|
||
}
|
||
</style>
|
||
<style>
|
||
#app_icon{
|
||
width: 64px;
|
||
height: 64px;
|
||
}
|
||
#pre-wrap {
|
||
white-space: pre-wrap; /* css-3 */
|
||
white-space: -moz-pre-wrap; /* Mozilla, since 1999 */
|
||
white-space: -pre-wrap; /* Opera 4-6 */
|
||
white-space: -o-pre-wrap; /* Opera 7 */
|
||
word-wrap: break-word; /* Internet Explorer 5.5+ */
|
||
}
|
||
</style>
|
||
{% endblock %}
|
||
{% block sidebar %}
|
||
<!-- Main Sidebar Container -->
|
||
<!-- Sidebar -->
|
||
<div class="sidebar">
|
||
<!-- Sidebar user panel (optional) -->
|
||
<div class="user-panel mt-3 pb-3 mb-3 d-flex">
|
||
<div class="info">
|
||
<a href="#" class="d-block">Static Analyzer</a>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- Sidebar Menu -->
|
||
<nav class="mt-2">
|
||
<ul class="nav nav-pills nav-sidebar flex-column nav-child-indent" data-widget="treeview" role="menu" data-accordion="false">
|
||
|
||
<li class="nav-item">
|
||
<a href="#information" class="nav-link">
|
||
<i class="nav-icon fas fa-info-circle"></i>
|
||
<p>
|
||
Information
|
||
</p>
|
||
</a>
|
||
</li>
|
||
<li class="nav-item">
|
||
<a href="#scan_options" class="nav-link">
|
||
<i class="nav-icon fas fa-cog"></i>
|
||
<p>
|
||
Scan Options
|
||
</p>
|
||
</a>
|
||
</li>
|
||
<li class="nav-item">
|
||
<a href="#url_schemes" class="nav-link">
|
||
<i class="nav-icon fas fa-hashtag"></i>
|
||
<p>
|
||
URL Schemes
|
||
</p>
|
||
</a>
|
||
</li>
|
||
<li class="nav-item">
|
||
<a href="#permissions" class="nav-link">
|
||
<i class="nav-icon fas fa-list"></i>
|
||
<p>
|
||
Permissions
|
||
</p>
|
||
</a>
|
||
</li>
|
||
<li class="nav-item has-treeview">
|
||
<a href="#" class="nav-link">
|
||
<i class="nav-icon fas fa-shield-alt"></i>
|
||
<p>
|
||
Security Analysis
|
||
<i class="fas fa-angle-left right"></i>
|
||
</p>
|
||
</a>
|
||
<ul class="nav nav-treeview">
|
||
<li class="nav-item">
|
||
<a href="#transport_security" class="nav-link">
|
||
<i class="nav-icon fas fa-lock"></i>
|
||
<p>
|
||
Transport Security
|
||
</p>
|
||
</a>
|
||
</li>
|
||
<li class="nav-item">
|
||
<a href="#binary_analysis" class="nav-link">
|
||
<i class="nav-icon fas fa-flag"></i>
|
||
<p>
|
||
Binary Analysis
|
||
</p>
|
||
</a>
|
||
</li>
|
||
<li class="nav-item">
|
||
<a href="#file_analysis" class="nav-link">
|
||
<i class="nav-icon fa fa-file"></i>
|
||
<p>
|
||
File Analysis
|
||
</p>
|
||
</a>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
{% if virus_total %}
|
||
<li class="nav-item">
|
||
<a href="#virus_total" class="nav-link">
|
||
<i class="nav-icon fas fa-spider"></i>
|
||
<p>
|
||
VirusTotal
|
||
</p>
|
||
</a>
|
||
</li>
|
||
{% endif %}
|
||
<li class="nav-item">
|
||
<a href="#libraries" class="nav-link">
|
||
<i class="fab fa-buffer nav-icon"></i>
|
||
<p>Libraries</p>
|
||
</a>
|
||
</li>
|
||
<li class="nav-item">
|
||
<a href="#files" class="nav-link">
|
||
<i class="nav-icon far fa-copy"></i>
|
||
<p>
|
||
Files
|
||
</p>
|
||
</a>
|
||
</li>
|
||
<li class="nav-item">
|
||
<a href="../PDF/?md5={{ md5 }}&type=IPA" class="nav-link">
|
||
<i class="nav-icon fas fa-file-pdf"></i>
|
||
<p>
|
||
PDF Report
|
||
</p>
|
||
</a>
|
||
</li>
|
||
<li class="nav-item">
|
||
<a href="javascript:window.print()" class="nav-link">
|
||
<i class="nav-icon fa fa-print"></i>
|
||
<p>
|
||
Print Report
|
||
</p>
|
||
</a>
|
||
</li>
|
||
</ul>
|
||
</nav>
|
||
<!-- /.sidebar-menu -->
|
||
</div>
|
||
<!-- /.sidebar -->
|
||
{% endblock %}
|
||
{% block content %}
|
||
<!-- Content Wrapper. Contains page content -->
|
||
<div class="content-wrapper">
|
||
<!-- Content Header (Page header) -->
|
||
<div class="content-header">
|
||
<!--
|
||
<div class="container-fluid">
|
||
<div class="row mb-2">
|
||
<div id="mobsf_header" align="center">
|
||
</div>
|
||
</div>
|
||
</div>-->
|
||
</div>
|
||
<!-- /.content-header -->
|
||
|
||
|
||
<!-- Main content -->
|
||
<a id="information" class="anchor"></a>
|
||
<section class="content">
|
||
<div class="container-fluid">
|
||
<div class="row">
|
||
<div class="col-lg-12">
|
||
|
||
<div class="card">
|
||
<div class="card-body">
|
||
<h5 class="card-title"></h5>
|
||
<div class="row">
|
||
<div class="col-2">
|
||
<p><strong><i class="fas fa-check-double"></i> APP SCORES</strong></p>
|
||
<img id="app_icon" src="{% if not appstore_details.error %}{{appstore_details.icon}}{% else %}{% static 'img/no_icon.png' %}{% endif %}"/>
|
||
<br/>
|
||
<span class="badge bg-info">Average CVSS</span> <strong>{{ average_cvss }} </strong><br/>
|
||
<span class="badge bg-{% if security_score < 50 %}danger{% elif security_score == 100 %}success{% else %}warning{% endif %}">Security Score</span> <strong>{{ security_score }}/100 </strong><br/>
|
||
{% if virus_total %}
|
||
{% if virus_total.positives > 0 %}
|
||
<span class="badge bg-danger">VirusTotal Detection</span> <strong>{{ virus_total.positives }}/{{ virus_total.total }}</strong><br/>
|
||
{% else %}
|
||
<span class="badge bg-success">VirusTotal Detection</span> <strong>{{ virus_total.positives }}/{{ virus_total.total }}</strong><br/>
|
||
{% endif %}
|
||
{% endif %}
|
||
</div>
|
||
<div class="col-4">
|
||
<p><strong><i class="fas fa-box-open"></i> FILE INFORMATION </strong></p>
|
||
<span class="badge bg-primary">File Name</span>
|
||
{{ file_name }}<br/>
|
||
<span class="badge bg-primary">Size</span>
|
||
{{ size }}<br/>
|
||
<span class="badge bg-primary">MD5</span>
|
||
{{ md5 }}<br/>
|
||
<span class="badge bg-primary">SHA1</span>
|
||
{{ sha1 }}<br/>
|
||
<span class="badge bg-primary">SHA256</span>
|
||
{{ sha256 }}<br/>
|
||
</div>
|
||
<div class="col-3">
|
||
<p><strong><i class="fas fa-info"></i> APP INFORMATION </strong></p>
|
||
<span class="badge bg-primary">App Name</span>
|
||
{{ app_name }}<br/>
|
||
<span class="badge bg-primary">App Type</span>
|
||
{{ app_type }}<br/>
|
||
<span class="badge bg-primary">Identifier</span>
|
||
{{ bundle_id }}<br/>
|
||
<span class="badge bg-primary">SDK Name</span>
|
||
{{ sdk_name }}<br/>
|
||
<span class="badge bg-primary">Version</span>
|
||
{{ app_version }}
|
||
<span class="badge bg-primary">Build</span>
|
||
{{ build }}
|
||
<span class="badge bg-primary">Platform Version</span>
|
||
{{ platform }}
|
||
<span class="badge bg-primary">Min OS Version</span>
|
||
{{ min_os_version }} <br/>
|
||
<span class="badge bg-primary">Supported Platforms</span>
|
||
{% for pl in bundle_supported_platforms %}
|
||
{{pl}},
|
||
{% endfor %}
|
||
</div>
|
||
<div class="col-3">
|
||
<p><strong><i class="fas fa-ad"></i> BINARY INFORMATION </strong></p>
|
||
<span class="badge bg-primary">Arch</span>
|
||
{{ binary_info.arch }}<br/>
|
||
<span class="badge bg-primary">Sub Arch</span>
|
||
{{ binary_info.subarch }}<br/>
|
||
<span class="badge bg-primary">Bit</span>
|
||
{{ binary_info.bit }}
|
||
<span class="badge bg-primary">Endian</span>
|
||
{{ binary_info.endian }}<br/>
|
||
</div>
|
||
|
||
</div>
|
||
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<!-- App Store -->
|
||
{% if not appstore_details.error %}
|
||
<div class="col-lg-12">
|
||
<div class="card">
|
||
<div class="card-body">
|
||
<p>
|
||
<strong><i class="fab fa-app-store-ios"></i> APP STORE INFORMATION</strong>
|
||
</p>
|
||
<span class="badge bg-info">Title</span>
|
||
{{ appstore_details.title }} <br/>
|
||
<span class="badge bg-info">Score</span>
|
||
{{ appstore_details.score}}
|
||
<span class="badge bg-info">Features</span>
|
||
{% for fea in appstore_details.features %}
|
||
{{ fea }},
|
||
{% endfor %}
|
||
<span class="badge bg-info">Price</span>
|
||
{{ appstore_details.price }}
|
||
<span class="badge bg-info">Category</span>
|
||
{% for cat in appstore_details.category %}
|
||
{{ cat }},
|
||
{% endfor %}
|
||
<span class="badge bg-info">App Store URL</span>
|
||
<a target="_blank" href="{{ appstore_details.itunes_url }}">{{ appstore_details.app_id }} </a>
|
||
<br/>
|
||
<span class="badge bg-info">Developer</span>
|
||
{{appstore_details.developer}},
|
||
<span class="badge bg-info">Developer ID</span>
|
||
{{appstore_details.developer_id}} <br/>
|
||
<span class="badge bg-info">Developer Website</span>
|
||
{{appstore_details.developer_website }} <br/>
|
||
<span class="badge bg-info">Developer URL</span>
|
||
{{appstore_details.developer_url}} <br/>
|
||
<span class="badge bg-info">Supported Devices</span>
|
||
{% for dev in appstore_details.supported_devices %}
|
||
{{ dev }},
|
||
{% endfor %}
|
||
<br/>
|
||
<span class="badge bg-info">Description</span>
|
||
<pre id="pre-wrap">{{ appstore_details.description }}</pre>
|
||
</div>
|
||
</div><!-- /.card -->
|
||
</div>
|
||
{% endif %}
|
||
<!-- /.col -->
|
||
<!-- row and container-->
|
||
</div>
|
||
</div>
|
||
</section>
|
||
<!-- =========================end information==================================== -->
|
||
|
||
|
||
|
||
<a id="scan_options" class="anchor"></a>
|
||
<section class="content">
|
||
<div class="container-fluid">
|
||
<div class="row">
|
||
<div class="col-lg-12">
|
||
<div class="card">
|
||
<div class="card-body">
|
||
<p>
|
||
<strong><i class="fas fa-cog"></i> SCAN OPTIONS</strong>
|
||
</p>
|
||
<p align="center">
|
||
<a role="button" class="btn btn-info" href="../StaticAnalyzer_iOS/?checksum={{ md5 }}&name={{ file_name }}&type=ipa&rescan=1" ><i class="fa fa-sync"></i> Rescan</a>
|
||
<a role="button" class="btn btn-primary" data-target="#mplist" data-toggle="modal" href="#"><i class="fa fa-list"></i> View Info.plist</a>
|
||
<a role="button" class="btn btn-primary" data-target="#mstrings" data-toggle="modal" href="#"><i class="fas fa-font"></i> View Strings</a>
|
||
<a target="_blank" href="../ViewFile/?file=classdump.txt&md5={{ md5 }}&type=ios" class="btn btn-warning" role="button"><i class="fa fa-code"></i> View Class Dump</a>
|
||
</p>
|
||
|
||
</div>
|
||
</div><!-- /.card -->
|
||
</div>
|
||
<!-- end row -->
|
||
</div>
|
||
</div>
|
||
</section>
|
||
<!-- ===========================end scan options================================== -->
|
||
<a id="url_schemes" class="anchor"></a>
|
||
<section class="content">
|
||
<div class="container-fluid">
|
||
<div class="row">
|
||
<div class="col-lg-12">
|
||
<div class="card">
|
||
<div class="card-body">
|
||
<p>
|
||
<strong><i class="fas fa-hashtag"></i> CUSTOM URL SCHEMES</strong>
|
||
<p>
|
||
{% if bundle_url_types|length > 0 %}
|
||
<div class="table-responsive">
|
||
<table class="table table-bordered table-hover table-striped">
|
||
|
||
<thead>
|
||
<tr>
|
||
<th>URL NAME</th>
|
||
<th>SCHEMES</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
|
||
{% for scheme in bundle_url_types %}
|
||
<tr>
|
||
<td>
|
||
{{scheme | key:"CFBundleURLName" }}
|
||
{% if scheme|key:"CFBundleTypeRole" %}
|
||
<br>
|
||
{{scheme | key:"CFBundleTypeRole" }}
|
||
{% endif %}
|
||
</td>
|
||
<td>
|
||
{% for ul in scheme.CFBundleURLSchemes %}
|
||
{{ul}} <br/>
|
||
{% endfor %}
|
||
</td>
|
||
</tr>
|
||
{% endfor %}
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
{% else %}
|
||
<p>
|
||
No URL Schemes found.
|
||
</p>
|
||
{% endif %}
|
||
</div>
|
||
</div><!-- /.card -->
|
||
</div>
|
||
<!-- end row -->
|
||
</div>
|
||
</div>
|
||
</section>
|
||
<!-- ===========================end url schemes ================================== -->
|
||
|
||
<a id="permissions" class="anchor"></a>
|
||
<section class="content">
|
||
<div class="container-fluid">
|
||
<div class="row">
|
||
<div class="col-lg-12">
|
||
<div class="card">
|
||
<div class="card-body">
|
||
<p>
|
||
<strong><i class="fa fa-list"></i> APPLICATION PERMISSIONS</strong>
|
||
<p>
|
||
{% if permissions|length > 0 %}
|
||
<div class="table-responsive">
|
||
<table class="table table-bordered table-hover table-striped">
|
||
|
||
<thead>
|
||
<tr>
|
||
<th>PERMISSIONS</th>
|
||
<th>DESCRIPTION</th>
|
||
<th>REASON IN MANIFEST</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
|
||
{% for perm in permissions %}
|
||
<tr>
|
||
<td>
|
||
{{ perm.name }}
|
||
</td>
|
||
<td>
|
||
{{ perm.description}}
|
||
</td>
|
||
<td>
|
||
{{ perm.reason }}
|
||
</td>
|
||
</tr>
|
||
{% endfor %}
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
{% else %}
|
||
<p>
|
||
No Permissions required.
|
||
</p>
|
||
{% endif %}
|
||
</div>
|
||
</div><!-- /.card -->
|
||
</div>
|
||
<!-- end row -->
|
||
</div>
|
||
</div>
|
||
</section>
|
||
<!-- ===========================end permission ================================== -->
|
||
<a id="transport_security" class="anchor"></a>
|
||
<section class="content">
|
||
<div class="container-fluid">
|
||
<div class="row">
|
||
<div class="col-lg-12">
|
||
<div class="card">
|
||
<div class="card-body">
|
||
<p>
|
||
<strong><i class="fas fa-lock"></i> APP TRANSPORT SECURITY (ATS)</strong>
|
||
</p>
|
||
<div class="table-responsive">
|
||
<table class="table table-bordered table-hover table-striped">
|
||
|
||
<thead>
|
||
<tr>
|
||
<th>ISSUE</th>
|
||
<th>STATUS</th>
|
||
<th>DESCRIPTION</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
{% if ats_analysis|length > 0 %}
|
||
{% for findings in ats_analysis %}
|
||
<tr>
|
||
<td>
|
||
{{findings.issue}}
|
||
<td>
|
||
<span class="badge bg-danger"> {{findings.status}}</span>
|
||
</td>
|
||
<td>
|
||
{{findings.description}}
|
||
</td>
|
||
</tr>
|
||
{% endfor %}
|
||
{% else %}
|
||
<tr>
|
||
<td>
|
||
No ATS exceptions found.
|
||
<td>
|
||
<span class="badge bg-success">secure</span>
|
||
</td>
|
||
<td>
|
||
No insecure connections configured. App Transport Security (ATS) is enabled.
|
||
</td>
|
||
</tr>
|
||
{% endif %}
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
</div>
|
||
</div><!-- /.card -->
|
||
</div>
|
||
<!-- end row -->
|
||
</div>
|
||
</div>
|
||
</section>
|
||
|
||
<!-- ===========================end transport security ================================== -->
|
||
|
||
<a id="binary_analysis" class="anchor"></a>
|
||
<section class="content">
|
||
<div class="container-fluid">
|
||
<div class="row">
|
||
<div class="col-lg-12">
|
||
<div class="card">
|
||
<div class="card-body">
|
||
<p>
|
||
<strong><i class="fa fa-flag"></i> IPA BINARY ANALYSIS</strong>
|
||
</p>
|
||
<div class="table-responsive">
|
||
<table class="table table-bordered table-hover table-striped">
|
||
<thead>
|
||
<tr>
|
||
<th>ISSUE</th>
|
||
<th>SEVERITY</th>
|
||
<th>CVSS</th>
|
||
<th>CWE</th>
|
||
<th>OWASP</th>
|
||
<th>DESCRIPTION</th>
|
||
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
{% for bin in binary_analysis %}
|
||
<tr>
|
||
<td>
|
||
{{ bin.issue }}
|
||
</td>
|
||
<td>
|
||
{% if bin.level == 'info' %}
|
||
<span class='badge bg-info'>{{bin.level}}</span>
|
||
{% elif bin.level == 'good' %}
|
||
<span class='badge bg-success'>{{bin.level}}</span>
|
||
{% elif bin.level == 'high' %}
|
||
<span class='badge bg-danger'>{{bin.level}}</span>
|
||
{% elif bin.level == 'warning' %}
|
||
<span class='badge bg-warning'>{{bin.level}}</span>
|
||
{% endif %}
|
||
</td>
|
||
<td><strong>{{bin.cvss}}</strong></td>
|
||
<td><strong>{{bin.cwe}}</strong></td>
|
||
<td><strong>{{bin.owasp}}</strong></td>
|
||
<td>
|
||
{{ bin.description}}
|
||
</td>
|
||
</tr>
|
||
{% endfor %}
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
|
||
</div>
|
||
</div><!-- /.card -->
|
||
</div>
|
||
<!-- end row -->
|
||
</div>
|
||
</div>
|
||
</section>
|
||
<!-- ===========================end binary analysis ================================== -->
|
||
<a id="file_analysis" class="anchor"></a>
|
||
<section class="content">
|
||
<div class="container-fluid">
|
||
<div class="row">
|
||
<div class="col-lg-12">
|
||
<div class="card">
|
||
<div class="card-body">
|
||
<p>
|
||
<strong><i class="fa fa-file"></i> FILE ANALYSIS</strong>
|
||
</p>
|
||
<div class="table-responsive">
|
||
<table class="table table-bordered table-hover table-striped">
|
||
<thead>
|
||
<tr>
|
||
<th>ISSUE</th>
|
||
<th>FILES</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
{% for item in file_analysis %}
|
||
<tr>
|
||
<td>
|
||
{{ item.issue }}
|
||
</td>
|
||
<td>
|
||
{% for file in item.files %}
|
||
{% if file.type %}
|
||
<a href="../ViewFile/?file={{file.file_path}}&type={{file.type}}&md5={{file.hash}}">{{ file.file_path }}</a>
|
||
{% else %}
|
||
{{ file.file_path }}
|
||
{% endif %}
|
||
<br/>
|
||
{% endfor %}
|
||
</td>
|
||
|
||
</tr>
|
||
{% endfor %}
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
</div>
|
||
</div><!-- /.card -->
|
||
</div>
|
||
<!-- end row -->
|
||
</div>
|
||
</div>
|
||
</section>
|
||
<!-- ===========================end file analysis ================================== -->
|
||
{% if virus_total %}
|
||
<a id="virus_total" class="anchor"></a>
|
||
<section class="content">
|
||
<div class="container-fluid">
|
||
<div class="row">
|
||
<div class="col-lg-12">
|
||
<div class="card">
|
||
<div class="card-body">
|
||
<p>
|
||
<strong><i class="fas fa-spider"></i> VIRUSTOTAL SCAN</strong>
|
||
</p>
|
||
<div class="table-responsive">
|
||
{% if virus_total.items|length < 9 %} {% comment %} Basic check to determine if the response is a msg or a result {% endcomment %}
|
||
<p align="left"> <strong>{{ virus_total.verbose_msg }}</strong></p>
|
||
{% else %}
|
||
<p align="left"> <strong> {{ virus_total.positives }} / {{ virus_total.total }} AVs found this file Malicious! </strong> <a href="{{ virus_total.permalink }}" target="_blank" rel="noopener"><i class="fas fa-th-list"></i> Full Report</a></p>
|
||
{% if virus_total.positives > 0 %}
|
||
<table id="table_vt" class="table table-bordered table-hover table-striped">
|
||
<thead>
|
||
<tr>
|
||
<th>AV</th>
|
||
<th>DETECTION</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
{% for av_name,av_result in virus_total.scans.items %}
|
||
{% if av_result.detected == True %}
|
||
<tr>
|
||
<td>
|
||
{{ av_name }}
|
||
</td>
|
||
<td>
|
||
<span class="badge bg-danger">{{ av_result.result }}</span>
|
||
</td>
|
||
</tr>
|
||
{% endif %}
|
||
{% endfor %}
|
||
</tbody>
|
||
</table>
|
||
{% endif %}{% comment %} if results.positive > 0 {% endcomment %}
|
||
{% endif %}{% comment %} if this is the upload msg or a result {% endcomment %}
|
||
</div>
|
||
</div>
|
||
</div><!-- /.card -->
|
||
</div>
|
||
<!-- end row -->
|
||
</div>
|
||
</div>
|
||
</section>
|
||
{% endif %}
|
||
<!-- ===========================end virus total ================================== -->
|
||
<a id="libraries" class="anchor"></a>
|
||
<section class="content">
|
||
<div class="container-fluid">
|
||
<div class="row">
|
||
<div class="col-lg-12">
|
||
<div class="card">
|
||
<div class="card-body">
|
||
<p>
|
||
<strong><i class="fab fa-buffer"></i> LIBRARIES</strong>
|
||
</p>
|
||
<div class="list-group">
|
||
<p>
|
||
{% for lib in libraries %}
|
||
{{ lib }}
|
||
<br/>
|
||
{% endfor %}
|
||
</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div><!-- /.card -->
|
||
</div>
|
||
<!-- end row -->
|
||
</div>
|
||
</section>
|
||
<!-- ===========================end libraries ================================== -->
|
||
<a id="files" class="anchor"></a>
|
||
<section class="content">
|
||
<div class="container-fluid">
|
||
<div class="row">
|
||
<div class="col-lg-12">
|
||
<div class="card">
|
||
<div class="card-body">
|
||
<p>
|
||
<strong><i class="far fa-copy"></i> FILES</strong>
|
||
</p>
|
||
<div class="list-group">
|
||
<p>
|
||
{% for file in files %}
|
||
{{ file}} <br/>
|
||
{% endfor %}
|
||
</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div><!-- /.card -->
|
||
</div>
|
||
<!-- end row -->
|
||
</div>
|
||
</section>
|
||
<!-- ===========================end files ================================== -->
|
||
<!-- end of contents -->
|
||
</div>
|
||
|
||
<!-- Modal -->
|
||
|
||
<div class="modal" id="mplist" tabindex="-1" role="dialog">
|
||
<div class="modal-dialog modal-xl">
|
||
<div class="modal-content">
|
||
<div class="modal-header">
|
||
<h4 class="modal-title">Info.plist</h4>
|
||
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
|
||
<span aria-hidden="true">×</span>
|
||
</button>
|
||
</div>
|
||
<div class="modal-body">
|
||
<pre><code>
|
||
{{ info_plist }}
|
||
</code></pre>
|
||
</div>
|
||
</div>
|
||
<!-- /.modal-content -->
|
||
</div>
|
||
<!-- /.modal-dialog -->
|
||
</div>
|
||
|
||
<div class="modal" id="mstrings" tabindex="-1" role="dialog">
|
||
<div class="modal-dialog modal-xl">
|
||
<div class="modal-content">
|
||
<div class="modal-header">
|
||
<h4 class="modal-title">Strings</h4>
|
||
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
|
||
<span aria-hidden="true">×</span>
|
||
</button>
|
||
</div>
|
||
<div class="modal-body">
|
||
<pre><code>
|
||
{% for string in strings %}
|
||
{{string}}
|
||
{% endfor %}
|
||
</code></pre>
|
||
</div>
|
||
</div>
|
||
<!-- /.modal-content -->
|
||
</div>
|
||
<!-- /.modal-dialog -->
|
||
</div>
|
||
|
||
|
||
|
||
{% endblock %}
|
||
<!--end new UI-->
|
||
{% block extra_scripts %}
|
||
<!-- DataTables -->
|
||
<script src="{% static "adminlte/plugins/datatables/jquery.dataTables.min.js" %} "></script>
|
||
<script src="{% static "adminlte/plugins/datatables-bs4/dataTables.bootstrap4.min.js" %}"></script>
|
||
<script>
|
||
$(function () {
|
||
// Datatable
|
||
$('table').DataTable({
|
||
"paging": true,
|
||
"lengthChange": false,
|
||
"searching": true,
|
||
"ordering": true,
|
||
"info": true,
|
||
"autoWidth": true,
|
||
"responsive": true,
|
||
});
|
||
});
|
||
// Navbar Active
|
||
$(".nav-link").on("click", function() {
|
||
$(".nav-link").removeClass("active");
|
||
$(this).addClass("active");
|
||
});
|
||
</script>
|
||
{% endblock %}
|