From ad6400590c88d56a4902eb01be38d78f26912889 Mon Sep 17 00:00:00 2001 From: Zlatko Bratkovic Date: Tue, 20 Aug 2024 09:27:41 +0200 Subject: [PATCH] MAJOR: move config-parser into client-native there are lots off reasons why we need to do that, but main reason is to move from custom types that config parser uses to client native models. this will also simplify further development since we almost 99% percent of the time need to add similar code to both projects and with this change, only one PR is needed --- README.md | 123 +++++------------------------------------------------- 1 file changed, 11 insertions(+), 112 deletions(-) diff --git a/README.md b/README.md index b06d6e7..db27865 100644 --- a/README.md +++ b/README.md @@ -1,126 +1,25 @@ # ![HAProxy](assets/images/haproxy-weblogo-210x49.png "HAProxy") -## HAProxy configuration parser +
-[![Contributors](https://img.shields.io/github/contributors/haproxytech/config-parser?color=purple)](https://github.com/haproxy/haproxy/blob/master/CONTRIBUTING) -[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](LICENSE) +:warning: This project has been merged with [client-native](https://github.com/haproxytech/client-native) project. -### autogenerated code -if you change types/types.go you need to run -```bash -make generate +use +```go +import "github.com/haproxytech/client-native/v6/config-parser" ``` -### Contributing - -For commit messages and general style please follow the haproxy project's [CONTRIBUTING guide](https://github.com/haproxy/haproxy/blob/master/CONTRIBUTING) and use that where applicable. -Please use `golangci-lint run` from [github.com/golangci/golangci-lint](https://github.com/golangci/golangci-lint) for linting code. - -### Example +instead of ```go -package main - -import ( - "github.com/haproxytech/config-parser/v5" - "github.com/haproxytech/config-parser/v5/options" - "github.com/haproxytech/config-parser/v5/parsers/http/actions" - // ... -) -// ... - -func main() { - p, err := parser.New(options.Path("config.cfg")) - /* p, err := parser.New( - options.UseMd5Hash, - options.Path("config.cfg") - )*/ - if err != nil { - log.Panic(err) - } - - { - data, _ := p.Get(parser.Comments, parser.CommentsSectionName, "# _version", true) - if err == errors.ErrFetch { - log.Panicln("we have an fetch error !!") - } - ver, _ := data.(*types.Int64C) - ver.Value = ver.Value + 1 - } - - { - p.Set(parser.Frontends, "http", "option forwardfor", types.OptionForwardFor{}) - } - - { - // for options that can exists multiple times in config Insert is preffered - // - // setting http-request & http-response is a bit different - // since they accept multiple structs - httpRequestActionDeny := &actions.Deny{ - DenyStatus: "0", - Cond: "unless", - CondTest: "{ src 127.0.0.1 }", - } - err = p.Insert(parser.Backends, "web_servers", "http-request", httpRequestActionDeny) - // you can also choose index where action should be inserted - err = p.Insert(parser.Backends, "web_servers", "http-request", httpRequestActionDeny, 2) - } - - { - data, err := p.Get(parser.Global, parser.GlobalSectionName, "stats socket") - if err != nil { - log.Panicln(err) - } - val, _ := data.([]types.Socket) - log.Println(val[0]) - val[0].Path = "$PWD/haproxy-runtime-api.1.sock" - log.Println(val[0]) - } - - { - data, err := p.Get(parser.Global, parser.GlobalSectionName, "daemon") - log.Println(data, err) - if err == errors.ErrFetch { - log.Panicln("we have an fetch error !!") - } - //remove it - p.Set(parser.Global, parser.GlobalSectionName, "daemon", nil) - } - - { - datar, err := p.Get(parser.Resolvers, "ns1", "nameserver") - if err == nil { - ns := datar.([]types.Nameserver) - log.Println(ns[0].Name, ns[0].Address) - log.Println(ns[1].Name, ns[1].Address) - ns[1].Name = "hahaha" - ns[0].Address = "0.0.0.0:8080" - } - datar, err = p.Get(parser.Resolvers, "ns1", "nameserver") - if err == nil { - ns := datar.([]types.Nameserver) - log.Println(ns[0].Name, ns[0].Address) - log.Println(ns[1].Name, ns[1].Address) - } - } +import "github.com/haproxytech/config-parser/v5" +``` - { - log.Println("nbproc ==================================================") - data, err := p.Get(parser.Global, parser.GlobalSectionName, "nbproc") - if err != nil { - log.Println(err) - } else { - d := data.(*types.Int64C) - log.Println(d.Value) - d.Value = 5 - } - } +## Maintenance mode - p.Save(configFilename) -} +This library remains supported until September 2025 (bug fixes only). -``` +All new development must be done on the [client-native](https://github.com/haproxytech/client-native) repository. ## License