From 43a022aa665d2f92b10114d234be145c5a5a2556 Mon Sep 17 00:00:00 2001 From: Bogdan Vlaicu Date: Wed, 1 Apr 2020 18:01:43 -0400 Subject: [PATCH] Initial version, including the PHP add-on --- CODE_OF_CONDUCT.md | 74 ++++++++++++++++++++ CONTRIBUTING.md | 29 ++++++++ LICENSE.md | 21 ++++++ README.md | 90 +++++++++++++++++++++++++ php/README.md | 164 +++++++++++++++++++++++++++++++++++++++++++++ php/config.json | 37 ++++++++++ php/index.php | 8 +++ php/logo.png | Bin 0 -> 10288 bytes renovate.json | 11 +++ repository.json | 5 ++ 10 files changed, 439 insertions(+) create mode 100644 CODE_OF_CONDUCT.md create mode 100644 CONTRIBUTING.md create mode 100644 LICENSE.md create mode 100644 README.md create mode 100644 php/README.md create mode 100644 php/config.json create mode 100644 php/index.php create mode 100644 php/logo.png create mode 100644 renovate.json create mode 100644 repository.json diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md new file mode 100644 index 0000000..0ac232b --- /dev/null +++ b/CODE_OF_CONDUCT.md @@ -0,0 +1,74 @@ +# Code of conduct + +## Our pledge + +In the interest of fostering an open and welcoming environment, we as +contributors and maintainers pledge to making participation in our project and +our community a harassment-free experience for everyone, regardless of age, body +size, disability, ethnicity, gender identity and expression, level of experience, +nationality, personal appearance, race, religion, or sexual identity and +orientation. + +## Our standards + +Examples of behavior that contributes to creating a positive environment +include: + +- Using welcoming and inclusive language +- Being respectful of differing viewpoints and experiences +- Gracefully accepting constructive criticism +- Focusing on what is best for the community +- Showing empathy towards other community members + +Examples of unacceptable behavior by participants include: + +- The use of sexualized language or imagery and unwelcome sexual attention + or advances +- Trolling, insulting/derogatory comments, and personal or political attacks +- Public or private harassment +- Publishing others' private information, such as a physical or + electronic address, without explicit permission +- Other conduct which could reasonably be considered inappropriate + in a professional setting + +## Our responsibilities + +Project maintainers are responsible for clarifying the standards of acceptable +behavior and are expected to take appropriate and fair corrective action in +response to any instances of unacceptable behavior. + +Project maintainers have the right and responsibility to remove, edit, or +reject comments, commits, code, wiki edits, issues, and other contributions +that are not aligned to this Code of Conduct, or to ban temporarily or +permanently any contributor for other behaviors that they deem inappropriate, +threatening, offensive, or harmful. + +## Scope + +This Code of Conduct applies both within project spaces and in public spaces +when an individual is representing the project or its community. Examples of +representing a project or community include using an official project e-mail +address, posting via an official social media account, or acting as an appointed +representative at an online or offline event. Representation of a project may be +further defined and clarified by project maintainers. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be +reported by contacting the project lead at frenck@addons.community. All +complaints will be reviewed and investigated and will result in a response that +is deemed necessary and appropriate to the circumstances. The project lead is +obligated to maintain confidentiality with regard to the reporter of an incident. +Further details of specific enforcement policies may be posted separately. + +Project maintainers who do not follow or enforce the Code of Conduct in good +faith may face temporary or permanent repercussions as determined by other +members of the project's leadership. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant][homepage], +version 1.4, available at [http://contributor-covenant.org/version/1/4][version] + +[homepage]: http://contributor-covenant.org +[version]: http://contributor-covenant.org/version/1/4/ diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..f2e4bc7 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,29 @@ +# Contributing + +When contributing to this repository, please first discuss the change you wish +to make via issue, email, or any other method with the owners of this repository +before making a change. + +Please note we have a code of conduct, please follow it in all your interactions +with the project. + +## Issues and feature requests + +You've found a bug in the source code, a mistake in the documentation or maybe +you'd like a new feature? You can help us by submitting an issue to our +[GitHub Repository][github]. Before you create an issue, make sure you search +the archive, maybe your question was already answered. + +Even better: You could submit a pull request with a fix / new feature! + +## Pull request process + +1. Search our repository for open or closed [pull requests][prs] that relates + to your submission. You don't want to duplicate effort. + +1. You may merge the pull request in once you have the sign-off of two other + developers, or if you do not have permission to do that, you may request + the second reviewer to merge it for you. + +[github]: https://github.com/bvlaicu/home-assistant-addons/issues +[prs]: https://github.com/bvlaicu/home-assistant-addons/pulls \ No newline at end of file diff --git a/LICENSE.md b/LICENSE.md new file mode 100644 index 0000000..bb9881b --- /dev/null +++ b/LICENSE.md @@ -0,0 +1,21 @@ +# MIT License + +Copyright (c) 2017-2020 Franck Nijhof + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md new file mode 100644 index 0000000..ce73aae --- /dev/null +++ b/README.md @@ -0,0 +1,90 @@ +# Home Assistant Add-ons + +![Project Stage][project-stage-shield] +![Maintenance][maintenance-shield] +[![License][license-shield]](LICENSE.md) + +[![GitLab CI][gitlabci-shield]][gitlabci] +[![Awesome][awesome-shield]][awesome] + +[![Discord][discord-shield]][discord] +[![Community Forum][forum-shield]][forum] + +## About + +Home Assistant allows anyone to create add-on repositories to share their +add-ons for Home Assistant easily. This repository is one of those repositories, +providing extra Home Assistant add-ons for your installation. + +## Installation + +In the Home Assistant add-on store, a possibility to add a repository is provided. + +Use the following URL to add this repository: + +```txt +https://github.com/bvlaicu/home-assistant-addons-repository +``` + +## Add-ons provided by this repository + +### ✓ [PHP][addon-php] + +![Latest Version][adb-version-shield] +![Supports armhf Architecture][adb-armhf-shield] +![Supports armv7 Architecture][adb-armv7-shield] +![Supports aarch64 Architecture][adb-aarch64-shield] +![Supports amd64 Architecture][adb-amd64-shield] +![Supports i386 Architecture][adb-i386-shield] +![Docker Pulls][adb-pulls-shield] + +## Releases + +Releases are based on [Semantic Versioning][semver], and use the format +of ``MAJOR.MINOR.PATCH``. In a nutshell, the version will be incremented +based on the following: + +- ``MAJOR``: Incompatible or major changes. +- ``MINOR``: Backwards-compatible new features and enhancements. +- ``PATCH``: Backwards-compatible bugfixes and package updates. + +## Support + +Got questions? + +You have several options to get them answered: + +- The Home Assistant Community Add-ons [Discord Chat Server][discord] +- The Home Assistant [Community Forum][forum]. +- The Home Assistant [Discord Chat Server][discord-ha]. +- Join the [Reddit subreddit][reddit] in [/r/homeassistant][reddit] + +You could also open an issue here on GitHub. Note, we use a separate +GitHub repository for each add-on. Please ensure you are creating the issue +on the correct GitHub repository matching the add-on. + +## License + +MIT License + +Copyright (c) 2017-2020 Franck Nijhof + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +[addon-php]: https://github.com/bvlaicu/home-assistant-addons-php diff --git a/php/README.md b/php/README.md new file mode 100644 index 0000000..9295a0c --- /dev/null +++ b/php/README.md @@ -0,0 +1,164 @@ +# Home Assistant Community Add-on: PHP + +[![GitHub Release][releases-shield]][releases] +![Project Stage][project-stage-shield] +[![License][license-shield]](LICENSE.md) + +![Supports armhf Architecture][armhf-shield] +![Supports armv7 Architecture][armv7-shield] +![Supports aarch64 Architecture][aarch64-shield] +![Supports amd64 Architecture][amd64-shield] +![Supports i386 Architecture][i386-shield] + +[![GitLab CI][gitlabci-shield]][gitlabci] +![Project Maintenance][maintenance-shield] +[![GitHub Activity][commits-shield]][commits] + +[![Discord][discord-shield]][discord] +[![Community Forum][forum-shield]][forum] + +PHP add-on by Community Hass.io add-ons. + +## About + +This is a PHP add-on for Hass.io. When started, it provides a +PHP server serving web conetnt from the /data persistent volume. + +## Installation + +The installation of this add-on is pretty straightforward and not different in +comparison to installing any other Home Assistant add-on. + +1. Search for the "PHP" add-on in the Supervisor add-on store and install it. +1. Start the "PHP" add-on. +1. Check the logs of the "PHP" add-on to see it in action. + +## Configuration + +PHP add-on configuration: + +```yaml +log_level: info +``` + +### Option: `log_level` + +The `log_level` option controls the level of log output by the addon and can +be changed to be more or less verbose, which might be useful when you are +dealing with an unknown issue. Possible values are: + +- `trace`: Show every detail, like all called internal functions. +- `debug`: Shows detailed debug information. +- `info`: Normal (usually) interesting events. +- `warning`: Exceptional occurrences that are not errors. +- `error`: Runtime errors that do not require immediate action. +- `fatal`: Something went terribly wrong. Add-on becomes unusable. + +Please note that each level automatically includes log messages from a +more severe level, e.g., `debug` also shows `info` messages. By default, +the `log_level` is set to `info`, which is the recommended setting unless +you are troubleshooting. + + +## Changelog & Releases + +This repository keeps a change log using [GitHub's releases][releases] +functionality. The format of the log is based on +[Keep a Changelog][keepchangelog]. + +Releases are based on [Semantic Versioning][semver], and use the format +of ``MAJOR.MINOR.PATCH``. In a nutshell, the version will be incremented +based on the following: + +- ``MAJOR``: Incompatible or major changes. +- ``MINOR``: Backwards-compatible new features and enhancements. +- ``PATCH``: Backwards-compatible bugfixes and package updates. + +## Support + +Got questions? + +You have several options to get them answered: + +- The [Home Assistant Community Add-ons Discord chat server][discord] for add-on + support and feature requests. +- The [Home Assistant Discord chat server][discord-ha] for general Home + Assistant discussions and questions. +- The Home Assistant [Community Forum][forum]. +- Join the [Reddit subreddit][reddit] in [/r/homeassistant][reddit] + +You could also [open an issue here][issue] GitHub. + +## Contributing + +This is an active open-source project. We are always open to people who want to +use the code or contribute to it. + +We have set up a separate document containing our +[contribution guidelines](CONTRIBUTING.md). + +Thank you for being involved! :heart_eyes: + +## Authors & contributors + +The original setup of this repository is by [Bogdan Vlaicu][bvlaicu]. + +For a full list of all authors and contributors, +check [the contributor's page][contributors]. + + +## License + +MIT License + +Copyright (c) 2019-2020 Bogdan Vlaicu + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +[aarch64-shield]: https://img.shields.io/badge/aarch64-yes-green.svg +[amd64-shield]: https://img.shields.io/badge/amd64-yes-green.svg +[armhf-shield]: https://img.shields.io/badge/armhf-yes-green.svg +[armv7-shield]: https://img.shields.io/badge/armv7-yes-green.svg +[commits-shield]: https://img.shields.io/github/commit-activity/y/bvlaicu/addon-php.svg +[commits]: https://github.com/bvlaicu/addon-php/commits/master +[contributors]: https://github.com/bvlaicu/addon-php/graphs/contributors +[discord-ha]: https://discord.gg/c5DvZ4e +[discord-shield]: https://img.shields.io/discord/478094546522079232.svg +[discord]: https://discord.me/hassioaddons +[dockerhub]: https://hub.docker.com/r/hassioaddons/php +[forum-shield]: https://img.shields.io/badge/community-forum-brightgreen.svg +[forum]: https://community.home-assistant.io/t/repository-community-hass-io-add-ons/24705?u=frenck +[frenck]: https://github.com/frenck +[github-sponsors-shield]: https://frenck.dev/wp-content/uploads/2019/12/github_sponsor.png +[github-sponsors]: https://github.com/sponsors/frenck +[gitlabci-shield]: https://gitlab.com/bvlaicu/addon-php/badges/master/pipeline.svg +[gitlabci]: https://gitlab.com/bvlaicu/addon-php/pipelines +[i386-shield]: https://img.shields.io/badge/i386-yes-green.svg +[issue]: https://github.com/bvlaicu/addon-php/issues +[keepchangelog]: http://keepachangelog.com/en/1.0.0/ +[license-shield]: https://img.shields.io/github/license/bvlaicu/addon-php.svg +[maintenance-shield]: https://img.shields.io/maintenance/yes/2020.svg +[patreon-shield]: https://frenck.dev/wp-content/uploads/2019/12/patreon.png +[patreon]: https://www.patreon.com/frenck +[project-stage-shield]: https://img.shields.io/badge/project%20stage-production%20ready-brightgreen.svg +[reddit]: https://reddit.com/r/homeassistant +[releases-shield]: https://img.shields.io/github/release/bvlaicu/addon-php.svg +[releases]: https://github.com/bvlaicu/addon-php/releases +[repository]: https://github.com/hassio-addons/repository +[semver]: http://semver.org/spec/v2.0.0.html diff --git a/php/config.json b/php/config.json new file mode 100644 index 0000000..b1d3ed3 --- /dev/null +++ b/php/config.json @@ -0,0 +1,37 @@ +{ + "name": "PHP", + "version": "0.1.4", + "slug": "php", + "description": "PHP Server add-on for Home Assistant", + "url": "https://github.com/bvlaicu/addon-php", + "startup": "application", + "arch": ["aarch64", "amd64", "armhf", "armv7", "i386"], + "webui": "[PROTO:ssl]://[HOST]:[PORT:80]", + "ingress": true, + "ingress_port": 1337, + "panel_icon": "mdi:chart-areaspline", + "startup": "services", + "homeassistant": "0.92.0b2", + "arch": ["aarch64", "amd64", "armv7", "i386"], + "map": ["share:rw", "ssl"], + "boot": "auto", + "ports": { + "80/tcp": null, + "80/tcp": 8880 + }, + "ports_description": { + "80/tcp": "Web interface (Not required for Ingress)", + "8088/tcp": "PHP server" + }, + "hassio_api": true, + "auth_api": true, + "hassio_role": "default", + "homeassistant_api": false, + "options": { + "log_level": "info" + }, + "schema": { + "log_level": "list(trace|debug|info|notice|warning|error|fatal)" + } +} + diff --git a/php/index.php b/php/index.php new file mode 100644 index 0000000..feb9cfd --- /dev/null +++ b/php/index.php @@ -0,0 +1,8 @@ + + + PHP Test + + + Hello World

'; ?> + + \ No newline at end of file diff --git a/php/logo.png b/php/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..052968ef65da20a2dc84925d03add6cb9da91a7d GIT binary patch literal 10288 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