mirror of
				https://github.com/Clortox/SimpleFileRepository.git
				synced 2025-07-17 12:32:12 +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…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user