ChipMaster's trial hacks on C++CMS starting with v1.2.1. Not sure I'll follow on with the v2 since it looks to be breaking and mostly frivolous.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

171 lines
7.6 KiB

  1. ///////////////////////////////////////////////////////////////////////////////
  2. //
  3. // Copyright (C) 2008-2012 Artyom Beilis (Tonkikh) <artyomtnk@yahoo.com>
  4. //
  5. // See accompanying file COPYING.TXT file for licensing details.
  6. //
  7. ///////////////////////////////////////////////////////////////////////////////
  8. #ifndef CPPCMS_CAPI_SESSION_H
  9. #define CPPCMS_CAPI_SESSION_H
  10. #include <cppcms/defs.h>
  11. #ifdef __cplusplus
  12. extern "C" {
  13. #endif
  14. ///
  15. /// \defgroup capi_session CppCMS C Session API
  16. /// @{
  17. /// \ver{v1_2}
  18. ///
  19. /// \defgroup capi_session_expiration Expiration Codes
  20. /// @{
  21. #define CPPCMS_CAPI_SESSION_FIXED 0 ///< Fixed session expiration
  22. #define CPPCMS_CAPI_SESSION_RENEW 1 ///< Session expiration automatically renewed on access
  23. #define CPPCMS_CAPI_SESSION_BROWSER 2 ///< Session is tied to browser session
  24. /// @}
  25. ///
  26. /// \defgroup capi_session_error_handling Error Handling
  27. /// @{
  28. #define CPPCMS_CAPI_ERROR_OK 0 ///< Success
  29. #define CPPCMS_CAPI_ERROR_GENERAL 1 ///< Uncategorized error
  30. #define CPPCMS_CAPI_ERROR_RUNTIME 2 ///< Runtime Error occured
  31. #define CPPCMS_CAPI_ERROR_INVALID_ARGUMENT 4 ///< Invalid Argument Provided
  32. #define CPPCMS_CAPI_ERROR_LOGIC 5 ///< Invalid API Use
  33. #define CPPCMS_CAPI_ERROR_ALLOC 6 ///< Allocation Failed
  34. ///
  35. /// "Base class" for cppcms_capi_session, cppcms_capi_session_pool, and cppcms_capi_cookie
  36. ///
  37. /// Is used to get error status of the object
  38. ///
  39. typedef void *cppcms_capi_object;
  40. /// @}
  41. /// Class that represents cppcms::session_pool in C
  42. ///
  43. /// \defgroup cppcms_capi_session_pool Session Pool
  44. typedef struct cppcms_capi_session_pool cppcms_capi_session_pool;
  45. /// Class that represents cppcms::session_interface in C
  46. ///
  47. /// \defgroup cppcms_capi_session_pool_init_from_json Session Interface
  48. typedef struct cppcms_capi_session cppcms_capi_session;
  49. /// Class that represents cppcms::http::cookie in C
  50. ///
  51. /// \defgroup cppcms_capi_session_cookie Cookie
  52. typedef struct cppcms_capi_cookie cppcms_capi_cookie;
  53. ///
  54. /// \addtogroup capi_session_error_handling
  55. /// @{
  56. CPPCMS_API int cppcms_capi_error(cppcms_capi_object obj); ///< Get error code for the object
  57. CPPCMS_API char const *cppcms_capi_error_message(cppcms_capi_object obj); ///< Get error message for the object
  58. CPPCMS_API char const *cppcms_capi_error_clear(cppcms_capi_object obj); ///< Clear error and get last message
  59. /// @}
  60. /// \addtogroup cppcms_capi_session_pool
  61. /// @{
  62. /// Create new empty pool object, returns NULL in case of fatal error
  63. CPPCMS_API cppcms_capi_session_pool *cppcms_capi_session_pool_new();
  64. /// Destroys pool object
  65. CPPCMS_API void cppcms_capi_session_pool_delete(cppcms_capi_session_pool *pool);
  66. /// Initialize the pool from CppCMS configuration file,\a config_file
  67. CPPCMS_API int cppcms_capi_session_pool_init(cppcms_capi_session_pool *pool,char const *config_file);
  68. /// Initialize the pool from CppCMS configuration in json fromat \a json
  69. CPPCMS_API int cppcms_capi_session_pool_init_from_json(cppcms_capi_session_pool *pool,char const *json);
  70. /// @}
  71. CPPCMS_API cppcms_capi_session *cppcms_capi_session_new();
  72. CPPCMS_API void cppcms_capi_session_delete(cppcms_capi_session *session);
  73. CPPCMS_API int cppcms_capi_session_init(cppcms_capi_session *session,cppcms_capi_session_pool *pool);
  74. CPPCMS_API int cppcms_capi_session_clear(cppcms_capi_session *session);
  75. CPPCMS_API int cppcms_capi_session_is_set(cppcms_capi_session *session,char const *key);
  76. CPPCMS_API int cppcms_capi_session_erase(cppcms_capi_session *session,char const *key);
  77. CPPCMS_API int cppcms_capi_session_get_exposed(cppcms_capi_session *session,char const *key);
  78. CPPCMS_API int cppcms_capi_session_set_exposed(cppcms_capi_session *session,char const *key,int is_exposed);
  79. CPPCMS_API char const *cppcms_capi_session_get_first_key(cppcms_capi_session *session);
  80. CPPCMS_API char const *cppcms_capi_session_get_next_key(cppcms_capi_session *session);
  81. CPPCMS_API char const *cppcms_capi_session_get_csrf_token(cppcms_capi_session *session);
  82. CPPCMS_API int cppcms_capi_session_set(cppcms_capi_session *session,char const *key,char const *value);
  83. CPPCMS_API char const *cppcms_capi_session_get(cppcms_capi_session *session,char const *key);
  84. CPPCMS_API int cppcms_capi_session_set_binary_as_hex(cppcms_capi_session *session,char const *key,char const *value);
  85. CPPCMS_API char const *cppcms_capi_session_get_binary_as_hex(cppcms_capi_session *session,char const *key);
  86. CPPCMS_API int cppcms_capi_session_set_binary(cppcms_capi_session *session,char const *key,void const *value,int length);
  87. CPPCMS_API int cppcms_capi_session_get_binary(cppcms_capi_session *session,char const *key,void *buf,int buffer_size);
  88. CPPCMS_API int cppcms_capi_session_get_binary_len(cppcms_capi_session *session,char const *key);
  89. CPPCMS_API int cppcms_capi_session_reset_session(cppcms_capi_session *session);
  90. CPPCMS_API int cppcms_capi_session_set_default_age(cppcms_capi_session *session);
  91. CPPCMS_API int cppcms_capi_session_set_age(cppcms_capi_session *session,int t);
  92. CPPCMS_API int cppcms_capi_session_get_age(cppcms_capi_session *session);
  93. CPPCMS_API int cppcms_capi_session_set_default_expiration(cppcms_capi_session *session);
  94. /// Define expiration method
  95. CPPCMS_API int cppcms_capi_session_set_expiration(cppcms_capi_session *session,int t);
  96. /// Get current expiration method
  97. CPPCMS_API int cppcms_capi_session_get_expiration(cppcms_capi_session *session);
  98. CPPCMS_API int cppcms_capi_session_set_on_server(cppcms_capi_session *session,int is_on_server);
  99. CPPCMS_API int cppcms_capi_session_get_on_server(cppcms_capi_session *session);
  100. CPPCMS_API char const *cppcms_capi_session_get_session_cookie_name(cppcms_capi_session *session);
  101. CPPCMS_API int cppcms_capi_session_set_session_cookie(cppcms_capi_session *session,char const *session_cookie_value);
  102. CPPCMS_API int cppcms_capi_session_add_cookie_name(cppcms_capi_session *session,char const *name);
  103. CPPCMS_API int cppcms_capi_session_load(cppcms_capi_session *session);
  104. CPPCMS_API int cppcms_capi_session_save(cppcms_capi_session *session);
  105. CPPCMS_API cppcms_capi_cookie *cppcms_capi_session_cookie_first(cppcms_capi_session *session);
  106. CPPCMS_API cppcms_capi_cookie *cppcms_capi_session_cookie_next(cppcms_capi_session *session);
  107. CPPCMS_API void cppcms_capi_cookie_delete(cppcms_capi_cookie *cookie);
  108. CPPCMS_API char const *cppcms_capi_cookie_header(cppcms_capi_cookie const *cookie);
  109. CPPCMS_API char const *cppcms_capi_cookie_header_content(cppcms_capi_cookie const *cookie);
  110. CPPCMS_API char const *cppcms_capi_cookie_name(cppcms_capi_cookie const *cookie);
  111. CPPCMS_API char const *cppcms_capi_cookie_value(cppcms_capi_cookie const *cookie);
  112. CPPCMS_API char const *cppcms_capi_cookie_path(cppcms_capi_cookie const *cookie);
  113. CPPCMS_API char const *cppcms_capi_cookie_domain(cppcms_capi_cookie const *cookie);
  114. CPPCMS_API int cppcms_capi_cookie_max_age_defined(cppcms_capi_cookie const *cookie);
  115. CPPCMS_API unsigned cppcms_capi_cookie_max_age(cppcms_capi_cookie const *cookie);
  116. CPPCMS_API int cppcms_capi_cookie_expires_defined(cppcms_capi_cookie const *cookie);
  117. CPPCMS_API long long cppcms_capi_cookie_expires(cppcms_capi_cookie const *cookie);
  118. CPPCMS_API int cppcms_capi_cookie_is_secure(cppcms_capi_cookie const *cookie);
  119. CPPCMS_API int cppcms_capi_cookie_is_httponly(cppcms_capi_cookie const *cookie);
  120. CPPCMS_API int cppcms_capi_cookie_samesite_none_defined(cppcms_capi_cookie const *cookie);
  121. CPPCMS_API int cppcms_capi_cookie_samesite_lax_defined(cppcms_capi_cookie const *cookie);
  122. CPPCMS_API int cppcms_capi_cookie_samesite_strict_defined(cppcms_capi_cookie const *cookie);
  123. ///
  124. /// @}
  125. ///
  126. #ifdef __cplusplus
  127. } // extern "C"
  128. #endif
  129. #endif