Merge pull request #50 from george-e-shaw-iv/master

Bottleneck webserver fix && frontend development init stuff
This commit is contained in:
George Shaw 2017-11-01 18:03:10 -05:00 committed by GitHub
commit 2bdd3fa8fc
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
8 changed files with 193 additions and 635 deletions

View file

@ -0,0 +1,3 @@
.navbar {
background-color:#E0EBF5 !important;
}

View file

@ -0,0 +1 @@

View file

@ -0,0 +1,50 @@
<!DOCTYPE html>
<html lang="en">
<head>
<title>gPanel</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta.2/css/bootstrap.min.css" integrity="sha384-PsH8R72JQ3SOdhVi3uxftmaW6Vc51MKb0q5P2rRUpPvrszuE4W1povHYgTpBfshb" crossorigin="anonymous">
<link type="text/css" rel="stylesheet" href="assets/css/style.css">
</head>
<body>
<nav class="navbar navbar-expand-md navbar-light mb-4">
<a class="navbar-brand" href="#">gPanel</a>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarCollapse" aria-controls="navbarCollapse" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarCollapse">
<form class="form-inline mt-2 mt-md-0 ml-auto">
<input class="form-control mr-sm-2" type="text" placeholder="Search" aria-label="Search">
<button class="btn btn-outline-primary my-2 my-sm-0" type="submit">Search</button>
</form>
</div>
</nav>
<div class="container">
<div class="row">
<div class="col-12">
<div class="card">
<div class="card-body">
<h4 class="card-title">Public Server</h4>
<h6 class="card-subtitle mb-4 text-muted">Handle operations for the public serving server</h6>
<button type="button" class="btn btn-outline-primary">Maintenance Mode</button>
<button type="button" class="btn btn-outline-primary">Graceful Shutdown</button>
<button type="button" class="btn btn-outline-primary">Forced Shutdown</button>
<button type="button" class="btn btn-outline-primary">Restart</button>
</div>
</div>
</div>
</div>
</div>
<!-- KEEP AT BOTTOM OF BODY TAGS -->
<script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.3/umd/popper.min.js" integrity="sha384-vFJXuSJphROIrBnz7yo7oB41mKfc8JzQZiCq4NCceLEaO4IHwicKwpJf9c9IpFgh" crossorigin="anonymous"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta.2/js/bootstrap.min.js" integrity="sha384-alpBpkh1PFOepccYVYDB4do5UnbKysX5WZXm3XxPqe5iKTfUKjNkCk9SaVuEZflJ" crossorigin="anonymous"></script>
<script type="text/javascript" src="assets/js/main.js"></script>
<!-- KEEP AT BOTTOM OF BODY TAGS -->
</body>
</html>

View file

@ -1,547 +1,54 @@
<!doctype html>
<!DOCTYPE html>
<html lang="en">
<head>
<title>gPanel - Home</title>
<!-- Required meta tags -->
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<head>
<title>gPanel</title>
<!-- Bootstrap CSS -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<!-- Our own CSS -->
<link rel="stylesheet" href="styles.css">
</head>
<body>
<nav class="navbar navbar-inverse">
<div class="container-fluid">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#myNavbar">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta.2/css/bootstrap.min.css" integrity="sha384-PsH8R72JQ3SOdhVi3uxftmaW6Vc51MKb0q5P2rRUpPvrszuE4W1povHYgTpBfshb" crossorigin="anonymous">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css">
<link type="text/css" rel="stylesheet" href="assets/css/style.css">
</head>
<body>
<nav class="navbar navbar-expand-md navbar-light mb-4">
<a class="navbar-brand" href="#">gPanel</a>
</div>
<div class="collapse navbar-collapse" id="myNavbar">
<ul class="nav navbar-nav">
<li class="active"><a href="#">News</a></li>
<li><a href="#">Change Log</a></li>
</ul>
<ul class="nav navbar-nav navbar-right">
<li><a href="#"><span class="glyphicon glyphicon-log-in"></span> Login</a></li>
</ul>
</div>
</div>
</nav>
<div class="container-fluid text-center">
<div class="row content">
<div class="col-sm-2 sidenav pre-scrollable">
<div class="panel-group">
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title">
<a data-toggle="collapse" href="#collapse1">Server Configuration</a>
</h4>
</div>
<div id="collapse1" class="panel-collapse collapse">
<div class="panel-body">Basic WebHost Manager Setup</div>
<div class="panel-body">Change Root Password</div>
<div class="panel-body">Configure ePanel Cron Jobs</div>
<div class="panel-body">Initial Quota Setup</div>
<div class="panel-body">Server Time</div>
<div class="panel-body">Statistics Software Configuration</div>
<div class="panel-body">Tweak Settings</div>
<div class="panel-body">Update Preferences</div>
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title">
<a data-toggle="collapse" href="#collapse2">Support</a>
</h4>
</div>
<div id="collapse2" class="panel-collapse collapse">
<div class="panel-body">Create Support Ticket</div>
<div class="panel-body">Grant gPanel Support Access</div>
<div class="panel-body">Support Center</div>
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title">
<a data-toggle="collapse" href="#collapse3">Networking Setup</a>
</h4>
</div>
<div id="collapse3" class="panel-collapse collapse">
<div class="panel-body">Change Hostname</div>
<div class="panel-body">Resolver Configuration</div>
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title">
<a data-toggle="collapse" href="#collapse4">Security Center</a>
</h4>
</div>
<div id="collapse4" class="panel-collapse collapse">
<div class="panel-body">Apache mod_userdir Tweak</div>
<div class="panel-body">Compiler Access</div>
<div class="panel-body">Configure Security Policies</div>
<div class="panel-body">cPHulk Brute Force Protection</div>
<div class="panel-body">Host Access Control</div>
<div class="panel-body">Manage External Authentications</div>
<div class="panel-body">Manage roots SSH Keys</div>
<div class="panel-body">Manage Wheel Group Users</div>
<div class="panel-body">ModSecurity™ Configuration</div>
<div class="panel-body">ModSecurity™ Tools</div>
<div class="panel-body">ModSecurity™ Vendors</div>
<div class="panel-body">Password Strength Configuration</div>
<div class="panel-body">PHP open_basedir Tweak</div>
<div class="panel-body">cPanel Security Advisor</div>
<div class="panel-body">Security Questions</div>
<div class="panel-body">Shell Fork Bomb Protection</div>
<div class="panel-body">SMTP Restrictions</div>
<div class="panel-body">SSH Password Authorization Tweak</div>
<div class="panel-body">Traceroute Enable/Disable</div>
<div class="panel-body">Two-Factor Authentication</div>
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title">
<a data-toggle="collapse" href="#collapse5">Server Contacts</a>
</h4>
</div>
<div id="collapse5" class="panel-collapse collapse">
<div class="panel-body">Contact Manager</div>
<div class="panel-body">Edit System Mail Preferences</div>
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title">
<a data-toggle="collapse" href="#collapse6">Reseller</a>
</h4>
</div>
<div id="collapse6" class="panel-collapse collapse">
<div class="panel-body">Change Ownership of an Account</div>
<div class="panel-body">Change Ownership of Multiple Accounts</div>
<div class="panel-body">Edit Reseller Nameservers and Privileges</div>
<div class="panel-body">Email All Resellers</div>
<div class="panel-body">Manage Resellers IP Delegation</div>
<div class="panel-body">Manage Resellers Shared IP</div>
<div class="panel-body">Reseller Center</div>
<div class="panel-body">Reset Resellers</div>
<div class="panel-body">Show Reseller Accounts</div>
<div class="panel-body">View Reseller Usage and Manage Account Status</div>
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title">
<a data-toggle="collapse" href="#collapse7">Locales</a>
</h4>
</div>
<div id="collapse7" class="panel-collapse collapse">
<div class="panel-body">Configure Application Locales</div>
<div class="panel-body">Copy a Locale</div>
<div class="panel-body">Delete a Locale</div>
<div class="panel-body">Edit a Locale</div>
<div class="panel-body">Locale XML Download</div>
<div class="panel-body">Locale XML Upload</div>
<div class="panel-body">View Available Locales</div>
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title">
<a data-toggle="collapse" href="#collapse8">Backup</a>
</h4>
</div>
<div id="collapse8" class="panel-collapse collapse">
<div class="panel-body">Backup Configuration</div>
<div class="panel-body">Backup Restoration</div>
<div class="panel-body">Backup User Selection</div>
<div class="panel-body">Configuration File Rollback</div>
<div class="panel-body">Legacy Backup Configuration</div>
<div class="panel-body">Legacy Restore Backups</div>
<div class="panel-body">Legacy Restore Multiple Backups</div>
<div class="panel-body">Restore a Full Backup/cpmove File</div>
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title">
<a data-toggle="collapse" href="#collapse9">Clusters</a>
</h4>
</div>
<div id="collapse9" class="panel-collapse collapse">
<div class="panel-body">Configuration Cluster</div>
<div class="panel-body">DNS Cluster</div>
<div class="panel-body">Remote Access Key</div>
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title">
<a data-toggle="collapse" href="#collapse10">System Reboot</a>
</h4>
</div>
<div id="collapse10" class="panel-collapse collapse">
<div class="panel-body">Forceful Server Reboot</div>
<div class="panel-body">Graceful Server Reboot</div>
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title">
<a data-toggle="collapse" href="#collapse11">Server Status</a>
</h4>
</div>
<div id="collapse11" class="panel-collapse collapse">
<div class="panel-body">Apache Status</div>
<div class="panel-body">Daily Process Log</div>
<div class="panel-body">Server Information</div>
<div class="panel-body">Service Status</div>
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title">
<a data-toggle="collapse" href="#collapse12">Account Information</a>
</h4>
</div>
<div id="collapse12" class="panel-collapse collapse">
<div class="panel-body">List Accounts</div>
<div class="panel-body">List Parked Domains</div>
<div class="panel-body">List Subdomains</div>
<div class="panel-body">Suspended Accounts</div>
<div class="panel-body">Show Accounts Over Quota</div>
<div class="panel-body">View Bandwidth Usage</div>
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title">
<a data-toggle="collapse" href="#collapse13">Account Functions</a>
</h4>
</div>
<div id="collapse13" class="panel-collapse collapse">
<div class="panel-body">Change Sites IP Address</div>
<div class="panel-body">Create a New Account</div>
<div class="panel-body">Email All Users</div>
<div class="panel-body">Force Password Change</div>
<div class="panel-body">Limit Bandwidth Usage</div>
<div class="panel-body">Manage Account Suspension</div>
<div class="panel-body">Manage Demo Mode</div>
<div class="panel-body">Manage Shell Access</div>
<div class="panel-body">Modify an Account</div>
<div class="panel-body">Password Modification</div>
<div class="panel-body">Quota Modification</div>
<div class="panel-body">Raw Apache Log Download</div>
<div class="panel-body">Raw FTP Log Download</div>
<div class="panel-body">Rearrange an Account</div>
<div class="panel-body">Reset Account Bandwidth Limit</div>
<div class="panel-body">Show Active and Inactive Accounts</div>
<div class="panel-body">Skeleton Directory</div>
<div class="panel-body">Terminate Accounts</div>
<div class="panel-body">Unsuspend Bandwidth Exceeders</div>
<div class="panel-body">Upgrade/Downgrade an Account</div>
<div class="panel-body">Web Template Editor</div>
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title">
<a data-toggle="collapse" href="#collapse14">Multi Account Functions</a>
</h4>
</div>
<div id="collapse14" class="panel-collapse collapse">
<div class="panel-body">Change Multiple Sites IP Addresses</div>
<div class="panel-body">Modify/Upgrade Multiple Accounts</div>
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title">
<a data-toggle="collapse" href="#collapse15">Transfers</a>
</h4>
</div>
<div id="collapse15" class="panel-collapse collapse">
<div class="panel-body">Convert Addon Domain to Account</div>
<div class="panel-body">Copy an Account From Another Server With an Account Password</div>
<div class="panel-body">Review Transfers and Restores</div>
<div class="panel-body">Transfer Tool</div>
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title">
<a data-toggle="collapse" href="#collapse16">Themes</a>
</h4>
</div>
<div id="collapse16" class="panel-collapse collapse">
<div class="panel-body">Change WebHost Manager® Theme</div>
<div class="panel-body">Theme Manager</div>
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title">
<a data-toggle="collapse" href="#collapse17">Packages</a>
</h4>
</div>
<div id="collapse17" class="panel-collapse collapse">
<div class="panel-body">Add a Package</div>
<div class="panel-body">Delete a Package</div>
<div class="panel-body">Edit a Package</div>
<div class="panel-body">Feature Manager</div>
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title">
<a data-toggle="collapse" href="#collapse18">DNS Functions</a>
</h4>
</div>
<div id="collapse18" class="panel-collapse collapse">
<div class="panel-body">Add a DNS Zone</div>
<div class="panel-body">Add an A Entry for Your Hostname</div>
<div class="panel-body">DNS Zone Removal</div>
<div class="panel-body">DNS Zone Editor</div>
<div class="panel-body">MX Entry Editor</div>
<div class="panel-body">Edit Zone Templates</div>
<div class="panel-body">Nameserver Record Report</div>
<div class="panel-body">Park a Domain</div>
<div class="panel-body">Perform a DNS Cleanup</div>
<div class="panel-body">Reset a DNS Zone</div>
<div class="panel-body">Set Zone Time To Live (TTL)</div>
<div class="panel-body">Setup/Edit Domain Forwarding</div>
<div class="panel-body">Synchronize DNS Records</div>
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title">
<a data-toggle="collapse" href="#collapse19">SQL Services</a>
</h4>
</div>
<div id="collapse19" class="panel-collapse collapse">
<div class="panel-body">Additional MySQL Access Hosts</div>
<div class="panel-body">Change MySQL User Password</div>
<div class="panel-body">Database Map Tool</div>
<div class="panel-body">Manage Database Users</div>
<div class="panel-body">Manage Databases</div>
<div class="panel-body">Manage MySQL® Profiles</div>
<div class="panel-body">MySQL Root Password</div>
<div class="panel-body">phpMyAdmin</div>
<div class="panel-body">Repair a MySQL Database</div>
<div class="panel-body">Show MySQL Processes</div>
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title">
<a data-toggle="collapse" href="#collapse20">IP Functions</a>
</h4>
</div>
<div id="collapse20" class="panel-collapse collapse">
<div class="panel-body">Add a New IP Address</div>
<div class="panel-body">Assign IPv6 Address</div>
<div class="panel-body">Change a Sites IP Address</div>
<div class="panel-body">Configure Remote Service IPs</div>
<div class="panel-body">IP Migration Wizard</div>
<div class="panel-body">IPv6 Address Ranges</div>
<div class="panel-body">Rebuild the IP Address Pool</div>
<div class="panel-body">Show IP Address Usage</div>
<div class="panel-body">Show or Delete Current IP Addresses</div>
<div class="panel-body">Show/Edit Reserved IPs</div>
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title">
<a data-toggle="collapse" href="#collapse21">Software</a>
</h4>
</div>
<div id="collapse21" class="panel-collapse collapse">
<div class="panel-body">EasyApache 4</div>
<div class="panel-body">Install a Perl Module</div>
<div class="panel-body">Install an RPM</div>
<div class="panel-body">Module Installers</div>
<div class="panel-body">MultiPHP INI Editor</div>
<div class="panel-body">MultiPHP Manager</div>
<div class="panel-body">MySQL/MariaDB Upgrade</div>
<div class="panel-body">Rebuild RPM Database</div>
<div class="panel-body">System Update</div>
<div class="panel-body">Update Server Software</div>
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title">
<a data-toggle="collapse" href="#collapse22">Email</a>
</h4>
</div>
<div id="collapse22" class="panel-collapse collapse">
<div class="panel-body">Greylisting</div>
<div class="panel-body">Mail Delivery Reports</div>
<div class="panel-body">Mail Queue Manager</div>
<div class="panel-body">Mail Troubleshooter</div>
<div class="panel-body">Mailbox Conversion</div>
<div class="panel-body">Repair Mailbox Permissions</div>
<div class="panel-body">Spamd Startup Configuration</div>
<div class="panel-body">View Mail Statistics Summary</div>
<div class="panel-body">View Relayers</div>
<div class="panel-body">View Sent Summary</div>
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title">
<a data-toggle="collapse" href="#collapse23">System Health</a>
</h4>
</div>
<div id="collapse23" class="panel-collapse collapse">
<div class="panel-body">Background Process Killer</div>
<div class="panel-body">Process Manager</div>
<div class="panel-body">Show Current Disk Usage</div>
<div class="panel-body">Show Current Running Processes</div>
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title">
<a data-toggle="collapse" href="#collapse24">cPanel</a>
</h4>
</div>
<div id="collapse24" class="panel-collapse collapse">
<div class="panel-body">Customization</div>
<div class="panel-body">Install cPAddons Site Software</div>
<div class="panel-body">Manage cPAddons Site Software</div>
<div class="panel-body">Manage Plugins</div>
<div class="panel-body">Modify cPanel & WHM News</div>
<div class="panel-body">Reset a Mailman Password</div>
<div class="panel-body">Synchronize FTP Passwords</div>
<div class="panel-body">Upgrade to Latest Version</div>
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title">
<a data-toggle="collapse" href="#collapse25">SSL/TLS</a>
</h4>
</div>
<div id="collapse25" class="panel-collapse collapse">
<div class="panel-body">Generate an SSL Certificate and Signing Request</div>
<div class="panel-body">Install an SSL Certificate on a Domain</div>
<div class="panel-body">Manage AutoSSL</div>
<div class="panel-body">Manage SSL Hosts</div>
<div class="panel-body">Purchase and Install an SSL Certificate</div>
<div class="panel-body">SSL Storage Manager</div>
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title">
<a data-toggle="collapse" href="#collapse26">Market</a>
</h4>
</div>
<div id="collapse26" class="panel-collapse collapse">
<div class="panel-body">Market Provider Manager</div>
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title">
<a data-toggle="collapse" href="#collapse27">Restart Services</a>
</h4>
</div>
<div id="collapse27" class="panel-collapse collapse">
<div class="panel-body">DNS Server</div>
<div class="panel-body">FTP Server (ProFTPd/PureFTPd)</div>
<div class="panel-body">HTTP Server (Apache)</div>
<div class="panel-body">IMAP Server</div>
<div class="panel-body">Mail Server (Exim)</div>
<div class="panel-body">Mailing List Manager (Mailman)</div>
<div class="panel-body">PHP-FPM service for Apache</div>
<div class="panel-body">SQL Server (MySQL)</div>
<div class="panel-body">SSH Server (OpenSSH)</div>
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title">
<a data-toggle="collapse" href="#collapse28">Development</a>
</h4>
</div>
<div id="collapse28" class="panel-collapse collapse">
<div class="panel-body">Apps Managed by AppConfig</div>
<div class="panel-body">cPanel Developement Forum</div>
<div class="panel-body">cPanel Plugin File Generator</div>
<div class="panel-body">Manage Hooks</div>
<div class="panel-body">Software Development Kit</div>
</div>
</div>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarCollapse" aria-controls="navbarCollapse" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarCollapse">
<form class="form-inline mt-2 mt-md-0 ml-auto">
<input class="form-control mr-sm-2" type="text" placeholder="Search" aria-label="Search">
<button class="btn btn-outline-primary my-2 my-sm-0" type="submit">Search</button>
</form>
</div>
</div>
<div class="col-sm-10 text-left">
<h1>Help Wanted</h1>
<hr>
<h2>Help Wanted</h2>
<hr>
<h3>Help Wanted</h3>
<hr>
<h4>Help Wanted</h4>
<hr>
<h5>Help Wanted</h5>
<hr>
<h6>Help Wanted</h6>
</div>
</div>
</div>
</nav>
<div class="container d-flex justify-content-center align-items-center">
<form>
<div class="form-group">
<label class="sr-only" for="loginUsername">Username</label>
<div class="input-group mb-2">
<div class="input-group-addon"><i class="fa fa-user" aria-hidden="true"></i></div>
<input type="text" class="form-control" id="loginUsername" placeholder="Username...">
</div>
</div>
<div class="form-group">
<label class="sr-only" for="loginPassword">Password</label>
<div class="input-group mb-2">
<div class="input-group-addon"><i class="fa fa-key" aria-hidden="true"></i></div>
<input type="text" class="form-control" id="loginPassword" placeholder="Password...">
</div>
</div>
<button type="submit" class="btn btn-primary">Login</button>
</form>
</div>
<!-- put this last for faster reloading -->
<script src="https://code.jquery.com/jquery-3.2.1.slim.min.js"
integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN"
crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.3/umd/popper.min.js"
integrity="sha384-vFJXuSJphROIrBnz7yo7oB41mKfc8JzQZiCq4NCceLEaO4IHwicKwpJf9c9IpFgh"
crossorigin="anonymous"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
</body>
<!-- KEEP AT BOTTOM OF BODY TAGS -->
<script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.3/umd/popper.min.js" integrity="sha384-vFJXuSJphROIrBnz7yo7oB41mKfc8JzQZiCq4NCceLEaO4IHwicKwpJf9c9IpFgh" crossorigin="anonymous"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta.2/js/bootstrap.min.js" integrity="sha384-alpBpkh1PFOepccYVYDB4do5UnbKysX5WZXm3XxPqe5iKTfUKjNkCk9SaVuEZflJ" crossorigin="anonymous"></script>
<script type="text/javascript" src="assets/js/main.js"></script>
<!-- KEEP AT BOTTOM OF BODY TAGS -->
</body>
</html>

View file

@ -1,31 +0,0 @@
/* Remove the navbar's default margin-bottom and rounded borders */
.navbar {
margin-bottom: 0;
border-radius: 0;
}
/* Set height of the grid so .sidenav can be 100% (adjust as needed) */
.row.content {height: 450px}
/* Set gray background color and 100% height */
.sidenav {
padding-top: 20px;
background-color: #f1f1f1;
height: 100%;
}
/* Set black background color, white text and some padding */
footer {
background-color: #555;
color: white;
padding: 15px;
}
/* On small screens, set height to 'auto' for sidenav and grid */
@media screen and (max-width: 767px) {
.sidenav {
height: auto;
padding: 15px;
}
.row.content {height:auto;}
}

View file

@ -2,7 +2,7 @@
package public
import (
"bufio"
"io"
"net/http"
"os"
@ -33,23 +33,26 @@ func (pub *PublicWeb) ServeHTTP(w http.ResponseWriter, req *http.Request) {
f, err := os.Open(path)
if err == nil {
bufferedReader := bufio.NewReader(f)
contentType, err := routing.GetContentType(path)
if err == nil {
w.Header().Add("Content Type", contentType)
bufferedReader.WriteTo(w)
logging.Console(logging.PUBLIC_PREFIX, logging.NORMAL_LOG, "Path \""+path+"\" rendered a 200 success.")
} else {
routing.HttpThrowStatus(http.StatusUnsupportedMediaType, w)
logging.Console(logging.PUBLIC_PREFIX, logging.NORMAL_LOG, "Path \""+path+"\" content type could not be determined, 404 error.")
}
} else {
if err != nil {
routing.HttpThrowStatus(http.StatusNotFound, w)
logging.Console(logging.PUBLIC_PREFIX, logging.NORMAL_LOG, "Path \""+path+"\" rendered a 404 error.")
return
}
contentType, err := routing.GetContentType(path)
if err != nil {
routing.HttpThrowStatus(http.StatusUnsupportedMediaType, w)
logging.Console(logging.PUBLIC_PREFIX, logging.NORMAL_LOG, "Path \""+path+"\" content type could not be determined, 404 error.")
return
}
w.Header().Add("Content-Type", contentType)
_, err = io.Copy(w, f)
if err != nil {
routing.HttpThrowStatus(http.StatusInternalServerError, w)
logging.Console(logging.PUBLIC_PREFIX, logging.NORMAL_LOG, "Path \""+path+"\" rendered a 500 error.")
return
}
}

View file

@ -1,15 +0,0 @@
// Package webhost handles the logic of the webhosting panel
package webhost
import "strings"
var allowedUnauthorizedPathSuffixes = [...]string{"api_testing.html", "user_auth", "user_register"}
func CheckAuth(path string) bool {
for _, suffix := range allowedUnauthorizedPathSuffixes {
if strings.HasSuffix(path, suffix) {
return true
}
}
return false
}

View file

@ -2,9 +2,10 @@
package webhost
import (
"bufio"
"io"
"net/http"
"os"
"strings"
"github.com/Ennovar/gPanel/pkg/api"
"github.com/Ennovar/gPanel/pkg/logging"
@ -23,6 +24,30 @@ func NewPrivateHost() PrivateHost {
}
}
// reqAuth function checks to see if the given path requires authentication.
func reqAuth(path string) bool {
path = strings.ToLower(path)
dismissibleTypes := []string{".css", ".js"}
for _, t := range dismissibleTypes {
if strings.HasSuffix(path, t) {
return false
}
}
dismissibleFiles := []string{
"api_testing.html",
"index.html",
}
for _, f := range dismissibleFiles {
if strings.HasSuffix(path, f) {
return false
}
}
return true
}
// ServeHTTP function routes all requests for the private webhost server. It is used in the main
// function inside of the http.ListenAndServe() function for the private webhost host.
func (priv *PrivateHost) ServeHTTP(w http.ResponseWriter, req *http.Request) {
@ -33,43 +58,58 @@ func (priv *PrivateHost) ServeHTTP(w http.ResponseWriter, req *http.Request) {
path = (priv.Directory + path)
}
store := networking.GetStore(networking.COOKIES_USER_AUTH)
val, err := store.Read(w, req, "auth")
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
var auth interface{} = true
if reqAuth(path) {
store := networking.GetStore(networking.COOKIES_USER_AUTH)
auth, err := store.Read(w, req, "auth")
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
auth, ok := auth.(bool)
if !ok {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
}
if !auth.(bool) {
routing.HttpThrowStatus(http.StatusUnauthorized, w)
logging.Console(logging.PRIVATE_PREFIX, logging.NORMAL_LOG, "Path \""+path+"\" rendered a 401 error.")
return
}
if val != true && !CheckAuth(path) {
routing.HttpThrowStatus(http.StatusUnauthorized, w)
logging.Console(logging.PRIVATE_PREFIX, logging.NORMAL_LOG, "Path \""+path+"\" rendered a 401 error.")
} else {
isApi, _ := api.HandleAPI(path, w, req)
if isApi != true {
f, err := os.Open(path)
if err == nil {
bufferedReader := bufio.NewReader(f)
contentType, err := routing.GetContentType(path)
if err == nil {
w.Header().Add("Content Type", contentType)
bufferedReader.WriteTo(w)
logging.Console(logging.PRIVATE_PREFIX, logging.NORMAL_LOG, "Path \""+path+"\" rendered a 200 success.")
} else {
routing.HttpThrowStatus(http.StatusUnsupportedMediaType, w)
logging.Console(logging.PRIVATE_PREFIX, logging.NORMAL_LOG, "Path \""+path+"\" content type could not be determined, 404 error.")
}
} else {
routing.HttpThrowStatus(http.StatusNotFound, w)
logging.Console(logging.PRIVATE_PREFIX, logging.NORMAL_LOG, "Path \""+path+"\" rendered a 404 error.")
}
}
isApi, _ := api.HandleAPI(path, w, req)
if isApi {
// API methods handle HTTP logic from here
return
}
f, err := os.Open(path)
if err != nil {
routing.HttpThrowStatus(http.StatusNotFound, w)
logging.Console(logging.PRIVATE_PREFIX, logging.NORMAL_LOG, "Path \""+path+"\" rendered a 404 error.")
return
}
contentType, err := routing.GetContentType(path)
if err != nil {
routing.HttpThrowStatus(http.StatusUnsupportedMediaType, w)
logging.Console(logging.PUBLIC_PREFIX, logging.NORMAL_LOG, "Path \""+path+"\" content type could not be determined, 404 error.")
return
}
w.Header().Add("Content-Type", contentType)
_, err = io.Copy(w, f)
if err != nil {
routing.HttpThrowStatus(http.StatusInternalServerError, w)
logging.Console(logging.PUBLIC_PREFIX, logging.NORMAL_LOG, "Path \""+path+"\" rendered a 500 error.")
return
}
}