website

package
v0.2.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 22, 2025 License: GPL-3.0 Imports: 5 Imported by: 0

Documentation

Index

Constants

View Source
const (
	CreateWebsite = "create_website"
)
View Source
const (
	ListWebsites = "list_websites"
)

Variables

View Source
var CreateWebsiteTool = mcp.NewServerTool[CreateWebsiteInput, any](
	CreateWebsite,
	"create website",
	func(ctx context.Context, _ *mcp.ServerSession, params *mcp.CallToolParamsFor[CreateWebsiteInput]) (*mcp.CallToolResultFor[any], error) {
		input := params.Arguments
		if input.Domain == "" {
			err := errors.New("domain is required")
			return &mcp.CallToolResult{
				Content: []mcp.Content{&mcp.TextContent{Text: err.Error()}},
				IsError: true,
			}, err
		}

		domain := input.Domain
		alias := domain
		var proxyAddress string
		if input.WebsiteType == "proxy" {
			if input.ProxyAddress == "" {
				err := errors.New("proxy_address is required")
				return &mcp.CallToolResult{
					Content: []mcp.Content{&mcp.TextContent{Text: err.Error()}},
					IsError: true,
				}, err
			}
			proxyAddress = input.ProxyAddress
		}

		groupReq := &types.GroupRequest{
			Type: "website",
		}
		groupRes := &types.GroupRes{}
		result, err := utils.NewPanelClient("POST", "/groups/search", utils.WithPayload(groupReq)).Request(groupRes)
		if err != nil {
			return result, err
		}
		var groupID uint
		for _, group := range groupRes.Data {
			if group.IsDefault {
				groupID = group.ID
				break
			}
		}

		req := &types.CreateWebsiteRequest{
			Domains: []types.WebsiteDomain{
				{
					Domain: domain,
					Port:   80,
					SSL:    false,
				},
			},
			Alias:          alias,
			Type:           input.WebsiteType,
			WebsiteGroupID: groupID,
			Proxy:          proxyAddress,
			AppType:        "new",
		}
		res := &types.Response{}
		result, err = utils.NewPanelClient("POST", "/websites", utils.WithPayload(req)).Request(res)
		if result != nil {
			result.StructuredContent = res
		}
		return result, err
	},
)
View Source
var ListWebsitesTool = mcp.NewServerTool[ListWebsitesInput, any](
	ListWebsites,
	"list websites",
	func(ctx context.Context, _ *mcp.ServerSession, params *mcp.CallToolParamsFor[ListWebsitesInput]) (*mcp.CallToolResultFor[any], error) {
		input := params.Arguments
		req := &types.ListWebsiteRequest{
			Order:   "null",
			OrderBy: "created_at",
			PageRequest: types.PageRequest{
				Page:     1,
				PageSize: 500,
				Name:     input.Name,
			},
		}
		client := utils.NewPanelClient("POST", "/websites/search", utils.WithPayload(req))
		listWebsiteRes := &types.ListWebsiteRes{}
		result, err := client.Request(listWebsiteRes)
		if result != nil {
			result.StructuredContent = listWebsiteRes
		}
		return result, err
	},
)

Functions

This section is empty.

Types

type CreateWebsiteInput added in v0.2.0

type CreateWebsiteInput struct {
	Domain       string `json:"domain" jsonschema:"domain,required"`
	WebsiteType  string `json:"website_type" jsonschema:"website type,only support static and proxy,required"`
	ProxyAddress string `json:"proxy_address,omitempty" jsonschema:"proxy address,only support for proxy website"`
}

type ListWebsitesInput added in v0.2.0

type ListWebsitesInput struct {
	Name string `json:"name,omitempty" jsonschema:"search by website name"`
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL