00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef __RIOAPACHEMODULE_H_
00019 #define __RIOAPACHEMODULE_H_
00020
00021
00022 #include <httpd.h>
00023 #include <http_config.h>
00024 #include <http_log.h>
00025 #include <util_filter.h>
00026 #include <http_protocol.h>
00027
00028
00029 #define MODULE_DESCRIPTION "RIO Apache Module version "VERSION // Identificacao
00030
00031 #define DEFAULT_SERVERNAME "localhost" // Nome default do servidor
00032 #define DEFAULT_BUFFERSIZE 4 // Tamanho default do buffer: 4 blocos.
00033 #define DEFAULT_LINESIZE 128 // Tamanho default de uma linha do arquivo: 128
00034 #define DEFAULT_SERVERSELECTION RIO_SELECTION_RANDOM // Modo default de escolha
00035
00036 #define DEFAULT_FRAGMENTSIZE 1450 // Tamanho default do fragmento.
00037 #define DEFAULT_USER "guest" // Nome default do usuario.
00038 #define DEFAULT_USERPASSWORD "" // Senha default para um usuario.
00039 #define DEFAULT_REDIRECTNAME "redirect" // Nome default para a redirecao (sem o
00040
00041 #define DEFAULT_TRANSFERNAME "transfer" // Nome default do envio/recebimento
00042
00043 #define DEFAULT_MAXLOGFILESIZE 1048576 // Tamanho em KB default maximo do
00044
00045 #define DEFAULT_MAXCOMBINEDLOGFILESSIZE 16777216 // Tamanho em KB default maximo
00046
00047
00048
00049 #define DEFAULT_USERLOGNAME "userlog" // Nome default da opcao usada para salvar
00050
00051 #define DEFAULT_USERLOGSPREFIXPATH "/tmp/UserLog" // Preximo default para os
00052
00053
00054
00055 #define DEFAULT_EXECNAME "exec" // Nome default da opcao usada para executar os
00056
00057 #define DEFAULT_USERLOGPORT 33335 // Valor default da porta UDP usada pelo
00058
00059
00060 #define DEFAULT_EXECSESSIONID 0 // Valor default das sessoes criadas para
00061
00062
00063 #define DEFAULT_EXECLOGSPREFIXPATH "/tmp/ExecLog" // Preximo default para os
00064
00065
00066
00067 #define DEFAULT_EXECLOGPORT 33336 // Valor default da porta UDP usada pelo
00068
00069
00070
00071
00072
00073 static int RioModuleRequestHandler( request_rec *r );
00074
00075
00076
00077
00078
00079
00080
00081 static void RioModuleRegisterHooks( apr_pool_t *p );
00082
00083
00084 static const char *setServerName( cmd_parms *parms, void *mconfig,
00085 const char *arg );
00086
00087 static const char *setRealTimeExtensions( cmd_parms *parms, void *mconfig,
00088 const char *arg );
00089
00090
00091 static const char *setWaitTime( cmd_parms *parms, void *mconfig,
00092 const char *arg );
00093
00094
00095 static const char *setBufferSize( cmd_parms *parms, void *mconfig,
00096 const char *arg );
00097
00098
00099 static const char *setLineSize( cmd_parms *parms, void *mconfig,
00100 const char *arg );
00101
00102
00103
00104
00105 static const char *setSelectionType( cmd_parms *parms, void *mconfig,
00106 const char *arg );
00107
00108
00109 static const char *setFragmentSize( cmd_parms *parms, void *mconfig,
00110 const char *arg );
00111
00112 static const char *setRIOUser( cmd_parms *parms, void *mconfig,
00113 const char *arg1, const char *arg2 );
00114
00115
00116 static const char *setServersFileName( cmd_parms *parms, void *mconfig,
00117 const char *arg );
00118
00119
00120
00121 static const char *setRedirectName( cmd_parms *parms, void *mconfig,
00122 const char *arg );
00123
00124
00125
00126 static const char *setTransferName( cmd_parms *parms, void *mconfig,
00127 const char *arg );
00128
00129
00130
00131 static const char *setMaxLogFileSize( cmd_parms *parms, void *mconfig,
00132 const char *arg );
00133
00134
00135
00136 static const char *setMaxCombinedLogFilesSize( cmd_parms *parms, void *mconfig,
00137 const char *arg );
00138
00139
00140
00141
00142 static const char *setUserLogsPrefixPath( cmd_parms *parms, void *mconfig,
00143 const char *arg );
00144
00145
00146
00147
00148 static const char *setUserLogName( cmd_parms *parms, void *mconfig,
00149 const char *arg );
00150
00151
00152
00153 static const char *setExecName( cmd_parms *parms, void *mconfig,
00154 const char *arg );
00155
00156
00157
00158 static const char *setUserLogPort( cmd_parms *parms, void *mconfig,
00159 const char *arg );
00160
00161
00162
00163
00164 static const char *setExecSessionId( cmd_parms *parms, void *mconfig,
00165 const char *arg );
00166
00167
00168
00169
00170
00171 static const char *setExecLogsPrefixPath( cmd_parms *parms, void *mconfig,
00172 const char *arg );
00173
00174
00175
00176 static const char *setExecLogPort( cmd_parms *parms, void *mconfig,
00177 const char *arg );
00178
00179
00180 static const command_rec RioModuleCommands[] =
00181 {
00182 AP_INIT_TAKE1(
00183 "ServerName",
00184 (cmd_func) setServerName,
00185 NULL,
00186 RSRC_CONF,
00187 "ServerName <addr> -- default address for the RIO server."
00188 ),
00189 AP_INIT_TAKE1(
00190 "RealTimeExtensions",
00191 (cmd_func) setRealTimeExtensions,
00192 NULL,
00193 RSRC_CONF,
00194 "RealTimeExtensions <file_extensions> -- extensions of the files "
00195 "transmitted in real time (separated by commas and no spaces)."
00196 ),
00197 AP_INIT_TAKE1(
00198 "WaitTime",
00199 (cmd_func) setWaitTime,
00200 NULL,
00201 RSRC_CONF,
00202 "WaitTime <time> -- maximum time to wait blocks in real time copy (ms)."
00203 ),
00204 AP_INIT_TAKE1(
00205 "BufferSize",
00206 (cmd_func) setBufferSize,
00207 NULL,
00208 RSRC_CONF,
00209 "BufferSize <size> -- size of the temporary block storage."
00210 ),
00211 AP_INIT_TAKE1(
00212 "LineSize",
00213 (cmd_func) setLineSize,
00214 NULL,
00215 RSRC_CONF,
00216 "LineSize <size> -- size of the lines of .rio files."
00217 ),
00218 AP_INIT_TAKE1(
00219 "SelectionType",
00220 (cmd_func) setSelectionType,
00221 NULL,
00222 RSRC_CONF,
00223 "SelectionType <type> -- defines how to choose the servers"
00224 ),
00225 AP_INIT_TAKE1(
00226 "FragmentSize",
00227 (cmd_func) setFragmentSize,
00228 NULL,
00229 RSRC_CONF,
00230 "FragmentSize <size> -- size of the fragments sent to the client."
00231 ),
00232 AP_INIT_TAKE12(
00233 "RIOUser",
00234 (cmd_func) setRIOUser,
00235 NULL,
00236 RSRC_CONF,
00237 "RIOUser <name> <password> -- name and password of the server user."
00238 ),
00239 AP_INIT_TAKE1(
00240 "ServersFileName",
00241 (cmd_func) setServersFileName,
00242 NULL,
00243 RSRC_CONF,
00244 "ServersFileName <path> -- full path of the file with servers."
00245 ),
00246 AP_INIT_TAKE1(
00247 "RedirectName",
00248 (cmd_func) setRedirectName,
00249 NULL,
00250 RSRC_CONF,
00251 "RedirectName <name> -- name used for the redirect."
00252 ),
00253 AP_INIT_TAKE1(
00254 "TransferName",
00255 (cmd_func) setTransferName,
00256 NULL,
00257 RSRC_CONF,
00258 "TransferName <name> -- name used when module redirects requests."
00259 ),
00260
00261
00262 AP_INIT_TAKE1(
00263 "MaxLogFileSize",
00264 (cmd_func) setMaxLogFileSize,
00265 NULL,
00266 RSRC_CONF,
00267 "MaxLogFileSize <size> -- maximum size of the uncompressed log file."
00268 ),
00269 AP_INIT_TAKE1(
00270 "MaxCombinedLogFilesSize",
00271 (cmd_func) setMaxCombinedLogFilesSize,
00272 NULL,
00273 RSRC_CONF,
00274 "MaxCombinedLogFilesSize <size> -- maximum combined size of all logs."
00275 ),
00276 AP_INIT_TAKE1(
00277 "UserLogsPrefixPath",
00278 (cmd_func) setUserLogsPrefixPath,
00279 NULL,
00280 RSRC_CONF,
00281 "UserLogsPrefixPath <path> - full path of the logs directory with the "
00282 "prefix of all logs files for the userlog option"
00283 ),
00284 AP_INIT_TAKE1(
00285 "UserLogName",
00286 (cmd_func) setUserLogName,
00287 NULL,
00288 RSRC_CONF,
00289 "UserLogName <name> -- name used when module save logs."
00290 ),
00291 AP_INIT_TAKE1(
00292 "ExecName",
00293 (cmd_func) setExecName,
00294 NULL,
00295 RSRC_CONF,
00296 "ExecName <name> -- name used when executing commands."
00297 ),
00298
00299
00300 AP_INIT_TAKE1(
00301 "UserLogPort",
00302 (cmd_func) setUserLogPort,
00303 NULL,
00304 RSRC_CONF,
00305 "UserLogPort <port> -- UDP port used by server user logs object of the "
00306 "userlog option."
00307 ),
00308
00309
00310
00311
00312 AP_INIT_TAKE1(
00313 "ExecSessionId",
00314 (cmd_func) setExecSessionId,
00315 NULL,
00316 RSRC_CONF,
00317 "ExecSessionId <id> -- default value for command sessions."
00318 ),
00319
00320 AP_INIT_TAKE1(
00321 "ExecLogsPrefixPath",
00322 (cmd_func) setExecLogsPrefixPath,
00323 NULL,
00324 RSRC_CONF,
00325 "ExecLogsPrefixPath <path> - full path of the logs directory with the "
00326 "prefix of all logs files for the exec option"
00327 ),
00328
00329
00330 AP_INIT_TAKE1(
00331 "ExecLogPort",
00332 (cmd_func) setExecLogPort,
00333 NULL,
00334 RSRC_CONF,
00335 "ExecLogPort <port> -- UDP port used by server user logs object of the "
00336 "exec option."
00337 ),
00338 {NULL}
00339 };
00340
00341
00342
00343
00344 static void *CreateRioModuleConfig( apr_pool_t *p, server_rec *s );
00345
00346
00347
00348
00349
00350 module AP_MODULE_DECLARE_DATA RioModule =
00351 {
00352 STANDARD20_MODULE_STUFF,
00353 NULL,
00354 NULL,
00355 CreateRioModuleConfig,
00356
00357 NULL,
00358 RioModuleCommands,
00359 RioModuleRegisterHooks,
00360
00361 };
00362
00363 #endif
00364