| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- package faketls
-
- import (
- "container/ring"
- "context"
- "sync"
- "time"
-
- "mtg/config"
- )
-
- var (
- connectionServerInstance connectionServer
- connectionServerInitOnce sync.Once
- )
-
- const (
- connectionServerKeepCertificates = 5
- connectionServerUpdateEvery = 10 * time.Minute
- )
-
- func Init(ctx context.Context) {
- connectionServerInitOnce.Do(func() {
- if config.C.CloakHost == "" {
- return
- }
-
- connectionServerInstance = connectionServer{
- channelGet: make(chan chan<- []byte),
- ctx: ctx,
- }
-
- cert, err := connectionServerInstance.fetch()
- if err != nil {
- panic(err)
- }
-
- r := ring.New(connectionServerKeepCertificates)
-
- for i := 0; i < connectionServerKeepCertificates; i++ {
- r.Value = cert
- r = r.Next()
- }
-
- connectionServerInstance.nextWriteItem = r
- connectionServerInstance.nextReadItem = r
-
- go connectionServerInstance.run(connectionServerUpdateEvery)
- })
- }
|