97 lines
2.1 KiB
Go
97 lines
2.1 KiB
Go
package internal
|
|
|
|
import (
|
|
"context"
|
|
"errors"
|
|
"log"
|
|
"os"
|
|
"strconv"
|
|
|
|
"google.golang.org/grpc"
|
|
"google.golang.org/grpc/credentials/insecure"
|
|
"nim.jasinco.work/app/igapi"
|
|
)
|
|
|
|
type PR struct {
|
|
ACT_TYPE int //0 for post, 1 for revoke
|
|
ID int32
|
|
}
|
|
|
|
var (
|
|
SALT string
|
|
POSTGRES_URL string
|
|
JWT_SECRET string
|
|
FETCH_LENGTH int32
|
|
PREFORK bool
|
|
IGAPI_HOST string
|
|
CORS_ALLOW string
|
|
IGAPI_ACTIVATE bool
|
|
IGAPI_CHAN = make(chan PR, 20)
|
|
err error
|
|
conv int64
|
|
)
|
|
|
|
func ReadFromENV() error {
|
|
SALT = os.Getenv("SALT")
|
|
if len(SALT) < 8 {
|
|
return errors.New("Invalid Salt")
|
|
}
|
|
POSTGRES_URL = os.Getenv("POSTGRES_URL")
|
|
if len(POSTGRES_URL) < 1 {
|
|
return errors.New("POSTGRES_URL NOT FOUND")
|
|
}
|
|
JWT_SECRET = os.Getenv("JWT_SECRET")
|
|
if len(JWT_SECRET) < 10 {
|
|
return errors.New("INVALID JWT SECRET")
|
|
}
|
|
fetch_len_str := os.Getenv("FETCH_LENGTH")
|
|
if len(fetch_len_str) == 0 {
|
|
FETCH_LENGTH = 10
|
|
} else {
|
|
conv, err = strconv.ParseInt(fetch_len_str, 10, 32)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
if conv < 1 {
|
|
return errors.New("FETCH_LENGTH should be a positive number as well over 0")
|
|
}
|
|
FETCH_LENGTH = int32(conv)
|
|
|
|
}
|
|
prefork_str := os.Getenv("PREFORK")
|
|
if len(prefork_str) == 0 {
|
|
PREFORK = false
|
|
} else {
|
|
PREFORK, err = strconv.ParseBool(prefork_str)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
}
|
|
IGAPI_HOST = os.Getenv("IGAPI_HOST")
|
|
IGAPI_ACTIVATE = true
|
|
if len(IGAPI_HOST) == 0 {
|
|
log.Println("Didn't get IGAPI_HOST, it will work without it")
|
|
IGAPI_ACTIVATE = false
|
|
}
|
|
CORS_ALLOW = os.Getenv("CORS_ALLOW")
|
|
return nil
|
|
}
|
|
|
|
func IGAPI_establish() (*grpc.ClientConn, igapi.IGAPIClient) {
|
|
conn, err := grpc.NewClient(IGAPI_HOST, grpc.WithTransportCredentials(insecure.NewCredentials()))
|
|
if err != nil {
|
|
log.Panicf("Can't connect to igapi: %s", err.Error())
|
|
}
|
|
c := igapi.NewIGAPIClient(conn)
|
|
return conn, c
|
|
}
|
|
func IGAPI_chan_exec(c igapi.IGAPIClient) {
|
|
for id := range IGAPI_CHAN {
|
|
if id.ACT_TYPE == 0 {
|
|
c.Upload(context.Background(), &igapi.Request{Id: int64(id.ID)})
|
|
}
|
|
if id.ACT_TYPE == 1 {
|
|
c.Delete(context.Background(), &igapi.Request{Id: int64(id.ID)})
|
|
}
|
|
}
|
|
}
|