mirror of https://github.com/portainer/portainer
				
				
				
			
		
			
				
	
	
		
			65 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Go
		
	
	
			
		
		
	
	
			65 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Go
		
	
	
package motd
 | 
						|
 | 
						|
import (
 | 
						|
	"encoding/json"
 | 
						|
	"net/http"
 | 
						|
	"strings"
 | 
						|
 | 
						|
	"github.com/portainer/libcrypto"
 | 
						|
	"github.com/portainer/libhttp/response"
 | 
						|
	portainer "github.com/portainer/portainer/api"
 | 
						|
	"github.com/portainer/portainer/api/http/client"
 | 
						|
)
 | 
						|
 | 
						|
type motdResponse struct {
 | 
						|
	Title         string            `json:"Title"`
 | 
						|
	Message       string            `json:"Message"`
 | 
						|
	ContentLayout map[string]string `json:"ContentLayout"`
 | 
						|
	Style         string            `json:"Style"`
 | 
						|
	Hash          []byte            `json:"Hash"`
 | 
						|
}
 | 
						|
 | 
						|
type motdData struct {
 | 
						|
	Title         string            `json:"title"`
 | 
						|
	Message       []string          `json:"message"`
 | 
						|
	ContentLayout map[string]string `json:"contentLayout"`
 | 
						|
	Style         string            `json:"style"`
 | 
						|
}
 | 
						|
 | 
						|
// @id MOTD
 | 
						|
// @summary fetches the message of the day
 | 
						|
// @description **Access policy**: restricted
 | 
						|
// @tags motd
 | 
						|
// @security ApiKeyAuth
 | 
						|
// @security jwt
 | 
						|
// @produce json
 | 
						|
// @success 200 {object} motdResponse
 | 
						|
// @router /motd [get]
 | 
						|
func (handler *Handler) motd(w http.ResponseWriter, r *http.Request) {
 | 
						|
	motd, err := client.Get(portainer.MessageOfTheDayURL, 0)
 | 
						|
	if err != nil {
 | 
						|
		response.JSON(w, &motdResponse{Message: ""})
 | 
						|
		return
 | 
						|
	}
 | 
						|
 | 
						|
	var data motdData
 | 
						|
	err = json.Unmarshal(motd, &data)
 | 
						|
	if err != nil {
 | 
						|
		response.JSON(w, &motdResponse{Message: ""})
 | 
						|
		return
 | 
						|
	}
 | 
						|
 | 
						|
	message := strings.Join(data.Message, "\n")
 | 
						|
 | 
						|
	hash := libcrypto.HashFromBytes([]byte(message))
 | 
						|
	resp := motdResponse{
 | 
						|
		Title:         data.Title,
 | 
						|
		Message:       message,
 | 
						|
		Hash:          hash,
 | 
						|
		ContentLayout: data.ContentLayout,
 | 
						|
		Style:         data.Style,
 | 
						|
	}
 | 
						|
 | 
						|
	response.JSON(w, &resp)
 | 
						|
}
 |