{"id":37022505,"url":"https://github.com/sniffertine/groovy-web-console","last_synced_at":"2026-01-14T02:41:26.417Z","repository":{"id":57727539,"uuid":"140199599","full_name":"sniffertine/groovy-web-console","owner":"sniffertine","description":"A web-based Groovy console written as a pure Java Servlet","archived":false,"fork":false,"pushed_at":"2018-09-01T22:03:50.000Z","size":438,"stargazers_count":1,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2023-07-28T00:14:48.502Z","etag":null,"topics":["devtools","diagnostics","filter","groovy","java","servlet"],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sniffertine.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":"2018-07-08T20:16:42.000Z","updated_at":"2018-09-24T07:08:36.000Z","dependencies_parsed_at":"2022-09-26T21:51:27.916Z","dependency_job_id":null,"html_url":"https://github.com/sniffertine/groovy-web-console","commit_stats":null,"previous_names":[],"tags_count":2,"template":null,"template_full_name":null,"purl":"pkg:github/sniffertine/groovy-web-console","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sniffertine%2Fgroovy-web-console","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sniffertine%2Fgroovy-web-console/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sniffertine%2Fgroovy-web-console/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sniffertine%2Fgroovy-web-console/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sniffertine","download_url":"https://codeload.github.com/sniffertine/groovy-web-console/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sniffertine%2Fgroovy-web-console/sbom","scorecard":{"id":834602,"data":{"date":"2025-08-11","repo":{"name":"github.com/sniffertine/groovy-web-console","commit":"f780d1c5bf792c78654a00fb60f8fb1bd4046674"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":2.5,"checks":[{"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":"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":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"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":"Dangerous-Workflow","score":-1,"reason":"no workflows found","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":"Code-Review","score":0,"reason":"Found 0/22 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":"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":"Binary-Artifacts","score":9,"reason":"binaries present in source code","details":["Warn: binary detected: .mvn/wrapper/maven-wrapper.jar:1"],"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":"SAST","score":0,"reason":"no SAST tool detected","details":["Warn: no pull requests merged into dev branch"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"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":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: 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":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"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":"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":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"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":"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":"Vulnerabilities","score":7,"reason":"3 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-rcjj-h6gh-jf3r","Warn: Project is vulnerable to: GHSA-3vqj-43w4-2q58","Warn: Project is vulnerable to: GHSA-4jq9-2xhw-jpx7"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-23T18:38:45.309Z","repository_id":57727539,"created_at":"2025-08-23T18:38:45.309Z","updated_at":"2025-08-23T18:38:45.309Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28408712,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-14T01:52:23.358Z","status":"online","status_checked_at":"2026-01-14T02:00:06.678Z","response_time":107,"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":["devtools","diagnostics","filter","groovy","java","servlet"],"created_at":"2026-01-14T02:41:25.865Z","updated_at":"2026-01-14T02:41:26.405Z","avatar_url":"https://github.com/sniffertine.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# groovy-web-console\nA web-based Groovy console written as a pure Java Servlet or Filter\n\n## General\nAs a developer, it would be very convenient if you could access your\nrunning Java application and write some debug code for runtime analysis.\nThis is especially useful for debugging purposes.\n\nUsing this project enables you to open a web (HTML) based console view\nthat lets you immediately access your runtime environment using\nthe \u003ca href=\"http://groovy-lang.org\" target=\"_blank\"\u003egroovy langauge\u003c/a\u003e.\n\n## Table of Contents\n* **[Demo](#demo)**\n* **[Setup](#setup)**\n* **[Usage](#usage)**\n* **[Configuration](#configuration)**\n\n## Demo\n1. Checkout the code to your local machine\n    ```console\n    git clone https://github.com/sniffertine/groovy-web-console.git\n    cd groovy-web-console\n    ```\n2. Build the project and run the demo webapp\n    ```console\n    ./mvnw clean install org.apache.tomcat.maven:tomcat7-maven-plugin:2.2:run\n    ```\n3. Open your webbrowser here: \u003ca href=\"http://localhost:8080\" target=\"_blank\"\u003ehttp://localhost:8080\u003c/a\u003e\n\n## Setup\nThe setup is very simple, as the code is availabe via the\n\u003ca href=\"https://mvnrepository.com/artifact/ch.baurs/groovy-web-console\" target=\"_blank\"\u003emaven central repository\u003c/a\u003e.\nJust add the dependency to your project pom.xml\n```xml\n\u003cdependency\u003e\n    \u003cgroupId\u003ech.baurs\u003c/groupId\u003e\n    \u003cartifactId\u003egroovy-web-console\u003c/artifactId\u003e\n    \u003cversion\u003e1.0.0\u003c/version\u003e\n\u003c/dependency\u003e\n```\n\n## Usage\nThere are three possible usage scenarios.\n\n### 1. Java Servlet\n\nConfigure the GroovyConsoleServlet in your web.xml\n\n```xml\n\u003cservlet\u003e\n    \u003cservlet-name\u003egroovyConsoleServlet\u003c/servlet-name\u003e\n    \u003cservlet-class\u003ech.baurs.groovyconsole.GroovyConsoleServlet\u003c/servlet-class\u003e\n    \u003cinit-param\u003e\n        \u003cparam-name\u003emappingPath\u003c/param-name\u003e\n        \u003cparam-value\u003e/groovyConsoleServlet\u003c/param-value\u003e\n    \u003c/init-param\u003e\n    \u003cinit-param\u003e\n        \u003cparam-name\u003etheme\u003c/param-name\u003e\n        \u003cparam-value\u003etwilight\u003c/param-value\u003e\n    \u003c/init-param\u003e\n    \u003cinit-param\u003e\n        \u003cparam-name\u003eprompt\u003c/param-name\u003e\n        \u003cparam-value\u003econsole via servlet $\u003e\u003c/param-value\u003e\n    \u003c/init-param\u003e\n\u003c/servlet\u003e\n\n\u003cservlet-mapping\u003e\n    \u003cservlet-name\u003egroovyConsoleServlet\u003c/servlet-name\u003e\n    \u003curl-pattern\u003e/groovyConsoleServlet/*\u003c/url-pattern\u003e\n\u003c/servlet-mapping\u003e\n```\n\n### 2. Java Servlet Filter\n\nConfigure the GroovyConsoleServlet in your web.xml\n\n```xml\n\u003cfilter\u003e\n    \u003cfilter-name\u003egroovyConsoleFilter\u003c/filter-name\u003e\n    \u003cfilter-class\u003ech.baurs.groovyconsole.GroovyConsoleFilter\u003c/filter-class\u003e\n    \u003cinit-param\u003e\n        \u003cparam-name\u003emappingPath\u003c/param-name\u003e\n        \u003cparam-value\u003e/groovyConsoleFilter\u003c/param-value\u003e\n    \u003c/init-param\u003e\n    \u003cinit-param\u003e\n        \u003cparam-name\u003etheme\u003c/param-name\u003e\n        \u003cparam-value\u003etwilight\u003c/param-value\u003e\n    \u003c/init-param\u003e\n    \u003cinit-param\u003e\n        \u003cparam-name\u003eprompt\u003c/param-name\u003e\n        \u003cparam-value\u003econsole via filter $\u003e\u003c/param-value\u003e\n    \u003c/init-param\u003e\n\u003c/filter\u003e\n\n\u003cfilter-mapping\u003e\n    \u003cfilter-name\u003egroovyConsoleFilter\u003c/filter-name\u003e\n    \u003curl-pattern\u003e/groovyConsoleFilter/*\u003c/url-pattern\u003e\n    \u003cdispatcher\u003eREQUEST\u003c/dispatcher\u003e\n\u003c/filter-mapping\u003e\n```\n\n### 3. Your own code\n\nConfigure the Application directly in your onw Java code. Here, I use an empty Servlet to demonstrate.\n\n```xml\n\u003cservlet\u003e\n    \u003cservlet-name\u003emyServlet\u003c/servlet-name\u003e\n    \u003cservlet-class\u003ech.baurs.groovyconsole.testwebapp.MyServlet\u003c/servlet-class\u003e\n\u003c/servlet\u003e\n\n\u003cservlet-mapping\u003e\n    \u003cservlet-name\u003emyServlet\u003c/servlet-name\u003e\n    \u003curl-pattern\u003e/myServlet/*\u003c/url-pattern\u003e\n\u003c/servlet-mapping\u003e\n```\n\n```java\npackage my.web.project.servlet;\n\npublic class MyServlet extends HttpServlet {\n\n    private Application application;\n\n    @Override\n    public void init(ServletConfig config) throws ServletException {\n\n        Configuration configuration = Configuration.builder()\n                .mappingPath(\"/myServlet\")\n                .prompt(\"console directly configured $\u003e\")\n                .theme(\"mdn-like\")\n                .build();\n\n        application = new Application(configuration);\n    }\n\n    @Override\n    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {\n        application.handle(req, resp);\n    }\n}\n\n```\n\n## Configuration\n\nThe Groovy Console Application has a number of configuration parameters available for customization.\nYou can configure most of the parameters in two ways:\n\nA) Through direct configuration using the ```Configuration.builder()``` before initializing the ```ch.baurs.groovyconsole.Application```\n\nB) As ```init-param``` when using the built-in ```GroovyConsoleFilter``` or ```GroovyConsoleServlet```.\n\n| config param                  | available as init-param (web.xml)        | description\n| ---                           | ---                                       | ---\n| contextPath                   | no _(taken from ```ServletContext```)_    | The contextPath of the web application the groovy-web-console is part of. \u003cbr\u003e:bulb: see \u003ca target=\"_blank\" href=\"https://javaee.github.io/javaee-spec/javadocs/javax/servlet/ServletContext.html#getContextPath--\"\u003eServletContext#getContextPath\u003c/a\u003e \u003cbr\u003e\u003cbr\u003e**default value:** \u0026lt;empty string\u0026gt;\n| mappingPath                   | yes                                       | The path below _contextPath_ were the groovy-web-console is mapped to. \u003cbr\u003eThis value should correspond to the ```\u003curl-pattern\u003e``` in your ```\u003cservlet-mapping\u003e``` section of the _web.xml_ file.\u003cbr\u003e:bulb: see \u003ca target=\"_blank\" href=\"http://tutorials.jenkov.com/java-servlets/web-xml.html#configuration\"\u003ehttp://tutorials.jenkov.com/java-servlets/web-xml.html#configuration\u003c/a\u003e \u003cbr\u003e\u003cbr\u003e**default value:** /groovyWebConsole\n| theme                         | yes                                       | The codemirror theme to be used for console text formatting. \u003cbr\u003e:bulb: see \u003ca target=\"_blank\" href=\"https://codemirror.net/demo/theme.html#vibrant-ink\"\u003ehttps://codemirror.net/demo/theme.html#vibrant-ink\u003c/a\u003e  \u003cbr\u003e\u003cbr\u003e**default value:** vibrant-ink\n| prompt                        | yes                                       | The prompt text of the console. \u003cbr\u003e\u003cbr\u003e**default value:** gc$\n| sessionInactiveInterval       | yes                                       | The number of seconds of inactivity before the session times out.\u003cbr\u003e:bulb: see \u003ca target=\"_blank\" href=\"https://javaee.github.io/javaee-spec/javadocs/javax/servlet/http/HttpSession.html#setMaxInactiveInterval-int-\"\u003ehttps://javaee.github.io/javaee-spec/javadocs/javax/servlet/http/HttpSession.html#setMaxInactiveInterval-int-\u003c/a\u003e. \u003cbr\u003e\u003cbr\u003e**default value:** 86400 ( = 24 hours)\n| characterEncoding             | yes                                       | The charset to be used. \u003cbr\u003e\u003cbr\u003e**default value:** UTF-8\n| inlineAssets                  | yes                                       | Defines if assets (js, css) should be inlined in the html. \u003cbr\u003e\u003cbr\u003e**default value:** ```false```\n| ipAuth                        | yes                                       | Enables access restriction by remote IP address. The value can be a regular expression.\u003cbr\u003e:bulb: see \u003ca target=\"_blank\" href=\"https://javaee.github.io/javaee-spec/javadocs/javax/servlet/ServletRequest.html#getRemoteAddr--\"\u003ehttps://javaee.github.io/javaee-spec/javadocs/javax/servlet/ServletRequest.html#getRemoteAddr--\u003c/a\u003e. \u003cbr\u003e\u003cbr\u003e**default value:** ```null```\n| envAuth                       | yes                                       | Enables access restriction by environment variable. The value must be in the form ```key=value``` \u003cbr\u003eThis requires ```System.getProperty(\"key\")``` to be equal to ```value```. \u003cbr\u003e\u003cbr\u003e**default value:** ```null```\n\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsniffertine%2Fgroovy-web-console","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsniffertine%2Fgroovy-web-console","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsniffertine%2Fgroovy-web-console/lists"}