1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- package config
- import (
- "net/http"
- "net/url"
- "os"
- "github.com/0xJacky/Nginx-UI/internal/helper"
- "github.com/0xJacky/Nginx-UI/internal/nginx"
- "github.com/gin-gonic/gin"
- "github.com/uozi-tech/cosy"
- )
- func Mkdir(c *gin.Context) {
- var json struct {
- BasePath string `json:"base_path"`
- FolderName string `json:"folder_name"`
- }
- if !cosy.BindAndValid(c, &json) {
- return
- }
- // Ensure paths are properly URL unescaped
- decodedBasePath, err := url.QueryUnescape(json.BasePath)
- if err != nil {
- cosy.ErrHandler(c, err)
- return
- }
- decodedFolderName, err := url.QueryUnescape(json.FolderName)
- if err != nil {
- cosy.ErrHandler(c, err)
- return
- }
- fullPath := nginx.GetConfPath(decodedBasePath, decodedFolderName)
- if !helper.IsUnderDirectory(fullPath, nginx.GetConfPath()) {
- c.JSON(http.StatusForbidden, gin.H{
- "message": "You are not allowed to create a folder " +
- "outside of the nginx configuration directory",
- })
- return
- }
- err = os.Mkdir(fullPath, 0755)
- if err != nil {
- cosy.ErrHandler(c, err)
- return
- }
- c.JSON(http.StatusOK, gin.H{
- "message": "ok",
- })
- }
|