NUT is the simplest way to install over the network. It is a piece of software that will serve your NSP's from your PC to your switch over the network, or through USB. All NSP's must have "[titleid]" in the file name to be indexed by NUT to show up in "New Games", "New DLC", and "New Updates".
You can download NUT at https://github.com/blawar/nut/.
Tinfoil downloads the html (or json) and parses out the links. Tinfoil supports relative paths, and absolute if you want to link to a different server, or even another device such as your microSD card.
Tinfoil is known to work with Windows IIS, Apache, and Nginx. Though it should work with any HTTP server that supports ranged requests.
Headers Sent
Tinfoil will send a few custom headers when requesting a directory only (not files):
Theme Hash
The user's current Tinfoil theme hash is sent via "Theme: XXXXXXXXXXXXXXX".
Host Signature
A signature of the request Url scheme and hostname is sent via "HAUTH: XXXXXXXXXXXXXX". This value is unique to your domain, and helps prevent forged requests. Simply verify that the client always sends the correct value. Do not share this value.
Host Signature
A signature of the entire request Url is sent via "UAUTH: XXXXXXXXXXXXXX". This value is unique to your domain, and helps prevent forged requests. Simply verify that the client always sends the correct value. Do not share this value.
User Fingerprint
A unique user fingerprint is sent via "UID: XXXXXXXXXXXXXX".
User Language
Tinfoil's current language setting is set via "Language: XXXXXXXXXXXXXX".
Tinfoil Version
The client's Tinfoil version is sent via "Version: 7.00".
Basic Directory Serving
Just enable directory listing on your web server, and Tinfoil will automatically parse the links. Your web server will automatically generate the html!
Authorization
Basic Auth
Basic HTTP authentication is supported, to prevent unauthorized users from accessing your files.
Client Certificate Auth
A custom client certificate may be specified with a custom index file.
Tinfoil is known to work with Windows IIS FTP server, and FileZilla. Though it works with many more servers.
Tinfoil supports SMB / Windows File Shares.
All google drive links use the gdrive: scheme within Tinfoil, however there are three different modes with different priority levels.
This requires a 1Fichier account. Generate a 1F api key in your 1F account settings, then input this API key in Tinfoil's options screen (case sensitive).
Accessing your private 1F files
Go to file browser and add a new location: protocol is 1F, leave everything else the same.
This will only list files and directories associated with your 1F account.
Public 1F files
Tinfoil does not currently support listing public 1F directories, however you can generate an index of 1F file links using the following format:
1f:file_id#name.txt
If your filesystem / storage provider has a max file size, tinfoil supports split files using an index.A number in the path changes the file / chunk size. It can be changed at any time.
Example index file entry:
jbod:10000000/sdmc%3A%2Fbah%2Fxaa/sdmc%3A%2Fbah%2Fxab/sdmc%3A%2Fbah%2Fxac/sdmc%3A%2Fbah%2Fxad/sdmc%3A%2Fbah%2Fxae/sdmc%3A%2Fbah%2Fxaf/sdmc%3A%2Fbah%2Fxag/sdmc%3A%2Fbah%2Fxah/sdmc%3A%2Fbah%2Fxai/4036670/sdmc%3A%2Fbah%2Fxaj#filename.zip
The first number is the size of the following chunks. The chunk size can be changed at anytime, and is often done so for the last chunk since it is often smaller. The chunks are urlencoded and seperated by forward slashes.
Embedding files within files with offsets (JBOD)
jbod supports offsets (in decimal) for embedding data within files (the offset is 100, the size is 1234):
jbod:offset/100/1234/sdmc%3A%2Ftest.file
Encrypting files (JBOD)
jbod supports decrypting files. Only AES-128-ECB is currently supported. 33333333333333333333333333333333 is the encryption key.
jbod:aes128/33333333333333333333333333333333/offset/0/1234/sdmc%3A%2Ftest.file
An example python script to encrypt the files is located here:
encrypt_nsz.py
Packing files (JBOD)
JBOD allows you to pack more than one file into a single file and then reference each file using offsets and sizes.
An example python script to pack multiple files is located here:pack.py
pack.py "c:\nsz\dlc" -o packed.bin --max-size 3000000
URL Format
Both files and folders follow the same format. If specifying by the google file id, use gdrive:AAAAAAAAAAAAAAAAA (notice lack of forward slash). If specifying a path (only works with OAuth) use gdrive:/root/folder1/file.zip
Auth
OAuth
Google Drive OAuth has the highest priority and will always be used if setup. OAuth is the only method to access and list private files. You must set up google drive OAuth within NUT, and then connect Tinfoil to NUT via network or USB to transfer the OAuth token(s).
API Key
Specifying an API key allows you to do authed requests to access private files, however listing files will not work.
Public
This is the least reliable, however it supports listing and downloading public files.
Access TokenYou need an API key to use this. Go to https://www.dropbox.com/developers/apps and create a new app, and then click the "generate access token" button to generate an access token to use with Tinfoil.
Adding the locationYou can edit the locations.conf file directly by adding an entry for dropbox://token:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX@api.dropbox.com/ where XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX is your access token.