2026-04-06 00:20:51 -05:00

66 lines
1.4 KiB
Go

package server
import (
"AdaptixServer/core/connector"
"AdaptixServer/core/utils/krypt"
"errors"
)
func (ts *Teamserver) CreateOTP(otpType string, data interface{}) (string, error) {
var storeValue interface{}
switch otpType {
case "download":
id, ok := data.(string)
if !ok || id == "" {
return "", errors.New("Invalid FileId")
}
_, err := ts.TsDownloadGet(id)
if err != nil {
return "", errors.New("Invalid FileId")
}
storeValue = id
case "tmp_upload":
id, ok := data.(string)
if !ok || id == "" {
return "", errors.New("Invalid FileId")
}
if ts.tmp_uploads.Contains(id) {
return "", errors.New("Invalid FileId")
}
filename, err := krypt.GenerateUID(20)
if err != nil {
return "", err
}
filename += ".tmp"
ts.tmp_uploads.Put(id, filename)
storeValue = id
case "connect":
wsData, ok := data.(connector.ConnectOTPData)
if !ok || wsData.Username == "" {
return "", errors.New("invalid connect OTP data")
}
storeValue = wsData
case "channel_tunnel", "channel_terminal", "channel_agent_build":
wsData, ok := data.(*connector.ChannelOTPData)
if !ok || wsData == nil || wsData.Username == "" {
return "", errors.New("invalid channel OTP data")
}
storeValue = wsData
default:
return "", errors.New("invalid otpType")
}
return ts.OTPManager.Create(otpType, storeValue)
}
func (ts *Teamserver) ValidateOTP(token string) (string, interface{}, bool) {
return ts.OTPManager.Validate(token)
}