用 UNION 解决 proftpd:mod_quotatab_sql.c 不能设置默认配额的问题

项目中碰到给注册用户分配一个 FTP 空间的需求,用户都是保存在 MYSQL 数据库中。

首先就想到用  proftpd + mod_sql 来解决。因为 proftpd 是久经考验的开源 FTP 服务器软件,而且代码模块清晰,必要时还可以自己修改代码。

其中的 quota 模块是基于“用户”定制,针对每个用户创建一条配额记录,却不能为全部用户设置一个默认的配额。这样对于一个已经有大量注册用户的项目颇为麻烦,又不想遍历用户列表为其创建一条配额记录。经实验可以用以下方法为每个用户默认分配 512MB 的空间限额:


SQLNamedQuery get-quota-limit SELECT "* FROM ftp_quota_limits WHERE name = '%{0}' AND quota_type = '%{1}' UNION SELECT '%{0}','user','false','soft',536870912,0,0,0,0,0 LIMIT 1"

通过 MySQL 的 UNION 加上 LIMIT 1 顺利解决。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>