1 /* 2 * ProFTPD - mod_snmp database tables 3 * Copyright (c) 2008-2016 TJ Saunders 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., 51 Franklin Street, Suite 500, Boston, MA 02110-1335, USA. 18 * 19 * As a special exemption, TJ Saunders and other respective copyright holders 20 * give permission to link this program with OpenSSL, and distribute the 21 * resulting executable, without including the source code for OpenSSL in the 22 * source distribution. 23 */ 24 25 #ifndef MOD_SNMP_DB_H 26 #define MOD_SNMP_DB_H 27 28 #include "mod_snmp.h" 29 30 /* Database IDs */ 31 #define SNMP_DB_ID_UNKNOWN 0 32 #define SNMP_DB_ID_NOTIFY 1 33 #define SNMP_DB_ID_CONN 2 34 #define SNMP_DB_ID_DAEMON 3 35 #define SNMP_DB_ID_TIMEOUTS 4 36 #define SNMP_DB_ID_FTP 5 37 #define SNMP_DB_ID_SNMP 6 38 #define SNMP_DB_ID_TLS 7 39 #define SNMP_DB_ID_SSH 8 40 #define SNMP_DB_ID_SFTP 9 41 #define SNMP_DB_ID_SCP 10 42 #define SNMP_DB_ID_BAN 11 43 44 #if 0 45 #define SNMP_DB_ID_SQL 11 46 #define SNMP_DB_ID_QUOTA 12 47 #define SNMP_DB_ID_GEOIP 14 48 #endif 49 50 extern int snmp_table_ids[]; 51 52 /* Miscellaneous non-proftpd database "fields" */ 53 #define SNMP_DB_NOTIFY_F_SYS_UPTIME 1 54 55 /* connection database fields */ 56 #define SNMP_DB_CONN_F_SERVER_NAME 11 57 #define SNMP_DB_CONN_F_SERVER_ADDR 12 58 #define SNMP_DB_CONN_F_SERVER_PORT 13 59 #define SNMP_DB_CONN_F_CLIENT_ADDR 14 60 #define SNMP_DB_CONN_F_CLIENT_PORT 15 61 #define SNMP_DB_CONN_F_PID 16 62 #define SNMP_DB_CONN_F_USER_NAME 17 63 #define SNMP_DB_CONN_F_PROTOCOL 18 64 65 /* daemon database fields */ 66 #define SNMP_DB_DAEMON_F_SOFTWARE 101 67 #define SNMP_DB_DAEMON_F_VERSION 102 68 #define SNMP_DB_DAEMON_F_ADMIN 103 69 #define SNMP_DB_DAEMON_F_UPTIME 104 70 #define SNMP_DB_DAEMON_F_VHOST_COUNT 105 71 #define SNMP_DB_DAEMON_F_CONN_COUNT 106 72 #define SNMP_DB_DAEMON_F_CONN_TOTAL 107 73 #define SNMP_DB_DAEMON_F_CONN_REFUSED_TOTAL 108 74 #define SNMP_DB_DAEMON_F_RESTART_COUNT 109 75 #define SNMP_DB_DAEMON_F_SEGFAULT_COUNT 110 76 #define SNMP_DB_DAEMON_F_MAXINST_TOTAL 111 77 #define SNMP_DB_DAEMON_F_MAXINST_CONF 112 78 79 /* timeouts database fields */ 80 #define SNMP_DB_TIMEOUTS_F_IDLE_TOTAL 120 81 #define SNMP_DB_TIMEOUTS_F_LOGIN_TOTAL 121 82 #define SNMP_DB_TIMEOUTS_F_NOXFER_TOTAL 122 83 #define SNMP_DB_TIMEOUTS_F_STALLED_TOTAL 123 84 85 /* ftp.sessions database fields */ 86 #define SNMP_DB_FTP_SESS_F_SESS_COUNT 130 87 #define SNMP_DB_FTP_SESS_F_SESS_TOTAL 131 88 #define SNMP_DB_FTP_SESS_F_CMD_INVALID_TOTAL 132 89 90 /* ftp.logins database fields */ 91 #define SNMP_DB_FTP_LOGINS_F_TOTAL 140 92 #define SNMP_DB_FTP_LOGINS_F_ERR_TOTAL 141 93 #define SNMP_DB_FTP_LOGINS_F_ERR_BAD_USER_TOTAL 142 94 #define SNMP_DB_FTP_LOGINS_F_ERR_BAD_PASSWD_TOTAL 143 95 #define SNMP_DB_FTP_LOGINS_F_ERR_GENERAL_TOTAL 144 96 #define SNMP_DB_FTP_LOGINS_F_ANON_COUNT 145 97 #define SNMP_DB_FTP_LOGINS_F_ANON_TOTAL 146 98 99 /* ftp.dataTransfers database fields */ 100 #define SNMP_DB_FTP_XFERS_F_DIR_LIST_COUNT 150 101 #define SNMP_DB_FTP_XFERS_F_DIR_LIST_TOTAL 151 102 #define SNMP_DB_FTP_XFERS_F_DIR_LIST_ERR_TOTAL 152 103 #define SNMP_DB_FTP_XFERS_F_FILE_UPLOAD_COUNT 153 104 #define SNMP_DB_FTP_XFERS_F_FILE_UPLOAD_TOTAL 154 105 #define SNMP_DB_FTP_XFERS_F_FILE_UPLOAD_ERR_TOTAL 155 106 #define SNMP_DB_FTP_XFERS_F_FILE_DOWNLOAD_COUNT 156 107 #define SNMP_DB_FTP_XFERS_F_FILE_DOWNLOAD_TOTAL 157 108 #define SNMP_DB_FTP_XFERS_F_FILE_DOWNLOAD_ERR_TOTAL 158 109 #define SNMP_DB_FTP_XFERS_F_KB_UPLOAD_TOTAL 159 110 #define SNMP_DB_FTP_XFERS_F_KB_DOWNLOAD_TOTAL 160 111 112 /* snmp database fields */ 113 #define SNMP_DB_SNMP_F_PKTS_RECVD_TOTAL 200 114 #define SNMP_DB_SNMP_F_PKTS_SENT_TOTAL 201 115 #define SNMP_DB_SNMP_F_TRAPS_SENT_TOTAL 202 116 #define SNMP_DB_SNMP_F_PKTS_AUTH_ERR_TOTAL 203 117 #define SNMP_DB_SNMP_F_PKTS_DROPPED_TOTAL 204 118 119 /* ftps.tlsSessions database fields */ 120 #define SNMP_DB_FTPS_SESS_F_SESS_COUNT 310 121 #define SNMP_DB_FTPS_SESS_F_SESS_TOTAL 311 122 #define SNMP_DB_FTPS_SESS_F_CTRL_HANDSHAKE_ERR_TOTAL 312 123 #define SNMP_DB_FTPS_SESS_F_DATA_HANDSHAKE_ERR_TOTAL 313 124 #define SNMP_DB_FTPS_SESS_F_CCC_TOTAL 314 125 #define SNMP_DB_FTPS_SESS_F_CCC_ERR_TOTAL 315 126 #define SNMP_DB_FTPS_SESS_F_VERIFY_CLIENT_TOTAL 316 127 #define SNMP_DB_FTPS_SESS_F_VERIFY_CLIENT_ERR_TOTAL 317 128 129 /* ftps.tlsLogins database fields */ 130 #define SNMP_DB_FTPS_LOGINS_F_TOTAL 320 131 #define SNMP_DB_FTPS_LOGINS_F_ERR_TOTAL 321 132 #define SNMP_DB_FTPS_LOGINS_F_ERR_BAD_USER_TOTAL 322 133 #define SNMP_DB_FTPS_LOGINS_F_ERR_BAD_PASSWD_TOTAL 323 134 #define SNMP_DB_FTPS_LOGINS_F_ERR_GENERAL_TOTAL 324 135 #define SNMP_DB_FTPS_LOGINS_F_CERT_TOTAL 325 136 137 /* ftps.tlsDataTransfers database fields */ 138 #define SNMP_DB_FTPS_XFERS_F_DIR_LIST_COUNT 330 139 #define SNMP_DB_FTPS_XFERS_F_DIR_LIST_TOTAL 331 140 #define SNMP_DB_FTPS_XFERS_F_DIR_LIST_ERR_TOTAL 332 141 #define SNMP_DB_FTPS_XFERS_F_FILE_UPLOAD_COUNT 333 142 #define SNMP_DB_FTPS_XFERS_F_FILE_UPLOAD_TOTAL 334 143 #define SNMP_DB_FTPS_XFERS_F_FILE_UPLOAD_ERR_TOTAL 335 144 #define SNMP_DB_FTPS_XFERS_F_FILE_DOWNLOAD_COUNT 336 145 #define SNMP_DB_FTPS_XFERS_F_FILE_DOWNLOAD_TOTAL 337 146 #define SNMP_DB_FTPS_XFERS_F_FILE_DOWNLOAD_ERR_TOTAL 338 147 #define SNMP_DB_FTPS_XFERS_F_KB_UPLOAD_TOTAL 339 148 #define SNMP_DB_FTPS_XFERS_F_KB_DOWNLOAD_TOTAL 340 149 150 /* ssh.sshSessions database fields */ 151 #define SNMP_DB_SSH_SESS_F_KEX_ERR_TOTAL 400 152 #define SNMP_DB_SSH_SESS_F_C2S_COMPRESS_TOTAL 401 153 #define SNMP_DB_SSH_SESS_F_S2C_COMPRESS_TOTAL 402 154 155 /* ssh.sshSessions.sshAuth database fields */ 156 #define SNMP_DB_SSH_LOGINS_F_HOSTBASED_TOTAL 450 157 #define SNMP_DB_SSH_LOGINS_F_HOSTBASED_ERR_TOTAL 451 158 #define SNMP_DB_SSH_LOGINS_F_KBDINT_TOTAL 452 159 #define SNMP_DB_SSH_LOGINS_F_KBDINT_ERR_TOTAL 453 160 #define SNMP_DB_SSH_LOGINS_F_PASSWD_TOTAL 454 161 #define SNMP_DB_SSH_LOGINS_F_PASSWD_ERR_TOTAL 455 162 #define SNMP_DB_SSH_LOGINS_F_PUBLICKEY_TOTAL 456 163 #define SNMP_DB_SSH_LOGINS_F_PUBLICKEY_ERR_TOTAL 457 164 165 /* sftp.sftpSessions database fields */ 166 #define SNMP_DB_SFTP_SESS_F_SESS_COUNT 500 167 #define SNMP_DB_SFTP_SESS_F_SESS_TOTAL 501 168 #define SNMP_DB_SFTP_SESS_F_SFTP_V3_TOTAL 502 169 #define SNMP_DB_SFTP_SESS_F_SFTP_V4_TOTAL 503 170 #define SNMP_DB_SFTP_SESS_F_SFTP_V5_TOTAL 504 171 #define SNMP_DB_SFTP_SESS_F_SFTP_V6_TOTAL 505 172 173 /* sftp.sftpDataTransfers database fields */ 174 #define SNMP_DB_SFTP_XFERS_F_DIR_LIST_COUNT 530 175 #define SNMP_DB_SFTP_XFERS_F_DIR_LIST_TOTAL 531 176 #define SNMP_DB_SFTP_XFERS_F_DIR_LIST_ERR_TOTAL 532 177 #define SNMP_DB_SFTP_XFERS_F_FILE_UPLOAD_COUNT 533 178 #define SNMP_DB_SFTP_XFERS_F_FILE_UPLOAD_TOTAL 534 179 #define SNMP_DB_SFTP_XFERS_F_FILE_UPLOAD_ERR_TOTAL 535 180 #define SNMP_DB_SFTP_XFERS_F_FILE_DOWNLOAD_COUNT 536 181 #define SNMP_DB_SFTP_XFERS_F_FILE_DOWNLOAD_TOTAL 537 182 #define SNMP_DB_SFTP_XFERS_F_FILE_DOWNLOAD_ERR_TOTAL 538 183 #define SNMP_DB_SFTP_XFERS_F_KB_UPLOAD_TOTAL 539 184 #define SNMP_DB_SFTP_XFERS_F_KB_DOWNLOAD_TOTAL 540 185 186 /* scp.scpSessions database fields */ 187 #define SNMP_DB_SCP_SESS_F_SESS_COUNT 600 188 #define SNMP_DB_SCP_SESS_F_SESS_TOTAL 601 189 190 /* scp.scpDataTransfers database fields */ 191 #define SNMP_DB_SCP_XFERS_F_FILE_UPLOAD_COUNT 630 192 #define SNMP_DB_SCP_XFERS_F_FILE_UPLOAD_TOTAL 631 193 #define SNMP_DB_SCP_XFERS_F_FILE_UPLOAD_ERR_TOTAL 632 194 #define SNMP_DB_SCP_XFERS_F_FILE_DOWNLOAD_COUNT 633 195 #define SNMP_DB_SCP_XFERS_F_FILE_DOWNLOAD_TOTAL 634 196 #define SNMP_DB_SCP_XFERS_F_FILE_DOWNLOAD_ERR_TOTAL 635 197 #define SNMP_DB_SCP_XFERS_F_KB_UPLOAD_TOTAL 636 198 #define SNMP_DB_SCP_XFERS_F_KB_DOWNLOAD_TOTAL 637 199 200 /* ban.connections database fields */ 201 #define SNMP_DB_BAN_CONNS_F_CONN_BAN_TOTAL 700 202 #define SNMP_DB_BAN_CONNS_F_USER_BAN_TOTAL 701 203 #define SNMP_DB_BAN_CONNS_F_HOST_BAN_TOTAL 702 204 #define SNMP_DB_BAN_CONNS_F_CLASS_BAN_TOTAL 703 205 206 /* ban.bans database fields */ 207 #define SNMP_DB_BAN_BANS_F_BAN_COUNT 710 208 #define SNMP_DB_BAN_BANS_F_BAN_TOTAL 711 209 #define SNMP_DB_BAN_BANS_F_USER_BAN_COUNT 712 210 #define SNMP_DB_BAN_BANS_F_USER_BAN_TOTAL 713 211 #define SNMP_DB_BAN_BANS_F_HOST_BAN_COUNT 714 212 #define SNMP_DB_BAN_BANS_F_HOST_BAN_TOTAL 715 213 #define SNMP_DB_BAN_BANS_F_CLASS_BAN_COUNT 716 214 #define SNMP_DB_BAN_BANS_F_CLASS_BAN_TOTAL 717 215 216 /* XXX sql database fields */ 217 218 /* XXX quota database fields */ 219 220 /* XXX geoip database fields */ 221 222 /* For a given field ID, return the database ID. */ 223 int snmp_db_get_field_db_id(unsigned int field); 224 225 const char *snmp_db_get_fieldstr(pool *p, unsigned int field); 226 227 int snmp_db_rlock(unsigned int field); 228 int snmp_db_wlock(unsigned int field); 229 int snmp_db_unlock(unsigned int field); 230 231 int snmp_db_close(pool *p, int db_id); 232 int snmp_db_open(pool *p, int db_id); 233 int snmp_db_get_value(pool *p, unsigned int field, int32_t *int_value, 234 char **str_value, size_t *str_valuelen); 235 int snmp_db_incr_value(pool *p, unsigned int field, int32_t incr); 236 237 /* Used to reset/clear counters. */ 238 int snmp_db_reset_value(pool *p, unsigned int field); 239 240 /* Configure the SNMPTables path to use as the root/parent directory for the 241 * various database table files. 242 */ 243 int snmp_db_set_root(const char *path); 244 245 #endif /* MOD_SNMP_DB_H */ 246