| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- package service
- import (
- "github.com/mhsanaei/3x-ui/v3/internal/database/model"
- "github.com/mhsanaei/3x-ui/v3/internal/util/common"
- )
- type SubLinkProvider interface {
- SubLinksForSubId(host, subId string) ([]string, error)
- LinksForClient(host string, inbound *model.Inbound, email string) []string
- }
- var registeredSubLinkProvider SubLinkProvider
- func RegisterSubLinkProvider(p SubLinkProvider) {
- registeredSubLinkProvider = p
- }
- func (s *InboundService) GetSubLinks(host, subId string) ([]string, error) {
- if registeredSubLinkProvider == nil {
- return nil, common.NewError("sub link provider not registered")
- }
- return registeredSubLinkProvider.SubLinksForSubId(host, subId)
- }
- func (s *InboundService) GetAllClientLinks(host string, email string) ([]string, error) {
- if email == "" {
- return nil, common.NewError("client email is required")
- }
- if registeredSubLinkProvider == nil {
- return nil, common.NewError("sub link provider not registered")
- }
- rec, err := s.clientService.GetRecordByEmail(nil, email)
- if err != nil {
- return nil, err
- }
- inboundIds, err := s.clientService.GetInboundIdsForRecord(rec.Id)
- if err != nil {
- return nil, err
- }
- var links []string
- for _, ibId := range inboundIds {
- inbound, getErr := s.GetInbound(ibId)
- if getErr != nil {
- return nil, getErr
- }
- links = append(links, registeredSubLinkProvider.LinksForClient(host, inbound, email)...)
- }
- return links, nil
- }
|