| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546 | // +build linuxpackage coreimport (	"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}
 |