PHPinfoil Switch

From GameBrew
PHPinfoil
Switch-logo.png
General
AuthorTheyKilledKenny
TypeGame Installer Companion
Version0.2
LicenseMixed
Last Updated2021/06/07
Links
Download
Website
Source

Simple PHP, one file, no database, no external library to serve your backups and eshop games to Tinfoil and DBI.

This was intended to be a lightlight, portable and fast PHP solution to create a Tinfoil repository for installing backups without cables. While similar projects exist, they lack the ability to manage a folder structure, which for some archives can also be articulated.

Moreover, there was no need to incorporate external services like GDrive or similar platforms. If you want to use GDrive or other external link, please check other more feature rich, projects like PHP Tinfoil Server.

Features

  • Cycles through all the files and folders in the given path and creates the json file to be provided to Tinfoil.
  • The first run it creates a json index cache file (write permission is needed), to avoid rescan all the files. The following times if the cache file exists this is provided, otherwise a new file is created.
  • Call the PHPinfoil.php with ?reset to delete and recreate the cache file.
  • No Database Needed.

User guide

How to use

  • Put all your games in a folder under the path served by your php webserver, they can be divided into subfolders.
  • Copy the PHPinfoil.php file to a folder (also the same folder of games) on the same http server, reachable by http clients.
  • Check that all your games have [TitleID] in the filename or Tinfoil won't show it in the list.
  • Configure the parameters in PHPinfoil.php accordingly to your setup.

Warning:

Parameters

At the beginning of the PHP file you will find some options to set for your setup

PHP:

//http Document root, This should be ok as is
$rootFolder = $_SERVER['DOCUMENT_ROOT'] . "/";

//folder where the nsp files are stored
$Folder = "games";

//Writable folder to hold the cache file
$cacheFolder = "cache/";

//Cache file name
$cacheFile = "mycache";

//Extentions to check
$arrExtensions = ['nsp','xci','nsz','xcz'];

// false = json output for Tinfoil, true = html output for Tinfoil and DBI
$DBI = true;

Example:

Change the assumptions below to match your case:

  • Assuming your http server is serving at http://1.2.3.4:8080/
  • Assuming the games are in /data/games folder of your http server. so they can be downloaded from
    • http://1.2.3.4:8080/data/games/file[0100AD8015550000].nsp
    • or subfolders like
    • http://1.2.3.4:8080/data/games/mybackup/file[0100AD8015550000].nsp
  • Assuming you put this php file in /php so can be reached at http://1.2.3.4:8080/php/index.php
  • Assuming you have write permission on the /cache folder.
  • Assuming you want to list nsp, xci, nsz and xcz file types.

Set parameters with this values:

 $rootFolder = $_SERVER['DOCUMENT_ROOT'] . "/";
 $Folder = "data/games";
 $cacheFolder = "cache/";
 $cacheFile = "mycache.json";
 $arrExtensions = ['nsp','xci','nsz','xcz'];

in Tinfoil set a location to http://1.2.3.4:8080/php/

(the belows are quick examples, not intended for production environment)

Quick examples

Setup a Raspberry Pi and a USB HDD as personal shop

To setup a Raspberry Pi and a USB HDD (with your backups) as personal shop:

  1. Follow this link to setup a nginx webserver and php: https://www.raspberrypi.org/documentation/remote-access/web-server/nginx.md
  2. Connect the usb hdd, open a terminal on your raspberry pi.
  3. Type sudo fdisk -l and find /dev/sdx that match your usb drive.
  4. Type sudo ls -l /dev/disk/by-uuid/ and find UUID related to your /dev/sdx usb drive (Needed in step 6).
  5. Type sudo mkdir /var/www/html/php and copy this index.php in the folder /var/www/html/php.
  6. Type sudo mkdir /var/www/html/cache and sudo chmod 777 /var/www/html/cache
  7. Type sudo mkdir /var/www/html/games to create a folder where to mount the usb drive.
  8. Type sudo nano /etc/fstab and add this line at the end UUID=uuid_Found_In_Step2 /var/www/html/games auto uid=pi,gid=pi 0 0
  9. Reboot.
  10. Enter the address http://rpi.address.ip/php/ in Tinfoil as a new location or open in a web browser to check the resulting json.

From your PC

Should work on Windows, Linux and MacOs:

  1. Install PHP 5 or greater for your system from https://www.php.net/downloads.
  2. Copy PHPinfoil.php in the folder where you store your games and rename it in index.php.
  3. Open terminal/cmd/bash/whatever.
  4. Type ipconfig or ifconfig command to get your current ip address.
  5. cd into your game folder.
  6. Type php -S 0.0.0.0:80 to start php webserver.
  7. Set in Tinfoil a location to http://yourIp.at.step.4/
  8. Close and reopen Tinfoil.

Docker

  • Assuming your http server is serving at http://1.2.3.4:8080/
  • Assuming the games are in /data/games folder of your http server.

Run:

docker run -d --rm -e HOST=1.2.3.4:8080 -v /data/games/:/var/www/html/data/games -p 8080:80 sbkg0002/phptinfoil:1

Build the image yourself:

git clone https://github.com/TheyKilledKenny/PHPinfoil.git
cd PHPinfoil
docker build -t phpinfoil .

Changelog

v0.2 2021/06/07

  • Added a bit of css and html to be more readable using standard web browsers if $DBI = true.
    • Added parameters $BackColor, $ForeColor, $AltRowColor to change Background, Text and row colours.
  • Added asort to the file array.
  • A lot slower checking the file dimension, but now should not fail.

v0.1 2021/06/04

  • First release Pre-release.
  • Change the initial variable as your setup, please read readme.md.
  • PHPinfoil.php can be renamed as you need for your setup.

External links

Advertising: