| Age | Commit message (Collapse) | Author |
|
The robots.txt in _wui/doc/ is for awwan.org, while in _wui/ is for
tour.awwan.org.
This remove the unneeded robots.txt from _tour/ directory that we
previously assume for tour.
|
|
|
|
The default ciigo style provides consistent style with kilabit.info
and have support for light and dark themes.
|
|
|
|
This changes remove the replace module and back to upstream.
Maintaining fork is not easy and take a lot of time.
As we seen in crypto fork, we are 10 minor version behind upstream.
|
|
|
|
The idea is to minimize noise in the logs that does not related to
page access and minimize binary size.
|
|
The "share" project has been moved to SourceHut with new name
"pakakeh.go".
|
|
=== Breaking changes
* all: refactoring "env-set" arguments
Previously, the "env-set" take the file argument as the last argument
and optional.
This changes move the file argument to the first argument so the bash
completion can detect and print the completion for list of keys.
While at it, fix handling key with quoted in EnvSet and EnvGet.
* all: refactoring env-get command
This changes the order of arguments of env-get command to pass the
directory first before the key.
The reason is to simplify auto-completion later from the command line.
=== New features
* all: add command env-keys
The "env-keys" command print list of environment variables under a
directory.
This command is internal, not documented, used by bash completion.
* all: add bash completion script
Using awwan from CLI now can automatically complete the arguments based on
the command and current parameter number.
|
|
Previously, the "env-set" take the file argument as the last argument
and optional.
This changes move the file argument to the first argument so the bash
completion can detect and print the completion for list of keys.
While at it, fix handling key with quoted in EnvSet and EnvGet.
Closes: https://todo.sr.ht/~shulhan/awwan/10
|
|
This changes the order of arguments of env-get command to pass the
directory first before the key.
The reason is to simplify auto-completion later from the command line.
|
|
|
|
The Stop button call "DELETE /awwan/api/execute?id=" with id is the
previous execution ID.
Implements: https://todo.sr.ht/~shulhan/awwan/9
|
|
Now that the _tour is ready we can deploy it to tour.awwan.org.
The website is updated to include link to tour domain.
Implements: https://todo.sr.ht/~shulhan/awwan/4
|
|
=== New features
internal/cmd: add flag "address" for command www-awwan::
This is to allow using different address when running on local,
without conflict with "serve-www" task in Makefile.
all: implement command "env-get" to get value from environment files::
The env-get command get the value from environment files.
Syntax,
<key> [dir]
The "key" argument define the key where value is stored in environment
using "section:sub:name" format.
The "dir" argument is optional, its define the directory where
environment files will be loaded, recursively, from BaseDir to dir.
If its empty default to the current directory.
all: implement command to set environment value with "env-set"::
The env-set command set the value of environment file. Syntax,
<key> <value> <file>
The "key" argument define the key to be set using "section:sub:name"
format.
The "value" argument define the value key.
The "file" argument define path to environment file.
For example, to set the value for "name" under section "host" to
"myhost" in file "awwan.env" run
----
$ awwan env-set host::name myhost awwan.env
----
To set the value for key "pass" under section "user" subsection
"database" to value "s3cret" in file "awwan.env" run
----
$ awwan env-set user:database:pass s3cret awwan.env
----
_wui: implement Encrypt::
In the right side of Save button we now have a button Encrypt that
allow user to Encrypt opened file.
This require the workspace has been setup with private key
(.ssh/awwan.key) and pass file (.ssh/awwan.pass).
_wui: implement Decrypt::
In the right side of Save button we now have a button Decrypt that
allow user to Decrypt file with ".vault" extension only.
This require the workspace has been setup with private key
(.ssh/awwan.key) and pass file (.ssh/awwan.pass).
=== Breaking changes
all: make the magic line "#local" works on "local" command too::
In case we have a script that manage local host and remote server,
calling "play" on "#local" lines only always open the connection to
remote server.
To minimize opening unused connections, let the "#local" command works
on both commands. Its up to user which part of lines that they want
to execute on remote or local.
_wui: use CTRL+Enter to trigger save instead of CTRL+s on editor::
Using CTRL+s sometimes cause pressing s only trigger the save, due to
fast typing (or keyboard error?).
=== Bug fixes
all: close the SSH connection once Play finished::
Previously, we used to run awwan as CLI so each connection is open and
closed once the command completed.
Since we now use awwan WUI frequently, any command that execute Play
does not close the session immediately once finished.
This cause many connections open in remote server.
This changes close the SSH connections immediately once the Play
command finished.
all: fix memfs excludes regex::
Previously, the regex does not contains "^" and "$" which makes
file like "multi-user.target.wants" considered as ".tar" file and being
excluded.
_wui: update editor component::
Changes,
- fix paste that always end with newline
- fix editor content that got wrapped due to width
- update layout without using float
- replace execCommand with Selection
all: fix excludes on HTTP server related to .git::
The HTTP server should excludes ".git" directory only, not the other
files, like ".gitignore" or ".gitconfig".
all: always load SSH config when running Play::
In case awwan run with "serve" and we modify the ".ssh/config", the
changes does not detected by awwan because we only read ".ssh/config"
once we Awwan instance created.
This changes fix this issue by always loading SSH config every time
the Play method executed so the user CLI and WUI has the same
experiences.
=== Enhancements
all: reduce the response on HTTP endpoint on GET fs::
Previously, the HTTP endpoint for "GET /awwan/api/fs" return the
content of files when the requested node is a directory.
This is cause unnecessary load because when requesting directory we
only need list of file names not the content.
This changes reduce the response by returning only list of node child
without its content, which require update on share module on
[Node.JSON].
_wui: use the output for displaying notification::
Previously, we use a quick "pop-up" to display notification for each
information or error from WUI.
Sometimes this is annoying, it overlap the buttons, make it hard to
Save and Encrypt at the same time.
In this changes we move the nofication message to be displayed in
the output, same with output of execution.
all: use the same date format between log and mlog package::
In this way, the date-time output from log.Xxx and mlog.Xxx are
consistent.
all: remove duplicate errors logged on Copy, Put, and SudoCopy::
While at it, replace all call of [log.Printf] with [Request.mlog] so
error both written to stderr and to [Request.Output].
_wui: do not clear output when executing another command::
This allow user to see the output of previous command without opening
the log file.
_wui: store and load the vfs width in local storage::
This is allow user to resize vfs width in one window and when new
window is opened the vfs width is restored with the same size.
_wui: disable button "Local" and "Play" when clicked::
Once the execution completed, both buttons will be enabled again.
While at it, add an icon to show the execution status.
_wui: rename "Remote" to "Play"::
This is to make command between the CLI and WUI consistent.
all: refactoring HTTP endpoint for Execute::
Previously, the Execute endpoint wait for command execution to finish.
In case the command takes longer than proxy or server write timeout, it
will return with a timeout error to client.
In this changes, we generate an execution ID for each request and return
it immediately.
The new API "GET /awwan/api/execute/tail" implement Server-sent
events, accept the execution ID from "/awwan/api/execute".
Once called with valid ID, it will streaming the command output
to client.
By using this new API, the WUI can receive the output of command
immediately without waiting for all commands to be completed.
_wui: add vertical resizer, to resize between VFS and editor::
_wui: allow all content type but decrease max file size to 1 MB::
Previously, only file with type json, message, octet-stream, script,
text, or XML that can be opened by editor.
In this changes we allow all files as long as the size is less than
1MB.
_wui: update vfs component::
This changes allow user browse the crumb in path and item in the list
using tab key.
While at it, fix the layout to make VFS and editor aligned.
_wui: implement file filter::
This changes move the text input for creating new file above the list.
Filling the text field will filter the list based on the node name
using regular expression.
Another changes is for node with type directory now suffixed with "/".
|
|
This is for CHANGELOG so the subject of changes highlighted make it
different with the changes description.
|
|
See https://github.com/evanw/esbuild/pull/3534
|
|
Changes,
* Reduce the left padding on the editor so space and padding not
to similar
* Set the caret color to red in editor
* Prevent "Enter" without pressing Control trigger the Save
|
|
The links in the index should be relative, so we can test and
deploy it anywhere.
Also the README contains link to website which is redundant
if rendered on website itself.
|
|
Previously, we use a quick "pop-up" to display notification for each
information or error from WUI.
Sometimes this is annoying, it overlap the buttons, make it hard to
Save and Encrypt at the same time.
In this changes we move the nofication message to be displayed in
the output, same with output of execution.
|
|
Previously, if the command output is "line1\n\nline2\n", the web output
it as
line1
line2
it should be
line1
line2
This fix the empty line not displayed in wui output.
|
|
This allow user to see the output of previous command without opening
the log file.
|
|
This is allow user to resize vfs width in one window and when new window
is opened the vfs width is restored with the same size.
Implements: https://todo.sr.ht/~shulhan/awwan/6
|
|
Once the execution completed, both buttons will be enabled again.
While at it, add an icon to show the execution status.
|
|
This is to make command between the CLI and WUI consistent.
|
|
In "/awwan/api/execute/tail" SSE endpoint, in order for client to be able
to reconnect and start streaming from the last know output, we need to
send the ID for each message that we send.
The ID is the index of Output in slice.
If client does not send Last-Event-ID, we send all Output from beginning,
otherwise, we send only message start from index in Last-Event-ID.
|
|
|
|
The new API is "GET /awwan/api/execute/tail" that implement Server-sent
events, not a normal GET request.
Its accept the query parameter "id" with value is the execution ID
from "/awwan/api/execute".
Once called with valid ID, it will streaming the command output
to client.
By using this new API, the WUI can receive the output of command
immediately without waiting for all commands to be completed.
Implements: https://todo.sr.ht/~shulhan/awwan/5
Signed-off-by: Shulhan <ms@kilabit.info>
|
|
Previously, the Execute endpoint wait for command execution to finish.
In case the command takes longer than proxy or server write timeout, it
will return with an timeout error to client.
In this changes, we generate an execution ID for each request and return
it immediately.
The next commit will implement HTTP endpoint to fetch the latest status
and/or output by execution ID.
References: https://todo.sr.ht/~shulhan/awwan/5
|
|
The contabostorage have an issues with cache.
The file that we upload today, when downloaded by user may not the latest
one.
This changes require update on share module to use the latest
[memfs.MemFS#Merge] method.
|
|
Changes,
* fix paste that always end with newline
* fix editor content that got wrapped due to width
* update layout without using float
* replace execCommand with Selection
|
|
Last weeked, I spent one day to fix the resizer to works with flex
layout, and its hard and not optimal.
|
|
Previously, the ExecRequest from HTTP Execute endpoint changes the Script
value to the absolute script path in the system.
This changes fix this issue to minimize inconsistency between request
and response.
|
|
Changes,
* Add fixed height on output wrapper
* Add space between Encrypt and Decrypt button
* Add padding in Execute actions component
* Change the wording of "Execute" to "Execute line"
|
|
If we dive into many sub directories, the path in VFS may have horizontal
scroll in it.
To minimize scroll, make the crumbs wrapped to bottom.
|
|
|
|
When file opened and the content length is greater than browser length,
the editor width also growth based on the content.
This changes fix this issue by using flex-basis (similar to setting
width) and "overflow:auto" on the class awwan-content.
|
|
The latest share module, in lib/crypto, handle loading SSH private key
with passphrase interactively using a program defined in SSH_ASKPASS.
This allow "awwan serve" that run without stdin, for example under
systemd service, works seamlessly by setting environment variable
SSH_ASKPASS to /usr/lib/ssh/x11-ssh-askpass.
Implements: https://todo.sr.ht/~shulhan/awwan/3
Signed-off-by: Shulhan <ms@kilabit.info>
|
|
When user run "awwan serve", using web-user interface, any request to
fetch the content of "awwan.key" and "awwan.pass" should not allowed for
security reason, in case user want to serve awwan with others.
|
|
|
|
While at it, refactoring the layout using flex.
|
|
The "file" argument is optional, its define path to environment file.
If its empty it will be set to "awwan.env" in the current directory.
|
|
This is to allow viewing log from editor.
|
|
The env-get command get the value from environment files.
Syntax,
----
<key> [dir]
----
The "key" argument define the key where value is stored in environment
using "section:sub:name" format.
The "dir" argument is optional, its define the directory where environment
files will be loaded, recursively, from BaseDir to dir.
If its empty default to the current directory.
|
|
The env-set command set the value of environment file. Syntax,
<file> <key> <value>
The "file" argument define path to environment file.
The "key" argument define the key to be set using "section:sub:name"
format.
The "value" argument define the value key.
For example, to set the value for "name" under section "host" to
"myhost" in file "awwan.env" run
$ awwan env-set awwan.env host::name myhost
To set the value for key "pass" under section "user" subsection "database"
to value "s3cret" in file "awwan.env" run
$ awwan env-set awwan.env user:database:pass s3cret
|
|
In case awwan run with "serve" and we modify the ".ssh/config", the
changes does not detected by awwan because we only read ".ssh/config"
once we Awwan instance created.
This changes fix this issue by always loading SSH config everytime
the Play method executed so the user CLI and WUI has the same experiences.
|
|
Previously, only file with type json, message, octet-stream, script,
text, or xml that can be opened by editor.
In this changes we allow all files as long as the size is less than 100KB.
|
|
In case the directory name is too long, the name can span multi line,
break automatically by browser and overlap with previous crumbs.
|
|
In the right side of Save button we now have a button Decrypt that
allow user to Decrypt file with ".vault" extension only.
This require the workspace has been setup with private key
(.ssh/awwan.key) and pass file (.ssh/awwan.pass).
|
|
Similar to the CLI, the HTTP API accept the path of vault file
and return the path to decrypted file.
|