// GetPlaceHolders return the placeholders that are present in the appname config file func GetPlaceHolders(c *gin.Context) { name := c.Param("appname") myViper, err := readTemplate(name) if err != nil { c.String(http.StatusNotFound, "Config file for %s not found\n", name) } else { properties := placeholders.GetPlaceHolders(myViper) c.IndentedJSON(http.StatusOK, properties) } }
func GetHome(c *gin.Context) { logo := ` . .__ __ _____|__| ____ _______/ |______ / ___/ |/ __ \ / ___/\ __\__ \ \___ \| \ ___/ \___ \ | | / __ \_ /____ >__|\___ >____ > |__| (____ / \/ \/ \/ \/ ` c.String(http.StatusOK, logo) }
func rateLimit(c *gin.Context) { ip := c.ClientIP() value := int(ips.Add(ip, 1)) if value%50 == 0 { fmt.Printf("ip: %s, count: %d\n", ip, value) } if value >= 200 { if value%200 == 0 { fmt.Println("ip blocked") } c.Abort() c.String(503, "you were automatically banned :)") } }
// GetConfig return the configuration file for a given appname func GetConfig(c *gin.Context) { name := c.Param("appname") myViper, err := readTemplate(name) if err != nil { c.String(http.StatusNotFound, "Config file for %s not found\n", name) } else { filename := myViper.ConfigFileUsed() content, err := fileReader(filename) if err != nil { c.String(http.StatusNotFound, "Config file for %s not found\n", name) } w := c.Writer io.Copy(w, content) } }