| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546 | 
							- // +build linux
 
- package core
 
- import (
 
- 	"os"
 
- 	"path/filepath"
 
- 	"plugin"
 
- 	"strings"
 
- 	"v2ray.com/core/common/platform"
 
- )
 
- func loadPluginsInternal() error {
 
- 	pluginPath := platform.GetPluginDirectory()
 
- 	dir, err := os.Open(pluginPath)
 
- 	if err != nil {
 
- 		return err
 
- 	}
 
- 	defer dir.Close()
 
- 	files, err := dir.Readdir(-1)
 
- 	if err != nil {
 
- 		return err
 
- 	}
 
- 	for _, file := range files {
 
- 		if !file.IsDir() && strings.HasSuffix(file.Name(), ".so") {
 
- 			p, err := plugin.Open(filepath.Join(pluginPath, file.Name()))
 
- 			if err != nil {
 
- 				return err
 
- 			}
 
- 			f, err := p.Lookup(GetMetadataFuncName)
 
- 			if err != nil {
 
- 				return err
 
- 			}
 
- 			if gmf, ok := f.(GetMetadataFunc); ok {
 
- 				metadata := gmf()
 
- 				newError("plugin (", metadata.Name, ") loaded.").WriteToLog()
 
- 			}
 
- 		}
 
- 	}
 
- 	return nil
 
- }
 
 
  |