MCPcopy Create free account
hub / github.com/chainreactors/EvilProxy / registerRPCPlugin

Function registerRPCPlugin

internal/pluginhost/rpc_client.go:56–138  ·  view source on GitHub ↗
(ctx context.Context, host *Host, id string, client pluginClient, method string, configYAML []byte)

Source from the content-addressed store, hash-verified

54}
55
56func registerRPCPlugin(ctx context.Context, host *Host, id string, client pluginClient, method string, configYAML []byte) (pluginapi.Plugin, error) {
57 if client == nil {
58 return pluginapi.Plugin{}, fmt.Errorf("plugin client is nil")
59 }
60 resp, errCall := callPlugin[rpcRegistration](ctx, client, method, rpcLifecycleRequest{
61 ConfigYAML: bytes.Clone(configYAML),
62 SchemaVersion: pluginabi.SchemaVersion,
63 })
64 if errCall != nil {
65 return pluginapi.Plugin{}, errCall
66 }
67 if resp.SchemaVersion > pluginabi.SchemaVersion {
68 return pluginapi.Plugin{}, fmt.Errorf("plugin schema version %d is not supported", resp.SchemaVersion)
69 }
70 adapter := &rpcPluginAdapter{id: id, host: host, client: client}
71 plugin := pluginapi.Plugin{
72 Metadata: resp.Metadata,
73 Capabilities: pluginapi.Capabilities{
74 FrontendAuthProviderExclusive: resp.Capabilities.FrontendAuthProvider && resp.Capabilities.FrontendAuthProviderExclusive,
75 ExecutorModelScope: resp.Capabilities.ExecutorModelScope,
76 ExecutorInputFormats: append([]string(nil), resp.Capabilities.ExecutorInputFormats...),
77 ExecutorOutputFormats: append([]string(nil), resp.Capabilities.ExecutorOutputFormats...),
78 },
79 }
80 if resp.Capabilities.ModelRegistrar {
81 plugin.Capabilities.ModelRegistrar = adapter
82 }
83 if resp.Capabilities.ModelProvider {
84 plugin.Capabilities.ModelProvider = adapter
85 }
86 if resp.Capabilities.AuthProvider {
87 plugin.Capabilities.AuthProvider = rpcAuthProvider{rpcPluginAdapter: adapter}
88 }
89 if resp.Capabilities.FrontendAuthProvider {
90 plugin.Capabilities.FrontendAuthProvider = rpcFrontendAuthProvider{rpcPluginAdapter: adapter}
91 }
92 if resp.Capabilities.Scheduler {
93 plugin.Capabilities.Scheduler = adapter
94 }
95 if resp.Capabilities.ModelRouter {
96 plugin.Capabilities.ModelRouter = adapter
97 }
98 if resp.Capabilities.Executor {
99 plugin.Capabilities.Executor = rpcProviderExecutor{rpcPluginAdapter: adapter}
100 }
101 if resp.Capabilities.RequestTranslator {
102 plugin.Capabilities.RequestTranslator = adapter
103 }
104 if resp.Capabilities.RequestNormalizer {
105 plugin.Capabilities.RequestNormalizer = adapter
106 }
107 if resp.Capabilities.RequestInterceptor {
108 plugin.Capabilities.RequestInterceptor = adapter
109 }
110 if resp.Capabilities.ResponseTranslator {
111 plugin.Capabilities.ResponseTranslator = adapter
112 }
113 if resp.Capabilities.ResponseBeforeTranslator {

Calls 1

CloneMethod · 0.45