- FIX: potential CWE-400 with bufio.ReadBytes & bufio.ReadSlices, with
no limited read buffer
- ADD: test to check overflow buffer with discard or error
- REFACTOR: all buffering package, parsing process
- UPDATE: doc, examples, test following changes
- OPTIMIZE: rework code to optimize process
- REWORK: benchmark to check benefice of optimization
- FIX: wording error
Package IOUtils/Multi:
- REWORK: re-design all package to allow sequential/parallel mode
- UPDATE: package with adaptive mode to allow switch automaticly between
sequential and parallel mode following measurment of sample
- OPTIMIZE: code to maximize bandwith and reduce time of write
- UPDATE: documentation, test and comments
- REWORK: testing organization and benchmark aggregation
Package HttpServer:
- FIX: bug with dial addr rewrite for healtcheck & testing PortUse
Package Logger/HookFile:
- FIX: bug with race condition on aggregator counter file
Other:
- Bump dependencies
- FIX: format / import file
[file/bandwidth]
- ADD documentation: add enhanced README and TESTING guidelines
- ADD tests: complete test suites with benchmarks, concurrency, and edge cases
[file/perm]
- ADD documentation: add enhanced README and TESTING guidelines
- ADD tests: complete test suites with benchmarks, concurrency, and edge cases
- ADD function to parse form "rwx-wxr-x" or "-rwx-w-r-x"
- ADD function to ParseFileMode to convert os.FileMode to file.Perm
[file/progress]
- ADD documentation: add enhanced README and TESTING guidelines
- ADD tests: complete test suites with benchmarks, concurrency, and edge cases
[ioutils/...]
- UPDATE documentation: update enhanced README and TESTING guidelines
- UPDATE tests: complete test suites with benchmarks, concurrency, and edge cases
[logger/...]
- UPDATE documentation: update enhanced README and TESTING guidelines
- ADD documentation: add enhanced README and TESTING guidelines for sub
packages
- UPDATE tests: complete test suites with benchmarks, concurrency, and edge cases
- UPDATE config: remove FileBufferSize from OptionFile (rework hookfile)
- UPDATE fields: expose Store function in interface
- REWORK hookfile: rework package, use aggregator to allow multi write and
single file
- FIX hookstderr: fix bug with NonColorable
- FIX hookstdout: fix bug with NonColorable
- FIX hookwriter: fix bug with NonColorable
[network/protocol]
- ADD function IsTCP, IsUDP, IsUnixLike to check type of protocol
[runner]
- FIX typo
[socket]
- UPDATE documentation: update enhanced README and TESTING guidelines
- ADD documentation: add enhanced README and TESTING guidelines for sub
packages
- UPDATE tests: complete test suites with benchmarks, concurrency, and edge cases
- REWORK server: use context compatible io.reader, io.writer, io.closer
instead of reader / writer
- REWORK server: simplify, optimize server
- REMOVE reader, writer type
- ADD context: add new interface in root socket interface to expose
context interface that extend context, io reader/writer/closer,
dediacted function to server (IsConnected, ...)
- Add some README file to give missing documentations or update existing documentation file
Package Archive:
- Add some comments to godoc information
- Moving NopWriterCloser interface to ioutils package
Package IOUtils:
- New package NopWriterCloser to implement interfac like NopReader
Package Database:
- KVMap: fix missing function following update of kvdriver
Package Duration:
- Rename BDD testing
Package Context/Gin:
- Moving function New between model & interface file
Package AWS:
- rework Walk function to use more generic with standard walk caller function
- func walk will now no more return and include error (can be catched into the given func)
- func walk will now return a bool to continue or stop the loop
- func walk with many input function will now stop when all given function return false
- func walk will now return error only about main process and not given function
Package errors:
- Add interface error into interface Error
Package IOUtils:
- Moving IOWrapper as subPackage and optimize process + allow thread safe
- STD IO Writer Logger: add capabilities of multi filter slice of byte
- STD IO Writer Logger: add function Add..Filter to allow adding filter and not full setting the pattern list
Package HTTP Server:
- Rework filtering logger message to ignore connections reset by peer in server logger
- Rework filtering logger message to ingore all TLS Handshake error in logger
- fix bug with cert type marshall/unmarshall
- add old config to allow retro compatibility
- add new type function to retrieve a tls root ca cert instead of a slice of string to get root ca
Package HTTPCli:
- fix default DNS Mapper
- optimze global DNS Mapper
- fix non closing sub goroutine
Package HTTPCli/DNS-Mapper:
- change request function of Root CA with function of root ca cert instance
- add function to return a root ca cert from a function that return a slice of root ca string
Package Config/Components:
- httpcli: bump sub package of certificate, httpcli
- httpcli: adjust code following bump
- httpcli: change request function of Root CA with function of root ca cert instance
- httpcli: add function to return a root ca cert from a function that return a slice of root ca string
- tls: change request function of Root CA with function of root ca cert instance
- tls: add function to return a root ca cert from a function that return a slice of root ca string
Package IOUtils/mapCloser:
- fix bug with mapcloser not stopped
- optimize code & goroutine
Package Logger:
- rework mapCloser call
- optimize mapClaoser managment
Package Request:
- rework error managment
- using []byte instead of buffer to read response body
- add free capability
- optimize memory consumption
Package Socket / Server:
- add filtering error capability
- add params to specify a function called on each new connection and before using the connection
- the new function param allow to update the network incomming connection (like buffer, deadline...)
- rework some useless atomic to direct value to optimize code
Package Socket/Delim:
- rework to optimize memory & variable use
- remove capabilities of update the instance when running, prefert recreate new one if necessary
Other:
- bump dependencies
- minor bug / fix
- fix anonymousCredential with retrieve following bump of aws sdk
Package Logger:
- add check on io interface to prevent closing instance and allowing gracefull closing
Other:
- bump dependencies
- new package to use/consume CPU / MEM pprof root package
- create a file on same location as runable binary to store profile
Package HTTPClient
- add message function called on each Dial/DialContext call function
- function message can be nil
Package Server
- add generic function for recover message / catching
- implement this recovring function into runner StartStop & Ticker
Package Logger:
- implement generic recovering function into hook
- fix bug if instance is an invalid instance of fields or entry
- Add option to define the buffer size for logger file
- Rework Hashicorp wrapper to not use a standalone pointer of logger and prefer a function to retrieve the logger
- reword some panic recovery message
- add function to check current TLSMode
Package Logger:
- fix recovering message to identify origin
- fix error on freebuffer function
Package Server:
- fix recovering message to identify origin
Other:
- bump dependencies
- fix security arbitrary path
- fix linter
Package AWS:
- implement resolver v2
Package Cobra:
- fix linter
Package Config/component:
- fix linter
Package Context/Config:
- Add function to set context
Package Database/KV...:
- Fix error
- Fix collision pointer
- Fix models
- Fix circular dependencies
- Add function Delete on driver, table and item
- Add function new on drvier to prevent collision data when create item on table get / walk
Package Duration:
- Add type Duration based on time.Duration to allow transform duration to string instead of int64 nanosecond
- Add function to parse in json, yaml, toml, text, cbor
- Add function to allow convert type into mapstructure (spf13 viper, cobra...)
Package File/Perm:
- Add type Perm based on os.FileMode to allow marshall / unmashall it into octal form instead of string representation (-rwxrwxrwx)
- Add function to marshall / unmarshall in json, yaml, toml, text, cbor
- Add function to allow convert type into mapstructure (spf13 viper, cobra...)
Package File/progress:
- Fix linter
Package HTTPServer :
- Fix linter
- Fix security by adding a default value if not set on config
Package ioutils:
- Fix Linter
Package LDAP:
- Add Clone function
Package logger/hookfile:
- Fix linter
Package nats:
- Fix linter
Package Network/Protocol:
- Fix bug with quote / Dbl Quote on unmarshall
Package Password:
- Replace password with crypto rand instead of math rand
Package Size:
- Fix potential overflow
- Add function to format value into Int32, Int, Uint32, Uint, Float32
- Add function to parse Float64 into type Size
Package Socket:
- change config uint32 to golib Size, time.Duration to golib Duration
- add TLS managment to server TCP, discard for UDP & Unix file Local Domain
- add function Info Server to print information of server when listen is starting
Package Semaphore:
- simplify the base semaphore (context, max wheight...)
- merge semaphore with progress instance
- extend semaphore with context interface
Package Progress
- rework MPB instance
- bump MBP to v8
- integrate MPB into Semaphore to use a same instance for sem / mpb
- rework bar to simplify it
- bar is now also a semaphore & context
- allow to create bar with custom options
Package Errors:
- add function to check & cast error interface into golib Error interface
- update CodeError type to simplify management & error creation
- add function to simplify call of Error function from a generic error interface
- remove some useless function from Error interface
All Other Packages:
- apply change of package Errors into all other packages
Package ioutils:
- remove file progress from ioutils and rework it to package
file/progress
Package file/progress:
- simplify call / use of file progress
- optimize code
- use atomic to function progress
- isolation part of code
- make interface more compatible with *os/File / io interface
Package archive/gzipreader
- create package to expose a io.reader interface from a no gzipped io.reader
- add interface GZipReader to expose metrics like rate of compression
Package archive:
- apply following change
- add minor internal change into errors files
Package artifact:
- apply following change
- add minor internal change into errors files
Package aws:
- apply following change
- removing minio server from repo
Package mail:
- apply following change
- add minor internal change into errors files
Package nutsdb:
- apply following change
- add minor internal change into errors files
Package static:
- apply following change
Other:
- bump dependencies
- ci/cd : add a wget command to dl minio server for testing
- add aws/minio to gitignore
- Rework for the management of mandatory components to qualify the global status.
- Added qualification to components: "should", "must", "one of".
- These qualifications will influence the overall state but not the unitary state of each component.
Package Socket:
- Creation package to open and listen local unix file socket
- Allow to specify a handler who's needing a conn instance as entry
- Create a client sub package to allow negociate with the local unix file socket
Package Shell:
- adding sub package for command and command collection
Package Monitor:
- add function to expose monitor command for shell
Package Config:
- add function to expose monitor command for shell
Package Network:
- Add "IP" protocol
Pakcage Httpcli:
- Rework the construction of the client
- Add capability to specify proxy url
Package Cobra:
- add function to add flag to global command like verbose or config
Package Log:
- fix seg fault when calling a nil instance
- remove println in hookfile / hooksyslog
- fix buffer wrtting / cleanning
- add recovery to catch fatal error
Package Server :
- add recovery to catch fatal error
Package Status :
- add IsHealthy function with cache value to prevent checking monitor on all call
Bump dependencies
- Rework logger
- Remove deprecated functions
- Split Logger to sub package (fields, level, config, ...)
- Optimize dependencies
- Rework Hookfile: fix error like FD still opened
- Rework Hooksyslog: use same model like Hookfile, use network/protocol instead of self lib
- Rework HookStd: use independent hook for std out & std err
- Fix std config make generic options for files & syslog
- Apply formatter to hook instead of main logger entry
- optimize code
Package ioutils:
- rework PathCheckCreate funct: optimize code & fix some error
Package Network:
- create sub package protocol for all network protocl use
- add encode function
Package httpcli:
- remove file network
- use package network/protocol instead of network file
Package archive:
- apply change following rework of logger
Package aws:
- apply change following rework of logger
Package cluster:
- apply change following rework of logger
Package cobra:
- apply change following rework of logger
Package Config Component:
- apply change following rework of logger to component log
- fix logger for monitoring
- fix component following fix of package request / monitoring
Package context:
- apply change following rework of logger
Package database:
- apply change following rework of logger
Package httpserver:
- apply change following rework of logger
Package ldap:
- apply change following rework of logger
Package monitor:
- apply change following rework of logger
- fix logger for monitoring
- fix minor bugs
Package nats:
- apply change following rework of logger
Package nutsdb:
- apply change following rework of logger
Package request:
- apply change following rework of logger
- fix minor bug
- fix missing logger for monitoring
- add one line for healthcheck (info or error)
Package router:
- apply change following rework of logger
Package static:
- apply change following rework of logger
Package status:
- apply change following rework of logger
- fix bug with mandatory component
Package viper:
- apply change following rework of logger
Other:
- bump dependencies
- github action workflow fix
- objects / list Access All : add username param to allow list access and return a slice of access struct for the specify user, if username is empty, send the request without username
- sizepart : remove sizepart struct and replace it by package golib/size
Package Logger:
- fields : fix error with field & sync/map
Bump dependencies
- Add interface Errors to expose func for collection of errors
Package Server:
- Add runner packages for start/stop & ticker process launch in goroutines
- Runner Start/Stop : register a start and a stop function called into a managment instance of goroutines, expose package Server interface
- Runner Ticker : register a func periodycly called into a managment instance of goroutine with a time ticker, expose package server interface
- Add tools function to run x times a function or periodicly with a check function
Package HttpServer:
- Remove old run managment instance and use new Start&Stop Runner instead self runner
- Replace the poller in server start / stop with package server tools function
- Adjust code following this change
- Add in healthcheck a test of dialing to server binding network to perform the healthcheck
- Remove WaitNotify funct (cannot having multiple of waitnotify in same app) : keep waitnotify function in package config
Package Monitor:
- Remove old running system to use package server/runner/ticker
- Adjust code following
Package Cobra :
- Fix minor bug with writing configure
- Optimize code
Bump dependencies
Package Monitoring :
- use packag dedicated to monitor component
- each monitor work as standalone server to monitor health
- collect metrics to export them to prometheus exporter
Package Prometheus :
- review to simplify use for API and not API metrics
- optimize code
Package Status :
- Rework to use Monitor package
- Rework to use native json / text Marshaller interface
Context :
- rework context config (context var) to use sync map and sync RWMutex (WORM)
- move gin context to dedicated sub package (dependancies of logger make circular dependencies)
- optimize code
Config :
- rework to optimize sync / collect of component
- rework status to monitor
- remove monitor managment from config to each component
- add a func to set default logger to implement inherit default logger options
- optimize code
IOUtils :
- isolate logger / closer interface as a usable & public interface & instance
- this interface / instance allow to collect io.closer over a context to close all if context is done
Logger :
- rework to use context.config map
- rework to use ioutils closer
- rework to allow options to inherit a default options, or the last version of options
- optimize code
Size :
- Add package Size to calculate and manipulate size Byte or bit
- Add encoding : Text/JSON/Yaml/Toml...
- Add option to défine default unit : Byte or bit
Other :
- adjust following code
- optimize code
- limit use of atomic value
- rework to use RWMutex instead of sync.Mutex to maximize capabilities of read instead of write
- remove 32bit build for CI/CD
- add darwin/arm64 build for CI/CD
Bump Dependencies
- Package Errors : fix error with slice of error not returning all parent
- Package Logger :
- fix log error slice
- following bump hclog : implement GetLevel + adjust SetLevel to report different between hc log debug & trace following EnableTrace in options
- Bump dependencies
- Change reloading component method : try to reload all component and store errors, report list of errors but don't break the reloading process
Package Logger :
- Fix bug with entry logger filtering
Package Viper:
- reword message log before reloading config file (watchFS)
- add message log after reloading config file (watchFS)
Package Status :
- Fix DATA Race with status/info
- Add component key into log error message for health
- Add component key into function to use it into info (name)
- Reword health message : no OK/KO (still into status info), add error message reporting
Package httpserver :
- status info : apply update status component, use key in name
- status info : optimize code
Package Request :
- Fix error in url path operation
- Status info : optimize code
- Status info : apply update component, add endpoint hostname with name
Package Static :
- apply status component update
Other :
- Bump dependencies
- optimize output writer block for Get function
- add query string params online to print all result as one line plain text format
Package logger :
- refactor closer function to specific interface
- refactor syslog linux to log message by severity instead of same severity for all message
Other :
- Bump dependencies
- Fix too many open file for logger file
- Fix invalid FD for log file
- Fix bug with field into entry
- Fix race detection on testing
Package Status :
- Add capability to send short into query to received a short output without any result of component
- Add Connection Header as Close to router status return of Get
- Fix race detection into health with concurrent read/write data
- Fix race detection with update of main router
Package HTTPServer :
- Add option to disable keepalive for server
- Fix config tag error
- Fix logger usage / close
Package Config :
- Fix component using logger to implement a close
- Fix logger initialization :
- use local var to setup new logger based on logger clone if loger still existing
- if error while configuring new logger, do not change logger
- closing old logger before replace it with new
Package Router :
- Fix missing ignore error return
- Fix golib logger not closed
Other :
- Bump dependencies
- Fix bug : apply file permission on directory
Package errors :
- Add function dedicated to recorved : add at least 5 frame trace into message
- Add function to retrieve at least 5 frame not in golib, vendor and runtime root package
- Fix error in frame extraction
Package Logger :
- Add mutex to fix race error
- Fix missing origin error while return error for open/create file
- Clean useless commented code
Package Router :
- Skip gin context abort if context still aborted
- refactory recovery error to liberr.NewErrorRecovered to include enought trace
Add function to log minimalist information and access log (latency, size remote info, ...)
Add option to transform (exclusif) logger as access logger
fix errors & optimize
Package Router :
Update methode to start gin engine with access / error logger from package logger
fix error into middleware logger
use specif middleware for starttime and request path
optimize
Package ioutils :
fix tools : missing control path still existing to prevent truncate destination file
fix tools : ignore chmod error (not mandatory if file can be create/append)
Package Prometheus :
use generic starttime into context if available
Bump Dependencies
- Config Model : add a config model with a golib RouerStatus Config Model to use a AWS connection for API with a request status health check
- Config Interface : add function GetAccessKey to retrieve the accesskey value currently used into the current connection
- function Walk (Object, version, ...) : fix bug with pointer of string not initialized
Package Config :
- interface Component : add status router pointer into the Init function to allow used a global router status for all component status registration as router status component
Package Status :
- move Status Config as an sub package of Package Status
Package Errors :
- add CamelCase const
Package Logger :
- fix following bump dependencies
Global :
- bump dependencies
- change init of errors files : change function never call vy panic to prevent an error code collision
- Bucket : add function Walk based on list but run a given function for each found bucket
- Object : add function Walk & WalkPrefix based on ListPrefix to run a given function for each returned object
- Object : add function WalkVersion & WalkVersionPrefix based on ListVersion to run a given function for each returned object version
Package logger:
- Fix bug with compat : a nil error not clean when sent to logger
Package Context:
- Fix bug with context/config : the load key return an atomic value instead of the interface stored
- slipt package between pure httpcli and request to become new package Request
- Add options to httpcli allowed to create an http client based on options
Package AWS :
- add option for delete object : check boolean to make or not the check (head) before delete
- add exclusion of NoSuchKey error if check is false
Package Request :
- integer option capabilities to configure the request inteface
- use httpcli option to get httpcli (keep custom function to get an *http.client)
- extend function to mode manage the request
- use embed go func
- expand managment for more capabilities
- implement router status new model
- fix race detection
- bump dependancies
- remove useless dependancies
# Package NutsDB
- Implement new logger into NutsDB package
- Optimize concurrent work for package NutsDB
# Package Cluster
- Change logger into cluster
- Change SetLoggerFactory : no more init call
# Package Logger
- Fix error into logger with logrus logger dup : level not included in dup function
# Refactor Logger :
- Remove logger as globals to use dedicated pointer
- Add compat file to allow retro-compatibility (function are deprecated)
- Add field management to allow add custom information
- Add option struct to manage options
- Add entry struct to manage all log entry
- Add multithreading capabilities (with race prevention)
- Allow to log to file + stdout/stderr + syslog
- Add io.WriteCloser compatibility interface
- Add logrus hook to manage option by hook instance
- Add capabilities to custom each logfile/syslog/standard independently
- Add small test suite
# Update Packages for logger new options :
- archive
- cluster
- context
- httpcli
- httpserver
- ldap
- tests
# Other :
- bump dependancies
- update minio server for aws test