HOME


Mini Shell 1.0
DIR:/usr/share/doc/cluebringer-v2.1.x/database/
Upload File :
Current File : //usr/share/doc/cluebringer-v2.1.x/database/accounting.tsql
# Accounting module schema
# Copyright (C) 2009-2011, AllWorldIT
# Copyright (C) 2008, LinuxRulz
# 
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
# 
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
# 
# You should have received a copy of the GNU General Public License along
# with this program; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.


/* Main accounting table, this defines the period the accounting items are over and how to track it */
CREATE TABLE @PREFIX@accounting (
	ID			@SERIAL_TYPE@,

	PolicyID		@SERIAL_REF_TYPE@,
	
	Name			VARCHAR(255) NOT NULL,

	/* Tracking Options */
	Track			VARCHAR(255) NOT NULL,  /* Format:   <type>:<spec>

					      SenderIP - This takes a bitmask to mask the IP with. A good default is /24 

					      Sender & Recipient - Either "user@domain" (default), "user@" or "@domain" for the entire 
					      		email addy or email addy domain respectively. 
					   */

	/* Period over which to account traffic */
	AccountingPeriod		SMALLINT NOT NULL,  /* 0 - Track by day, 1 - Track by week, 2 - Track by month */

	/* Limits for this period */
	MessageCountLimit		@BIG_INTEGER_UNSIGNED@,  /* Limit is in Kbyte, NULL means no limit */
	MessageCumulativeSizeLimit	@BIG_INTEGER_UNSIGNED@,  /* LImit is in Kbyte, NULL means no limit */

	/* Verdict if limits are exceeded */
	Verdict			VARCHAR(255), /* Verdict when limit is exceeded */
	Data			TEXT, /* Data sent along with verdict */
	
	LastAccounting		SMALLINT NOT NULL DEFAULT '0',
		
	Comment			VARCHAR(1024),
	
	Disabled		SMALLINT NOT NULL DEFAULT '0',

	FOREIGN KEY (PolicyID) REFERENCES @PREFIX@policies(ID)
) @CREATE_TABLE_SUFFIX@;



/* This table is used for tracking the accounting */
CREATE TABLE @PREFIX@accounting_tracking (

	AccountingID		@SERIAL_REF_TYPE@,
	TrackKey		VARCHAR(@TRACK_KEY_LEN@),
	PeriodKey		VARCHAR(@TRACK_KEY_LEN@),

	/* Last time this record was update */
	LastUpdate		@BIG_INTEGER_UNSIGNED@,  /* NULL means not updated yet */

	MessageCount		@BIG_INTEGER_UNSIGNED@,
	MessageCumulativeSize	@BIG_INTEGER_UNSIGNED@,  /* Counter is in Kbyte */
	
	UNIQUE (AccountingID,TrackKey,PeriodKey),
	FOREIGN KEY (AccountingID) REFERENCES @PREFIX@accounting(ID)
) @CREATE_TABLE_SUFFIX@;
CREATE INDEX @PREFIX@accounting_tracking_idx1 ON @PREFIX@accounting_tracking (LastUpdate);