bmbper opened a new issue, #11835:
URL: https://github.com/apache/apisix/issues/11835
### Description
1. config fileļ¼ config.yaml
```yaml
deployment:
role: traditional
role_traditional:
config_provider: etcd
admin:
admin_key:
- name: admin
key: edd1c9f034335f136f87ad84b625c8f1 # using fixed API token has
security risk, please update it when you deploy to production environment
role: admin
apisix:
extra_lua_path: /usr/local/apisix/custom/?.lua
log_level: debug
plugins:
- demo
```
2. plugin file `/usr/local/apisix/custom/apisix/plugins/demo.lua`
```lua
--
-- Licensed to the Apache Software Foundation (ASF) under one or more
-- contributor license agreements. See the NOTICE file distributed with
-- this work for additional information regarding copyright ownership.
-- The ASF licenses this file to You under the Apache License, Version 2.0
-- (the "License"); you may not use this file except in compliance with
-- the License. You may obtain a copy of the License at
--
-- http://www.apache.org/licenses/LICENSE-2.0
--
-- Unless required by applicable law or agreed to in writing, software
-- distributed under the License is distributed on an "AS IS" BASIS,
-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-- See the License for the specific language governing permissions and
-- limitations under the License.
--
local core = require("apisix.core")
local consumer_mod = require("apisix.consumer")
local plugin_name = "demo"
local schema = {
type = "object",
properties = {
header = {
type = "string",
default = "apikey",
},
query = {
type = "string",
default = "apikey",
},
hide_credentials = {
type = "boolean",
default = false,
}
},
}
local consumer_schema = {
type = "object",
properties = {
key = { type = "string" },
},
encrypt_fields = {"key"},
required = {"key"},
}
local _M = {
version = 0.1,
priority = 2500,
type = 'auth',
name = plugin_name,
schema = schema,
consumer_schema = consumer_schema,
}
function _M.check_schema(conf, schema_type)
if schema_type == core.schema.TYPE_CONSUMER then
return core.schema.check(consumer_schema, conf)
else
return core.schema.check(schema, conf)
end
end
function _M.rewrite(conf, ctx)
local from_header = true
local key = core.request.header(ctx, conf.header)
if not key then
local uri_args = core.request.get_uri_args(ctx) or {}
key = uri_args[conf.query]
from_header = false
end
if not key then
return 401, {message = "Missing API key found in request"}
end
local consumer_conf = consumer_mod.plugin(plugin_name)
if not consumer_conf then
return 401, {message = "Missing related consumer"}
end
local consumers = consumer_mod.consumers_kv(plugin_name, consumer_conf,
"key")
local consumer = consumers[key]
if not consumer then
return 401, {message = "Invalid API key in request"}
end
core.log.info("consumer: ", core.json.delay_encode(consumer))
if conf.hide_credentials then
if from_header then
core.request.set_header(ctx, conf.header, nil)
else
local args = core.request.get_uri_args(ctx)
args[conf.query] = nil
core.request.set_uri_args(ctx, args)
end
end
consumer_mod.attach_consumer(ctx, consumer, consumer_conf)
core.log.info("hit key-auth rewrite")
end
return _M
```
3. when i run `apisix start`, i got an error in error.log
```log
2024/12/16 17:05:52 [error] 152181#152181: *22207 [lua] plugin.lua:138:
load_plugin(): failed to load plugin [demo] err: module 'apisix.plugins.demo'
not found:
no field package.preload['apisix.plugins.demo']
no file '/usr/local/apisix/custom/\apisix/plugins/demo.lua'
no file '/usr/local/apisix//deps/share/lua/5.1/apisix/plugins/demo.lua'
no file
'/usr/local/apisix//deps/share/lua/5.1/apisix/plugins/demo/init.lua'
no file '/usr/local/apisix/apisix/plugins/demo.lua'
no file '/usr/local/apisix/apisix/plugins/demo/init.lua'
no file '/usr/local/openresty/site/lualib/apisix/plugins/demo.ljbc'
no file '/usr/local/openresty/site/lualib/apisix/plugins/demo/init.ljbc'
no file '/usr/local/openresty/lualib/apisix/plugins/demo.ljbc'
no file '/usr/local/openresty/lualib/apisix/plugins/demo/init.ljbc'
no file '/usr/local/openresty/site/lualib/apisix/plugins/demo.lua'
no file '/usr/local/openresty/site/lualib/apisix/plugins/demo/init.lua'
no file '/usr/local/openresty/lualib/apisix/plugins/demo.lua'
no file '/usr/local/openresty/lualib/apisix/plugins/demo/init.lua'
no file './apisix/plugins/demo.lua'
no file
'/usr/local/openresty/luajit/share/luajit-2.1/apisix/plugins/demo.lua'
no file '/usr/local/share/lua/5.1/apisix/plugins/demo.lua'
no file '/usr/local/share/lua/5.1/apisix/plugins/demo/init.lua'
no file
'/usr/local/openresty/luajit/share/lua/5.1/apisix/plugins/demo.lua'
no file
'/usr/local/openresty/luajit/share/lua/5.1/apisix/plugins/demo/init.lua'
no file '/usr/local/apisix/apisix/plugins/demo.lua'
no file './apisix/plugins/demo.lua'
no file
'/usr/local/openresty/luajit/share/luajit-2.1/apisix/plugins/demo.lua'
no file '/usr/local/share/lua/5.1/apisix/plugins/demo.lua'
no file '/usr/local/share/lua/5.1/apisix/plugins/demo/init.lua'
no file
'/usr/local/openresty/luajit/share/lua/5.1/apisix/plugins/demo.lua'
no file
'/usr/local/openresty/luajit/share/lua/5.1/apisix/plugins/demo/init.lua'
no file '/usr/local/openresty/site/lualib/apisix/plugins/demo.ljbc'
no file '/usr/local/openresty/site/lualib/apisix/plugins/demo/init.ljbc'
no file '/usr/local/openresty/lualib/apisix/plugins/demo.ljbc'
no file '/usr/local/openresty/lualib/apisix/plugins/demo/init.ljbc'
no file '/usr/local/openresty/site/lualib/apisix/plugins/demo.lua'
no file '/usr/local/openresty/site/lualib/apisix/plugins/demo/init.lua'
no file '/usr/local/openresty/lualib/apisix/plugins/demo.lua'
no file '/usr/local/openresty/lualib/apisix/plugins/demo/init.lua'
no file './apisix/plugins/demo.lua'
no file
'/usr/local/openresty/luajit/share/luajit-2.1/apisix/plugins/demo.lua'
no file '/usr/local/share/lua/5.1/apisix/plugins/demo.lua'
no file '/usr/local/share/lua/5.1/apisix/plugins/demo/init.lua'
no file
'/usr/local/openresty/luajit/share/lua/5.1/apisix/plugins/demo.lua'
no file
'/usr/local/openresty/luajit/share/lua/5.1/apisix/plugins/demo/init.lua'
no file '/usr/local/apisix//deps/lib64/lua/5.1/apisix/plugins/demo.so'
no file '/usr/local/apisix//deps/lib/lua/5.1/apisix/plugins/demo.so'
no file '/usr/local/openresty/site/lualib/apisix/plugins/demo.so'
no file '/usr/local/openresty/lualib/apisix/plugins/demo.so'
no file './apisix/plugins/demo.so'
no file '/usr/local/lib/lua/5.1/apisix/plugins/demo.so'
no file '/usr/local/openresty/luajit/lib/lua/5.1/apisix/plugins/demo.so'
no file '/usr/local/lib/lua/5.1/loadall.so'
no file './apisix/plugins/demo.so'
no file '/usr/local/lib/lua/5.1/apisix/plugins/demo.so'
no file '/usr/local/openresty/luajit/lib/lua/5.1/apisix/plugins/demo.so'
no file '/usr/local/lib/lua/5.1/loadall.so'
no file '/usr/local/apisix//deps/lib64/lua/5.1/apisix.so'
no file '/usr/local/apisix//deps/lib/lua/5.1/apisix.so'
no file '/usr/local/openresty/site/lualib/apisix.so'
no file '/usr/local/openresty/lualib/apisix.so'
no file './apisix.so'
no file '/usr/local/lib/lua/5.1/apisix.so'
no file '/usr/local/openresty/luajit/lib/lua/5.1/apisix.so'
no file '/usr/local/lib/lua/5.1/loadall.so'
no file './apisix.so'
no file '/usr/local/lib/lua/5.1/apisix.so'
no file '/usr/local/openresty/luajit/lib/lua/5.1/apisix
```
### Environment
- APISIX version (run `apisix version`): 3.9.1
- Operating system (run `uname -a`): Linux worker4 3.10.0-1160.el7.x86_64 #1
SMP Mon Oct 19 16:18:59 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
- OpenResty / Nginx version (run `openresty -V` or `nginx -V`): nginx
version: openresty/1.25.3.1
- etcd version, if relevant (run `curl
http://127.0.0.1:9090/v1/server_info`): 3.5.17
- APISIX Dashboard version, if relevant: not use
- Plugin runner version, for issues related to plugin runners:
- LuaRocks version, for installation issues (run `luarocks --version`): not
found
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]