summaryrefslogtreecommitdiffabout
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--configure.ac1
-rw-r--r--test/OP.cc6
2 files changed, 6 insertions, 1 deletions
diff --git a/configure.ac b/configure.ac
index e636253..606e644 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,79 +1,80 @@
1AC_INIT([libopkele], [2.0.4], [libopkele-bugs@klever.net]) 1AC_INIT([libopkele], [2.0.4], [libopkele-bugs@klever.net])
2AC_CONFIG_SRCDIR([include/opkele/opkele-config.h]) 2AC_CONFIG_SRCDIR([include/opkele/opkele-config.h])
3AC_CONFIG_HEADERS([config.h include/opkele/acconfig.h]) 3AC_CONFIG_HEADERS([config.h include/opkele/acconfig.h])
4AC_CONFIG_MACRO_DIR([aclocal.d]) 4AC_CONFIG_MACRO_DIR([aclocal.d])
5AC_CONFIG_AUX_DIR([aux.d]) 5AC_CONFIG_AUX_DIR([aux.d])
6AM_INIT_AUTOMAKE([dist-bzip2]) 6AM_INIT_AUTOMAKE([dist-bzip2])
7 7
8AC_PROG_INSTALL 8AC_PROG_INSTALL
9AC_PROG_CXX 9AC_PROG_CXX
10AC_PROG_CC 10AC_PROG_CC
11AC_PROG_LIBTOOL 11AC_PROG_LIBTOOL
12PKG_PROG_PKG_CONFIG 12PKG_PROG_PKG_CONFIG
13 13
14AC_HEADER_STDC 14AC_HEADER_STDC
15AC_CHECK_FUNCS([timegm]) 15AC_CHECK_FUNCS([timegm])
16AC_CHECK_HEADERS([ext/algorithm.h])
16 17
17AC_PATH_PROG([XSLTPROC],[xsltproc],[true]) 18AC_PATH_PROG([XSLTPROC],[xsltproc],[true])
18 19
19AC_MSG_CHECKING([for source tree version]) 20AC_MSG_CHECKING([for source tree version])
20if headrev=$(cd $srcdir && git rev-parse --verify HEAD 2>/dev/null) ; then 21if headrev=$(cd $srcdir && git rev-parse --verify HEAD 2>/dev/null) ; then
21 PACKAGE_SRC_VERSION="$(cd $srcdir && git describe --tags $headrev)" 22 PACKAGE_SRC_VERSION="$(cd $srcdir && git describe --tags $headrev)"
22 test "$PACKAGE_SRC_VERSION" = "$PACKAGE_VERSION" \ 23 test "$PACKAGE_SRC_VERSION" = "$PACKAGE_VERSION" \
23 -o "${PACKAGE_SRC_VERSION#${PACKAGE_VERSION}-}" != "$PACKAGE_SRC_VERSION" || PACKAGE_SRC_VERSION="${PACKAGE_VERSION}:${PACKAGE_SRC_VERSION}" 24 -o "${PACKAGE_SRC_VERSION#${PACKAGE_VERSION}-}" != "$PACKAGE_SRC_VERSION" || PACKAGE_SRC_VERSION="${PACKAGE_VERSION}:${PACKAGE_SRC_VERSION}"
24 ( cd $srcdir && git diff-index $headrev | read dirt ) && PACKAGE_SRC_VERSION="${PACKAGE_SRC_VERSION}-dirty" 25 ( cd $srcdir && git diff-index $headrev | read dirt ) && PACKAGE_SRC_VERSION="${PACKAGE_SRC_VERSION}-dirty"
25else 26else
26 PACKAGE_SRC_VERSION="$PACKAGE_VERSION" 27 PACKAGE_SRC_VERSION="$PACKAGE_VERSION"
27fi 28fi
28AC_MSG_RESULT([$PACKAGE_SRC_VERSION]) 29AC_MSG_RESULT([$PACKAGE_SRC_VERSION])
29AC_SUBST([PACKAGE_SRC_VERSION]) 30AC_SUBST([PACKAGE_SRC_VERSION])
30AC_DEFINE_UNQUOTED([PACKAGE_SRC_VERSION],["$PACKAGE_SRC_VERSION"],[more or less precise source tree version]) 31AC_DEFINE_UNQUOTED([PACKAGE_SRC_VERSION],["$PACKAGE_SRC_VERSION"],[more or less precise source tree version])
31 32
32tr1_mem_std="false" 33tr1_mem_std="false"
33tr1_mem_boost="false" 34tr1_mem_boost="false"
34AC_CHECK_SHAREDPTR(std::tr1,tr1/memory,[ tr1_mem_std=true ]) 35AC_CHECK_SHAREDPTR(std::tr1,tr1/memory,[ tr1_mem_std=true ])
35AC_CHECK_SHAREDPTR(boost,boost/shared_ptr.hpp,[ tr1_mem_boost=true ]) 36AC_CHECK_SHAREDPTR(boost,boost/shared_ptr.hpp,[ tr1_mem_boost=true ])
36tr1_mem="" 37tr1_mem=""
37AC_ARG_WITH([tr1-memory], 38AC_ARG_WITH([tr1-memory],
38 AC_HELP_STRING([--with-tr1-memory=<boost|std>],[select tr1/memory (shared_ptr<>) implementation to use]), 39 AC_HELP_STRING([--with-tr1-memory=<boost|std>],[select tr1/memory (shared_ptr<>) implementation to use]),
39 [ tr1_mem="$withval" ] 40 [ tr1_mem="$withval" ]
40) 41)
41AC_MSG_CHECKING([for tr1/memory implementation to use]) 42AC_MSG_CHECKING([for tr1/memory implementation to use])
42test -z "$tr1_mem" && $tr1_mem_std && tr1_mem=std 43test -z "$tr1_mem" && $tr1_mem_std && tr1_mem=std
43test -z "$tr1_mem" && $tr1_mem_boost && tr1_mem=boost 44test -z "$tr1_mem" && $tr1_mem_boost && tr1_mem=boost
44if test -z "$tr1_mem" ; then 45if test -z "$tr1_mem" ; then
45 AC_MSG_RESULT([none found]) 46 AC_MSG_RESULT([none found])
46else 47else
47 AC_MSG_RESULT([$tr1_mem]) 48 AC_MSG_RESULT([$tr1_mem])
48fi 49fi
49case "$tr1_mem" in 50case "$tr1_mem" in
50 std) 51 std)
51 $tr1_mem_std || AC_MSG_ERROR([std implementation requested, but not found]) 52 $tr1_mem_std || AC_MSG_ERROR([std implementation requested, but not found])
52 OPKELE_TR1_MEM_NS=std::tr1 53 OPKELE_TR1_MEM_NS=std::tr1
53 OPKELE_TR1_MEM_HEADER=tr1/memory 54 OPKELE_TR1_MEM_HEADER=tr1/memory
54 ;; 55 ;;
55 boost) 56 boost)
56 $tr1_mem_boost || AC_MSG_ERROR([boost implementation requested, but not found]) 57 $tr1_mem_boost || AC_MSG_ERROR([boost implementation requested, but not found])
57 OPKELE_TR1_MEM_NS=boost 58 OPKELE_TR1_MEM_NS=boost
58 OPKELE_TR1_MEM_HEADER=boost/shared_ptr.hpp 59 OPKELE_TR1_MEM_HEADER=boost/shared_ptr.hpp
59 ;; 60 ;;
60 *) 61 *)
61 AC_MSG_ERROR([no shared_ptr<> implementation found]) 62 AC_MSG_ERROR([no shared_ptr<> implementation found])
62 ;; 63 ;;
63esac 64esac
64AC_SUBST([OPKELE_TR1_MEM_NS]) 65AC_SUBST([OPKELE_TR1_MEM_NS])
65AC_SUBST([OPKELE_TR1_MEM_HEADER]) 66AC_SUBST([OPKELE_TR1_MEM_HEADER])
66 67
67AC_MSG_CHECKING([for deprecated attribute support]) 68AC_MSG_CHECKING([for deprecated attribute support])
68AC_COMPILE_IFELSE([ 69AC_COMPILE_IFELSE([
69 int __attribute__((deprecated)) deprecated_function(); 70 int __attribute__((deprecated)) deprecated_function();
70 ],[ 71 ],[
71 AC_MSG_RESULT([yes]) 72 AC_MSG_RESULT([yes])
72 AC_DEFINE([OPKELE_DEPRECATE],[__attribute__((deprecated))],[deprecated function attribute]) 73 AC_DEFINE([OPKELE_DEPRECATE],[__attribute__((deprecated))],[deprecated function attribute])
73 ],[ 74 ],[
74 AC_MSG_RESULT([no]) 75 AC_MSG_RESULT([no])
75 AC_DEFINE([OPKELE_DEPRECATE],,[deprecated function attribute]) 76 AC_DEFINE([OPKELE_DEPRECATE],,[deprecated function attribute])
76 ] 77 ]
77) 78)
78 79
79AC_LANG_PUSH([C++]) 80AC_LANG_PUSH([C++])
diff --git a/test/OP.cc b/test/OP.cc
index 6012b2e..4e2a5ed 100644
--- a/test/OP.cc
+++ b/test/OP.cc
@@ -1,82 +1,86 @@
1#include <uuid/uuid.h> 1#include <uuid/uuid.h>
2#include <iostream> 2#include <iostream>
3#include <cassert> 3#include <cassert>
4#include <string> 4#include <string>
5#include <ext/algorithm>
6using namespace std; 5using namespace std;
7#include <kingate/exception.h> 6#include <kingate/exception.h>
8#include <kingate/plaincgi.h> 7#include <kingate/plaincgi.h>
9#include <kingate/cgi_gateway.h> 8#include <kingate/cgi_gateway.h>
10#include <opkele/exception.h> 9#include <opkele/exception.h>
11#include <opkele/util.h> 10#include <opkele/util.h>
12#include <opkele/uris.h> 11#include <opkele/uris.h>
13#include <opkele/extension.h> 12#include <opkele/extension.h>
14#include <opkele/association.h> 13#include <opkele/association.h>
15#include <opkele/debug.h> 14#include <opkele/debug.h>
16#include <opkele/verify_op.h> 15#include <opkele/verify_op.h>
17#include <opkele/sreg.h> 16#include <opkele/sreg.h>
18 17
18#include "config.h"
19#ifdef HAVE_EXT_ALGORITHM_H
20# include <ext/algorithm>
21#endif
22
19#include "sqlite.h" 23#include "sqlite.h"
20#include "kingate_openid_message.h" 24#include "kingate_openid_message.h"
21 25
22static const string get_self_url(const kingate::cgi_gateway& gw) { 26static const string get_self_url(const kingate::cgi_gateway& gw) {
23 bool s = gw.has_meta("SSL_PROTOCOL_VERSION"); 27 bool s = gw.has_meta("SSL_PROTOCOL_VERSION");
24 string rv = s?"https://":"http://"; 28 string rv = s?"https://":"http://";
25 rv += gw.http_request_header("Host"); 29 rv += gw.http_request_header("Host");
26 const string& port = gw.get_meta("SERVER_PORT"); 30 const string& port = gw.get_meta("SERVER_PORT");
27 if( port!=(s?"443":"80") ) { 31 if( port!=(s?"443":"80") ) {
28 rv += ':'; rv += port; 32 rv += ':'; rv += port;
29 } 33 }
30 rv += gw.get_meta("REQUEST_URI"); 34 rv += gw.get_meta("REQUEST_URI");
31 string::size_type q = rv.find('?'); 35 string::size_type q = rv.find('?');
32 if(q!=string::npos) 36 if(q!=string::npos)
33 rv.erase(q); 37 rv.erase(q);
34 return rv; 38 return rv;
35} 39}
36 40
37class opdb_t : public sqlite3_t { 41class opdb_t : public sqlite3_t {
38 public: 42 public:
39 opdb_t() 43 opdb_t()
40 : sqlite3_t("/tmp/OP.db") { 44 : sqlite3_t("/tmp/OP.db") {
41 assert(_D); 45 assert(_D);
42 char **resp; int nr,nc; char *errm; 46 char **resp; int nr,nc; char *errm;
43 if(sqlite3_get_table( 47 if(sqlite3_get_table(
44 _D, "SELECT a_op FROM assoc LIMIT 0", 48 _D, "SELECT a_op FROM assoc LIMIT 0",
45 &resp,&nr,&nc,&errm)!=SQLITE_OK) { 49 &resp,&nr,&nc,&errm)!=SQLITE_OK) {
46 extern const char *__OP_db_bootstrap; 50 extern const char *__OP_db_bootstrap;
47 DOUT_("Bootstrapping DB"); 51 DOUT_("Bootstrapping DB");
48 if(sqlite3_exec(_D,__OP_db_bootstrap,NULL,NULL,&errm)!=SQLITE_OK) 52 if(sqlite3_exec(_D,__OP_db_bootstrap,NULL,NULL,&errm)!=SQLITE_OK)
49 throw opkele::exception(OPKELE_CP_ string("Failed to boostrap SQLite database: ")+errm); 53 throw opkele::exception(OPKELE_CP_ string("Failed to boostrap SQLite database: ")+errm);
50 }else 54 }else
51 sqlite3_free_table(resp); 55 sqlite3_free_table(resp);
52 } 56 }
53}; 57};
54 58
55class example_op_t : public opkele::verify_OP { 59class example_op_t : public opkele::verify_OP {
56 public: 60 public:
57 kingate::cgi_gateway& gw; 61 kingate::cgi_gateway& gw;
58 opdb_t db; 62 opdb_t db;
59 kingate::cookie htc; 63 kingate::cookie htc;
60 64
61 65
62 example_op_t(kingate::cgi_gateway& g) 66 example_op_t(kingate::cgi_gateway& g)
63 : gw(g) { 67 : gw(g) {
64 try { 68 try {
65 htc = gw.cookies.get_cookie("htop_session"); 69 htc = gw.cookies.get_cookie("htop_session");
66 sqlite3_mem_t<char*> S = sqlite3_mprintf( 70 sqlite3_mem_t<char*> S = sqlite3_mprintf(
67 "SELECT 1 FROM ht_sessions WHERE hts_id=%Q", 71 "SELECT 1 FROM ht_sessions WHERE hts_id=%Q",
68 htc.get_value().c_str()); 72 htc.get_value().c_str());
69 sqlite3_table_t T; int nr,nc; 73 sqlite3_table_t T; int nr,nc;
70 db.get_table(S,T,&nr,&nc); 74 db.get_table(S,T,&nr,&nc);
71 if(nr<1) 75 if(nr<1)
72 throw kingate::exception_notfound(CODEPOINT,"forcing cookie generation"); 76 throw kingate::exception_notfound(CODEPOINT,"forcing cookie generation");
73 }catch(kingate::exception_notfound& kenf) { 77 }catch(kingate::exception_notfound& kenf) {
74 uuid_t uuid; uuid_generate(uuid); 78 uuid_t uuid; uuid_generate(uuid);
75 htc = kingate::cookie("htop_session",opkele::util::encode_base64(uuid,sizeof(uuid))); 79 htc = kingate::cookie("htop_session",opkele::util::encode_base64(uuid,sizeof(uuid)));
76 sqlite3_mem_t<char*> S = sqlite3_mprintf( 80 sqlite3_mem_t<char*> S = sqlite3_mprintf(
77 "INSERT INTO ht_sessions (hts_id) VALUES (%Q)", 81 "INSERT INTO ht_sessions (hts_id) VALUES (%Q)",
78 htc.get_value().c_str()); 82 htc.get_value().c_str());
79 db.exec(S); 83 db.exec(S);
80 } 84 }
81 } 85 }
82 86