Re: Freeradius 3.0.14 - Enable SQLite
Hello, I figured it out, the hint from Matthew did the trick. Because of the wrong position of some lines in the configuration file, radiusd searched for the wrong rlm*.so. I altered the configuration to this, look at the line with "bob": ---------------------------------------------------------------------------------------------------- # -*- text -*- ## ## sql.conf -- SQL modules ## ## $Id: 4997a802dfd8660f622d06f577a787bf30895e3e $ ###################################################################### # # Configuration for the SQL module # # The database schemas and queries are located in subdirectories: # # sql/<DB>/main/schema.sql Schema # sql/<DB>/main/queries.conf Authorisation and Accounting queries # # Where "DB" is mysql, mssql, oracle, or postgresql. # # # # Several drivers accept specific options, to set them a config section # matching the name of the driver should be added to the sql instance. # # Driver specific options are: # # # mysql { # # If any of the below files are set tls encryption is enabled # tls { # ca_file = "/etc/ssl/certs/my_ca.crt" # ca_path = "/etc/ssl/certs/" # certificate_file = "/etc/ssl/certs/private/client.crt" # private_key_file = "/etc/ssl/certs/private/client.key" # cipher = "DHE-RSA-AES256-SHA:AES128-SHA" # } # } bob { filename = "/tmp/nope.txt" } sql { sqlite { # Path to the sqlite database filename = "/tmp/database.db" # If the file above does not exist and bootstrap is set # a new database file will be created, and the SQL statements # contained within the file will be executed. bootstrap = "/etc/radiusd-acct/mods-config/sql/main/sqlite/schema.sql" } # The sub-module to use to execute queries. This should match # the database you're attempting to connect to. # # * rlm_sql_mysql # * rlm_sql_mssql # * rlm_sql_oracle # * rlm_sql_postgresql # * rlm_sql_sqlite # * rlm_sql_null (log queries to disk) # driver = "rlm_sql_sqlite" # The dialect of SQL you want to use, this should usually match # the driver you selected above. # # If you're using rlm_sql_null, then it should be the type of # database the logged queries are going to be executed against. dialect = "sqlite" # Database table configuration for everything except Oracle radius_db = "radius" # If you want both stop and start records logged to the # same SQL table, leave this as is. If you want them in # different tables, put the start table in acct_table1 # and stop table in acct_table2 acct_table1 = "radacct" acct_table2 = "radacct" # Allow for storing data after authentication postauth_table = "radpostauth" # Tables containing 'check' items authcheck_table = "radcheck" groupcheck_table = "radgroupcheck" # Tables containing 'reply' items authreply_table = "radreply" groupreply_table = "radgroupreply" # Table to keep group info usergroup_table = "radusergroup" # If set to 'yes' (default) we read the group tables # If set to 'no' the user MUST have Fall-Through = Yes in the radreply table read_groups = yes # Remove stale session if checkrad does not see a double login delete_stale_sessions = yes # Write SQL queries to a logfile. This is potentially useful for tracing # issues with authorization queries. # logfile = ${logdir}/sqllog.sql # As of version 3.0, the "pool" section has replaced the # following configuration items: # # num_sql_socks # connect_failure_retry_delay # lifetime # max_queries # # The connection pool is new for 3.0, and will be used in many # modules, for all kinds of connection-related activity. # pool { # Number of connections to start start = 5 # Minimum number of connections to keep open min = 4 # Maximum number of connections # # If these connections are all in use and a new one # is requested, the request will NOT get a connection. max = 10 # Spare connections to be left idle # # NOTE: Idle connections WILL be closed if "idle_timeout" # is set. spare = 3 # Number of uses before the connection is closed # # 0 means "infinite" uses = 0 # The lifetime (in seconds) of the connection lifetime = 0 # idle timeout (in seconds). A connection which is # unused for this length of time will be closed. idle_timeout = 60 # NOTE: All configuration settings are enforced. If a # connection is closed because of "idle_timeout", # "uses", or "lifetime", then the total number of # connections MAY fall below "min". When that # happens, it will open a new connection. It will # also log a WARNING message. # # The solution is to either lower the "min" connections, # or increase lifetime/idle_timeout. } # Set to 'yes' to read radius clients from the database ('nas' table) # Clients will ONLY be read on server startup. # read_clients = yes # Table to keep radius client info client_table = "nas" # This entry should be used for the default instance (sql {}) # of the SQL module. group_attribute = "SQL-Group" # Read database-specific queries $INCLUDE ${modconfdir}/${.:name}/main/${dialect}/queries.conf } # -*- text -*- ## ## sql.conf -- SQL modules ## ## $Id: 4997a802dfd8660f622d06f577a787bf30895e3e $ ###################################################################### # # Configuration for the SQL module # # The database schemas and queries are located in subdirectories: # # sql/<DB>/main/schema.sql Schema # sql/<DB>/main/queries.conf Authorisation and Accounting queries # # Where "DB" is mysql, mssql, oracle, or postgresql. # # # # Several drivers accept specific options, to set them a config section # matching the name of the driver should be added to the sql instance. # # Driver specific options are: # # # mysql { # # If any of the below files are set tls encryption is enabled # tls { # ca_file = "/etc/ssl/certs/my_ca.crt" # ca_path = "/etc/ssl/certs/" # certificate_file = "/etc/ssl/certs/private/client.crt" # private_key_file = "/etc/ssl/certs/private/client.key" # cipher = "DHE-RSA-AES256-SHA:AES128-SHA" # } # } bob { filename = "/tmp/nope.txt" } sql { sqlite { # Path to the sqlite database filename = "/tmp/database.db" # If the file above does not exist and bootstrap is set # a new database file will be created, and the SQL statements # contained within the file will be executed. bootstrap = "/etc/radiusd-acct/mods-config/sql/main/sqlite/schema.sql" } # The sub-module to use to execute queries. This should match # the database you're attempting to connect to. # # * rlm_sql_mysql # * rlm_sql_mssql # * rlm_sql_oracle # * rlm_sql_postgresql # * rlm_sql_sqlite # * rlm_sql_null (log queries to disk) # driver = "rlm_sql_sqlite" # The dialect of SQL you want to use, this should usually match # the driver you selected above. # # If you're using rlm_sql_null, then it should be the type of # database the logged queries are going to be executed against. dialect = "sqlite" # Database table configuration for everything except Oracle radius_db = "radius" # If you want both stop and start records logged to the # same SQL table, leave this as is. If you want them in # different tables, put the start table in acct_table1 # and stop table in acct_table2 acct_table1 = "radacct" acct_table2 = "radacct" # Allow for storing data after authentication postauth_table = "radpostauth" # Tables containing 'check' items authcheck_table = "radcheck" groupcheck_table = "radgroupcheck" # Tables containing 'reply' items authreply_table = "radreply" groupreply_table = "radgroupreply" # Table to keep group info usergroup_table = "radusergroup" # If set to 'yes' (default) we read the group tables # If set to 'no' the user MUST have Fall-Through = Yes in the radreply table read_groups = yes # Remove stale session if checkrad does not see a double login delete_stale_sessions = yes # Write SQL queries to a logfile. This is potentially useful for tracing # issues with authorization queries. # logfile = ${logdir}/sqllog.sql # As of version 3.0, the "pool" section has replaced the # following configuration items: # # num_sql_socks # connect_failure_retry_delay # lifetime # max_queries # # The connection pool is new for 3.0, and will be used in many # modules, for all kinds of connection-related activity. # pool { # Number of connections to start start = 5 # Minimum number of connections to keep open min = 4 # Maximum number of connections # # If these connections are all in use and a new one # is requested, the request will NOT get a connection. max = 10 # Spare connections to be left idle # # NOTE: Idle connections WILL be closed if "idle_timeout" # is set. spare = 3 # Number of uses before the connection is closed # # 0 means "infinite" uses = 0 # The lifetime (in seconds) of the connection lifetime = 0 # idle timeout (in seconds). A connection which is # unused for this length of time will be closed. idle_timeout = 60 # NOTE: All configuration settings are enforced. If a # connection is closed because of "idle_timeout", # "uses", or "lifetime", then the total number of # connections MAY fall below "min". When that # happens, it will open a new connection. It will # also log a WARNING message. # # The solution is to either lower the "min" connections, # or increase lifetime/idle_timeout. } # Set to 'yes' to read radius clients from the database ('nas' table) # Clients will ONLY be read on server startup. # read_clients = yes # Table to keep radius client info client_table = "nas" # This entry should be used for the default instance (sql {}) # of the SQL module. group_attribute = "SQL-Group" # Read database-specific queries $INCLUDE ${modconfdir}/${.:name}/main/${dialect}/queries.conf } ---------------------------------------------------------------------------------------------------- If I start now radiusd -X, than I get this error: /etc/radiusd-acct/mods-enabled/sql[38]: Failed to link to module 'rlm_bob': /usr/local/lib64/rlm_bob.so: cannot open shared object file: No such file or directory /usr/local/lib/rlm_bob.so: cannot open shared object file: No such file or directory Honestly, in my eyes this error is a bit misleading, because it tells me that a library is missing and not that the configuration is broken. But okay, out of mistakes I can learn. Nevertheless, thank you all and have a nice day. Kind regards. D. Stabla
On 9 June 2017 07:24:48 BST, "Stabla, Daniel" <dstabla@materna.de> wrote:
I figured it out, the hint from Matthew did the trick.
OK that's good.
No such file or directory /usr/local/lib/rlm_bob.so: cannot open shared object file: No such file or directory
Honestly, in my eyes this error is a bit misleading, because it tells me that a library is missing and not that the configuration is broken.
I'm not sure what else it could report. Those parts of the configuration are all in the modules section, which loads a module for each subsection. So if you put a new subsection there it will try and load the module for it. Then you get that error if the module can't be found. -- Matthew
On Jun 9, 2017, at 2:24 AM, Stabla, Daniel <dstabla@materna.de> wrote:
Because of the wrong position of some lines in the configuration file, radiusd searched for the wrong rlm*.so.
i.e. you told the server to do something, and now are complaining that the server is doing something wrong.
I altered the configuration to this, look at the line with "bob":
Posting configuration files to the list is unhelpful. We know what they look like... we wrote them.
If I start now radiusd -X, than I get this error:
/etc/radiusd-acct/mods-enabled/sql[38]: Failed to link to module 'rlm_bob': /usr/local/lib64/rlm_bob.so: cannot open shared object file: No such file or directory /usr/local/lib/rlm_bob.so: cannot open shared object file: No such file or directory
Honestly, in my eyes this error is a bit misleading, because it tells me that a library is missing and not that the configuration is broken. But okay, out of mistakes I can learn.
The point is you didn't need to go through all of this hassle. All you needed to do was follow the documentation. These kinds of errors generally occur because people ignore the documentation, don't describe what they did, but still expect the developers to magically know what they did and how to fix it. Doing bad things gets you bad results. Asking bad questions gets bad answers. Alan DeKok.
participants (3)
-
Alan DeKok -
Matthew Newton -
Stabla, Daniel