1 /* 2 * $Id: voracle.h 1014 2011-02-03 16:04:37Z volz0r $ 3 * Copyright (C) 1999-2009 Inter7 Internet Technologies, Inc. 4 * 5 * This program is free software; you can redistribute it and/or modify 6 * it under the terms of the GNU General Public License as published by 7 * the Free Software Foundation; either version 2 of the License, or 8 * (at your option) any later version. 9 * 10 * This program is distributed in the hope that it will be useful, 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 * GNU General Public License for more details. 14 * 15 * You should have received a copy of the GNU General Public License 16 * along with this program; if not, write to the Free Software 17 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA 18 */ 19 #ifndef VPOPMAIL_ORACLE_H 20 #define VPOPMAIL_ORACLE_H 21 22 /* Edit to match your set up */ 23 #define ORACLE_SERVICE "service" 24 #define ORACLE_USER "user" 25 #define ORACLE_PASSWD "password" 26 #define ORACLE_DATABASE "orcl1" 27 #define ORACLE_HOME "ORACLE_HOME=/db/u01/app/oracle/product/8.1.7" 28 /* End of setup section*/ 29 30 /* defaults - no need to change */ 31 #define ORACLE_DEFAULT_TABLE "vpopmail" 32 #define ORACLE_DOT_CHAR '_' 33 #define ORACLE_LARGE_USERS_TABLE "users" 34 35 #ifdef MANY_DOMAINS 36 #ifdef CLEAR_PASS 37 #define TABLE_LAYOUT "pw_name char(32) not null, \ 38 pw_domain char(96) not NULL, \ 39 pw_passwd char(40), \ 40 pw_uid int, pw_gid int, \ 41 pw_gecos char(48), \ 42 pw_dir char(160), \ 43 pw_shell char(20), \ 44 pw_clear_passwd char(16), \ 45 primary key (pw_name, pw_domain ) " 46 #else 47 #define TABLE_LAYOUT "pw_name char(32) not null, \ 48 pw_domain char(96) not null, \ 49 pw_passwd char(40), \ 50 pw_uid int, pw_gid int, \ 51 pw_gecos char(48), \ 52 pw_dir char(160), \ 53 pw_shell char(20), \ 54 primary key (pw_name, pw_domain ) " 55 #endif 56 #else 57 #ifdef CLEAR_PASS 58 #define TABLE_LAYOUT "pw_name char(32) not null, \ 59 pw_passwd char(40), \ 60 pw_uid int, pw_gid int, \ 61 pw_gecos char(48), \ 62 pw_dir char(160), \ 63 pw_shell char(20), \ 64 pw_clear_passwd char(16), \ 65 primary key (pw_name ) " 66 #else 67 #define TABLE_LAYOUT "pw_name char(32) not null, \ 68 pw_passwd char(40), \ 69 pw_uid int, pw_gid int, \ 70 pw_gecos char(48), \ 71 pw_dir char(160), \ 72 pw_shell char(20), \ 73 primary key (pw_name ) " 74 #endif 75 #endif 76 77 #define RELAY_TABLE_LAYOUT "ip_addr char(18) not null, \ 78 timestamp char(12), primary key (ip_addr)" 79 80 #define LASTAUTH_TABLE_LAYOUT \ 81 "pw_user char(32) NOT NULL, \ 82 pw_domain char(96) NOT NULL,\ 83 remote_ip char(18) not null, \ 84 timestamp int default 0 NOT NULL, \ 85 primary key (pw_user, pw_domain)" 86 87 char *vauth_munch_domain(char *); 88 89 int vauth_adddomain_size(char *, int); 90 int vauth_deldomain_size(char *, int); 91 int vauth_adduser_size(char *, char *, char *, char *, char *, int, int); 92 int vauth_deluser_size(char *, char *, int); 93 int vauth_vpasswd_size( char *, char *, char *, int, int); 94 int vauth_setquota_size( char *, char *, char *, int); 95 struct vqpasswd *vauth_getpw_size(char *, char *, int); 96 struct vqpasswd *vauth_user_size(char *, char *, char*, char *, int); 97 struct vqpasswd *vauth_getall_size(char *, int, int, int); 98 int vauth_setpw_size( struct vqpasswd *, char *, int); 99 100 #ifdef MANY_DOMAINS 101 #ifdef CLEAR_PASS 102 #define INSERT "insert into %s \ 103 ( pw_name, pw_domain, pw_passwd, pw_uid, pw_gid, pw_gecos, pw_dir, pw_shell \ 104 , pw_clear_passwd ) values ( '%s', '%s', \ 105 '%s', %d, 0, '%s', '%s', '%s' ,'%s' )" 106 #else 107 #define INSERT "insert into %s \ 108 ( pw_name, pw_domain, pw_passwd, pw_uid, pw_gid, pw_gecos, pw_dir, pw_shell \ 109 ) values ( '%s', '%s', \ 110 '%s', %d, 0, '%s', '%s', '%s' )" 111 #endif 112 #else 113 #ifdef CLEAR_PASS 114 #define INSERT "insert into %s \ 115 ( pw_name, pw_passwd, pw_uid, pw_gid, pw_gecos, pw_dir, pw_shell \ 116 , pw_clear_passwd ) values ( '%s', \ 117 '%s', %d, 0, '%s', '%s', '%s' ,'%s' )" 118 #else 119 #define INSERT "insert into %s \ 120 ( pw_name, pw_passwd, pw_uid, pw_gid, pw_gecos, pw_dir, pw_shell \ 121 ) values ( '%s', \ 122 '%s', %d, 0, '%s', '%s', '%s' )" 123 #endif 124 #endif 125 126 #ifdef MANY_DOMAINS 127 #define DELETE_USER "delete from %s where pw_name = '%s' \ 128 and pw_domain = '%s' " 129 #else 130 #define DELETE_USER "delete from %s where pw_name = '%s' " 131 #endif 132 133 134 #ifdef MANY_DOMAINS 135 #define SETQUOTA "update %s set pw_shell = '%s' where pw_name = '%s' \ 136 and pw_domain = '%s' " 137 #else 138 #define SETQUOTA "update %s set pw_shell = '%s' where pw_name = '%s' " 139 #endif 140 141 #ifdef MANY_DOMAINS 142 #ifdef CLEAR_PASS 143 #define USER_SELECT "select pw_name, pw_passwd, pw_uid, pw_gid, \ 144 pw_gecos, pw_dir, pw_shell , pw_clear_passwd \ 145 from %s where pw_name = '%s' and pw_domain = '%s' " 146 #else 147 #define USER_SELECT "select pw_name, pw_passwd, pw_uid, pw_gid, \ 148 pw_gecos, pw_dir, pw_shell \ 149 from %s where pw_name = '%s' and pw_domain = '%s' " 150 #endif 151 #else 152 #ifdef CLEAR_PASS 153 #define USER_SELECT "select pw_name, pw_passwd, pw_uid, pw_gid, \ 154 pw_gecos, pw_dir, pw_shell , pw_clear_passwd \ 155 from %s where pw_name = '%s' " 156 #else 157 #define USER_SELECT "select pw_name, pw_passwd, pw_uid, pw_gid, \ 158 pw_gecos, pw_dir, pw_shell \ 159 from %s where pw_name = '%s' " 160 #endif 161 #endif 162 163 #ifdef MANY_DOMAINS 164 #ifdef CLEAR_PASS 165 #define GETALL "select pw_name, \ 166 pw_passwd, pw_uid, pw_gid, pw_gecos, pw_dir, pw_shell, \ 167 pw_clear_passwd from %s where pw_domain = '%s'" 168 #else 169 #define GETALL "select pw_name, \ 170 pw_passwd, pw_uid, pw_gid, pw_gecos, pw_dir, pw_shell \ 171 from %s where pw_domain = '%s'" 172 #endif 173 #else 174 #ifdef CLEAR_PASS 175 #define GETALL "select pw_name, \ 176 pw_passwd, pw_uid, pw_gid, pw_gecos, pw_dir, pw_shell, \ 177 pw_clear_passwd from %s" 178 #else 179 #define GETALL "select pw_name, \ 180 pw_passwd, pw_uid, pw_gid, pw_gecos, pw_dir, pw_shell from %s " 181 #endif 182 #endif 183 184 #ifdef MANY_DOMAINS 185 #ifdef CLEAR_PASS 186 #define SETPW "update %s set pw_passwd = '%s', \ 187 pw_uid = %d, pw_gid = %d, pw_gecos = '%s', pw_dir = '%s', \ 188 pw_shell = '%s' \ 189 , pw_clear_passwd = '%s' \ 190 where pw_name = '%s' \ 191 and pw_domain = '%s' " 192 #else 193 #define SETPW "update %s set pw_passwd = '%s', \ 194 pw_uid = %d, pw_gid = %d, pw_gecos = '%s', pw_dir = '%s', \ 195 pw_shell = '%s' \ 196 where pw_name = '%s' \ 197 and pw_domain = '%s' " 198 #endif 199 #else 200 #ifdef CLEAR_PASS 201 #define SETPW "update %s set pw_passwd = '%s', \ 202 pw_uid = %d, pw_gid = %d, pw_gecos = '%s', pw_dir = '%s', \ 203 pw_shell = '%s' \ 204 , pw_clear_passwd = '%s' \ 205 where pw_name = '%s' " 206 #else 207 #define SETPW "update %s set pw_passwd = '%s', \ 208 pw_uid = %d, pw_gid = %d, pw_gecos = '%s', pw_dir = '%s', \ 209 pw_shell = '%s' \ 210 where pw_name = '%s' " 211 #endif 212 #endif 213 214 #ifdef IP_ALIAS_DOMAINS 215 #define IP_ALIAS_TABLE_LAYOUT "ip_addr char(18) not null, domain char(96), primary key(ip_addr)" 216 #endif 217 218 #define DIR_CONTROL_TABLE_LAYOUT "domain char(96) not null, cur_users int, \ 219 level_cur int, level_max int, \ 220 level_start0 int, level_start1 int, level_start2 int, \ 221 level_end0 int, level_end1 int, level_end2 int, \ 222 level_mod0 int, level_mod1 int, level_mod2 int, \ 223 level_index0 int , level_index1 int, level_index2 int, the_dir char(160), \ 224 primary key (domain) " 225 226 #define DIR_CONTROL_SELECT "cur_users, \ 227 level_cur, level_max, \ 228 level_start0, level_start1, level_start2, \ 229 level_end0, level_end1, level_end2, \ 230 level_mod0, level_mod1, level_mod2, \ 231 level_index0, level_index1, level_index2, the_dir" 232 233 #define VALIAS_TABLE_LAYOUT "alias char(32) not null, \ 234 domain char(96) not null, \ 235 valias_line varchar(255) not null " 236 237 #endif 238 239 #ifdef ENABLE_SQL_LOGGING 240 #define VLOG_TABLE_LAYOUT "id BIGINT PRIMARY KEY AUTO_INCREMENT, \ 241 user char(32), passwd CHAR(32), \ 242 domain CHAR(96), logon VARCHAR(200), \ 243 remoteip char(18), message VARCHAR(255), \ 244 timestamp int default 0 NOT NULL, error INT, \ 245 INDEX user_idx (user), \ 246 INDEX domain_idx (domain), INDEX remoteip_idx (remoteip), \ 247 INDEX error_idx (error), INDEX message_idx (message)" 248 #endif 249 250 #ifdef ENABLE_ORACLE_LIMITS 251 #define LIMITS_TABLE_LAYOUT "domain CHAR(96) PRIMARY KEY, \ 252 maxpopaccounts INT(10) NOT NULL DEFAULT -1, \ 253 maxaliases INT(10) NOT NULL DEFAULT -1, \ 254 maxforwards INT(10) NOT NULL DEFAULT -1, \ 255 maxautoresponders INT(10) NOT NULL DEFAULT -1, \ 256 maxmailinglists INT(10) NOT NULL DEFAULT -1, \ 257 diskquota INT(12) NOT NULL DEFAULT 0, \ 258 defaultquota INT(12) NOT NULL DEFAULT 0, \ 259 disablepop TINYINT(1) NOT NULL DEFAULT 0, \ 260 disableimap TINYINT(1) NOT NULL DEFAULT 0, \ 261 disabledialup TINYINT(1) NOT NULL DEFAULT 0, \ 262 disablepasswordchanging TINYINT(1) NOT NULL DEFAULT 0, \ 263 disablewebmail TINYINT(1) NOT NULL DEFAULT 0, \ 264 disablerelay TINYINT(1) NOT NULL DEFAULT 0, \ 265 disablesmtp TINYINT(1) NOT NULL DEFAULT 0" 266 #endif 267 268 269 270