| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- package sub
- import (
- "strings"
- "github.com/mhsanaei/3x-ui/v3/database/model"
- "github.com/mhsanaei/3x-ui/v3/web/service"
- )
- type LinkProvider struct {
- settingService service.SettingService
- }
- func NewLinkProvider() *LinkProvider {
- return &LinkProvider{}
- }
- func (p *LinkProvider) build(host string) *SubService {
- showInfo, _ := p.settingService.GetSubShowInfo()
- rModel, err := p.settingService.GetRemarkModel()
- if err != nil {
- rModel = "-ieo"
- }
- svc := NewSubService(showInfo, rModel)
- svc.PrepareForRequest(host)
- return svc
- }
- func (p *LinkProvider) SubLinksForSubId(host, subId string) ([]string, error) {
- svc := p.build(host)
- links, _, _, err := svc.GetSubs(subId, host)
- if err != nil {
- return nil, err
- }
- out := make([]string, 0, len(links))
- for _, l := range links {
- out = append(out, splitLinkLines(l)...)
- }
- return out, nil
- }
- func (p *LinkProvider) LinksForClient(host string, inbound *model.Inbound, email string) []string {
- svc := p.build(host)
- return splitLinkLines(svc.GetLink(inbound, email))
- }
- func splitLinkLines(raw string) []string {
- if raw == "" {
- return nil
- }
- parts := strings.Split(raw, "\n")
- out := make([]string, 0, len(parts))
- for _, p := range parts {
- if p = strings.TrimSpace(p); p != "" {
- out = append(out, p)
- }
- }
- return out
- }
|