// +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 }