ftp - Proftpd specific user configuration from MySQL -


i have set proftpd server mysql connection. works fine.

i set specific permissions each user database using (pathallowfilter, pathdenyfilter, ...)

the server running on ubuntu 12.04 lts distribution.

it not easy, there no single module this. found solution this.

it's not optimal because have restart proftpd server each time change mysql configuration, works.

as have proftpd server run mysql, explain part of specific user configuration.

for solution need proftpd compiled these modules:

to proftpd recompilation, can run command proftpd -v see how version configured. can found documentation here.

once have compiled proftpd server , it's run, have log on mysql server.

if read mod_conf_sql, create 3 tables ftpctxt, ftpconf, ftpmap. not create these tables unless want have global configuration mysql.

we fake mysql configuration "views".

1. first add each specific configuration user column (make sure have default value):

alter table ftpuser # add pathdenyfilter varchar( 255 ) not null default '(\.ftp)|(\.hta)[a-z]+$';`  alter table ftpuser  add pathallowfilter varchar( 255 ) not null default '.*$';` .... 

2. create conf view:

  • user's id , configuration column concatenated make unique id
  • user's configuration column used type
  • user's configuration value used info
  • view union of selects (for every column union required)

    create view ftpuser_conf select concat(ftpuser.id,'-pathdenyfilter')  id,'pathdenyfilter' type,ftpuser.pathdenyfilter info ftpuser  union  select concat(ftpuser.id,'-pathallowfilter') id,'pathallowfilter' type, ftpuser.pathallowfilter info  ftpuser; 

3. create ctxt view

  • this view concatenation of "default" row , user's rows ("default" row has 1 id , user's rows have user's id + 1 id.
  • concatenate "userconf-" , user's id name
  • "ifuser" type
  • user's username info

    create view ftpuser_ctxt   select 1 id,null parent_id, 'default' name, 'default' type, null info   union   select (ftpuser.id + 1) id,1 parent_id,          concat('userconf-',ftpuser.userid) name,          'ifuser' type,ftpuser.userid info   fron ftpuser; 

4. create map view

  • user's id , configuration column concatenated conf_id
  • user's id + 1 ctxt_id
  • view union of selects (for every column union required)

    create view ftpuser_map  select concat(ftpuser.id,'-pathdenyfilter')  conf_id,(ftpuser.id + 1) ctxt_id  ftpuser  union  select concat(ftpuser.id,'-pathallowfilter')  conf_id,(ftpuser.id + 1) ctxt_id  ftpuser; 

5. add these lines proftpd configuration

<ifmodule mod_conf_sql.c>     include sql://user:password@host/db:database/ctxt:ftpuser_ctxt:id,parent_id,type,info/conf:ftpuser_conf:id,type,info/map:ftpuser_map:conf_id,ctxt_id/base_id=1 </ifmodule> 

where:

  • user => mysql username
  • password => mysql password
  • host => mysql host
  • database => mysql database

6. restart proftpd server

i hope you. luck


Comments

Popular posts from this blog

linux - xterm copying to CLIPBOARD using copy-selection causes automatic updating of CLIPBOARD upon mouse selection -

c++ - qgraphicsview horizontal scrolling always has a vertical delta -