{"id":25526500,"url":"https://github.com/capacitorset/hotspot","last_synced_at":"2025-08-01T03:05:49.493Z","repository":{"id":71258344,"uuid":"66314042","full_name":"CapacitorSet/hotspot","owner":"CapacitorSet","description":"A lightweight hotspot+captive solution","archived":false,"fork":false,"pushed_at":"2018-02-24T19:22:26.000Z","size":428,"stargazers_count":3,"open_issues_count":1,"forks_count":3,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-06-17T08:46:07.308Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"HTML","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/CapacitorSet.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2016-08-22T22:53:54.000Z","updated_at":"2020-02-03T15:50:43.000Z","dependencies_parsed_at":null,"dependency_job_id":"34b70ccd-b6fb-4b08-ba91-b1be1a92a248","html_url":"https://github.com/CapacitorSet/hotspot","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/CapacitorSet/hotspot","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CapacitorSet%2Fhotspot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CapacitorSet%2Fhotspot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CapacitorSet%2Fhotspot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CapacitorSet%2Fhotspot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/CapacitorSet","download_url":"https://codeload.github.com/CapacitorSet/hotspot/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CapacitorSet%2Fhotspot/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":268162385,"owners_count":24205701,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-01T02:00:08.611Z","response_time":67,"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":"2025-02-19T21:18:41.037Z","updated_at":"2025-08-01T03:05:49.438Z","avatar_url":"https://github.com/CapacitorSet.png","language":"HTML","readme":"[Untitled] - a lightweight hotspot+captive solution\n=================================================\n\n[Untitled] is a lightweight and simple solution to provide wireless internet access with an integrated captive portal.\n\nInstalling\n==========\n\nTo create an installer, run the following commands:\n\n    sudo apt-get install nodejs\n    node createinstaller.js\n    \n\u003eBefore creating the installer, please edit `profiles.json` to ensure that the whitelist and the blacklist fit your needs. The `whitelist` profile contains the global whitelist, and the `blacklist` profile contains the global blacklist, both of which are applied to every user. If you don't need them, simply replace the default whitelist with `\"whitelist\": []` and the default blacklist with `\"blacklist\": []`.\n    \nThis will create a standalone installer named `install.sh`, and an uninstaller named `uninstall.sh`. To install [Untitled] on a machine, copy `install.sh` to the target machine and then run\n\n    sudo bash install.sh\n    \n\u003eSuperuser privileges are needed in order to install packages and to create files in `/usr/bin`.\n\nUninstalling\n============\n\nThe uninstaller, `uninstall.sh` is created along with the installer. To uninstall [Untitled], simply copy `uninstall.sh` to the device and execute it:\n\n    sudo bash uninstall.sh\n    \n\nUsing the hotspot\n=================\n\nTo use the program, run \n\n    sudo hotspot configure\n\nand follow the instructions. When you're done, run\n\n    sudo hotspot start\n\nThis will create an hotspot with very basic functionality (all requests are redirected to the captive portal, which is hosted on the same machine as the hotspot on port `80`).\n\u003eIf you wish to use the integrated captive portal, run `sudo nodejs /usr/bin/server.js`. For more information, check out the chapter \"Using the captive portal\".\n\nTo stop the hotspot, run\n\n    sudo hotspot stop\n\nUsing the portal\n================\n\n[Untitled] features a simple captive portal written in node.js, as an example. It uses `profiles.json` as a list of profiles, each defining a set of allowed hosts and ports, for example:\n\n    {\n    \t\"whitelist\": [\n    \t\t{\n    \t\t\t\"host\": \"wikipedia.org\",\n    \t\t\t\"port\": \"80\"\n    \t\t},\n    \t\t{\n    \t\t\t\"host\": \"wikipedia.org\",\n    \t\t\t\"port\": \"443\"\n    \t\t}\n    \t],\n    \t\"afilini-goes-onn\": [\n    \t\t{\n    \t\t\t\"host\": \"the-beat-goes-onn.tumblr.com\",\n    \t\t\t\"port\": \"80\"\n    \t\t},\n    \t\t{\n    \t\t\t\"host\": \"afilini.tumblr.com\",\n    \t\t\t\"port\": \"80\"\n    \t\t},\n    \t\t{\n    \t\t\t\"host\": \"blog.afilini.com\",\n    \t\t\t\"port\": \"80\"\n    \t\t}\n    \t]\n    }\n    \n\u003eThe example above defines the special profile `whitelist`, representing the global whitelist (see the paragraph \"Installing\"), which allows connections to `wikipedia.org` on ports `80` and `443` (respectively, the default ports for http and https), and the normal profile `afilini-goes-onn`, which unlocks `the-beat-goes-onn.tumblr-com`, `afilini.tumblr.com` and `blog.afilini.com` on port `80`.\n\u003eNote that you can specify either a host, a port, or both.\n\nIssuing tokens\n==============\n\n[Untitled] works using tokens: on connecting, users enter a code, which corresponds to a server-side token. The token allows them to use preset profiles, for a preset duration since they entered the code.    \nTo issue a token, run:\n\n    sudo ./issueToken.js \u003cprofile\u003e [\u003cduration\u003e]\n\n\u003eThe square brackets around `\u003cduration\u003e` mean the duration can be omitted.\n\u003eNote that although \"infinite-lasting\" tokens are supported, they haven't been tested yet.\n\nThe program will output something like this:\n\n    Code: ielghmlb\n    Profile: afilini-goes-onn\n    Valid for 1440 minutes (24 hours, 1 days)\n\nThis means the user will need to enter the code `ielghmlb` in the captive portal. Upon doing so, the profile `afilini-goes-onn` will be unlocked for 24 hours.","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcapacitorset%2Fhotspot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcapacitorset%2Fhotspot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcapacitorset%2Fhotspot/lists"}