The backend behind shitty.download.
Make a file called config.json, with the following properties:
{
"logo": {
"main": "poop.png",
"px32": "poop32.png",
"px96": "poop96.png",
"px192": "poop192.png",
"px512": "poop512.png"
},
"name": "shitty.download",
"app_name": "Shitty",
"name_color": "#a5673f",
"background_color": "#dadada",
"title": "lemmmy's file host lies here",
"disclaimer": "for dmca etc., contact drew at lemmmy dot pw",
"password": [
""
],
"imagePath": "/path/to/images",
"url": "https://your.host/",
"listen": "3000",
"fileLength": 4,
"pasteThemePath": "https://atom.github.io/highlights/examples/atom-dark.css",
"oldPasteThemeCompatibility": true,
"sessionSecret": "",
"uploadDeleteLink": true,
"imageFiles": ["jpeg","jpg","png","gif"],
"audioFiles": ["mp3","wav","flac","ogg"],
"videoFiles": ["mp4","webm"],
"languagePackages": [
"language-lua"
],
"rawPasteAgents": "^(?:computercraft|curl|wget)"
}logo- Filenames of your logos images. Make sure to put them in /public.name- Name of your file host.app_name- Shortened name of your file host used in app.name_color- Color of your file host's name.background_color- Color of your host's background.title- Title on the homepage.disclaimer- Message used to supply important info about takedowns/dmcas, or a disclaimer.password- An array of sha256 hashes of valid passwords. Calculate withecho -n 'password' | sha256sumimagePath- The absolute path to your image storage directory.url- The full URL of your host to be prepended to image paths. Trailing slash required.listenThe port or unix sock to listen to. Can also be options object as defined herefileLengthAmount of characters in generated filenames. Default is 4.pasteThemePathLocation of a theme for the paste syntax highlighter.oldPasteThemeCompatibilityMode that enables compatibility with older Atom themes. NOTE: For the time being, you must runsed -i "s/atom-text-editor/.editor/g" stylesheet.cssif you aren't using an older atom themesessionSecretSecret for session storage. Should be a secure random string.uploadDeleteLinkIf set totrue, files uploaded via the API will contain a deletion link. Else, the password or logging in will be required to delete files.imageFilesArray of file extentions that shitty will treat as images.audioFilesArray of file extentions that shitty will treat as audio.videoFilesArray of file extentions that shitty will treat as video.languagePackagesArray of npm package names containing atom language grammars.rawPasteAgentsRegular expression (case-insensitive) matching agents to return raw pastes for (on/pasteand/edit). Usenullto disable.
You can implement your own custom naming function by creating a file called custom-name.js that exports a function that returns a filename. Here is an example:
const _ = require("lodash");
const fs = require("fs");
const nouns = fs.readFileSync("nouns.txt").toString().split("\n");
module.exports = () => {
const noun = _.sample(nouns);
return (noun.match(/^[aeiou]/i) ? "an-" : "a-") + noun;
};More examples for custom naming functions can be found in the examples directory.
- Ensure that the user you run the shitty.dl process as has write permissions to
imagePath. - Make sure your paste theme has the same scheme as your site - i.e. if your site is HTTPS, the theme must be HTTPS too.
- When running shitty.dl it is suggested to set
NODE_ENV=productionenvironmental variable to ensure any errors that might happen are not passed on in detail to end user.