123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- package v2
- import (
- "net/http"
- "net/url"
- "os"
- "path/filepath"
- "github.com/IceWhaleTech/CasaOS/codegen"
- "github.com/IceWhaleTech/CasaOS/pkg/utils/file"
- "github.com/IceWhaleTech/CasaOS/service"
- "github.com/labstack/echo/v4"
- "github.com/mholt/archiver/v3"
- )
- func (s *CasaOS) GetHealthServices(ctx echo.Context) error {
- services, err := service.MyService.Health().Services()
- if err != nil {
- message := err.Error()
- return ctx.JSON(http.StatusInternalServerError, codegen.ResponseInternalServerError{
- Message: &message,
- })
- }
- return ctx.JSON(http.StatusOK, codegen.GetHealthServicesOK{
- Data: &codegen.HealthServices{
- Running: services[true],
- NotRunning: services[false],
- },
- })
- }
- func (s *CasaOS) GetHealthPorts(ctx echo.Context) error {
- tcpPorts, udpPorts, err := service.MyService.Health().Ports()
- if err != nil {
- message := err.Error()
- return ctx.JSON(http.StatusInternalServerError, codegen.ResponseInternalServerError{
- Message: &message,
- })
- }
- return ctx.JSON(http.StatusOK, codegen.GetHealthPortsOK{
- Data: &codegen.HealthPorts{
- TCP: &tcpPorts,
- UDP: &udpPorts,
- },
- })
- }
- func (c *CasaOS) GetHealthlogs(ctx echo.Context) error {
- var name, currentPath, commonDir, extension string
- var err error
- var ar archiver.Writer
- fileList, err := os.ReadDir("/var/log/casaos")
- if err != nil {
- message := err.Error()
- return ctx.JSON(http.StatusInternalServerError, codegen.ResponseInternalServerError{
- Message: &message,
- })
- }
- extension, ar, err = file.GetCompressionAlgorithm("zip")
- if err != nil {
- ctx.Response().Header().Set("Content-Type", "application/json")
- message := err.Error()
- return ctx.JSON(http.StatusNotFound, codegen.ResponseInternalServerError{
- Message: &message,
- })
- }
- err = ar.Create(ctx.Response().Writer)
- if err != nil {
- ctx.Response().Header().Set("Content-Type", "application/json")
- message := err.Error()
- return ctx.JSON(http.StatusNotFound, codegen.ResponseInternalServerError{
- Message: &message,
- })
- }
- defer ar.Close()
- commonDir = "/var/log/casaos"
- currentPath = filepath.Base(commonDir)
- name = currentPath
- name += extension
- ctx.Response().Header().Add("Content-Type", "application/octet-stream")
- ctx.Response().Header().Add("Content-Transfer-Encoding", "binary")
- ctx.Response().Header().Add("Cache-Control", "no-cache")
- ctx.Response().Header().Add("Content-Disposition", "attachment; filename*=utf-8''"+url.PathEscape(name))
- for _, fname := range fileList {
- err := file.AddFile(ar, filepath.Join("/var/log/casaos", fname.Name()), commonDir)
- if err != nil {
- message := err.Error()
- return ctx.JSON(http.StatusInternalServerError, codegen.ResponseInternalServerError{
- Message: &message,
- })
- }
- }
- return nil
- }
|