| 1234567891011121314151617181920212223242526272829303132333435363738394041 | 
							- package libbox
 
- import (
 
- 	"net/url"
 
- )
 
- func GenerateRemoteProfileImportLink(name string, remoteURL string) string {
 
- 	importLink := &url.URL{
 
- 		Scheme:   "sing-box",
 
- 		Host:     "import-remote-profile",
 
- 		RawQuery: url.Values{"url": []string{remoteURL}}.Encode(),
 
- 		Fragment: name,
 
- 	}
 
- 	return importLink.String()
 
- }
 
- type ImportRemoteProfile struct {
 
- 	Name string
 
- 	URL  string
 
- 	Host string
 
- }
 
- func ParseRemoteProfileImportLink(importLink string) (*ImportRemoteProfile, error) {
 
- 	importURL, err := url.Parse(importLink)
 
- 	if err != nil {
 
- 		return nil, err
 
- 	}
 
- 	remoteURL, err := url.Parse(importURL.Query().Get("url"))
 
- 	if err != nil {
 
- 		return nil, err
 
- 	}
 
- 	name := importURL.Fragment
 
- 	if name == "" {
 
- 		name = remoteURL.Host
 
- 	}
 
- 	return &ImportRemoteProfile{
 
- 		Name: name,
 
- 		URL:  remoteURL.String(),
 
- 		Host: remoteURL.Host,
 
- 	}, nil
 
- }
 
 
  |