Commit 4e461702 authored by Nikhil Doifode's avatar Nikhil Doifode
Browse files

Modified couchdb authentication process

- Removed cookie timeout
- Added go routine to authenticate every 9 minutes
parent 3ce12762
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -193,7 +193,7 @@ couchdbConfig:
    require_valid_user: false
  couch_httpd_auth:
    # Setting default timeout to 365 days (365*24*60*60)
    timeout: 31536000
    # timeout: 31536000
    require_valid_user: true
    allow_persistent_cookies: true

+21 −4
Original line number Diff line number Diff line
@@ -18,10 +18,11 @@ package couchdb

import (
	"context"
	"strings"
	"time"

	"github.com/flimzy/kivik"
	_ "github.com/go-kivik/couchdb"
	"github.com/go-kivik/couchdb/chttp"

	log "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-logger"
)
@@ -42,6 +43,16 @@ type Connector struct {
	dbHandle *kivik.DB
}

func authenticateConnection(dbClient *kivik.Client) {
	for {
		time.Sleep(9 * time.Minute)
		err := dbClient.Authenticate(context.TODO(), &chttp.CookieAuth{Username: "admin", Password: "admin"})
		if err != nil {
			log.Debug("Re-Authentication failed", err)
		}
	}
}

// NewConnector - Creates and initialize a CouchDB connector to a database
func NewConnector(addr string, dbName string) (rc *Connector, err error) {
	rc = new(Connector)
@@ -56,12 +67,18 @@ func NewConnector(addr string, dbName string) (rc *Connector, err error) {
			c.addr = addr
		}

		var address []string = strings.SplitAfter(addr, "http://")
		var newAddr = address[0] + "admin:admin@" + address[1]
		c.dbClient, err = kivik.New(context.TODO(), "couch", newAddr)
		c.dbClient, err = kivik.New(context.TODO(), "couch", addr)
		if err != nil {
			return nil, err
		}

		err = c.dbClient.Authenticate(context.TODO(), &chttp.CookieAuth{Username: "admin", Password: "admin"})
		if err != nil {
			return nil, err
		}

		go authenticateConnection(c.dbClient)

		client = c
	}