mirror of
https://git.selfprivacy.org/SelfPrivacy/selfprivacy-rest-api.git
synced 2024-11-01 01:27:17 +00:00
7935de0fe1
Co-authored-by: inexcode <inex.code@selfprivacy.org> Reviewed-on: https://git.selfprivacy.org/SelfPrivacy/selfprivacy-rest-api/pulls/13
106 lines
2.9 KiB
Python
106 lines
2.9 KiB
Python
from typing import Optional
|
|
from fastapi import APIRouter, Body, Depends, HTTPException
|
|
from pydantic import BaseModel
|
|
|
|
from selfprivacy_api.dependencies import get_token_header
|
|
|
|
import selfprivacy_api.actions.system as system_actions
|
|
|
|
router = APIRouter(
|
|
prefix="/system",
|
|
tags=["system"],
|
|
dependencies=[Depends(get_token_header)],
|
|
responses={404: {"description": "Not found"}},
|
|
)
|
|
|
|
|
|
@router.get("/configuration/timezone")
|
|
async def get_timezone():
|
|
"""Get the timezone of the server"""
|
|
return system_actions.get_timezone()
|
|
|
|
|
|
class ChangeTimezoneRequestBody(BaseModel):
|
|
"""Change the timezone of the server"""
|
|
|
|
timezone: str
|
|
|
|
|
|
@router.put("/configuration/timezone")
|
|
async def change_timezone(timezone: ChangeTimezoneRequestBody):
|
|
"""Change the timezone of the server"""
|
|
try:
|
|
system_actions.change_timezone(timezone.timezone)
|
|
except system_actions.InvalidTimezone as e:
|
|
raise HTTPException(status_code=400, detail=str(e))
|
|
return {"timezone": timezone.timezone}
|
|
|
|
|
|
@router.get("/configuration/autoUpgrade")
|
|
async def get_auto_upgrade_settings():
|
|
"""Get the auto-upgrade settings"""
|
|
return system_actions.get_auto_upgrade_settings().dict()
|
|
|
|
|
|
class AutoUpgradeSettings(BaseModel):
|
|
"""Settings for auto-upgrading user data"""
|
|
|
|
enable: Optional[bool] = None
|
|
allowReboot: Optional[bool] = None
|
|
|
|
|
|
@router.put("/configuration/autoUpgrade")
|
|
async def set_auto_upgrade_settings(settings: AutoUpgradeSettings):
|
|
"""Set the auto-upgrade settings"""
|
|
system_actions.set_auto_upgrade_settings(settings.enable, settings.allowReboot)
|
|
return "Auto-upgrade settings changed"
|
|
|
|
|
|
@router.get("/configuration/apply")
|
|
async def apply_configuration():
|
|
"""Apply the configuration"""
|
|
return_code = system_actions.rebuild_system()
|
|
return return_code
|
|
|
|
|
|
@router.get("/configuration/rollback")
|
|
async def rollback_configuration():
|
|
"""Rollback the configuration"""
|
|
return_code = system_actions.rollback_system()
|
|
return return_code
|
|
|
|
|
|
@router.get("/configuration/upgrade")
|
|
async def upgrade_configuration():
|
|
"""Upgrade the configuration"""
|
|
return_code = system_actions.upgrade_system()
|
|
return return_code
|
|
|
|
|
|
@router.get("/reboot")
|
|
async def reboot_system():
|
|
"""Reboot the system"""
|
|
system_actions.reboot_system()
|
|
return "System reboot has started"
|
|
|
|
|
|
@router.get("/version")
|
|
async def get_system_version():
|
|
"""Get the system version"""
|
|
return {"system_version": system_actions.get_system_version()}
|
|
|
|
|
|
@router.get("/pythonVersion")
|
|
async def get_python_version():
|
|
"""Get the Python version"""
|
|
return system_actions.get_python_version()
|
|
|
|
|
|
@router.get("/configuration/pull")
|
|
async def pull_configuration():
|
|
"""Pull the configuration"""
|
|
action_result = system_actions.pull_repository_changes()
|
|
if action_result.status == 0:
|
|
return action_result.dict()
|
|
raise HTTPException(status_code=500, detail=action_result.dict())
|