| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 | // +build linuxpackage coreimport (	"os"	"path/filepath"	"plugin"	"strings"	"v2ray.com/core/app/log"	"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()				log.Trace(newError("plugin (", metadata.Name, ") loaded."))			}		}	}	return nil}
 |