forked from vieter-v/vieter
Merge pull request 'Stop calculating MD5 hashes' (#247) from Chewing_Bever/vieter:no-md5 into dev
Reviewed-on: vieter/vieter#247
commit
10ad8297fb
|
@ -17,6 +17,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
||||||
* Renamed `vieter repos` to `vieter targets`
|
* Renamed `vieter repos` to `vieter targets`
|
||||||
* Renamed `/api/v1/repos` namespace to `/api/v1/targets`
|
* Renamed `/api/v1/repos` namespace to `/api/v1/targets`
|
||||||
|
|
||||||
|
### Removed
|
||||||
|
|
||||||
|
* md5 hashes are no longer calculated for packages
|
||||||
|
|
||||||
## [0.3.0](https://git.rustybever.be/vieter/vieter/src/tag/0.3.0)
|
## [0.3.0](https://git.rustybever.be/vieter/vieter/src/tag/0.3.0)
|
||||||
|
|
||||||
Nothing besides bumping the versions.
|
Nothing besides bumping the versions.
|
||||||
|
|
|
@ -13,7 +13,7 @@ Endpoints for interacting with stored build logs.
|
||||||
```shell
|
```shell
|
||||||
curl \
|
curl \
|
||||||
-H 'X-Api-Key: secret' \
|
-H 'X-Api-Key: secret' \
|
||||||
https://example.com/api/logs?offset=10&limit=20
|
https://example.com/api/v1/logs?offset=10&limit=20
|
||||||
```
|
```
|
||||||
|
|
||||||
> JSON output format
|
> JSON output format
|
||||||
|
@ -38,7 +38,7 @@ Retrieve a list of build logs.
|
||||||
|
|
||||||
### HTTP Request
|
### HTTP Request
|
||||||
|
|
||||||
`GET /api/logs`
|
`GET /api/v1/logs`
|
||||||
|
|
||||||
### Query Parameters
|
### Query Parameters
|
||||||
|
|
||||||
|
@ -58,7 +58,7 @@ exit_codes | Comma-separated list of exit codes to limit result to; using `!` as
|
||||||
```shell
|
```shell
|
||||||
curl \
|
curl \
|
||||||
-H 'X-Api-Key: secret' \
|
-H 'X-Api-Key: secret' \
|
||||||
https://example.com/api/logs/1
|
https://example.com/api/v1/logs/1
|
||||||
```
|
```
|
||||||
|
|
||||||
> JSON output format
|
> JSON output format
|
||||||
|
@ -81,7 +81,7 @@ Retrieve info about a specific build log.
|
||||||
|
|
||||||
### HTTP Request
|
### HTTP Request
|
||||||
|
|
||||||
`GET /api/logs/:id`
|
`GET /api/v1/logs/:id`
|
||||||
|
|
||||||
### URL Parameters
|
### URL Parameters
|
||||||
|
|
||||||
|
@ -94,7 +94,7 @@ id | ID of requested log
|
||||||
```shell
|
```shell
|
||||||
curl \
|
curl \
|
||||||
-H 'X-Api-Key: secret' \
|
-H 'X-Api-Key: secret' \
|
||||||
https://example.com/api/logs/15/content
|
https://example.com/api/v1/logs/15/content
|
||||||
```
|
```
|
||||||
|
|
||||||
Retrieve the contents of a build log. The response is the build log in
|
Retrieve the contents of a build log. The response is the build log in
|
||||||
|
@ -102,7 +102,7 @@ plaintext.
|
||||||
|
|
||||||
### HTTP Request
|
### HTTP Request
|
||||||
|
|
||||||
`GET /api/logs/:id/content`
|
`GET /api/v1/logs/:id/content`
|
||||||
|
|
||||||
### URL Parameters
|
### URL Parameters
|
||||||
|
|
||||||
|
@ -123,7 +123,7 @@ Publish a new build log to the server.
|
||||||
|
|
||||||
### HTTP Request
|
### HTTP Request
|
||||||
|
|
||||||
`POST /api/logs`
|
`POST /api/v1/logs`
|
||||||
|
|
||||||
### Query parameters
|
### Query parameters
|
||||||
|
|
||||||
|
|
|
@ -13,7 +13,7 @@ Endpoints for interacting with the list of targets stored on the server.
|
||||||
```shell
|
```shell
|
||||||
curl \
|
curl \
|
||||||
-H 'X-Api-Key: secret' \
|
-H 'X-Api-Key: secret' \
|
||||||
https://example.com/api/targets?offset=10&limit=20
|
https://example.com/api/v1/targets?offset=10&limit=20
|
||||||
```
|
```
|
||||||
|
|
||||||
> JSON output format
|
> JSON output format
|
||||||
|
@ -44,7 +44,7 @@ Retrieve a list of targets.
|
||||||
|
|
||||||
### HTTP Request
|
### HTTP Request
|
||||||
|
|
||||||
`GET /api/targets`
|
`GET /api/v1/targets`
|
||||||
|
|
||||||
### Query Parameters
|
### Query Parameters
|
||||||
|
|
||||||
|
@ -59,7 +59,7 @@ repo | Limit results to targets that publish to the given repo.
|
||||||
```shell
|
```shell
|
||||||
curl \
|
curl \
|
||||||
-H 'X-Api-Key: secret' \
|
-H 'X-Api-Key: secret' \
|
||||||
https://example.com/api/targets/1
|
https://example.com/api/v1/targets/1
|
||||||
```
|
```
|
||||||
|
|
||||||
> JSON output format
|
> JSON output format
|
||||||
|
@ -88,7 +88,7 @@ Get info about a specific target.
|
||||||
|
|
||||||
### HTTP Request
|
### HTTP Request
|
||||||
|
|
||||||
`GET /api/targets/:id`
|
`GET /api/v1/targets/:id`
|
||||||
|
|
||||||
### URL Parameters
|
### URL Parameters
|
||||||
|
|
||||||
|
@ -102,7 +102,7 @@ Create a new target with the given data.
|
||||||
|
|
||||||
### HTTP Request
|
### HTTP Request
|
||||||
|
|
||||||
`POST /api/targets`
|
`POST /api/v1/targets`
|
||||||
|
|
||||||
### Query Parameters
|
### Query Parameters
|
||||||
|
|
||||||
|
@ -120,7 +120,7 @@ Modify the data of an existing target.
|
||||||
|
|
||||||
### HTTP Request
|
### HTTP Request
|
||||||
|
|
||||||
`PATCH /api/targets/:id`
|
`PATCH /api/v1/targets/:id`
|
||||||
|
|
||||||
### URL Parameters
|
### URL Parameters
|
||||||
|
|
||||||
|
@ -144,7 +144,7 @@ Remove a target from the server.
|
||||||
|
|
||||||
### HTTP Request
|
### HTTP Request
|
||||||
|
|
||||||
`DELETE /api/targets/:id`
|
`DELETE /api/v1/targets/:id`
|
||||||
|
|
||||||
### URL Parameters
|
### URL Parameters
|
||||||
|
|
||||||
|
|
|
@ -42,8 +42,8 @@ pub mut:
|
||||||
checkdepends []string
|
checkdepends []string
|
||||||
}
|
}
|
||||||
|
|
||||||
// checksum calculates the md5 & sha256 hash of the package
|
// checksum calculates the sha256 hash of the package
|
||||||
pub fn (p &Pkg) checksum() ?(string, string) {
|
pub fn (p &Pkg) checksum() ?string {
|
||||||
return util.hash_file(p.path)
|
return util.hash_file(p.path)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -201,8 +201,7 @@ pub fn (pkg &Pkg) filename() string {
|
||||||
}
|
}
|
||||||
|
|
||||||
// to_desc returns a desc file valid string representation
|
// to_desc returns a desc file valid string representation
|
||||||
// TODO calculate md5 & sha256 instead of believing the file
|
pub fn (pkg &Pkg) to_desc() ?string {
|
||||||
pub fn (pkg &Pkg) to_desc() string {
|
|
||||||
p := pkg.info
|
p := pkg.info
|
||||||
|
|
||||||
// filename
|
// filename
|
||||||
|
@ -223,9 +222,8 @@ pub fn (pkg &Pkg) to_desc() string {
|
||||||
desc += format_entry('CSIZE', p.csize.str())
|
desc += format_entry('CSIZE', p.csize.str())
|
||||||
desc += format_entry('ISIZE', p.size.str())
|
desc += format_entry('ISIZE', p.size.str())
|
||||||
|
|
||||||
md5sum, sha256sum := pkg.checksum() or { '', '' }
|
sha256sum := pkg.checksum()?
|
||||||
|
|
||||||
desc += format_entry('MD5SUM', md5sum)
|
|
||||||
desc += format_entry('SHA256SUM', sha256sum)
|
desc += format_entry('SHA256SUM', sha256sum)
|
||||||
|
|
||||||
// TODO add pgpsig stuff
|
// TODO add pgpsig stuff
|
||||||
|
|
|
@ -139,7 +139,7 @@ fn (r &RepoGroupManager) add_pkg_in_arch_repo(repo string, arch string, pkg &pac
|
||||||
|
|
||||||
os.mkdir_all(pkg_dir) or { return error('Failed to create package directory.') }
|
os.mkdir_all(pkg_dir) or { return error('Failed to create package directory.') }
|
||||||
|
|
||||||
os.write_file(os.join_path_single(pkg_dir, 'desc'), pkg.to_desc()) or {
|
os.write_file(os.join_path_single(pkg_dir, 'desc'), pkg.to_desc()?) or {
|
||||||
os.rmdir_all(pkg_dir)?
|
os.rmdir_all(pkg_dir)?
|
||||||
|
|
||||||
return error('Failed to write desc file.')
|
return error('Failed to write desc file.')
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
module util
|
module util
|
||||||
|
|
||||||
import os
|
import os
|
||||||
import crypto.md5
|
|
||||||
import crypto.sha256
|
import crypto.sha256
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
@ -23,12 +22,10 @@ pub fn exit_with_message(code int, msg string) {
|
||||||
exit(code)
|
exit(code)
|
||||||
}
|
}
|
||||||
|
|
||||||
// hash_file returns the md5 & sha256 hash of a given file
|
// hash_file returns the sha256 hash of a given file
|
||||||
// TODO actually implement sha256
|
pub fn hash_file(path &string) ?string {
|
||||||
pub fn hash_file(path &string) ?(string, string) {
|
|
||||||
file := os.open(path) or { return error('Failed to open file.') }
|
file := os.open(path) or { return error('Failed to open file.') }
|
||||||
|
|
||||||
mut md5sum := md5.new()
|
|
||||||
mut sha256sum := sha256.new()
|
mut sha256sum := sha256.new()
|
||||||
|
|
||||||
buf_size := int(1_000_000)
|
buf_size := int(1_000_000)
|
||||||
|
@ -40,16 +37,12 @@ pub fn hash_file(path &string) ?(string, string) {
|
||||||
bytes_read := file.read(mut buf) or { return error('Failed to read from file.') }
|
bytes_read := file.read(mut buf) or { return error('Failed to read from file.') }
|
||||||
bytes_left -= u64(bytes_read)
|
bytes_left -= u64(bytes_read)
|
||||||
|
|
||||||
// For now we'll assume that this always works
|
// This function never actually fails, but returns an option to follow
|
||||||
md5sum.write(buf[..bytes_read]) or {
|
// the Writer interface.
|
||||||
return error('Failed to update md5 checksum. This should never happen.')
|
sha256sum.write(buf[..bytes_read])?
|
||||||
}
|
|
||||||
sha256sum.write(buf[..bytes_read]) or {
|
|
||||||
return error('Failed to update sha256 checksum. This should never happen.')
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return md5sum.checksum().hex(), sha256sum.checksum().hex()
|
return sha256sum.checksum().hex()
|
||||||
}
|
}
|
||||||
|
|
||||||
// pretty_bytes converts a byte count to human-readable version
|
// pretty_bytes converts a byte count to human-readable version
|
||||||
|
|
Loading…
Reference in New Issue