98 lines
2.1 KiB
C
98 lines
2.1 KiB
C
#include <stdio.h>
|
|
|
|
#include <ne_alloc.h>
|
|
#include <ne_string.h>
|
|
#include <ne_md5.h>
|
|
#include <ne_socket.h>
|
|
#include <ne_private.h>
|
|
|
|
#define USE_GETADDRINFO
|
|
|
|
#ifdef WIN32
|
|
#include <winsock2.h>
|
|
#include <stddef.h>
|
|
#ifdef USE_GETADDRINFO
|
|
#include <ws2tcpip.h>
|
|
#endif
|
|
#else
|
|
#include <sys/types.h>
|
|
#include <sys/socket.h>
|
|
#include <netdb.h>
|
|
#endif
|
|
|
|
#include "solbox_util.h"
|
|
|
|
void md5_buffer(const char *buffer, char *digest)
|
|
{
|
|
unsigned char md5_buf[16];
|
|
|
|
struct ne_md5_ctx *ctx;
|
|
|
|
ctx = ne_md5_create_ctx();
|
|
|
|
ne_md5_process_bytes(buffer, strlen(buffer), ctx);
|
|
ne_md5_finish_ctx(ctx, md5_buf);
|
|
|
|
ne_md5_to_ascii(md5_buf, digest);
|
|
|
|
ne_md5_destroy_ctx(ctx);
|
|
// 0.26.0 버전 부터 바뀜
|
|
#ifdef __NEON_0_25_4__
|
|
struct ne_md5_ctx ctx;
|
|
|
|
ne_md5_init_ctx(&ctx);
|
|
ne_md5_process_bytes(buffer, strlen(buffer), &ctx);
|
|
ne_md5_finish_ctx(&ctx, md5_buf);
|
|
|
|
ne_md5_to_ascii(md5_buf, digest);
|
|
#endif // __NEON_0_25_4__
|
|
}
|
|
|
|
void md5_buffer_bin(const char *buffer, char *digest)
|
|
{
|
|
unsigned char md5_buf[16];
|
|
|
|
struct ne_md5_ctx *ctx;
|
|
|
|
ctx = ne_md5_create_ctx();
|
|
|
|
ne_md5_process_bytes(buffer, strlen(buffer), ctx);
|
|
ne_md5_finish_ctx(ctx, md5_buf);
|
|
|
|
memcpy(digest,md5_buf,16);
|
|
|
|
ne_md5_destroy_ctx(ctx);
|
|
// 0.26.0 버전 부터 바뀜
|
|
#ifdef __NEON_0_25_4__
|
|
struct ne_md5_ctx ctx;
|
|
|
|
ne_md5_init_ctx(&ctx);
|
|
|
|
ne_md5_process_bytes(buffer, strlen(buffer), &ctx);
|
|
ne_md5_finish_ctx(&ctx, md5_buf);
|
|
memcpy(digest,md5_buf,16);
|
|
#endif // __NEON_0_25_4__
|
|
}
|
|
|
|
// 버전UP(0.29.5) 따른 uri parse 대처
|
|
// 변경된 버전 경우 rc.solbox.com/dav 와 같은 형식으로 올경우 host(rc.solbox.com)를 파서 못함
|
|
// http://rc.solbox.com/dav 같은 형식으로 와야만이 host를 파싱할 수 있음
|
|
#define HTTP_SCHEME "http://"
|
|
int solbox_uri_parse(const char *uri, ne_uri *parsed)
|
|
{
|
|
// change uri : http:// 를 강제적으로 넣는다.
|
|
char tmpuri[1024] = {0};
|
|
|
|
if(ne_strncasecmp(uri, HTTP_SCHEME,strlen(HTTP_SCHEME)))
|
|
sprintf(tmpuri, "%s%s",HTTP_SCHEME, uri);
|
|
else
|
|
sprintf(tmpuri, "%s", uri);
|
|
|
|
return ne_uri_parse(tmpuri, parsed);
|
|
}
|
|
|
|
// ne_session 포함된 ne_socket 가져오는 함수
|
|
ne_socket* get_session_socket (ne_session* pnsess)
|
|
{
|
|
return pnsess->socket;
|
|
} |