Freeradius認証のために外部ライブラリを(PyJWT)にインポートしようとしていますが、freeradius -Xを実行すると、このエラーメッセージが表示されます。
# Instantiating module "python" from file /etc/freeradius/mods-enabled/python
mod_init done
rlm_python:mod_load_function: module 'example' is not found
rlm_python:EXCEPT:<type 'exceptions.ImportError'>: No module named jwt
rlm_python:mod_load_function: failed to import python function 'example.authorize'
/etc/freeradius/mods-enabled/python[10]: Instantiation failed for module "python"
ターミナルからパッケージをインポートしようとすると、すべて問題ありません。
Python 2.7.10 (default, Oct 14 2015, 16:09:02)
[GCC 5.2.1 20151010] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import jwt
>>> encoded = jwt.encode({'some': 'payload'}, 'secret', algorithm='HS256')
>>> jwt.decode(encoded, 'secret', algorithms=['HS256'])
{u'some': u'payload'}
pythonファイルは:
#! /usr/bin/env python
# ...
import radiusd
import jwt
def instantiate(p):
....
def authorize(p):
print "*** authorize ***"
しかし、代わりに私が使用する場合:
#! /usr/bin/env python
# ...
import radiusd
#import jwt
def instantiate(p):
....
def authorize(p):
print "*** authorize ***"
、freeradiusはespectedとして開始します。
私のdockerfileは:
From ubuntu:15.10
#1;5C radiussrvbase docker image configuration file
# This docker configuration file use ubuntu 15:10 willy distrib and install freeradius server 3.x.
RUN apt-get update \
&& apt-get install -y software-properties-common \
&& apt-get install -y python2.7-dev \
&& apt-get install -y python-pip \
&& pip install PyJWT \
&& add-apt-repository ppa:freeradius/stable-3.0 \
&& apt-get update \
&& apt-get install -y freeradius-mysql \
&& apt-get install -y freeradius=3.0.11-ppa2~wily
WORKDIR /etc/freeradius
#File import
Freeradiusで外部pythonライブラリを宣言する必要がありますか?
私は何かが恋しいですか?
宜しくお願いします
このモジュール「jwt」がどこにあるかを見つける必要があるため、mods-available/python
に含めます
python_path = ${modconfdir}/${.:name}:/path/to/the/package1:/path/to/the/package2
例:
python_path = ${modconfdir}/${.:name}:/usr/lib/python2.7/
あなたはによって見つけることができます:Sudo find / -name "*jwt*"