/**************************************************************************** mod_dav_pgsql (DASL) for apache 2.X CopyRight(C) 2005 SolutionBox Inc. All Rights reserved. Author : sean kim (sean@solutionbox.co.kr) $Id: util.h,v 1.3 2007/01/25 06:52:16 elenoa Exp $ Redistribution and use in source and binary forms, with or with out modification, are not permitted in outside of SolutionBox Inc. ****************************************************************************/ #ifndef __DAV_REPOS_UTIL_H__ #define __DAV_REPOS_UTIL_H__ //#include #include #include #include /* ADD 2010-08-10 huibong bool type »ç¿ëÀ» À§ÇÑ Header Ãß°¡ */ #include #include #define DAV_REPOS_MAX_NAMESPACE 1024 /*----------------------------------------------------------------- * Utility function *----------------------------------------------------------------*/ #define MaxSizeOfAcctUserID 32 #define MaxSizeOfAcctVolume 32 #define MaxSizeOfAcctSession 128 #define MaxSizeOfPathLength 4096 #define MaxSizeOfFileNameLength 1024 /* user_login_name@partner_login_name */ typedef struct _acct_info { char szVolumeID[MaxSizeOfAcctVolume]; #ifdef __CLASSIFIED_TRAFFIC_MANAGE__ char szTCClassID[MaxSizeOfAcctVolume]; #endif char szUserID[MaxSizeOfAcctUserID]; char szSessionID[MaxSizeOfAcctSession]; } acct_info; // UTF-8 -> Database Character Set char* transformDBCharacter(request_rec *r, char* srcbuf, char *prefixmsg ); // Database Character Set -> UTF-8 char* transformUTF8(request_rec *r, char* srcbuf, char *prefixmsg ); int dav_repos_remove_base_uri(const char *base_uri, const char *req_uri, char *result); int dav_repos_remove_unsafe_chars(const char *pOld, char *pNew); int dav_repos_replace_unsafe_chars(const char *pOld, char *pNew); int dav_repos_restore_unsafe_chars(const char *pOld, char *pNew); int dav_repos_replace_multi_slash_chars(const char *pOld, char *pNew); //char *dav_repos_remove_unsafe_chars(const char *pStr); int remove_user_root_dir_from_fake_uri(const char *pcszFakeURI, char *pURI); int get_filename_in_path(const char *pcszPath, char *pszPathName, char *pszFileName); // CHG 2010-08-10 huibong // Hash Á¤º¸ »ý¼º 󸮽à »ý¼º °á°ú¸¦ static º¯¼ö¿¡ ÀúÀåÇϰí // ÇØ´ç º¯¼ö¸¦ ¹Ýȯó¸® ÇÏ´Â °æ¿ì .. // µ¿½Ã°£ Á¢±Ù½Ã Lock À» »ç¿ëÇÏÁö ¾Ê°Ô µÇ¸é ¹®Á¦°¡ ¹ß»ýÇÏ°Ô µÊ. ( File Name¿¡ ´ëÇÑ Hash Á¤º¸°¡ µ¿ÀÏÇÏ°Ô »ý¼º) // ÇÏÁö¸¸ Lock À» 󸮼ӵµ¿¡ ¿µÇâÀ» ¹ÌÄ¥¼ö ÀÖÀ¸¹Ç·Î // °á°ú °ªÀ» ÀúÀåÇÒ Ãâ·Âº¯¼ö¸¦ ¸Å°³º¯¼ö·Î Àü´Þ¹Þµµ·Ï ¼öÁ¤Ã³¸® ÇÑ´Ù. //char *get_hashed_filepath(const char *plain_filepath); bool get_hashed_filepath( const char *plain_filepath, char * result, int result_length); int at_split(const char *pszAcctInfo, acct_info *pAcctInfo); int check_string(char *to, const char *from, size_t length); /* ** Get DB handler from request_rec */ dav_repos_server_conf *dav_repos_get_server_conf(server_rec *s); ap_dbd_t *dav_repos_get_db(request_rec *r); void dav_repos_release_db(request_rec *r, ap_dbd_t *db, int rv); int dav_repos_begin_trans(const char *func, request_rec *r, ap_dbd_t *db, apr_dbd_transaction_t **trans); int dav_repos_end_trans(const char *func, request_rec *r, ap_dbd_t *db, apr_dbd_transaction_t *trans); //int dav_repos_init_db(apr_pool_t *p, server_rec * s); int dav_repos_destroy_db(server_rec * s); /* make date string*/ void dav_repos_format_time(int style, apr_time_t sec, char *buf); void dav_repos_get_ns_name_key(const char *key, dav_prop_name * pname, apr_pool_t * pool); const char *dav_repos_build_ns_name_key(const char *ns, const char *name, apr_pool_t * pool); /* Make XML reponse */ dav_response *dav_repos_mkresponse(dav_repos_resource * db_r); /* Build dead property hash * Build the hash before makeresponse */ void dav_repos_build_pr_hash(dav_repos_resource * db_r); /* Build live property */ void dav_repos_build_lpr_hash(dav_repos_resource * db_r); /*# FIXME : This is a insert lock info for search. ** Do we really need a lock info when we search ? ** Then we should make params in search semewhere. */ dav_error *dav_repos_insert_lock_prop(const dav_walk_params * params, dav_repos_resource * db_r); /* make sure the pathname does not have a trailing "/" ** Make sure uri, pathname in DB must not have a trailing ** Use this function. */ void dav_repos_no_trail(char *str); #ifdef __OPENDISK_SOLUTION__ /* resource type change */ int dav_repos_change_resource_type(int resource_type); #endif void tea_decrypt(char *buf, int len); int file_trylock(int fd); int file_unlock(int fd); /* apache version ¾÷¿¡ µû¸¥ apr_dbd_get_row ó¸® ¹æ¹ý º¯°æ */ int solbox_apr_dbd_get_row(const apr_dbd_driver_t *driver, apr_pool_t *pool, apr_dbd_results_t *res, apr_dbd_row_t **row, int rownum); dav_error* solbox_dav_new_error(apr_pool_t *p, int status, int error_id, const char *desc); const char *dav_http_scheme(const request_rec *r); #endif