66 lines
1.4 KiB
Go
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)
|
|
}
|