mirror of
https://github.com/Clortox/SimpleFileRepository.git
synced 2025-01-09 02:17:59 +00:00
Initial Commit
This commit is contained in:
commit
1e9762ff50
14
.gitignore
vendored
Normal file
14
.gitignore
vendored
Normal file
@ -0,0 +1,14 @@
|
||||
############
|
||||
# Git Ignore
|
||||
|
||||
#Linux trash folder which can appear anywhere
|
||||
.Trash-*
|
||||
|
||||
# .nfs files are created when file is removed but still being accessed
|
||||
.nfs*
|
||||
|
||||
#dont add anyof the symlinks in dir to tracking
|
||||
dir/*
|
||||
|
||||
#but still keep the folder
|
||||
!dir/.gitkeep
|
13
README.md
Normal file
13
README.md
Normal file
@ -0,0 +1,13 @@
|
||||
Simple Repository
|
||||
=================
|
||||
|
||||
My simple php file repository/link tree that I wrote for my personal NAS.
|
||||
|
||||
How to use
|
||||
----------
|
||||
|
||||
I designed this with the intent that it could be used on something like a raspberry pi with little to now programming knowledge.
|
||||
|
||||
The config file is supposed to be very easy to read and understand what each option means. The config file is in php.
|
||||
|
||||
The config file is [var/config.php](var/config.php)
|
0
dir/.gitkeep
Normal file
0
dir/.gitkeep
Normal file
15
helpers/files.php
Normal file
15
helpers/files.php
Normal file
@ -0,0 +1,15 @@
|
||||
<?php
|
||||
ini_set('display_errors',1);
|
||||
ini_set('display_startup_errors',1);
|
||||
error_reporting(E_ALL);
|
||||
|
||||
function foldersize($path){
|
||||
$sizestr = shell_exec('du -sh ' . "$path" . '/ | awk \'{print $1} \'');
|
||||
return $sizestr;
|
||||
}
|
||||
|
||||
function listingsize($path){
|
||||
$sizestr = shell_exec('du -h ' . "$path" . ' | awk \'{print $1}\'');
|
||||
return $sizestr;
|
||||
}
|
||||
?>
|
57
index.php
Normal file
57
index.php
Normal file
@ -0,0 +1,57 @@
|
||||
<html>
|
||||
<head>
|
||||
<?php
|
||||
session_start();
|
||||
//if this is a session inside the local connection
|
||||
if(strpos($_SERVER['REMOTE_ADDR'],"192.168.1.")){
|
||||
ini_set('display_errors',1);
|
||||
ini_set('display_startup_errors',1);
|
||||
error_reporting(E_ALL);
|
||||
}
|
||||
|
||||
ini_set('display_errors',1);
|
||||
ini_set('display_startup_errors',1);
|
||||
error_reporting(E_ALL);
|
||||
|
||||
|
||||
//css, js, and other includes
|
||||
include 'www/include.php';
|
||||
include 'helpers/files.php';
|
||||
?>
|
||||
<title><?php echo $site_name ?></title>
|
||||
|
||||
</head>
|
||||
<body class="bg-dark">
|
||||
<?php
|
||||
include 'www/header.php';
|
||||
?>
|
||||
<div class="card ml-4 mr-4">
|
||||
<div class="card-header">
|
||||
<h2>Folders</h2>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<p>Select a catagory to start browsing</p>
|
||||
<table id="catTable" class="display table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Name</th>
|
||||
<th>Link</th>
|
||||
<th>Size</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php
|
||||
foreach($dir_names as $i=>$currentdir){
|
||||
echo '<tr>';
|
||||
echo '<td>' . $currentdir . '</td>';
|
||||
echo '<td><a href="listing.php?folder=' . $dir_names[$i] .'">View Listing</a></td>';
|
||||
echo '<td>' . foldersize($dir_dirs[$i]) . '</td>';
|
||||
echo '</tr>';
|
||||
}
|
||||
?>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
110
listing.php
Normal file
110
listing.php
Normal file
@ -0,0 +1,110 @@
|
||||
<html>
|
||||
<head>
|
||||
<?php
|
||||
session_start();
|
||||
//if this is a session inside the local connection
|
||||
if(strpos($_SERVER['REMOTE_ADDR'],"192.168.1.")){
|
||||
ini_set('display_errors',1);
|
||||
ini_set('display_startup_errors',1);
|
||||
error_reporting(E_ALL);
|
||||
}
|
||||
|
||||
ini_set('display_errors',1);
|
||||
ini_set('display_startup_errors',1);
|
||||
error_reporting(E_ALL);
|
||||
|
||||
//css, js, and other includes
|
||||
include 'www/include.php';
|
||||
include 'helpers/files.php';
|
||||
?>
|
||||
<title><?php echo $site_name ?></title>
|
||||
|
||||
</head>
|
||||
<body class="bg-dark">
|
||||
<?php
|
||||
include 'www/header.php';
|
||||
?>
|
||||
<?php
|
||||
$dir = $_GET['folder'];
|
||||
$exists = false;
|
||||
foreach($dir_names as $dir_index=>$dir_){
|
||||
if($dir_ == $dir){
|
||||
$exists = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if(!$exists){
|
||||
echo <<< errorblock
|
||||
<div class="card-header">
|
||||
<h2><b>LISTING NOT FOUND</b></h2>
|
||||
</div>
|
||||
errorblock;
|
||||
exit();
|
||||
}
|
||||
|
||||
if(!array_key_exists('path', $_GET)){
|
||||
$path = '/';
|
||||
} else {
|
||||
$path = $_GET['path'];
|
||||
}
|
||||
|
||||
if($handle = opendir($dir_dirs[$dir_index] . $path)){
|
||||
while(false !== ($entry = readdir($handle))){
|
||||
//exclude . and ..
|
||||
if($entry != '.' && $entry != '..'){
|
||||
$elements[] = $entry;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
echo <<< erroropendir
|
||||
<div class="card-header">
|
||||
<h2><b>ERROR OPENING DIRECTORY, PLEASE RELOAD THE PAGE</b></h2>
|
||||
<h2><b>IF THE ISSUE PERSISTS, PLEASE CONTACT YOUR SYSTEM ADMINISTRATOR</b></h2>
|
||||
</div>
|
||||
erroropendir;
|
||||
exit();
|
||||
}
|
||||
|
||||
?>
|
||||
<div class="card ml-4 mr-4">
|
||||
<div class="card-header">
|
||||
<h2><?php echo $dir ?></h2>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<p>Select a file to download, or a folder to view its contents</p>
|
||||
<table id="catTable" class="display table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>File Name</th>
|
||||
<th>Link</th>
|
||||
<th>Size</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php
|
||||
foreach($elements as $i=>$currentfile){
|
||||
|
||||
echo "<tr>";
|
||||
echo "<td>" . $currentfile . "</td>";
|
||||
$fulldir = $dir_dirs[$dir_index] . $path . "/" . $currentfile;
|
||||
if(is_dir($fulldir)){
|
||||
echo "<td><a href=\"listing.php?folder="
|
||||
. $dir . "&path=%2F" . $currentfile
|
||||
. "\">View Directory</a></td>";
|
||||
echo "<td>" . foldersize($fulldir) . "</td>";
|
||||
} else {
|
||||
echo "<td><a href=\"" . $fulldir . "\">Download</a></td>";
|
||||
echo "<td>" . listingsize($fulldir) . "</td>";
|
||||
}
|
||||
echo "</tr>";
|
||||
}
|
||||
?>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
88
var/config.php
Normal file
88
var/config.php
Normal file
@ -0,0 +1,88 @@
|
||||
<?php
|
||||
//general config globals
|
||||
|
||||
//This is what will appear in the tab, as well as on the header
|
||||
$site_name = 'Tyler\'s File Repository';
|
||||
|
||||
/* Navbar
|
||||
*
|
||||
* Each variable in $nav_names is what will appear on the top bar
|
||||
* These can be set to anything and could be Places on the page, internal pages
|
||||
* on the site, or external sites
|
||||
*
|
||||
* Each varaible in $nav_links is a link that the user will be directed to
|
||||
* These can start with "#" to direct to a tag on the page, could be an internal
|
||||
* link by using "/listing.php?folder=SomeFolder", or could be an external site
|
||||
*
|
||||
* These associate in order ie the Tag $nav_names[3] will direct the user to
|
||||
* the link in $nav_links[3]
|
||||
*
|
||||
*/
|
||||
|
||||
$nav_names = array(
|
||||
'Home',
|
||||
'Github',
|
||||
);
|
||||
|
||||
$nav_links = array(
|
||||
'index.php',
|
||||
'https://github.com/Clortox',
|
||||
);
|
||||
|
||||
/* Directory Variables
|
||||
*
|
||||
* Each variable in $dir_dirs will be a listing
|
||||
* on the main page under "folders"
|
||||
* I recomend making a folder of symlinks to where the downloadable files are
|
||||
*
|
||||
* Each variable in $dir_names will be the title of the listing
|
||||
* These will appear on the left hand side and will be the name of the
|
||||
* name of the folder as it appears to the user
|
||||
*
|
||||
* These assiocate in order ie the folder $dir_dirs[3] will have
|
||||
* the title $dir_names[3]
|
||||
*/
|
||||
|
||||
$dir_names = array(
|
||||
'Printable Guns',
|
||||
'GNU Software',
|
||||
'Linux Kernel',
|
||||
'OS Images',
|
||||
'Books and Documents',
|
||||
);
|
||||
|
||||
$dir_dirs = array(
|
||||
'dir/guns',
|
||||
'dir/gnu',
|
||||
'dir/linux',
|
||||
'dir/iso',
|
||||
'dir/books',
|
||||
);
|
||||
|
||||
/* Convo
|
||||
*
|
||||
* These are little tag lines that will appear on the header.
|
||||
* A header is randomly chosen each time the page is loaded
|
||||
* If you would like to disable this, set isConvo to false
|
||||
* If you would like only one line, just comment out/delete all of them except
|
||||
* the one you would like to keep.
|
||||
*
|
||||
* The format is
|
||||
* CLIENTIP + [CONVO] + SERVERIP
|
||||
*
|
||||
* Example:
|
||||
* 192.168.1.100 is exchanging goverment secrets with 192.168.1.1
|
||||
*
|
||||
*/
|
||||
|
||||
$isConvo = true;
|
||||
|
||||
$convo = array(
|
||||
' is exchanging goverment secrets with ',
|
||||
' is talking about life with ',
|
||||
' is asking for data via the information superhighway from ',
|
||||
' is baking cookies with ',
|
||||
' is asking for help with their homework from ',
|
||||
);
|
||||
|
||||
?>
|
28
www/header.php
Normal file
28
www/header.php
Normal file
@ -0,0 +1,28 @@
|
||||
<?php
|
||||
$clientip = $_SERVER['REMOTE_ADDR'];
|
||||
$serverip = $_SERVER['SERVER_ADDR'];
|
||||
|
||||
?>
|
||||
|
||||
<header>
|
||||
<div class="jumbotron">
|
||||
<h1><?php echo $site_name ?></h1>
|
||||
<?php
|
||||
if($isConvo){
|
||||
$saying = $convo[rand(0,count($convo)-1)];
|
||||
echo '<p>' . $clientip . $saying . $serverip . '</p>';
|
||||
}
|
||||
?>
|
||||
|
||||
<nav class="navbar navbar-expand-lg navbar-light bg-light">
|
||||
<?php
|
||||
foreach($nav_names as $index=>$name){
|
||||
echo '<a class="navbar-brand" href="' . $nav_links[$index] . '">'
|
||||
. $name . '</a>';
|
||||
}
|
||||
?>
|
||||
</nav>
|
||||
|
||||
|
||||
</div>
|
||||
</header>
|
14
www/include.php
Normal file
14
www/include.php
Normal file
@ -0,0 +1,14 @@
|
||||
<?php
|
||||
$p = $_SERVER['DOCUMENT_ROOT'];
|
||||
$p .= "/var/config.php";
|
||||
include_once($p);
|
||||
?>
|
||||
|
||||
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
|
||||
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script>
|
||||
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" crossorigin="anonymous"></script>
|
||||
<script src="../www/js/progressbar.min.js"></script>
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/1.10.21/css/jquery.dataTables.css">
|
||||
<script type="text/javascript" charset="utf8" src="https://cdn.datatables.net/1.10.21/js/jquery.dataTables.js"></script>
|
Loading…
Reference in New Issue
Block a user