{"id":20848530,"url":"https://github.com/helloworld017/haesal","last_synced_at":"2026-04-19T23:34:56.505Z","repository":{"id":79440885,"uuid":"46980717","full_name":"HelloWorld017/Haesal","owner":"HelloWorld017","description":"An open-sourced download center project.","archived":false,"fork":false,"pushed_at":"2015-12-28T08:11:51.000Z","size":21779,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-12-28T13:29:36.051Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/HelloWorld017.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2015-11-27T13:06:52.000Z","updated_at":"2015-12-05T08:37:36.000Z","dependencies_parsed_at":"2023-03-22T03:18:53.119Z","dependency_job_id":null,"html_url":"https://github.com/HelloWorld017/Haesal","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/HelloWorld017/Haesal","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HelloWorld017%2FHaesal","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HelloWorld017%2FHaesal/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HelloWorld017%2FHaesal/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HelloWorld017%2FHaesal/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/HelloWorld017","download_url":"https://codeload.github.com/HelloWorld017/Haesal/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HelloWorld017%2FHaesal/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32026776,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-18T20:23:30.271Z","status":"online","status_checked_at":"2026-04-19T02:00:07.110Z","response_time":55,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-18T02:26:27.555Z","updated_at":"2026-04-19T23:34:56.480Z","avatar_url":"https://github.com/HelloWorld017.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Haesal\n![License](https://img.shields.io/badge/license-GPLv3-orange.svg?style=flat-square)\n![Build Status](https://img.shields.io/travis/HelloWorld017/Haesal.svg?style=flat-square)\n![Node](https://img.shields.io/badge/node-v5.1.0-blue.svg?style=flat-square)\n![Haesal Logo](https://github.com/HelloWorld017/Haesal/blob/master/public/resources/images/favicon.png)\n----\nAn open-sourced download center project.\n\n## How to install?\n\n```\n$ git clone https://github.com/HelloWorld017/Haesal.git\n$ npm install\n$ npm start\n```\n\n## How to edit configs?\n\n1. Open ./config/config.custom.js\n\n2. Add your configures.\n\n\n* Don't forget to add {} for sub-options.\n\t```\n\tex) config.github = {};\n\t```\n\n## Documentation\n### Configures\n##### config.folder_name\nThe name of default file which has configs of folders.\n##### config.exclusion_name\nThe name of exclusion file which will be used by blacklist folders.\n##### config.file_ext\nThe extension of file information. If you are using Accessibility Partially (Whitelist), only files which have information file will be shown.\n##### config.resources_directory\nThe directory which contains resources folder.\n##### config.main_directory\nThe directory which contains files which will be downloaded.\n##### config.default_config\nThis will be applied to folders which doesn't have folder information file. (config.folder_name)\n##### config.read_config\nFiles will be read using this setting.\n##### config.wildcard_auto_sep\nIf your file separator (/ or \u0026#92;) in wildcards is different with it of your system, it will be changed automatically.\n##### config.lang\nThe language which will be used in html file. (\u0026lt;html lang=\"en\"\u0026gt;)\n#### config.block\n##### config.block.block_unreachable_files\nIf you turns on this option, users can get files which are blocked by accessibility.\nBut, remember, you should not upload files which must not be downloaded to public.\nSo, I recommend setting this option to false and not putting security-related files into public.\nAlso, this will check folder.hsfin for every files before being downloaded by users.\nThis option will not block folders. So, if you want to turn on this option, please set default accessibility to 0.\n##### config.block.whitelist\nIf the requested file matches more than one wildcard in this list, the file will not be blocked.\n##### config.block.ignore\nIf this option is turned on, this will pretend not to exist for requests of blocked files and send 404 Not Found.\nIf this option is turned off, this will send 403 Forbidden.\n#### config.github\n##### config.github.client_id \u0026 config.github.client_secret\nClient ID and Client Secret for API Call.\n##### config.github.add_link\nIf this option is turned on, a small icon will be added to index which has a link to github repository.\n##### config.github.use_api_key\nIf this option is turned off, this will not use client ID and client Secret.\n#### config.errors\nContains texts for errors.\n\n### Folder Information file\n\n#### Accessibilities\nFolders have 3 accessibility types:\n\n1. 0 : No : It will send just a 403.\n\n2. 1 : Partially (Whitelist) : It will send files which have file information and folders which have folder information.\n\n3. 2 : Yes : It will send all files excepts folder information file.\n\n4. 3 : Negative Partially (Blacklist) : It will send all files and folder excepts which are filtered by exclusion file.\n\n#### Folder types\nFolders have three types:\n\n1. Local : Local directories.\n\n2. Github: Github directories.\n\n3. List : Directories which returns sub-folders as lists.\n\n#### Documentation\n##### accessibility\nAccessibility of inner contents. If you want to protect files by direct url access, please turn on config.block options.\n##### index\nIndex filename of the folder. If you don't want to use index, make it to false. The index will be shown instead of title of the folder.\n##### index-type\nIf you want to interpret the file as markdown, set this \"markdown\". If you want to use html, set this \"html\".\n\nAlso, there is another option. If you are using github folder, setting this as \"github\" will show README.md.\n##### type\nThe type of the folder. There are three options : \"github\", \"list\", \"local\".\n##### github-project, github-author\nIf you are using GithubFolder, you must set this options.\nThe github-project option is name of your repository.\nThe github-author option is name of you or your group.\nFor example, \"github-project\": \"Haesal\", \"github-author\": \"HelloWorld017\".\n\n### File Information file\n\n#### Default config\nDefault of file information files is this :\n```\n{\n\t\"download\": \"{File path}\"\n}\n```\n\n#### File types\nFiles have two types:\n\n1. Local : Local files. (download means path of the file.)\n\n2. Remote : Remote files. (download just means download URL.)\n\n#### Documentation\n##### type\nRepresents the type of your file.\n\"local\" or \"remote\" is available.\n##### download\nIf you're using remote, it must be the download link of your file.\nOtherwise, it must be path of your file.\n\n### Wildcards (Exclusions and Block Whitelist)\n[Look at minimatch documentation](https://github.com/isaacs/minimatch)\n\n## Showcase\nhttp://play.khinenw.tk:3000","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhelloworld017%2Fhaesal","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhelloworld017%2Fhaesal","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhelloworld017%2Fhaesal/lists"}