1 // Copyright (c) 1999-2018 David Muse 2 // See the file COPYING for more information 3 4 #ifndef SQLRUTIL_H 5 #define SQLRUTIL_H 6 7 #include <sqlrelay/private/sqlrutilincludes.h> 8 9 class SQLRUTIL_DLLSPEC sqlrcmdline : public commandline { 10 friend class sqlrpaths; 11 public: 12 sqlrcmdline(int argc, const char **argv); 13 14 const char *getId() const; 15 private: 16 const char *id; 17 }; 18 19 class SQLRUTIL_DLLSPEC sqlrpaths { 20 public: 21 sqlrpaths(sqlrcmdline *cmdl); 22 ~sqlrpaths(); 23 const char *getBinDir(); 24 const char *getLocalStateDir(); 25 const char *getTmpDir(); 26 const char *getSockSeqFile(); 27 const char *getSocketsDir(); 28 const char *getIpcDir(); 29 const char *getPidDir(); 30 const char *getLogDir(); 31 const char *getDebugDir(); 32 const char *getCacheDir(); 33 const char *getDefaultConfigFile(); 34 const char *getDefaultConfigDir(); 35 const char *getDefaultConfigUrl(); 36 const char *getConfigUrl(); 37 const char *getLibExecDir(); 38 protected: 39 char *bindir; 40 char *localstatedir; 41 char *tmpdir; 42 char *sockseqfile; 43 char *socketsdir; 44 char *ipcdir; 45 char *piddir; 46 uint32_t tmpdirlen; 47 char *logdir; 48 char *debugdir; 49 char *cachedir; 50 char *defaultconfigfile; 51 char *defaultconfigdir; 52 char *defaultconfigurl; 53 const char *configurl; 54 char *libexecdir; 55 }; 56 57 class SQLRUTIL_DLLSPEC connectstringcontainer { 58 public: 59 connectstringcontainer(); 60 ~connectstringcontainer(); 61 void parseConnectString(); 62 void setConnectionId(const char *connectionid); 63 void setString(const char *string); 64 void setMetric(uint32_t metric); 65 void setBehindLoadBalancer(bool behindloadbalancer); 66 void setPasswordEncryption(const char *pwdenc); 67 const char *getConnectionId(); 68 const char *getString(); 69 uint32_t getMetric(); 70 bool getBehindLoadBalancer(); 71 const char *getConnectStringValue(const char *variable); 72 const char *getPasswordEncryption(); 73 private: 74 75 char *connectionid; 76 char *string; 77 uint32_t metric; 78 bool behindloadbalancer; 79 char *pwdenc; 80 81 parameterstring connectstring; 82 }; 83 84 typedef linkedlistnode< connectstringcontainer * > connectstringnode; 85 86 class SQLRUTIL_DLLSPEC routecontainer { 87 public: 88 routecontainer(); 89 ~routecontainer(); 90 91 void setIsFilter(bool isfilter); 92 void setHost(const char *host); 93 void setPort(uint16_t port); 94 void setSocket(const char *socket); 95 void setUser(const char *user); 96 void setPassword(const char *password); 97 98 bool getIsFilter(); 99 const char *getHost(); 100 uint16_t getPort(); 101 const char *getSocket(); 102 const char *getUser(); 103 const char *getPassword(); 104 linkedlist< regularexpression * > *getRegexList(); 105 private: 106 bool isfilter; 107 char *host; 108 uint16_t port; 109 char *socket; 110 char *user; 111 char *password; 112 linkedlist< regularexpression * > regexlist; 113 }; 114 115 typedef linkedlistnode< routecontainer * > routenode; 116 117 class SQLRUTIL_DLLSPEC sqlrconfig { 118 public: 119 sqlrconfig(); 120 virtual ~sqlrconfig(); 121 122 virtual void getEnabledIds(const char *url, 123 linkedlist< char * > *idlist)=0; 124 virtual bool load(const char *url, const char *id)=0; 125 virtual bool accessible()=0; 126 127 virtual const char *getDefaultAddresses()=0; 128 virtual uint16_t getDefaultPort()=0; 129 virtual const char *getDefaultSocket()=0; 130 131 virtual bool getDefaultKrb()=0; 132 virtual const char *getDefaultKrbService()=0; 133 virtual const char *getDefaultKrbKeytab()=0; 134 virtual const char *getDefaultKrbMech()=0; 135 virtual const char *getDefaultKrbFlags()=0; 136 137 virtual bool getDefaultTls()=0; 138 virtual const char *getDefaultTlsCiphers()=0; 139 140 virtual const char *getDefaultUser()=0; 141 virtual const char *getDefaultPassword()=0; 142 143 virtual bool getListenOnInet()=0; 144 virtual bool getListenOnUnix()=0; 145 146 virtual const char *getDbase()=0; 147 148 virtual uint32_t getConnections()=0; 149 virtual uint32_t getMaxConnections()=0; 150 virtual uint32_t getMaxQueueLength()=0; 151 virtual uint32_t getGrowBy()=0; 152 virtual int32_t getTtl()=0; 153 virtual int32_t getSoftTtl()=0; 154 virtual uint16_t getMaxSessionCount()=0; 155 virtual bool getDynamicScaling()=0; 156 157 virtual const char *getEndOfSession()=0; 158 virtual bool getEndOfSessionCommit()=0; 159 virtual uint32_t getSessionTimeout()=0; 160 161 virtual const char *getRunAsUser()=0; 162 virtual const char *getRunAsGroup()=0; 163 164 virtual uint16_t getCursors()=0; 165 virtual uint16_t getMaxCursors()=0; 166 virtual uint16_t getCursorsGrowBy()=0; 167 168 virtual const char *getAuthTier()=0; 169 virtual bool getAuthOnConnection()=0; 170 virtual bool getAuthOnDatabase()=0; 171 172 virtual const char *getSessionHandler()=0; 173 174 virtual const char *getHandoff()=0; 175 176 virtual const char *getAllowedIps()=0; 177 virtual const char *getDeniedIps()=0; 178 179 virtual const char *getDebug()=0; 180 virtual bool getDebugSql()=0; 181 virtual bool getDebugBulkLoad()=0; 182 virtual bool getDebugParser()=0; 183 virtual bool getDebugDirectives()=0; 184 virtual bool getDebugTranslations()=0; 185 virtual bool getDebugFilters()=0; 186 virtual bool getDebugTriggers()=0; 187 virtual bool getDebugBindTranslations()=0; 188 virtual bool getDebugBindVariableTranslations()=0; 189 virtual bool getDebugResultSetTranslations()=0; 190 virtual bool getDebugResultSetRowTranslations()=0; 191 virtual bool getDebugResultSetRowBlockTranslations()=0; 192 virtual bool getDebugResultSetHeaderTranslations()=0; 193 virtual bool getDebugProtocols()=0; 194 virtual bool getDebugAuths()=0; 195 virtual bool getDebugPasswordEncryptions()=0; 196 virtual bool getDebugLoggers()=0; 197 virtual bool getDebugNotifications()=0; 198 virtual bool getDebugSchedules()=0; 199 virtual bool getDebugRouters()=0; 200 virtual bool getDebugQueries()=0; 201 virtual bool getDebugModuleDatas()=0; 202 203 virtual uint64_t getMaxClientInfoLength()=0; 204 virtual uint32_t getMaxQuerySize()=0; 205 virtual uint16_t getMaxBindCount()=0; 206 virtual uint16_t getMaxBindNameLength()=0; 207 virtual uint32_t getMaxStringBindValueLength()=0; 208 virtual uint32_t getMaxLobBindValueLength()=0; 209 virtual uint32_t getMaxErrorLength()=0; 210 211 virtual int32_t getIdleClientTimeout()=0; 212 213 virtual int64_t getMaxListeners()=0; 214 virtual uint32_t getListenerTimeout()=0; 215 216 virtual bool getReLoginAtStart()=0; 217 218 virtual bool getFakeInputBindVariables()=0; 219 virtual const char *getFakeInputBindVariablesDateFormat()=0; 220 virtual bool getFakeInputBindVariablesUnicodeStrings()=0; 221 virtual bool getBindVariableDelimiterQuestionMarkSupported()=0; 222 virtual bool getBindVariableDelimiterColonSupported()=0; 223 virtual bool getBindVariableDelimiterAtSignSupported()=0; 224 virtual bool getBindVariableDelimiterDollarSignSupported()=0; 225 226 virtual bool getTranslateBindVariables()=0; 227 228 virtual const char *getIsolationLevel()=0; 229 230 virtual bool getIgnoreSelectDatabase()=0; 231 232 virtual bool getWaitForDownDatabase()=0; 233 234 virtual linkedlist< char *> *getSessionStartQueries()=0; 235 virtual linkedlist< char *> *getSessionEndQueries()=0; 236 237 virtual domnode *getListeners()=0; 238 virtual domnode *getParser()=0; 239 virtual domnode *getDirectives()=0; 240 virtual domnode *getTranslations()=0; 241 virtual domnode *getFilters()=0; 242 virtual domnode *getBindVariableTranslations()=0; 243 virtual domnode *getResultSetTranslations()=0; 244 virtual domnode *getResultSetRowTranslations()=0; 245 virtual domnode *getResultSetRowBlockTranslations()=0; 246 virtual domnode *getResultSetHeaderTranslations()=0; 247 virtual domnode *getTriggers()=0; 248 virtual domnode *getLoggers()=0; 249 virtual domnode *getNotifications()=0; 250 virtual domnode *getSchedules()=0; 251 virtual domnode *getRouters()=0; 252 virtual domnode *getQueries()=0; 253 virtual domnode *getPasswordEncryptions()=0; 254 virtual domnode *getAuths()=0; 255 virtual domnode *getModuleDatas()=0; 256 257 virtual linkedlist< connectstringcontainer * > 258 *getConnectStringList()=0; 259 virtual connectstringcontainer *getConnectString( 260 const char *connectionid)=0; 261 virtual uint32_t getConnectionCount()=0; 262 virtual uint32_t getMetricTotal()=0; 263 264 virtual linkedlist< routecontainer * > *getRouteList()=0; 265 }; 266 267 class SQLRUTIL_DLLSPEC sqlrconfigs { 268 public: 269 sqlrconfigs(sqlrpaths *sqlrpth); 270 ~sqlrconfigs(); 271 void getEnabledIds(const char *urls, 272 linkedlist< char * > *idlist); 273 sqlrconfig *load(const char *urls, const char *id); 274 private: 275 void loadConfig(const char *module); 276 277 const char *libexecdir; 278 sqlrconfig *cfg; 279 dynamiclib *dl; 280 }; 281 282 #endif 283