| Age | Commit message (Collapse) | Author |
|
The internal/cmd/gorankusu now can run using systemd.socket(5).
|
|
|
|
While at it, break the links that point to localhost and email.
|
|
[BREAKING CHANGES]
The git submodule in "_www/wui" has been renamed to "_www/pakakeh_ts".
If you have cloned this project before, you need to rename the sub directory
manually and re-init it.
----
$ mv _www/wui _www/pakakeh_ts
$ git submodule update --init
----
[CHORE]
The linter has been replaced many times, from revive to "go vet", and from
using binary form of fieldalignment and shadow; to use internal command
gocheck that do the same things, which simplify our setup.
[CHORE]
Split the CSS into separate file.
This is allow modifying the CSS without touching the index.html, and may be
used by other HTML files later.
[CHORE]
Fix some broken links in the documentation pages, including link to
Changelog, README, and SPEC.
|
|
The previous Development section now become Links section.
|
|
|
|
Instead of inside the index.html split the CSS so we can modify them
without touching the HTML.
|
|
|
|
|
|
The flag "dev" is boolean that when set will run service in development
mode, watching the adoc and ts files.
The flag "http" is string that set the HTTP listen address.
|
|
|
|
This include updating the git submodule on pakakeh.ts.
|
|
|
|
|
|
Previously, if WithRawBody is true, the Params will not be rendered
and parsed during Run.
This changes makes them Params works along with WithRawBody.
If Params are set it will be rendered along with text area for raw body.
|
|
|
|
If the file in FormInput is binary, the conversion to "FormInput.value"
will fail with an error like "invalid characters in String".
|
|
If the user does not define the Headers, clicking Run ony any HTTP
Target will result in error when "save" function executed before it.
|
|
This release replace "share" module with "pakakeh.go".
The "share" module repository has been moved to SourceHut with new name
"pakakeh.go". For more information about the changes see pakakeh.go
project at https://sr.ht/~shulhan/pakakeh.go.
|
|
On the "lib/http" we refactoring RequestMethod and RequestType type
from int to string for readability, when the value is encoded, for
example to JSON.
So instead of 0, 1 or 2; it will print "GET", "CONNECT", or "HEAD".
|
|
|
|
|
|
=== Breaking changes
* target: changes Opts to non-pointer
Previously, we use pointer to indicated that the Target can be
attacked or not. Since HTTPTarget now have AllowAttack, this options
can be changes to non-pointer.
* all: change the signature of default request/response dumper
Instead of function that use the signature of HTTPRequestDumper/
HTTPResponseDumper; change it to function that return HTTPRequestDumper/
HTTPResponseDumper. In this way, the documentation can show the clear
relation between function and its type.
=== New features
* all: add global HTTP headers for Target
The Headers field on Target define the global headers that will be
send along with all HTTPTarget or WebSocketTarget. The same header can
also be defined on HTTPTarget that override the value of Target.
* all: add default HTTPRunHandler
Previously, the default HTTPRunHandler is hidden, called dynamically
based on Run is nil or not. This changes make it exported as function
that return HTTPRunHandler to show how define and create a custom
HTTPRunHandler.
* all: add default HTTPParamsConverter for [HTTPTarget.ParamsConverter]
The DefaultParamsConverter define default function to convert
[HTTPTarget.Params] to its equivalent parameters in HTTP, either as
query in URL or as bytes in body.
This changes introduce breaking changes in HTTPTarget where field
ConvertParams renamed to ParamsConverter.
* all: set default HTTPTarget Attack if its not set
Previously, the function for Attack need to be coded manually.
This changes introduce new function DefaultHTTPAttack that generate
HTTPAttackHandler based on the HTTPTarget method, request type, and
Params; if AllowAttack is true and Attack is nil.
=== Bug fixes
* all: fix null navigation links
If the navLinks fields is empty, the HTTP API will return "null" and
cause the rendering error. This changes fix this issue by allocating
the slice navLinks with one capabilities to make JSON always return
"[]" if its empty.
|
|
The Headers field on Target define the global headers that will be send
along with all HTTPTarget or WebSocketTarget.
The same header can also be defined on HTTPTarget that override the
value of Target.
|
|
If the navLinks fields is empty, the HTTP API will return "null" and make
the rendering error.
This changes fix this issue by allocating the slice navLinks with one
capabilities to make JSON always return "[]" if its empty.
|
|
|
|
The goal is to remove duplicate code in testing and show the example on
how to create Gorankusu service from godoc.
Implements: https://todo.sr.ht/~shulhan/gorankusu/5
|
|
In HTTPTarget the field RawBody can be filled by anything by user.
Those field can be activated by setting WithRawBody.
Implements: https://todo.sr.ht/~shulhan/gorankusu/3
|
|
The original idea of "trunks" is because the core library that we
use for load testing is named "vegeta" (from Dragon Ball) [1][2], and
Vegeta has a son named Trunks.
In English, trunks also have multiple meanings.
In order to have a unique name, we rename the project to "gorankusu",
which is a combination of "go" (the main programming language
that built the application) and "torankusu" the Hepburn of "Trunks".
[1]: https://github.com/tsenart/vegeta/
[2]: https://en.wikipedia.org/wiki/Vegeta
Implements: https://todo.sr.ht/~shulhan/gorankusu/2
|
|
The FormInput now can be set to FormInputKindFile that will rendered
as "<input type='file' ...>" on the web user interface.
Once submitted, the file name, type, size, and lastModification will
be stored under FormInput Filename, Filetype, Filesize, and Filemodms.
Implements: https://todo.sr.ht/~shulhan/trunks/1
|
|
|
|
Any HTTP status code below 400 are still processable and not an error.
|
|
Most of the fixes related to naming variables with acronyms, for example
HTTP, JSON, URL, and so on.
|
|
This release only have chores, it should not break anything.
* go.mod: update all dependencies
This changes set minimum Go version to version 1.20.
The vegeta module finally has some update to v12.11.1.
* gitmodules: use https instead of git scheme
Using git scheme require private key to clone the remote repository.
* _www: update wui module
* _www: setup eslint for linting TypeScript files
This changes also apply all eslint recommendations.
* Makefile: replace the Go linter and apply all their recommendations
Previously, we use golangci-lint as linter. This linter does not
provides any useful recommendation lately and the development is quite
a mess, sometimes its break when using Go tip.
In this changes we replace it with revive, fieldalignment, and shadow;
and fix all of their recommendations.
|
|
|
|
|
|
While at it reformat all files using default prettier.
|
|
=== Bug fixes
* all: fix panic when attacking HTTP due to nil Attack handler
=== Enhancements
* _www: replace WebSocket handlers with HTTP endpoints
* all: add boolean Kind for FormInput, FormInputKindBoolean
* all: check and call ConvertParams when running HttpTarget
=== Chores
* all: move the _doc directory under _www
* all: convert the README from asciidoc to markdown
* all: remove WebSocket server
* go.mod: set Go version to 1.19 and update all dependencies
|
|
This is to minimize symlinks in the repository.
|
|
Using WebSocket for communication in client require additional
setup, especially if its behind proxy.
For example, if we server the trunks server under domain testing.local
behind proxy, we need to setup route for the WebSocket too.
|
|
The Attack and attack Cancel now call the HTTP endpoints.
|
|
The FormInputKindBoolean only used for convertion, for example
ToJsonObject.
In the WUI, it still rendered as string, not as checkbox.
FormInput with this Kind will be converted to true in ToJsonObject if
the Value is either "true", "yes", or "1".
|
|
|
|
The _doc directory provides an entry point for all documentation.
While at it we reformat the README to use AsciiDoc markup.
|
|
This changes replace any usage of ioutil with os and io package.
|
|
If the address is using "https:" protocol, the WebSocket address will
use the "wss://" schema.
This changes require latest update on wui repository.
|
|
See https://kilabit.info/journal/2022/gpl for more information.
|
|
|
|
The NavLink struct now has field OpenInIFrame. If its true, the Href
will be opened inside an iframe in the same window, otherwise it
will opened in new tab.
|
|
Using Trunks.RegisterNavLink, one can register custom link into
left navigation menu.
|