Unlang 写入文件 FreeRADIUS

Unlang write to file FreeRADIUS

我知道我可能面临着一个不可能完成的任务。我想要的是 radiusd 记下访问请求中收到的每个 mac,以便稍后拒绝访问那些 MAC。

我知道策略文件是用 unlang 编写的,坏消息是 radiusd 对任何 conf 文件没有任何写权限...

无论如何,有人能够在 FreeRADIUS 的策略处理中写入文件吗?

我想要实现的是这样的:

raddb/sites-available/default

authorize {
  rewrite_calling_station_id
  unauthorized_macs
  if(ok) {
    reject        
  }
  else {
    update control {
      Auth-Type := Accept
    }
    GET MAC FROM CALLIN_STATION_ID ATTRIBUTE
    WRITE THIS F***ING MAC TO unauthorized_macs FILE
 }

}

感谢 Arran,我可以通过以下方式解决此问题:

authorize {
  rewrite_calling_station_id
  authMac
  if(ok) {
    reject
  }   
  else {
    linelog
    update control {
      Auth-Type := Accept
    }   
 }

}

其中linelog配置如下: raddb/mods-enabled/linelog

linelog {
    filename = /path/to/hell/authMac
    format = "%{Calling-Station-ID}"
  }
update request {
    Tmp-String-0 := `echo "%{Calling-Station-ID}" >> "/path/to/f___ing_unauthorized_macs_file"`
}

还有 linelog 模块,在 >= v3 中会更好。0.x 因为它实现了内部锁定(除了 flock 之外)以防止行交织。

有关示例,请参阅 /etc/raddb/mods-available/linelog