00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifdef HAVE_CONFIG_H
00021 #include <config.h>
00022 #endif
00023 #include <cassert>
00024 #include "dbdefs.h"
00025 #include "defs.h"
00026
00027
00029 static const WLStaticDef g_wlSqlDefs[] = {
00030
00031 { TABLE_NETWORK,
00032
00033
00034
00035 "SELECT * FROM "TABLE_NETWORK,
00036
00037 { "CREATE TABLE "TABLE_NETWORK" ( "
00038 ATTR_NWADDRESS" VARCHAR("STRINGIFY(MAX_LEN_NWADDRESS)") not null default '',"
00039 ATTR_NWCOMMENT" VARCHAR("STRINGIFY(MAX_LEN_NWCOMMENT)") DEFAULT ''," },
00040
00041 ATTR_NWADDRESS,
00042 WlModule::CM_exactMatch,
00043 "SELECT "ATTR_NWCOMMENT" FROM "TABLE_NETWORK,
00044 {
00045 { ATTR_NWADDRESS,"=", Triplet::TM_quotedweakclient,0},
00046
00047 { NULL }
00048 },
00049
00050 ATTR_NWCOMMENT
00051 },
00052 { TABLE_RECIPIENT,
00053 "SELECT * FROM "TABLE_RECIPIENT,
00054 { "CREATE TABLE "TABLE_RECIPIENT" ( "
00055 ATTR_RCPTADDRESS" VARCHAR("STRINGIFY(MAX_LEN_RCPTADDRESS)") NOT NULL DEFAULT '',"
00056 ATTR_RCPTCOMMENT" VARCHAR("STRINGIFY(MAX_LEN_RCPTCOMMENT)") DEFAULT ''," },
00057 ATTR_RCPTADDRESS,
00058 WlModule::CM_exactMatch,
00059 "SELECT "ATTR_RCPTCOMMENT" FROM "TABLE_RECIPIENT,
00060 {
00061 { ATTR_RCPTADDRESS,"=", Triplet::TM_recipient,0},
00062 { NULL }
00063 },
00064 ATTR_RCPTCOMMENT
00065 },
00066 { TABLE_SENDER,
00067 "SELECT * FROM "TABLE_SENDER,
00068 { "CREATE TABLE "TABLE_SENDER" ( "
00069 ATTR_SNDADDRESS" VARCHAR("STRINGIFY(MAX_LEN_SNDADDRESS)") NOT NULL DEFAULT '',"
00070 ATTR_SNDCOMMENT" VARCHAR("STRINGIFY(MAX_LEN_SNDCOMMENT)") DEFAULT ''," },
00071 ATTR_SNDADDRESS,
00072 WlModule::CM_exactMatch,
00073 "SELECT "ATTR_SNDCOMMENT" FROM "TABLE_SENDER,
00074 {
00075 { ATTR_SNDADDRESS,"=", Triplet::TM_sender,0},
00076 { NULL }
00077 },
00078 ATTR_SNDCOMMENT
00079 },
00080 { TABLE_PATTERN,
00081 "SELECT * FROM "TABLE_PATTERN,
00082 { "CREATE TABLE "TABLE_PATTERN" ( "
00083 ATTR_EXPRESSION" VARCHAR("STRINGIFY(MAX_LEN_EXPRESSION)") NOT NULL DEFAULT '',"
00084 ATTR_PATTCOMMENT" VARCHAR("STRINGIFY(MAX_LEN_PATTCOMMENT)") DEFAULT ''," },
00085 ATTR_EXPRESSION,
00086 WlModule::CM_patternMatch,
00087 "SELECT * FROM "TABLE_PATTERN,
00088 {
00089 { NULL }
00090 },
00091 ATTR_PATTCOMMENT
00092 },
00093 { NULL }
00094 };
00096 static const WLStaticDef g_tripletsSqlDef =
00097 { TABLE_TRIPLETS,
00098 "SELECT * FROM "TABLE_TRIPLETS,
00099 { "CREATE TABLE "TABLE_TRIPLETS" ("
00100 ATTR_CLIENT" VARCHAR("STRINGIFY(MAX_LEN_CLIENT)"),"
00101 ATTR_SENDER" VARCHAR("STRINGIFY(MAX_LEN_SENDER)") NOT NULL,"
00102 ATTR_RECIPIENT" VARCHAR("STRINGIFY(MAX_LEN_RECIPIENT)") NOT NULL,"
00103 TRIPLETS_IPDEF(64)" NUMERIC(4,0) DEFAULT 0 NOT NULL,"
00104 TRIPLETS_IPDEF(32)" NUMERIC(4,0) DEFAULT 0 NOT NULL,"
00105 TRIPLETS_IPDEF(16)" NUMERIC(4,0) DEFAULT 0 NOT NULL,"
00106 TRIPLETS_IPDEF(8)" NUMERIC(4,0) DEFAULT 0 NOT NULL,"
00107 "count INT NOT NULL DEFAULT '0',"
00108 "uts INT NOT NULL,"
00109 "PRIMARY KEY ("
00110 ATTR_RECIPIENT","ATTR_SENDER
00111 ","TRIPLETS_IPDEF(64)","TRIPLETS_IPDEF(32)","TRIPLETS_IPDEF(16)","TRIPLETS_IPDEF(8)
00112 ")",
00113 "CREATE INDEX sender_recipient_index ON "TABLE_TRIPLETS
00114 "("ATTR_SENDER"(15),"ATTR_RECIPIENT"(15)"
00115 }
00116 };
00117
00118 const WLStaticDef& g_getTripletDef()
00119 {
00120 return g_tripletsSqlDef;
00121 }
00122 const WLStaticDef& g_getWlDef(const std::string& tableName) throw (std::out_of_range)
00123 {
00124 unsigned iSql = 0;
00125 while((iSql < ((sizeof(g_wlSqlDefs)/sizeof(WLStaticDef))-1))
00126 && ::g_wlSqlDefs[iSql]._tableName ) {
00127 if(::g_wlSqlDefs[iSql]._tableName == tableName)
00128 return ::g_wlSqlDefs[iSql];
00129 iSql++;
00130 }
00131 throw std::out_of_range("Possible (typing) error in configuration. No whitelisting supported for: "
00132 +tableName+" (g_getWlDef)");
00133 }