{"id":20640676,"url":"https://github.com/rhpvorderman/gzip_static","last_synced_at":"2025-08-25T07:12:12.418Z","repository":{"id":46247333,"uuid":"419598612","full_name":"rhpvorderman/gzip_static","owner":"rhpvorderman","description":"Compress your static website with gzip for faster serving with NGiNX's gzip_static on.","archived":false,"fork":false,"pushed_at":"2021-11-04T11:00:05.000Z","size":423,"stargazers_count":0,"open_issues_count":0,"forks_count":2,"subscribers_count":1,"default_branch":"develop","last_synced_at":"2025-07-15T23:01:10.427Z","etag":null,"topics":["checksum","compression","gzip","idempotent","precompress","static","static-site","zopfli"],"latest_commit_sha":null,"homepage":"","language":"Python","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/rhpvorderman.png","metadata":{"files":{"readme":"README.rst","changelog":"CHANGELOG.rst","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":"2021-10-21T05:54:40.000Z","updated_at":"2021-11-04T11:00:08.000Z","dependencies_parsed_at":"2022-09-11T10:11:49.594Z","dependency_job_id":null,"html_url":"https://github.com/rhpvorderman/gzip_static","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/rhpvorderman/gzip_static","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rhpvorderman%2Fgzip_static","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rhpvorderman%2Fgzip_static/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rhpvorderman%2Fgzip_static/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rhpvorderman%2Fgzip_static/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rhpvorderman","download_url":"https://codeload.github.com/rhpvorderman/gzip_static/tar.gz/refs/heads/develop","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rhpvorderman%2Fgzip_static/sbom","scorecard":{"id":774469,"data":{"date":"2025-08-11","repo":{"name":"github.com/rhpvorderman/gzip_static","commit":"528468c977b1bbcfc97fe9d06f994a7512bdb4c0"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3.4,"checks":[{"name":"Code-Review","score":0,"reason":"Found 0/11 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/ci.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:38: update your workflow using https://app.stepsecurity.io/secureworkflow/rhpvorderman/gzip_static/ci.yml/develop?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:40: update your workflow using https://app.stepsecurity.io/secureworkflow/rhpvorderman/gzip_static/ci.yml/develop?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:67: update your workflow using https://app.stepsecurity.io/secureworkflow/rhpvorderman/gzip_static/ci.yml/develop?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:69: update your workflow using https://app.stepsecurity.io/secureworkflow/rhpvorderman/gzip_static/ci.yml/develop?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ci.yml:77: update your workflow using https://app.stepsecurity.io/secureworkflow/rhpvorderman/gzip_static/ci.yml/develop?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:84: update your workflow using https://app.stepsecurity.io/secureworkflow/rhpvorderman/gzip_static/ci.yml/develop?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:86: update your workflow using https://app.stepsecurity.io/secureworkflow/rhpvorderman/gzip_static/ci.yml/develop?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:91: update your workflow using https://app.stepsecurity.io/secureworkflow/rhpvorderman/gzip_static/ci.yml/develop?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:19: update your workflow using https://app.stepsecurity.io/secureworkflow/rhpvorderman/gzip_static/ci.yml/develop?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:21: update your workflow using https://app.stepsecurity.io/secureworkflow/rhpvorderman/gzip_static/ci.yml/develop?enable=pin","Warn: pipCommand not pinned by hash: .github/workflows/ci.yml:26","Warn: pipCommand not pinned by hash: .github/workflows/ci.yml:45","Warn: pipCommand not pinned by hash: .github/workflows/ci.yml:74","Warn: pipCommand not pinned by hash: .github/workflows/ci.yml:89","Info:   0 out of   9 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   1 third-party GitHubAction dependencies pinned","Info:   0 out of   4 pipCommand dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: GNU General Public License v3.0: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Vulnerabilities","score":6,"reason":"4 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: PYSEC-2013-22 / GHSA-27x4-j476-jp5f","Warn: Project is vulnerable to: PYSEC-2025-49 / GHSA-5rjg-fvgr-3xxf","Warn: Project is vulnerable to: GHSA-cx63-2mw6-8hw5","Warn: Project is vulnerable to: PYSEC-2022-43012 / GHSA-r9hx-vwmv-q579"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 22 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-23T03:10:06.210Z","repository_id":46247333,"created_at":"2025-08-23T03:10:06.210Z","updated_at":"2025-08-23T03:10:06.210Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":272021227,"owners_count":24859978,"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-25T02:00:12.092Z","response_time":1107,"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":["checksum","compression","gzip","idempotent","precompress","static","static-site","zopfli"],"created_at":"2024-11-16T15:30:32.930Z","updated_at":"2025-08-25T07:12:12.382Z","avatar_url":"https://github.com/rhpvorderman.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":".. image:: https://img.shields.io/pypi/v/gzip_static.svg\n  :target: https://pypi.org/project/gzip_static/\n  :alt:\n\n.. image:: https://img.shields.io/pypi/pyversions/gzip_static.svg\n  :target: https://pypi.org/project/gzip_static/\n  :alt:\n\n.. image:: https://img.shields.io/pypi/l/gzip_static.svg\n  :target: https://github.com/LUMC/isal/blob/main/LICENSE\n  :alt:\n\n.. image:: https://codecov.io/gh/rhpvorderman/gzip_static/branch/main/graph/badge.svg?token=NFFZIBF1ZA\n  :target: https://codecov.io/gh/rhpvorderman/gzip_static\n\n.. image:: https://readthedocs.org/projects/gzip_static/badge\n   :target: https://gzip_static.readthedocs.io\n   :alt:\n\n\ngzip_static\n===========\n\nCompress your static website or website's static assets with gzip for faster\nserving with `nginx \u003chttps://nginx.org\u003e`_'s `gzip_static\n\u003chttps://nginx.org/en/docs/http/ngx_http_gzip_static_module.html\u003e`_ module.\n\nNginx does not perform checks on the served gzip to determine if it is out of\ndate. This program was created to automate the checks and compression of the\nstatic files at the website's build time.\n\nFeatures\n--------\n\n+ Finds all static files in a directory and its subdirectories automatically\n  based on an `extensions file \u003csrc/gzip_static/extensions.txt\u003e`_ which can be\n  customized.\n+ `Idempotent \u003chttps://en.wikipedia.org/wiki/Idempotence\u003e`_. Only compresses\n  files that have not been compressed yet or are changed. Can therefore be used with\n  configuration management systems such as `Ansible \u003chttps://www.ansible.com/\u003e`_.\n+ Guards against serving outdated gzips\n\n  + Gzip content is checked with a checksum to verify that a file has changed.\n  + Has a ``--remove-orphans`` option to remove gzips for which the source\n    static file is no longer available.\n\n+ The created gzip files inherited filesystem attributes from the source static\n  files such as the mode and the last modified time.\n+ Works on any machine with Python 3.6 or higher installed. It does not depend\n  on other packages for its core functionally.\n+ Zopfli compression is supported when `zopfli \u003chttps://pypi.org/project/zopfli\u003e`_\n  is installed.\n+ Can be used as a library in other projects and has a `fully documented API\n  \u003chttps://gzip-static.readthedocs.io/en/latest/#module-gzip_static\u003e`_.\n+ Optimized for checksumming small gzip file contents. Rerunning gzip_static on\n  an already compressed website is very quick.\n\nQuickstart\n----------\n\nInstall gzip_static with ``pip install gzip_static`` or ``pip install --user\ngzip_static``. For more installation options and options to enable more\nfunctionally such as zopfli and better speed, checkout `the installation\ndocumentation \u003chttps://gzip-static.readthedocs.io/en/latest/#installation\u003e`_.\n\n+ To compress all static files in a directory:\n  ``gzip-static /var/www/my_example_website/``\n+ To check if all gzip files are up to date and recompress gzip files for which\n  the source has changed:\n  ``gzip-static /var/www/my_example_website/`` (Same command due to idempotency)\n+ To check if all gzip files are up to date, recompress changed ones and remove\n  gzip files for which a source static file is no longer present:\n  ``gzip-static --remove-orphans /var/www/my_example_website/``\n+ To check for orphaned files only: ``gzip-static-find-orphans /var/www/my_example_website/``\n\nFor a more extended usage and more options use ``gzip-static --help`` or\ncheckout `the usage documentation\n\u003chttps://gzip-static.readthedocs.io/en/latest/#usage\u003e`_.\n\nContributing\n------------\nFor bug reports and feature requests please use the `github issue tracker\n\u003chttps://github.com/rhpvorderman/gzip_static/issues\u003e`_. Pull requests\nare also welcome.\n\nPlease note that brotli support is currently not in this project's scope.\nThis may change. For more information read\n`here \u003chttps://gzip-static.readthedocs.io/en/latest/#no-brotli-support\u003e`_.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frhpvorderman%2Fgzip_static","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frhpvorderman%2Fgzip_static","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frhpvorderman%2Fgzip_static/lists"}