fixed sd_logger
This commit is contained in:
71
tools/upload_firmware.py
Normal file
71
tools/upload_firmware.py
Normal file
@@ -0,0 +1,71 @@
|
||||
import hmac
|
||||
import hashlib
|
||||
import sys
|
||||
from pathlib import Path
|
||||
import requests
|
||||
import subprocess
|
||||
import base64
|
||||
|
||||
def load_secret_key(keyb64: str):
|
||||
# Decode the base64 encoded key
|
||||
decoded_key = base64.b64decode(keyb64)
|
||||
|
||||
return decoded_key
|
||||
|
||||
def compute_hmac(file_path, secret_key):
|
||||
"""Compute the HMAC of a file using HMAC-SHA256."""
|
||||
hmac_obj = hmac.new(secret_key, digestmod=hashlib.sha256)
|
||||
with open(file_path, 'rb') as f:
|
||||
while chunk := f.read(4096):
|
||||
hmac_obj.update(chunk)
|
||||
return hmac_obj.hexdigest()
|
||||
|
||||
def upload_file(url, file_path, secret_key):
|
||||
"""Upload a file to the server with an HMAC signature."""
|
||||
# Compute HMAC of the file
|
||||
signature = compute_hmac(file_path, secret_key)
|
||||
print(signature)
|
||||
# Prepare headers
|
||||
headers = {'X-Signature': signature}
|
||||
|
||||
# Read file and prepare files dictionary for request
|
||||
with open(file_path, 'rb') as f:
|
||||
files = {'file': (Path(file_path).name, f)}
|
||||
response = requests.post(url, files=files, headers=headers)
|
||||
|
||||
return response
|
||||
|
||||
|
||||
def get_short_git_commit_hash():
|
||||
try:
|
||||
# Run the Git command to get the short commit hash
|
||||
result = subprocess.run(['git', 'rev-parse', '--short', 'HEAD'], stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True, check=True)
|
||||
# Extract and return the commit hash
|
||||
return result.stdout.strip()
|
||||
except subprocess.CalledProcessError as e:
|
||||
print(f"Error getting Git commit hash: {e}")
|
||||
return None
|
||||
|
||||
if __name__ == "__main__":
|
||||
url = "https://fw.revwal.de/master/upload" # Adjust this to your server's URL
|
||||
|
||||
|
||||
fw_path = "build/CLS_Master.bin" # Path to the file you want to upload
|
||||
|
||||
# Get the Git commit hash
|
||||
commit_hash = get_short_git_commit_hash()
|
||||
if commit_hash is None:
|
||||
print("Error: Could not get Git commit hash")
|
||||
sys.exit(1)
|
||||
|
||||
# replace the file name with the commit hash
|
||||
file_path = fw_path.replace("CLS_Master", commit_hash)
|
||||
|
||||
# copy the file to the new name
|
||||
subprocess.run(['cp', fw_path, file_path])
|
||||
|
||||
|
||||
secret_key = load_secret_key(sys.argv[1])
|
||||
|
||||
response = upload_file(url, file_path, secret_key)
|
||||
print(f"Server response: {response.text}")
|
||||
Reference in New Issue
Block a user