{"id":26261923,"url":"https://github.com/jenkinsci/winstone","last_synced_at":"2025-04-30T09:21:47.121Z","repository":{"id":799373,"uuid":"500014","full_name":"jenkinsci/winstone","owner":"jenkinsci","description":"Patched winstone used in Jenkins","archived":false,"fork":false,"pushed_at":"2025-04-14T11:13:28.000Z","size":1503,"stargazers_count":95,"open_issues_count":5,"forks_count":78,"subscribers_count":103,"default_branch":"master","last_synced_at":"2025-04-14T12:25:41.786Z","etag":null,"topics":["hacktoberfest","java","jetty","jetty-server","servlet-container","winstone"],"latest_commit_sha":null,"homepage":"https://jenkins.io","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jenkinsci.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE-CDDL.txt","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}},"created_at":"2010-02-03T01:53:58.000Z","updated_at":"2025-04-14T11:13:31.000Z","dependencies_parsed_at":"2023-12-06T03:23:25.443Z","dependency_job_id":"661f0272-fa97-4772-9c8f-62d8126589a9","html_url":"https://github.com/jenkinsci/winstone","commit_stats":null,"previous_names":[],"tags_count":106,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jenkinsci%2Fwinstone","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jenkinsci%2Fwinstone/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jenkinsci%2Fwinstone/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jenkinsci%2Fwinstone/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jenkinsci","download_url":"https://codeload.github.com/jenkinsci/winstone/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251674990,"owners_count":21625717,"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","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":["hacktoberfest","java","jetty","jetty-server","servlet-container","winstone"],"created_at":"2025-03-14T00:16:42.157Z","updated_at":"2025-04-30T09:21:47.092Z","avatar_url":"https://github.com/jenkinsci.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# What is Winstone?\nWinstone is a command line interface around Jetty 12.0.x, which implements\nServlet 5.0 (JakartaEE 9/`jakarta.servlet.*`), WebSocket/JSR-356, and HTTP/2 support. It is used as the default\nembedded servlet container in Jenkins (via the `executable` package in the `war` module)\nand can be used by any other web applications that wants to be self-contained.\n\n## History\n\nWinstone was [originally a from-scratch servlet container by Rick Knowles](http://winstone.sourceforge.net/)\nwith a good command line interface. Over time, the upstream development\nhas halted, and it became impractical to maintain a from-scratch servlet\nimplementation on our own. To reduce this maintenance burden, the gut of\nWinstone has been removed and delegated to Jetty, while CLI was preserved, and\nwe called it Winstone 2.0.\n\n## License\nThe license of Winstone inherits its original license by Rick.\n\nAs of v0.8.1, all other files are dual-licensed, under either\nthe Lesser GNU Public License (LGPL) as described in LICENSE-LGPL.txt,\nor the Common Development and Distribution License (CDDL) as described in\nLICENSE-CDDL.txt.\n\nThe goal of dual-licensing is to make Winstone as attractive as possible to\ndistributors of commercial webapps, while ensuring everyone benefits from\nany improvements. The CDDL allows free distribution with any commercial\napplications, while distribution with a GPL licensed webapp is also possible\nunder the LGPL. If you are unclear about which license applies to an\napplication you wish to distribute or sell, please contact me.\n\n## Using Winstone\nTo run a single war file:\n\n    java -jar winstone.jar --warfile=\u003clocation of warfile\u003e (+ other options)\n\nTo run locally exploded web archive:\n\n    java -jar winstone.jar --webroot=\u003clocation of webroot\u003e (+ other options)\n\n\n## Command-line options\n\n    Winstone Servlet Engine, (c) 2003-2006 Rick Knowles\n    Usage: java winstone.jar [--option=value] [--option=value] [etc]\n    \n    Required options: either --webroot OR --warfile\n       --webroot                = set document root folder.\n       --warfile                = set location of warfile to extract from.\n    Other options:\n       --javaHome               = Override the JAVA_HOME variable\n       --config                 = load configuration properties from here. Default is ./winstone.properties\n       --prefix                 = add this prefix to all URLs (eg http://localhost:8080/prefix/resource). Default is none\n       --commonLibFolder        = folder for additional jar files. Default is ./lib\n    \n       --logfile                = redirect log messages to this file\n       --logThrowingLineNo      = show the line no that logged the message (slow). Default is false\n       --logThrowingThread      = show the thread that logged the message. Default is false\n       --debug                  = set the level of Winstone debug msgs (1-9). Default is 5 (INFO level)\n    \n       --httpPort               = set the http listening port. -1 to disable, Default is 8080\n       --httpListenAddress      = set the http listening address. Default is all interfaces\n       --httpUnixDomainPath     = set the http unix domain path. Default is no path\n       --httpKeepAliveTimeout   = how long idle HTTP keep-alive connections are kept around (in ms; default 30000)?\n       --httpsPort              = set the https listening port. -1 to disable, Default is disabled\n       --httpsListenAddress     = set the https listening address. Default is all interfaces\n       --httpsKeepAliveTimeout  = how long idle HTTPS keep-alive connections are kept around (in ms; default 30000)?\n       --httpsKeyStore          = the location of the SSL KeyStore file. Default is ./winstone.ks\n       --httpsKeyStorePassword  = the password for the SSL KeyStore file. Default is null\n       --httpsKeyManagerType    = the SSL KeyManagerFactory type (eg SunX509, IbmX509). Default is SunX509\n       --httpsRedirectHttp      = redirect http requests to https (requires both --httpPort and --httpsPort)\n       --http2Port              = set the http2 listening port. -1 to disable, Default is disabled\n       --httpsSniHostCheck      = if the SNI Host name must match when there is an SNI certificate. Check disabled per default\n       --httpsSniRequired       = if a SNI certificate is required. Disabled per default\n       --http2ListenAddress     = set the http2 listening address. Default is all interfaces\n       --excludeProtocols       = set protocol versions to exclude. (comma separated list, use blank quote \" \" to exclude none)\n                                  (default is \"SSL\", \"SSLv2\", \"SSLv2Hello\", \"SSLv3\")\n       --excludeCipherSuites    = set the ciphers to exclude (comma separated, use blank quote \" \" to exclude none) (default is \n                               // Exclude weak / insecure ciphers \n                               \"^.*_(MD5|SHA|SHA1)$\", \n                               // Exclude ciphers that don't support forward secrecy \n                               \"^TLS_RSA_.*$\", \n                               // The following exclusions are present to cleanup known bad cipher \n                               // suites that may be accidentally included via include patterns. \n                               // The default enabled cipher list in Java will not include these \n                               // (but they are available in the supported list). \n                               \"^SSL_.*$\", \n                               \"^.*_NULL_.*$\", \n                               \"^.*_anon_.*$\" \n       --controlPort            = set the shutdown/control port. -1 to disable, Default disabled\n    \n       --compression            = set the compression scheme (gzip or none to disable compression). Default is gzip.\n       --sessionTimeout         = set the http session timeout value in minutes. Default to what webapp specifies, and then to 60 minutes\n       --sessionEviction        = set the session eviction timeout for idle sessions in seconds. Default value is 180. -1 never evict, 0 evict on exit\n       --mimeTypes=ARG          = define additional MIME type mappings. ARG would be EXT=MIMETYPE:EXT=MIMETYPE:...\n                                  (e.g., xls=application/vnd.ms-excel:wmf=application/x-msmetafile)\n       --requestHeaderSize=N    = set the maximum size in bytes of the request header. Default is 8192.\n       --responseHeaderSize=N   = set the maximum size in bytes of the response header. Default is 8192.\n       --maxParamCount=N        = set the max number of parameters allowed in a form submission to protect\n                                  against hash DoS attack (oCERT #2011-003). Default is 10000.\n       --useJmx                 = Enable Jetty Jmx\n       --qtpMaxThreadsCount     = max threads number when using Jetty Queued Thread Pool\n       --jettyAcceptorsCount    = Jetty Acceptors number\n       --jettySelectorsCount    = Jetty Selectors number\n       --usage / --help         = show this message\n     Security options:\n       --realmClassName               = Set the realm class to use for user authentication. Defaults to ArgumentsRealm class\n    \n       --argumentsRealm.passwd.\u003cuser\u003e = Password for user \u003cuser\u003e. Only valid for the ArgumentsRealm realm class\n       --argumentsRealm.roles.\u003cuser\u003e  = Roles for user \u003cuser\u003e (comma separated). Only valid for the ArgumentsRealm realm class\n    \n       --fileRealm.configFile         = File containing users/passwds/roles. Only valid for the FileRealm realm class\n    \n     Access logging:\n       --accessLoggerClassName        = Set the access logger class to use for user authentication. Defaults to disabled\n       --simpleAccessLogger.format    = The log format to use. Supports combined/common/resin/custom (SimpleAccessLogger only)\n       --simpleAccessLogger.file      = The location pattern for the log file(SimpleAccessLogger only)\n\n## Configuration file\nYou don't really need a config file, but sometimes it's handy to\nbe able to use the same settings each time without running through\nthe command history.\n\nWinstone looks for a config file `winstone.properties` in the current directory\n(or in the location specified with `--config`) at startup. It loads\nthe properties in this file, overrides them with any supplied command\nline properties, and then starts itself.\n\nThis is just intended as a handy feature for people who want to cache\nregular startup options, rather than using batch files.\n\n## Deployment choices\nThe *simplest way* to use winstone is with a single webapp. To do this,\njust supply the warfile or webroot directory as an argument:\n\n* `java -jar winstone.jar \u003cwebroot or warfile\u003e`, (this method auto-detects the type) or\n* `java -jar winstone.jar --webroot=\u003cwebroot\u003e`, or\n* `java -jar winstone.jar --warfile=\u003cwarfile\u003e`\n\n## Development\nIf you have some unit test failures you may add an interface/ip alias such\n\n``` sudo ifconfig lo0 alias 127.0.0.2 ```\n\n## Changelog\n\nSee [GitHub releases](https://github.com/jenkinsci/winstone/releases),\nor for older versions [this page](CHANGELOG.md).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjenkinsci%2Fwinstone","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjenkinsci%2Fwinstone","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjenkinsci%2Fwinstone/lists"}