diff --git a/java/.gitignore b/java/.gitignore new file mode 100644 index 00000000..74b1dadb --- /dev/null +++ b/java/.gitignore @@ -0,0 +1,14 @@ +Debug/ +Release/ +*.sdf +*.opensdf +*.log +*.suo +*.tlog +*.exe +*.ilk +*.pdb +*.lib +*.obj +*.idb + diff --git a/java/ModSecurityJNI.sln b/java/ModSecurityJNI.sln new file mode 100644 index 00000000..56adec80 --- /dev/null +++ b/java/ModSecurityJNI.sln @@ -0,0 +1,26 @@ + +Microsoft Visual Studio Solution File, Format Version 11.00 +# Visual Studio 2010 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "standalone", "standalone.vcxproj", "{20EC871F-B6A0-4398-9B67-A33598A796E8}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Win32 = Debug|Win32 + Debug|x64 = Debug|x64 + Release|Win32 = Release|Win32 + Release|x64 = Release|x64 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {20EC871F-B6A0-4398-9B67-A33598A796E8}.Debug|Win32.ActiveCfg = Debug|Win32 + {20EC871F-B6A0-4398-9B67-A33598A796E8}.Debug|Win32.Build.0 = Debug|Win32 + {20EC871F-B6A0-4398-9B67-A33598A796E8}.Debug|x64.ActiveCfg = Debug|x64 + {20EC871F-B6A0-4398-9B67-A33598A796E8}.Debug|x64.Build.0 = Debug|x64 + {20EC871F-B6A0-4398-9B67-A33598A796E8}.Release|Win32.ActiveCfg = Release|Win32 + {20EC871F-B6A0-4398-9B67-A33598A796E8}.Release|Win32.Build.0 = Release|Win32 + {20EC871F-B6A0-4398-9B67-A33598A796E8}.Release|x64.ActiveCfg = Release|x64 + {20EC871F-B6A0-4398-9B67-A33598A796E8}.Release|x64.Build.0 = Release|x64 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/java/ModSecurityJNI.vcxproj b/java/ModSecurityJNI.vcxproj new file mode 100644 index 00000000..d25bd911 --- /dev/null +++ b/java/ModSecurityJNI.vcxproj @@ -0,0 +1,197 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + {20EC871F-B6A0-4398-9B67-A33598A796E8} + standalone + ModSecurityJNI + + + + DynamicLibrary + true + MultiByte + v110 + + + Application + true + MultiByte + v110 + + + DynamicLibrary + false + true + MultiByte + v110 + + + Application + false + true + MultiByte + v110 + + + + + + + + + + + + + + + + + + + + + Level3 + Disabled + ..\standalone;c:\Program Files (x86)\Java\jdk1.7.0_21\include\win32;c:\Program Files (x86)\Java\jdk1.7.0_21\include;C:\work\pcre-8.30\include;C:\work\pcre-8.30;C:\work\libxml2-2.7.7\include;C:\apache22\include;..\apache2;c:\work\httpd-2.2.24\include + _MBCS;%(PreprocessorDefinitions);WIN32;WINNT;inline=APR_INLINE;AP_DECLARE_STATIC;VERSION_STANDALONE + 4244;4018 + + + true + kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;ws2_32.lib;%(AdditionalDependencies);libapr-1.lib;libaprutil-1.lib;pcre.lib;libxml2.lib + c:\drop\x86 + + + + + Level3 + Disabled + C:\work\pcre-8.30\include;C:\work\pcre-8.30;C:\work\libxml2-2.7.7\include;C:\apache22\include;..\apache2 + _MBCS;%(PreprocessorDefinitions);WIN32;WINNT;inline=APR_INLINE;AP_DECLARE_STATIC + 4244;4018 + + + true + kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;ws2_32.lib;%(AdditionalDependencies);libapr-1.lib;libaprutil-1.lib;pcre.lib;libxml2.lib + c:\drop\amd64 + + + + + Level3 + MaxSpeed + true + true + ..\standalone;c:\Program Files (x86)\Java\jdk1.7.0_21\include\win32;c:\Program Files (x86)\Java\jdk1.7.0_21\include;C:\work\pcre-8.30\include;C:\work\pcre-8.30;C:\work\libxml2-2.7.7\include;C:\apache22\include;..\apache2;c:\work\httpd-2.2.24\include + _MBCS;%(PreprocessorDefinitions);WIN32;WINNT;inline=APR_INLINE;AP_DECLARE_STATIC;VERSION_STANDALONE + 4244;4018 + MultiThreadedDLL + + + true + true + true + kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;ws2_32.lib;%(AdditionalDependencies);libapr-1.lib;libaprutil-1.lib;pcre.lib;libxml2.lib + c:\drop\x86 + + + + + Level3 + MaxSpeed + true + true + C:\work\pcre-8.30\include;C:\work\pcre-8.30;C:\work\libxml2-2.7.7\include;C:\apache22\include;..\apache2 + + + true + true + true + kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;ws2_32.lib;%(AdditionalDependencies);libapr-1.lib;libaprutil-1.lib;pcre.lib;libxml2.lib + c:\drop\amd64 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/java/ModSecurityJNI.vcxproj.filters b/java/ModSecurityJNI.vcxproj.filters new file mode 100644 index 00000000..2c15077f --- /dev/null +++ b/java/ModSecurityJNI.vcxproj.filters @@ -0,0 +1,191 @@ + + + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hpp;hxx;hm;inl;inc;xsd + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {15b281fc-949e-46d2-b25b-16b2ddf25dee} + + + + + ModSecurity Sources + + + ModSecurity Sources + + + ModSecurity Sources + + + ModSecurity Sources + + + ModSecurity Sources + + + ModSecurity Sources + + + ModSecurity Sources + + + ModSecurity Sources + + + ModSecurity Sources + + + ModSecurity Sources + + + ModSecurity Sources + + + ModSecurity Sources + + + ModSecurity Sources + + + ModSecurity Sources + + + ModSecurity Sources + + + ModSecurity Sources + + + ModSecurity Sources + + + ModSecurity Sources + + + ModSecurity Sources + + + ModSecurity Sources + + + ModSecurity Sources + + + ModSecurity Sources + + + ModSecurity Sources + + + ModSecurity Sources + + + ModSecurity Sources + + + ModSecurity Sources + + + + Standalone Sources + + + Standalone Sources + + + Standalone Sources + + + Standalone Sources + + + Standalone Sources + + + Standalone Sources + + + Standalone Sources + + + + + ModSecurity Headers + + + ModSecurity Headers + + + ModSecurity Headers + + + ModSecurity Headers + + + ModSecurity Headers + + + ModSecurity Headers + + + ModSecurity Headers + + + ModSecurity Headers + + + ModSecurity Headers + + + ModSecurity Headers + + + ModSecurity Headers + + + ModSecurity Headers + + + ModSecurity Headers + + + ModSecurity Headers + + + ModSecurity Headers + + + ModSecurity Headers + + + ModSecurity Headers + + + ModSecurity Headers + + + ModSecurity Headers + + + ModSecurity Headers + + + ModSecurity Headers + + + + Standalone Sources + + + \ No newline at end of file diff --git a/java/org_modsecurity_ModSecurity.c b/java/org_modsecurity_ModSecurity.c new file mode 100644 index 00000000..eb8cbafb --- /dev/null +++ b/java/org_modsecurity_ModSecurity.c @@ -0,0 +1,82 @@ + +#undef inline +#define inline __inline //__ for C + +//#include +#include "org_modsecurity_ModSecurity.h" + +#include "api.h" + + +//#define MODSECURITY_JAVACLASS "org/modsecurity/ModSecurity" +// +//#define MODSECURITY_LOGMETHOD "log" +//#define MODSECURITY_LOGSIG "(ILjava/lang/String;)V" + +//JavaVM *jvm; +//jobject modSecurityInstance; +//jclass modSecurityClass; +// +void logSec(void *obj, int level, char *str) +{ +// //JNIEnv *env; +// //jstring jStr; +// //jmethodID logMethod; +// // (*jvm)->AttachCurrentThread(jvm, (void **)&env, NULL); +// +// //jStr = (*env)->NewStringUTF(env, str); +// // +// //logMethod = (*env)->GetMethodID(env, modSecurityClass, MODSECURITY_LOGMETHOD, MODSECURITY_LOGSIG); +// //(*env)->CallVoidMethod(env, modSecurityInstance, logMethod, level, jStr); +// // +// //(*env)->ReleaseStringUTFChars(env, jStr, str); +// +// //(*jvm)->DetachCurrentThread(jvm); +} + + +apr_status_t ReadBodyCallback(request_rec *r, char *buf, unsigned int length, unsigned int *readcnt, int *is_eos) +{ + return APR_SUCCESS; +} + +apr_status_t WriteBodyCallback(request_rec *r, char *buf, unsigned int length) +{ + return APR_SUCCESS; +} + +apr_status_t ReadResponseCallback(request_rec *r, char *buf, unsigned int length, unsigned int *readcnt, int *is_eos) +{ + return APR_SUCCESS; +} + +apr_status_t WriteResponseCallback(request_rec *r, char *buf, unsigned int length) +{ + return APR_SUCCESS; +} + +JNIEXPORT jint JNICALL Java_org_modsecurity_ModSecurity_initialize(JNIEnv *env, jobject obj) +{ + //jclass localCls; + //(*env)->GetJavaVM(env, &jvm); + //modSecurityInstance = (*env)->NewGlobalRef(env, obj); + //localCls = (*env)->FindClass(env, MODSECURITY_JAVACLASS); + //modSecurityClass = (jclass) (*env)->NewGlobalRef(env, localCls); + //(*env)->DeleteLocalRef(env, localCls); + + modsecSetLogHook(NULL, logSec); + + modsecSetReadBody(ReadBodyCallback); + modsecSetReadResponse(ReadResponseCallback); + modsecSetWriteBody(WriteBodyCallback); + modsecSetWriteResponse(WriteResponseCallback); + + return APR_SUCCESS; +} + +JNIEXPORT jint JNICALL Java_org_modsecurity_ModSecurity_destroy(JNIEnv *env, jobject obj) +{ +// //(*env)->DeleteGlobalRef(env, modSecurityInstance); +// //(*env)->DeleteGlobalRef(env, modSecurityClass); + return APR_SUCCESS; +} diff --git a/java/org_modsecurity_ModSecurity.h b/java/org_modsecurity_ModSecurity.h new file mode 100644 index 00000000..8b41c11f --- /dev/null +++ b/java/org_modsecurity_ModSecurity.h @@ -0,0 +1,29 @@ +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include +/* Header for class org_modsecurity_ModSecurity */ + +#ifndef _Included_org_modsecurity_ModSecurity +#define _Included_org_modsecurity_ModSecurity +#ifdef __cplusplus +extern "C" { +#endif +/* + * Class: org_modsecurity_ModSecurity + * Method: initialize + * Signature: ()I + */ +JNIEXPORT jint JNICALL Java_org_modsecurity_ModSecurity_initialize + (JNIEnv *, jobject); + +/* + * Class: org_modsecurity_ModSecurity + * Method: destroy + * Signature: ()I + */ +JNIEXPORT jint JNICALL Java_org_modsecurity_ModSecurity_destroy + (JNIEnv *, jobject); + +#ifdef __cplusplus +} +#endif +#endif