From 161843f4c8ed32d70fabe340fd16d53074ceab8a Mon Sep 17 00:00:00 2001 From: deranjer Date: Tue, 9 Jun 2020 23:22:07 -0400 Subject: [PATCH] added server logging to file, added logging and formatting to info and lock commands --- client/client.go | 13 +++++++++ client/clientcmd/info.go | 2 +- client/clientcmd/lock.go | 10 ++++++- client/clientcmd/refresh.go | 10 +++++-- client/test/test.go | 44 ++++++++++++++++++----------- go.mod | 2 ++ go.sum | 17 +++++++++++ server/config/serverConfig.toml | 3 +- server/config/serverConfig.toml.old | 6 ---- server/engine/engine.go | 18 ++++++++---- server/gvclog.log | 14 +++++++++ server/server.go | 18 ++++++++++-- server/serverConfig.toml | 30 -------------------- server/serverconfig/config.go | 4 +++ server/serverconfig/structures.go | 1 + 15 files changed, 126 insertions(+), 66 deletions(-) delete mode 100644 server/config/serverConfig.toml.old create mode 100644 server/gvclog.log delete mode 100644 server/serverConfig.toml diff --git a/client/client.go b/client/client.go index 13d0a39..75156c6 100644 --- a/client/client.go +++ b/client/client.go @@ -469,6 +469,11 @@ func lockCommands(cli *clir.Cli, conf *clientconfig.Gvcconfig) { //fmt.Println("Ignoring file: ", file) err := clientcmd.LockFiles(file, "file", conf) if err != nil { + fmt.Println("error occurred locking file, attempting to roll back changes...") + err := clientcmd.RemoveLockFiles(file, "file", conf) + if err != nil { + return fmt.Errorf("fatal error: unable to roll back lock file changes, issue with config: %s", err) + } return err } return nil @@ -477,6 +482,10 @@ func lockCommands(cli *clir.Cli, conf *clientconfig.Gvcconfig) { fmt.Println("Ignoring contents of folder: ", folder) err := clientcmd.LockFiles(folder, "folder", conf) if err != nil { + err := clientcmd.RemoveLockFiles(folder, "folder", conf) + if err != nil { + return fmt.Errorf("fatal error: unable to roll back lock folder changes, issue with config: %s", err) + } return err } return nil @@ -485,6 +494,10 @@ func lockCommands(cli *clir.Cli, conf *clientconfig.Gvcconfig) { fmt.Println("Ignoring files with wildcard filter: ", wildcard) err := clientcmd.LockFiles(wildcard, "wildcard", conf) if err != nil { + err := clientcmd.RemoveLockFiles(wildcard, "wildcard", conf) + if err != nil { + return fmt.Errorf("fatal error: unable to roll back lock wildcard changes, issue with config: %s", err) + } return err } return nil diff --git a/client/clientcmd/info.go b/client/clientcmd/info.go index 7e137b1..d0706c1 100644 --- a/client/clientcmd/info.go +++ b/client/clientcmd/info.go @@ -19,7 +19,7 @@ func GetServerInfo(connectionString string, repoName string) error { } if resp.IsError() { if resp.StatusCode() == 404 { - return fmt.Errorf("error: repo was not found on server, 404: %s", resp.Request.URL) + return fmt.Errorf("repo was not found on server, 404: %s", resp.Request.URL) } return fmt.Errorf("response not a success: %d: connection URL: %s", resp.StatusCode(), resp.Request.URL) } diff --git a/client/clientcmd/lock.go b/client/clientcmd/lock.go index 539ac34..5168424 100644 --- a/client/clientcmd/lock.go +++ b/client/clientcmd/lock.go @@ -36,6 +36,10 @@ func LockFiles(input string, inputType string, conf *clientconfig.Gvcconfig) err } fmt.Println("Adding folder to locked: ", input) conf.Locked.Folders = append(conf.Locked.Folders, input) + err = SendLockToServer(connectionString, conf.RepoName, "folder", input) + if err != nil { + return fmt.Errorf("error sending lock to server: %s", err) + } return nil case "wildcard": var wildcard string @@ -50,6 +54,10 @@ func LockFiles(input string, inputType string, conf *clientconfig.Gvcconfig) err } fmt.Println("Adding wildcard to locked: ", wildcard) conf.Locked.Exts = append(conf.Locked.Exts, wildcard) + err = SendLockToServer(connectionString, conf.RepoName, "wildcard", input) + if err != nil { + return fmt.Errorf("error sending lock to server: %s", err) + } return nil } return fmt.Errorf("This... should not have happened, some kind of internal error on LockFiles function call, switch failure") @@ -133,7 +141,7 @@ func SendLockToServer(connectionString string, repoName string, fileType string, if resp.StatusCode() == 404 { return fmt.Errorf("error: repo was not found on server, 404: %s", resp.Request.URL) } - return fmt.Errorf("response not a success: %d: connection URL: %s", resp.StatusCode(), resp.Request.URL) + return fmt.Errorf("%s: response code: %d: %s", resp.Request.URL, resp.StatusCode(), resp) } fmt.Println(resp) return nil diff --git a/client/clientcmd/refresh.go b/client/clientcmd/refresh.go index a17251d..23ee9d6 100644 --- a/client/clientcmd/refresh.go +++ b/client/clientcmd/refresh.go @@ -4,12 +4,14 @@ import ( "fmt" clientconfig "github.com/deranjer/gvc/client/clientconfig" + "github.com/deranjer/gvc/common" "github.com/go-resty/resty/v2" ) // RefreshContent gets all the new file locks and updated pulls from the server (like git fetch) func RefreshContent(conf *clientconfig.Gvcconfig, repoName string) error { //TODO: need to change command to be able to target user specified servers connectionString, err := FindServer("", conf.CurrentBranch, conf) + var refreshResult common.RepoRefreshRequest if err != nil { return err } @@ -18,16 +20,18 @@ func RefreshContent(conf *clientconfig.Gvcconfig, repoName string) error { //TOD SetPathParams(map[string]string{ "repoName": repoName, }). - Get(connectionString + "/refresh" + "{repoName}") //creating the full string to get info + SetResult(&refreshResult). // Automatically unmarshal the JSON response to our struct + Get(connectionString + "/refresh/" + "{repoName}") //creating the full string to get info if err != nil { return fmt.Errorf("error connecting to server at: %s: error was: %s", connectionString, err) } if resp.IsError() { if resp.StatusCode() == 404 { - return fmt.Errorf("error: repo was not found on server, 404: %s", resp.Request.URL) + return fmt.Errorf("error: repo %s was not found on server, 404: %s", repoName, resp.Request.URL) } - return fmt.Errorf("reponse not a success: %d: connection URL: %s", resp.StatusCode(), resp.Request.URL) + return fmt.Errorf("response not a success: %d: connection URL: %s", resp.StatusCode(), resp.Request.URL) } fmt.Println(resp) + fmt.Printf("%+v\n", refreshResult) return nil } diff --git a/client/test/test.go b/client/test/test.go index fd7378c..42b1a74 100644 --- a/client/test/test.go +++ b/client/test/test.go @@ -2,23 +2,35 @@ package main import ( "fmt" + "reflect" - "github.com/deranjer/clir" + "github.com/imdario/mergo" ) -func main() { - - // Create new cli - cli := clir.NewCli("Other Args", "A basic example", "v0.0.1") - - // Set long description - cli.LongDescription("This app shows positional arguments") - - name := cli.NewSubCommand("name", "Shows your name!") - name.Action(func() error { - fmt.Printf("The remaining arguments were: %+v\n", name.OtherArgs()) - return nil - }) - // Run! - cli.Run() +type Foo struct { + Ignore []string + B int64 +} + +func main() { + src := Foo{ + Ignore: []string{"one", "two", "three"}, + B: 2, + } + dest := Foo{ + Ignore: []string{"one", "two", "four", "seven"}, + } + + mergo.Merge(&dest, src, mergo.WithTransformers()) + fmt.Println(dest) + // Will print + // {two 2} +} + +func MergeStrings(typ reflect.Type) func(dst, src reflect.Value) error { + if typ == reflect.TypeOf([]string{}) { + return func(dst, src reflect.Value) error { + + } + } } diff --git a/go.mod b/go.mod index 511bace..c762efa 100644 --- a/go.mod +++ b/go.mod @@ -7,7 +7,9 @@ require ( github.com/deranjer/store v0.0.0-20200526205429-464dd59c6031 github.com/firstrow/tcp_server v0.0.0-20190424084220-b7a05ff2879d github.com/go-resty/resty/v2 v2.3.0 + github.com/imdario/mergo v0.3.9 // indirect github.com/labstack/echo v3.3.10+incompatible github.com/labstack/echo/v4 v4.1.16 // indirect github.com/smartystreets/goconvey v1.6.4 // indirect + github.com/ziflex/lecho/v2 v2.0.0 // indirect ) diff --git a/go.sum b/go.sum index 66a5af5..69937de 100644 --- a/go.sum +++ b/go.sum @@ -1,10 +1,12 @@ github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/deranjer/clir v1.0.5 h1:tEunZj5qJLYNBtzMQ/vH8hEAIv4NptWFmTldsP9U2qY= github.com/deranjer/clir v1.0.5/go.mod h1:x/FAjr5CHGsBT0yjs+NYxX3qFxx8G15gbeCcN6FFuyU= github.com/deranjer/store v0.0.0-20200526205429-464dd59c6031 h1:sPjxPMNILoBbu6uhDfa97AhlUhTgtPY2HqySAzuLd4o= github.com/deranjer/store v0.0.0-20200526205429-464dd59c6031/go.mod h1:wPOs9IJ77lRTXyjEOQeegCFjIlm21qOFcv33lXmU7gE= +github.com/dgrijalva/jwt-go v3.2.0+incompatible h1:7qlOGliEKZXTDg6OTjfoBKDXWrumCAMpl/TFQ4/5kLM= github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= github.com/firstrow/tcp_server v0.0.0-20190424084220-b7a05ff2879d h1:3/oQzvZhwA8Jb5ykb0KehJfsdHokCJdC96k7xy6SJcs= github.com/firstrow/tcp_server v0.0.0-20190424084220-b7a05ff2879d/go.mod h1:hGkv6sO57ZC+XrSTyzdIGXX7+O6S3RJb9G8sPopEF/4= @@ -13,11 +15,14 @@ github.com/go-resty/resty/v2 v2.3.0 h1:JOOeAvjSlapTT92p8xiS19Zxev1neGikoHsXJeOq8 github.com/go-resty/resty/v2 v2.3.0/go.mod h1:UpN9CgLZNsv4e9XG50UU8xdI0F43UQ4HmxLBDwaroHU= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1 h1:EGx4pi6eqNxGaHF6qqu48+N2wcFQ5qg5FXgOdqsJ5d8= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= +github.com/imdario/mergo v0.3.9 h1:UauaLniWCFHWd+Jp9oCEkTBj8VO/9DKg3PV3VCNMDIg= +github.com/imdario/mergo v0.3.9/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo= github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= github.com/labstack/echo v1.4.4 h1:1bEiBNeGSUKxcPDGfZ/7IgdhJJZx8wV/pICJh4W2NJI= github.com/labstack/echo v3.3.10+incompatible h1:pGRcYk231ExFAyoAjAfD85kQzRJCRI8bbnE7CX5OEgg= github.com/labstack/echo v3.3.10+incompatible/go.mod h1:0INS7j/VjnFxD4E2wkz67b8cVwCLbBmJyDaka6Cmk1s= +github.com/labstack/echo/v4 v4.1.10/go.mod h1:i541M3Fj6f76NZtHSj7TXnyM8n2gaodfvfxNnFqi74g= github.com/labstack/echo/v4 v4.1.16 h1:8swiwjE5Jkai3RPfZoahp8kjVCRNq+y7Q0hPji2Kz0o= github.com/labstack/echo/v4 v4.1.16/go.mod h1:awO+5TzAjvL8XpibdsfXxPgHr+orhtXZJZIQCVjogKI= github.com/labstack/gommon v0.3.0 h1:JEeO0bvc78PKdyHxloTKiF8BD5iGrH8T6MSeGvSgob0= @@ -29,7 +34,11 @@ github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hd github.com/mattn/go-isatty v0.0.9/go.mod h1:YNRxwqDuOph6SZLI9vUUz6OYw3QyUt7WiY2yME+cCiQ= github.com/mattn/go-isatty v0.0.12 h1:wuysRhFDzyxgEmMf5xjvJ2M9dZoWAXNNr5LSBS7uHXY= github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= +github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/rs/xid v1.2.1/go.mod h1:+uKXf+4Djp6Md1KODXJxgGQPKngRmWyn10oCKFzNHOQ= +github.com/rs/zerolog v1.15.0 h1:uPRuwkWF4J6fGsJ2R0Gn2jB1EQiav9k3S6CSdygQJXY= +github.com/rs/zerolog v1.15.0/go.mod h1:xYTKnLHcpfU2225ny5qZjxnj9NvkumZYjJHlAThCjNc= github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d h1:zE9ykElWQ6/NYmHa3jpm/yHnI4xSofP+UP6SpjHcSeM= github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= github.com/smartystreets/goconvey v1.6.4 h1:fv0U8FUIMPNf1L9lnHLvLhgicrIVChEkdzIKYqbNC9s= @@ -41,7 +50,12 @@ github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyC github.com/valyala/fasttemplate v1.0.1/go.mod h1:UQGH1tvbgY+Nz5t2n7tXsz52dQxojPUpymEIMZ47gx8= github.com/valyala/fasttemplate v1.1.0 h1:RZqt0yGBsps8NGvLSGW804QQqCUYYLsaOjTVHy1Ocw4= github.com/valyala/fasttemplate v1.1.0/go.mod h1:UQGH1tvbgY+Nz5t2n7tXsz52dQxojPUpymEIMZ47gx8= +github.com/zenazn/goji v0.9.0/go.mod h1:7S9M489iMyHBNxwZnk9/EHS098H4/F6TATF2mIxtB1Q= +github.com/ziflex/lecho v1.2.0 h1:/ykfd7V/aTsWUYNFimgbdhUiEMnWzvNaCxtbM/LX5F8= +github.com/ziflex/lecho/v2 v2.0.0 h1:ggrWF5LaGAC+Y+WX71jFK7uYR7cUFbHjIgGqCyrYC5Q= +github.com/ziflex/lecho/v2 v2.0.0/go.mod h1:s7dy9Fynjx6z+/7xE2BsK13vXIS3oQoo4ZaKXYG5xUs= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200221231518-2aa609cf4a9d h1:1ZiEyfaQIg3Qh0EoqpwAakHVhecoE5wlSg5GjnafJGw= golang.org/x/crypto v0.0.0-20200221231518-2aa609cf4a9d/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= @@ -50,6 +64,7 @@ golang.org/x/net v0.0.0-20200226121028-0de0cce0169b h1:0mm1VjtFUOIlE1SbDlwjYaDxZ golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200513185701-a91f0712d120 h1:EZ3cVSzKOlJxAd8e8YAJ7no8nNypTxexh/YE/xW3ZEY= golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -57,12 +72,14 @@ golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae h1:/WDfKMnPU+m5M4xB+6x4kaepxRw6jWvR5iDRdvjHgy8= golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd h1:xhmwyvizuTgC2qz7ZlMluP20uW+C3Rm0FD/WLDX8884= golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190425163242-31fd60d6bfdc/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= diff --git a/server/config/serverConfig.toml b/server/config/serverConfig.toml index d27d040..ce958c6 100644 --- a/server/config/serverConfig.toml +++ b/server/config/serverConfig.toml @@ -1,3 +1,4 @@ +logfile = "gvclog.log" version = "0.1" port = 80 ip = "" @@ -15,7 +16,7 @@ reporootpath = "F:\\repos" key = "12345" lastcommit = "4343434343434" [repo.locked] - files = ["client1.exe", "client2.exe"] + files = ["client1.exe", "client2.exe", "client.go"] [repo.defaultignore] [repo.nocompress] diff --git a/server/config/serverConfig.toml.old b/server/config/serverConfig.toml.old deleted file mode 100644 index ebe8e8b..0000000 --- a/server/config/serverConfig.toml.old +++ /dev/null @@ -1,6 +0,0 @@ -version = "0.1" -port = 80 -ip = "" -rawport = 0 -reporootpath = "F:\\repos" - diff --git a/server/engine/engine.go b/server/engine/engine.go index 83a8adb..c89e85b 100644 --- a/server/engine/engine.go +++ b/server/engine/engine.go @@ -2,7 +2,6 @@ package engine import ( "fmt" - "log" "net/http" "github.com/deranjer/gvc/common" @@ -28,6 +27,10 @@ func (Server *GVCServer) GetInfo(context echo.Context) error { } } } + if repoInfo.Repo.RepoName == "" { + return echo.NewHTTPError(http.StatusNotFound, "repo apparently not found") + } + Server.Echo.Logger.Infof("returning information about repo: %s", repo) return context.JSONPretty(http.StatusAccepted, repoInfo, " ") } @@ -36,16 +39,18 @@ func (Server *GVCServer) LockFile(context echo.Context) error { fileType := context.Param("type") fileName := context.Param("name") repoName := context.Param("repo") - fmt.Printf("Lockfile: %s %s %s", repoName, fileType, fileName) + Server.Echo.Logger.Infof("Lockfile: %s %s %s", repoName, fileType, fileName) var locked common.FileTypes + var index int for i, repo := range Server.Config.Repos { if repo.RepoName == repoName { + index = i locked = Server.Config.Repos[i].Locked } } err := common.CheckFileTypes(fileName, fileType, locked) // making sure fi/f/wc is not already locked or cannot be locked. if err != nil { - return fmt.Errorf("failed checking file lock: %s", err) + return echo.NewHTTPError(http.StatusInternalServerError, fmt.Sprintf("failed checking file lock: %s", err)) } switch fileType { case "file": @@ -58,12 +63,13 @@ func (Server *GVCServer) LockFile(context echo.Context) error { fmt.Println("Wildcard: ", fileName) locked.Exts = append(locked.Exts, fileName) } - fmt.Println("Locked: ", locked) // TODO!!!!!!!!!!!! Write this to conf + Server.Config.Repos[index].Locked = locked + Server.Echo.Logger.Infof("server attempting to lock file: %s of type %s", fileName, fileType) err = store.Save(serverconfig.DefaultConfigPath, Server.Config) // Save our new default config back to TOML so it can be read in if err != nil { - log.Fatalf("unable to save config to toml file: %s", err) + return echo.NewHTTPError(http.StatusInternalServerError, fmt.Sprintf("server unable to save lock to server: %s", err)) } - return nil + return context.String(http.StatusAccepted, "file locked on server") } // Refresh sends all updated information to client (like git fetch) diff --git a/server/gvclog.log b/server/gvclog.log new file mode 100644 index 0000000..aeb8dd5 --- /dev/null +++ b/server/gvclog.log @@ -0,0 +1,14 @@ +{"time":"2020-06-09T20:56:46.5428576-04:00","id":"","remote_ip":"::1","host":"localhost:80","method":"GET","uri":"/lock/gvc/file/client.go","user_agent":"go-resty/2.3.0 (https://github.com/go-resty/resty)","status":500,"error":"code=500, message=failed checking file lock: file name is on excludeList, cannot add file with name client.go","latency":0,"latency_human":"0s","bytes_in":0,"bytes_out":106} +{"time":"2020-06-09T21:13:05.528876-04:00","id":"","remote_ip":"::1","host":"localhost:80","method":"GET","uri":"/lock/gvc/file/client.go","user_agent":"go-resty/2.3.0 (https://github.com/go-resty/resty)","status":500,"error":"code=500, message=failed checking file lock: file name is on excludeList, cannot add file with name client.go","latency":0,"latency_human":"0s","bytes_in":0,"bytes_out":106} +{"time":"2020-06-09T22:09:36.2468239-04:00","id":"","remote_ip":"::1","host":"localhost:80","method":"GET","uri":"/lock/gvc/file/client.go","user_agent":"go-resty/2.3.0 (https://github.com/go-resty/resty)","status":500,"error":"code=500, message=failed checking file lock: file name is on excludeList, cannot add file with name client.go","latency":0,"latency_human":"0s","bytes_in":0,"bytes_out":106} +{"time":"2020-06-09T22:33:08.8260147-04:00","id":"","remote_ip":"::1","host":"localhost:80","method":"GET","uri":"/info/gvc","user_agent":"go-resty/2.3.0 (https://github.com/go-resty/resty)","status":202,"error":"","latency":0,"latency_human":"0s","bytes_in":0,"bytes_out":588} +{"time":"2020-06-09T22:33:49.1917423-04:00","id":"","remote_ip":"::1","host":"localhost:80","method":"GET","uri":"/info/gvc","user_agent":"go-resty/2.3.0 (https://github.com/go-resty/resty)","status":404,"error":"code=404, message=repo apparently not found","latency":0,"latency_human":"0s","bytes_in":0,"bytes_out":40} +{"time":"2020-06-09T22:35:01.8253061-04:00","id":"","remote_ip":"::1","host":"localhost:80","method":"GET","uri":"/info/gvc","user_agent":"go-resty/2.3.0 (https://github.com/go-resty/resty)","status":404,"error":"code=404, message=repo apparently not found","latency":0,"latency_human":"0s","bytes_in":0,"bytes_out":40} +{"time":"2020-06-09T22:35:34.7362521-04:00","id":"","remote_ip":"::1","host":"localhost:80","method":"GET","uri":"/info/gvc","user_agent":"go-resty/2.3.0 (https://github.com/go-resty/resty)","status":202,"error":"","latency":1000500,"latency_human":"1.0005ms","bytes_in":0,"bytes_out":414} +{"time":"2020-06-09T22:35:59.5823542-04:00","id":"","remote_ip":"::1","host":"localhost:80","method":"GET","uri":"/info/gvc","user_agent":"go-resty/2.3.0 (https://github.com/go-resty/resty)","status":404,"error":"code=404, message=repo apparently not found","latency":0,"latency_human":"0s","bytes_in":0,"bytes_out":40} +{"time":"2020-06-09T22:52:11.3303094-04:00","id":"","remote_ip":"::1","host":"localhost:80","method":"GET","uri":"/refreshgvc","user_agent":"go-resty/2.3.0 (https://github.com/go-resty/resty)","status":404,"error":"code=404, message=Not Found","latency":0,"latency_human":"0s","bytes_in":0,"bytes_out":24} +{"time":"2020-06-09T22:53:26.1999036-04:00","id":"","remote_ip":"::1","host":"localhost:80","method":"GET","uri":"/refreshgvc","user_agent":"go-resty/2.3.0 (https://github.com/go-resty/resty)","status":404,"error":"code=404, message=Not Found","latency":0,"latency_human":"0s","bytes_in":0,"bytes_out":24} +{"time":"2020-06-09T22:54:20.1925112-04:00","id":"","remote_ip":"::1","host":"localhost:80","method":"GET","uri":"/refresh/gvc","user_agent":"go-resty/2.3.0 (https://github.com/go-resty/resty)","status":200,"error":"","latency":0,"latency_human":"0s","bytes_in":0,"bytes_out":177} +{"time":"2020-06-09T22:54:58.6865514-04:00","id":"","remote_ip":"::1","host":"localhost:80","method":"GET","uri":"/refresh/gvc","user_agent":"go-resty/2.3.0 (https://github.com/go-resty/resty)","status":200,"error":"","latency":0,"latency_human":"0s","bytes_in":0,"bytes_out":177} +{"time":"2020-06-09T22:56:01.309063-04:00","id":"","remote_ip":"::1","host":"localhost:80","method":"GET","uri":"/refresh/gvc","user_agent":"go-resty/2.3.0 (https://github.com/go-resty/resty)","status":200,"error":"","latency":0,"latency_human":"0s","bytes_in":0,"bytes_out":177} +{"time":"2020-06-09T22:56:25.9765046-04:00","id":"","remote_ip":"::1","host":"localhost:80","method":"GET","uri":"/refresh/gvc","user_agent":"go-resty/2.3.0 (https://github.com/go-resty/resty)","status":200,"error":"","latency":0,"latency_human":"0s","bytes_in":0,"bytes_out":177} diff --git a/server/server.go b/server/server.go index 2fad8ec..899f134 100644 --- a/server/server.go +++ b/server/server.go @@ -2,12 +2,14 @@ package main import ( "fmt" + "log" + "os" "github.com/deranjer/gvc/server/engine" serverconfig "github.com/deranjer/gvc/server/serverconfig" "github.com/deranjer/store" "github.com/labstack/echo" - "github.com/labstack/gommon/log" + "github.com/labstack/echo/middleware" ) var version = "0.1" @@ -22,6 +24,7 @@ func main() { fmt.Printf("Unable to find config file: %s\n", err) fmt.Println("Since no config found, creating a default config to use...") conf = serverconfig.GvcServerConfig{ + LogFile: "gvclog.log", Version: "0.1", Port: 80, RepoRootPath: "repos", //default repos directory will be cwd\repos @@ -43,9 +46,20 @@ func main() { // Setup a new server instance var server engine.GVCServer server.Config = conf - log.Info("Logger starting...") + fmt.Println("Attempting to start logger...") + // Setting up the logger to file output + logFile, err := os.OpenFile(conf.LogFile, os.O_RDWR|os.O_CREATE|os.O_APPEND, 0666) + if err != nil { + log.Fatalf("unable to open log file at: %s, exiting with error: %s", conf.LogFile, err) + } + defer logFile.Close() // Setup the web server e := echo.New() + // Setup the logger to print to the file specified in config + e.Use(middleware.LoggerWithConfig(middleware.LoggerConfig{ + Output: logFile, + })) + e.Logger.Info("echo logger has started") server.Echo = e //Start the routes //e.GET("/hello", server.Hello) diff --git a/server/serverConfig.toml b/server/serverConfig.toml deleted file mode 100644 index d27d040..0000000 --- a/server/serverConfig.toml +++ /dev/null @@ -1,30 +0,0 @@ -version = "0.1" -port = 80 -ip = "" -rawport = 0 -reporootpath = "F:\\repos" - -[[repo]] - rootpath = "" - reponame = "gvc" - defaultbranch = "master" - localbranches = ["master"] - - [[repo.client]] - name = "deranjer" - key = "12345" - lastcommit = "4343434343434" - [repo.locked] - files = ["client1.exe", "client2.exe"] - [repo.defaultignore] - [repo.nocompress] - -[[repo]] - rootpath = "" - reponame = "testrepo" - defaultbranch = "master" - localbranches = ["master", "feature1"] - [repo.locked] - [repo.defaultignore] - [repo.nocompress] - diff --git a/server/serverconfig/config.go b/server/serverconfig/config.go index a2803b1..fd37898 100644 --- a/server/serverconfig/config.go +++ b/server/serverconfig/config.go @@ -40,6 +40,10 @@ func ValidateConfig(conf *GvcServerConfig, configPath string, version string) er fmt.Printf("No version found, inputing current server version: %s\n", version) conf.Version = version } + if conf.LogFile == "" { // If no log file specified, set log location + fmt.Printf("No logfile found in config, setting it to: gvclog.log :in root dir:") + conf.LogFile = "gvclog.log" + } if conf.RepoRootPath == "" { fmt.Println("Repo root path: ", conf.RepoRootPath) path, err := os.Getwd() diff --git a/server/serverconfig/structures.go b/server/serverconfig/structures.go index 6d7d1ad..286ce21 100644 --- a/server/serverconfig/structures.go +++ b/server/serverconfig/structures.go @@ -4,6 +4,7 @@ import "github.com/deranjer/gvc/common" // GvcServerConfig will hold the base server settings type GvcServerConfig struct { + LogFile string `toml:"logfile"` // Where to store the echo logs Version string `toml:"version"` // The server version Port int `toml:"port"` // The port that the server will listed on BindIP string `toml:"ip"` // What IP to bind the server to. If empty will bind to all interfaces