]>
git.ipfire.org Git - pakfire.git/log
Michael Tremer [Wed, 25 Jun 2025 10:58:26 +0000 (10:58 +0000)]
xfer: Don't attempt to parse a JSON response when there is no data
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Wed, 25 Jun 2025 10:58:01 +0000 (10:58 +0000)]
xfer: Call the API callback on uploads, too
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Wed, 25 Jun 2025 10:37:17 +0000 (10:37 +0000)]
cli: Refactor storing authentication credentials
The config object will be removed once we have finished initializing the
other objects. Therefore we will have to copy the credentials somewhere
else before.
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Wed, 25 Jun 2025 10:36:41 +0000 (10:36 +0000)]
cli: client: Always load client.conf
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Wed, 25 Jun 2025 10:25:23 +0000 (10:25 +0000)]
cli: Read credentials from the configuration file (for now)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Wed, 25 Jun 2025 10:14:43 +0000 (10:14 +0000)]
client: Remove unused string extraction function
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Wed, 25 Jun 2025 10:13:07 +0000 (10:13 +0000)]
client: Create separate timers for access/refresh token refresh
These are also now only initialized when we actually need them. That
helps us to deal with all those status changes.
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Wed, 25 Jun 2025 10:02:21 +0000 (10:02 +0000)]
httpclient: Remove launch protection without transfers
We need this so that we can lazy-initialize the client.
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Wed, 25 Jun 2025 10:01:44 +0000 (10:01 +0000)]
client: Call the auth callback when we need authentication
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Wed, 25 Jun 2025 10:01:20 +0000 (10:01 +0000)]
cli: Create a dummy authentication function
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Wed, 25 Jun 2025 10:00:42 +0000 (10:00 +0000)]
client: Call the ready callback once we are successfully authenticated
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Wed, 25 Jun 2025 09:45:59 +0000 (09:45 +0000)]
cli: auth: Use the new ready callback
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Wed, 25 Jun 2025 09:32:48 +0000 (09:32 +0000)]
cli: Use the new ready function to start the uploads
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Wed, 25 Jun 2025 09:32:00 +0000 (09:32 +0000)]
client: Call an init function whenever the event loop starts
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Wed, 25 Jun 2025 09:23:24 +0000 (09:23 +0000)]
client: Add a ready callback
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Wed, 25 Jun 2025 09:02:36 +0000 (09:02 +0000)]
client: Implement asynchronous uploads
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Wed, 25 Jun 2025 08:49:33 +0000 (08:49 +0000)]
progress: Allow restart by keeping the state up to date
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Tue, 24 Jun 2025 17:01:06 +0000 (17:01 +0000)]
client: Log an error when we want to use authentication without being authenticated
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Tue, 24 Jun 2025 16:14:40 +0000 (16:14 +0000)]
client: Remove keytab
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Tue, 24 Jun 2025 16:14:03 +0000 (16:14 +0000)]
client: Move the callback into the auth struct
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Tue, 24 Jun 2025 16:13:06 +0000 (16:13 +0000)]
client: Move the tokens into the auth struct
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Tue, 24 Jun 2025 16:10:51 +0000 (16:10 +0000)]
client: Fire a timer just before the access token expires
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Tue, 24 Jun 2025 15:56:19 +0000 (15:56 +0000)]
client: Move the authentication timer from the daemon
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Tue, 24 Jun 2025 15:55:40 +0000 (15:55 +0000)]
client: Use the event loop from the HTTP client
The HTTP client needs to have more control so that it can automatically
terminate the event loop when it is done.
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Tue, 24 Jun 2025 15:46:32 +0000 (15:46 +0000)]
daemon: Remove the authentication framework
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Tue, 24 Jun 2025 15:46:03 +0000 (15:46 +0000)]
client: Hold a reference to the event loop
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Tue, 24 Jun 2025 15:34:04 +0000 (15:34 +0000)]
cli: Return auth result in exit code
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Tue, 24 Jun 2025 15:33:44 +0000 (15:33 +0000)]
client: Actually call the authentication callback
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Tue, 24 Jun 2025 15:27:53 +0000 (15:27 +0000)]
client: Make user authentication asynchronous
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Tue, 24 Jun 2025 15:21:13 +0000 (15:21 +0000)]
xfer: Implement an API response callback
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Tue, 24 Jun 2025 15:01:56 +0000 (15:01 +0000)]
client: Add a convenience function to run the standalone client
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Tue, 24 Jun 2025 15:01:15 +0000 (15:01 +0000)]
client: Add an authentication callback
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Tue, 24 Jun 2025 14:49:00 +0000 (14:49 +0000)]
client: Bring back an own HTTP client instance
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Tue, 24 Jun 2025 14:33:58 +0000 (14:33 +0000)]
configure: Drop dependency on libkrb5
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Tue, 24 Jun 2025 14:31:57 +0000 (14:31 +0000)]
daemon: Remove Kerberos authentication
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Sat, 21 Jun 2025 18:16:15 +0000 (18:16 +0000)]
json: Actually jump to the error block if JSON could not be parsed
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Sat, 21 Jun 2025 18:14:13 +0000 (18:14 +0000)]
client: Rename the build service to client
This is simply to have way shorter function names, because things have
started to become a little bit ridiculous. No functional changes.
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Sat, 21 Jun 2025 17:52:57 +0000 (17:52 +0000)]
xfer: Format transfer times in milliseconds
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Sat, 21 Jun 2025 17:45:17 +0000 (17:45 +0000)]
jenkins: Explicitely install autopoint on Debian-based distros
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Sat, 21 Jun 2025 17:38:06 +0000 (17:38 +0000)]
jenkins: Explicitely install Gettext on all distros
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Sat, 21 Jun 2025 17:32:07 +0000 (17:32 +0000)]
configure: Explicitely configure Gettext
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Sat, 21 Jun 2025 17:29:24 +0000 (17:29 +0000)]
buildservice: Send all other API requests with a JSON payload
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Sat, 21 Jun 2025 17:27:20 +0000 (17:27 +0000)]
json: Add function to add a boolean value
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Sat, 21 Jun 2025 17:11:58 +0000 (17:11 +0000)]
buildservice: Remove all dependencies to Kerberos
We will no longer use this for the API authentication.
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Sat, 21 Jun 2025 17:09:24 +0000 (17:09 +0000)]
buildservice: Automatically refresh the access token on expiry
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Sat, 21 Jun 2025 17:07:14 +0000 (17:07 +0000)]
xfer: Accept a JSON request object to send as payload for API requests
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Sat, 21 Jun 2025 16:51:43 +0000 (16:51 +0000)]
buildservice: Implement uploads using the new API
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Sat, 21 Jun 2025 16:51:09 +0000 (16:51 +0000)]
xfer: Send the appropriate content type header is sending JSON
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Sat, 21 Jun 2025 16:49:41 +0000 (16:49 +0000)]
buildservice: Implement authentication using the access token
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Sat, 21 Jun 2025 16:35:12 +0000 (16:35 +0000)]
json: Align creating new JSON objects with other interfaces
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Sat, 21 Jun 2025 16:24:06 +0000 (16:24 +0000)]
xfer: Add a function to add a JSON request body
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Sat, 21 Jun 2025 16:21:51 +0000 (16:21 +0000)]
JWT: Make the functions context-free
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Sat, 21 Jun 2025 16:16:55 +0000 (16:16 +0000)]
json: Cleanup the JSON parsing interfaces
We should not always require the context to have some basic logging.
Instead we can return the error as a string.
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Sat, 21 Jun 2025 15:57:39 +0000 (15:57 +0000)]
json: Use the new string serialization function everywhere
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Sat, 21 Jun 2025 15:53:16 +0000 (15:53 +0000)]
json: Add a function to convert JSON to string
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Sat, 21 Jun 2025 13:02:44 +0000 (13:02 +0000)]
base64: No longer require the input length
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Sat, 21 Jun 2025 13:00:10 +0000 (13:00 +0000)]
buildservice: Decode expiry times from access/refresh tokens
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Sat, 21 Jun 2025 12:59:41 +0000 (12:59 +0000)]
JWT: Normalize base64 data before decoding
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Sat, 21 Jun 2025 12:59:17 +0000 (12:59 +0000)]
base64: Add function to normalize non-standard base64
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Sat, 21 Jun 2025 12:38:53 +0000 (12:38 +0000)]
jwt: Add some simple functions to parse JWTs
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Sat, 21 Jun 2025 12:32:33 +0000 (12:32 +0000)]
base64: Allow specifying the length of the input buffer
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Sat, 21 Jun 2025 11:48:00 +0000 (11:48 +0000)]
cli: Add a command to test user authentication against the API
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Sat, 21 Jun 2025 11:47:29 +0000 (11:47 +0000)]
buildservice: Add a function to authenticate a user against the API
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Sat, 21 Jun 2025 11:46:36 +0000 (11:46 +0000)]
buildservice: Tell the API that we would like to receive JSON
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Sat, 21 Jun 2025 11:46:00 +0000 (11:46 +0000)]
xfer: Add a function to send a custom POST payload
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Sat, 21 Jun 2025 11:45:35 +0000 (11:45 +0000)]
xfer: Add a function to set custom headers
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Sat, 21 Jun 2025 11:44:58 +0000 (11:44 +0000)]
xfer: Add a function to URL escape any strings
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Sat, 21 Jun 2025 11:43:59 +0000 (11:43 +0000)]
xfer: Pass any numeric values as long
cURL now complains if the value is not long.
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Rico Hoppe [Tue, 21 Jan 2025 12:05:32 +0000 (12:05 +0000)]
readme: update bug report url
Signed-off-by: Rico Hoppe <rico.hoppe@ipfire.org>
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Sat, 3 May 2025 14:03:46 +0000 (14:03 +0000)]
xfer: Fix logic error in reading WebSocket messages
After the message was read we never cleared the buffer which resulted
that on every message, the callback was called with the entire buffer.
Usually that meant that only the first JSON message was parsed and
handled. Again and again and again...
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Sat, 3 May 2025 14:02:53 +0000 (14:02 +0000)]
xfer: Remove recursive function call
I am not sure why I am suddenly scared of this, but there have been some
security-relevant issues where this could exhaust the stack.
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Sat, 3 May 2025 14:01:52 +0000 (14:01 +0000)]
daemon: Use our own string comparison macro
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Sat, 3 May 2025 12:52:13 +0000 (12:52 +0000)]
daemon: Send the IDs of all running jobs
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Sun, 20 Apr 2025 14:11:43 +0000 (14:11 +0000)]
jobs: Stream logs as base64-encoded data
There should not be anything else but ASCII or Unicode characters here,
but we can never be too sure. Therefore we will encode all data as
base64 to keep the protocol somewhat extensible.
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Sun, 20 Apr 2025 13:56:48 +0000 (13:56 +0000)]
base64: Replace the encoder/decoder with low-level functions
The BIO interface is large and very well suited to encode larger
messages. However, we only have very small messages to encode and
therefore will spend a long time on setting up and destroying the BIO
interface all of the time.
These low-level functions are a lot faster and easier to set up.
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Wed, 16 Apr 2025 15:58:08 +0000 (15:58 +0000)]
buffer: Rename fields again
I even confused myself here because length is actually not the length of
the buffer that I wanted. It is what has been allocated. That is however
nothing that we need to access at any time. Therefore the fields have
been renamed to be a little bit more intuitive again.
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Wed, 16 Apr 2025 15:54:30 +0000 (15:54 +0000)]
xfer: Replace the send buffer with our own buffer implementation
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Wed, 16 Apr 2025 15:45:29 +0000 (15:45 +0000)]
xfer: Use our own buffer implementation for the receive buffer
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Tue, 15 Apr 2025 17:09:14 +0000 (17:09 +0000)]
packager: Fix return codes
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Tue, 15 Apr 2025 17:05:32 +0000 (17:05 +0000)]
build: Log a better message when a build has been interrupted
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Wed, 16 Apr 2025 15:37:07 +0000 (15:37 +0000)]
xfer: Clear the overflow buffer after the segment could be sent
This is a stub and I will replace the send and receive buffers with our
own buffer implementation.
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Tue, 15 Apr 2025 17:00:28 +0000 (17:00 +0000)]
daemon: Store Kerberos credentials in memory
I think I am starting to become confused. At least in trixie and
bookworm-backports, we seem to be linking against MIT. This seems to
work now on my machine. Let's hope this is a general thing.
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Tue, 15 Apr 2025 16:53:11 +0000 (16:53 +0000)]
daemon: Completely destroy the Kerberos credentials cache on update
This is required because on Debian, cURL is linked against Heimdal which
does not seem to be able to skip any deleted tickets in the file.
Instead it always uses the first ticket which would eventually have
expired. Therefore we destroy the entire cache and write it again so
Heimdal cannot get confused.
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Wed, 2 Apr 2025 10:32:04 +0000 (10:32 +0000)]
jenkins: Ensure we have gawk available on Fedora
Fedora 42 does not seem to install this by default any more, but our
configure script wants to use it.
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Sun, 30 Mar 2025 17:33:42 +0000 (17:33 +0000)]
jenkins: Always install all updates before trying to install any packages
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Sun, 30 Mar 2025 17:15:17 +0000 (17:15 +0000)]
jenkins: Ensure the keyring is up to date on Archlinux
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Sun, 30 Mar 2025 16:32:18 +0000 (16:32 +0000)]
dist: Remove the old solution to pass the filename
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Sun, 30 Mar 2025 16:28:07 +0000 (16:28 +0000)]
archive: Add function to fetch the desired filename
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Sun, 30 Mar 2025 16:11:07 +0000 (16:11 +0000)]
tests: Add tests for dist()
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Sun, 30 Mar 2025 16:10:43 +0000 (16:10 +0000)]
python: Make dist() work again
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Thu, 27 Mar 2025 18:07:57 +0000 (18:07 +0000)]
file: Don't try to resolve paths relative to Pakfire in stub mode
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Thu, 27 Mar 2025 18:07:27 +0000 (18:07 +0000)]
pwd: Don't permit any UID/GID lookups in stub mode
This is simply not supported because we don't have a file system.
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Thu, 27 Mar 2025 11:15:53 +0000 (11:15 +0000)]
packager: Don't use an invalid pointer to a freed JSON object
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Thu, 27 Mar 2025 11:15:31 +0000 (11:15 +0000)]
archive write: Fetch length of serialized JSON string from libjson-c
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Thu, 27 Mar 2025 10:33:04 +0000 (10:33 +0000)]
job: Always stream logs
This was too fragile before and I think we should be able to afford the
stupid traffic...
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Thu, 27 Mar 2025 10:32:56 +0000 (10:32 +0000)]
jobs: Use function to check if a flag is set
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Wed, 26 Mar 2025 17:03:07 +0000 (17:03 +0000)]
daemon: Retry authentication if we could not reach the KDC
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Wed, 26 Mar 2025 16:49:01 +0000 (16:49 +0000)]
daemon: Remove any previous credentials
Otherwise krb5 will append all credentials, but Heimdal only seems to
read the first (eventually) expired ticket.
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Wed, 26 Mar 2025 16:48:40 +0000 (16:48 +0000)]
daemon: Make Kerberos refresh time easier to understand
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Wed, 26 Mar 2025 16:48:17 +0000 (16:48 +0000)]
util: Return converted timestamps as long
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>