- Add DNS Mapper to force destination for a fqdn source
- Allow wildcard and multi wildcard for fqdn source
- DNS Mapper create Transport, Dialer & http client
- DNS Mapper allow a config input to customize timeout, limit and TLS config
- DNS Mapper use a gloabl transport connection poller
- DNS Mapper implement DialContext & Dial method for transport
- DNS Mapper use cache to accelerate process
- DNS Mapper cache is only dnsmapper, not DNS cache
- Replace old helper for http client with DNSMapper
- Add default DNSMapper into the main lib of http client
- Allow to overide the default DNS Mapper with a new one
- Add ticker to force clean idle connection every given duration
- "Compatible" with old config, as the default config will be used instead of old client build
- Clean code and fix minor bugs
- Add config component to allow use a global config
- Config Component httpcli can overide default httpcli dns mapper when updated
Package Certificates
- Add function type to impose function that return a slice of rootCA string
- update config/component/tls by replacing mutex with atomic
- optimize some code
Package Config
- expand errors code index to add component httpcli
Package Config/component:
- database: add new validation, that config key existing into viper
- head: add new validation, that config key existing into viper
- http: add new validation, that config key existing into viper
- ldap: add new validation, that config key existing into viper
- log: add new validation, that config key existing into viper
- mail: add new validation, that config key existing into viper
- smtp: add new validation, that config key existing into viper
Package AWS:
- update package following update of httpcli
- use interface for http cli that implement the Do function
- update following the config/component/aws
- rework config/component/aws to use atomic instead of mutex
- update test unit following change
Package Request:
- update following http client update
- use interface of HTTP Client that implement DO function, instead of http client struct pointer
- update config & code following
- apply same modification into config/component/request
- update config/component/request by replacing mutex to atomic
Package Server
- add function Uptime to model to expose the duration since last start
Package Semaphore
- apply change name of constant following bump of lib associated
Package Crypt
- fix bug into reader to remove suffix of EOF if prevent
Package Errors:
- expand index module to add DNS Mapper client
Package HTTP Server:
- update monitor to apply changes
Package Socket:
- add additional check if reading error: if buffer has data, send it to handler before break run
Other:
- bump dependencies
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
Package Database/gorm:
- move package database using gorm, to package database/gorm
- update config component following
Package Database/KVItem:
- create new package to manage item of KV Db
- allow to track change on item model
- allow to store only if changed
- embedded driver function to load / store to make instance portable
Package Database/KVTable:
- create new package to manage a table (list of map key : value)
- embedded driver instance to make instance portable
- allow to walk, list, get items with KVItem instance
Package Database/KVDriver:
- create new package to wrap db KV function to KVTable awaiting function
- Allow to skip function Walk replace by a n internal call of function List and Get
Package Database/Map:
- create new package to wrap KV function usage of map[comparable]any to KVDriver model
- Use json marshall/unmarshall between map[comparable]any to model any
- 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
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
- 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
- major dependancies are :
- golib/context config
- golib/viper
- interface config extend :
- golib/context config interface
- component list
- interface component list :
this interface implement all function to manage a collection of component. All component are registred with they config key.
A component must implement basic function like start, stop, reload, defaultConfig...
The main config json is set by calling all component config with the config key attached
Each component have some status status like isStarted, isRunning, ...
Each component must also declare his dependencies with other component. As that when start or reload is called,
the component is sure that dependencies are still started or reloaded.
- They are 4 component for now : log, tls, headers and http server
- The config package will start a new context / cancelfunc on init to be sure to stop cleanly all component and process
Add Package Viper :
- this package is an helper to the config package with the spf13 viper lib
- this package can watch any change of a config file or can be connected to a remote config cluster like ETCD
Add Package Cobra :
- this package is an helper to make a CLI with flag / command
- this package is based on spf13 cobra has all method to be connected to viper golib
* implement SMTP lib interface
* check number of sent mail in a time lapse before sending new mail
* if time since last reset is over, reset counter
* add feature to call a user function on each counter reset
- Pkg SMTP : Fix race detection & segFault
- Pkg Mailer : add new function to parse all template value with the given map[string]string
- Refactor ErrorType, list errors managment, codeError
- Add interface Error with error interface implement
- Add type CodeError assign typiclly to const that represent code of error
- Add func to registry func to retrieve message from an uint16 codeError (typicaly a switch of each codeError const)
- Add default errorCode with default errorMessage if no one code or message is found
- Add modeError to manage how to manage compatibility between Error interface and error interface
- Add Error interface that allow parent link (parent as error or Error interface), code and trace management
- Add trace finder to allow find func/file/line caller when Error is call
- Add http 2 transport in httpcli
- Add http 2 transport in httpserver
- Add function to get client http with timeout management in httpcli
- Add function to get Error if occurs of http client in httpcli
- Add test for smtp package
- Chg return error by returning Error in all packages
- Chg package njs-archive by archive
- Chg package njs-certif by certificates
- Chg package njs-console by console
- Chg package njs-crypt by crypt
- Chg package njs-errors by errors
- Chg package njs-httpcli by httpcli
- Chg package njs-httpserver by httpserver
- Chg package njs-ioutils by ioutils
- Chg package njs-ldap by ldap
- Chg package njs-logger by logger
- Chg package njs-password by password
- Chg package njs-progress by progress
- Chg package njs-router by router
- Chg package njs-semaphore by semaphore
- Chg package njs-smtp by smtp
- Chg package njs-static by static
- Chg package njs-status by status
- Chg package njs-version by version
- Fix dependancies gopkg by github/go-ldap for go module compatibility
- Fix gin Abort call by gin Abort with Error in static package
- Fix issue #18 in status package : replace partner by component
- Fix go vet error
- Del deprecated function
- Del useless function & files
- Bump dependancies
- Apply CHG in README.md