Chetan Gaonker | 7f4bf74 | 2016-05-04 15:56:08 -0700 | [diff] [blame] | 1 | /* |
| 2 | * $Id: 37f42a0b13515b09f9c7792e8a64b2a3b187e7a3 $ |
| 3 | * |
| 4 | * OPTIONAL Postgresql trigger for FreeRADIUS |
| 5 | * |
| 6 | * This trigger updates fills in the groupname field (which doesnt come in Accounting packets) |
| 7 | * by querying the radusergroup table. |
| 8 | * This makes it easier to do group summary reports, however note that it does add some extra |
| 9 | * database load to 50% of your SQL accounting queries. If you dont care about group summary |
| 10 | * reports then you dont need to install this. |
| 11 | * |
| 12 | */ |
| 13 | |
| 14 | |
| 15 | CREATE OR REPLACE FUNCTION upd_radgroups() RETURNS trigger AS' |
| 16 | |
| 17 | DECLARE |
| 18 | v_groupname varchar; |
| 19 | |
| 20 | BEGIN |
| 21 | SELECT INTO v_groupname GroupName FROM radusergroup WHERE CalledStationId = NEW.CalledStationId AND UserName = NEW.UserName; |
| 22 | IF FOUND THEN |
| 23 | UPDATE radacct SET GroupName = v_groupname WHERE RadAcctId = NEW.RadAcctId; |
| 24 | END IF; |
| 25 | |
| 26 | RETURN NEW; |
| 27 | END |
| 28 | |
| 29 | 'LANGUAGE plpgsql; |
| 30 | |
| 31 | |
| 32 | DROP TRIGGER upd_radgroups ON radacct; |
| 33 | |
| 34 | CREATE TRIGGER upd_radgroups AFTER INSERT ON radacct |
| 35 | FOR EACH ROW EXECUTE PROCEDURE upd_radgroups(); |
| 36 | |
| 37 | |