This commit is contained in:
biosvos
2026-08-07 17:38:18 +09:00
commit 873193a243
9613 changed files with 2755992 additions and 0 deletions
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,37 @@
[PARAM]
HOSTNAME=192.168.0.136
VRCD_PORT=13109
REPORT_UPDATE_PORT=22201
REPORT_SEND_PORT=30001
VRCD_THREAD_NUM=3
TIME_OUT_READ=5
HEALTH_CHECK_TERM=10
[RCACCT]
0udisk=unizit:0udisk2515:unizi:/user/ics10/gms/new_sh_statusd/cert/unizit28.cert
#soribada=soribada:soriqkek321:1234:/user/ics10/gms/new_sh_statusd/cert/soribada15.cert
rc002-test=admin:spxhal:testrc002:/user/ics10/gms/new_sh_statusd/cert/admin151.cert
#mintech=mintech:alsxpzm:mintech:/user/ics10/gms/new_sh_statusd/cert/mintech51.cert
rc003-test=admin:spxhal:testrc003:/user/ics10/gms/new_sh_statusd/cert/admin150.cert
rc004-test=admin:spxhal:testrc004:/user/ics10/gms/new_sh_statusd/cert/admin153.cert
freezonetest=freezonetest:vmflwhs:freezonetest:/user/ics10/gms/new_sh_statusd/cert/freezonetest72.cert
orgel=soribada:soriqkek321:orgel321:/user/ics10/gms/new_sh_statusd/cert/soribada92.cert
#jjang=jjanghard:skfkgkek*1:jjang:/user/ics10/gms/new_sh_statusd/cert/jjanghard80.cert
rc103-test=admin:spxhal:testrc103:/user/ics10/gms/new_sh_statusd/cert/admin152.cert
rc105-test=admin:spxhal:testrc105:/user/ics10/gms/new_sh_statusd/cert/admin167.cert
incok=incok:incok@@$$:incokincok:/user/ics10/gms/new_sh_statusd/cert/incok119.cert
uccfs=paran:dbTlTlvkfks!@:paransdk:/user/ics10/gms/new_sh_statusd/cert/paran103.cert
[PGSQL]
DATABASE_NAME=syshost
DATABASE_ADDR=127.0.0.1
DATABASE_ACCT=syshost
DATABASE_PW=alfkzmf!?{}
DATABASE_PORT=5432
[MYSQL]
DATABASE_NAME=CCDB
DATABASE_ADDR=127.0.0.1
DATABASE_ACCT=root
DATABASE_PW=alfkzmf!?{}
DATABASE_PORT=3306
+211
View File
@@ -0,0 +1,211 @@
#ifndef _SHCSDK_H
#define _SHCSDK_H
#ifdef WIN32
# if defined(SHCSDK_EXPORTS)
# define WIN32DLL __declspec(dllexport)
# else
# define WIN32DLL __declspec(dllimport)
# endif
#else
#define WIN32DLL
typedef long long INT64;
//typedef int bool;
#endif
typedef void *HSHSDK;
typedef void *HSHFILELIST;
typedef struct {
char *path;
INT64 size;
char *lastModified;
char *lastModified_gmt;
unsigned int attr;
char *source;
} SHFILE_STRUCT, *PSHFILE_STRUCT;
// For SHFILE.attr
enum SHCSDK_FILEATTR {
SHFILEATTR_FOLDER = 0x00000001,
};
// For write policy
enum SHCSDK_WRITEPOLICY {
SHWRITEPOLICY_NONE = 0,
SHWRITEPOLICY_OVERWRITE,
SHWRITEPOLICY_APPEND,
};
// For error number
enum SHCSDK_ERRNO {
SHCERRNO_UNDEFINED = 30000,
SHCERRNO_INVALIDHDL = 30001,
SHCERRNO_INVALIDFLHDL = 30002,
SHCERRNO_SERVICE = 30003,
SHCERRNO_AUTHORIZATION = 30004,
SHCERRNO_ISBUSY = 30005,
SHCERRNO_EXISTSFILE = 30006,
SHCERRNO_NOEXISTSFILE = 30007,
SHCERRNO_NOAVAILQUOTA = 30008,
SHCERRNO_ALREADYEXIST = 30009,
SHCERRNO_MAX = SHCERRNO_ALREADYEXIST + 1,
};
// Callback function format
typedef int (*sh_callback)(
void *param, // Callback function's param
INT64 progress // Progress
);
typedef int (*down_stream)(
void* userval,
const char* buf,
size_t len
);
#ifdef __cplusplus
extern "C" {
#endif
// Initialization
WIN32DLL HSHSDK sh_init(
const char *url, // Url
const char *authString, // Authentication string
sh_callback proc, // Callback function
void *param); // Callback function's Param
// Termination
WIN32DLL void sh_free(
HSHSDK hshsdk); // SDK HANDLE
WIN32DLL int sh_get_error_number(
HSHSDK hshsdk); // SDK handle
WIN32DLL const char* sh_get_error_message(
HSHSDK hshsdk); // SDK handle
WIN32DLL HSHFILELIST sh_get_filelist(
HSHSDK hshsdk, // SDK handle
const char *path, // Path
unsigned int depth); // 0 : itself
// 1 : 1 depth children
// 2 : all children
WIN32DLL long sh_get_filelist_count(
HSHSDK hshsdk, // SDK handle
HSHFILELIST hshfl); // File list handle
WIN32DLL PSHFILE_STRUCT sh_get_file(
HSHSDK hshsdk, // SDK handle
HSHFILELIST hshfl, // File list handle
long index); // File index
WIN32DLL void sh_free_filelist(
HSHSDK hshsdk, // SDK handle
HSHFILELIST hshfl); // File list handle
WIN32DLL int sh_make_directory(
HSHSDK hshsdk, // SDK handle
const char *drectory); // Directory Path
WIN32DLL int sh_copy(
HSHSDK hshsdk, // SDK handle
const char *srcPath, // Source file | directory
const char *dstPath, // Destination file | directory
int overwrite); // 0 : Don't overwrite
// 1 : Overwrite
WIN32DLL int sh_move(
HSHSDK hshsdk, // SDK handle
const char *srcPath, // Source file | directory
const char *dstPath, // Destination file | directory
int overwrite); // 0 : Don't overwrite
// 1 : Overwrite
WIN32DLL int sh_delete(
HSHSDK hshsdk, // SDK handle
const char *path); // File | directory
WIN32DLL int sh_upload(
HSHSDK hshsdk, // SDK handle
const char *srcPath, // Source file
const char *dstPath, // Destination file
int writePolicy, // Write policy flag
INT64 availQuota); // Avail quota
WIN32DLL int sh_download(
HSHSDK hshsdk, // SDK handle
const char *srcPath, // Source file
const char *dstPath, // Destination file
int writePolicy, // Write policy flag
INT64 availQuota); // Avail quota
WIN32DLL int sh_upload_buffer(
HSHSDK hshsdk, // SDK handle
down_stream proc,
void* userval, // User-supplied value for callback
const char *dstPath, // Destination file
INT64 availQuota); // Avail quota
WIN32DLL int sh_download_buffer(
HSHSDK hshsdk, // SDK handle
const char *srcPath, // Source file
down_stream proc,
void* userval // User-supplied value for callback
); // Avail quota
WIN32DLL int sh_encrypt(
const char *text, // String (< 1000 bytes)
char *encrypted); // Encrypted String (1000 bytes)
WIN32DLL int sh_set_limit(
HSHSDK hshsdk, // SDK handle
int nLimit); // Limit value
WIN32DLL int sh_get_limit(
HSHSDK hshsdk // SDK handle
); // Limit value
WIN32DLL INT64 sh_get_filepos(
HSHSDK hshsdk // SDK handle
);
WIN32DLL bool sh_file_exist(
HSHSDK hshsdk, // SDK Handle
const char *path); // file/folder Path
WIN32DLL void sh_set_C_timeout(
int second // Time out (Second)
);
WIN32DLL int sh_set_sessionID(
HSHSDK hshsdk, // SDK Handle
const char *pszID);
WIN32DLL const char* sh_get_sessionID(
HSHSDK hshsdk // SDK Handle
);
WIN32DLL int sh_set_auth_expire(
HSHSDK hshsdk, // SDK Handle
int ntime // Expire time
);
WIN32DLL int sh_get_auth_expire(
HSHSDK hshsdk // SDK Handle
);
#ifdef __cplusplus
}
#endif
#endif
+111
View File
@@ -0,0 +1,111 @@
#ifndef _SHSDK_H
#define _SHSDK_H
#include <time.h>
#ifdef WIN32
typedef __int64 INT64;
typedef __int64* PINT64;
typedef int BOOL;
#else
typedef long long INT64;
typedef long long* PINT64;
#endif
#ifdef __cplusplus
extern "C" {
#endif
// SSDK 커스텀 에러번호
enum SHSSDK_ERRNO {
SHERRNO_UNDEFINED = 30000,
SHERRNO_AUTHORIZATION = 31000,
SHERRNO_INTERNAL = 31001,
SHERRNO_NOSERVICE = 32000,
SHERRNO_NOCACHEFILE = 33000,
SHERRNO_INVALIDCACHEFILE = 33001,
};
enum SASSDK_ERRNO {
ERR_RCTRAN_NOT_EXSIT_URI = 0x3a27, // 존재하지 않는 URI
ERR_RCTRAN_USERID_NOT_FOUND = 0x3a24, // 존재하지 않는 ID
ERR_RCTRAN_PASSWORD_NOT_MATCH = 0x3a25, // 패스워드 에러
ERR_RCTRAN_NOT_DEFINED = 0x00, // 알수 없는 에러
};
typedef struct tranlog_data{
char *sessionid; // 세션 ID char*
char *filename; // 파일명 char*
unsigned long long length; // 사이즈 long long
int ndirection; // 업다운여부
time_t startdate; // 시작시간 time_t
time_t enddate; // 종료시간 time_t
struct tranlog_data *pnext; // 다음 로그데이타 포인터
}TRANSFER_LOG_DATA,*LPTRANSFER_LOG_DATA;
const char *sh_get_service_host(
const char *userId, // 사용자 ID
const char *password, // 사용자 비밀번호
const char *serviceId // 서비스 ID
);
const int sh_get_service_info(
const char *userId, // 사용자 ID
const char *password, // 사용자 비밀번호
const char *serviceId, // 서비스 ID
PINT64 totalSpace, // 전체 용량
PINT64 freeSpace // 남은 용량
);
const char *sh_get_auth_string(
const char *userId, // 사용자 ID
const char *password, // 사용자 비밀번호
const char *serviceId, // 서비스 ID
const char *authKey, // 인증 키
const char *authFile, // 인증서 파일 경로
time_t expire // (BASE 1970-01-01 00:00:00)
);
const char *sh_decrypt(
const char *encrypted, // 암호화된 문자열
int acceptGap // 허용 시간 차
);
void sh_set_timeout(
int second // ()
);
void sh_set_cache_file(
const char *file_path // 캐쉬파일 저장 경로
);
const char* sh_get_uri_by_filename(
const char* szHost, // 서버 주소
const char *userId, // 사용자 ID
const char *password, // 사용자 비밀 번호
const char* uri, // 패스 URI
int ncount, // 다운로드 횟수
int nexpire); // 다운로드 만료 시한
LPTRANSFER_LOG_DATA sh_get_transfer_log_list(
const char *userId, // 사용자 ID
const char *password, // 사용자 비밀번호
const char *serviceId, // 서비스 ID
const char* szSessionID, // 세션 ID
time_t sTime, // 시작시간
time_t eTime, // 종료시간
int nDelete, // 삭제 여부
int nDirection // Up/Down 여부
);
void sh_free_transfer_log(
LPTRANSFER_LOG_DATA ploglist // 로그리스트 포인터
);
#ifdef __cplusplus
}
#endif
#endif
@@ -0,0 +1,12 @@
#ifndef CFGCONFIG_H
#define CFGCONFIG_H
#define MAX_BUF 1024
extern char cfgname[60];
#endif
+12
View File
@@ -0,0 +1,12 @@
#ifndef __CHILD_H__
#define __CHILD_H__
typedef struct {
pid_t child_pid; /* process ID */
int child_pipefd; /* parent's stream pipe to/from child */
int child_status; /* 0 = ready */
long child_count; /* # connections handled */
} Child;
Child *cptr; /* array of Child structures; calloc'ed */
#endif
+34
View File
@@ -0,0 +1,34 @@
/****************************************************************************
sh_statusd : Application status monitoring daemon for OpenDisk service
CopyRight(C) 2005 SolutionBox Inc. All Rights reserved.
Author : Sean Kim (sean@0x31.com)
$Id: global.h,v 1.4 2006/10/24 08:35:32 elenoa Exp $
Redistribution and use in source and binary forms, with or with out
modification, are not permitted in outside of SolutionBox Inc.
****************************************************************************/
#ifndef __GLOBAL_H__
#define __GLOBAL_H__
#define HOST_NAME "192.168.0.136"
#define CFGFILE "/user/service/etc/sh_statusd.conf"
#define RCACCT_CONF_PATH "/user/service/etc/rcacct.conf"
#define DEFAULT_LOGFILE_PATH "/user/service/logs/new_sh_statusd/"
#define DEFAULT_RC_CHECK_BIN "/user/service/bin/rccheck"
#define PID_FILE_PATH "/user/service/pid/new_sh_statusd.pid"
#define MAXREADLINE 1024
#define MaxSizeOfSndBuffer 1024*8
#define GetServStatusCmd "GET_SERVSTATUS"
#define RequestServUpdateCmd "REQUEST_SERV_UPDATE"
#define INSERT 1
#define UPDATE 2
#define DELETE 3
#endif
@@ -0,0 +1,3 @@
#define MAXLINE 4096
@@ -0,0 +1,5 @@
extern int socketRecv(int SocketFd, char * stData, int nLength, int nTime);
extern int socketSend(int SocketFd, char * stData, int nLength);
extern int atoPort(char *cpService, char *cpProto);
struct in_addr *atoAddr(char *cpAddress);
extern int makeConnection(char *cpService, int nType, char *cpNetAddress, char *cpResult);
@@ -0,0 +1,27 @@
#ifndef __PRE_THREAD_MODEL_H__
#define __PRE_THREAD_MODEL_H__
#include "protocol.h"
typedef struct {
pthread_t thread_tid; /* thread ID */
int deadORalive; /* is thread dead */
long thread_count; /* # connections handled */
} Thread;
Thread *vrcd_tptr, *report_tptr; /* array of Thread structures; calloc'ed */
servinfo_t *g_servinfo;
socklen_t vrcd_addrlen, report_addrlen;
pthread_mutex_t vrcd_lock, vrcd_lock2, report_s_lock, report_u_lock;
rcacct_t *g_rcacct;
struct sembuf waitop;
struct sembuf postop;
int sem_id;
int check_semid;
int report_semid;
int vrcd_semid;
int vrcdfd, vrcd_threads;
int update_reportfd, send_reportfd, report_threads;
long running_vrcd_thread_count;
#endif
+247
View File
@@ -0,0 +1,247 @@
#ifndef __PROTOCOL_H__
#define __PROTOCOL_H__
#include <stdint.h>
#define RESERVED 5
#define MaxSizeOfCode 3
#define MaxSizeOfTID 52
#define MaxSizeOfIssuer 128
#define MaxSizeOfSID 128
#define MaxSizeOfRCID 32
#define MaxSizeOfRCURL 128
#define MaxSizeOfServiceName 128
#define MaxSizeOfURIPath 1024
#define NumOfServerType 11
#define MaxSizeOfServerName 32
#define MaxSizeOfServerAddr 16
#define MaxSizeOfServerPort 8
#define MaxSizeOfServerType 24
#define MaxSizeOfRCAcctName 32
#define MaxSizeOfRCAcctUser 32
#define MaxSizeOfRCAcctPassword 32
#define MaxSizeOfRCAcctCert 128
#define MaxSizeOfRCAcctAuthkey 128
#define MAX_SRV_NAME 128
#define MAX_DOMAIN_NAME 256
#define MAX_MNG_RCID 128
#define MAX_MNG_SERVNAME 128
#define CONFIG_SERV "SERV"
#define CONFIG_RCACCT "RCACCT"
#define MAX_ALLOWED_DEAD_COUNT 3
#define ALLOWED_MAX_ERROR_COUNT 5
#define SENDSMSTERM 5
#define MAXSENDSMSCOUNT 5
#define SERV_ALIVE 1
#define SERV_DEAD 2
#define NO_MONITOR 3
#define END_OF_SHM "end of shm!"
//#define MYQUERY "SELECT NAME, IP, PORT, TYPE, MONITOR_YN FROM t_rms_rc_server_index WHERE DELETED_YN = 'N' ORDER BY cast(ETC2 as signed) ASC, ETC1 ASC ,NAME ASC"
#define MYQUERY "SELECT NAME, IP, PORT, TYPE, MONITOR_YN from (SELECT NAME, IP, PORT, TYPE, MONITOR_YN FROM t_rms_rc_server_index WHERE DELETED_YN = 'N' AND rcid != 'TIME' ORDER BY cast(ETC2 as signed) ASC, ETC1 ASC ,NAME ASC) a UNION ALL SELECT NAME, IP, PORT, TYPE, MONITOR_YN FROM t_rms_rc_server_index WHERE DELETED_YN = 'N' AND rcid = 'TIME'"
enum eServType
{
SERV_WWW = 0,
SERV_FHS = 1,
SERV_RC = 2,
SERV_DB = 3
};
extern const char a_ServType[NumOfServerType][MaxSizeOfServerType];
#define MAX_IP_STRING 17
struct common_message_header {
char szTransactionID[MaxSizeOfTID];
//unsigned long ulMode;
uint32_t ulMode;
char szIssuer[MaxSizeOfIssuer];
char szServiceID[MaxSizeOfSID];
//unsigned long ulResult;
uint32_t ulResult;
//unsigned long ulBodyLength;
uint32_t ulBodyLength;
};
#define MaxSizeOfCMH (sizeof(struct common_message_header))
struct local_message_header {
char szTransactionID[MaxSizeOfTID];
//unsigned long ulMode;
uint32_t ulMode;
char szIssuer[MaxSizeOfIssuer];
char szServiceID[MaxSizeOfSID];
char szRCID[MaxSizeOfRCID];
//unsigned long ulResult;
uint32_t ulResult;
//unsigned long ulBodyLength;
uint32_t ulBodyLength;
};
#define MaxSizeOfLMH (sizeof(struct local_message_header))
#define CODE_ESC 0x1b
#define DOMAIN_SIZE 512
#define HOSTNAME_SIZE 64
struct disk_usage {
/* Original Message */
char domain[DOMAIN_SIZE];
unsigned long long total;
unsigned long long free;
/* Additional : 2006.11.08 by Elenoa */
/* if manually upload enable/disable */
int manual_disable;
int upload_level;
/* disk stat: backlog and use percentage */
int disk_backlog;
int disk_percent;
/* connection stat: established connection and others all */
int connection_established;
int connection_total;
/* traffic stat: in and out traffic info (packet, byte) */
//unsigned long traffic_ip;
//unsigned long traffic_ib;
//unsigned long traffic_op;
//unsigned long traffic_ob;
uint32_t traffic_ip;
uint32_t traffic_ib;
uint32_t traffic_op;
uint32_t traffic_ob;
char hostname[HOSTNAME_SIZE];
};
struct svr_status {
time_t stamp;
struct disk_usage du;
};
#define AuthPrime 137897
typedef struct _s_time_sync_t {
long sync_info;
} time_sync_t;
typedef struct _ServInfo_e
{;
char m_pszServName[MAX_SRV_NAME];
char m_szIpString[MAX_IP_STRING];
short m_sPort;
time_t m_StatChgTime;
unsigned int m_Status;
unsigned int m_ServType;
unsigned int m_DeadCount;
char m_pszDomainName[MAX_DOMAIN_NAME];
char m_monitorYN[2];
struct svr_status ss;
struct _ServInfo_e *next;
} servinfo_t;
typedef struct _RCAcct_e
{
char * m_pszServiceName;
char * m_pszUserName;
char * m_pszPassword;
char * m_pszAuthkey;
char * m_pszCertLocation;
struct _RCAcct_e *next;
} rcacct_t;
/* Global Shared Memory Address */
typedef struct _g_shm_addr
{
unsigned int is_dirty;
unsigned int serv_num;
unsigned int thread_number[1024];
} g_shm_t;
typedef struct _rcmng_common_header
{
char rcmng_rcid[MAX_MNG_RCID];
char rcmng_servName[MAX_SRV_NAME];
unsigned int rcmng_serviceType;
//unsigned long bodylength;
uint32_t bodylength;
} rcmng_cheader_t;
typedef struct _CellInfo
{
char m_strCellPhone[24];
} cellinfo_t;
/* Definition of Message Mode */
#define MSG_MODE_VRCD_STATUSD_RTS_STATUS 0x0a01
/* Open Service and Subroot Create */
#define MSG_MODE_SMS_CCSYNC_OPEN_SERVICE 0x0001
#define MSG_MODE_CCSYNC_RCSYNC_DATA_INPUT 0x0002
#define MSG_MODE_RCSYNC_CCSYNC_DATA_INPUT_RESP 0x0003
#define MSG_MODE_RCSYNC_RCTRAN_SUBROOT_CREATE 0x0004
#define MSG_MODE_RCTRAN_VMA_SUBROOT_CREATE 0x0005
#define MSG_MODE_RCTRAN_RCSYNC_SUBROOT_CREATE_RESP 0x0006
#define MSG_MODE_RCSYNC_CCSYNC_DATA_INPUT_FAIL 0x0007
#define MSG_MODE_VMA_RCTRAN_SUBROOT_CREATE_RESP 0x0008
/* SP-Console Process : Receive Server List */
#define MSG_MODE_SPCONS_CCTRAN_SERVER_LIST 0x0010
#define MSG_MODE_CCTRAN_SPCONS_SERVER_LIST_RESP 0x0011
/* SP-Console Process : Receive Volume Size */
#define MSG_MODE_SPCONS_RCTRAN_VOLUME_SIZE 0x0012
#define MSG_MODE_RCTRAN_SPCONS_VOLUME_SIZE_RESP 0x0013
/* SP-Console Process : Set/Unset Anonymous Directory */
#define MSG_MODE_SPCONS_RCTRAN_SET_ANONY 0x0014
#define MSG_MODE_RCTRAN_APACHE_SET_ANONY 0x0015
#define MSG_MODE_RCTRAN_SPCONS_SET_ANONY_RESP 0x0016
#define MSG_MODE_APACHE_RCTRAN_SET_ANONY_RESP 0x0017
#define MSG_MODE_SPCONS_RCTRAN_UNSET_ANONY 0x0018
#define MSG_MODE_RCTRAN_APACHE_UNSET_ANONY 0x0019
#define MSG_MODE_RCTRAN_SPCONS_UNSET_ANONY_RESP 0x001a
#define MSG_MODE_APACHE_RCTRAN_UNSET_ANONY_RESP 0x001b
/* SP-Console Process : Bandwidth Level */
#define MSG_MODE_SPCONS_RCTRAN_SET_BCLEVEL 0x001c
#define MSG_MODE_RCTRAN_APACHE_SET_BCLEVEL 0x001d
#define MSG_MODE_RCTRAN_SPCONS_SET_BCLEVEL_RESP 0x001e
#define MSG_MODE_APACHE_RCTRAN_SET_BCLEVEL_RESP 0x001f
/* Volume Manager Agent Process : Statistcs and Disksize broadcast */
#define MSG_MODE_VMA_APACHE_DISKSIZE 0x0100
#define MSG_MODE_APACHE_VMA_DISKSIZE_RESP 0x0101
#define MSG_MODE_GVA_VMA_STG_STAT_REQ 0x0102
#define MSG_MODE_VMA_GVA_STG_STAT_RESP 0x0103
/* Network Statistics */
#define MSG_MODE_STATCOL_APACHE_NETSTAT_REQ 0x0104
#define MSG_MODE_APACHE_STATCOL_NETSTAT_RESP 0x0105
#define MSG_MODE_STATCOL_STATDEM_NETSTAT 0x0106
#define MSG_MODE_STATDEM_STATCOL_NETSTAT_RESP 0x0107
/* Statistics Service */
#define MSG_MODE_OPENDAV_RCSTAT_NETSTAT 0x0110
#define MSG_MODE_RCSTAT_OPENDAV_NETSTAT_RESP 0x0111
#define MSG_MODE_RCSTAT_CCSTAT_NETSTAT 0x0112
#define MSG_MODE_CCSTAT_RCSTAT_NETSTAT_RESP 0x0113
#define MSG_MODE_RCSTAT_CCSTAT_STGSTAT 0x0114
#define MSG_MODE_CCSTAT_RCSTAT_STGSTAT_RESP 0x0115
#endif
@@ -0,0 +1,233 @@
#ifndef __PROTOCOL_H__
#define __PROTOCOL_H__
#define RESERVED 5
#define MaxSizeOfCode 3
#define MaxSizeOfTID 52
#define MaxSizeOfIssuer 128
#define MaxSizeOfSID 128
#define MaxSizeOfRCID 32
#define MaxSizeOfRCURL 128
#define MaxSizeOfServiceName 128
#define MaxSizeOfURIPath 1024
#define NumOfServerType 11
#define MaxSizeOfServerName 32
#define MaxSizeOfServerAddr 16
#define MaxSizeOfServerPort 8
#define MaxSizeOfServerType 24
#define MaxSizeOfRCAcctName 32
#define MaxSizeOfRCAcctUser 32
#define MaxSizeOfRCAcctPassword 32
#define MaxSizeOfRCAcctCert 128
#define MaxSizeOfRCAcctAuthkey 128
#define MAX_SRV_NAME 128
#define MAX_DOMAIN_NAME 256
#define MAX_MNG_RCID 128
#define MAX_MNG_SERVNAME 128
#define CONFIG_SERV "SERV"
#define CONFIG_RCACCT "RCACCT"
#define MAX_ALLOWED_DEAD_COUNT 3
#define ALLOWED_MAX_ERROR_COUNT 5
#define SENDSMSTERM 5
#define MAXSENDSMSCOUNT 5
#define SERV_ALIVE 1
#define SERV_DEAD 2
#define NO_MONITOR 3
#define END_OF_SHM "end of shm!"
//#define MYQUERY "SELECT NAME, IP, PORT, TYPE, MONITOR_YN FROM t_rms_rc_server_index WHERE DELETED_YN = 'N' ORDER BY cast(ETC2 as signed) ASC, ETC1 ASC ,NAME ASC"
#define MYQUERY "SELECT NAME, IP, PORT, TYPE, MONITOR_YN from (SELECT NAME, IP, PORT, TYPE, MONITOR_YN FROM t_rms_rc_server_index WHERE DELETED_YN = 'N' AND rcid != 'TIME' ORDER BY cast(ETC2 as signed) ASC, ETC1 ASC ,NAME ASC) a UNION ALL SELECT NAME, IP, PORT, TYPE, MONITOR_YN FROM t_rms_rc_server_index WHERE DELETED_YN = 'N' AND rcid = 'TIME'"
enum eServType
{
SERV_WWW = 0,
SERV_FHS = 1,
SERV_RC = 2,
SERV_DB = 3
};
extern const char a_ServType[NumOfServerType][MaxSizeOfServerType];
#define MAX_IP_STRING 17
struct common_message_header {
char szTransactionID[MaxSizeOfTID];
unsigned long ulMode;
char szIssuer[MaxSizeOfIssuer];
char szServiceID[MaxSizeOfSID];
unsigned long ulResult;
unsigned long ulBodyLength;
};
#define MaxSizeOfCMH (sizeof(struct common_message_header))
struct local_message_header {
char szTransactionID[MaxSizeOfTID];
unsigned long ulMode;
char szIssuer[MaxSizeOfIssuer];
char szServiceID[MaxSizeOfSID];
char szRCID[MaxSizeOfRCID];
unsigned long ulResult;
unsigned long ulBodyLength;
};
#define MaxSizeOfLMH (sizeof(struct local_message_header))
#define CODE_ESC 0x1b
#define DOMAIN_SIZE 512
#define HOSTNAME_SIZE 64
struct disk_usage {
/* Original Message */
char domain[DOMAIN_SIZE];
unsigned long long total;
unsigned long long free;
/* Additional : 2006.11.08 by Elenoa */
/* if manually upload enable/disable */
int manual_disable;
int upload_level;
/* disk stat: backlog and use percentage */
int disk_backlog;
int disk_percent;
/* connection stat: established connection and others all */
int connection_established;
int connection_total;
/* traffic stat: in and out traffic info (packet, byte) */
unsigned long traffic_ip;
unsigned long traffic_ib;
unsigned long traffic_op;
unsigned long traffic_ob;
char hostname[HOSTNAME_SIZE];
};
struct svr_status {
time_t stamp;
struct disk_usage du;
};
#define AuthPrime 137897
typedef struct _s_time_sync_t {
long sync_info;
} time_sync_t;
typedef struct _ServInfo_e
{;
char m_pszServName[MAX_SRV_NAME];
char m_szIpString[MAX_IP_STRING];
short m_sPort;
time_t m_StatChgTime;
unsigned int m_Status;
unsigned int m_ServType;
unsigned int m_DeadCount;
char m_pszDomainName[MAX_DOMAIN_NAME];
char m_monitorYN[2];
struct svr_status ss;
struct _ServInfo_e *next;
} servinfo_t;
typedef struct _RCAcct_e
{
char * m_pszServiceName;
char * m_pszUserName;
char * m_pszPassword;
char * m_pszAuthkey;
char * m_pszCertLocation;
struct _RCAcct_e *next;
} rcacct_t;
/* Global Shared Memory Address */
typedef struct _g_shm_addr
{
unsigned int is_dirty;
unsigned int serv_num;
unsigned int thread_number[1024];
} g_shm_t;
typedef struct _rcmng_common_header
{
char rcmng_rcid[MAX_MNG_RCID];
char rcmng_servName[MAX_SRV_NAME];
unsigned int rcmng_serviceType;
unsigned long bodylength;
} rcmng_cheader_t;
typedef struct _CellInfo
{
char m_strCellPhone[24];
} cellinfo_t;
/* Definition of Message Mode */
#define MSG_MODE_VRCD_STATUSD_RTS_STATUS 0x0a01
/* Open Service and Subroot Create */
#define MSG_MODE_SMS_CCSYNC_OPEN_SERVICE 0x0001
#define MSG_MODE_CCSYNC_RCSYNC_DATA_INPUT 0x0002
#define MSG_MODE_RCSYNC_CCSYNC_DATA_INPUT_RESP 0x0003
#define MSG_MODE_RCSYNC_RCTRAN_SUBROOT_CREATE 0x0004
#define MSG_MODE_RCTRAN_VMA_SUBROOT_CREATE 0x0005
#define MSG_MODE_RCTRAN_RCSYNC_SUBROOT_CREATE_RESP 0x0006
#define MSG_MODE_RCSYNC_CCSYNC_DATA_INPUT_FAIL 0x0007
#define MSG_MODE_VMA_RCTRAN_SUBROOT_CREATE_RESP 0x0008
/* SP-Console Process : Receive Server List */
#define MSG_MODE_SPCONS_CCTRAN_SERVER_LIST 0x0010
#define MSG_MODE_CCTRAN_SPCONS_SERVER_LIST_RESP 0x0011
/* SP-Console Process : Receive Volume Size */
#define MSG_MODE_SPCONS_RCTRAN_VOLUME_SIZE 0x0012
#define MSG_MODE_RCTRAN_SPCONS_VOLUME_SIZE_RESP 0x0013
/* SP-Console Process : Set/Unset Anonymous Directory */
#define MSG_MODE_SPCONS_RCTRAN_SET_ANONY 0x0014
#define MSG_MODE_RCTRAN_APACHE_SET_ANONY 0x0015
#define MSG_MODE_RCTRAN_SPCONS_SET_ANONY_RESP 0x0016
#define MSG_MODE_APACHE_RCTRAN_SET_ANONY_RESP 0x0017
#define MSG_MODE_SPCONS_RCTRAN_UNSET_ANONY 0x0018
#define MSG_MODE_RCTRAN_APACHE_UNSET_ANONY 0x0019
#define MSG_MODE_RCTRAN_SPCONS_UNSET_ANONY_RESP 0x001a
#define MSG_MODE_APACHE_RCTRAN_UNSET_ANONY_RESP 0x001b
/* SP-Console Process : Bandwidth Level */
#define MSG_MODE_SPCONS_RCTRAN_SET_BCLEVEL 0x001c
#define MSG_MODE_RCTRAN_APACHE_SET_BCLEVEL 0x001d
#define MSG_MODE_RCTRAN_SPCONS_SET_BCLEVEL_RESP 0x001e
#define MSG_MODE_APACHE_RCTRAN_SET_BCLEVEL_RESP 0x001f
/* Volume Manager Agent Process : Statistcs and Disksize broadcast */
#define MSG_MODE_VMA_APACHE_DISKSIZE 0x0100
#define MSG_MODE_APACHE_VMA_DISKSIZE_RESP 0x0101
#define MSG_MODE_GVA_VMA_STG_STAT_REQ 0x0102
#define MSG_MODE_VMA_GVA_STG_STAT_RESP 0x0103
/* Network Statistics */
#define MSG_MODE_STATCOL_APACHE_NETSTAT_REQ 0x0104
#define MSG_MODE_APACHE_STATCOL_NETSTAT_RESP 0x0105
#define MSG_MODE_STATCOL_STATDEM_NETSTAT 0x0106
#define MSG_MODE_STATDEM_STATCOL_NETSTAT_RESP 0x0107
/* Statistics Service */
#define MSG_MODE_OPENDAV_RCSTAT_NETSTAT 0x0110
#define MSG_MODE_RCSTAT_OPENDAV_NETSTAT_RESP 0x0111
#define MSG_MODE_RCSTAT_CCSTAT_NETSTAT 0x0112
#define MSG_MODE_CCSTAT_RCSTAT_NETSTAT_RESP 0x0113
#define MSG_MODE_RCSTAT_CCSTAT_STGSTAT 0x0114
#define MSG_MODE_CCSTAT_RCSTAT_STGSTAT_RESP 0x0115
#endif
+136
View File
@@ -0,0 +1,136 @@
/****************************************************************************
od_statusd : Application status monitoring daemon for OpenDisk service
CopyRight(C) 2005 SolutionBox Inc. All Rights reserved.
Author : Sean Kim (sean@0x31.com)
$Id: serv_conf.h,v 1.7 2007/02/20 04:31:12 mirshead Exp $
Redistribution and use in source and binary forms, with or with out
modification, are not permitted in outside of SolutionBox Inc.
****************************************************************************/
#ifndef __SERV_CONF_H__
#define __SERV_CONF_H__
#include <iostream>
#include <list>
#include <string>
#include <mm.h>
#include "util.h"
#include "rconfig.h"
#include "address.h"
#include "protocol.h"
using namespace std;
using namespace SDSocket;
#define NumOfServerType 10
#define MaxSizeOfServerName 32
#define MaxSizeOfServerAddr 16
#define MaxSizeOfServerPort 8
#define MaxSizeOfServerType 24
#define MaxSizeOfRCAcctName 32
#define MaxSizeOfRCAcctUser 32
#define MaxSizeOfRCAcctPassword 32
#define MaxSizeOfRCAcctCert 128
#define MaxSizeOfRCAcctAuthkey 128
#define CONFIG_SERV "SERV"
#define CONFIG_RCACCT "RCACCT"
enum eServType
{
SERV_WWW = 0,
SERV_FHS = 1,
SERV_RC = 2,
SERV_DB = 3
};
const char a_ServType[NumOfServerType][MaxSizeOfServerType]
= {"www", "rts", "rc", "ccdb", "rcts", "gts", "rcdb", "gms", "timed", "stat"};
#define MAX_IP_STRING 17
typedef struct _ServInfo_e
{
char * m_pszServName;
char m_szIpString[MAX_IP_STRING];
short m_sPort;
//Address m_Address;
time_t m_StatChgTime;
unsigned int m_Status;
unsigned int m_ServType;
unsigned int m_DeadCount;
char * m_pszDomainName;
struct svr_status ss;
struct _ServInfo_e *next;
} servinfo_t;
typedef struct _RCAcct_e
{
char * m_pszServiceName;
char * m_pszUserName;
char * m_pszPassword;
char * m_pszAuthkey;
char * m_pszCertLocation;
struct _RCAcct_e *next;
} rcacct_t;
typedef struct _CellInfo
{
string m_strCellPhone;
} cellinfo_t;
class CLoadServConfig : public Config
{
public:
enum eStatus
{
ALIVE = 1,
DEAD = 2
};
CLoadServConfig() throw();
virtual int GetValue(const char *pzKey, char *pszValue);
int LoadServConfig(const char *pszFileName);
void clearLoadCount(void) { m_Counter = 0; }
int getServerCount(void) { return m_ServerCounter; }
int getRCAcctCount(void) { return m_RCAcctCounter; }
int GetServerValue(servinfo_t *pServInfo);
int GetRCAcctValue(rcacct_t *pRCAcctInfo);
int GetCellphoneValue(cellinfo_t *pCellInfo);
servinfo_t *getList(void) throw() { return m_pServerList; }
void addServerToList(servinfo_t newServInfo) throw();
void addRCToList(rcacct_t newAcctInfo) throw();
rcacct_t *RCAcctFind(char *name);
void addCellphoneToList(cellinfo_t newCellphoneInfo) throw();
void InsertServKeyValue(const char *pszKey, const char *pzValue);
int UpdateStatus(unsigned int _ServType, eStatus _Status, char *servname);
int IncreaseDeadCount(unsigned int _ServType, char *servname);
void DumpStatusString(string &strStatus) throw();
void DumpPrintAll(void) throw();
char *getMemory(int size) throw();
void releaseMemory(char *ptr) throw();
private:
unsigned int m_RCAcctCounter;
unsigned int m_ServerCounter;
unsigned int m_Counter;
//std::list<servinfo_t> m_ServerList;
servinfo_t *m_pServerList;
rcacct_t *m_pRCAcctList;
std::list<cellinfo_t> m_CellInfo;
static Semaphore threadsLock;
MM *m_pShm;
};
#endif
+385
View File
@@ -0,0 +1,385 @@
/* include unph */
/* Our own header. Tabs are set for 4 spaces, not 8 */
#ifndef __unp_h
#define __unp_h
#include <sys/types.h> /* basic system data types */
#include <sys/socket.h> /* basic socket definitions */
#include <sys/time.h> /* timeval{} for select() */
#include <time.h> /* timespec{} for pselect() */
#include <sys/time.h> /* includes <time.h> unsafely */
#include <netinet/in.h> /* sockaddr_in{} and other Internet defns */
#include <arpa/inet.h> /* inet(3) functions */
#include <errno.h>
#include <fcntl.h> /* for nonblocking */
#include <netdb.h>
#include <signal.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/stat.h> /* for S_xxx file mode constants */
#include <sys/uio.h> /* for iovec{} and readv/writev */
#include <unistd.h>
#include <sys/wait.h>
#include <sys/un.h> /* for Unix domain sockets */
#include <sys/sem.h>
#include <sys/ipc.h>
#include <semaphore.h>
# include <sys/select.h> /* for convenience */
# include <sys/param.h> /* OpenBSD prereq for sysctl.h */
# include <sys/sysctl.h>
# include <poll.h> /* for convenience */
//# include <sys/event.h> /* for kqueue */
# include <strings.h> /* for convenience */
/* Three headers are normally needed for socket/file ioctl's:
* <sys/ioctl.h>, <sys/filio.h>, and <sys/sockio.h>.
*/
# include <sys/ioctl.h>
//# include <sys/filio.h>
//# include <sys/sockio.h>
# include <pthread.h>
//# include <net/if_dl.h>
#ifndef __PROTOCOL_H__
#include "protocol.h"
#endif
#ifndef __GLOBAL_H__
#include "global.h"
#endif
#ifndef __PRE_THREAD_MODEL_H__
#include "pre_thread_model.h"
#endif
#include <mysql.h>
#include <libpq-fe.h>
/* OSF/1 actually disables recv() and send() in <sys/socket.h> */
#ifdef __osf__
#undef recv
#undef send
#define recv(a,b,c,d) recvfrom(a,b,c,d,0,0)
#define send(a,b,c,d) sendto(a,b,c,d,0,0)
#endif
#ifndef INADDR_NONE
/* $$.Ic INADDR_NONE$$ */
#define INADDR_NONE 0xffffffff /* should have been in <netinet/in.h> */
#endif
#ifndef SHUT_RD /* these three POSIX names are new */
#define SHUT_RD 0 /* shutdown for reading */
#define SHUT_WR 1 /* shutdown for writing */
#define SHUT_RDWR 2 /* shutdown for reading and writing */
/* $$.Ic SHUT_RD$$ */
/* $$.Ic SHUT_WR$$ */
/* $$.Ic SHUT_RDWR$$ */
#endif
/* *INDENT-OFF* */
#ifndef INET_ADDRSTRLEN
/* $$.Ic INET_ADDRSTRLEN$$ */
#define INET_ADDRSTRLEN 16 /* "ddd.ddd.ddd.ddd\0"
1234567890123456 */
#endif
/* Define following even if IPv6 not supported, so we can always allocate
an adequately sized buffer without #ifdefs in the code. */
#ifndef INET6_ADDRSTRLEN
/* $$.Ic INET6_ADDRSTRLEN$$ */
#define INET6_ADDRSTRLEN 46 /* max size of IPv6 address string:
"xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx" or
"xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:ddd.ddd.ddd.ddd\0"
1234567890123456789012345678901234567890123456 */
#endif
/* *INDENT-ON* */
/* Define bzero() as a macro if it's not in standard C library. */
#define bzero(ptr,n) memset(ptr, 0, n)
/* $$.If bzero$$ */
/* $$.If memset$$ */
/* Older resolvers do not have gethostbyname2() */
#define gethostbyname2(host,family) gethostbyname((host))
/* The structure returned by recvfrom_flags() */
struct unp_in_pktinfo {
struct in_addr ipi_addr; /* dst IPv4 address */
int ipi_ifindex;/* received interface index */
};
/* $$.It unp_in_pktinfo$$ */
/* $$.Ib ipi_addr$$ */
/* $$.Ib ipi_ifindex$$ */
/* We need the newer CMSG_LEN() and CMSG_SPACE() macros, but few
implementations support them today. These two macros really need
an ALIGN() macro, but each implementation does this differently. */
#ifndef CMSG_LEN
/* $$.Im CMSG_LEN$$ */
#define CMSG_LEN(size) (sizeof(struct cmsghdr) + (size))
#endif
#ifndef CMSG_SPACE
/* $$.Im CMSG_SPACE$$ */
#define CMSG_SPACE(size) (sizeof(struct cmsghdr) + (size))
#endif
/* POSIX requires the SUN_LEN() macro, but not all implementations DefinE
it (yet). Note that this 4.4BSD macro works regardless whether there is
a length field or not. */
#ifndef SUN_LEN
/* $$.Im SUN_LEN$$ */
# define SUN_LEN(su) \
(sizeof(*(su)) - sizeof((su)->sun_path) + strlen((su)->sun_path))
#endif
/* POSIX renames "Unix domain" as "local IPC."
Not all systems DefinE AF_LOCAL and PF_LOCAL (yet). */
#ifndef AF_LOCAL
#define AF_LOCAL AF_UNIX
#endif
#ifndef PF_LOCAL
#define PF_LOCAL PF_UNIX
#endif
/* POSIX requires that an #include of <poll.h> DefinE INFTIM, but many
systems still DefinE it in <sys/stropts.h>. We don't want to include
all the STREAMS stuff if it's not needed, so we just DefinE INFTIM here.
This is the standard value, but there's no guarantee it is -1. */
#ifndef INFTIM
#define INFTIM (-1) /* infinite poll timeout */
/* $$.Ic INFTIM$$ */
#define INFTIM_UNPH /* tell unpxti.h we defined it */
#endif
/* Following could be derived from SOMAXCONN in <sys/socket.h>, but many
kernels still #define it as 5, while actually supporting many more */
#define LISTENQ 1024 /* 2nd argument to listen() */
/* Miscellaneous constants */
#define MAXLINE 4096 /* max text line length */
#define BUFFSIZE 8192 /* buffer size for reads and writes */
/* Define some port number that can be used for our examples */
#define SERV_PORT 9877 /* TCP and UDP */
#define SERV_PORT_STR "9877" /* TCP and UDP */
#define UNIXSTR_PATH "/tmp/unix.str" /* Unix domain stream */
#define UNIXDG_PATH "/tmp/unix.dg" /* Unix domain datagram */
/* $$.ix [LISTENQ]~constant,~definition~of$$ */
/* $$.ix [MAXLINE]~constant,~definition~of$$ */
/* $$.ix [BUFFSIZE]~constant,~definition~of$$ */
/* $$.ix [SERV_PORT]~constant,~definition~of$$ */
/* $$.ix [UNIXSTR_PATH]~constant,~definition~of$$ */
/* $$.ix [UNIXDG_PATH]~constant,~definition~of$$ */
/* Following shortens all the typecasts of pointer arguments: */
#define SA struct sockaddr
#define FILE_MODE (S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH)
/* default file access permissions for new files */
#define DIR_MODE (FILE_MODE | S_IXUSR | S_IXGRP | S_IXOTH)
/* default permissions for new directories */
typedef void Sigfunc(int); /* for signal handlers */
#define min(a,b) ((a) < (b) ? (a) : (b))
#define max(a,b) ((a) > (b) ? (a) : (b))
/* end unph */
/* prototypes for our own library functions */
int connect_nonb(int, const SA *, socklen_t, int);
int connect_timeo(int, const SA *, socklen_t, int);
int daemon_init(const char *, int);
void daemon_inetd(const char *, int);
void dg_cli(FILE *, int, const SA *, socklen_t);
void dg_echo(int, SA *, socklen_t);
int family_to_level(int);
char *gf_time(void);
void heartbeat_cli(int, int, int);
void heartbeat_serv(int, int, int);
struct addrinfo *host_serv(const char *, const char *, int, int);
int inet_srcrt_add(char *);
u_char *inet_srcrt_init(int);
void inet_srcrt_print(u_char *, int);
void inet6_srcrt_print(void *);
char **my_addrs(int *);
int readable_timeo(int, int);
ssize_t readline(int, void *, size_t);
ssize_t readn(int, void *, size_t);
ssize_t read_fd(int, void *, size_t, int *);
ssize_t recvfrom_flags(int, void *, size_t, int *, SA *, socklen_t *,
struct unp_in_pktinfo *);
Sigfunc *signal_intr(int, Sigfunc *);
int sock_bind_wild(int, int);
int sock_cmp_addr(const SA *, const SA *, socklen_t);
int sock_cmp_port(const SA *, const SA *, socklen_t);
int sock_get_port(const SA *, socklen_t);
void sock_set_addr(SA *, socklen_t, const void *);
void sock_set_port(SA *, socklen_t, int);
void sock_set_wild(SA *, socklen_t);
char *sock_ntop(const SA *, socklen_t);
char *sock_ntop_host(const SA *, socklen_t);
int sockfd_to_family(int);
void str_echo(int);
void str_cli(FILE *, int);
int tcp_connect(const char *, const char *);
int tcp_listen(const char *, const char *, socklen_t *);
void tv_sub(struct timeval *, struct timeval *);
int udp_client(const char *, const char *, SA **, socklen_t *);
int udp_connect(const char *, const char *);
int udp_server(const char *, const char *, socklen_t *);
int writable_timeo(int, int);
ssize_t writen(int, const void *, size_t);
ssize_t write_fd(int, void *, size_t, int);
uint16_t in_cksum(uint16_t *, int);
/* prototypes for our own library wrapper functions */
void Connect_timeo(int, const SA *, socklen_t, int);
int Family_to_level(int);
struct addrinfo *Host_serv(const char *, const char *, int, int);
const char *Inet_ntop(int, const void *, char *, size_t);
void Inet_pton(int, const char *, void *);
char *If_indextoname(unsigned int, char *);
unsigned int If_nametoindex(const char *);
struct if_nameindex *If_nameindex(void);
char **My_addrs(int *);
ssize_t Read_fd(int, void *, size_t, int *);
int Readable_timeo(int, int);
ssize_t Recvfrom_flags(int, void *, size_t, int *, SA *, socklen_t *,
struct unp_in_pktinfo *);
Sigfunc *Signal(int, Sigfunc *);
Sigfunc *Signal_intr(int, Sigfunc *);
int Sock_bind_wild(int, int);
char *Sock_ntop(const SA *, socklen_t);
char *Sock_ntop_host(const SA *, socklen_t);
int Sockfd_to_family(int);
int Tcp_connect(const char *, const char *);
int Tcp_listen(const char *, const char *, socklen_t *);
int Udp_client(const char *, const char *, SA **, socklen_t *);
int Udp_connect(const char *, const char *);
int Udp_server(const char *, const char *, socklen_t *);
ssize_t Write_fd(int, void *, size_t, int);
int Writable_timeo(int, int);
/* prototypes for our Unix wrapper functions: see {Sec errors} */
void *Calloc(size_t, size_t);
void Close(int);
void Dup2(int, int);
int Fcntl(int, int, int);
void Gettimeofday(struct timeval *, void *);
int Ioctl(int, int, void *);
pid_t Fork(void);
void *Malloc(size_t);
int Mkstemp(char *);
void *Mmap(void *, size_t, int, int, int, off_t);
int Open(const char *, int, mode_t);
void Pipe(int *fds);
ssize_t Read(int, void *, size_t);
void Sigaddset(sigset_t *, int);
void Sigdelset(sigset_t *, int);
void Sigemptyset(sigset_t *);
void Sigfillset(sigset_t *);
int Sigismember(const sigset_t *, int);
void Sigpending(sigset_t *);
void Sigprocmask(int, const sigset_t *, sigset_t *);
char *Strdup(const char *);
long Sysconf(int);
void Sysctl(int *, u_int, void *, size_t *, void *, size_t);
void Unlink(const char *);
pid_t Wait(int *);
pid_t Waitpid(pid_t, int *, int);
void Write(int, void *, size_t);
/* prototypes for our stdio wrapper functions: see {Sec errors} */
void Fclose(FILE *);
FILE *Fdopen(int, const char *);
char *Fgets(char *, int, FILE *);
FILE *Fopen(const char *, const char *);
void Fputs(const char *, FILE *);
/* prototypes for our socket wrapper functions: see {Sec errors} */
int Accept(int, SA *, socklen_t *);
void Bind(int, const SA *, socklen_t);
void Connect(int, const SA *, socklen_t);
void Getpeername(int, SA *, socklen_t *);
void Getsockname(int, SA *, socklen_t *);
void Getsockopt(int, int, int, void *, socklen_t *);
void Listen(int, int);
ssize_t Readline(int, void *, size_t);
ssize_t Readn(int, void *, size_t);
ssize_t Recv(int, void *, size_t, int);
ssize_t Recvfrom(int, void *, size_t, int, SA *, socklen_t *);
ssize_t Recvmsg(int, struct msghdr *, int);
int Select(int, fd_set *, fd_set *, fd_set *, struct timeval *);
void Send(int, const void *, size_t, int);
void Sendto(int, const void *, size_t, int, const SA *, socklen_t);
void Sendmsg(int, const struct msghdr *, int);
void Setsockopt(int, int, int, const void *, socklen_t);
void Shutdown(int, int);
int Sockatmark(int);
int Socket(int, int, int);
void Socketpair(int, int, int, int *);
void Writen(int, void *, size_t);
int ConnectWait(int, struct sockaddr *, int, int);
void err_dump(const char *, ...);
void err_msg(const char *, ...);
void err_quit(const char *, ...);
void err_ret(const char *, ...);
void err_sys(const char *, ...);
/* Read configuration func */
extern int GetProfileInt(char *part, char *spart, int dval);
extern char *GetProfile(char *part, char *spart, char *rval, char *dval );
extern int SetIniName(char * buf);
/* roolu util func */
int devide(char **val, char *str, char delim);
char * timeToString(struct tm *);
char *makeLogString();
void WriteSHLog(char *, ...);
void WriteSHLog_safe(char *, ...);
/* new status inner func */
void addServerToList(servinfo_t *, MYSQL_ROW);
void vrcd_thread_make(int);
void report_thread_make(int);
void chk_rtime_update_serv_status();
int rcacctFind(char **, char *);
void processing_server_status(int, int, servinfo_t *);
void UpdateStatus(unsigned int, unsigned int, char *);
int timedCheck(char *, int, int);
int socket_open_with_timeout(int, servinfo_t *);
void HandleTimeOut(int);
int increaseDeadCount(unsigned int, char *);
void * report_thread_update_main(void *);
int update_report_func();
void update_server_list(servinfo_t *, servinfo_t *);
void * report_thread_send_main(void *);
void * vrcd_thread_main(void *);
void updateShm(struct svr_status *, int, int);
char *make_status_string(int *);
int get_sizeof_shm();
void SendToWebServ(const char *, char *);
void view_header_packet(struct common_message_header *);
void view_serv_status_packet(struct svr_status *);
void view_rcmng_header_packet(rcmng_cheader_t *);
void view_servinfo_t_packet(servinfo_t *);
servinfo_t *get_shm_start_pointer();
servinfo_t *get_shm_start_pointer_readonly();
void makedaemon(int);
void SafeProcessRunSpinWait(void);
#endif /* __unp_h */
+353
View File
@@ -0,0 +1,353 @@
/* include unpipch */
/* Our own header. Tabs are set for 4 spaces, not 8 */
#ifndef __unpipc_h
#define __unpipc_h
/* Devices */
#define HAVE_DEV_ZERO 1
/* #undef POSIX_IPC_PREFIX */
#define RPCGEN_ANSIC 1 /* defined if rpcgen groks -C option */
/* *INDENT-ON* */
#include <sys/types.h> /* basic system data types */
#include <sys/time.h> /* timeval{} for select() */
#include <time.h> /* timespec{} for pselect() */
#include <errno.h>
#include <fcntl.h> /* for nonblocking */
#include <limits.h> /* PIPE_BUF */
#include <signal.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/stat.h> /* for S_xxx file mode constants */
#include <unistd.h>
#include <sys/wait.h>
# include <semaphore.h> /* Posix semaphores */
# include <sys/mman.h> /* Posix shared memory */
# include <sys/ipc.h> /* System V IPC */
# include <sys/msg.h> /* System V message queues */
#ifdef __bsdi__
#undef HAVE_SYS_SEM_H /* hack: BSDI's semctl() prototype is wrong */
#endif
#include <sys/sem.h> /* System V semaphores */
# include <sys/shm.h> /* System V shared memory */
# include <sys/select.h> /* for convenience */
# include <poll.h> /* for convenience */
# include <strings.h> /* for convenience */
/* Next three headers are normally needed for socket/file ioctl's:
* <sys/ioctl.h>, <sys/filio.h>, and <sys/sockio.h>.
*/
# include <sys/ioctl.h>
//# include <sys/filio.h>
# include <pthread.h>
#ifdef _PSX4_NSPACE_H_TS /* Digital Unix 4.0b hack, hack, hack */
#undef SUCCESS
#endif
# include <rpc/rpc.h> /* Sun RPC */
/* Define bzero() as a macro if it's not in standard C library. */
#define bzero(ptr,n) memset(ptr, 0, n)
#ifndef SHM_NAME
//#define SHM_NAME "/user/service/shmmem/sh_statusd_mem" // FreeBSD
#define SHM_NAME "new_sh_statusd_shmem" // Linux
#endif
#ifndef SEM_NAME
//#define SEM_NAME "/tmp/sh_sem" // FreeBSD
#define SEM_NAME "new_sh_statusd_sem" // Linux
#endif
#ifndef GLOBAL_SHM_POINT
#define GLOBAL_SHM_POINT "sh_global_point"
#endif
/* Posix.1g requires that an #include of <poll.h> DefinE INFTIM, but many
systems still DefinE it in <sys/stropts.h>. We don't want to include
all the streams stuff if it's not needed, so we just DefinE INFTIM here.
This is the standard value, but there's no guarantee it is -1. */
#ifndef INFTIM
#define INFTIM (-1) /* infinite poll timeout */
#ifdef HAVE_POLL_H
#define INFTIM_UNPH /* tell unpxti.h we defined it */
#endif
#endif
/* Miscellaneous constants */
#ifndef PATH_MAX /* should be in <limits.h> */
#define PATH_MAX 1024 /* max # of characters in a pathname */
#endif
#define MAX_PATH 1024
/* $$.ix [MAX_PATH]~constant,~definition~of$$ */
#define MAXLINE 4096 /* max text line length */
/* $$.ix [MAXLINE]~constant,~definition~of$$ */
/* $$.ix [BUFFSIZE]~constant,~definition~of$$ */
#define BUFFSIZE 8192 /* buffer size for reads and writes */
#define FILE_MODE (S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH)
/* default permissions for new files */
/* $$.ix [FILE_MODE]~constant,~definition~of$$ */
#define DIR_MODE (FILE_MODE | S_IXUSR | S_IXGRP | S_IXOTH)
/* default permissions for new directories */
/* $$.ix [DIR_MODE]~constant,~definition~of$$ */
#define SVMSG_MODE (MSG_R | MSG_W | MSG_R>>3 | MSG_R>>6)
/* default permissions for new SV message queues */
/* $$.ix [SVMSG_MODE]~constant,~definition~of$$ */
#define SEM_A 0200 /* alter permission */
#define SEM_R 0400 /* read permission */
#define SVSEM_MODE (SEM_R | SEM_A | SEM_R>>3 | SEM_R>>6)
/* default permissions for new SV semaphores */
/* $$.ix [SVSEM_MODE]~constant,~definition~of$$ */
#define SVSHM_MODE (SHM_R | SHM_W | SHM_R>>3 | SHM_R>>6)
/* default permissions for new SV shared memory */
/* $$.ix [SVSHM_MODE]~constant,~definition~of$$ */
typedef void Sigfunc_rt(int, siginfo_t *, void *);
#define min(a,b) ((a) < (b) ? (a) : (b))
#define max(a,b) ((a) > (b) ? (a) : (b))
/*
* In our wrappers for open(), mq_open(), and sem_open() we handle the
* optional arguments using the va_XXX() macros. But one of the optional
* arguments is of type "mode_t" and this breaks under BSD/OS because it
* uses a 16-bit integer for this datatype. But when our wrapper function
* is called, the compiler expands the 16-bit short integer to a 32-bit
* integer. This breaks our call to va_arg(). All we can do is the
* following hack. Other systems in addition to BSD/OS might have this
* problem too ...
*/
#ifdef __bsdi__
#define va_mode_t int
#else
#define va_mode_t mode_t
#endif
/* $$.ix [va_mode_t]~datatype,~definition~of$$ */
/* our record locking macros */
#define read_lock(fd, offset, whence, len) \
lock_reg(fd, F_SETLK, F_RDLCK, offset, whence, len)
#define readw_lock(fd, offset, whence, len) \
lock_reg(fd, F_SETLKW, F_RDLCK, offset, whence, len)
#define write_lock(fd, offset, whence, len) \
lock_reg(fd, F_SETLK, F_WRLCK, offset, whence, len)
#define writew_lock(fd, offset, whence, len) \
lock_reg(fd, F_SETLKW, F_WRLCK, offset, whence, len)
#define un_lock(fd, offset, whence, len) \
lock_reg(fd, F_SETLK, F_UNLCK, offset, whence, len)
#define is_read_lockable(fd, offset, whence, len) \
lock_test(fd, F_RDLCK, offset, whence, len)
#define is_write_lockable(fd, offset, whence, len) \
lock_test(fd, F_WRLCK, offset, whence, len)
/* end unpipch */
#define Read_lock(fd, offset, whence, len) \
Lock_reg(fd, F_SETLK, F_RDLCK, offset, whence, len)
#define Readw_lock(fd, offset, whence, len) \
Lock_reg(fd, F_SETLKW, F_RDLCK, offset, whence, len)
#define Write_lock(fd, offset, whence, len) \
Lock_reg(fd, F_SETLK, F_WRLCK, offset, whence, len)
#define Writew_lock(fd, offset, whence, len) \
Lock_reg(fd, F_SETLKW, F_WRLCK, offset, whence, len)
#define Un_lock(fd, offset, whence, len) \
Lock_reg(fd, F_SETLK, F_UNLCK, offset, whence, len)
#define Is_read_lockable(fd, offset, whence, len) \
Lock_test(fd, F_RDLCK, offset, whence, len)
#define Is_write_lockable(fd, offset, whence, len) \
Lock_test(fd, F_WRLCK, offset, whence, len)
/* prototypes for our own library functions */
char *gf_time(void);
int lock_reg(int, int, int, off_t, int, off_t);
pid_t lock_test(int, int, off_t, int, off_t);
void *my_shm(size_t);
char *px_ipc_name(const char *);
int readable_timeo(int, int);
ssize_t readline(int, void *, size_t);
ssize_t readn(int, void *, size_t);
int set_concurrency(int);
Sigfunc *signal_intr(int, Sigfunc *);
int sleep_us(unsigned int);
int start_time(void);
double stop_time(void);
int touch(void *, int);
void tv_sub(struct timeval *, struct timeval *);
int writable_timeo(int, int);
ssize_t writen(int, const void *, size_t);
int isfdtype(int, int);
/* prototypes for our own library wrapper functions */
char *Gf_time(void);
void Lock_reg(int, int, int, off_t, int, off_t);
pid_t Lock_test(int, int, off_t, int, off_t);
void *My_shm(size_t);
char *Px_ipc_name(const char *);
int Readable_timeo(int, int);
ssize_t Readline(int, void *, size_t);
ssize_t Readn(int, void *, size_t);
void Set_concurrency(int);
Sigfunc *Signal(int, Sigfunc *);
Sigfunc *Signal_intr(int, Sigfunc *);
Sigfunc_rt *Signal_rt(int, Sigfunc_rt *);
Sigfunc_rt *Signal_rt_intr(int, Sigfunc_rt *);
void Sleep_us(unsigned int);
void Start_time(void);
double Stop_time(void);
void Touch(void *, int);
int Writable_timeo(int, int);
void Writen(int, void *, size_t);
/* prototypes for our Unix wrapper functions */
void *Calloc(size_t, size_t);
void Close(int);
void Dup2(int, int);
//int Fcntl(int, int, void *);
pid_t Fork(void);
long Fpathconf(int, int);
void Fstat(int, struct stat *);
key_t Ftok(const char *, int);
void Ftruncate(int, off_t);
int Getopt(int, char *const *, const char *);
void Gettimeofday(struct timeval *, void *);
int Ioctl(int, int, void *);
void Kill(pid_t, int);
off_t Lseek(int, off_t, int);
void *Malloc(size_t);
void Mkfifo(const char *, mode_t);
void Mktemp(char *);
void *Mmap(void *, size_t, int, int, int, off_t);
void Munmap(void *, size_t);
//int Open(const char *, int, ...);
long Pathconf(const char *, int);
void Pipe(int *fds);
ssize_t Read(int, void *, size_t);
int Select(int, fd_set *, fd_set *, fd_set *, struct timeval *);
void Sigaddset(sigset_t *, int);
void Sigdelset(sigset_t *, int);
void Sigemptyset(sigset_t *);
void Sigfillset(sigset_t *);
int Sigismember(const sigset_t *, int);
void Sigpending(sigset_t *);
void Sigprocmask(int, const sigset_t *, sigset_t *);
void Sigqueue(pid_t, int, const union sigval);
void Sigwait(const sigset_t *, int *);
void Stat(const char *, struct stat *);
char *Strdup(const char *);
long Sysconf(int);
void Sysctl(int *, u_int, void *, size_t *, void *, size_t);
void Unlink(const char *);
void *Valloc(size_t);
pid_t Wait(int *);
pid_t Waitpid(pid_t, int *, int);
void Write(int, void *, size_t);
/* 4Posix semaphores */
sem_t *Sem_open(const char *, int, ...);
void Sem_close(sem_t *);
void Sem_unlink(const char *);
void Sem_init(sem_t *, int, unsigned int);
void Sem_destroy(sem_t *);
void Sem_wait(sem_t *);
int Sem_trywait(sem_t *);
void Sem_post(sem_t *);
void Sem_getvalue(sem_t *, int *);
/* Note that <sys/mman.h> is defined on some systems that do not support
* Posix shared memory (e.g., 4.4BSD), because this header predates Posix
* and appears on any system that supports mmap(). Therefore we cannot
* use this to determine whether the implementation supports Posix shared
* memory or not. We use our own HAVE_SHM_OPEN_PROTO symbol.
*/
/* 4Posix shared memory */
int Shm_open(const char *, int, mode_t);
void Shm_unlink(const char *);
/* 4System V message queues */
int Msgget(key_t key, int flag);
void Msgctl(int, int, struct msqid_ds *);
void Msgsnd(int, const void *, size_t, int);
ssize_t Msgrcv(int, void *, size_t, int, int);
/* 4System V semaphores */
int Semget(key_t, int, int);
int Semctl(int, int, int, ...);
void Semop(int, struct sembuf *, size_t);
/* 4System V shared memory */
int Shmget(key_t, size_t, int);
void *Shmat(int, const void *, int);
void Shmdt(const void *);
void Shmctl(int, int, struct shmid_ds *);
/* prototypes for our stdio wrapper functions */
void Fclose(FILE *);
FILE *Fdopen(int, const char *);
char *Fgets(char *, int, FILE *);
FILE *Fopen(const char *, const char *);
void Fputs(const char *, FILE *);
FILE *Popen(const char *, const char *);
int Pclose(FILE *);
void Fattach(int, const char *);
int Poll(struct pollfd *, unsigned long, int);
void err_dump(const char *, ...);
void err_msg(const char *, ...);
void err_quit(const char *, ...);
void err_ret(const char *, ...);
void err_sys(const char *, ...);
/* prototypes for our pthread wrapper functions */
void Pthread_attr_init(pthread_attr_t *);
void Pthread_attr_destroy(pthread_attr_t *);
void Pthread_attr_setdetachstate(pthread_attr_t *, int);
void Pthread_attr_setscope(pthread_attr_t *, int);
void Pthread_create(pthread_t *, const pthread_attr_t *,
void * (*)(void *), void *);
void Pthread_join(pthread_t, void **);
void Pthread_detach(pthread_t);
void Pthread_kill(pthread_t, int);
void Pthread_setcancelstate(int, int *);
void Pthread_mutexattr_init(pthread_mutexattr_t *);
void Pthread_mutexattr_destroy(pthread_mutexattr_t *);
void Pthread_mutexattr_setpshared(pthread_mutexattr_t *, int);
void Pthread_mutex_init(pthread_mutex_t *, pthread_mutexattr_t *);
void Pthread_mutex_destroy(pthread_mutex_t *);
void Pthread_mutex_lock(pthread_mutex_t *);
void Pthread_mutex_unlock(pthread_mutex_t *);
void Pthread_condattr_init(pthread_condattr_t *);
void Pthread_condattr_destroy(pthread_condattr_t *);
void Pthread_condattr_setpshared(pthread_condattr_t *, int);
void Pthread_cond_broadcast(pthread_cond_t *);
void Pthread_cond_signal(pthread_cond_t *);
void Pthread_cond_wait(pthread_cond_t *, pthread_mutex_t *);
void Pthread_cond_timedwait(pthread_cond_t *, pthread_mutex_t *,
const struct timespec *);
void Pthread_key_create(pthread_key_t *, void (*)(void *));
void Pthread_setspecific(pthread_key_t, const void *);
void Pthread_once(pthread_once_t *, void (*)(void));
long pr_thread_id(pthread_t *);
CLIENT *Clnt_create(const char *, u_long, u_long, const char *);
void Clnt_control(CLIENT *, u_int, char *);
#endif /* __unpipc_h */
@@ -0,0 +1,31 @@
/* Our own header for the programs that use threads.
Include this file, instead of "unp.h". */
#ifndef __unp_pthread_h
#define __unp_pthread_h
#include "unp.h"
void Pthread_create(pthread_t *, const pthread_attr_t *,
void * (*)(void *), void *);
void Pthread_join(pthread_t, void **);
void Pthread_detach(pthread_t);
void Pthread_kill(pthread_t, int);
void Pthread_mutexattr_init(pthread_mutexattr_t *);
void Pthread_mutexattr_setpshared(pthread_mutexattr_t *, int);
void Pthread_mutex_init(pthread_mutex_t *, pthread_mutexattr_t *);
void Pthread_mutex_lock(pthread_mutex_t *);
void Pthread_mutex_unlock(pthread_mutex_t *);
void Pthread_cond_broadcast(pthread_cond_t *);
void Pthread_cond_signal(pthread_cond_t *);
void Pthread_cond_wait(pthread_cond_t *, pthread_mutex_t *);
void Pthread_cond_timedwait(pthread_cond_t *, pthread_mutex_t *,
const struct timespec *);
void Pthread_key_create(pthread_key_t *, void (*)(void *));
void Pthread_setspecific(pthread_key_t, const void *);
void Pthread_once(pthread_once_t *, void (*)(void));
#endif /* __unp_pthread_h */
+79
View File
@@ -0,0 +1,79 @@
#program name
PRGNAME = new_sh_statusd
#MNGNAME = rcmng_client
RCCHKNAME = rccheck
VSHMNAME = view_shm
INSTALLDIR = /user/service/bin
# Which Compiler
CC = gcc
CXX = g++
# Which OS
#OS = FreeBSD
OS = Linux
#library directory
LIBDIR = -L/usr/local/lib -L/usr/lib -L../lib -L/usr/lib64/mysql\
-L/user/db/pgsql/lib
INCLUDEDIR = -I/usr/local/include -I/usr/include\
-I../include -I/usr/include/mysql\
-I/user/db/pgsql/include
RCCHK_INCLUDEDIR = -I/usr/local/include -I/usr/include\
-I../include
#libraries
#LIBS = /usr/local/lib/libxml2.so
LIBS = -lpthread -lmysqlclient -lpq -lshsdk -lrt
#RCCHK_LIBS = -lexpat -lintl -lcrypt
RCCHK_LIBS = -lexpat -lmcrypt
#compile option
CFLAGS = -Wall -O -g3 -Wall -Wimplicit -Wreturn-type -Wunused -Wuninitialized
# -Wparentheses -Wshadow -Wpointer-arith -Woverloaded-virtual
#link option
LFLAGS =
#LFLAGS =
#Definition flag
#DFLAGS = -D__DEBUG__
DFLAGS = -D__SETLOG__ -D_REENTRANT
#DFLAGS = -D__SETLOG__ -D_REENTRANT -D__DEBUG__
#DFLAGS = -D__RELEASE__
#DFLAGS = -D_REENTRANT
# Source List
SRC = errfunc.c util.c wrapunix.c wrapsock.c wrappthread.c vrcd_proc.c report_proc.c check_rtime_serv.c tcp_listen.c udp_server.c sock_ntop.c signal.c main.c view_shm.c ReadConfig.c
RCCHK_SRC = rccheck.cpp util_rccheck.c
# Object List
OBJ = errfunc.o util.o wrapunix.o wrapsock.o wrappthread.o vrcd_proc.o report_proc.o check_rtime_serv.o tcp_listen.o udp_server.o sock_ntop.o signal.o main.o ReadConfig.o
RCMNG_OBJ = errfunc.o wrapunix.o wrapsock.o util.o
VSHM_OBJ = view_shm.o errfunc.o wrapunix.o
RCCHECK_OBJ = rccheck.o util_rccheck.o
all : Makefile ${OBJ} rccheck view_shm
${CC} ${CFLAGS} ${OBJ} -o ${PRGNAME} ${LIBDIR} ${LIBS} ${LFLAGS}
view_shm : ${VSHM_OBJ}
${CC} ${CFLAGS} ${VSHM_OBJ} -o ${VSHMNAME} -lrt
rccheck : ${RCCHECK_OBJ}
${CXX} ${CFLAGS} ${RCCHECK_OBJ} -o ${RCCHKNAME} ${LIBDIR} ${RCCHK_LIBS} ${LIBS}
.c.o : ${SRC}
${CC} $(CFLAGS) -c -o $@ $< ${INCLUDEDIR} ${DFLAGS}
.cpp.o : ${RCCHK_SRC}
${CXX} $(CFLAGS) -c -o $@ $< ${RCCHK_INCLUDEDIR} ${DFLAGS}
install :
cp -f $(PRGNAME) $(INSTALLDIR)
cp -f $(RCCHKNAME) $(INSTALLDIR)
cp -f $(VSHMNAME) $(INSTALLDIR)
clean :
rm -f $(OBJ) $(RCCHECK_OBJ) ${HOSTSTATOBJ} ${VSHM_OBJ} $(PRGNAME) ${RCCHKNAME} ${VSHMNAME} *.log *.pid *.core
+10
View File
@@ -0,0 +1,10 @@
if you did reboot
have to follow below step
1. ldconfig -m /user/db/mysq/lib/mysql
2. ldconfig -m /user/db/pgsql/lib
3. ldconfig -m /usr/local/raslib/lib
4. cd /sys/modules/sem
5. make
6. make load
+172
View File
@@ -0,0 +1,172 @@
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <cfgconfig.h>
char cfgname[60];
long Str2Dec(char *cpHex)
{
char cpBuf[100];
int nLen,nLoop;
long lnResult=0,lnMultiple=1;
strcpy(cpBuf,cpHex);
if(strncmp(cpBuf,"0x",2)==0)
strcpy(cpBuf,cpBuf+2);
else
return atol(cpBuf);
nLen = strlen(cpBuf);
for(nLoop=nLen-1;nLoop>=0;nLoop--)
{
if(cpBuf[nLoop]>='0'&&cpBuf[nLoop]<='9')
lnResult += ((cpBuf[nLoop]-'0')*lnMultiple);
else if(cpBuf[nLoop]>='A'&&cpBuf[nLoop]<='F')
lnResult += ((cpBuf[nLoop]-'A'+10)*lnMultiple);
else if(cpBuf[nLoop]>='a'&&cpBuf[nLoop]<='f')
lnResult += ((cpBuf[nLoop]-'A'+10)*lnMultiple);
lnMultiple *=16;
}
return lnResult;
}
char * makeToken(cpApp, cpRxt)
char *cpApp;
char *cpRxt;
{
int loop;
int in = 0;
int leng;
leng = strlen(cpApp);
for(loop=0; loop < leng; loop ++)
{
if(cpApp[loop] == '#')
{
cpRxt[0] = '\0';
return &cpApp[leng];
};
if((cpApp[loop] == ' ') || (cpApp[loop] == '\t') || (cpApp[loop] == '=') || (cpApp[loop] == '\n') )
continue;
for(loop; loop < leng; loop ++)
{
if((cpApp[loop] == ' ') || (cpApp[loop] == '\t') || (cpApp[loop] == '=') || (cpApp[loop] == '\n') )
{
cpRxt[in] ='\0';
return &cpApp[loop];
};
cpRxt[in++] = cpApp[loop];
};
};
cpRxt[in] ='\0';
return &cpApp[loop];
}
int ReadProfile(cpApp, cpKey, cpRxt)
char *cpApp;
char *cpKey;
char *cpRxt;
{
char cpBuf[MAX_BUF];
char cpTmp[MAX_BUF];
char cpAppBuf[MAX_BUF];
char *cpPtr;
FILE *fp;
sprintf(cpAppBuf,"[%s]", cpApp);
fp = fopen(cfgname, "r");
if(fp == NULL)
{
return -1;
};
if( (strlen(cpApp) < 1) || (strlen(cpKey) < 1) ) return -2;
for(;;)
{
fgets(cpBuf,MAX_BUF, fp);
if(feof(fp) )
{
fclose(fp);
return -3;
};
cpPtr = makeToken(cpBuf, cpTmp);
if(strcmp(cpTmp, cpAppBuf) == 0)
break;
};
for(;;)
{
fgets(cpBuf,MAX_BUF, fp);
if(feof(fp) )
break;
cpPtr = makeToken(cpBuf, cpTmp);
if( (cpTmp[0] == '[') && (cpTmp[strlen(cpTmp) -1] == ']') ) return -2;
if(strcmp(cpTmp, cpKey) == 0)
{
// printf("%s, %s\n", cpTmp, cpKey);
cpPtr = makeToken(cpPtr, cpRxt);
fclose(fp);
return 1;
};
};
fclose(fp);
return -4;
}
void SetIniName(name)
char *name;
{
strcpy(cfgname, name);
}
int GetProfileInt(part, spart, dval)
char *part;
char *spart;
int dval;
{
int rxt;
char buf[100];
rxt = ReadProfile(part, spart,buf);
if(rxt < 0)
return dval;
return (int) Str2Dec(buf);
}
char *GetProfile(part, spart, rval, dval )
char *part;
char *spart;
char *rval;
char *dval;
{
int rxt;
rxt = ReadProfile(part, spart,rval);
if(rxt < 0)
{
strcpy(rval, dval);
return dval;
}
return rval;
}
+14
View File
@@ -0,0 +1,14 @@
#!/bin/sh
loop=1
while [ "$loop" -le 200000 ]
do
#netstat -na | wc -lm
ps -aux | grep 'new_sh_statusd'
#ipcs -a ; sysctl vm.zone | grep PV
loop=$(($loop+1))
echo "-- "$loop
sleep 1
done
exit 0
@@ -0,0 +1,733 @@
#include "unp.h"
#include "unpipc.h"
#define PGCONN_STRING "host=%s port=%d dbname=%s user=%s password=%s"
static char hexchars[] = "0123456789ABCDEF";
void chk_rtime_update_serv_status()
{
servinfo_t *i, *servinfo_head;
time_t now, past;
g_shm_t *g_shm_ptr;
void *shared_memory = (void *)0;
char pgsql_conn_str[256];
char pgsql_query[128];
int connRes;
int hcterm = 0;
int toRead = 0;
int sendSMSTerm;
//int wget_waiting_cnt = 0;
int time_cnt = 0;
int shmid;
int first_time = 0;
//unsigned int g_CSMErrorCount = 0;
/* Load conf file */
hcterm = GetProfileInt("PARAM", "HEALTH_CHECK_TERM", 5);
sendSMSTerm = (SENDSMSTERM * 60) / hcterm;
toRead = GetProfileInt("PARAM", "TIME_OUT_READ", 5);
/* get the global SHM start pointer if system V shm's value is dirty */
shmid = shmget((key_t)6677, sizeof(g_shm_t), 0666|IPC_CREAT);
if (shmid == -1)
{
WriteSHLog_safe("system V shmget failed\n");
exit(EXIT_FAILURE);
}
shared_memory = shmat(shmid, (void *)0, 0);
if (shared_memory == (void *)-1)
{
WriteSHLog_safe("system V shmat failed\n");
exit(EXIT_FAILURE);
}
g_shm_ptr = (g_shm_t *)shared_memory;
servinfo_head = malloc(sizeof(servinfo_t));
past = now = time(NULL);
//while (g_CSMErrorCount < ALLOWED_MAX_ERROR_COUNT)
while (1)
{
if (g_shm_ptr->is_dirty == 1 || first_time == 0)
{
/***************** store SHM data to Heap *********************/
servinfo_t *start_servinfo, *servinfo_ptr, *temp_servinfo;
int shm_size = 0;
Semop(check_semid, &waitop, 1);
shm_size = get_sizeof_shm();
/* get the global SHM start pointer */
start_servinfo = servinfo_ptr = get_shm_start_pointer();
servinfo_head = realloc(servinfo_head, shm_size+sizeof(servinfo_t));
memset(servinfo_head, 0, shm_size+sizeof(servinfo_t));
temp_servinfo = (servinfo_t *)servinfo_head;
while (strcmp(servinfo_ptr->m_pszServName, END_OF_SHM))
{
if (servinfo_ptr->m_pszServName[0] == '\0')
break;
/* tmporary servinfo_t */
if (servinfo_ptr->m_Status == SERV_DEAD)
servinfo_ptr->m_Status = SERV_ALIVE;
servinfo_ptr->m_DeadCount = 0;
memcpy(temp_servinfo, servinfo_ptr, sizeof(servinfo_t));
temp_servinfo++;
servinfo_ptr++;
//setproctitle("child(check): first section running");
}
strncpy(temp_servinfo->m_pszServName, END_OF_SHM, 11);
munmap((void *)start_servinfo, shm_size);
Semop(check_semid, &postop, 1);
/*****************************************************************/
/* update list from SHM */
g_shm_ptr->is_dirty = 0;
first_time = 1;
}
for (i = servinfo_head; strcmp(i->m_pszServName, END_OF_SHM); i++)
{
if (i->m_pszServName[0] == '\0')
break;
signal(SIGCHLD, SIG_DFL);
connRes = 0;
// Check for monitor_yn
if (!strncmp(i->m_monitorYN, "N", 2))
continue;
if (i->m_ServType == 0) // RC
{
connRes = -1;
pid_t pid;
char *param[512];
int k, ret, param_num, status = 0;
if ((time_cnt % 4) != 0)
continue;
param_num = rcacctFind(param, i->m_szIpString);
#ifdef __DEBUG__
WriteSHLog_safe("RETURN RCCHECK QUERY : %s %s %s %s %s %s %s\n", "./rccheck"
, DEFAULT_LOGFILE_PATH, i->m_szIpString, param[1], param[2], param[3], param[4]);
#endif
//char rccheck_exec[1024];
//sprintf(rccheck_exec, "%s %s %s %s %s %s %s\n", "./rccheck", DEFAULT_LOGFILE_PATH, param[0], param[1], param[2], param[3], param[4]);
if ((pid = fork()) == 0) {
execl(DEFAULT_RC_CHECK_BIN,
DEFAULT_RC_CHECK_BIN,
DEFAULT_LOGFILE_PATH,
i->m_szIpString,
param[1],
param[2],
param[3],
param[4], NULL);
}
ret = waitpid(pid, &status, 0);
if (ret != pid) {
#ifdef __SETLOG__
WriteSHLog_safe("!Check RC '%s' not checked (at first time, ignore it)\n", param[1]);
#endif
} else {
if (status != 0) {
connRes = -1;
} else {
connRes = 1;
}
}
#ifdef __DEBUG__
fprintf(stderr, "rccheck result %d: %d (%s)\n", pid, status, strerror(errno));
#endif
//int retval=0;
//if ((retval = system(rccheck_exec)) != 0)
// connRes = -1;
//else
// connRes = 1;
for (k = 0; k < param_num; k++)
free(param[k]);
}
else if (i->m_ServType == 4) // DATABASE
{
if ((time_cnt % 2) != 0)
continue;
PGconn *conn;
PGresult *result;
connRes = -1;
memset(pgsql_conn_str, 0, 1024);
snprintf(pgsql_conn_str, 1024, PGCONN_STRING, i->m_szIpString, i->m_sPort, "localdb", "syshost", "alfkzmf!?{}");
conn = PQconnectdb(pgsql_conn_str);
if (PQstatus(conn) == CONNECTION_BAD)
{
#ifdef __SETLOG__
WriteSHLog_safe("pgSQL Connection failed(%s), %s\n", PQerrorMessage(conn), i->m_szIpString);
#endif
connRes = -1;
}
else
{
snprintf(pgsql_query, 128, "select now()");
result = PQexec(conn, pgsql_query);
if (!result)
{
#ifdef __SETLOG__
WriteSHLog_safe("PQexec command failed, no error code(%s)\n", i->m_szIpString);
#endif
connRes = -1;
}
else
{
connRes = 1;
PQclear(result);
}
}
// close postgreSQL
PQfinish(conn);
}
else if (i->m_ServType == 9) // timed
{
if (timedCheck(i->m_szIpString, i->m_sPort, toRead) < 0)
{
#ifdef __SETLOG__
WriteSHLog_safe("--- Time Server seems dead ---\n");
#endif
connRes = -1;
}
else
{
#ifdef __DEBUG__
fprintf(stderr, "--- Time Server is Alive!! ---\n");
#endif
connRes = 1;
}
}
else if (i->m_ServType == 1) // STAT
{
// CHG 2014-10-29 huibong
// - STAT check not used ( CCDB change and New SMS server apply)
// - STAT check code disable
/*
char buf[1024];
int result;
connRes = -1;
if ((time_cnt % 4) != 0)
continue;
FILE *fp;
connRes = -1;
//sprintf(buf, "wget -T 2 -t 1 -q \"http://www.ktsh.co.kr:8080/stat-status/index.html?rcid=%s\" -O /root/%s", i->m_szIpString, i->m_szIpString);
sprintf(buf, "wget -T 10 -t 2 -q \"http://www.ktsh.co.kr:8080/stat-status/index.html?rcid=%s\" -O /root/%s", i->m_szIpString, i->m_szIpString);
#ifdef __DEBUG__
fprintf(stderr, "[WGET] %s\n", buf);
#endif
result = system(buf);
if (result == 0) // wget success
{
sprintf(buf, "/root/%s", i->m_szIpString);
if ((fp = fopen(buf, "r")))
{
memset(buf, 0, 4);
fread(buf, 1, 3, fp);
#ifdef __DEBUG__
fprintf(stderr, "%s\n", buf);
#endif
if (buf[0] == 'O') {
wget_waiting_cnt = 0;
connRes = 1;
}
else
{
#ifdef __SETLOG__
WriteSHLog_safe("!STAT ERR MSG : %c %c %c\n", buf[0], buf[1], buf[2]);
#endif
}
fclose(fp);
}
else
{
#ifdef __SETLOG__
WriteSHLog_safe("!FILE OPEN ERR: %s : %s\n", buf, strerror(errno));
#endif
}
}
else // wget fail : guess : timeout or remote server down
{
char msgBuffer[128];
// Send to Web : reason : check remote server status
wget_waiting_cnt++;
WriteSHLog_safe("connRes: -1, seems to DEAD SQL_RELAY(211.39.132.217),Dead count : %d\n", wget_waiting_cnt);
snprintf(msgBuffer, 128, "[SQL_RELAY] seems to DEAD Server(211.39.132.217)");
if ((wget_waiting_cnt < 200) && ((wget_waiting_cnt % 40) == 0)) {
SendToWebServ(msgBuffer, "SQLRELAY");
}
continue;
}
*/
}
else // other Servers included RTS(FHS) or CACHE
{
signal(SIGALRM, HandleTimeOut);
alarm(toRead);
connRes = socket_open_with_timeout(toRead, i);
alarm(0);
}
//setproctitle("child(check): second section running");
processing_server_status(connRes, sendSMSTerm, i);
//setproctitle("child(check): third section running");
}
time_cnt++;
#ifdef __DEBUG__
fprintf(stderr , "report_thread_server_check_main@@@@@@@@@@@@@@\n");
#endif
now = time(0);
while((past + hcterm) > now)
{
SafeProcessRunSpinWait();
now = time(0);
}
past = now;
usleep(100);
}
if (shmdt(shared_memory) == -1)
{
WriteSHLog_safe("system V shmdt failed\n");
exit(EXIT_FAILURE);
}
free(servinfo_head);
}
int increaseDeadCount(unsigned int _ServType, char *servname)
{
int fFound = 0;
int retCount = 0;
servinfo_t *i, *servinfo;
servinfo = get_shm_start_pointer();
//setproctitle("child(check): increaseDeadCount section running");
for (i = servinfo; strcmp(i->m_pszServName, END_OF_SHM); i++)
{
if (i->m_pszServName[0] == '\0')
break;
if ((i->m_ServType == _ServType) && !strcmp(i->m_pszServName, servname)) {
#ifdef __SETLOG__
//WriteSHLog_safe("SERVER IP[1] : %s\n", i->m_szIpString);
#endif
fFound = 1;
i->m_DeadCount++;
#ifdef __SETLOG__
//WriteSHLog_safe("[%s]i->m_DeadCount = %d\n", i->m_pszServName, i->m_DeadCount);
#endif
break;
}
}
retCount = i->m_DeadCount;
munmap((void *)servinfo, get_sizeof_shm());
return (fFound)?retCount:-1;
}
int socket_open_with_timeout(int toRead, servinfo_t *servinfo)
{
struct sockaddr_in serveraddr;
struct timeval tv;
int len;
int twsfd;
tv.tv_sec = toRead;
tv.tv_usec = 0;
if ( (twsfd = socket(PF_INET, SOCK_STREAM, 0)) < 0 )
{
perror("error");
close(twsfd);
return -1;
}
serveraddr.sin_family = AF_INET;
serveraddr.sin_addr.s_addr = inet_addr(servinfo->m_szIpString);
serveraddr.sin_port = htons(servinfo->m_sPort);
setsockopt(twsfd, SOL_SOCKET, SO_RCVTIMEO, (struct timeval *)&tv, sizeof(tv));
setsockopt(twsfd, SOL_SOCKET, SO_SNDTIMEO, (struct timeval *)&tv, sizeof(tv));
len = sizeof(serveraddr);
if (connect(twsfd, (struct sockaddr *)&serveraddr, len) < 0)
{
if (errno == EINTR)
{
close(twsfd);
return -1;
}
close(twsfd);
return -1;
}
else
{
//WriteSHLog_safe("Connect Success\n");
close(twsfd);
return 1;
}
close(twsfd);
return 1;
}
int timedCheck(char *ip, int port, int toRead)
{
int res = 0;
int nRead = -1;
int nWrite = -1;
int sSocket = -1;
char szRcvBuf[32];
time_sync_t ctime;
time_sync_t *recv_time = NULL;
struct sockaddr_in serv_addr;
serv_addr.sin_family = AF_INET;
serv_addr.sin_port = htons(port);
serv_addr.sin_addr.s_addr = inet_addr(ip);
ctime.sync_info = htonl(AuthPrime);
sSocket = socket(AF_INET, SOCK_STREAM, 0);
#ifdef __DEBUG__
fprintf(stderr, "------ Check Time Server [port] : %d, [ip] : %s\n", port, ip);
#endif
signal(SIGALRM, HandleTimeOut);
alarm(toRead);
res = connect(sSocket, (struct sockaddr *)&serv_addr, sizeof(serv_addr));
if (res < 0) {
#ifdef __DEBUG__
fprintf(stderr, "connect :: %s\n", strerror(errno));
#endif
return -1;
}
alarm(0);
nWrite = send(sSocket, (char *)&ctime, sizeof(ctime), 0);
if (nWrite < 0) {
#ifdef __DEBUG__
fprintf(stderr, "send :: %s\n", strerror(errno));
#endif
shutdown(sSocket, SHUT_RDWR);
close(sSocket);
return -2;
}
nRead = recv(sSocket, szRcvBuf, sizeof(szRcvBuf), 0);
if (nRead < 0) {
#ifdef __DEBUG__
fprintf(stderr, "recv :: %s\n", strerror(errno));
#endif
shutdown(sSocket, SHUT_RDWR);
close(sSocket);
return -3;
}
shutdown(sSocket, SHUT_RDWR);
close(sSocket);
recv_time = (time_sync_t *)&szRcvBuf;
#ifdef __DEBUG__
fprintf(stderr, "TIME = %ld\n", ntohl(recv_time->sync_info));
#endif
return 0;
}
#define MaxSizeOfBuffer 1024*4
void processing_server_status(int connRes, int sendSMSTerm, servinfo_t *i)
{
struct tm *t;
time_t timer;
int nDeadCount;
char szMsgBuffer[MaxSizeOfBuffer];
timer = time(NULL);
t = localtime(&timer);
if (connRes < 0)
{
/* modified 2008_08_05 */
nDeadCount = ++(i->m_DeadCount);
#ifdef __SETLOG__
WriteSHLog_safe("[DEAD] connRes[%d] mServType[%d] m_ServName[%s] Dead Count[%d]\n"
, connRes, i->m_ServType, i->m_pszServName, nDeadCount);
#endif
if ((nDeadCount >= MAX_ALLOWED_DEAD_COUNT) && ((int)nDeadCount < (sendSMSTerm * (MAXSENDSMSCOUNT)))) {
i->m_Status = SERV_DEAD;
Semop(check_semid, &waitop, 1);
UpdateStatus(i->m_ServType, SERV_DEAD, i->m_pszServName);
snprintf(szMsgBuffer, MaxSizeOfBuffer, "[ %s ] DEAD :: %s ", i->m_pszServName, timeToString(t));
if (((int)nDeadCount < (sendSMSTerm * (MAXSENDSMSCOUNT))) &&
(nDeadCount == MAX_ALLOWED_DEAD_COUNT || (nDeadCount % sendSMSTerm) == 0))
{
SendToWebServ(szMsgBuffer, i->m_pszServName);
}
Semop(check_semid, &postop, 1);
}
}
else
{
/* To Cleaning Up DEAD COUNT */
if (i->m_Status == SERV_DEAD)
{
i->m_Status = SERV_ALIVE;
#ifdef __SETLOG__
WriteSHLog_safe("[BACK] connRes[%d] mServType[%d] m_ServName[%s]\n", connRes, i->m_ServType, i->m_pszServName);
#endif
snprintf(szMsgBuffer, MaxSizeOfBuffer, "[ %s ] IS BACK :: %s ", i->m_pszServName, timeToString(t));
Semop(check_semid, &waitop, 1);
UpdateStatus(i->m_ServType, SERV_ALIVE, i->m_pszServName);
SendToWebServ(szMsgBuffer, i->m_pszServName);
Semop(check_semid, &postop, 1);
}
i->m_DeadCount = 0;
}
}
void UpdateStatus(unsigned int servtype, unsigned int status, char *servname)
{
servinfo_t *i;
servinfo_t *servinfo;
servinfo = get_shm_start_pointer();
//setproctitle("child(check): UpdateStatus section running");
for (i = servinfo; strcmp(i->m_pszServName, END_OF_SHM); i++)
{
if (i == NULL || i->m_pszServName[0] == '\0')
break;
if (!strcmp(i->m_pszServName, servname) && i->m_ServType == servtype)
{
i->m_Status = status;
if (status == SERV_ALIVE)
i->m_DeadCount = 0;
break;
}
}
munmap((void *)servinfo, get_sizeof_shm());
}
int rcacctFind(char **param, char *ipString)
{
FILE *acct_ifp = NULL;
char delim = ':';
char buff[1024];
int num = 0;
int tnum = 0;
acct_ifp = fopen(RCACCT_CONF_PATH, "r");
if (acct_ifp == NULL)
{
fprintf(stderr, "cannot open rcacct file!\n");
return 0;
}
while(fgets(buff, 1024, acct_ifp) != NULL)
{
char *temp[512];
//extraction information
tnum = devide(temp, buff, delim);
if (!strcmp(ipString, temp[0]))
{
int i;
for (i = 0; i < tnum; i++)
free(temp[i]);
num = devide(param, buff, delim);
break;
}
else
{
int j;
for (j = 0; j < tnum; j++)
free(temp[j]);
}
}
if (acct_ifp)
fclose(acct_ifp);
return num;
}
//#define SMSServAddr "211.39.132.250"
//#define SMSServerHost "cc-gms.ktsh.co.kr"
//#define SMSServAddr "222.122.175.23"
//#define SMSServerHost "cs-gms.ktcdn.co.kr"
#define SMSServAddr "222.239.93.15"
#define SMSServerHost "cs-gms.myskcdn.co.kr"
#define SMSServPort "80"
#define MaxSizeOfTRxBuffer 1024
void SendToWebServ(const char *pszMesg, char *servName)
{
char *PostDataEncode(const char *);
char *strURI;
char szSndBuffer[MaxSizeOfTRxBuffer];
char szRcvBuffer[MaxSizeOfTRxBuffer];
char str_replace[128];
//char logString[1024];
//char *rc_id_serv[128];
//int fd, n, k, param_num;
int fd, n;
if (pszMesg == NULL)
{
WriteSHLog_safe("SendToWeb : Invalid Agument.\n");
}
else
{
WriteSHLog_safe("SendToWeb [%s][%s]\n", servName, pszMesg);
}
bzero(szSndBuffer, MaxSizeOfTRxBuffer);
bzero(szRcvBuffer, MaxSizeOfTRxBuffer);
strURI = PostDataEncode(pszMesg);
// Extract RCID from m_pszServName
//param_num = devide(rc_id_serv, servName, '_');
/*
snprintf(szSndBuffer, MaxSizeOfTRxBuffer, "GET /sms/send_sms.html?id=0udisk&pw=alfkzmf!?{}&msg=%s HTTP/1.0\n"\
snprintf(szSndBuffer, MaxSizeOfTRxBuffer, "GET /sms/aaa.html?id=ADMIN&pw=roolu&msg=[test:roolu]%s HTTP/1.0\n"\
*/
if (!strcmp(servName, "SQLRELAY"))
strncpy(str_replace, "ADMIN", 128);
else
{
//strncpy(str_replace, rc_id_serv[0], 128);
strncpy(str_replace, "ALL", 128);
}
snprintf(szSndBuffer, MaxSizeOfTRxBuffer, "GET /sms/send_sms.html?id=%s&msg=%s HTTP/1.0\n"\
"Content-Type: text/plain\n"\
"User-Agent: SeanZilla/1.0\n"\
"Host: %s\n"\
"Connection: close\n"\
"Cache-Control: no-cache\n\n"
, str_replace, strURI, SMSServerHost);
WriteSHLog_safe("[SMS message] group[%s] message[%s]\n", str_replace, pszMesg);
/* tcp connection, send, receive */
fd = Tcp_connect(SMSServAddr, SMSServPort);
/* send sndMessage to SMS WEB SERV */
Send(fd, szSndBuffer, strlen(szSndBuffer), 0);
usleep(100);
/* receive result from new sh_statusd */
if ( (n = Recv(fd, szRcvBuffer, strlen(szRcvBuffer), 0)) == 0)
{
#if 0
WriteSHLog_safe("[SMS] server : %s\n", strURI);
#endif
}
free(strURI);
/*
for (k = 0; k < param_num; k++)
free(rc_id_serv[k]);
*/
Close(fd);
}
char *PostDataEncode(const char *pszCommand)
{
int i = 0;
char tmpBuffer[MaxSizeOfTRxBuffer];
static char *strReturn;
if(pszCommand == NULL)
{
return NULL;
}
while(*pszCommand != '\0')
{
if(*pszCommand == ' ')
{
tmpBuffer[i++] = '+';
//*pszCommand++;
pszCommand++;
}
else if((*pszCommand < '0' && *pszCommand != '-' && *pszCommand != '.' && *pszCommand !='%') ||
(*pszCommand < 'A' && *pszCommand > '9' && *pszCommand !='%') ||
(*pszCommand > 'Z' && *pszCommand < 'a' && *pszCommand != '_' && *pszCommand !='%') ||
(*pszCommand > 'z' && *pszCommand !='%'))
{
tmpBuffer[i++] = '%';
tmpBuffer[i++] = hexchars[(unsigned char)*pszCommand >> 4];
tmpBuffer[i++] = hexchars[(unsigned char)*pszCommand & 15];
//*pszCommand++;
pszCommand++;
}
else if(*pszCommand == '%')
{
tmpBuffer[i++] = '%';
tmpBuffer[i++] = '%';
//*pszCommand++;
pszCommand++;
}
else
{
tmpBuffer[i++] = *pszCommand++;
}
}
tmpBuffer[i] = '\0';
// allocate heap
//strReturn = (char *)malloc(strlen(tmpBuffer));
//memset(strReturn, 0, strlen(tmpBuffer));
//strncpy(strReturn, tmpBuffer, strlen(tmpBuffer)+1);
// huibong
// memory overflow code modify
strReturn = (char *)malloc(strlen(tmpBuffer)+1);
memset(strReturn, 0x00, strlen(tmpBuffer)+1);
strncpy(strReturn, tmpBuffer, strlen(tmpBuffer));
return strReturn;
}
void SafeProcessRunSpinWait(void)
{
struct timeval tv;
tv.tv_sec = 1;
tv.tv_usec = 0;
select(0, NULL, NULL, NULL, &tv);
}
void HandleTimeOut(int signum)
{
fprintf(stderr, "HandleTimeOut exceeded\n");
WriteSHLog_safe("HandleTimeOut exceeded\n");
return;
}
@@ -0,0 +1,729 @@
#include "unp.h"
#include "unpipc.h"
#define PGCONN_STRING "host=%s port=%d dbname=%s user=%s password=%s"
static char hexchars[] = "0123456789ABCDEF";
void chk_rtime_update_serv_status()
{
servinfo_t *i, *servinfo_head;
time_t now, past;
g_shm_t *g_shm_ptr;
void *shared_memory = (void *)0;
char pgsql_conn_str[256];
char pgsql_query[128];
int connRes;
int hcterm = 0;
int toRead = 0;
int sendSMSTerm;
//int wget_waiting_cnt = 0;
int time_cnt = 0;
int shmid;
int first_time = 0;
//unsigned int g_CSMErrorCount = 0;
/* Load conf file */
hcterm = GetProfileInt("PARAM", "HEALTH_CHECK_TERM", 5);
sendSMSTerm = (SENDSMSTERM * 60) / hcterm;
toRead = GetProfileInt("PARAM", "TIME_OUT_READ", 5);
/* get the global SHM start pointer if system V shm's value is dirty */
shmid = shmget((key_t)6677, sizeof(g_shm_t), 0666|IPC_CREAT);
if (shmid == -1)
{
WriteSHLog_safe("system V shmget failed\n");
exit(EXIT_FAILURE);
}
shared_memory = shmat(shmid, (void *)0, 0);
if (shared_memory == (void *)-1)
{
WriteSHLog_safe("system V shmat failed\n");
exit(EXIT_FAILURE);
}
g_shm_ptr = (g_shm_t *)shared_memory;
servinfo_head = malloc(sizeof(servinfo_t));
past = now = time(NULL);
//while (g_CSMErrorCount < ALLOWED_MAX_ERROR_COUNT)
while (1)
{
if (g_shm_ptr->is_dirty == 1 || first_time == 0)
{
/***************** store SHM data to Heap *********************/
servinfo_t *start_servinfo, *servinfo_ptr, *temp_servinfo;
int shm_size = 0;
Semop(check_semid, &waitop, 1);
shm_size = get_sizeof_shm();
/* get the global SHM start pointer */
start_servinfo = servinfo_ptr = get_shm_start_pointer();
servinfo_head = realloc(servinfo_head, shm_size+sizeof(servinfo_t));
memset(servinfo_head, 0, shm_size+sizeof(servinfo_t));
temp_servinfo = (servinfo_t *)servinfo_head;
while (strcmp(servinfo_ptr->m_pszServName, END_OF_SHM))
{
if (servinfo_ptr->m_pszServName[0] == '\0')
break;
/* tmporary servinfo_t */
if (servinfo_ptr->m_Status == SERV_DEAD)
servinfo_ptr->m_Status = SERV_ALIVE;
servinfo_ptr->m_DeadCount = 0;
memcpy(temp_servinfo, servinfo_ptr, sizeof(servinfo_t));
temp_servinfo++;
servinfo_ptr++;
//setproctitle("child(check): first section running");
}
strncpy(temp_servinfo->m_pszServName, END_OF_SHM, 11);
munmap((void *)start_servinfo, shm_size);
Semop(check_semid, &postop, 1);
/*****************************************************************/
/* update list from SHM */
g_shm_ptr->is_dirty = 0;
first_time = 1;
}
for (i = servinfo_head; strcmp(i->m_pszServName, END_OF_SHM); i++)
{
if (i->m_pszServName[0] == '\0')
break;
signal(SIGCHLD, SIG_DFL);
connRes = 0;
// Check for monitor_yn
if (!strncmp(i->m_monitorYN, "N", 2))
continue;
if (i->m_ServType == 0) // RC
{
connRes = -1;
pid_t pid;
char *param[512];
int k, ret, param_num, status = 0;
if ((time_cnt % 4) != 0)
continue;
param_num = rcacctFind(param, i->m_szIpString);
#ifdef __DEBUG__
WriteSHLog_safe("RETURN RCCHECK QUERY : %s %s %s %s %s %s %s\n", "./rccheck"
, DEFAULT_LOGFILE_PATH, i->m_szIpString, param[1], param[2], param[3], param[4]);
#endif
//char rccheck_exec[1024];
//sprintf(rccheck_exec, "%s %s %s %s %s %s %s\n", "./rccheck", DEFAULT_LOGFILE_PATH, param[0], param[1], param[2], param[3], param[4]);
if ((pid = fork()) == 0) {
execl(DEFAULT_RC_CHECK_BIN,
DEFAULT_RC_CHECK_BIN,
DEFAULT_LOGFILE_PATH,
i->m_szIpString,
param[1],
param[2],
param[3],
param[4], NULL);
}
ret = waitpid(pid, &status, 0);
if (ret != pid) {
#ifdef __SETLOG__
WriteSHLog_safe("!Check RC '%s' not checked (at first time, ignore it)\n", param[1]);
#endif
} else {
if (status != 0) {
connRes = -1;
} else {
connRes = 1;
}
}
#ifdef __DEBUG__
fprintf(stderr, "rccheck result %d: %d (%s)\n", pid, status, strerror(errno));
#endif
//int retval=0;
//if ((retval = system(rccheck_exec)) != 0)
// connRes = -1;
//else
// connRes = 1;
for (k = 0; k < param_num; k++)
free(param[k]);
}
else if (i->m_ServType == 4) // DATABASE
{
if ((time_cnt % 2) != 0)
continue;
PGconn *conn;
PGresult *result;
connRes = -1;
memset(pgsql_conn_str, 0, 1024);
snprintf(pgsql_conn_str, 1024, PGCONN_STRING, i->m_szIpString, i->m_sPort, "localdb", "syshost", "alfkzmf!?{}");
conn = PQconnectdb(pgsql_conn_str);
if (PQstatus(conn) == CONNECTION_BAD)
{
#ifdef __SETLOG__
WriteSHLog_safe("pgSQL Connection failed(%s), %s\n", PQerrorMessage(conn), i->m_szIpString);
#endif
connRes = -1;
}
else
{
snprintf(pgsql_query, 128, "select now()");
result = PQexec(conn, pgsql_query);
if (!result)
{
#ifdef __SETLOG__
WriteSHLog_safe("PQexec command failed, no error code(%s)\n", i->m_szIpString);
#endif
connRes = -1;
}
else
{
connRes = 1;
PQclear(result);
}
}
// close postgreSQL
PQfinish(conn);
}
else if (i->m_ServType == 9) // timed
{
if (timedCheck(i->m_szIpString, i->m_sPort, toRead) < 0)
{
#ifdef __SETLOG__
WriteSHLog_safe("--- Time Server seems dead ---\n");
#endif
connRes = -1;
}
else
{
#ifdef __DEBUG__
fprintf(stderr, "--- Time Server is Alive!! ---\n");
#endif
connRes = 1;
}
}
else if (i->m_ServType == 1) // STAT
{
// CHG 2014-10-29 huibong
// - STAT check not used ( CCDB change and New SMS server apply)
// - STAT check code disable
/*
char buf[1024];
int result;
connRes = -1;
if ((time_cnt % 4) != 0)
continue;
FILE *fp;
connRes = -1;
//sprintf(buf, "wget -T 2 -t 1 -q \"http://www.ktsh.co.kr:8080/stat-status/index.html?rcid=%s\" -O /root/%s", i->m_szIpString, i->m_szIpString);
sprintf(buf, "wget -T 10 -t 2 -q \"http://www.ktsh.co.kr:8080/stat-status/index.html?rcid=%s\" -O /root/%s", i->m_szIpString, i->m_szIpString);
#ifdef __DEBUG__
fprintf(stderr, "[WGET] %s\n", buf);
#endif
result = system(buf);
if (result == 0) // wget success
{
sprintf(buf, "/root/%s", i->m_szIpString);
if ((fp = fopen(buf, "r")))
{
memset(buf, 0, 4);
fread(buf, 1, 3, fp);
#ifdef __DEBUG__
fprintf(stderr, "%s\n", buf);
#endif
if (buf[0] == 'O') {
wget_waiting_cnt = 0;
connRes = 1;
}
else
{
#ifdef __SETLOG__
WriteSHLog_safe("!STAT ERR MSG : %c %c %c\n", buf[0], buf[1], buf[2]);
#endif
}
fclose(fp);
}
else
{
#ifdef __SETLOG__
WriteSHLog_safe("!FILE OPEN ERR: %s : %s\n", buf, strerror(errno));
#endif
}
}
else // wget fail : guess : timeout or remote server down
{
char msgBuffer[128];
// Send to Web : reason : check remote server status
wget_waiting_cnt++;
WriteSHLog_safe("connRes: -1, seems to DEAD SQL_RELAY(211.39.132.217),Dead count : %d\n", wget_waiting_cnt);
snprintf(msgBuffer, 128, "[SQL_RELAY] seems to DEAD Server(211.39.132.217)");
if ((wget_waiting_cnt < 200) && ((wget_waiting_cnt % 40) == 0)) {
SendToWebServ(msgBuffer, "SQLRELAY");
}
continue;
}
*/
}
else // other Servers included RTS(FHS) or CACHE
{
signal(SIGALRM, HandleTimeOut);
alarm(toRead);
connRes = socket_open_with_timeout(toRead, i);
alarm(0);
}
//setproctitle("child(check): second section running");
processing_server_status(connRes, sendSMSTerm, i);
//setproctitle("child(check): third section running");
}
time_cnt++;
#ifdef __DEBUG__
fprintf(stderr , "report_thread_server_check_main@@@@@@@@@@@@@@\n");
#endif
now = time(0);
while((past + hcterm) > now)
{
SafeProcessRunSpinWait();
now = time(0);
}
past = now;
usleep(100);
}
if (shmdt(shared_memory) == -1)
{
WriteSHLog_safe("system V shmdt failed\n");
exit(EXIT_FAILURE);
}
free(servinfo_head);
}
int increaseDeadCount(unsigned int _ServType, char *servname)
{
int fFound = 0;
int retCount = 0;
servinfo_t *i, *servinfo;
servinfo = get_shm_start_pointer();
//setproctitle("child(check): increaseDeadCount section running");
for (i = servinfo; strcmp(i->m_pszServName, END_OF_SHM); i++)
{
if (i->m_pszServName[0] == '\0')
break;
if ((i->m_ServType == _ServType) && !strcmp(i->m_pszServName, servname)) {
#ifdef __SETLOG__
//WriteSHLog_safe("SERVER IP[1] : %s\n", i->m_szIpString);
#endif
fFound = 1;
i->m_DeadCount++;
#ifdef __SETLOG__
//WriteSHLog_safe("[%s]i->m_DeadCount = %d\n", i->m_pszServName, i->m_DeadCount);
#endif
break;
}
}
retCount = i->m_DeadCount;
munmap((void *)servinfo, get_sizeof_shm());
return (fFound)?retCount:-1;
}
int socket_open_with_timeout(int toRead, servinfo_t *servinfo)
{
struct sockaddr_in serveraddr;
struct timeval tv;
int len;
int twsfd;
tv.tv_sec = toRead;
tv.tv_usec = 0;
if ( (twsfd = socket(PF_INET, SOCK_STREAM, 0)) < 0 )
{
perror("error");
close(twsfd);
return -1;
}
serveraddr.sin_family = AF_INET;
serveraddr.sin_addr.s_addr = inet_addr(servinfo->m_szIpString);
serveraddr.sin_port = htons(servinfo->m_sPort);
setsockopt(twsfd, SOL_SOCKET, SO_RCVTIMEO, (struct timeval *)&tv, sizeof(tv));
setsockopt(twsfd, SOL_SOCKET, SO_SNDTIMEO, (struct timeval *)&tv, sizeof(tv));
len = sizeof(serveraddr);
if (connect(twsfd, (struct sockaddr *)&serveraddr, len) < 0)
{
if (errno == EINTR)
{
close(twsfd);
return -1;
}
close(twsfd);
return -1;
}
else
{
//WriteSHLog_safe("Connect Success\n");
close(twsfd);
return 1;
}
close(twsfd);
return 1;
}
int timedCheck(char *ip, int port, int toRead)
{
int res = 0;
int nRead = -1;
int nWrite = -1;
int sSocket = -1;
char szRcvBuf[32];
time_sync_t ctime;
time_sync_t *recv_time = NULL;
struct sockaddr_in serv_addr;
serv_addr.sin_family = AF_INET;
serv_addr.sin_port = htons(port);
serv_addr.sin_addr.s_addr = inet_addr(ip);
ctime.sync_info = htonl(AuthPrime);
sSocket = socket(AF_INET, SOCK_STREAM, 0);
#ifdef __DEBUG__
fprintf(stderr, "------ Check Time Server [port] : %d, [ip] : %s\n", port, ip);
#endif
signal(SIGALRM, HandleTimeOut);
alarm(toRead);
res = connect(sSocket, (struct sockaddr *)&serv_addr, sizeof(serv_addr));
if (res < 0) {
#ifdef __DEBUG__
fprintf(stderr, "connect :: %s\n", strerror(errno));
#endif
return -1;
}
alarm(0);
nWrite = send(sSocket, (char *)&ctime, sizeof(ctime), 0);
if (nWrite < 0) {
#ifdef __DEBUG__
fprintf(stderr, "send :: %s\n", strerror(errno));
#endif
shutdown(sSocket, SHUT_RDWR);
close(sSocket);
return -2;
}
nRead = recv(sSocket, szRcvBuf, sizeof(szRcvBuf), 0);
if (nRead < 0) {
#ifdef __DEBUG__
fprintf(stderr, "recv :: %s\n", strerror(errno));
#endif
shutdown(sSocket, SHUT_RDWR);
close(sSocket);
return -3;
}
shutdown(sSocket, SHUT_RDWR);
close(sSocket);
recv_time = (time_sync_t *)&szRcvBuf;
#ifdef __DEBUG__
fprintf(stderr, "TIME = %ld\n", ntohl(recv_time->sync_info));
#endif
return 0;
}
#define MaxSizeOfBuffer 1024*4
void processing_server_status(int connRes, int sendSMSTerm, servinfo_t *i)
{
struct tm *t;
time_t timer;
int nDeadCount;
char szMsgBuffer[MaxSizeOfBuffer];
timer = time(NULL);
t = localtime(&timer);
if (connRes < 0)
{
/* modified 2008_08_05 */
nDeadCount = ++(i->m_DeadCount);
#ifdef __SETLOG__
WriteSHLog_safe("[DEAD] connRes[%d] mServType[%d] m_ServName[%s] Dead Count[%d]\n"
, connRes, i->m_ServType, i->m_pszServName, nDeadCount);
#endif
if ((nDeadCount >= MAX_ALLOWED_DEAD_COUNT) && ((int)nDeadCount < (sendSMSTerm * (MAXSENDSMSCOUNT)))) {
i->m_Status = SERV_DEAD;
Semop(check_semid, &waitop, 1);
UpdateStatus(i->m_ServType, SERV_DEAD, i->m_pszServName);
snprintf(szMsgBuffer, MaxSizeOfBuffer, "[ %s ] DEAD :: %s ", i->m_pszServName, timeToString(t));
if (((int)nDeadCount < (sendSMSTerm * (MAXSENDSMSCOUNT))) &&
(nDeadCount == MAX_ALLOWED_DEAD_COUNT || (nDeadCount % sendSMSTerm) == 0))
{
SendToWebServ(szMsgBuffer, i->m_pszServName);
}
Semop(check_semid, &postop, 1);
}
}
else
{
/* To Cleaning Up DEAD COUNT */
if (i->m_Status == SERV_DEAD)
{
i->m_Status = SERV_ALIVE;
#ifdef __SETLOG__
WriteSHLog_safe("[BACK] connRes[%d] mServType[%d] m_ServName[%s]\n", connRes, i->m_ServType, i->m_pszServName);
#endif
snprintf(szMsgBuffer, MaxSizeOfBuffer, "[ %s ] IS BACK :: %s ", i->m_pszServName, timeToString(t));
Semop(check_semid, &waitop, 1);
UpdateStatus(i->m_ServType, SERV_ALIVE, i->m_pszServName);
SendToWebServ(szMsgBuffer, i->m_pszServName);
Semop(check_semid, &postop, 1);
}
i->m_DeadCount = 0;
}
}
void UpdateStatus(unsigned int servtype, unsigned int status, char *servname)
{
servinfo_t *i;
servinfo_t *servinfo;
servinfo = get_shm_start_pointer();
//setproctitle("child(check): UpdateStatus section running");
for (i = servinfo; strcmp(i->m_pszServName, END_OF_SHM); i++)
{
if (i == NULL || i->m_pszServName[0] == '\0')
break;
if (!strcmp(i->m_pszServName, servname) && i->m_ServType == servtype)
{
i->m_Status = status;
if (status == SERV_ALIVE)
i->m_DeadCount = 0;
break;
}
}
munmap((void *)servinfo, get_sizeof_shm());
}
int rcacctFind(char **param, char *ipString)
{
FILE *acct_ifp = NULL;
char delim = ':';
char buff[1024];
int num = 0;
int tnum = 0;
acct_ifp = fopen(RCACCT_CONF_PATH, "r");
if (acct_ifp == NULL)
{
fprintf(stderr, "cannot open rcacct file!\n");
return 0;
}
while(fgets(buff, 1024, acct_ifp) != NULL)
{
char *temp[512];
//extraction information
tnum = devide(temp, buff, delim);
if (!strcmp(ipString, temp[0]))
{
int i;
for (i = 0; i < tnum; i++)
free(temp[i]);
num = devide(param, buff, delim);
break;
}
else
{
int j;
for (j = 0; j < tnum; j++)
free(temp[j]);
}
}
if (acct_ifp)
fclose(acct_ifp);
return num;
}
//#define SMSServAddr "211.39.132.250"
//#define SMSServerHost "cc-gms.ktsh.co.kr"
#define SMSServAddr "222.122.175.23"
#define SMSServerHost "cs-gms.ktcdn.co.kr"
#define SMSServPort "80"
#define MaxSizeOfTRxBuffer 1024
void SendToWebServ(const char *pszMesg, char *servName)
{
char *PostDataEncode(const char *);
char *strURI;
char szSndBuffer[MaxSizeOfTRxBuffer];
char szRcvBuffer[MaxSizeOfTRxBuffer];
char str_replace[128];
//char logString[1024];
//char *rc_id_serv[128];
//int fd, n, k, param_num;
int fd, n;
if (pszMesg == NULL)
{
WriteSHLog_safe("SendToWeb : Invalid Agument.\n");
}
else
{
WriteSHLog_safe("SendToWeb [%s][%s]\n", servName, pszMesg);
}
bzero(szSndBuffer, MaxSizeOfTRxBuffer);
bzero(szRcvBuffer, MaxSizeOfTRxBuffer);
strURI = PostDataEncode(pszMesg);
// Extract RCID from m_pszServName
//param_num = devide(rc_id_serv, servName, '_');
/*
snprintf(szSndBuffer, MaxSizeOfTRxBuffer, "GET /sms/send_sms.html?id=0udisk&pw=alfkzmf!?{}&msg=%s HTTP/1.0\n"\
snprintf(szSndBuffer, MaxSizeOfTRxBuffer, "GET /sms/aaa.html?id=ADMIN&pw=roolu&msg=[test:roolu]%s HTTP/1.0\n"\
*/
if (!strcmp(servName, "SQLRELAY"))
strncpy(str_replace, "ADMIN", 128);
else
{
//strncpy(str_replace, rc_id_serv[0], 128);
strncpy(str_replace, "ALL", 128);
}
snprintf(szSndBuffer, MaxSizeOfTRxBuffer, "GET /sms/send_sms.html?id=%s&msg=%s HTTP/1.0\n"\
"Content-Type: text/plain\n"\
"User-Agent: SeanZilla/1.0\n"\
"Host: %s\n"\
"Connection: close\n"\
"Cache-Control: no-cache\n\n"
, str_replace, strURI, SMSServerHost);
WriteSHLog_safe("[SMS message] group[%s] message[%s]\n", str_replace, pszMesg);
/* tcp connection, send, receive */
fd = Tcp_connect(SMSServAddr, SMSServPort);
/* send sndMessage to SMS WEB SERV */
Send(fd, szSndBuffer, strlen(szSndBuffer), 0);
usleep(100);
/* receive result from new sh_statusd */
if ( (n = Recv(fd, szRcvBuffer, strlen(szRcvBuffer), 0)) == 0)
{
#if 0
WriteSHLog_safe("[SMS] server : %s\n", strURI);
#endif
}
free(strURI);
/*
for (k = 0; k < param_num; k++)
free(rc_id_serv[k]);
*/
Close(fd);
}
char *PostDataEncode(const char *pszCommand)
{
int i = 0;
char tmpBuffer[MaxSizeOfTRxBuffer];
static char *strReturn;
if(pszCommand == NULL)
{
return NULL;
}
while(*pszCommand != '\0')
{
if(*pszCommand == ' ')
{
tmpBuffer[i++] = '+';
//*pszCommand++;
pszCommand++;
}
else if((*pszCommand < '0' && *pszCommand != '-' && *pszCommand != '.' && *pszCommand !='%') ||
(*pszCommand < 'A' && *pszCommand > '9' && *pszCommand !='%') ||
(*pszCommand > 'Z' && *pszCommand < 'a' && *pszCommand != '_' && *pszCommand !='%') ||
(*pszCommand > 'z' && *pszCommand !='%'))
{
tmpBuffer[i++] = '%';
tmpBuffer[i++] = hexchars[(unsigned char)*pszCommand >> 4];
tmpBuffer[i++] = hexchars[(unsigned char)*pszCommand & 15];
//*pszCommand++;
pszCommand++;
}
else if(*pszCommand == '%')
{
tmpBuffer[i++] = '%';
tmpBuffer[i++] = '%';
//*pszCommand++;
pszCommand++;
}
else
{
tmpBuffer[i++] = *pszCommand++;
}
}
tmpBuffer[i] = '\0';
// allocate heap
//strReturn = (char *)malloc(strlen(tmpBuffer));
//memset(strReturn, 0, strlen(tmpBuffer));
//strncpy(strReturn, tmpBuffer, strlen(tmpBuffer)+1);
// huibong
// memory overflow code modify
strReturn = (char *)malloc(strlen(tmpBuffer)+1);
memset(strReturn, 0x00, strlen(tmpBuffer)+1);
strncpy(strReturn, tmpBuffer, strlen(tmpBuffer));
return strReturn;
}
void SafeProcessRunSpinWait(void)
{
struct timeval tv;
tv.tv_sec = 1;
tv.tv_usec = 0;
select(0, NULL, NULL, NULL, &tv);
}
void HandleTimeOut(int signum)
{
fprintf(stderr, "HandleTimeOut exceeded\n");
WriteSHLog_safe("HandleTimeOut exceeded\n");
return;
}
+108
View File
@@ -0,0 +1,108 @@
#include <unp.h>
#include <stdarg.h> /* ANSI C header file */
#include <syslog.h> /* for syslog() */
int daemon_proc; /* set nonzero by daemon_init() */
static void err_doit(int, int, const char *, va_list);
/* Nonfatal error related to system call
* Print message and return */
void
err_ret(const char *fmt, ...)
{
va_list ap;
va_start(ap, fmt);
err_doit(1, LOG_INFO, fmt, ap);
va_end(ap);
return;
}
/* Fatal error related to system call
* Print message and terminate */
void
err_sys(const char *fmt, ...)
{
va_list ap;
va_start(ap, fmt);
err_doit(1, LOG_ERR, fmt, ap);
va_end(ap);
exit(1);
}
/* Fatal error related to system call
* Print message, dump core, and terminate */
void
err_dump(const char *fmt, ...)
{
va_list ap;
va_start(ap, fmt);
err_doit(1, LOG_ERR, fmt, ap);
va_end(ap);
abort(); /* dump core and terminate */
exit(1); /* shouldn't get here */
}
/* Nonfatal error unrelated to system call
* Print message and return */
void
err_msg(const char *fmt, ...)
{
va_list ap;
va_start(ap, fmt);
err_doit(0, LOG_INFO, fmt, ap);
va_end(ap);
return;
}
/* Fatal error unrelated to system call
* Print message and terminate */
void
err_quit(const char *fmt, ...)
{
va_list ap;
va_start(ap, fmt);
err_doit(0, LOG_ERR, fmt, ap);
va_end(ap);
exit(1);
}
/* Print message and return to caller
* Caller specifies "errnoflag" and "level" */
static void
err_doit(int errnoflag, int level, const char *fmt, va_list ap)
{
int errno_save, n;
char buf[MAXLINE + 1];
errno_save = errno; /* value caller might want printed */
#ifdef HAVE_VSNPRINTF
vsnprintf(buf, MAXLINE, fmt, ap); /* safe */
#else
vsprintf(buf, fmt, ap); /* not safe */
#endif
n = strlen(buf);
if (errnoflag)
snprintf(buf + n, MAXLINE - n, ": %s", strerror(errno_save));
strcat(buf, "\n");
if (daemon_proc) {
syslog(level, buf);
} else {
fflush(stdout); /* in case stdout and stderr are the same */
fputs(buf, stderr);
fflush(stderr);
}
return;
}
+149
View File
@@ -0,0 +1,149 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define CONF_SQL "INSERT INTO t_rms_rc_server_index (rc_server_seq, rcid, name, ip, port, type, reg_datetime, update_datetime, monitor_yn, deleted_yn, etc1, etc2, etc3, raid_stat, raid_update_updatetime) VALUES ('','%s','%s','%s','%s','%s',now() ,now(), 'Y','N','%s','%s','0',0, now());\n"
int main()
{
int devide(char **, const char *, char);
char *get_serv_type(char *);
char *get_serv_order(char *);
FILE *ifp;
char delim1 = '=';
char delim2 = ':';
char delim3 = '_';
char strbuff[1024];
char s_strbuff[512];
char ss_strbuff[256];
char *basket[1024];
char *s_basket[512];
char *ss_basket[256];
int i, num, snum, ssnum;
long leng;
ifp = fopen("./sh_statusd.conf", "r");
memset(strbuff, 0, 1024);
while ( fgets(strbuff, 1024, ifp) )
{
leng = strlen(strbuff);
strbuff[leng - 1] = '\0';
// parsing to delim '='
num = devide(basket, strbuff, delim1);
if (strbuff[0] == '#' || strcmp(basket[0], "SERV"))
continue;
// parsing to delim ':'
strncpy(s_strbuff, basket[1], 512);
snum = devide(s_basket, s_strbuff, delim2);
// parsing to delim '_'
strncpy(ss_strbuff, s_basket[0], 256);
ssnum = devide(ss_basket, ss_strbuff, delim3);
// making sql(MySQL) string
fprintf(stdout, CONF_SQL, ss_basket[0], s_basket[0], s_basket[1], s_basket[2], s_basket[3], get_serv_type(s_basket[3]), get_serv_order(ss_basket[0]));
memset(strbuff, 0, 1024);
memset(s_strbuff, 0, 512);
memset(ss_strbuff, 0, 256);
}
for (i = 0; i < num; i++)
free(basket[i]);
/*
for (i = 0; i < snum; i++)
free(s_basket[i]);
for (i = 0; i < ssnum; i++)
free(ss_basket[i]);
*/
exit(1);
}
char *get_serv_type(char *stype)
{
static char *type;
type = (char *)malloc(2);
if (!strcmp(stype, "RC"))
strncpy(type, "A", 2);
else if (!strcmp(stype, "STAT"))
strncpy(type, "B", 2);
else if (!strcmp(stype, "RTS"))
strncpy(type, "C", 2);
else if (!strcmp(stype, "RCTS"))
strncpy(type, "D", 2);
else if (!strcmp(stype, "RCDB"))
strncpy(type, "E", 2);
return type;
}
char *get_serv_order(char *rcid)
{
static char *order;
order = (char *)malloc(3);
if (!strcmp(rcid, "TIME"))
strncpy(order, "13", 3);
else if (!strcmp(rcid, "NCSOFT"))
strncpy(order, "12", 3);
else if (!strcmp(rcid, "OLSOFT"))
strncpy(order, "11", 3);
else if (!strcmp(rcid, "INCOK"))
strncpy(order, "10", 3);
else if (!strcmp(rcid, "FREEZONE"))
strncpy(order, "9", 3);
else if (!strcmp(rcid, "JJANGHARD"))
strncpy(order, "8", 3);
else if (!strcmp(rcid, "KTINSIDE"))
strncpy(order, "7", 3);
else if (!strcmp(rcid, "EVENT"))
strncpy(order, "6", 3);
else if (!strcmp(rcid, "ORGEL"))
strncpy(order, "5", 3);
else if (!strcmp(rcid, "RC004"))
strncpy(order, "4", 3);
else if (!strcmp(rcid, "RC003"))
strncpy(order, "3", 3);
else if (!strcmp(rcid, "SORIBADA"))
strncpy(order, "2", 3);
else if (!strcmp(rcid, "0UDISK"))
strncpy(order, "1", 3);
return order;
}
int devide(char **val, const char *str, char delim)
{
char *p;
int i, j;
val[0] = (char *)malloc(512);
memset(val[0], 0, 512);
for (p=str, i=0, j=0; *p != '\0'; p++)
{
if (*p == delim)
{
*(val[i] + j) = '\0';
j = 0;
i++;
val[i] = (char *)malloc(sizeof(char) * 2 + 1);
memset(val[i], 0, sizeof(char)*2+1);
continue;
}
else
{
*(val[i] + j++) = *p;
}
}
*(val[i] + j) = '\0';
return (i+1);
}
+1
View File
@@ -0,0 +1 @@
g++ -g -Wall -o rccheck rccheck.c -I/usr/local/include -I/usr/include -I../../include -L/usr/local/lib -L/usr/lib /user/ics10/gms/new_sh_statusd/lib/libshsdk.a -lexpat -lintl -lcrypt
+237
View File
@@ -0,0 +1,237 @@
#include <sys/time.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <errno.h>
#include <signal.h>
#include "SHSSDK.h"
#include "SHCSDK.h"
#include "protocol.h"
HSHSDK access_sh(rcacct_t *rcinfo, char *errorMsg)
{
char *serviceHost = NULL;
char *authString = NULL;
HSHSDK hshsdk = NULL;
int errorCode;
/* System Hosting Server-side SDK : 서비스 서버 얻기 */
//serviceHost = (char *)sh_get_service_host(userid, userpass, serviceId);
serviceHost = (char *)sh_get_service_host(rcinfo->m_pszUserName, rcinfo->m_pszPassword, rcinfo->m_pszServiceName);
if (!serviceHost) {
errorCode = errno;
sprintf(errorMsg, "서비스 호스트를 받아오지 못했습니다.");
if (hshsdk)
sh_free(hshsdk);
return NULL;
}
/* System Hosting Server-side SDK : 인증스트링 얻기 */
//authString = (char *)sh_get_auth_string(userid, userpass, serviceId, authKey, authFile, time(NULL) + 100000);
authString = (char *)sh_get_auth_string(rcinfo->m_pszUserName, rcinfo->m_pszPassword, rcinfo->m_pszServiceName, rcinfo->m_pszAuthkey, rcinfo->m_pszCertLocation, time(NULL) + 100000);
if (!authString) {
errorCode = errno;
sprintf(errorMsg, "인증 스트링을 받아오지 못했습니다.");
if (hshsdk)
sh_free(hshsdk);
if (serviceHost)
free(serviceHost);
return NULL;
}
/*
serviceHost = "222.122.152.33/dav";
authString = (char *)sh_get_auth_string("kpost", "kpost", "kpost", "geniuspizon", "./kpost48.cert", time(NULL) + 150000);
*/
/* System Hosting Client-side SDK : 초기화 */
hshsdk = sh_init(serviceHost, authString, NULL, NULL);
if (!hshsdk) {
errorCode = errno;
sprintf(errorMsg, "System Hosting Client-side SDK 초기화에 실패하였습니다.");
if (hshsdk)
sh_free(hshsdk);
if (serviceHost)
free(serviceHost);
if (authString)
free(authString);
return NULL;
}
#ifndef __TEST__
if (serviceHost)
free(serviceHost);
if (authString)
free(authString);
#endif
return hshsdk;
}
int check_rc(char *filename, rcacct_t *rcinfo)
{
HSHSDK hshsdk = NULL;
char local_path[128], remote_path[128], local_temp[128];
int errorCode;
char errorMsg[1024];
sprintf(local_path, "/tmp/%s", filename);
sprintf(remote_path, "/INCINERATE/%s", filename);
sprintf(local_temp, "/tmp/%s.download", filename);
unlink(local_temp);
hshsdk = access_sh(rcinfo, errorMsg);
if (hshsdk) {
errorCode = sh_upload(hshsdk, local_path, remote_path, SHWRITEPOLICY_OVERWRITE, -1);
#ifdef __DEBUG__
fprintf(stderr, "error: upload: %d:%s\n", errorCode, sh_get_error_message(hshsdk));
#endif
fprintf(stderr, "debug: step 1 - %s\n", filename);
if (errorCode == 0) {
sh_free(hshsdk);
return -1;
}
fprintf(stderr, "debug: step 2\n");
usleep(500000);
fprintf(stderr, "debug: step 3\n");
errorCode = sh_download(hshsdk, remote_path, local_temp, SHWRITEPOLICY_OVERWRITE, -1);
fprintf(stderr, "debug: step 4\n");
#ifdef __DEBUG__
fprintf(stderr, "error: download: %d:%s\n", errorCode, sh_get_error_message(hshsdk));
#endif
if (errorCode == 0) {
sh_free(hshsdk);
return -1;
}
fprintf(stderr, "debug: step 5\n");
sh_delete(hshsdk, remote_path);
fprintf(stderr, "debug: step 6\n");
sh_free(hshsdk);
} else {
#ifdef __DEBUG__
fprintf(stderr, "error: %s\n", errorMsg);
#endif
return -1;
}
unlink(local_temp);
fflush(stderr);
return 0;
}
int check_rc_updown(rcacct_t *rcinfo)
{
FILE *fp;
struct timeval tv;
char tagname[38];
char tagfull[38];
int retval = -1;
gettimeofday(&tv, NULL);
sprintf(tagname, "%d%06d", (int)tv.tv_sec, (int)tv.tv_usec);
sprintf(tagfull, "/tmp/%d%06d", (int)tv.tv_sec, (int)tv.tv_usec);
#ifdef __DEBUG__
fprintf(stderr, "tagname %s tagfull %s\n", tagname, tagfull);
#endif
if ((fp = fopen(tagfull, "w"))) {
//fprintf(fp, "%s", tagname);
fclose(fp);
/* start! */
if (check_rc(tagname, rcinfo)) {
#ifdef __DEBUG__
fprintf(stderr, "RC %s check failed\n", rcinfo->m_pszServiceName);
#endif
retval = -1;
} else {
#ifdef __DEBUG__
fprintf(stderr, "RC %s check success\n", rcinfo->m_pszServiceName);
#endif
retval = 0;
}
unlink(tagfull);
}
return retval;
}
void usage(void)
{
fprintf(stderr, "rccheck - check rc by ics sdk\n");
fprintf(stderr, " usage : rccheck <log dir> <volume> <user> <passwd> <authkey> <cert location>\n");
exit(2);
}
void HandleTimeOut(int signum)
{
fprintf(stderr, "TIMEOUT!\n");
exit(1);
return;
}
int main(int argc, char *argv[])
{
rcacct_t rcinfo;
char buf[1024];
int retval;
#ifdef __DEBUG__
fprintf(stderr, "argc %d argv %s\n", argc, argv[1]);
#endif
if (argc != 7) {
usage();
}
sprintf(buf, "mkdir -p %s\n", argv[1]);
system(buf);
memset((char *)&rcinfo, 0, sizeof(rcacct_t));
/*
typedef struct _RCAcct_e
{
char * m_pszServiceName;
char * m_pszUserName;
char * m_pszPassword;
char * m_pszAuthkey;
char * m_pszCertLocation;
struct _RCAcct_e *next;
} rcacct_t;
*/
rcinfo.m_pszServiceName = argv[2];
rcinfo.m_pszUserName = argv[3];
rcinfo.m_pszPassword = argv[4];
rcinfo.m_pszAuthkey = argv[5];
rcinfo.m_pszCertLocation = argv[6];
signal(SIGALRM, HandleTimeOut);
alarm(60);
if ((retval = check_rc_updown(&rcinfo)) != 0) {
fprintf(stderr, "RC %s check failed\n", rcinfo.m_pszServiceName);
//sleep(10);
usleep(1);
exit(1);
} else {
fprintf(stderr, "RC %s check success\n", rcinfo.m_pszServiceName);
//sleep(1);
usleep(1);
exit(0);
}
alarm(0);
exit(1);
}
@@ -0,0 +1 @@
extern int rccheck_main(char *);
+49
View File
@@ -0,0 +1,49 @@
check_rtime_serv.c: strncpy(temp_servinfo->m_pszServName, END_OF_SHM, 11);
check_rtime_serv.c: serveraddr.sin_addr.s_addr = inet_addr(servinfo->m_szIpString);
check_rtime_serv.c: serveraddr.sin_port = htons(servinfo->m_sPort);
main.c: //g_servinfo->next = Mmap(NULL, (sizeof(servinfo_t)), PROT_READ | PROT_WRITE, MAP_SHARED, fd, (sizeof(servinfo_t))*cnt);
main.c: //memset(g_servinfo->next, 0, sizeof(servinfo_t));
main.c: strncpy(g_servinfo->m_pszServName, END_OF_SHM, 11);
main_old.c: //g_servinfo->next = Mmap(NULL, (sizeof(servinfo_t)), PROT_READ | PROT_WRITE, MAP_SHARED, fd, (sizeof(servinfo_t))*cnt);
main_old.c: //memset(g_servinfo->next, 0, sizeof(servinfo_t));
main_old.c: strncpy(g_servinfo->m_pszServName, END_OF_SHM, 11);
main_old2.c: //g_servinfo->next = Mmap(NULL, (sizeof(servinfo_t)), PROT_READ | PROT_WRITE, MAP_SHARED, fd, (sizeof(servinfo_t))*cnt);
main_old2.c: //memset(g_servinfo->next, 0, sizeof(servinfo_t));
main_old2.c: strncpy(g_servinfo->m_pszServName, END_OF_SHM, 11);
main_old3.c: //g_servinfo->next = Mmap(NULL, (sizeof(servinfo_t)), PROT_READ | PROT_WRITE, MAP_SHARED, fd, (sizeof(servinfo_t))*cnt);
main_old3.c: //memset(g_servinfo->next, 0, sizeof(servinfo_t));
main_old3.c: strncpy(g_servinfo->m_pszServName, END_OF_SHM, 11);
pre_thread_model.c: serveraddr.sin_addr.s_addr = inet_addr(servinfo->m_szIpString);
pre_thread_model.c: serveraddr.sin_port = htons(servinfo->m_sPort);
pre_thread_model.c: while (strcmp(start_servinfo->m_pszServName, END_OF_SHM))
pre_thread_model.c: temp_servinfo->next = (servinfo_t *)malloc(sizeof(servinfo_t)+128);
pre_thread_model.c: memset(temp_servinfo->next, 0, sizeof(servinfo_t)+128);
pre_thread_model.c: temp_servinfo = temp_servinfo->next;
pre_thread_model.c: start_servinfo = start_servinfo->next;
pre_thread_model.c: strncpy(temp_servinfo->m_pszServName, END_OF_SHM, 11);
pre_thread_model.c: g_servinfo->next = Mmap(NULL, (sizeof(servinfo_t)+128), PROT_READ | PROT_WRITE, MAP_SHARED, fd, (sizeof(servinfo_t)+128)*cnt);
pre_thread_model.c: memset(g_servinfo->next, 0, sizeof(servinfo_t)+128);
pre_thread_model.c: g_servinfo = g_servinfo->next;
pre_thread_model.c: strncpy(g_servinfo->m_pszServName, END_OF_SHM, 11);
rcmng_client.c: strncpy(servinfo->m_pszServName, rbuffer[0], MAX_SRV_NAME);
rcmng_client.c: strncpy(servinfo->m_szIpString, rbuffer[1], MAX_IP_STRING);
rcmng_client.c: servinfo->m_sPort = atoi(rbuffer[2]);
rcmng_client.c: servinfo->m_ServType = atoi(rbuffer[3]);
rcmng_client.c: servinfo->m_DeadCount = 0;
rcmng_client.c: strncpy(servinfo->m_monitorYN, rbuffer[4], 2);
rcmng_client.c: fprintf(stderr, "SERVER NAME : %s\n", servinfo->m_pszServName);
rcmng_client.c: fprintf(stderr, "IP Address : %s\n", servinfo->m_szIpString);
rcmng_client.c: fprintf(stderr, "PORT : %d\n", servinfo->m_sPort);
rcmng_client.c: fprintf(stderr, "SERVER TYPE : %d\n", servinfo->m_ServType);
rcmng_client.c: fprintf(stderr, "Dead Count : %d\n", servinfo->m_DeadCount);
rcmng_client.c: fprintf(stderr, "Monitoring Y/N : %s\n", servinfo->m_monitorYN);
report_proc.c: strncpy(temp_servinfo->m_pszServName, END_OF_SHM, 11);
report_proc.ori.c: while (strcmp(start_servinfo->m_pszServName, END_OF_SHM))
report_proc.ori.c: strncpy(temp_servinfo->m_pszServName, END_OF_SHM, 11);
report_proc.ori.c: strncpy(init_servinfo->m_pszServName, END_OF_SHM, 11);
report_proc_old.c: while (strcmp(start_servinfo->m_pszServName, END_OF_SHM))
report_proc_old.c: temp_servinfo->next = (servinfo_t *)malloc(sizeof(servinfo_t));
report_proc_old.c: memset(temp_servinfo->next, 0, sizeof(servinfo_t));
report_proc_old.c: temp_servinfo = temp_servinfo->next;
report_proc_old.c: strncpy(temp_servinfo->m_pszServName, END_OF_SHM, 11);
report_proc_old.c: strncpy(g_servinfo->m_pszServName, END_OF_SHM, 11);
+704
View File
@@ -0,0 +1,704 @@
#include "unp.h"
#include "unpipc.h"
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/sem.h>
#define PGCONN_STRING "host=%s port=%s dbname=%s user=%s password=%s"
#define DEBUG_MODE 1
#define RELEASE_MODE 0
//const char a_ServType[NumOfServerType][MaxSizeOfServerType] = {"WWW", "RTS", "RC", "CCDB", "RCTS", "GTS", "RCDB", "GMS", "TIMED", "STAT"};
const char a_ServType[NumOfServerType][MaxSizeOfServerType] = {"RC", "STAT", "RTS", "RCTS", "RCDB", "WWW", "CCDB", "GTS", "GMS", "TIMED", "CACHE"};
static int SetSigHandle(int Option);
#if defined(__GNU_LIBRARY__) && !defined(_SEM_SEMUN_UNDEFINED)
/* union semun is defined by including <sys/sem.h> */
#else
/* according to X/OPEN we have to define it ourselves */
union semun {
int val; /* SETVAL을 위한값 */
struct semid_ds *buf; /* IPC_STAT, IPC_SET을 위한 버퍼 */
unsigned short int *array; /* GETALL, SETALL을 위한 배열 */
struct seminfo *__buf; /* IPC_INFO을 위한 버퍼 */
};
#endif
int main(int argc, char **argv)
{
void sig_int(int);
void sig_int_report(int);
void sig_chld(int);
void vrcd_thread_make(int);
void report_thread_make();
pid_t check_process();
pid_t send_update_process();
pid_t vrcd_process();
/* declare Server List Structure */
//servinfo_t *g_servinfo;
servinfo_t *start_servinfo;
g_shm_t *g_shm_ptr;
union semun sem_union;
MYSQL mysql;
MYSQL_RES *res;
MYSQL_ROW row;
PGconn *conn;
PGresult *result;
void *shared_memory = (void *)0;
int fd;
int mysql_port, fields;
int shmid;
long numRows;
pid_t pids[3];
char mysql_db[8];
char mysql_user[16];
char mysql_pass[16];
char pg_addr[30];
char pg_port[10];
char pg_name[30];
char pg_acct[30];
char pg_pass[30];
char pgsql_query[1024];
/* damonlizing... */
//makedaemon(DEBUG_MODE);
makedaemon(RELEASE_MODE);
//setproctitle("Parents(guard): initialize");
/* initialize mysqlDB */
mysql_init(&mysql);
/* Load conf file */
SetIniName(CFGFILE);
GetProfile("PGSQL", "DATABASE_ADDR", pg_addr, "");
GetProfile("PGSQL", "DATABASE_PORT", pg_port, "");
GetProfile("PGSQL", "DATABASE_NAME", pg_name, "");
GetProfile("PGSQL", "DATABASE_ACCT", pg_acct, "");
GetProfile("PGSQL", "DATABASE_PW", pg_pass, "");
GetProfile("MYSQL", "DATABASE_NAME", mysql_db, "CCDB");
GetProfile("MYSQL", "DATABASE_ACCT", mysql_user, "root");
GetProfile("MYSQL", "DATABASE_PW", mysql_pass, "alfkzmf!?{}");
mysql_port = GetProfileInt("MYSQL", "DATABASE_PORT", 3306);
WriteSHLog_safe("[PG]DATABASE_ADDR -->%s\n", pg_addr);
WriteSHLog_safe("[PG]DATABASE_PORT -->%s\n", pg_port);
WriteSHLog_safe("[PG]DATABASE_NAME -->%s\n", pg_name);
WriteSHLog_safe("[PG]DATABASE_ACCT -->%s\n", pg_acct);
WriteSHLog_safe("[PG]DATABASE_PW -->%s\n\n", pg_pass);
WriteSHLog_safe("[MY]DATABASE_NAME -->%s\n", mysql_db);
WriteSHLog_safe("[MY]DATABASE_ACCT -->%s\n", mysql_user);
WriteSHLog_safe("[MY]DATABASE_PW -->%s\n", mysql_pass);
WriteSHLog_safe("[MY}DATABASE_PORT -->%d\n", mysql_port);
/* connect mysqlDB */
if (!mysql_real_connect(&mysql, NULL, mysql_user, mysql_pass, mysql_db, mysql_port, (char *)NULL, 0))
{
fprintf(stderr, "%s\n", mysql_error(&mysql));
WriteSHLog_safe("%s\n", mysql_error(&mysql));
exit(EXIT_FAILURE);
}
WriteSHLog_safe("Query to get arranged Server List :: %s\n", MYQUERY);
/* start transaction */
mysql_autocommit(&mysql, 0);
if (mysql_query(&mysql, MYQUERY))
{
fprintf(stderr, "[error]%s\n", mysql_error(&mysql));
WriteSHLog_safe("[error]%s\n", mysql_error(&mysql));
mysql_rollback(&mysql);
}
else
{
fprintf(stderr, "[MySQL]Server List Loading Success!!\n");
WriteSHLog_safe("%s\n", "[MySQL]Server List Loading Success!!");
mysql_commit(&mysql);
}
res = mysql_store_result(&mysql);
fields = mysql_num_fields(res);
numRows = mysql_num_rows(res);
#ifdef __SETLOG__
WriteSHLog_safe("numRows --> %ld, Sizeof structure servinfo_t : %d\n", numRows, sizeof(servinfo_t));
#endif
/* connect postgreSQL */
snprintf(pgsql_query, 1024, PGCONN_STRING, pg_addr, pg_port, pg_name, pg_acct, pg_pass);
conn = PQconnectdb(pgsql_query);
//conn = PQconnectdb("host=211.38.137.34 port=5432 dbname=opendisk user=opendisk password=os1234!");
if (PQstatus(conn) == CONNECTION_BAD)
{
fprintf(stderr, "pgSQL Connection failed, %s\n", PQerrorMessage(conn));
WriteSHLog_safe("pgSQL Connection failed, %s\n", PQerrorMessage(conn));
if (conn != NULL)
PQfinish(conn);
exit(EXIT_FAILURE);
}
else
{
fprintf(stderr, "pgSQL Connected OK!\n");
WriteSHLog("pgSQL Connected OK!\n");
}
result = PQexec(conn, "select now() ");
if (!result)
{
fprintf(stderr, "PQexec command failed, no error code\n");
WriteSHLog("PQexec command failed, no error code\n");
}
else
{
switch (PQresultStatus(result))
{
case PGRES_COMMAND_OK:
WriteSHLog_safe("Command executed OK, %s rows affected\n", PQcmdTuples(result));
break;
case PGRES_TUPLES_OK:
WriteSHLog_safe("Query may have returned data. %d rows found\n", PQntuples(result));
break;
default:
WriteSHLog_safe("Command failed with code %s, error message %s\n", PQresStatus(PQresultStatus(result)), PQresultErrorMessage(result));
break;
}
PQclear(result);
}
//close postgreSQL
PQfinish(conn);
/**************************************************************/
/******************** create system V shm *********************/
/**************************************************************/
shmid = shmget((key_t)6677, sizeof(g_shm_t), 0666|IPC_CREAT);
if (shmid == -1)
{
WriteSHLog("system V shmget failed\n");
exit(EXIT_FAILURE);
}
shared_memory = shmat(shmid, (void *)0, 0);
if (shared_memory == (void *)-1)
{
WriteSHLog("system V shmat failed\n");
exit(EXIT_FAILURE);
}
g_shm_ptr = (g_shm_t *)shared_memory;
g_shm_ptr->is_dirty = 0;
g_shm_ptr->serv_num = numRows + 1;
if (shmdt(shared_memory) == -1)
{
WriteSHLog("system V shmdt failed\n");
exit(EXIT_FAILURE);
}
WriteSHLog("create system V shm ok!!\n");
/***************************************************************/
/********************* create shared memory ********************/
/***************************************************************/
if (numRows == 0)
numRows = 1;
shm_unlink(SHM_NAME);
fd = Shm_open(SHM_NAME, O_RDWR | O_CREAT | O_EXCL | O_TRUNC, FILE_MODE);
Ftruncate(fd, sizeof(servinfo_t)*(numRows+1));
g_servinfo = Mmap(NULL, sizeof(servinfo_t)*(numRows+1), PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);
memset(g_servinfo, 0, sizeof(servinfo_t)*(numRows*1));
//Close(fd);
/***************************************************************/
int cnt = 1;
start_servinfo = g_servinfo;
while((row = mysql_fetch_row(res)))
{
addServerToList(g_servinfo, row);
//g_servinfo->next = Mmap(NULL, (sizeof(servinfo_t)), PROT_READ | PROT_WRITE, MAP_SHARED, fd, (sizeof(servinfo_t))*cnt);
//memset(g_servinfo->next, 0, sizeof(servinfo_t));
g_servinfo++;
cnt++;
}
strncpy(g_servinfo->m_pszServName, END_OF_SHM, 11);
g_servinfo = start_servinfo;
Close(fd);
WriteSHLog("create posix shared memory ok!!\n");
/****************************************************************/
/********************** create system V Semaphore ********************/
//sem_id = Semget(Ftok(SEM_NAME, 's'), 1, IPC_CREAT | SVSEM_MODE); // FreeBSD
sem_id = Semget(SEM_NAME, 1, IPC_CREAT | SVSEM_MODE); // Linux
sem_union.val = 1;
if ( -1 == Semctl(sem_id, 0, SETVAL, sem_union))
{
WriteSHLog("system V initialization fail!!\n");
return -1;
}
waitop.sem_num = 0;
waitop.sem_op = -1;
waitop.sem_flg = SEM_UNDO;
postop.sem_num = 0;
postop.sem_op = 1;
postop.sem_flg = SEM_UNDO;
/******************************************************************/
WriteSHLog("create system V semaphore ok!!\n");
/* close mysqlDB */
mysql_free_result(res);
mysql_close(&mysql);
munmap((void *)g_servinfo, get_sizeof_shm());
// server status check process
pids[0] = check_process();
// send/update sms process
pids[1] = send_update_process();
// vrcd value gathering process
pids[2] = vrcd_process();
//setproctitle("parents(status): Monitoring Three Major Process..");
for ( ; ; )
pause();
return 0;
}
pid_t check_process()
{
pid_t pid;
void check_child_process();
if ((pid = fork()) > 0)
return (pid);
check_child_process();
}
pid_t send_update_process()
{
pid_t pid;
void send_update_child_process();
if ((pid = fork()) > 0)
return (pid);
send_update_child_process();
}
pid_t vrcd_process()
{
pid_t pid;
void vrcd_child_process();
if ((pid = fork()) > 0)
return (pid);
vrcd_child_process();
}
void check_child_process()
{
void thread_func(int);
pid_t cpid;
int cstatus = 0;
while (1)
{
//setproctitle("guard(check) : initializing.......");
if ((cpid = fork()) < 0)
{
fprintf(stderr, "Cannot Fork(child)\n");
exit(0);
}
else if (cpid == 0)
{
fprintf(stderr, "start check child process\n");
SetSigHandle(0);
//check_semid = Semget(Ftok(SEM_NAME, 's'), 0, 0);
check_semid = Semget(SEM_NAME, 0, 0);
//setproctitle("child(check): running...");
chk_rtime_update_serv_status();
sleep(1);
}
//setproctitle("guard(check) : waiting... until done");
wait(&cstatus);
}
}
void send_update_child_process()
{
pid_t cpid;
int cstatus = 0;
while (1)
{
if ((cpid = fork()) < 0)
{
fprintf(stderr, "Cannot Fork(child)\n");
exit(0);
}
else if (cpid == 0)
{
fprintf(stderr, "start send, update child process\n");
SetSigHandle(0);
//report_s_lock = PTHREAD_MUTEX_INITIALIZER;
//report_u_lock = PTHREAD_MUTEX_INITIALIZER;
pthread_mutex_init( &report_s_lock, NULL);
pthread_mutex_init( &report_u_lock, NULL);
//report_semid = Semget(Ftok(SEM_NAME, 's'), 0, 0);
report_semid = Semget(SEM_NAME, 0, 0);
/* To do REPORT */
report_threads = 2;
report_tptr = Calloc(report_threads, sizeof(Thread));
/* make thread(servList update thread(0), servList send thread(1)) */
report_thread_make(2);
//setproctitle("child(send/update): running...");
for (;;)
pause();
}
//setproctitle("guard(send/update) : waiting... until done");
wait(&cstatus);
}
}
void vrcd_child_process()
{
void thread_func(int);
pid_t cpid;
int cstatus = 0;
while (1)
{
if ((cpid = fork()) < 0)
{
fprintf(stderr, "Cannot Fork(child)\n");
exit(0);
}
else if (cpid == 0)
{
int i;
char HostName[512];
char sh_port[16];
fprintf(stderr, "start vrcd child process\n");
SetSigHandle(0);
//vrcd_lock = PTHREAD_MUTEX_INITIALIZER;
//vrcd_lock2 = PTHREAD_MUTEX_INITIALIZER;
pthread_mutex_init( &vrcd_lock, NULL);
pthread_mutex_init( &vrcd_lock2, NULL);
//vrcd_semid = Semget(Ftok(SEM_NAME, 's'), 0, 0);
vrcd_semid = Semget(SEM_NAME, 0, 0);
/* To do VRCD */
GetProfile("PARAM", "HOSTNAME", HostName, "localhost");
GetProfile("PARAM", "VRCD_PORT", sh_port, "22200");
vrcd_threads = GetProfileInt("PARAM", "VRCD_THREAD_NUM", 10);
vrcdfd = Tcp_listen(HostName, sh_port, &vrcd_addrlen);
vrcd_tptr = Calloc(vrcd_threads, sizeof(Thread));
running_vrcd_thread_count = 0;
for (i = 0; i < vrcd_threads; i++)
vrcd_thread_make(i); // only main thread returns
//setproctitle("child(vrcd): running...");
for (;;)
pause();
}
//setproctitle("guard(vrcd) : waiting... until done");
wait(&cstatus);
}
}
void addServerToList(servinfo_t *serv, MYSQL_ROW row)
{
int j;
strncpy(serv->m_pszServName, (char *)row[0], MAX_SRV_NAME);
strncpy(serv->m_szIpString, (char *)row[1], MAX_IP_STRING);
serv->m_sPort = atoi(row[2]);
/* Server Type String to Integer */
for (j=0; j < NumOfServerType; j++)
{
if(!strcmp((char *)row[3], a_ServType[j]))
serv->m_ServType = j;
}
serv->m_StatChgTime = time(NULL);
if (!strncmp((char *)row[4], "N", 2))
serv->m_Status = NO_MONITOR;
else
serv->m_Status = SERV_ALIVE;
serv->m_DeadCount = 0;
strncpy(serv->m_monitorYN, (char *)row[4], 2);
serv->next = NULL;
}
int write_mylock(int g_pidfd)
{
struct flock lock;
lock.l_type = F_WRLCK;
lock.l_start = 0;
lock.l_whence = SEEK_SET;
lock.l_len = 0;
return fcntl(g_pidfd, F_SETLK, &lock);
}
int create_pid_new_sh_statusd()
{
// new version for check that Daemon is exist already
static int g_pidfd;
char buf[512];
if ((g_pidfd = open(PID_FILE_PATH, O_RDWR | O_CREAT, "w+")) < 0)
{
fprintf(stderr, "unable to open %s\n",PID_FILE_PATH);
exit(1);
}
if ( write_mylock(g_pidfd) < 0 ) {
if (errno == EACCES || errno == EAGAIN) {
return -2;
} else {
fprintf(stderr, " unable to lock %s\n", PID_FILE_PATH);
exit(1);
}
}
snprintf(buf, 512, "%d", getpid());
if (write(g_pidfd, buf, strlen(buf)) == -1)
{
fprintf(stderr, "unable to write PID\n");
exit(1);
}
return 1;
}
void makedaemon(int mode)
{
#ifdef SIGTTOU
signal(SIGTTOU, SIG_IGN);
#endif
#ifdef SIGTTIN
signal(SIGTTIN, SIG_IGN);
#endif
#ifdef SIGTSTP
signal(SIGTSTP, SIG_IGN);
#endif
#ifdef SIGINT
signal(SIGINT, SIG_IGN);
#endif
#ifdef SIGSTP
signal(SIGSTP, SIG_IGN);
#endif
pid_t pid;
if ((pid = fork()) < 0)
exit(0);
else if (pid != 0)
exit(0);
// check if Daemon is exist already
if (create_pid_new_sh_statusd() < 0)
{
fprintf(stderr, "new_sh_statusd Daemon(%d) already exist!!\n", getpid());
exit(0);
}
if (mode == 0)
{
close(0);
close(1);
close(2);
}
setsid();
}
#define DISPLAY_SIGNAL_ACTION_ERROR(rv) WriteSHLog_safe("!sigaction : %s\n", strerror(errno)); return rv
static void HandleCoreDump(int signum)
{
int kpid;
signal(signum, SIG_DFL);
WriteSHLog_safe("killed process(%d)\n", getpid());
kpid = getpid();
kill(kpid, SIGKILL);
usleep(100);
kill(kpid, SIGKILL);
sleep(1);
}
static void HandleChildHang(int signum)
{
int status = 1;
fprintf(stderr, "Signum: %d", signum);
while (waitpid(-1, &status, WNOHANG) > 0)
{
fprintf(stderr, "decrease one child process!\n");
WriteSHLog_safe("decrease one child process!\n");
}
}
static int SetSigHandle(int Option)
{
struct sigaction sa;
sigemptyset(&sa.sa_mask);
sa.sa_flags = 0;
#if defined(SA_ONESHOT)
sa.sa_flags = SA_ONESHOT;
#elif defined(SA_RESETHAND)
sa.sa_flags = SA_RESETHAND;
#endif
if(Option == 1)
{
sa.sa_handler = HandleChildHang;
if(sigaction(SIGCHLD, &sa, NULL) < 0)
{
WriteSHLog_safe("!sigaction : %s\n", strerror(errno)); return -1;
//DISPLAY_SIGNAL_ACTION_ERROR(-1);
}
}
else
{
sa.sa_handler = HandleCoreDump;
}
if(sigaction(SIGSEGV, &sa, NULL) < 0)
{
WriteSHLog_safe("!sigaction : %s\n", strerror(errno)); return -2;
//DISPLAY_SIGNAL_ACTION_ERROR(-2);
}
#ifdef SIGBUS
if(sigaction(SIGBUS, &sa, NULL) < 0)
{
WriteSHLog_safe("!sigaction : %s\n", strerror(errno)); return -3;
//DISPLAY_SIGNAL_ACTION_ERROR(-3);
}
#endif
#ifdef SIGABORT
if(sigaction(SIGABORT, &sa, NULL) < 0)
{
WriteSHLog_safe("!sigaction : %s\n", strerror(errno)); return -4;
//DISPLAY_SIGNAL_ACTION_ERROR(-4);
}
#endif
#ifdef SIGABRT
if(sigaction(SIGABRT, &sa, NULL) < 0)
{
WriteSHLog_safe("!sigaction : %s\n", strerror(errno)); return -5;
//DISPLAY_SIGNAL_ACTION_ERROR(-5);
}
#endif
#ifdef SIGILL
if(sigaction(SIGILL, &sa, NULL) < 0)
{
WriteSHLog_safe("!sigaction : %s\n", strerror(errno)); return -6;
//DISPLAY_SIGNAL_ACTION_ERROR(-6);
}
#endif
if(sigaction(SIGHUP, &sa, NULL) < 0)
{
WriteSHLog_safe("!sigaction : %s\n", strerror(errno)); return -7;
//DISPLAY_SIGNAL_ACTION_ERROR(-7);
}
if(sigaction(SIGUSR1, &sa, NULL) < 0)
{
WriteSHLog_safe("!sigaction : %s\n", strerror(errno)); return -8;
//DISPLAY_SIGNAL_ACTION_ERROR(-8);
}
#ifdef SIGINT
if(sigaction(SIGINT, &sa, NULL) < 0)
{
WriteSHLog_safe("!sigaction : %s\n", strerror(errno)); return -9;
//DISPLAY_SIGNAL_ACTION_ERROR(-9);
}
#endif
#ifdef SIGXCPU
sa.sa_handler = SIG_DFL;
if(sigaction(SIGXCPU, &sa, NULL) < 0)
{
WriteSHLog_safe("!sigaction : %s\n", strerror(errno)); return -10;
//DISPLAY_SIGNAL_ACTION_ERROR(-10);
}
#endif
#ifdef SIGXPSZ
sa.sa_handler = SIG_DFL;
if(sigaction(SIGSEGV, &sa, NULL) < 0)
{
WriteSHLog_safe("!sigaction : %s\n", strerror(errno)); return -11;
//DISPLAY_SIGNAL_ACTION_ERROR(-11);
}
#endif
#ifdef SIGPIPE
sa.sa_handler = SIG_IGN;
if(sigaction(SIGPIPE, &sa, NULL) < 0)
{
WriteSHLog_safe("!sigaction : %s\n", strerror(errno)); return -12;
//DISPLAY_SIGNAL_ACTION_ERROR(-12);
}
#endif
#ifdef SIGSYS
sa.sa_handler = SIG_IGN;
if(sigaction(SIGPIPE, &sa, NULL) < 0)
{
WriteSHLog_safe("!sigaction : %s\n", strerror(errno)); return -13;
//DISPLAY_SIGNAL_ACTION_ERROR(-13);
}
#endif
return 1;
}
void sig_chld(int signo)
{
pid_t pid;
int stat;
while ((pid = waitpid(-1, &stat, WNOHANG)) > 0)
fprintf(stderr, "child %d terminated\n", pid);
return;
}
void sig_int(int signo)
{
int i;
for (i = 0; i < vrcd_threads; i++)
fprintf(stderr, "vrcd thread %d, %ld connections\n", i, vrcd_tptr[i].thread_count);
// exit(0);
}
void sig_int_report(int signo)
{
int i;
for (i = 0; i < report_threads; i++)
fprintf(stderr, "report thread %d, %ld connections\n", i, report_tptr[i].thread_count);
// exit(0);
}
+523
View File
@@ -0,0 +1,523 @@
#include "unp.h"
#include "unpipc.h"
#define PGCONN_STRING "host=%s port=%s dbname=%s user=%s password=%s"
#define DEBUG_MODE 1
#define RELEASE_MODE 0
pthread_mutex_t vrcd_lock = PTHREAD_MUTEX_INITIALIZER;
pthread_mutex_t report_lock = PTHREAD_MUTEX_INITIALIZER;
//const char a_ServType[NumOfServerType][MaxSizeOfServerType] = {"WWW", "RTS", "RC", "CCDB", "RCTS", "GTS", "RCDB", "GMS", "TIMED", "STAT"};
const char a_ServType[NumOfServerType][MaxSizeOfServerType] = {"RC", "STAT", "RTS", "RCTS", "RCDB", "WWW", "CCDB", "GTS", "GMS", "TIMED"};
FILE *shLogFile = NULL;
char logString[1024];
int main(int argc, char **argv)
{
void sig_int(int);
void sig_int_report(int);
void sig_chld(int);
void vrcd_thread_make(int);
void report_thread_make();
/* declare Server List Structure */
//servinfo_t *g_servinfo;
servinfo_t *start_servinfo;
MYSQL mysql;
MYSQL_RES *res;
MYSQL_ROW row;
FILE *shLogFile;
PGconn *conn;
PGresult *result;
int i;
int fd;
int pid, pid2, pid3;
int status=0, status1=0;
int mysql_port, fields;
long numRows;
char mysql_db[8];
char mysql_user[16];
char mysql_pass[16];
char HostName[512];
char sh_port[16];
char pg_addr[30];
char pg_port[10];
char pg_name[30];
char pg_acct[30];
char pg_pass[30];
char pgsql_query[1024];
/* damonlizing... */
//makedaemon(DEBUG_MODE);
makedaemon(RELEASE_MODE);
setproctitle("Parents(guard): initialize");
/* sh log file open */
shLogFile = fopen(makeLogString(), "a");
if (!shLogFile)
{
fprintf(stderr, "Cannot open SH Log file!!\n");
exit(EXIT_FAILURE);
}
/* initialize mysqlDB */
mysql_init(&mysql);
/* Load conf file */
SetIniName(CFGFILE);
GetProfile("PGSQL", "DATABASE_ADDR", pg_addr, "");
GetProfile("PGSQL", "DATABASE_PORT", pg_port, "");
GetProfile("PGSQL", "DATABASE_NAME", pg_name, "");
GetProfile("PGSQL", "DATABASE_ACCT", pg_acct, "");
GetProfile("PGSQL", "DATABASE_PW", pg_pass, "");
GetProfile("MYSQL", "DATABASE_NAME", mysql_db, "CCDB");
GetProfile("MYSQL", "DATABASE_ACCT", mysql_user, "root");
GetProfile("MYSQL", "DATABASE_PW", mysql_pass, "alfkzmf!?{}");
mysql_port = GetProfileInt("MYSQL", "DATABASE_PORT", 3306);
snprintf(logString, 1024, "[PG]DATABASE_ADDR -->%s", pg_addr);
WriteSHLog(logString, shLogFile);
snprintf(logString, 1024, "[PG]DATABASE_PORT -->%s", pg_port);
WriteSHLog(logString, shLogFile);
snprintf(logString, 1024, "[PG]DATABASE_NAME -->%s", pg_name);
WriteSHLog(logString, shLogFile);
snprintf(logString, 1024, "[PG]DATABASE_ACCT -->%s", pg_acct);
WriteSHLog(logString, shLogFile);
snprintf(logString, 1024, "[PG]DATABASE_PW -->%s\n", pg_pass);
WriteSHLog(logString, shLogFile);
snprintf(logString, 1024, "[MY]DATABASE_NAME -->%s", mysql_db);
WriteSHLog(logString, shLogFile);
snprintf(logString, 1024, "[MY]DATABASE_ACCT -->%s", mysql_user);
WriteSHLog(logString, shLogFile);
snprintf(logString, 1024, "[MY]DATABASE_PW -->%s", mysql_pass);
WriteSHLog(logString, shLogFile);
snprintf(logString, 1024, "[MY}DATABASE_PORT -->%d", mysql_port);
WriteSHLog(logString, shLogFile);
/* connect mysqlDB */
if (!mysql_real_connect(&mysql, NULL, mysql_user, mysql_pass, mysql_db, mysql_port, (char *)NULL, 0))
{
fprintf(stderr, "%s\n", mysql_error(&mysql));
snprintf(logString, 1024, "%s", mysql_error(&mysql));
WriteSHLog(logString, shLogFile);
exit(EXIT_FAILURE);
}
snprintf(logString, 1024, "Query :: %s\n", MYQUERY);
WriteSHLog(logString, shLogFile);
/* start transaction */
mysql_autocommit(&mysql, 0);
if (mysql_query(&mysql, MYQUERY))
{
fprintf(stderr, "[error]%s\n", mysql_error(&mysql));
snprintf(logString, 1024, "[error]%s", mysql_error(&mysql));
WriteSHLog(logString, shLogFile);
mysql_rollback(&mysql);
}
else
{
fprintf(stderr, "[MySQL]Server List Loading Success!!\n");
snprintf(logString, 1024, "%s", "[MySQL]Server List Loading Success!!");
WriteSHLog(logString, shLogFile);
mysql_commit(&mysql);
}
res = mysql_store_result(&mysql);
fields = mysql_num_fields(res);
numRows = mysql_num_rows(res);
#ifdef __SETLOG__
snprintf(logString, 1024, "numRows --> %ld, Sizeof structure servinfo_t : %d", numRows, sizeof(servinfo_t));
WriteSHLog(logString, shLogFile);
#endif
/* connect postgreSQL */
snprintf(pgsql_query, 1024, PGCONN_STRING, pg_addr, pg_port, pg_name, pg_acct, pg_pass);
conn = PQconnectdb(pgsql_query);
//conn = PQconnectdb("host=211.38.137.34 port=5432 dbname=opendisk user=opendisk password=os1234!");
if (PQstatus(conn) == CONNECTION_BAD)
{
fprintf(stderr, "pgSQL Connection failed, %s\n", PQerrorMessage(conn));
snprintf(logString, 1024, "pgSQL Connection failed, %s", PQerrorMessage(conn));
WriteSHLog(logString, shLogFile);
if (conn != NULL)
PQfinish(conn);
exit(EXIT_FAILURE);
}
else
{
fprintf(stderr, "pgSQL Connected OK!\n");
WriteSHLog("pgSQL Connected OK!", shLogFile);
}
result = PQexec(conn, "select now() ");
if (!result)
{
fprintf(stderr, "PQexec command failed, no error code\n");
WriteSHLog("PQexec command failed, no error code", shLogFile);
}
else
{
switch (PQresultStatus(result))
{
case PGRES_COMMAND_OK:
snprintf(logString, 1024, "Command executed OK, %s rows affected", PQcmdTuples(result));
WriteSHLog(logString, shLogFile);
break;
case PGRES_TUPLES_OK:
snprintf(logString, 1024, "Query may have returned data. %d rows found", PQntuples(result));
WriteSHLog(logString, shLogFile);
break;
default:
snprintf(logString, 1024, "Command failed with code %s, error message %s", PQresStatus(PQresultStatus(result)), PQresultErrorMessage(result));
WriteSHLog(logString, shLogFile);
break;
}
PQclear(result);
}
//close postgreSQL
PQfinish(conn);
/***************************************************************/
/********************* create shared memory ********************/
/***************************************************************/
if (numRows == 0)
numRows = 1;
shm_unlink(SHM_NAME);
fd = Shm_open(SHM_NAME, O_RDWR | O_CREAT | O_EXCL | O_TRUNC, FILE_MODE);
Ftruncate(fd, (sizeof(servinfo_t)*(numRows+1)));
g_servinfo = Mmap(NULL, (sizeof(servinfo_t)*(numRows+1)), PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);
memset(g_servinfo, 0, sizeof(servinfo_t)*numRows);
//Close(fd);
/***************************************************************/
/***************************************************************/
/***************************************************************/
int cnt = 1;
start_servinfo = g_servinfo;
while((row = mysql_fetch_row(res)))
{
addServerToList(g_servinfo, row);
//g_servinfo->next = Mmap(NULL, (sizeof(servinfo_t)), PROT_READ | PROT_WRITE, MAP_SHARED, fd, (sizeof(servinfo_t))*cnt);
//memset(g_servinfo->next, 0, sizeof(servinfo_t));
g_servinfo++;
cnt++;
}
strncpy(g_servinfo->m_pszServName, END_OF_SHM, 11);
g_servinfo = start_servinfo;
Close(fd);
/****************************************************************/
/********************** create Semaphore mutex ********************/
sem_unlink(SEM_NAME);
sem_mutex = Sem_open(SEM_NAME, O_RDWR | O_CREAT | O_EXCL, FILE_MODE, 1);
Sem_close(sem_mutex);
/******************************************************************/
/* close mysqlDB */
mysql_free_result(res);
mysql_close(&mysql);
fflush(shLogFile);
Signal(SIGCHLD, sig_chld);
/* start fork to service */
if ( (pid = fork()) < 0 )
{
fprintf(stderr, "Cannot Fork(VRCD)\n");
exit(EXIT_FAILURE);
}
else if ( pid == 0 )
{
int vrcd_stat;
fprintf(stderr, "Start VRCD Child Process!!\n");
setproctitle("child(vrcd): initialize");
/* To do VRCD */
GetProfile("PARAM", "HOSTNAME", HostName, "localhost");
GetProfile("PARAM", "VRCD_PORT", sh_port, "22200");
vrcd_threads = GetProfileInt("PARAM", "VRCD_THREAD_NUM", 4);
vrcdfd = Tcp_listen(HostName, sh_port, &vrcd_addrlen);
vrcd_tptr = Calloc(vrcd_threads, sizeof(Thread));
sem_mutex = Sem_open(SEM_NAME, 0);
for (i = 0; i < vrcd_threads; i++)
vrcd_thread_make(i); // only main thread returns
setproctitle("child(vrcd): running");
for (i = 0; i < vrcd_threads; i++)
{
Pthread_join(vrcd_tptr[i].thread_tid, (void *)&vrcd_stat);
snprintf(logString, 1024, "vrcd thread join : %d", vrcd_stat);
WriteSHLog(logString, shLogFile);
}
//for ( ; ; )
// pause();
}
else
{
if ( (pid2=fork()) < 0 )
{
fprintf(stderr, "Cannot Fork(REPORT)\n");
exit(EXIT_FAILURE);
}
else if (pid2 == 0)
{
//int report_stat;
fprintf(stderr, "Start REPORT(update,send) Child Process!!\n");
setproctitle("child(update,send): initialize");
/* To do REPORT */
report_threads = 2;
report_tptr = Calloc(report_threads, sizeof(Thread));
sem_mutex = Sem_open(SEM_NAME, 0);
/* make thread(servList update thread(0), servList send thread(1)) */
report_thread_make(2);
setproctitle("child(update,send): running");
if ( (pid3=fork()) < 0 )
{
fprintf(stderr, "Cannot Fork(REPORT)\n");
exit(EXIT_FAILURE);
}
else if (pid3 == 0)
{
// Checking Real Time Update Server Status
fprintf(stderr, "Start REPORT Child(check) Process!!\n");
setproctitle("child(check): initialize");
chk_rtime_update_serv_status();
}
else
{
wait(&status);
}
}
else
{
setproctitle("Parents(guard): waiting");
wait(&status1);
/* to remove a mapping from the address space of the process */
//munmap((void *)g_servinfo, get_sizeof_shm());
}
/* when all processes have finished */
/* to remove a mapping from the address space of the process */
//munmap((void *)g_servinfo, get_sizeof_shm());
}
/* close sh log file */
fflush(shLogFile);
if (shLogFile)
fclose(shLogFile);
exit(EXIT_SUCCESS);
}
void addServerToList(servinfo_t *serv, MYSQL_ROW row)
{
int j;
strncpy(serv->m_pszServName, (char *)row[0], MAX_SRV_NAME);
strncpy(serv->m_szIpString, (char *)row[1], MAX_IP_STRING);
serv->m_sPort = atoi(row[2]);
/* Server Type String to Integer */
for (j=0; j < NumOfServerType; j++)
{
if(!strcmp((char *)row[3], a_ServType[j]))
serv->m_ServType = j;
}
serv->m_StatChgTime = time(NULL);
serv->m_Status = SERV_ALIVE;
serv->m_DeadCount = 0;
strncpy(serv->m_monitorYN, (char *)row[4], 2);
serv->next = NULL;
}
void makedaemon(int mode)
{
#ifdef SIGTTOU
signal(SIGTTOU, SIG_IGN);
#endif
#ifdef SIGTTIN
signal(SIGTTIN, SIG_IGN);
#endif
#ifdef SIGTSTP
signal(SIGTSTP, SIG_IGN);
#endif
#ifdef SIGINT
signal(SIGINT, SIG_IGN);
#endif
#ifdef SIGSTP
signal(SIGSTP, SIG_IGN);
#endif
pid_t pid;
if ((pid = fork()) < 0)
exit(0);
else if (pid != 0)
exit(0);
if (mode == 0)
{
close(0);
close(1);
}
setsid();
}
/*
#define DISPLAY_SIGNAL_ACTION_ERROR( rv) LFile << "!sigaction : " << strerror(errno) << EL; return rv
static void HandleCoreDump(int signum)
{
::chdir(DEFAULT_LOGFILE_PATH);
::signal(signum, SIG_DFL);
::kill(getpid(), SIGKILL);
}
static void HandleChildHang(int signum)
{
int status = 1;
LogToFile LFile(g_logPath, g_logPrefix, 0);
fprintf(stderr, "Signum: %d", signum);
//cerr << "Signum:" << signum << EL;
LFile << "!Worker Process " << (int)getpid() << " is dead. " << EL;
while (waitpid(-1, &status, WNOHANG) > 0) g_pWProcManager->dcrNoProc();
}
static int SetSigHandle(int Option)
{
struct sigaction sa;
LogToFile LFile(g_logPath, g_logPrefix, 0);
sigemptyset(&sa.sa_mask);
sa.sa_flags = 0;
#if defined(SA_ONESHOT)
sa.sa_flags = SA_ONESHOT;
#elif defined(SA_RESETHAND)
sa.sa_flags = SA_RESETHAND;
#endif
if(Option == 1)
{
sa.sa_handler = HandleChildHang;
if(sigaction(SIGCHLD, &sa, NULL) < 0)
{
DISPLAY_SIGNAL_ACTION_ERROR(-1);
}
}
else
{
sa.sa_handler = HandleCoreDump;
}
if(sigaction(SIGSEGV, &sa, NULL) < 0)
{
DISPLAY_SIGNAL_ACTION_ERROR(-2);
}
#ifdef SIGBUS
if(sigaction(SIGBUS, &sa, NULL) < 0)
{
DISPLAY_SIGNAL_ACTION_ERROR(-3);
}
#endif
#ifdef SIGABORT
if(sigaction(SIGABORT, &sa, NULL) < 0)
{
DISPLAY_SIGNAL_ACTION_ERROR(-4);
}
#endif
#ifdef SIGABRT
if(sigaction(SIGABRT, &sa, NULL) < 0)
{
DISPLAY_SIGNAL_ACTION_ERROR(-5);
}
#endif
#ifdef SIGILL
if(sigaction(SIGILL, &sa, NULL) < 0)
{
DISPLAY_SIGNAL_ACTION_ERROR(-6);
}
#endif
if(sigaction(SIGHUP, &sa, NULL) < 0)
{
DISPLAY_SIGNAL_ACTION_ERROR(-7);
}
if(sigaction(SIGUSR1, &sa, NULL) < 0)
{
DISPLAY_SIGNAL_ACTION_ERROR(-8);
}
#ifdef SIGINT
if(sigaction(SIGINT, &sa, NULL) < 0)
{
DISPLAY_SIGNAL_ACTION_ERROR(-9);
}
#endif
#ifdef SIGXCPU
sa.sa_handler = SIG_DFL;
if(sigaction(SIGXCPU, &sa, NULL) < 0)
{
DISPLAY_SIGNAL_ACTION_ERROR(-10);
}
#endif
#ifdef SIGXPSZ
sa.sa_handler = SIG_DFL;
if(sigaction(SIGSEGV, &sa, NULL) < 0)
{
DISPLAY_SIGNAL_ACTION_ERROR(-11);
}
#endif
#ifdef SIGPIPE
sa.sa_handler = SIG_IGN;
if(sigaction(SIGPIPE, &sa, NULL) < 0)
{
DISPLAY_SIGNAL_ACTION_ERROR(-12);
}
#endif
#ifdef SIGSYS
sa.sa_handler = SIG_IGN;
if(sigaction(SIGPIPE, &sa, NULL) < 0)
{
DISPLAY_SIGNAL_ACTION_ERROR(-13);
}
#endif
return 1;
}
*/
void sig_chld(int signo)
{
pid_t pid;
int stat;
while ((pid = waitpid(-1, &stat, WNOHANG)) > 0)
fprintf(stderr, "child %d terminated\n", pid);
return;
}
void sig_int(int signo)
{
int i;
for (i = 0; i < vrcd_threads; i++)
fprintf(stderr, "vrcd thread %d, %ld connections\n", i, vrcd_tptr[i].thread_count);
// exit(0);
}
void sig_int_report(int signo)
{
int i;
for (i = 0; i < report_threads; i++)
fprintf(stderr, "report thread %d, %ld connections\n", i, report_tptr[i].thread_count);
// exit(0);
}
+560
View File
@@ -0,0 +1,560 @@
#include "unp.h"
#include "unpipc.h"
#define PGCONN_STRING "host=%s port=%s dbname=%s user=%s password=%s"
#define DEBUG_MODE 1
#define RELEASE_MODE 0
pthread_mutex_t vrcd_lock = PTHREAD_MUTEX_INITIALIZER;
pthread_mutex_t report_lock = PTHREAD_MUTEX_INITIALIZER;
//const char a_ServType[NumOfServerType][MaxSizeOfServerType] = {"WWW", "RTS", "RC", "CCDB", "RCTS", "GTS", "RCDB", "GMS", "TIMED", "STAT"};
const char a_ServType[NumOfServerType][MaxSizeOfServerType] = {"RC", "STAT", "RTS", "RCTS", "RCDB", "WWW", "CCDB", "GTS", "GMS", "TIMED"};
FILE *shLogFile = NULL;
char logString[1024];
int main(int argc, char **argv)
{
static int SetSigHandle(int Option);
void sig_int(int);
void sig_int_report(int);
void sig_chld(int);
void vrcd_thread_make(int);
void report_thread_make();
/* declare Server List Structure */
//servinfo_t *g_servinfo;
servinfo_t *start_servinfo;
MYSQL mysql;
MYSQL_RES *res;
MYSQL_ROW row;
FILE *shLogFile;
PGconn *conn;
PGresult *result;
int i;
int fd;
int pid;
int status=0;
int mysql_port, fields;
long numRows;
char mysql_db[8];
char mysql_user[16];
char mysql_pass[16];
char HostName[512];
char sh_port[16];
char pg_addr[30];
char pg_port[10];
char pg_name[30];
char pg_acct[30];
char pg_pass[30];
char pgsql_query[1024];
/* damonlizing... */
//makedaemon(DEBUG_MODE);
makedaemon(RELEASE_MODE);
setproctitle("Parents(guard): initialize");
/* sh log file open */
shLogFile = fopen(makeLogString(), "a");
if (!shLogFile)
{
fprintf(stderr, "Cannot open SH Log file!!\n");
exit(EXIT_FAILURE);
}
/* initialize mysqlDB */
mysql_init(&mysql);
/* Load conf file */
SetIniName(CFGFILE);
GetProfile("PGSQL", "DATABASE_ADDR", pg_addr, "");
GetProfile("PGSQL", "DATABASE_PORT", pg_port, "");
GetProfile("PGSQL", "DATABASE_NAME", pg_name, "");
GetProfile("PGSQL", "DATABASE_ACCT", pg_acct, "");
GetProfile("PGSQL", "DATABASE_PW", pg_pass, "");
GetProfile("MYSQL", "DATABASE_NAME", mysql_db, "CCDB");
GetProfile("MYSQL", "DATABASE_ACCT", mysql_user, "root");
GetProfile("MYSQL", "DATABASE_PW", mysql_pass, "alfkzmf!?{}");
mysql_port = GetProfileInt("MYSQL", "DATABASE_PORT", 3306);
snprintf(logString, 1024, "[PG]DATABASE_ADDR -->%s", pg_addr);
WriteSHLog(logString, shLogFile);
snprintf(logString, 1024, "[PG]DATABASE_PORT -->%s", pg_port);
WriteSHLog(logString, shLogFile);
snprintf(logString, 1024, "[PG]DATABASE_NAME -->%s", pg_name);
WriteSHLog(logString, shLogFile);
snprintf(logString, 1024, "[PG]DATABASE_ACCT -->%s", pg_acct);
WriteSHLog(logString, shLogFile);
snprintf(logString, 1024, "[PG]DATABASE_PW -->%s\n", pg_pass);
WriteSHLog(logString, shLogFile);
snprintf(logString, 1024, "[MY]DATABASE_NAME -->%s", mysql_db);
WriteSHLog(logString, shLogFile);
snprintf(logString, 1024, "[MY]DATABASE_ACCT -->%s", mysql_user);
WriteSHLog(logString, shLogFile);
snprintf(logString, 1024, "[MY]DATABASE_PW -->%s", mysql_pass);
WriteSHLog(logString, shLogFile);
snprintf(logString, 1024, "[MY}DATABASE_PORT -->%d", mysql_port);
WriteSHLog(logString, shLogFile);
/* connect mysqlDB */
if (!mysql_real_connect(&mysql, NULL, mysql_user, mysql_pass, mysql_db, mysql_port, (char *)NULL, 0))
{
fprintf(stderr, "%s\n", mysql_error(&mysql));
snprintf(logString, 1024, "%s", mysql_error(&mysql));
WriteSHLog(logString, shLogFile);
exit(EXIT_FAILURE);
}
snprintf(logString, 1024, "Query :: %s\n", MYQUERY);
WriteSHLog(logString, shLogFile);
/* start transaction */
mysql_autocommit(&mysql, 0);
if (mysql_query(&mysql, MYQUERY))
{
fprintf(stderr, "[error]%s\n", mysql_error(&mysql));
snprintf(logString, 1024, "[error]%s", mysql_error(&mysql));
WriteSHLog(logString, shLogFile);
mysql_rollback(&mysql);
}
else
{
fprintf(stderr, "[MySQL]Server List Loading Success!!\n");
snprintf(logString, 1024, "%s", "[MySQL]Server List Loading Success!!");
WriteSHLog(logString, shLogFile);
mysql_commit(&mysql);
}
res = mysql_store_result(&mysql);
fields = mysql_num_fields(res);
numRows = mysql_num_rows(res);
#ifdef __SETLOG__
snprintf(logString, 1024, "numRows --> %ld, Sizeof structure servinfo_t : %d", numRows, sizeof(servinfo_t));
WriteSHLog(logString, shLogFile);
#endif
/* connect postgreSQL */
snprintf(pgsql_query, 1024, PGCONN_STRING, pg_addr, pg_port, pg_name, pg_acct, pg_pass);
conn = PQconnectdb(pgsql_query);
//conn = PQconnectdb("host=211.38.137.34 port=5432 dbname=opendisk user=opendisk password=os1234!");
if (PQstatus(conn) == CONNECTION_BAD)
{
fprintf(stderr, "pgSQL Connection failed, %s\n", PQerrorMessage(conn));
snprintf(logString, 1024, "pgSQL Connection failed, %s", PQerrorMessage(conn));
WriteSHLog(logString, shLogFile);
if (conn != NULL)
PQfinish(conn);
exit(EXIT_FAILURE);
}
else
{
fprintf(stderr, "pgSQL Connected OK!\n");
WriteSHLog("pgSQL Connected OK!", shLogFile);
}
result = PQexec(conn, "select now() ");
if (!result)
{
fprintf(stderr, "PQexec command failed, no error code\n");
WriteSHLog("PQexec command failed, no error code", shLogFile);
}
else
{
switch (PQresultStatus(result))
{
case PGRES_COMMAND_OK:
snprintf(logString, 1024, "Command executed OK, %s rows affected", PQcmdTuples(result));
WriteSHLog(logString, shLogFile);
break;
case PGRES_TUPLES_OK:
snprintf(logString, 1024, "Query may have returned data. %d rows found", PQntuples(result));
WriteSHLog(logString, shLogFile);
break;
default:
snprintf(logString, 1024, "Command failed with code %s, error message %s", PQresStatus(PQresultStatus(result)), PQresultErrorMessage(result));
WriteSHLog(logString, shLogFile);
break;
}
PQclear(result);
}
//close postgreSQL
PQfinish(conn);
/***************************************************************/
/********************* create shared memory ********************/
/***************************************************************/
if (numRows == 0)
numRows = 1;
shm_unlink(SHM_NAME);
fd = Shm_open(SHM_NAME, O_RDWR | O_CREAT | O_EXCL | O_TRUNC, FILE_MODE);
Ftruncate(fd, (sizeof(servinfo_t)*(numRows+1)));
g_servinfo = Mmap(NULL, (sizeof(servinfo_t)*(numRows+1)), PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);
memset(g_servinfo, 0, sizeof(servinfo_t)*numRows);
//Close(fd);
/***************************************************************/
/***************************************************************/
/***************************************************************/
int cnt = 1;
start_servinfo = g_servinfo;
while((row = mysql_fetch_row(res)))
{
addServerToList(g_servinfo, row);
//g_servinfo->next = Mmap(NULL, (sizeof(servinfo_t)), PROT_READ | PROT_WRITE, MAP_SHARED, fd, (sizeof(servinfo_t))*cnt);
//memset(g_servinfo->next, 0, sizeof(servinfo_t));
g_servinfo++;
cnt++;
}
strncpy(g_servinfo->m_pszServName, END_OF_SHM, 11);
g_servinfo = start_servinfo;
Close(fd);
/****************************************************************/
/********************** create Semaphore mutex ********************/
sem_unlink(SEM_NAME);
sem_mutex = Sem_open(SEM_NAME, O_RDWR | O_CREAT | O_EXCL, FILE_MODE, 1);
Sem_close(sem_mutex);
/******************************************************************/
/* close mysqlDB */
mysql_free_result(res);
mysql_close(&mysql);
fflush(shLogFile);
//Signal(SIGCHLD, sig_chld);
if ( (pid = fork()) < 0 )
{
fprintf(stderr, "Cannot Fork(VRCD)\n");
fprintf(shLogFile, "Cannot Fork(VRCD)\n");
exit(EXIT_FAILURE);
}
else if ( pid == 0 )
{
// REPORT Guard Process
setproctitle("guarad(report): initialize..");
while (1)
{
int cpid = 0;
int status = 0;
setproctitle("guard(report): fork mother");
if ( (cpid = fork()) < 0 )
{
fprintf(stderr, "Cannot make REPORT Guard Process : %s\n", strerror(errno));
fprintf(shLogFile, "Cannot make REPORT Guard Process : %s\n", strerror(errno));
exit(EXIT_FAILURE);
}
else if (cpid == 0)
{
int ccpid = 0;
int cstatus = 0;
//int report_stat;
fprintf(stderr, "Start REPORT Child Process!!\n");
fprintf(shLogFile, "Start REPORT Child Process!!\n");
setproctitle("child(report): initialize");
SetSigHandle(0);
/* To do REPORT */
report_threads = 2;
report_tptr = Calloc(report_threads, sizeof(Thread));
sem_mutex = Sem_open(SEM_NAME, 0);
/* make thread(servList update thread(0), servList send thread(1)) */
report_thread_make(2);
setproctitle("child(send,update): running");
// Checking Real Time Update Server Status
if ((ccpid = fork()) < 0)
{
fprintf(stderr, "Cannot make REPORT Grand-Child Process!!\n");
fprintf(shLogFile, "Cannot make REPORT Grand-Child Process!!\n");
exit(EXIT_FAILURE);
}
else if (ccpid == 0)
{
fprintf(stderr, "Start REPORT Grand-Child Process!!\n");
fprintf(shLogFile, "Start REPORT Grand-Child Process!!\n");
chk_rtime_update_serv_status();
}
wait(&cstatus);
sleep(1);
SafeProcessRunSpinWait();
}
setproctitle("guard(report): wait mother dead");
wait(&status);
}
}
else
{
// VRCD GUARD PROCESS
setproctitle("guard(vrcd): initialize..");
while (1)
{
int cpid = 0;
int status = 0;
setproctitle("guard(vrcd): fork mother");
if ((cpid = fork()) < 0)
{
fprintf(stderr, "Cannot make VRCD Guard Process : %s\n", strerror(errno));
fprintf(shLogFile, "Cannot make VRCD Guard Process : %s\n", strerror(errno));
exit(EXIT_FAILURE);
}
else if (cpid == 0)
{
int vrcd_stat;
fprintf(stderr, "Start VRCD Child Process!!\n");
fprintf(shLogFile, "Start VRCD Child Process!!\n");
setproctitle("child(vrcd): initialize");
SetSigHandle(0);
/* To do VRCD */
GetProfile("PARAM", "HOSTNAME", HostName, "localhost");
GetProfile("PARAM", "VRCD_PORT", sh_port, "22200");
vrcd_threads = GetProfileInt("PARAM", "VRCD_THREAD_NUM", 4);
vrcdfd = Tcp_listen(HostName, sh_port, &vrcd_addrlen);
vrcd_tptr = Calloc(vrcd_threads, sizeof(Thread));
sem_mutex = Sem_open(SEM_NAME, 0);
for (i = 0; i < vrcd_threads; i++)
vrcd_thread_make(i); // only main thread returns
setproctitle("child(vrcd): running");
/*
for (i = 0; i < vrcd_threads; i++)
{
Pthread_join(vrcd_tptr[i].thread_tid, (void *)&vrcd_stat);
snprintf(logString, 1024, "vrcd thread join : %d", vrcd_stat);
WriteSHLog(logString, shLogFile);
}
*/
sleep(1);
for ( ; ; )
pause();
}
setproctitle("guard(vrcd): wait mother dead");
wait(&status);
}
}
/* close sh log file */
fflush(shLogFile);
if (shLogFile)
fclose(shLogFile);
exit(EXIT_SUCCESS);
}
void addServerToList(servinfo_t *serv, MYSQL_ROW row)
{
int j;
strncpy(serv->m_pszServName, (char *)row[0], MAX_SRV_NAME);
strncpy(serv->m_szIpString, (char *)row[1], MAX_IP_STRING);
serv->m_sPort = atoi(row[2]);
/* Server Type String to Integer */
for (j=0; j < NumOfServerType; j++)
{
if(!strcmp((char *)row[3], a_ServType[j]))
serv->m_ServType = j;
}
serv->m_StatChgTime = time(NULL);
serv->m_Status = SERV_ALIVE;
serv->m_DeadCount = 0;
strncpy(serv->m_monitorYN, (char *)row[4], 2);
serv->next = NULL;
}
void makedaemon(int mode)
{
#ifdef SIGTTOU
signal(SIGTTOU, SIG_IGN);
#endif
#ifdef SIGTTIN
signal(SIGTTIN, SIG_IGN);
#endif
#ifdef SIGTSTP
signal(SIGTSTP, SIG_IGN);
#endif
#ifdef SIGINT
signal(SIGINT, SIG_IGN);
#endif
#ifdef SIGSTP
signal(SIGSTP, SIG_IGN);
#endif
pid_t pid;
if ((pid = fork()) < 0)
exit(0);
else if (pid != 0)
exit(0);
if (mode == 0)
{
close(0);
close(1);
}
setsid();
}
#define DISPLAY_SIGNAL_ACTION_ERROR(rv) fprintf(shLogFile, "!sigaction : %s\n", strerror(errno)); return rv
static void HandleCoreDump(int signum)
{
chdir(DEFAULT_LOGFILE_PATH);
signal(signum, SIG_DFL);
fprintf(shLogFile, "killed process(%d)\n", getpid());
kill(getpid(), SIGKILL);
}
static void HandleChildHang(int signum)
{
int status = 1;
fprintf(stderr, "Signum: %d", signum);
//cerr << "Signum:" << signum << EL;
//LFile << "!Worker Process " << (int)getpid() << " is dead. " << EL;
while (waitpid(-1, &status, WNOHANG) > 0)
fprintf(stderr, "decrease one child process!\n");
//g_pWProcManager->dcrNoProc();
}
static int SetSigHandle(int Option)
{
struct sigaction sa;
//LogToFile LFile(g_logPath, g_logPrefix, 0);
sigemptyset(&sa.sa_mask);
sa.sa_flags = 0;
#if defined(SA_ONESHOT)
sa.sa_flags = SA_ONESHOT;
#elif defined(SA_RESETHAND)
sa.sa_flags = SA_RESETHAND;
#endif
if(Option == 1)
{
sa.sa_handler = HandleChildHang;
if(sigaction(SIGCHLD, &sa, NULL) < 0)
{
DISPLAY_SIGNAL_ACTION_ERROR(-1);
}
}
else
{
sa.sa_handler = HandleCoreDump;
}
if(sigaction(SIGSEGV, &sa, NULL) < 0)
{
DISPLAY_SIGNAL_ACTION_ERROR(-2);
}
#ifdef SIGBUS
if(sigaction(SIGBUS, &sa, NULL) < 0)
{
DISPLAY_SIGNAL_ACTION_ERROR(-3);
}
#endif
#ifdef SIGABORT
if(sigaction(SIGABORT, &sa, NULL) < 0)
{
DISPLAY_SIGNAL_ACTION_ERROR(-4);
}
#endif
#ifdef SIGABRT
if(sigaction(SIGABRT, &sa, NULL) < 0)
{
DISPLAY_SIGNAL_ACTION_ERROR(-5);
}
#endif
#ifdef SIGILL
if(sigaction(SIGILL, &sa, NULL) < 0)
{
DISPLAY_SIGNAL_ACTION_ERROR(-6);
}
#endif
if(sigaction(SIGHUP, &sa, NULL) < 0)
{
DISPLAY_SIGNAL_ACTION_ERROR(-7);
}
if(sigaction(SIGUSR1, &sa, NULL) < 0)
{
DISPLAY_SIGNAL_ACTION_ERROR(-8);
}
#ifdef SIGINT
if(sigaction(SIGINT, &sa, NULL) < 0)
{
DISPLAY_SIGNAL_ACTION_ERROR(-9);
}
#endif
#ifdef SIGXCPU
sa.sa_handler = SIG_DFL;
if(sigaction(SIGXCPU, &sa, NULL) < 0)
{
DISPLAY_SIGNAL_ACTION_ERROR(-10);
}
#endif
#ifdef SIGXPSZ
sa.sa_handler = SIG_DFL;
if(sigaction(SIGSEGV, &sa, NULL) < 0)
{
DISPLAY_SIGNAL_ACTION_ERROR(-11);
}
#endif
#ifdef SIGPIPE
sa.sa_handler = SIG_IGN;
if(sigaction(SIGPIPE, &sa, NULL) < 0)
{
DISPLAY_SIGNAL_ACTION_ERROR(-12);
}
#endif
#ifdef SIGSYS
sa.sa_handler = SIG_IGN;
if(sigaction(SIGPIPE, &sa, NULL) < 0)
{
DISPLAY_SIGNAL_ACTION_ERROR(-13);
}
#endif
return 1;
}
void sig_chld(int signo)
{
pid_t pid;
int stat;
while ((pid = waitpid(-1, &stat, WNOHANG)) > 0)
fprintf(stderr, "child %d terminated\n", pid);
return;
}
void sig_int(int signo)
{
int i;
for (i = 0; i < vrcd_threads; i++)
fprintf(stderr, "vrcd thread %d, %ld connections\n", i, vrcd_tptr[i].thread_count);
// exit(0);
}
void sig_int_report(int signo)
{
int i;
for (i = 0; i < report_threads; i++)
fprintf(stderr, "report thread %d, %ld connections\n", i, report_tptr[i].thread_count);
// exit(0);
}
+637
View File
@@ -0,0 +1,637 @@
#include "unp.h"
#include "unpipc.h"
#define PGCONN_STRING "host=%s port=%s dbname=%s user=%s password=%s"
#define DEBUG_MODE 1
#define RELEASE_MODE 0
//const char a_ServType[NumOfServerType][MaxSizeOfServerType] = {"WWW", "RTS", "RC", "CCDB", "RCTS", "GTS", "RCDB", "GMS", "TIMED", "STAT"};
const char a_ServType[NumOfServerType][MaxSizeOfServerType] = {"RC", "STAT", "RTS", "RCTS", "RCDB", "WWW", "CCDB", "GTS", "GMS", "TIMED"};
int main(int argc, char **argv)
{
static int SetSigHandle(int Option);
void sig_int(int);
void sig_int_report(int);
void sig_chld(int);
void vrcd_thread_make(int);
void report_thread_make();
/* declare Server List Structure */
//servinfo_t *g_servinfo;
servinfo_t *start_servinfo;
//g_shm_t *g_shm_ptr;
MYSQL mysql;
MYSQL_RES *res;
MYSQL_ROW row;
FILE *shLogFile;
PGconn *conn;
PGresult *result;
//void *shared_memory = (void *)0;
int i;
int fd;
int pid;
int mysql_port, fields;
//int shmid;
long numRows;
char mysql_db[8];
char mysql_user[16];
char mysql_pass[16];
char HostName[512];
char sh_port[16];
char pg_addr[30];
char pg_port[10];
char pg_name[30];
char pg_acct[30];
char pg_pass[30];
char pgsql_query[1024];
char logString[1024];
/* damonlizing... */
//makedaemon(DEBUG_MODE);
makedaemon(RELEASE_MODE);
setproctitle("Parents(guard): initialize");
/* sh log file open */
shLogFile = fopen(makeLogString(), "a");
if (!shLogFile)
{
fprintf(stderr, "Cannot open SH Log file!!\n");
exit(EXIT_FAILURE);
}
/* initialize mysqlDB */
mysql_init(&mysql);
/* Load conf file */
SetIniName(CFGFILE);
GetProfile("PGSQL", "DATABASE_ADDR", pg_addr, "");
GetProfile("PGSQL", "DATABASE_PORT", pg_port, "");
GetProfile("PGSQL", "DATABASE_NAME", pg_name, "");
GetProfile("PGSQL", "DATABASE_ACCT", pg_acct, "");
GetProfile("PGSQL", "DATABASE_PW", pg_pass, "");
GetProfile("MYSQL", "DATABASE_NAME", mysql_db, "CCDB");
GetProfile("MYSQL", "DATABASE_ACCT", mysql_user, "root");
GetProfile("MYSQL", "DATABASE_PW", mysql_pass, "alfkzmf!?{}");
mysql_port = GetProfileInt("MYSQL", "DATABASE_PORT", 3306);
snprintf(logString, 1024, "[PG]DATABASE_ADDR -->%s", pg_addr);
WriteSHLog(logString, shLogFile);
snprintf(logString, 1024, "[PG]DATABASE_PORT -->%s", pg_port);
WriteSHLog(logString, shLogFile);
snprintf(logString, 1024, "[PG]DATABASE_NAME -->%s", pg_name);
WriteSHLog(logString, shLogFile);
snprintf(logString, 1024, "[PG]DATABASE_ACCT -->%s", pg_acct);
WriteSHLog(logString, shLogFile);
snprintf(logString, 1024, "[PG]DATABASE_PW -->%s\n", pg_pass);
WriteSHLog(logString, shLogFile);
snprintf(logString, 1024, "[MY]DATABASE_NAME -->%s", mysql_db);
WriteSHLog(logString, shLogFile);
snprintf(logString, 1024, "[MY]DATABASE_ACCT -->%s", mysql_user);
WriteSHLog(logString, shLogFile);
snprintf(logString, 1024, "[MY]DATABASE_PW -->%s", mysql_pass);
WriteSHLog(logString, shLogFile);
snprintf(logString, 1024, "[MY}DATABASE_PORT -->%d", mysql_port);
WriteSHLog(logString, shLogFile);
/* connect mysqlDB */
if (!mysql_real_connect(&mysql, NULL, mysql_user, mysql_pass, mysql_db, mysql_port, (char *)NULL, 0))
{
fprintf(stderr, "%s\n", mysql_error(&mysql));
snprintf(logString, 1024, "%s", mysql_error(&mysql));
WriteSHLog(logString, shLogFile);
exit(EXIT_FAILURE);
}
snprintf(logString, 1024, "Query :: %s\n", MYQUERY);
WriteSHLog(logString, shLogFile);
/* start transaction */
mysql_autocommit(&mysql, 0);
if (mysql_query(&mysql, MYQUERY))
{
fprintf(stderr, "[error]%s\n", mysql_error(&mysql));
snprintf(logString, 1024, "[error]%s", mysql_error(&mysql));
WriteSHLog(logString, shLogFile);
mysql_rollback(&mysql);
}
else
{
fprintf(stderr, "[MySQL]Server List Loading Success!!\n");
snprintf(logString, 1024, "%s", "[MySQL]Server List Loading Success!!");
WriteSHLog(logString, shLogFile);
mysql_commit(&mysql);
}
res = mysql_store_result(&mysql);
fields = mysql_num_fields(res);
numRows = mysql_num_rows(res);
#ifdef __SETLOG__
snprintf(logString, 1024, "numRows --> %ld, Sizeof structure servinfo_t : %d", numRows, sizeof(servinfo_t));
WriteSHLog(logString, shLogFile);
#endif
/* connect postgreSQL */
snprintf(pgsql_query, 1024, PGCONN_STRING, pg_addr, pg_port, pg_name, pg_acct, pg_pass);
conn = PQconnectdb(pgsql_query);
//conn = PQconnectdb("host=211.38.137.34 port=5432 dbname=opendisk user=opendisk password=os1234!");
if (PQstatus(conn) == CONNECTION_BAD)
{
fprintf(stderr, "pgSQL Connection failed, %s\n", PQerrorMessage(conn));
snprintf(logString, 1024, "pgSQL Connection failed, %s", PQerrorMessage(conn));
WriteSHLog(logString, shLogFile);
if (conn != NULL)
PQfinish(conn);
exit(EXIT_FAILURE);
}
else
{
fprintf(stderr, "pgSQL Connected OK!\n");
WriteSHLog("pgSQL Connected OK!", shLogFile);
}
result = PQexec(conn, "select now() ");
if (!result)
{
fprintf(stderr, "PQexec command failed, no error code\n");
WriteSHLog("PQexec command failed, no error code", shLogFile);
}
else
{
switch (PQresultStatus(result))
{
case PGRES_COMMAND_OK:
snprintf(logString, 1024, "Command executed OK, %s rows affected", PQcmdTuples(result));
WriteSHLog(logString, shLogFile);
break;
case PGRES_TUPLES_OK:
snprintf(logString, 1024, "Query may have returned data. %d rows found", PQntuples(result));
WriteSHLog(logString, shLogFile);
break;
default:
snprintf(logString, 1024, "Command failed with code %s, error message %s", PQresStatus(PQresultStatus(result)), PQresultErrorMessage(result));
WriteSHLog(logString, shLogFile);
break;
}
PQclear(result);
}
//close postgreSQL
PQfinish(conn);
/***************************************************************/
/********************* create shared memory ********************/
/***************************************************************/
if (numRows == 0)
numRows = 1;
shm_unlink(SHM_NAME);
fd = Shm_open(SHM_NAME, O_RDWR | O_CREAT | O_EXCL | O_TRUNC, FILE_MODE);
Ftruncate(fd, (sizeof(servinfo_t)*(numRows))+1);
g_servinfo = Mmap(NULL, (sizeof(servinfo_t)*(numRows)+1), PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);
memset(g_servinfo, 0, sizeof(servinfo_t)*(numRows*1)+1);
//Close(fd);
/***************************************************************/
/***************************************************************/
/***************************************************************/
int cnt = 1;
start_servinfo = g_servinfo;
while((row = mysql_fetch_row(res)))
{
addServerToList(g_servinfo, row);
//g_servinfo->next = Mmap(NULL, (sizeof(servinfo_t)), PROT_READ | PROT_WRITE, MAP_SHARED, fd, (sizeof(servinfo_t))*cnt);
//memset(g_servinfo->next, 0, sizeof(servinfo_t));
g_servinfo++;
cnt++;
}
strncpy(g_servinfo->m_pszServName, END_OF_SHM, 11);
g_servinfo = start_servinfo;
Close(fd);
/****************************************************************/
/********************** create Semaphore mutex ********************/
sem_unlink(SEM_NAME);
sem_mutex = Sem_open(SEM_NAME, O_RDWR | O_CREAT | O_EXCL, FILE_MODE, 1);
Sem_close(sem_mutex);
/******************************************************************/
/* close mysqlDB */
mysql_free_result(res);
mysql_close(&mysql);
fflush(shLogFile);
//vrcd_threads = GetProfileInt("PARAM", "VRCD_THREAD_NUM", 10);
/* clean system V shm */
/*
int t;
shmid = shmget((key_t)6677, sizeof(g_shm_t), IPC_CREAT);
if (shmid == -1)
{
WriteSHLog("system V shmget failed", shLogFile);
exit(EXIT_FAILURE);
}
shared_memory = shmat(shmid, (void *)0, 0);
if (shared_memory == (void *)-1)
{
WriteSHLog("system V shmat failed", shLogFile);
exit(EXIT_FAILURE);
}
g_shm_ptr = (g_shm_t *)shared_memory;
g_shm_ptr->is_dirty = 0;
g_shm_ptr->is_dirty2 = 0;
for (t = 0; t < vrcd_threads; t++)
g_shm_ptr->thread_number[t] = 0;
if (shmdt(shared_memory) == -1)
{
WriteSHLog("system V shmdt failed", shLogFile);
exit(EXIT_FAILURE);
}
*/
//Signal(SIGCHLD, sig_chld);
if ( (pid = fork()) < 0 )
{
fprintf(stderr, "Cannot Fork(GUARD)\n");
fprintf(shLogFile, "Cannot Fork(GUARD)\n");
exit(EXIT_FAILURE);
}
else if ( pid == 0 )
{
// REPORT Guard Process
setproctitle("guarad(report): initialize..");
while (1)
{
int cpid = 0;
int status = 0;
setproctitle("guard(report): fork mother");
if ( (cpid = fork()) < 0 )
{
fprintf(stderr, "Cannot make REPORT Guard Process : %s\n", strerror(errno));
fprintf(shLogFile, "Cannot make REPORT Guard Process : %s\n", strerror(errno));
exit(EXIT_FAILURE);
}
else if (cpid == 0)
{
int ccpid = 0;
int cstatus = 0;
//int report_stat;
fprintf(stderr, "Start REPORT Child Process!!\n");
fprintf(shLogFile, "Start REPORT Child Process!!\n");
setproctitle("child(report): initialize");
SetSigHandle(0);
report_s_lock = PTHREAD_MUTEX_INITIALIZER;
report_u_lock = PTHREAD_MUTEX_INITIALIZER;
/* To do REPORT */
report_threads = 2;
report_tptr = Calloc(report_threads, sizeof(Thread));
sem_mutex = Sem_open(SEM_NAME, 0);
/* make thread(servList update thread(0), servList send thread(1)) */
report_thread_make(2);
setproctitle("child(send,update): running");
// Checking Real Time Update Server Status
if ((ccpid = fork()) < 0)
{
fprintf(stderr, "Cannot make REPORT Grand-Child Process!!\n");
fprintf(shLogFile, "Cannot make REPORT Grand-Child Process!!\n");
exit(EXIT_FAILURE);
}
else if (ccpid == 0)
{
SetSigHandle(1);
fprintf(stderr, "Start REPORT Grand-Child Process!!\n");
fprintf(shLogFile, "Start REPORT Grand-Child Process!!\n");
chk_rtime_update_serv_status();
}
wait(&cstatus);
sleep(1);
SafeProcessRunSpinWait();
}
setproctitle("guard(report): wait mother dead");
wait(&status);
}
}
else
{
// VRCD GUARD PROCESS
setproctitle("guard(vrcd): initialize..");
while (1)
{
int cpid = 0;
int status = 0;
setproctitle("guard(vrcd): fork mother");
if ((cpid = fork()) < 0)
{
fprintf(stderr, "Cannot make VRCD Guard Process : %s\n", strerror(errno));
fprintf(shLogFile, "Cannot make VRCD Guard Process : %s\n", strerror(errno));
exit(EXIT_FAILURE);
}
else if (cpid == 0)
{
//int vrcd_stat;
fprintf(stderr, "Start VRCD Child Process!!\n");
fprintf(shLogFile, "Start VRCD Child Process!!\n");
setproctitle("child(vrcd): initialize");
SetSigHandle(0);
vrcd_lock = PTHREAD_MUTEX_INITIALIZER;
/* To do VRCD */
GetProfile("PARAM", "HOSTNAME", HostName, "localhost");
GetProfile("PARAM", "VRCD_PORT", sh_port, "22200");
vrcd_threads = GetProfileInt("PARAM", "VRCD_THREAD_NUM", 10);
vrcdfd = Tcp_listen(HostName, sh_port, &vrcd_addrlen);
vrcd_tptr = Calloc(vrcd_threads, sizeof(Thread));
sem_mutex = Sem_open(SEM_NAME, 0);
for (i = 0; i < vrcd_threads; i++)
vrcd_thread_make(i); // only main thread returns
setproctitle("child(vrcd): running");
/*
for (i = 0; i < vrcd_threads; i++)
{
Pthread_join(vrcd_tptr[i].thread_tid, (void *)&vrcd_stat);
snprintf(logString, 1024, "vrcd thread join : %d", vrcd_stat);
WriteSHLog(logString, shLogFile);
}
*/
for ( ; ; )
pause();
}
setproctitle("guard(vrcd): wait mother dead");
wait(&status);
}
}
/* close sh log file */
fflush(shLogFile);
if (shLogFile)
fclose(shLogFile);
exit(EXIT_SUCCESS);
}
void addServerToList(servinfo_t *serv, MYSQL_ROW row)
{
int j;
strncpy(serv->m_pszServName, (char *)row[0], MAX_SRV_NAME);
strncpy(serv->m_szIpString, (char *)row[1], MAX_IP_STRING);
serv->m_sPort = atoi(row[2]);
/* Server Type String to Integer */
for (j=0; j < NumOfServerType; j++)
{
if(!strcmp((char *)row[3], a_ServType[j]))
serv->m_ServType = j;
}
serv->m_StatChgTime = time(NULL);
serv->m_Status = SERV_ALIVE;
serv->m_DeadCount = 0;
strncpy(serv->m_monitorYN, (char *)row[4], 2);
serv->next = NULL;
}
void makedaemon(int mode)
{
#ifdef SIGTTOU
signal(SIGTTOU, SIG_IGN);
#endif
#ifdef SIGTTIN
signal(SIGTTIN, SIG_IGN);
#endif
#ifdef SIGTSTP
signal(SIGTSTP, SIG_IGN);
#endif
#ifdef SIGINT
signal(SIGINT, SIG_IGN);
#endif
#ifdef SIGSTP
signal(SIGSTP, SIG_IGN);
#endif
pid_t pid;
if ((pid = fork()) < 0)
exit(0);
else if (pid != 0)
exit(0);
if (mode == 0)
{
close(0);
close(1);
}
setsid();
}
#define DISPLAY_SIGNAL_ACTION_ERROR(rv) fprintf(shLogFile, "!sigaction : %s\n", strerror(errno)); return rv
static void HandleCoreDump(int signum)
{
int kpid;
/*
FILE *shLogFile = NULL;
shLogFile = fopen(makeLogString(), "a");
if (!shLogFile)
{
fprintf(stderr, "Cannot open SH Log file!!\n");
exit(EXIT_FAILURE);
}
*/
signal(signum, SIG_DFL);
//fprintf(shLogFile, "killed process(%d)\n", getpid());
kpid = getpid();
kill(kpid, SIGKILL);
usleep(100);
kill(kpid, SIGKILL);
//fclose(shLogFile);
sleep(1);
}
static void HandleChildHang(int signum)
{
int status = 1;
/*
FILE *shLogFile = NULL;
shLogFile = fopen(makeLogString(), "a");
if (!shLogFile)
{
fprintf(stderr, "Cannot open SH Log file!!\n");
exit(EXIT_FAILURE);
}
*/
fprintf(stderr, "Signum: %d", signum);
//cerr << "Signum:" << signum << EL;
//LFile << "!Worker Process " << (int)getpid() << " is dead. " << EL;
while (waitpid(-1, &status, WNOHANG) > 0)
{
fprintf(stderr, "decrease one child process!\n");
//fprintf(shLogFile, "decrease one child process!\n");
}
//fclose(shLogFile);
}
static int SetSigHandle(int Option)
{
struct sigaction sa;
FILE *shLogFile = NULL;
shLogFile = fopen(makeLogString(), "a");
if (!shLogFile)
{
fprintf(stderr, "Cannot open SH Log file!!\n");
exit(EXIT_FAILURE);
}
sigemptyset(&sa.sa_mask);
sa.sa_flags = 0;
#if defined(SA_ONESHOT)
sa.sa_flags = SA_ONESHOT;
#elif defined(SA_RESETHAND)
sa.sa_flags = SA_RESETHAND;
#endif
if(Option == 1)
{
sa.sa_handler = HandleChildHang;
if(sigaction(SIGCHLD, &sa, NULL) < 0)
{
fprintf(shLogFile, "!sigaction : %s\n", strerror(errno)); return -1;
//DISPLAY_SIGNAL_ACTION_ERROR(-1);
}
}
else
{
sa.sa_handler = HandleCoreDump;
}
if(sigaction(SIGSEGV, &sa, NULL) < 0)
{
fprintf(shLogFile, "!sigaction : %s\n", strerror(errno)); return -2;
//DISPLAY_SIGNAL_ACTION_ERROR(-2);
}
#ifdef SIGBUS
if(sigaction(SIGBUS, &sa, NULL) < 0)
{
fprintf(shLogFile, "!sigaction : %s\n", strerror(errno)); return -3;
//DISPLAY_SIGNAL_ACTION_ERROR(-3);
}
#endif
#ifdef SIGABORT
if(sigaction(SIGABORT, &sa, NULL) < 0)
{
fprintf(shLogFile, "!sigaction : %s\n", strerror(errno)); return -4;
//DISPLAY_SIGNAL_ACTION_ERROR(-4);
}
#endif
#ifdef SIGABRT
if(sigaction(SIGABRT, &sa, NULL) < 0)
{
fprintf(shLogFile, "!sigaction : %s\n", strerror(errno)); return -5;
//DISPLAY_SIGNAL_ACTION_ERROR(-5);
}
#endif
#ifdef SIGILL
if(sigaction(SIGILL, &sa, NULL) < 0)
{
fprintf(shLogFile, "!sigaction : %s\n", strerror(errno)); return -6;
//DISPLAY_SIGNAL_ACTION_ERROR(-6);
}
#endif
if(sigaction(SIGHUP, &sa, NULL) < 0)
{
fprintf(shLogFile, "!sigaction : %s\n", strerror(errno)); return -7;
//DISPLAY_SIGNAL_ACTION_ERROR(-7);
}
if(sigaction(SIGUSR1, &sa, NULL) < 0)
{
fprintf(shLogFile, "!sigaction : %s\n", strerror(errno)); return -8;
//DISPLAY_SIGNAL_ACTION_ERROR(-8);
}
#ifdef SIGINT
if(sigaction(SIGINT, &sa, NULL) < 0)
{
fprintf(shLogFile, "!sigaction : %s\n", strerror(errno)); return -9;
//DISPLAY_SIGNAL_ACTION_ERROR(-9);
}
#endif
#ifdef SIGXCPU
sa.sa_handler = SIG_DFL;
if(sigaction(SIGXCPU, &sa, NULL) < 0)
{
fprintf(shLogFile, "!sigaction : %s\n", strerror(errno)); return -10;
//DISPLAY_SIGNAL_ACTION_ERROR(-10);
}
#endif
#ifdef SIGXPSZ
sa.sa_handler = SIG_DFL;
if(sigaction(SIGSEGV, &sa, NULL) < 0)
{
fprintf(shLogFile, "!sigaction : %s\n", strerror(errno)); return -11;
//DISPLAY_SIGNAL_ACTION_ERROR(-11);
}
#endif
#ifdef SIGPIPE
sa.sa_handler = SIG_IGN;
if(sigaction(SIGPIPE, &sa, NULL) < 0)
{
fprintf(shLogFile, "!sigaction : %s\n", strerror(errno)); return -12;
//DISPLAY_SIGNAL_ACTION_ERROR(-12);
}
#endif
#ifdef SIGSYS
sa.sa_handler = SIG_IGN;
if(sigaction(SIGPIPE, &sa, NULL) < 0)
{
fprintf(shLogFile, "!sigaction : %s\n", strerror(errno)); return -13;
//DISPLAY_SIGNAL_ACTION_ERROR(-13);
}
#endif
fclose(shLogFile);
return 1;
}
void sig_chld(int signo)
{
pid_t pid;
int stat;
while ((pid = waitpid(-1, &stat, WNOHANG)) > 0)
fprintf(stderr, "child %d terminated\n", pid);
return;
}
void sig_int(int signo)
{
int i;
for (i = 0; i < vrcd_threads; i++)
fprintf(stderr, "vrcd thread %d, %ld connections\n", i, vrcd_tptr[i].thread_count);
// exit(0);
}
void sig_int_report(int signo)
{
int i;
for (i = 0; i < report_threads; i++)
fprintf(stderr, "report thread %d, %ld connections\n", i, report_tptr[i].thread_count);
// exit(0);
}
@@ -0,0 +1,4 @@
#!/bin/sh
gcc -o view_shm view_shm.c wrapunix.c errfunc.c -I../include -I/user/db/mysql/include/mysql -I/user/db/pgsql/include -L/user/db/pgsql/lib -L/user/db/mysql/lib/mysql
gcc -o view_sem view_sem.c wrapunix.c errfunc.c -I../include -I/user/db/mysql/include/mysql -I/user/db/pgsql/include -L/user/db/pgsql/lib -L/user/db/mysql/lib/mysql
Binary file not shown.
File diff suppressed because it is too large Load Diff
Binary file not shown.
+330
View File
@@ -0,0 +1,330 @@
#include <sys/time.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <errno.h>
#include <iostream>
#include <signal.h>
#include "SHSSDK.h"
#include "SHCSDK.h"
//#include "log.h"
#include "protocol.h"
extern "C"
{
char* timeToString(struct tm *);
char *makeLogString_para(const char *);
void WriteSHLog(char *, FILE *);
}
using namespace std;
//using namespace SDLog;
//using namespace SDSocket;
string strLogPath;
string strLogPrefix = "rccheck";
FILE *shLogFile = NULL;
char logString[1024];
HSHSDK access_sh(rcacct_t *rcinfo, char *errorMsg)
{
char *serviceHost = NULL;
char *authString = NULL;
HSHSDK hshsdk = NULL;
int errorCode;
/* System Hosting Server-side SDK : 서비스 서버 얻기 */
//serviceHost = (char *)sh_get_service_host(userid, userpass, serviceId);
serviceHost = (char *)sh_get_service_host(rcinfo->m_pszUserName, rcinfo->m_pszPassword, rcinfo->m_pszServiceName);
if (!serviceHost) {
errorCode = errno;
sprintf(errorMsg, "서비스 호스트를 받아오지 못했습니다.");
if (hshsdk)
sh_free(hshsdk);
return NULL;
}
/* System Hosting Server-side SDK : 인증스트링 얻기 */
//authString = (char *)sh_get_auth_string(userid, userpass, serviceId, authKey, authFile, time(NULL) + 100000);
authString = (char *)sh_get_auth_string(rcinfo->m_pszUserName, rcinfo->m_pszPassword, rcinfo->m_pszServiceName, rcinfo->m_pszAuthkey, rcinfo->m_pszCertLocation, time(NULL) + 100000);
if (!authString) {
errorCode = errno;
sprintf(errorMsg, "인증 스트링을 받아오지 못했습니다.");
if (hshsdk)
sh_free(hshsdk);
if (serviceHost)
free(serviceHost);
return NULL;
}
/*
serviceHost = "222.122.152.33/dav";
authString = (char *)sh_get_auth_string("kpost", "kpost", "kpost", "geniuspizon", "./kpost48.cert", time(NULL) + 150000);
*/
/* System Hosting Client-side SDK : 초기화 */
hshsdk = sh_init(serviceHost, authString, NULL, NULL);
if (!hshsdk) {
errorCode = errno;
sprintf(errorMsg, "System Hosting Client-side SDK 초기화에 실패하였습니다.");
if (hshsdk)
sh_free(hshsdk);
if (serviceHost)
free(serviceHost);
if (authString)
free(authString);
return NULL;
}
#ifndef __TEST__
if (serviceHost)
free(serviceHost);
if (authString)
free(authString);
#endif
return hshsdk;
}
int check_rc(char *filename, rcacct_t *rcinfo)
{
HSHSDK hshsdk = NULL;
char local_path[128], remote_path[128], local_temp[128];
int errorCode;
char errorMsg[1024];
//LogToFile LFile(strLogPath, strLogPrefix, 0);
sprintf(local_path, "/tmp/%s", filename);
sprintf(remote_path, "/INCINERATE/%s", filename);
sprintf(local_temp, "/tmp/%s.download", filename);
unlink(local_temp);
hshsdk = access_sh(rcinfo, errorMsg);
if (hshsdk)
{
errorCode = sh_upload(hshsdk, local_path, remote_path, SHWRITEPOLICY_OVERWRITE, -1);
#ifdef __DEBUG__
fprintf(stderr, "error: upload: %d:%s\n", errorCode, sh_get_error_message(hshsdk));
fprintf(stderr, "debug: step 1 - %s\n", filename);
#endif
if (errorCode == 0) {
::snprintf(logString, 1024, "!check_rc:: RC %s : upload failed: %s", rcinfo->m_pszServiceName, sh_get_error_message(hshsdk));
WriteSHLog(logString, shLogFile);
//LFile << "!check_rc:: RC " << rcinfo->m_pszServiceName << ": upload failed: " << sh_get_error_message(hshsdk) << EL;
sh_free(hshsdk);
return -1;
}
#ifdef __DEBUG__
fprintf(stderr, "debug: step 2\n");
#endif
usleep(500000);
#ifdef __DEBUG__
fprintf(stderr, "debug: step 3\n");
#endif
errorCode = sh_download(hshsdk, remote_path, local_temp, SHWRITEPOLICY_OVERWRITE, -1);
#ifdef __DEBUG__
fprintf(stderr, "debug: step 4\n");
fprintf(stderr, "error: download: %d:%s\n", errorCode, sh_get_error_message(hshsdk));
#endif
if (errorCode == 0) {
::snprintf(logString, 1024, "!check_rc:: RC %s : download failed: %s", rcinfo->m_pszServiceName, sh_get_error_message(hshsdk));
WriteSHLog(logString, shLogFile);
//LFile << "!check_rc:: RC " << rcinfo->m_pszServiceName << ": download failed: " << sh_get_error_message(hshsdk) << EL;
sh_free(hshsdk);
return -1;
}
#ifdef __DEBUG__
fprintf(stderr, "debug: step 5\n");
#endif
sh_delete(hshsdk, remote_path);
#ifdef __DEBUG__
fprintf(stderr, "debug: step 6\n");
#endif
sh_free(hshsdk);
}
else
{
#ifdef __DEBUG__
fprintf(stderr, "error: %s\n", errorMsg);
#endif
//::snprintf(logString, 1024, "!check_rc:: RC %s : access failed: %s", rcinfo->m_pszServiceName, sh_get_error_message(hshsdk));
::snprintf(logString, 1024, "check_rc[%s] access fail[%s]", rcinfo->m_pszServiceName, errorMsg);
WriteSHLog(logString, shLogFile);
//LFile << "!check_rc:: RC " << rcinfo->m_pszServiceName << ": access failed: " << errorMsg << ": " << sh_get_error_message(hshsdk) << EL;
return -1;
}
unlink(local_temp);
fflush(stderr);
return 0;
}
int check_rc_updown(rcacct_t *rcinfo)
{
FILE *fp;
struct timeval tv;
char tagname[38];
char tagfull[38];
int retval = -1;
//string strLogPath = DEFAULT_LOGFILE_PATH;
//string strLogPrefix = DEFAULT_LOGFILE_PREFIX;
//LogToFile LFile(strLogPath, strLogPrefix, 0);
gettimeofday(&tv, NULL);
sprintf(tagname, "%d%06d", (int)tv.tv_sec, (int)tv.tv_usec);
sprintf(tagfull, "/tmp/%d%06d", (int)tv.tv_sec, (int)tv.tv_usec);
#ifdef __DEBUG__
fprintf(stderr, "tagname %s tagfull %s\n", tagname, tagfull);
#endif
if ((fp = fopen(tagfull, "w"))) {
//fprintf(fp, "%s", tagname);
fclose(fp);
/* start! */
if (check_rc(tagname, rcinfo)) {
::snprintf(logString, 1024, "!RC %s : check failed", rcinfo->m_pszServiceName);
WriteSHLog(logString, shLogFile);
//LFile << "!RC " << rcinfo->m_pszServiceName << " check failed" << EL;
#ifdef __DEBUG__
fprintf(stderr, "RC %s check failed\n", rcinfo->m_pszServiceName);
#endif
retval = -1;
} else {
/*
::snprintf(logString, 1024, "!RC %s : check success", rcinfo->m_pszServiceName);
WriteSHLog(logString, shLogFile);
*/
//LFile << "!RC " << rcinfo->m_pszServiceName << " check success" << EL;
#ifdef __DEBUG__
fprintf(stderr, "RC %s check success\n", rcinfo->m_pszServiceName);
#endif
retval = 0;
}
unlink(tagfull);
}
return retval;
}
void usage(void)
{
fprintf(stderr, "rccheck - check rc by ics sdk\n");
fprintf(stderr, " usage : rccheck <log dir> <volume> <user> <passwd> <authkey> <cert location>\n");
exit(2);
}
void HandleTimeOut(int signum)
{
fprintf(stderr, "TIMEOUT!\n");
exit(1);
return;
}
int main(int argc, char *argv[])
{
FILE *ftemp = NULL;
rcacct_t rcinfo;
//char buf[1024];
int retval;
#ifdef __DEBUG__
fprintf(stderr, "argc %d argv %s\n", argc, argv[1]);
#endif
if (argc != 7) {
usage();
}
/*
strLogPath = argv[1];
sprintf(buf, "mkdir -p %s\n", argv[1]);
system(buf);
*/
ftemp = ::fopen("/dev/null", "r");
shLogFile = ::fopen(makeLogString_para(strLogPrefix.c_str()), "a");
if (!shLogFile)
{
fprintf(stderr, "Cannot open SH Log file!!\n");
}
memset((char *)&rcinfo, 0, sizeof(rcacct_t));
/*
typedef struct _RCAcct_e
{
char * m_pszServiceName;
char * m_pszUserName;
char * m_pszPassword;
char * m_pszAuthkey;
char * m_pszCertLocation;
struct _RCAcct_e *next;
} rcacct_t;
*/
rcinfo.m_pszServiceName = argv[2];
rcinfo.m_pszUserName = argv[3];
rcinfo.m_pszPassword = argv[4];
rcinfo.m_pszAuthkey = argv[5];
rcinfo.m_pszCertLocation = argv[6];
#if 1
for (int ac=0; ac< argc; ac++) {
fprintf(stderr, "[%d] arguments = [%s] \n", ac, argv[ac]);
}
#endif
signal(SIGALRM, HandleTimeOut);
alarm(60);
::snprintf(logString, 1024, "RC[%s] check start with timeout 60 sec.", rcinfo.m_pszServiceName);
WriteSHLog(logString, shLogFile);
if ((retval = check_rc_updown(&rcinfo)) != 0)
{
#ifdef __DEBUG__
fprintf(stderr, "RC %s check failed\n", rcinfo.m_pszServiceName);
#endif
::snprintf(logString, 1024, "RC[%s] check failed", rcinfo.m_pszServiceName);
WriteSHLog(logString, shLogFile);
//sleep(10);
usleep(1);
::fclose(ftemp);
::fclose(shLogFile);
exit(1);
} else {
#ifdef __DEBUG__
fprintf(stderr, "RC %s check success\n", rcinfo.m_pszServiceName);
#endif
::snprintf(logString, 1024, "RC[%s] check success", rcinfo.m_pszServiceName);
WriteSHLog(logString, shLogFile);
usleep(1);
::fclose(ftemp);
::fclose(shLogFile);
exit(0);
}
::alarm(0);
::fclose(ftemp);
::fclose(shLogFile);
exit(1);
}
+170
View File
@@ -0,0 +1,170 @@
#include "unp.h"
#include "protocol.h"
#define MAXN 4096 /* max # bytes to request from server */
#define HostName "192.168.0.136"
#define Port "22201"
#define INSERT 1
#define UPDATE 2
#define DELETE 3
/* declare common header and body */
rcmng_cheader_t *cheader;
servinfo_t *ch_servinfo;
char sndBuffer[MAXN];
int main(int argc, char **argv)
{
void make_rcmng_cheader(rcmng_cheader_t *, char *, char *, unsigned int, unsigned int);
void make_servinfo_body(servinfo_t *, const char *);
void view_common_header(rcmng_cheader_t *);
void view_body(servinfo_t *);
int send_to_sh_statusd(char *);
unsigned int bodylen=0;
unsigned int servType=0;
unsigned int header_size;
int is_success;
/* Error Processing Main(argv) Parameter */
if (argc > 5 || argc < 4)
err_quit("Usage: rcmng_client <RCID> <SERV_NAME> <servType> [<new string>]\n");
if (!strncmp(argv[3], "INSERT", 6) && argc == 5)
servType = INSERT;
else if (!strncmp(argv[3], "UPDATE", 6) && argc == 5)
servType = UPDATE;
else if (!strncmp(argv[3], "DELETE", 6) && argc == 4)
servType = DELETE;
else
err_quit("Wrong servType!! only used [INSERT, UPDATE, DELETE]\n");
/***************** Make rcmmng common header ***********************/
cheader = (rcmng_cheader_t *)malloc(sizeof(rcmng_cheader_t));
if (cheader == NULL)
err_quit("Cannot allocation rcmng_cheader heap!\n");
if (servType == 1 || servType == 2)
bodylen = sizeof(servinfo_t);
else if (servType == 3)
bodylen = 0;
make_rcmng_cheader(cheader, argv[1], argv[2], servType, bodylen);
/*******************************************************************/
/****************** Make Server Info body **************************/
ch_servinfo = (servinfo_t *)malloc(sizeof(servinfo_t));
if (!ch_servinfo)
err_quit("Cannot allocation servinfo_t heap!\n");
memset(sndBuffer, 0, MAXN);
switch(servType)
{
case 1 :
case 2 :
make_servinfo_body(ch_servinfo, argv[4]);
view_common_header(cheader);
view_body(ch_servinfo);
/* send to new sh_statusd that changed server information */
header_size = sizeof(rcmng_cheader_t);
memcpy(sndBuffer, (char *)cheader, header_size);
memcpy(sndBuffer + header_size, (char *)ch_servinfo, bodylen);
break;
case 3 :
view_common_header(cheader);
/* send to new sh_statusd that changed server information */
header_size = sizeof(rcmng_cheader_t);
memcpy(sndBuffer, (char *)cheader, header_size);
break;
default :
err_quit("Wrong servType!! exit program!!\n");
exit(EXIT_FAILURE);
break;
}
/*******************************************************************/
is_success = send_to_sh_statusd(sndBuffer);
if (is_success)
fprintf(stdout, "SUCCESS");
else
fprintf(stdout, "FAIL\n");
free(cheader);
free(ch_servinfo);
exit(0);
}
void make_rcmng_cheader(rcmng_cheader_t *cheader, char *rcid, char *servname, unsigned int servicetype, unsigned int bodylen)
{
strncpy(cheader->rcmng_rcid, rcid, MAX_MNG_RCID);
strncpy(cheader->rcmng_servName, servname, MAX_SRV_NAME);
cheader->rcmng_serviceType = servicetype;
cheader->bodylength = bodylen;
}
void make_servinfo_body(servinfo_t *servinfo, const char *serv_str_info)
{
int devide(char **, const char *, char);
char *rbuffer[1024];
int str_num;
char delim = '|';
str_num = devide(rbuffer, serv_str_info, delim);
fprintf(stderr, "serv_str_info number : %d\n", str_num);
strncpy(servinfo->m_pszServName, rbuffer[0], MAX_SRV_NAME);
strncpy(servinfo->m_szIpString, rbuffer[1], MAX_IP_STRING);
servinfo->m_sPort = atoi(rbuffer[2]);
servinfo->m_ServType = atoi(rbuffer[3]);
servinfo->m_DeadCount = 0;
strncpy(servinfo->m_monitorYN, rbuffer[4], 2);
fflush(stderr);
}
void view_common_header(rcmng_cheader_t *cheader)
{
fprintf(stderr, "***************** Common Header *******************\n");
fprintf(stderr, "RCID : %s\n", cheader->rcmng_rcid);
fprintf(stderr, "SERVER NAME : %s\n", cheader->rcmng_servName);
fprintf(stderr, "SERVICE TYPE : %d\n", cheader->rcmng_serviceType);
fprintf(stderr, "BODY LENGTH : %ld\n", cheader->bodylength);
fprintf(stderr, "***************************************************\n");
}
void view_body(servinfo_t *servinfo)
{
fprintf(stderr, "***************** Server info Body ****************\n");
fprintf(stderr, "SERVER NAME : %s\n", servinfo->m_pszServName);
fprintf(stderr, "IP Address : %s\n", servinfo->m_szIpString);
fprintf(stderr, "PORT : %d\n", servinfo->m_sPort);
fprintf(stderr, "SERVER TYPE : %d\n", servinfo->m_ServType);
fprintf(stderr, "Dead Count : %d\n", servinfo->m_DeadCount);
fprintf(stderr, "Monitoring Y/N : %s\n", servinfo->m_monitorYN);
fprintf(stderr, "***************************************************\n");
}
int send_to_sh_statusd(char *sndMessage)
{
char reply[64];
int fd;
int n;
int resnum;
/* connect to new sh_statusd */
fd = Tcp_connect(HostName, Port);
/* send sndMessage to new sh_statusd */
Write(fd, sndMessage, MAXN);
/* receive result from new sh_statusd */
if ( (n = Readn(fd, reply, 64)) == 0)
{
err_quit("server returned %d bytes", n);
}
resnum = atoi(reply);
fprintf(stderr, "result value : %d\n", resnum);
Close(fd);
return resnum;
}
+485
View File
@@ -0,0 +1,485 @@
#include "unp.h"
#include "unpipc.h"
static char HostName[512];
static char report_update_port[16];
static char report_send_port[16];
void report_thread_make(int whatis)
{
void *report_thread_send_main(void *);
void *report_thread_update_main(void *);
int a = 0;
int b = 1;
GetProfile("PARAM", "HOSTNAME", HostName, "");
GetProfile("PARAM", "REPORT_UPDATE_PORT", report_update_port, "");
GetProfile("PARAM", "REPORT_SEND_PORT", report_send_port, "");
if (whatis == 0)
{
/* make server list update thread (for changing server information [INSERT, UPDATE, DELETE]) */
Pthread_create(&report_tptr[a].thread_tid, NULL, &report_thread_update_main, (void *)a);
}
else if (whatis == 1)
{
/* make server list send thread (for SMS WEB service */
Pthread_create(&report_tptr[b].thread_tid, NULL, &report_thread_send_main, (void *)b);
}
else
{
Pthread_create(&report_tptr[a].thread_tid, NULL, &report_thread_update_main, (void *)a);
Pthread_create(&report_tptr[b].thread_tid, NULL, &report_thread_send_main, (void *)b);
}
/*
pthread_detach(report_tptr[a].thread_tid);
pthread_detach(report_tptr[b].thread_tid);
*/
return;
}
void * report_thread_send_main(void *arg)
{
struct sockaddr_storage cliaddr;
char *start_point = NULL;
char *pTmpData = NULL;
char szLineBuffer[1024];
int offset;
int str_len;
int nLeft, nWrite=0;
int eWrite=0;
int SndBlockSize = 1024;
socklen_t len;
ssize_t n;
char rcvBuff[MAXREADLINE];
char sndBuff[MaxSizeOfSndBuffer];
WriteSHLog_safe("report server list send thread(1) starting..\n");
report_tptr[(int) arg].deadORalive = 1;
/* ToDo thread : UDP connection */
send_reportfd = Udp_server((char *)HostName, (char *)report_send_port, NULL);
report_tptr[(int) arg].thread_count++;
for ( ; ; )
{
len = sizeof(cliaddr);
memset(rcvBuff, 0, MAXREADLINE);
memset(sndBuff, 0, MaxSizeOfSndBuffer);
n = Recvfrom(send_reportfd, rcvBuff, MAXREADLINE, 0, (SA *)&cliaddr, &len);
if (n < 0)
{
pthread_exit(0);
}
#ifdef __DEBUG__
fprintf(stderr, "receive contents : %s\n", rcvBuff);
fprintf(stderr, "datagram from %s\n", Sock_ntop((SA *)&cliaddr, len));
#endif
report_tptr[(int) arg].thread_count++;
if (strncmp(rcvBuff, GetServStatusCmd, 14))
{
memset(sndBuff, 0, MaxSizeOfSndBuffer);
snprintf(sndBuff, MaxSizeOfSndBuffer, "Invalid Argument!");
eWrite = sendto(send_reportfd, sndBuff, strlen(sndBuff), 0, (SA *)&cliaddr, len);
if(nWrite < 0)
{
#ifdef __SETLOG__
WriteSHLog_safe("Error! send to sms web. sendto : %s\n", strerror(errno));
#endif
}
continue;
}
/* send to SMS server */
pTmpData = make_status_string(&str_len);
start_point = pTmpData;
#ifdef __DEBUG__
fprintf(stderr , "report_send@@@@@@@@@@@@@@\n");
#endif
nLeft = str_len;
/* view udp data */
#if 0
//WriteSHLog_safe("%s(%d)\n", pTmpData, nLeft);
WriteSHLog_safe("string length to send SMS: (%d)\n", nLeft);
#endif
do
{
offset = 0;
SndBlockSize = 1024;
memset(szLineBuffer, 0, 1024);
if(nLeft < SndBlockSize)
SndBlockSize = nLeft;
while(offset < SndBlockSize)
szLineBuffer[offset++] = *pTmpData++;
szLineBuffer[offset] = '\0';
usleep(10);
nWrite = sendto(send_reportfd, szLineBuffer, offset + 1, 0, (SA *)&cliaddr, len);
nWrite -= 1;
if(nWrite < 0)
{
#ifdef __SETLOG__
WriteSHLog_safe("Error! send to sms web. sendto : %s\n", strerror(errno));
#endif
break;
}
else if(nWrite == 0)
{
break;
}
nLeft -= nWrite;
}while(nLeft >= 0);
free(start_point);
}
}
char *make_status_string(int *str_len)
{
servinfo_t *i, *start_servinfo;
char sztmpBuffer[1024+5];
//char logstring[1024];
char *status_str;
int len = 0;
int cnt;
int offset = 0;
int inc_size = 0;
int adding = 0;
int shm_size = 0;
char host[128], host2[128], *p;
cnt = 0;
shm_size = get_sizeof_shm();
while ((start_servinfo = get_shm_start_pointer_readonly()) == (void *)-1)
usleep(1000);
status_str = (char *)malloc(1024);
for (i = start_servinfo; strcmp(i->m_pszServName, END_OF_SHM); i++)
{
if (i->m_pszServName[0] == '\0')
break;
memset(sztmpBuffer, 0, 1024);
len = snprintf(sztmpBuffer, 1024, "%d|%d|%s|%s|%d|%ld|"
,i->m_Status
,i->m_ServType
,i->m_pszServName
,i->m_szIpString
,i->m_sPort
,i->m_StatChgTime
);
if (i->m_pszDomainName && strlen(i->m_pszDomainName) > 0) {
if (!strcmp(i->ss.du.domain, i->ss.du.hostname) || i->ss.du.hostname[0] == '\0')
{
strcpy(host, i->ss.du.domain);
}
else
{
strcpy(host2, i->ss.du.hostname);
p = strchr(host2, '.');
if (p) {
*p = '\0';
}
sprintf(host, "%s(%s)", i->ss.du.domain, host2);
}
adding = snprintf(sztmpBuffer + len, 1024 - len,
"%ld|%s|%llu|%llu|%d|%d|%d|%d|%d|%d|%u|%u|%u|%u|\r\n"
,(long)(i->ss.stamp)
,host
,(unsigned long long)(i->ss.du.total)
,(unsigned long long)(i->ss.du.free)
,(int)(i->ss.du.manual_disable)
,(int)(i->ss.du.upload_level)
,(int)(i->ss.du.disk_backlog)
,(int)(i->ss.du.disk_percent)
,(int)(i->ss.du.connection_established)
,(int)(i->ss.du.connection_total)
,(i->ss.du.traffic_ip)
,(i->ss.du.traffic_ib)
,(i->ss.du.traffic_op)
,(i->ss.du.traffic_ob));
}
else {
adding = snprintf(sztmpBuffer + len, 1024 - len,
"%s", "-|-|-|-|-|-|-|-|-|-|-|-|-|-|\r\n");
}
/* realloc status_str */
inc_size += (len + adding);
status_str = (char *)realloc(status_str, inc_size);
if (!status_str)
{
WriteSHLog_safe("Cannot reallocation heap!\n");
exit(0);
}
//strncat(status_str, sztmpBuffer, strlen(sztmpBuffer));
memcpy(status_str + offset, sztmpBuffer, len+adding);
offset += (len + adding);
cnt++;
}
*str_len = inc_size;
munmap((void *)start_servinfo, shm_size);
return status_str;
}
void * report_thread_update_main(void *arg)
{
//char * make_status_string(char *status_str);
struct sockaddr_storage cliaddr;
int res = 0;
int eWrite;
int SndBlockSize = 1024;
socklen_t len;
ssize_t n;
char rcvBuff[MAXREADLINE];
char sndBuff[128];
report_tptr[(int) arg].deadORalive = 1;
/* ToDo thread : UDP connection */
Pthread_mutex_lock(&report_u_lock);
update_reportfd = Udp_server((char *)HostName, (char *)report_update_port, NULL);
report_tptr[(int) arg].thread_count++;
Pthread_mutex_unlock(&report_u_lock);
WriteSHLog_safe("report serverList update thread(0) starting..\n");
for ( ; ; )
{
SndBlockSize = 1024;
len = sizeof(cliaddr);
n = Recvfrom(update_reportfd, rcvBuff, MAXREADLINE, 0, (SA *)&cliaddr, &len);
if (n < 0)
{
pthread_exit(0);
}
#ifdef __SETLOG__
WriteSHLog_safe("[UPDATE] receive contents : %s\n", rcvBuff);
#endif
if (strncmp(rcvBuff, RequestServUpdateCmd, 19))
{
memset(sndBuff, 0, MaxSizeOfSndBuffer);
snprintf(sndBuff, MaxSizeOfSndBuffer, "Invalid Argument!");
eWrite = sendto(update_reportfd, sndBuff, strlen(sndBuff), 0, (SA *)&cliaddr, len);
if (eWrite < 0)
{
#ifdef __SETLOG__
WriteSHLog_safe("report update thread fail to send web. but don't care\n");
#endif
}
continue;
}
/* Update server list from DB */
Semop(report_semid, &waitop, 1);
res = update_report_func();
Semop(report_semid, &postop, 1);
#ifdef __DEBUG__
fprintf(stderr , "report_update@@@@@@@@@@@@@@\n");
#endif
if (res == 0)
{
#ifdef __SETLOG__
WriteSHLog_safe("report(update) Job Fail!!!!\n");
#endif
strncpy(sndBuff, "FAILURE!", sizeof(sndBuff));
}
else
{
#ifdef __DEBUG__
fprintf(stderr, "\nreport(update) Job Success!\n");
#endif
strncpy(sndBuff, "SUCCESS_0222", sizeof(sndBuff));
}
eWrite = sendto(update_reportfd, sndBuff, strlen(sndBuff), 0, (SA *)&cliaddr, len);
if (eWrite < 0)
{
#ifdef __SETLOG__
WriteSHLog_safe("report update thread fail to send web. but don't care\n");
}
#endif
usleep(100);
}
}
int update_report_func()
{
MYSQL mysql;
MYSQL_RES *res;
MYSQL_ROW row;
servinfo_t *temp_servinfo, *servinfo_head;
servinfo_t *init_servinfo, *start_servinfo;
servinfo_t *servinfo_ptr;
g_shm_t *g_shm_ptr;
void *shared_memory = (void *)0;
char mysql_db[8];
char mysql_user[16];
char mysql_pass[16];
char logString[1024];
int fd;
int shm_size;
int mysql_port, fields;
int cnt;
int shmid;
long numRows;
/* initialize mysqlDB */
mysql_init(&mysql);
GetProfile("MYSQL", "DATABASE_NAME", mysql_db, "CCDB");
GetProfile("MYSQL", "DATABASE_ACCT", mysql_user, "root");
GetProfile("MYSQL", "DATABASE_PW", mysql_pass, "alfkzmf!?{}");
mysql_port = GetProfileInt("MYSQL", "DATABASE_PORT", 3306);
/* connect mysql */
if (!mysql_real_connect(&mysql, NULL, mysql_user, mysql_pass, mysql_db, mysql_port, (char *)NULL, 0))
{
WriteSHLog_safe("[MYSQL] %s\n", mysql_error(&mysql));
return 0;
}
/* start transaction */
mysql_autocommit(&mysql, 0);
if (mysql_query(&mysql, MYQUERY))
{
WriteSHLog_safe("[error]%s\n", mysql_error(&mysql));
mysql_rollback(&mysql);
mysql_close(&mysql);
return 0;
}
else
{
#ifdef __DEBUG__
fprintf(stderr, "%s\n", "[MySQL]Query Success!!");
#endif
mysql_commit(&mysql);
}
shm_size = get_sizeof_shm();
numRows = (int)(shm_size/sizeof(servinfo_t));
/* get the global SHM start pointer */
start_servinfo = servinfo_ptr = get_shm_start_pointer();
/****************** store old SHM to Temporary ************************/
servinfo_head = Calloc(numRows+1, sizeof(servinfo_t));
temp_servinfo = (servinfo_t *)servinfo_head;
while (strcmp(servinfo_ptr->m_pszServName, END_OF_SHM))
{
if (servinfo_ptr->m_pszServName[0] == '\0')
break;
/* tmporary servinfo_t */
memcpy(temp_servinfo, servinfo_ptr, sizeof(servinfo_t));
temp_servinfo++;
servinfo_ptr++;
}
strncpy(temp_servinfo->m_pszServName, END_OF_SHM, 11);
/***********************************************************************/
/****************** delete old SHM and create new SHM ******************/
/*
munmap((void *)g_servinfo, shm_size);
g_servinfo = NULL;
shm_unlink(SHM_NAME);
*/
/***********************************************************************/
/****************** GET new server list from mysql *********************/
res = mysql_store_result(&mysql);
fields = mysql_num_fields(res);
numRows = mysql_num_rows(res);
#ifdef __DEBUG__
fprintf(stderr, "[NEW LIST] numRows --> %ld\n", numRows);
#endif
if (numRows == 0)
numRows = 1;
munmap((void *)start_servinfo, shm_size);
fd = Shm_open(SHM_NAME, O_RDWR | O_CREAT | O_TRUNC, FILE_MODE);
Ftruncate(fd, 0);
usleep(100);
Ftruncate(fd, sizeof(servinfo_t)*(numRows+1));
init_servinfo = Mmap(NULL, sizeof(servinfo_t)*(numRows+1), PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);
memset(init_servinfo, 0, sizeof(servinfo_t)*(numRows+1));
servinfo_ptr = init_servinfo;
cnt = 1;
while((row = mysql_fetch_row(res)))
{
addServerToList(servinfo_ptr, row);
servinfo_ptr++;
cnt++;
}
strncpy(servinfo_ptr->m_pszServName, END_OF_SHM, 11);
Close(fd);
/* if server_update button click then system V shm's value is dirty */
shmid = shmget((key_t)6677, sizeof(g_shm_t), IPC_CREAT);
if (shmid == -1)
{
WriteSHLog_safe("system V shmget failed\n");
exit(EXIT_FAILURE);
}
shared_memory = shmat(shmid, (void *)0, 0);
if (shared_memory == (void *)-1)
{
WriteSHLog_safe("system V shmat failed\n");
exit(EXIT_FAILURE);
}
g_shm_ptr = (g_shm_t *)shared_memory;
g_shm_ptr->is_dirty = 1;
if (shmdt(shared_memory) == -1)
{
WriteSHLog_safe("system V shmdt failed\n");
exit(EXIT_FAILURE);
}
/* update server list */
//update_server_list(init_servinfo, servinfo_head);
/* close mysqlDB */
mysql_free_result(res);
mysql_close(&mysql);
free(servinfo_head);
munmap((void *)init_servinfo, (sizeof(servinfo_t)*numRows));
return 1;
}
void update_server_list(servinfo_t *new, servinfo_t *old)
{
servinfo_t *ii;
while (strcmp(new->m_pszServName, END_OF_SHM))
{
if (new->m_pszServName[0] == '\0')
break;
for (ii = old; strcmp(ii->m_pszServName, END_OF_SHM); ii++)
{
if (ii->m_pszServName[0] == '\0')
break;
if (!strcmp(new->m_pszServName, ii->m_pszServName))
{
memcpy(new->m_pszDomainName, ii->m_pszDomainName, MAX_DOMAIN_NAME);
memcpy((char *)&(new->ss), (char *)&(ii->ss), sizeof(struct svr_status));
break;
}
}
new++;
}
}
@@ -0,0 +1,557 @@
#include "unp.h"
#include "unpipc.h"
static char HostName[512];
static char report_update_port[16];
static char report_send_port[16];
void cleanup(void *arg)
{
/*
if ((int)arg == 0)
Close(send_reportfd);
else if ((int)arg == 1)
Close(update_reportfd);
*/
/* write dead or alive flag */
report_tptr[(int)arg].deadORalive = 0;
}
void report_thread_make(int whatis)
{
void *report_thread_send_main(void *);
void *report_thread_update_main(void *);
int a = 0;
int b = 1;
GetProfile("PARAM", "HOSTNAME", HostName, "");
GetProfile("PARAM", "REPORT_UPDATE_PORT", report_update_port, "");
GetProfile("PARAM", "REPORT_SEND_PORT", report_send_port, "");
if (whatis == 0)
{
/* make server list update thread (for changing server information [INSERT, UPDATE, DELETE]) */
Pthread_create(&report_tptr[a].thread_tid, NULL, &report_thread_update_main, (void *)a);
}
else if (whatis == 1)
{
/* make server list send thread (for SMS WEB service */
Pthread_create(&report_tptr[b].thread_tid, NULL, &report_thread_send_main, (void *)b);
}
else
{
Pthread_create(&report_tptr[a].thread_tid, NULL, &report_thread_update_main, (void *)a);
Pthread_create(&report_tptr[b].thread_tid, NULL, &report_thread_send_main, (void *)b);
}
pthread_detach(report_tptr[a].thread_tid);
pthread_detach(report_tptr[b].thread_tid);
return;
}
void * report_thread_send_main(void *arg)
{
struct sockaddr_storage cliaddr;
char *start_point = NULL;
char *pTmpData = NULL;
char szLineBuffer[1024];
int offset;
int str_len;
int nLeft, nWrite=0;
int eWrite=0;
int SndBlockSize = 1024;
socklen_t len;
ssize_t n;
char rcvBuff[MAXREADLINE];
char sndBuff[MaxSizeOfSndBuffer];
fprintf(stderr, "report server list send thread(1) starting..\n");
report_tptr[(int) arg].deadORalive = 1;
pthread_cleanup_push(cleanup, (void *)arg);
/* ToDo thread : UDP connection */
Pthread_mutex_lock(&report_s_lock);
send_reportfd = Udp_server((char *)HostName, (char *)report_send_port, NULL);
report_tptr[(int) arg].thread_count++;
Pthread_mutex_unlock(&report_s_lock);
for ( ; ; )
{
FILE *shLogFile = NULL;
char logString[1024];
shLogFile = fopen(makeLogString(), "a");
if (!shLogFile)
{
fprintf(stderr, "Cannot open SH Log file!!\n");
}
len = sizeof(cliaddr);
memset(rcvBuff, 0, MAXREADLINE);
memset(sndBuff, 0, MaxSizeOfSndBuffer);
n = Recvfrom(send_reportfd, rcvBuff, MAXREADLINE, 0, (SA *)&cliaddr, &len);
if (n < 0)
{
pthread_exit(0);
}
#ifdef __DEBUG__
fprintf(stderr, "receive contents : %s\n", rcvBuff);
fprintf(stderr, "datagram from %s\n", Sock_ntop((SA *)&cliaddr, len));
#endif
report_tptr[(int) arg].thread_count++;
if (strncmp(rcvBuff, GetServStatusCmd, 14))
{
memset(sndBuff, 0, MaxSizeOfSndBuffer);
snprintf(sndBuff, MaxSizeOfSndBuffer, "Invalid Argument!");
eWrite = sendto(send_reportfd, sndBuff, strlen(sndBuff), 0, (SA *)&cliaddr, len);
if(nWrite < 0)
{
#ifdef __SETLOG__
snprintf(logString, 1024, "Error! send to sms web. sendto : %s\n", strerror(errno));
WriteSHLog(logString, shLogFile);
#endif
}
continue;
}
/* send to SMS server */
pTmpData = make_status_string(&str_len, shLogFile);
start_point = pTmpData;
#ifdef __DEBUG__
fprintf(stderr , "report_send@@@@@@@@@@@@@@\n");
#endif
nLeft = str_len;
/* view udp data */
#ifdef __DEBUG__
//fprintf(shLogFile, "%s(%d)\n", pTmpData, nLeft);
fprintf(stderr, "string length to send SMS: (%d)\n", nLeft);
#endif
do
{
offset = 0;
SndBlockSize = 1024;
memset(szLineBuffer, 0, 1024);
if(nLeft < SndBlockSize)
SndBlockSize = nLeft;
while(offset < SndBlockSize)
szLineBuffer[offset++] = *pTmpData++;
szLineBuffer[offset] = '\0';
#ifdef __DEBUG__
//fprintf(shLogFile, "szLineBuffer : %s(%d)\n", szLineBuffer, sizeof(szLineBuffer));
#endif
usleep(100);
nWrite = sendto(send_reportfd, szLineBuffer, offset + 1, 0, (SA *)&cliaddr, len);
nWrite -= 1;
if(nWrite < 0)
{
#ifdef __SETLOG__
snprintf(logString, 1024, "Error! send to sms web. sendto : %s\n", strerror(errno));
WriteSHLog(logString, shLogFile);
#endif
break;
}
else if(nWrite == 0)
{
break;
}
nLeft -= nWrite;
}while(nLeft >= 0);
free(start_point);
fflush(shLogFile);
//if (shLogFile)
fclose(shLogFile);
}
pthread_cleanup_pop(0);
}
char *make_status_string(int *str_len, FILE *shLogFile)
{
servinfo_t *i, *start_servinfo;
g_shm_t *g_shm_ptr;
void *shared_memory = (void *)0;
char sztmpBuffer[1024+5];
char logstring[1024];
static char *status_str;
int len = 0;
int cnt;
int offset = 0;
int inc_size = 0;
int adding = 0;
int shmid;
char host[128], host2[128], *p;
cnt = 0;
/* get the global SHM start pointer if system V shm's value is dirty */
shmid = shmget((key_t)6677, sizeof(g_shm_t), IPC_CREAT);
if (shmid == -1)
{
//WriteSHLog("system V shmget failed", shLogFile);
exit(EXIT_FAILURE);
}
shared_memory = shmat(shmid, (void *)0, 0);
if (shared_memory == (void *)-1)
{
//WriteSHLog("system V shmat failed", shLogFile);
exit(EXIT_FAILURE);
}
g_shm_ptr = (g_shm_t *)shared_memory;
if (g_shm_ptr->is_dirty2 == 1)
{
start_servinfo = get_shm_start_pointer();
/* debug 080313 */
for (i = start_servinfo; strcmp(i->m_pszServName, END_OF_SHM); i++)
{
snprintf(logstring, 512, "[SEND] serverIP : %s , serverDomain : %s\n", i->m_szIpString, i->m_pszDomainName);
WriteSHLog(logstring, shLogFile);
}
/* debug end 080313 */
g_servinfo = start_servinfo;
g_shm_ptr->is_dirty2 = 0;
}
else
{
start_servinfo = g_servinfo;
}
if (shmdt(shared_memory) == -1)
{
//WriteSHLog("system V shmdt failed", shLogFile);
exit(EXIT_FAILURE);
}
status_str = (char *)malloc(1024);
//Sem_wait(sem_mutex);
for (i = start_servinfo; strcmp(i->m_pszServName, END_OF_SHM); i++)
{
// check for monitor_yn
if (!strncmp(i->m_monitorYN, "N", 2))
i->m_Status = 3;
memset(sztmpBuffer, 0, 1024);
len = snprintf(sztmpBuffer, 1024, "%d|%d|%s|%s|%d|%d|"
,i->m_Status
,i->m_ServType
,i->m_pszServName
,i->m_szIpString
,i->m_sPort
,i->m_StatChgTime
);
if (i->m_pszDomainName && strlen(i->m_pszDomainName) > 0) {
if (!strcmp(i->ss.du.domain, i->ss.du.hostname) || i->ss.du.hostname[0] == '\0')
{
strcpy(host, i->ss.du.domain);
}
else
{
strcpy(host2, i->ss.du.hostname);
p = strchr(host2, '.');
if (p) {
*p = '\0';
}
sprintf(host, "%s(%s)", i->ss.du.domain, host2);
}
adding = snprintf(sztmpBuffer + len, 1024 - len,
"%ld|%s|%llu|%llu|%d|%d|%d|%d|%d|%d|%lu|%lu|%lu|%lu|\r\n"
,(long)(i->ss.stamp)
,host
,(unsigned long long)(i->ss.du.total)
,(unsigned long long)(i->ss.du.free)
,(int)(i->ss.du.manual_disable)
,(int)(i->ss.du.upload_level)
,(int)(i->ss.du.disk_backlog)
,(int)(i->ss.du.disk_percent)
,(int)(i->ss.du.connection_established)
,(int)(i->ss.du.connection_total)
,(unsigned long)(i->ss.du.traffic_ip)
,(unsigned long)(i->ss.du.traffic_ib)
,(unsigned long)(i->ss.du.traffic_op)
,(unsigned long)(i->ss.du.traffic_ob));
}
else {
adding = snprintf(sztmpBuffer + len, 1024 - len,
"%s", "-|-|-|-|-|-|-|-|-|-|-|-|-|-|\r\n");
}
/* realloc status_str */
inc_size += (len + adding);
status_str = (char *)realloc(status_str, inc_size);
if (!status_str)
{
fprintf(shLogFile, "Cannot reallocation heap!");
exit(0);
}
//strncat(status_str, sztmpBuffer, strlen(sztmpBuffer));
memcpy(status_str + offset, sztmpBuffer, len+adding);
offset += (len + adding);
cnt++;
}
//Sem_post(sem_mutex);
*str_len = inc_size;
fflush(shLogFile);
return status_str;
}
void * report_thread_update_main(void *arg)
{
char * make_status_string(char *status_str);
struct sockaddr_storage cliaddr;
int res = 0;
int eWrite;
int SndBlockSize = 1024;
socklen_t len;
ssize_t n;
char rcvBuff[MAXREADLINE];
char sndBuff[128];
report_tptr[(int) arg].deadORalive = 1;
pthread_cleanup_push(cleanup, (void *)arg);
/* ToDo thread : UDP connection */
Pthread_mutex_lock(&report_u_lock);
update_reportfd = Udp_server((char *)HostName, (char *)report_update_port, NULL);
report_tptr[(int) arg].thread_count++;
Pthread_mutex_unlock(&report_u_lock);
fprintf(stderr, "report serverList update thread(0) starting\n");
for ( ; ; )
{
FILE *shLogFile = NULL;
char logString[1024];
shLogFile = fopen(makeLogString(), "a");
if (!shLogFile)
{
fprintf(stderr, "Cannot open SH Log file!!\n");
}
SndBlockSize = 1024;
len = sizeof(cliaddr);
n = Recvfrom(update_reportfd, rcvBuff, MAXREADLINE, 0, (SA *)&cliaddr, &len);
if (n < 0)
{
pthread_exit(0);
}
#ifdef __DEBUG__
fprintf(stderr, "[UPDATE] receive contents : %s\n", rcvBuff);
fprintf(stderr, "datagram from %s\n", Sock_ntop((SA *)&cliaddr, len));
#endif
if (strncmp(rcvBuff, RequestServUpdateCmd, 19))
{
memset(sndBuff, 0, MaxSizeOfSndBuffer);
snprintf(sndBuff, MaxSizeOfSndBuffer, "Invalid Argument!");
eWrite = sendto(update_reportfd, sndBuff, strlen(sndBuff), 0, (SA *)&cliaddr, len);
if (eWrite < 0)
{
#ifdef __SETLOG__
snprintf(logString, 1024, "report update thread fail to send web. but don't care");
WriteSHLog(logString, shLogFile);
#endif
}
continue;
}
/* Update server list from DB */
Sem_wait(sem_mutex);
res = update_report_func(shLogFile);
Sem_post(sem_mutex);
#ifdef __DEBUG__
fprintf(stderr , "report_update@@@@@@@@@@@@@@\n");
#endif
if (res == 0)
{
#ifdef __SETLOG__
snprintf(logString, 1024, "report(update) Job Fail!!!!");
WriteSHLog(logString, shLogFile);
#endif
strncpy(sndBuff, "FAILURE!", sizeof(sndBuff));
}
else
{
#ifdef __DEBUG__
fprintf(stderr, "\nreport(update) Job Success!\n");
#endif
strncpy(sndBuff, "SUCCESS_0222", sizeof(sndBuff));
}
eWrite = sendto(update_reportfd, sndBuff, strlen(sndBuff), 0, (SA *)&cliaddr, len);
if (eWrite < 0)
{
#ifdef __SETLOG__
snprintf(logString, 1024, "report update thread fail to send web. but don't care");
WriteSHLog(logString, shLogFile);
}
#endif
fclose(shLogFile);
usleep(500);
}
pthread_cleanup_pop(0);
}
int update_report_func(FILE *shLogFile)
{
MYSQL mysql;
MYSQL_RES *res;
MYSQL_ROW row;
servinfo_t *temp_servinfo, *servinfo_head;
servinfo_t *init_servinfo, *start_servinfo;
g_shm_t *g_shm_ptr;
void *shared_memory = (void *)0;
char mysql_db[8];
char mysql_user[16];
char mysql_pass[16];
char logString[1024];
int fd;
int shm_size;
int mysql_port, fields;
int cnt;
int shmid;
long numRows;
/* initialize mysqlDB */
mysql_init(&mysql);
GetProfile("MYSQL", "DATABASE_NAME", mysql_db, "CCDB");
GetProfile("MYSQL", "DATABASE_ACCT", mysql_user, "root");
GetProfile("MYSQL", "DATABASE_PW", mysql_pass, "alfkzmf!?{}");
mysql_port = GetProfileInt("MYSQL", "DATABASE_PORT", 3306);
/* connect mysql */
if (!mysql_real_connect(&mysql, NULL, mysql_user, mysql_pass, mysql_db, mysql_port, (char *)NULL, 0))
{
snprintf(logString, 1024, "[MYSQL] %s", mysql_error(&mysql));
WriteSHLog(logString, shLogFile);
return 0;
}
/* start transaction */
mysql_autocommit(&mysql, 0);
if (mysql_query(&mysql, MYQUERY))
{
fprintf(shLogFile, "[error]%s", mysql_error(&mysql));
mysql_rollback(&mysql);
mysql_close(&mysql);
return 0;
}
else
{
#ifdef __DEBUG__
fprintf(stderr, "%s\n", "[MySQL]Query Success!!");
#endif
mysql_commit(&mysql);
}
shm_size = get_sizeof_shm();
numRows = (int)(shm_size/sizeof(servinfo_t));
/* get the global SHM start pointer */
start_servinfo = g_servinfo;
/****************** store old SHM to Temporary ************************/
servinfo_head = Calloc(numRows+1, sizeof(servinfo_t));
temp_servinfo = (servinfo_t *)servinfo_head;
while (strcmp(start_servinfo->m_pszServName, END_OF_SHM))
{
/* tmporary servinfo_t */
memcpy(temp_servinfo, start_servinfo, sizeof(servinfo_t));
temp_servinfo++;
start_servinfo++;
}
strncpy(temp_servinfo->m_pszServName, END_OF_SHM, 11);
/********************************************************************/
/****************** delete old SHM and create new SHM ******************/
/*
munmap((void *)g_servinfo, shm_size);
g_servinfo = NULL;
shm_unlink(SHM_NAME);
*/
/***********************************************************************/
/****************** GET new server list from mysql *********************/
res = mysql_store_result(&mysql);
fields = mysql_num_fields(res);
numRows = mysql_num_rows(res);
#ifdef __DEBUG__
fprintf(stderr, "[NEW LIST] numRows --> %ld\n", numRows);
#endif
if (numRows == 0)
numRows = 1;
munmap((void *)g_servinfo, shm_size);
fd = Shm_open(SHM_NAME, O_RDWR | O_CREAT | O_TRUNC, FILE_MODE);
Ftruncate(fd, 0);
usleep(100);
Ftruncate(fd, (sizeof(servinfo_t)*numRows));
g_servinfo = Mmap(NULL, (sizeof(servinfo_t)*numRows), PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);
memset(g_servinfo, 0, sizeof(servinfo_t)*(numRows));
init_servinfo = g_servinfo;
cnt = 1;
while((row = mysql_fetch_row(res)))
{
addServerToList(init_servinfo, row);
init_servinfo++;
cnt++;
}
strncpy(init_servinfo->m_pszServName, END_OF_SHM, 11);
Close(fd);
/* update server list */
//update_server_list(init_servinfo, servinfo_head);
/* dirty system V shm */
int t, vrcd_threads;
vrcd_threads = GetProfileInt("PARAM", "VRCD_THREAD_NUM", 10);
shmid = shmget((key_t)6677, sizeof(g_shm_t), IPC_CREAT);
if (shmid == -1)
{
WriteSHLog("system V shmget failed", shLogFile);
return 0;
}
shared_memory = shmat(shmid, (void *)0, 0);
if (shared_memory == (void *)-1)
{
WriteSHLog("system V shmat failed", shLogFile);
return 0;
}
g_shm_ptr = (g_shm_t *)shared_memory;
g_shm_ptr->is_dirty = 1;
g_shm_ptr->is_dirty2 = 1;
for (t=0; t < vrcd_threads; t++)
g_shm_ptr->thread_number[t] = 1;
if (shmdt(shared_memory) == -1)
{
WriteSHLog("system V shmdt failed", shLogFile);
return 0;
}
/* close mysqlDB */
mysql_free_result(res);
mysql_close(&mysql);
free(servinfo_head);
return 1;
}
void update_server_list(servinfo_t *new, servinfo_t *old)
{
servinfo_t *ii;
while (strcmp(new->m_pszServName, END_OF_SHM))
{
//fprintf(shLogFile, "SERvname : %s\n", new->m_pszServName);
for (ii = old; strcmp(ii->m_pszServName, END_OF_SHM); ii++)
{
if (!strcmp(new->m_pszServName, ii->m_pszServName))
{
memcpy(new->m_pszDomainName, ii->m_pszDomainName, MAX_DOMAIN_NAME);
memcpy((char *)&(new->ss), (char *)&(ii->ss), sizeof(struct svr_status));
break;
}
}
new++;
}
}
@@ -0,0 +1,448 @@
#include "unp.h"
#include "unpipc.h"
static char HostName[512];
static char report_update_port[16];
static char report_send_port[16];
void cleanup(void *arg)
{
if ((int)arg == 0)
Close(send_reportfd);
else if ((int)arg == 1)
Close(update_reportfd);
/* write dead or alive flag */
report_tptr[(int)arg].deadORalive = 0;
}
void report_thread_make(int whatis)
{
int a = 0;
int b = 1;
void *report_thread_send_main(void *);
void *report_thread_update_main(void *);
GetProfile("PARAM", "HOSTNAME", HostName, "");
GetProfile("PARAM", "REPORT_UPDATE_PORT", report_update_port, "");
GetProfile("PARAM", "REPORT_SEND_PORT", report_send_port, "");
if (whatis == 0)
{
/* make server list update thread (for changing server information [INSERT, UPDATE, DELETE]) */
Pthread_create(&report_tptr[a].thread_tid, NULL, &report_thread_update_main, (void *)a);
}
else if (whatis == 1)
{
/* make server list send thread (for SMS WEB service */
Pthread_create(&report_tptr[b].thread_tid, NULL, &report_thread_send_main, (void *)b);
}
else
{
Pthread_create(&report_tptr[a].thread_tid, NULL, &report_thread_update_main, (void *)a);
Pthread_create(&report_tptr[b].thread_tid, NULL, &report_thread_send_main, (void *)b);
}
return;
}
void * report_thread_send_main(void *arg)
{
struct sockaddr_storage cliaddr;
char *start_point = NULL;
char *pTmpData = NULL;
char szLineBuffer[1024];
int offset;
int str_len;
int nLeft, nWrite=0;
int eWrite=0;
int SndBlockSize = 1024;
socklen_t len;
ssize_t n;
char rcvBuff[MAXREADLINE];
char sndBuff[MaxSizeOfSndBuffer];
fprintf(stderr, "report server list send thread(1) starting..\n");
report_tptr[(int) arg].deadORalive = 1;
pthread_cleanup_push(cleanup, (void *)arg);
/* ToDo thread : UDP connection */
Pthread_mutex_lock(&report_lock);
send_reportfd = Udp_server((char *)HostName, (char *)report_send_port, NULL);
report_tptr[(int) arg].thread_count++;
Pthread_mutex_unlock(&report_lock);
for ( ; ; )
{
len = sizeof(cliaddr);
memset(rcvBuff, 0, MAXREADLINE);
memset(sndBuff, 0, MaxSizeOfSndBuffer);
n = Recvfrom(send_reportfd, rcvBuff, MAXREADLINE, 0, (SA *)&cliaddr, &len);
if (n < 0)
{
pthread_exit(0);
}
#ifdef __DEBUG__
fprintf(stderr, "receive contents : %s\n", rcvBuff);
fprintf(stderr, "datagram from %s\n", Sock_ntop((SA *)&cliaddr, len));
#endif
report_tptr[(int) arg].thread_count++;
if (strncmp(rcvBuff, GetServStatusCmd, 14))
{
memset(sndBuff, 0, MaxSizeOfSndBuffer);
snprintf(sndBuff, MaxSizeOfSndBuffer, "Invalid Argument!");
eWrite = sendto(send_reportfd, sndBuff, strlen(sndBuff), 0, (SA *)&cliaddr, len);
if(nWrite < 0)
{
#ifdef __DEBUG__
fprintf(stderr, "Error! send to sms web. sendto : %s\n", strerror(errno));
#endif
}
continue;
}
/* send to SMS server */
pTmpData = make_status_string(&str_len);
start_point = pTmpData;
#ifdef __DEBUG__
fprintf(stderr , "report_send@@@@@@@@@@@@@@\n");
#endif
nLeft = str_len;
/* view udp data */
#ifdef __DEBUG__
//fprintf(stderr, "%s(%d)\n", pTmpData, nLeft);
fprintf(stderr, "string length : (%d)\n", nLeft);
#endif
do
{
offset = 0;
SndBlockSize = 1024;
memset(szLineBuffer, 0, 1024);
if(nLeft < SndBlockSize)
SndBlockSize = nLeft;
while(offset < SndBlockSize)
szLineBuffer[offset++] = *pTmpData++;
szLineBuffer[offset] = '\0';
#ifdef __DEBUG__
//fprintf(stderr, "szLineBuffer : %s(%d)\n", szLineBuffer, sizeof(szLineBuffer));
#endif
nWrite = sendto(send_reportfd, szLineBuffer, offset + 1, 0, (SA *)&cliaddr, len);
nWrite -= 1;
if(nWrite < 0)
{
fprintf(stderr, "Error! send to sms web. sendto : %s\n", strerror(errno));
break;
}
else if(nWrite == 0)
{
break;
}
nLeft -= nWrite;
}while(nLeft >= 0);
free(start_point);
}
pthread_cleanup_pop(0);
fflush(stderr);
}
char *make_status_string(int *str_len)
{
servinfo_t *i;
static char *status_str;
char sztmpBuffer[1024];
int len;
int cnt;
int offset = 0;
int inc_size = 0;
int adding = 0;
char host[128], host2[128], *p;
cnt = 0;
status_str = (char *)malloc(1);
//Sem_wait(sem_mutex);
for (i = g_servinfo; strcmp(i->m_pszServName, END_OF_SHM); i++)
{
memset(sztmpBuffer, 0, 1024);
len = snprintf(sztmpBuffer, 1024, "%d|%d|%s|%s|%d|%d|"
,i->m_Status
,i->m_ServType
,i->m_pszServName
,i->m_szIpString
,i->m_sPort
,i->m_StatChgTime);
if (i->m_pszDomainName && strlen(i->m_pszDomainName) > 0) {
if (!strcmp(i->ss.du.domain, i->ss.du.hostname) || i->ss.du.hostname[0] == '\0')
{
strcpy(host, i->ss.du.domain);
}
else
{
strcpy(host2, i->ss.du.hostname);
p = strchr(host2, '.');
if (p) {
*p = '\0';
}
sprintf(host, "%s(%s)", i->ss.du.domain, host2);
}
adding = snprintf(sztmpBuffer + len, 1024 - len,
"%ld|%s|%llu|%llu|%d|%d|%d|%d|%d|%d|%lu|%lu|%lu|%lu|\r\n"
,(long)(i->ss.stamp)
,host
,(unsigned long long)(i->ss.du.total)
,(unsigned long long)(i->ss.du.free)
,(int)(i->ss.du.manual_disable)
,(int)(i->ss.du.upload_level)
,(int)(i->ss.du.disk_backlog)
,(int)(i->ss.du.disk_percent)
,(int)(i->ss.du.connection_established)
,(int)(i->ss.du.connection_total)
,(unsigned long)(i->ss.du.traffic_ip)
,(unsigned long)(i->ss.du.traffic_ib)
,(unsigned long)(i->ss.du.traffic_op)
,(unsigned long)(i->ss.du.traffic_ob));
}
else {
adding = snprintf(sztmpBuffer + len, 1024 - len,
"%s", "-|-|-|-|-|-|-|-|-|-|-|-|-|-|\r\n");
}
/* realloc status_str */
inc_size += (len + adding);
status_str = (char *)realloc(status_str, inc_size);
if (!status_str)
{
fprintf(stderr, "Cannot reallocation heap!\n");
exit(0);
}
//strncat(status_str, sztmpBuffer, strlen(sztmpBuffer));
memcpy(status_str + offset, sztmpBuffer, len+adding);
offset += (len + adding);
cnt++;
}
//Sem_post(sem_mutex);
*str_len = inc_size;
fflush(stderr);
return status_str;
}
void * report_thread_update_main(void *arg)
{
char * make_status_string(char *status_str);
struct sockaddr_storage cliaddr;
int res = 0;
int eWrite;
int SndBlockSize = 1024;
socklen_t len;
ssize_t n;
char rcvBuff[MAXREADLINE];
char sndBuff[128];
report_tptr[(int) arg].deadORalive = 1;
pthread_cleanup_push(cleanup, (void *)arg);
/* ToDo thread : UDP connection */
Pthread_mutex_lock(&report_lock);
update_reportfd = Udp_server((char *)HostName, (char *)report_update_port, NULL);
report_tptr[(int) arg].thread_count++;
Pthread_mutex_unlock(&report_lock);
fprintf(stderr, "report serverList update thread(0) starting\n");
for ( ; ; )
{
SndBlockSize = 1024;
len = sizeof(cliaddr);
n = Recvfrom(update_reportfd, rcvBuff, MAXREADLINE, 0, (SA *)&cliaddr, &len);
if (n < 0)
{
pthread_exit(0);
}
#ifdef __DEBUG__
fprintf(stderr, "[UPDATE] receive contents : %s\n", rcvBuff);
fprintf(stderr, "datagram from %s\n", Sock_ntop((SA *)&cliaddr, len));
#endif
if (strncmp(rcvBuff, RequestServUpdateCmd, 19))
{
memset(sndBuff, 0, MaxSizeOfSndBuffer);
snprintf(sndBuff, MaxSizeOfSndBuffer, "Invalid Argument!");
eWrite = sendto(update_reportfd, sndBuff, strlen(sndBuff), 0, (SA *)&cliaddr, len);
if (eWrite < 0)
{
#ifdef __DEBUG__
fprintf(stderr, "report update thread fail to send web. but don't care\n");
#endif
}
continue;
}
/* Update server list from DB */
Sem_wait(sem_mutex);
res = update_report_func();
Sem_post(sem_mutex);
#ifdef __DEBUG__
fprintf(stderr , "report_update@@@@@@@@@@@@@@\n");
#endif
if (res == 0)
{
#ifdef __DEBUG__
fprintf(stderr, "\nreport(update) Job Fail!!!!\n");
#endif
strncpy(sndBuff, "FAILURE!", sizeof(sndBuff));
}
else
{
#ifdef __DEBUG__
fprintf(stderr, "\nreport(update) Job Success!\n");
#endif
strncpy(sndBuff, "SUCCESS_0222", sizeof(sndBuff));
}
eWrite = sendto(update_reportfd, sndBuff, strlen(sndBuff), 0, (SA *)&cliaddr, len);
if (eWrite < 0)
#ifdef __DEBUG__
fprintf(stderr, "report update thread fail to send web. but don't care\n");
#endif
fflush(stderr);
usleep(100);
}
pthread_cleanup_pop(0);
}
int update_report_func()
{
MYSQL mysql;
MYSQL_RES *res;
MYSQL_ROW row;
servinfo_t *temp_servinfo, *servinfo_head;
servinfo_t *init_servinfo, *start_servinfo;
char mysql_db[8];
char mysql_user[16];
char mysql_pass[16];
int fd;
int shm_size;
int mysql_port, fields;
int cnt;
long numRows;
/* initialize mysqlDB */
mysql_init(&mysql);
GetProfile("MYSQL", "DATABASE_NAME", mysql_db, "CCDB");
GetProfile("MYSQL", "DATABASE_ACCT", mysql_user, "root");
GetProfile("MYSQL", "DATABASE_PW", mysql_pass, "alfkzmf!?{}");
mysql_port = GetProfileInt("MYSQL", "DATABASE_PORT", 3306);
/* connect mysql */
if (!mysql_real_connect(&mysql, NULL, mysql_user, mysql_pass, mysql_db, mysql_port, (char *)NULL, 0))
{
fprintf(stderr, "%s\n", mysql_error(&mysql));
return 0;
}
/* start transaction */
mysql_autocommit(&mysql, 0);
if (mysql_query(&mysql, MYQUERY))
{
fprintf(stderr, "[error]%s\n", mysql_error(&mysql));
mysql_rollback(&mysql);
mysql_close(&mysql);
return 0;
}
else
{
#ifdef __DEBUG__
fprintf(stderr, "%s\n", "[MySQL]Query Success!!");
#endif
mysql_commit(&mysql);
}
/* get the global SHM start pointer */
start_servinfo = g_servinfo;
/****************** store old SHM to Temporary ************************/
temp_servinfo = (servinfo_t *)malloc(sizeof(servinfo_t));
memset(temp_servinfo, 0, sizeof(servinfo_t));
servinfo_head = temp_servinfo;
while (strcmp(start_servinfo->m_pszServName, END_OF_SHM))
{
/* tmporary servinfo_t */
memcpy(temp_servinfo, start_servinfo, sizeof(servinfo_t));
temp_servinfo->next = (servinfo_t *)malloc(sizeof(servinfo_t));
memset(temp_servinfo->next, 0, sizeof(servinfo_t));
temp_servinfo = temp_servinfo->next;
start_servinfo++;
}
strncpy(temp_servinfo->m_pszServName, END_OF_SHM, 11);
/********************************************************************/
/****************** delete old SHM and create new SHM ******************/
shm_size = get_sizeof_shm();
munmap((void *)g_servinfo, shm_size);
shm_unlink(SHM_NAME);
/***********************************************************************/
/****************** GET new server list from mysql *********************/
res = mysql_store_result(&mysql);
fields = mysql_num_fields(res);
numRows = mysql_num_rows(res);
#ifdef __DEBUG__
fprintf(stderr, "[NEW LIST] numRows --> %ld\n", numRows);
#endif
if (numRows == 0)
numRows = 1;
fd = Shm_open(SHM_NAME, O_RDWR | O_CREAT | O_EXCL | O_TRUNC, FILE_MODE);
Ftruncate(fd, (sizeof(servinfo_t)*numRows));
g_servinfo = Mmap(NULL, (sizeof(servinfo_t)*numRows), PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);
memset(g_servinfo, 0, sizeof(servinfo_t));
init_servinfo = g_servinfo;
cnt = 1;
while((row = mysql_fetch_row(res)))
{
addServerToList(g_servinfo, row);
g_servinfo++;
cnt++;
}
strncpy(g_servinfo->m_pszServName, END_OF_SHM, 11);
g_servinfo = init_servinfo;
Close(fd);
/* update server list */
update_server_list(init_servinfo, servinfo_head);
/* close mysqlDB */
mysql_free_result(res);
mysql_close(&mysql);
/**********************************************************************/
free(servinfo_head);
fflush(stderr);
return 1;
}
void update_server_list(servinfo_t *new, servinfo_t *old)
{
servinfo_t *ii;
while (strcmp(new->m_pszServName, END_OF_SHM))
{
//fprintf(stderr, "SERvname : %s\n", new->m_pszServName);
for (ii = old; strcmp(ii->m_pszServName, END_OF_SHM); ii = ii->next)
{
if (!strcmp(new->m_pszServName, ii->m_pszServName))
{
memcpy(new->m_pszDomainName, ii->m_pszDomainName, MAX_DOMAIN_NAME);
memcpy((char *)&(new->ss), (char *)&(ii->ss), sizeof(struct svr_status));
break;
}
}
new++;
}
}
@@ -0,0 +1,37 @@
[PARAM]
HOSTNAME=222.122.136.110
VRCD_PORT=13109
REPORT_UPDATE_PORT=22201
REPORT_SEND_PORT=30001
VRCD_THREAD_NUM=10
TIME_OUT_READ=5
HEALTH_CHECK_TERM=10
[RCACCT]
0udisk=unizit:0udisk2515:unizi:/user/service/cert/unizit28.cert
#soribada=soribada:soriqkek321:1234:/user/service/cert/soribada15.cert
rc002-test=admin:spxhal:testrc002:/user/service/cert/admin151.cert
#mintech=mintech:alsxpzm:mintech:/user/service/cert/mintech51.cert
rc003-test=admin:spxhal:testrc003:/user/service/cert/admin150.cert
rc004-test=admin:spxhal:testrc004:/user/service/cert/admin153.cert
freezonetest=freezonetest:vmflwhs:freezonetest:/user/service/cert/freezonetest72.cert
orgel=soribada:soriqkek321:orgel321:/user/service/cert/soribada92.cert
#jjang=jjanghard:skfkgkek*1:jjang:/user/service/cert/jjanghard80.cert
rc103-test=admin:spxhal:testrc103:/user/service/cert/admin152.cert
rc105-test=admin:spxhal:testrc105:/user/service/cert/admin167.cert
incok=incok:incok@@$$:incokincok:/user/service/cert/incok119.cert
uccfs=paran:dbTlTlvkfks!@:paransdk:/user/service/cert/paran103.cert
[PGSQL]
DATABASE_NAME=syshost
DATABASE_ADDR=127.0.0.1
DATABASE_ACCT=syshost
DATABASE_PW=alfkzmf!?{}
DATABASE_PORT=5432
[MYSQL]
DATABASE_NAME=CCDB
DATABASE_ADDR=127.0.0.1
DATABASE_ACCT=root
DATABASE_PW=alfkzmf!?{}
DATABASE_PORT=3306
@@ -0,0 +1,46 @@
#!/bin/sh
if [ $# -eq 1 ]
then
else
echo "Usage : sh_statusd [start | stop]"
exit 0
fi
user=`whoami`
if [ $user = root ]
then
else
echo "access denied!!"
exit 0
fi
case $1 in
start)
sh_id=`ps -aux | grep new_sh_statusd | awk '/guard\(report\)/ {print $2}'`
proc_id=`find /proc/$sh_id | grep file | awk -F/ '{print $3}'`
if [ "$sh_id" = "$proc_id" ]
then
echo "sh_statusd(pid=$sh_id) already running"
else
echo "/user/service/bin/new_sh_statusd"
fi ;;
stop)
sh_id=`ps -aux | grep new_sh_statusd | awk '/guard\(report\)/ {print $2}'`
proc_id=`find /proc/$sh_id | grep file | awk -F/ '{print $3}'`
if [ "$sh_id" = "$proc_id" ]
then
killall -9 new_sh_statusd
sleep 1
pkill new_sh_statusd
pkill new_sh_statusd
sleep 1
pkill new_sh_statusd
else
echo "sh_statusd not running"
fi ;;
*)
echo "Unkown Argument '$1'"
echo "Usage : sh_statusd [start | stop]"
esac
exit 1
+35
View File
@@ -0,0 +1,35 @@
/* include signal */
#include "unp.h"
Sigfunc *
signal(int signo, Sigfunc *func)
{
struct sigaction act, oact;
act.sa_handler = func;
sigemptyset(&act.sa_mask);
act.sa_flags = 0;
if (signo == SIGALRM) {
#ifdef SA_INTERRUPT
act.sa_flags |= SA_INTERRUPT; /* SunOS 4.x */
#endif
} else {
#ifdef SA_RESTART
act.sa_flags |= SA_RESTART; /* SVR4, 44BSD */
#endif
}
if (sigaction(signo, &act, &oact) < 0)
return(SIG_ERR);
return(oact.sa_handler);
}
/* end signal */
Sigfunc *
Signal(int signo, Sigfunc *func) /* for our signal() function */
{
Sigfunc *sigfunc;
if ( (sigfunc = signal(signo, func)) == SIG_ERR)
err_sys("signal error");
return(sigfunc);
}
+86
View File
@@ -0,0 +1,86 @@
#include "unp.h"
#ifdef HAVE_SOCKADDR_DL_STRUCT
#include <net/if_dl.h>
#endif
/* include sock_ntop */
char *
sock_ntop(const struct sockaddr *sa, socklen_t salen)
{
char portstr[8];
static char str[128]; /* Unix domain is largest */
switch (sa->sa_family) {
case AF_INET: {
struct sockaddr_in *sin = (struct sockaddr_in *) sa;
if (inet_ntop(AF_INET, &sin->sin_addr, str, sizeof(str)) == NULL)
return(NULL);
if (ntohs(sin->sin_port) != 0) {
snprintf(portstr, sizeof(portstr), ":%d", ntohs(sin->sin_port));
strcat(str, portstr);
}
return(str);
}
/* end sock_ntop */
#ifdef IPV6
case AF_INET6: {
struct sockaddr_in6 *sin6 = (struct sockaddr_in6 *) sa;
str[0] = '[';
if (inet_ntop(AF_INET6, &sin6->sin6_addr, str + 1, sizeof(str) - 1) == NULL)
return(NULL);
if (ntohs(sin6->sin6_port) != 0) {
snprintf(portstr, sizeof(portstr), "]:%d", ntohs(sin6->sin6_port));
strcat(str, portstr);
return(str);
}
return (str + 1);
}
#endif
#ifdef AF_UNIX
case AF_UNIX: {
struct sockaddr_un *unp = (struct sockaddr_un *) sa;
/* OK to have no pathname bound to the socket: happens on
every connect() unless client calls bind() first. */
if (unp->sun_path[0] == 0)
strcpy(str, "(no pathname bound)");
else
snprintf(str, sizeof(str), "%s", unp->sun_path);
return(str);
}
#endif
#ifdef HAVE_SOCKADDR_DL_STRUCT
case AF_LINK: {
struct sockaddr_dl *sdl = (struct sockaddr_dl *) sa;
if (sdl->sdl_nlen > 0)
snprintf(str, sizeof(str), "%*s (index %d)",
sdl->sdl_nlen, &sdl->sdl_data[0], sdl->sdl_index);
else
snprintf(str, sizeof(str), "AF_LINK, index=%d", sdl->sdl_index);
return(str);
}
#endif
default:
snprintf(str, sizeof(str), "sock_ntop: unknown AF_xxx: %d, len %d",
sa->sa_family, salen);
return(str);
}
return (NULL);
}
char *
Sock_ntop(const struct sockaddr *sa, socklen_t salen)
{
char *ptr;
if ( (ptr = sock_ntop(sa, salen)) == NULL)
err_sys("sock_ntop error"); /* inet_ntop() sets errno */
return(ptr);
}
+57
View File
@@ -0,0 +1,57 @@
/* include tcp_listen */
#include "unp.h"
int
tcp_listen(const char *host, const char *serv, socklen_t *addrlenp)
{
int listenfd, n;
const int on = 1;
struct addrinfo hints, *res, *ressave;
bzero(&hints, sizeof(struct addrinfo));
hints.ai_flags = AI_PASSIVE;
hints.ai_family = AF_UNSPEC;
hints.ai_socktype = SOCK_STREAM;
if ( (n = getaddrinfo(host, serv, &hints, &res)) != 0)
err_quit("tcp_listen error for %s, %s: %s",
host, serv, gai_strerror(n));
ressave = res;
do {
listenfd = socket(res->ai_family, res->ai_socktype, res->ai_protocol);
if (listenfd < 0)
continue; /* error, try next one */
Setsockopt(listenfd, SOL_SOCKET, SO_REUSEADDR, &on, sizeof(on));
if (bind(listenfd, res->ai_addr, res->ai_addrlen) == 0)
break; /* success */
Close(listenfd); /* bind error, close and try next one */
} while ( (res = res->ai_next) != NULL);
if (res == NULL) /* errno from final socket() or bind() */
err_sys("tcp_listen error for %s, %s", host, serv);
Listen(listenfd, LISTENQ);
if (addrlenp)
*addrlenp = res->ai_addrlen; /* return size of protocol address */
freeaddrinfo(ressave);
return(listenfd);
}
/* end tcp_listen */
/*
* We place the wrapper function here, not in wraplib.c, because some
* XTI programs need to include wraplib.c, and it also defines
* a Tcp_listen() function.
*/
int
Tcp_listen(const char *host, const char *serv, socklen_t *addrlenp)
{
return(tcp_listen(host, serv, addrlenp));
}
@@ -0,0 +1,80 @@
#include "unpthread.h"
#include "unpipc.h"
#define TEST_SHM_NAME "test_shm_mem"
struct abc
{
int a;
int b;
char c[16];
};
int main()
{
struct abc *abc_ptr, *start_ptr;
int fd, fd2, i;
int numRows;
numRows = 300;
shm_unlink(TEST_SHM_NAME);
fd = shm_open(TEST_SHM_NAME, O_RDWR | O_CREAT | O_EXCL | O_TRUNC, FILE_MODE);
ftruncate(fd, (sizeof(struct abc)*numRows));
abc_ptr = mmap(NULL, (sizeof(struct abc)*numRows), PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);
close(fd);
start_ptr = abc_ptr;
fprintf(stderr, "total memory size : %d\n", sizeof(struct abc)*numRows);
sleep(5);
for (i=0; i < numRows; i++)
{
start_ptr->a = 22;
start_ptr->b = 33;
strncpy(start_ptr->c, "I am a boy!!!", 16);
start_ptr++;
}
start_ptr = NULL;
fprintf(stderr, "#########################\n");
start_ptr = abc_ptr;
for (i=0; i < numRows; i++)
{
fprintf(stderr, "[%d] -- %d -- %d -- %s\n", i+1, start_ptr->a, start_ptr->b, start_ptr->c);
start_ptr++;
}
//fd2 = shm_open(TEST_SHM_NAME, O_RDWR | O_CREAT | O_EXCL | O_TRUNC, FILE_MODE);
//munmap((void *)abc_ptr, (sizeof(struct abc)*numRows));
fd2 = shm_open(TEST_SHM_NAME, O_RDWR | O_CREAT | O_TRUNC, FILE_MODE);
ftruncate(fd2, 0);
sleep(10);
//ftruncate(fd, (sizeof(struct abc)*numRows));
numRows = 150;
ftruncate(fd2, (sizeof(struct abc)*numRows));
//abc_ptr = mmap(NULL, (sizeof(struct abc)*numRows), PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);
close(fd2);
start_ptr = abc_ptr;
for (i=0; i < numRows; i++)
{
start_ptr->a = 22;
start_ptr->b = 33;
strncpy(start_ptr->c, "I am a boy!!!", 16);
start_ptr++;
}
start_ptr = NULL;
start_ptr = abc_ptr;
for (i=0; i < numRows; i++)
{
fprintf(stderr, "[%d] -- %d -- %d -- %s\n", i+1, start_ptr->a, start_ptr->b, start_ptr->c);
start_ptr++;
}
sleep(10);
return 1;
}
+55
View File
@@ -0,0 +1,55 @@
/* include udp_server */
#include "unp.h"
int
udp_server(const char *host, const char *serv, socklen_t *addrlenp)
{
int sockfd, n;
struct sockaddr_in sockaddr;
struct addrinfo hints, *res, *ressave;
bzero(&hints, sizeof(struct addrinfo));
hints.ai_flags = AI_PASSIVE;
hints.ai_family = AF_UNSPEC;
hints.ai_family = PF_INET;
hints.ai_socktype = SOCK_DGRAM;
if ( (n = getaddrinfo(host, serv, &hints, &res)) != 0)
err_quit("udp_server error for %s, %s: %s",
host, serv, gai_strerror(n));
ressave = res;
sockaddr.sin_family = AF_INET;
sockaddr.sin_addr.s_addr = htonl(INADDR_ANY);
sockaddr.sin_port = htons(atoi(serv));
do {
//sockfd = socket(res->ai_family, res->ai_socktype, res->ai_protocol);
sockfd = socket(PF_INET, SOCK_DGRAM, 0);
if (sockfd < 0)
continue; /* error - try next one */
//if (bind(sockfd, res->ai_addr, res->ai_addrlen) == 0)
if (bind(sockfd, (struct sockaddr *)&sockaddr, sizeof(sockaddr)) == 0)
break; /* success */
Close(sockfd); /* bind error - close and try next one */
} while ( (res = res->ai_next) != NULL);
if (res == NULL) /* errno from final socket() or bind() */
err_sys("udp_server error for %s, %s", host, serv);
if (addrlenp)
*addrlenp = res->ai_addrlen; /* return size of protocol address */
freeaddrinfo(ressave);
return(sockfd);
}
/* end udp_server */
int
Udp_server(const char *host, const char *serv, socklen_t *addrlenp)
{
return(udp_server(host, serv, addrlenp));
}
+267
View File
@@ -0,0 +1,267 @@
#include "unp.h"
#include "unpipc.h"
#include "stdarg.h"
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#define MAXLOGSTR 4096
int get_sizeof_shm()
{
struct stat stat;
int memsize;
int filed;
/*** Posix Share Memory ***/
filed = Shm_open(SHM_NAME, O_RDONLY, FILE_MODE);
Fstat(filed, &stat);
Close(filed);
/* get size of mapping memory */
memsize = stat.st_size;
return memsize;
}
servinfo_t *get_shm_start_pointer()
{
struct stat stat;
servinfo_t *start_ptr;
int fd;
fd = Shm_open(SHM_NAME, O_RDWR, FILE_MODE);
Fstat(fd, &stat);
start_ptr = Mmap(NULL, stat.st_size, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);
Close(fd);
return start_ptr;
}
servinfo_t *get_shm_start_pointer_readonly()
{
struct stat stat;
servinfo_t *start_ptr;
int fd;
fd = Shm_open(SHM_NAME, O_RDONLY, FILE_MODE);
Fstat(fd, &stat);
start_ptr = Mmap(NULL, stat.st_size, PROT_READ, MAP_SHARED, fd, 0);
Close(fd);
return start_ptr;
}
int devide(char **val, char *str, char delim)
{
char *p;
int i, j;
val[0] = (char *)malloc(512);
memset(val[0], 0, 512);
for (p=str, i=0, j=0; *p != '\0'; p++)
{
if (*p == delim)
{
*(val[i] + j) = '\0';
j = 0;
i++;
val[i] = (char *)malloc(512);
memset(val[i], 0, 512);
continue;
}
else if (*p == '\n')
{
continue;
}
else
{
*(val[i] + j++) = *p;
}
}
*(val[i] + j) = '\0';
return (i+1);
}
char* timeToString(struct tm *t) {
static char s[20];
sprintf(s, "%04d-%02d-%02d %02d:%02d:%02d",
t->tm_year + 1900, t->tm_mon + 1, t->tm_mday,
t->tm_hour, t->tm_min, t->tm_sec
);
return s;
}
char *makeLogString()
{
struct tm *t;
time_t timer;
static char log_path_file[128];
timer = time(NULL);
t = localtime(&timer);
snprintf(log_path_file, 128, "%ssh_statusd_%04d%02d%02d.log", DEFAULT_LOGFILE_PATH,
t->tm_year + 1900, t->tm_mon + 1, t->tm_mday);
return log_path_file;
}
char *makeLogString_para(const char *prefix)
{
struct tm *t;
time_t timer;
static char log_path_file[128];
timer = time(NULL);
t = localtime(&timer);
snprintf(log_path_file, 128, "%s%s_%04d%02d%02d.log", DEFAULT_LOGFILE_PATH, prefix,
t->tm_year + 1900, t->tm_mon + 1, t->tm_mday);
return log_path_file;
}
int fd_isopen(int fd)
{
struct flock lock;
lock.l_type = F_WRLCK;
lock.l_start = 0;
lock.l_whence = SEEK_SET;
lock.l_len = 0;
return fcntl(fd, F_SETLKW, &lock);
}
int fd_unlock(int fd)
{
struct flock lock;
lock.l_type = F_UNLCK;
lock.l_start = 0;
lock.l_whence = SEEK_SET;
lock.l_len = 0;
return fcntl(fd, F_SETLK, &lock);
}
void WriteSHLog(char *fmt, ...) {
va_list ap;
struct tm *t;
time_t timer;
int shLogFile;
char *para_ptr;
char logStr[MAXLOGSTR];
para_ptr = fmt;
timer = time(NULL);
t = localtime(&timer);
shLogFile = open(makeLogString(), O_CREAT | O_RDWR | O_APPEND);
if (shLogFile == -1)
{
fprintf(stderr, "Cannot open SH Log file!!\n");
exit(EXIT_FAILURE);
}
if (fd_isopen(shLogFile) == -1)
{
fprintf(stderr, "log file lock fail!!!\n");
exit(0);
}
snprintf(logStr, MAXLOGSTR, "[%s] ", timeToString(t));
write(shLogFile, logStr, strlen(logStr));
va_start(ap, para_ptr);
while (*para_ptr) {
memset(logStr, 0, MAXLOGSTR);
switch(*para_ptr) {
case 0x25:
if (*(para_ptr+1) == 'c') { /* char */
snprintf(logStr, MAXLOGSTR, "%c",(char)va_arg(ap, int));
} else if (*(para_ptr+1) == 'd') { /* int */
snprintf(logStr, MAXLOGSTR, "%d", va_arg(ap, int));
para_ptr++;
} else if (*(para_ptr+1) == 'u') { /* unsigned int */
snprintf(logStr, MAXLOGSTR, "%u", va_arg(ap, unsigned int));
para_ptr++;
} else if (*(para_ptr+1) == 'f') { /* float */
snprintf(logStr, MAXLOGSTR, "%f", (float)va_arg(ap, double));
para_ptr++;
} else if (*(para_ptr+1) == 's') { /* string */
snprintf(logStr, MAXLOGSTR, "%s", va_arg(ap, char *));
para_ptr++;
} else if (*(para_ptr+1) == 'l' && *(para_ptr+2) == 'd') { /* long int */
snprintf(logStr, MAXLOGSTR, "%ld", va_arg(ap, long int));
para_ptr++;
para_ptr++;
} else if (*(para_ptr+1) == 'l' && *(para_ptr+2) == 'u') { /* unsigned long int */
snprintf(logStr, MAXLOGSTR, "%lu", va_arg(ap, unsigned long int));
para_ptr++;
para_ptr++;
} else if (*(para_ptr+1) == 'l' && *(para_ptr+1) == 'l' && *(para_ptr+2) == 'd') { /* long long int */
snprintf(logStr, MAXLOGSTR, "%lld", va_arg(ap, long long int));
para_ptr++;
para_ptr++;
para_ptr++;
} else if (*(para_ptr+1) == 'l' && *(para_ptr+1) == 'l' && *(para_ptr+2) == 'u') { /* unsigned long long int */
snprintf(logStr, MAXLOGSTR, "%llu", va_arg(ap, unsigned long long int));
para_ptr++;
para_ptr++;
para_ptr++;
}
write(shLogFile, logStr, strlen(logStr));
break;
default:
snprintf(logStr, MAXLOGSTR, "%c", *para_ptr);
write(shLogFile, logStr, strlen(logStr));
break;
}
para_ptr++;
}
va_end(ap);
if (fd_unlock(shLogFile) == -1)
{
fprintf(stderr, "file unlock error\n");
}
close(shLogFile);
}
void WriteSHLog_safe(char *fmt, ...) {
va_list ap;
struct tm *t;
time_t timer;
FILE *shLogFile = NULL;
char *para_ptr;
char logStr[MAXLOGSTR];
para_ptr = fmt;
timer = time(NULL);
t = localtime(&timer);
shLogFile = fopen(makeLogString(), "a+");
if (shLogFile == NULL)
{
fprintf(stderr, "Cannot open SH Log file!!\n");
exit(EXIT_FAILURE);
}
flockfile(shLogFile);
snprintf(logStr, MAXLOGSTR, "[%s] ", timeToString(t));
fwrite(logStr, strlen(logStr), 1, shLogFile);
va_start(ap, para_ptr);
#ifdef HAVE_VSNPRINTF
vsnprintf(logStr, MAXLOGSTR, fmt, ap); /* safe */
#else
vsprintf(logStr, fmt, ap); /* not safe */
#endif
va_end(ap);
fwrite(logStr, strlen(logStr), 1, shLogFile);
funlockfile(shLogFile);
fclose(shLogFile);
}
@@ -0,0 +1,55 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#define DEFAULT_LOGFILE_PATH "/user/service/logs/new_sh_statusd/"
char* timeToString(struct tm *t) {
static char s[20];
sprintf(s, "%04d-%02d-%02d %02d:%02d:%02d",
t->tm_year + 1900, t->tm_mon + 1, t->tm_mday,
t->tm_hour, t->tm_min, t->tm_sec
);
return s;
}
char *makeLogString()
{
struct tm *t;
time_t timer;
static char log_path_file[128];
timer = time(NULL);
t = localtime(&timer);
snprintf(log_path_file, 128, "%ssh_statusd_%04d%02d%02d.log", DEFAULT_LOGFILE_PATH,
t->tm_year + 1900, t->tm_mon + 1, t->tm_mday);
return log_path_file;
}
char *makeLogString_para(const char *prefix)
{
struct tm *t;
time_t timer;
static char log_path_file[128];
timer = time(NULL);
t = localtime(&timer);
snprintf(log_path_file, 128, "%s%s_%04d%02d%02d.log", DEFAULT_LOGFILE_PATH, prefix,
t->tm_year + 1900, t->tm_mon + 1, t->tm_mday);
return log_path_file;
}
void WriteSHLog(char *msg, FILE *ifp)
{
struct tm *t;
time_t timer;
timer = time(NULL);
t = localtime(&timer);
fprintf(ifp, "[%s] %s\n", timeToString(t), msg);
fflush(ifp);
}
+21
View File
@@ -0,0 +1,21 @@
#include "unp.h"
#include "unpipc.h"
int main(int argc, char **argv)
{
sem_t *sem;
int semval;
/********************** create Semaphore mutex ********************/
sem = Sem_open(SEM_NAME, 0);
/******************************************************************/
Sem_getvalue(sem, &semval);
fprintf(stderr, "----------- present posix semaphore value : %d -------------\n", semval);
/*
Sem_post(sem);
Sem_getvalue(sem, &semval);
fprintf(stderr, "----------- posix semaphore value after post: %d -------------\n", semval);
*/
Sem_close(sem);
return 0;
}
Binary file not shown.
+76
View File
@@ -0,0 +1,76 @@
#include "unpthread.h"
#include "unpipc.h"
#include "pre_thread_model.h"
#include "protocol.h"
sem_t *sem_mutex;
int main()
{
servinfo_t *ptr;
struct stat stat;
int filed, count = 1;
//int val;
int shm_size;
filed = Shm_open(SHM_NAME, O_RDONLY, FILE_MODE);
Fstat(filed, &stat);
//sem_mutex = Sem_open(SEM_NAME, 0);
/*
Sem_getvalue(sem_mutex, &val);
fprintf(stderr, "** wait sema val = %d\n", val);
Sem_wait(sem_mutex);
Sem_getvalue(sem_mutex, &val);
fprintf(stderr, "** pid %ld has semaphore, value = %d\n", (long)getpid(), val);
*/
ptr = Mmap(NULL, stat.st_size, PROT_READ, MAP_SHARED, filed, 0);
//while ( ptr->next != NULL )
while ( strcmp(ptr->m_pszServName, END_OF_SHM))
{
if (ptr->m_pszServName == NULL || ptr->m_pszServName[0] == '\0')
{
fprintf(stderr, "no more data!!!\n");
break;
}
fprintf(stderr, "[%d] ServName-> %s : IP Address-> %s : Type-> %d : Port-> %d : Monitor_yn-> %s\n", count, ptr->m_pszServName, ptr->m_szIpString, ptr->m_ServType, ptr->m_sPort, ptr->m_monitorYN);
fprintf(stderr, "[%d] Change Time-> %ld : DeadCount-> %u : Status-> %d : DomainName-> %s\n", count, ptr->m_StatChgTime, ptr->m_DeadCount, ptr->m_Status, ptr->m_pszDomainName);
//view Status
fprintf(stderr, "******************************** STATUS ********************************\n");
fprintf(stderr, "[%d] Stamp-> %ld : domain-> %s : disk tot-> %llu : disk free-> %llu\n", count, ptr->ss.stamp, ptr->ss.du.domain, ptr->ss.du.total, ptr->ss.du.free);
fprintf(stderr, "[%d] manual disable-> %d : upload level-> %d : disk backlog-> %d : disk percent-> %d\n", count, ptr->ss.du.manual_disable, ptr->ss.du.upload_level, ptr->ss.du.disk_backlog, ptr->ss.du.disk_percent);
fprintf(stderr, "[%d] conn estab-> %d : conn total-> %d\n", count, ptr->ss.du.connection_established, ptr->ss.du.connection_total);
fprintf(stderr, "[%d] traffic ip-> %u : traffic ib-> %u : traffic op-> %u : traffic ob-> %u\n", count, ptr->ss.du.traffic_ip, ptr->ss.du.traffic_ib, ptr->ss.du.traffic_op, ptr->ss.du.traffic_ob);
fprintf(stderr, "[%d] HostName-> %s\n", count, ptr->ss.du.hostname);
fprintf(stderr, "************************************************************************\n\n");
//ptr->next = Mmap(NULL, (sizeof(servinfo_t)), PROT_READ, MAP_SHARED, filed, (sizeof(servinfo_t))*count);
ptr++;
count++;
}
Close(filed);
shm_size = get_sizeof_shm();
munmap((void *)ptr, shm_size);
//Sem_post(sem_mutex);
//Sem_close(sem_mutex);
exit(0);
}
int get_sizeof_shm()
{
struct stat stat;
int memsize;
int filed;
/*** Posix Semaphore ***/
filed = Shm_open(SHM_NAME, O_RDWR, FILE_MODE);
Fstat(filed, &stat);
Close(filed);
/* get size of mapping memory */
memsize = stat.st_size;
return memsize;
}
@@ -0,0 +1,61 @@
#include <stdio.h>
#include <stdlib.h>
#include <sys/ipc.h>
#include <sys/shm.h>
typedef struct _g_shm_addr
{
unsigned int is_dirty;
unsigned int serv_num;
unsigned int thread_number[1024];
} g_shm_t;
int main()
{
g_shm_t *g_shm_ptr;
void *shared_memory = (void *)0;
int shmid;
int i;
shmid = shmget((key_t)6677, sizeof(g_shm_t), IPC_CREAT);
if (shmid == -1)
{
exit(EXIT_FAILURE);
}
shared_memory = shmat(shmid, (void *)0, 0);
if (shared_memory == (void *)-1)
{
exit(EXIT_FAILURE);
}
g_shm_ptr = (g_shm_t *)shared_memory;
fprintf(stdout, "##############################\n");
/*
g_shm_ptr->is_dirty = 1;
g_shm_ptr->is_dirty2 = 1;
for (i=0; i < 10; i++)
{
g_shm_ptr->thread_number[i] = 1;
}
*/
sleep(1);
// while(1)
// {
fprintf(stdout, "### IS_DIRTY VALUE ==>> %d ###\n", g_shm_ptr->is_dirty);
fprintf(stdout, "### IS_DIRTY2 VALUE ==>> %d ###\n", g_shm_ptr->serv_num);
for (i=0; i < 10; i++)
{
fprintf(stdout, "### THREAD(%d) DIRTY VALUE ==>> %d ###\n", i, g_shm_ptr->thread_number[i]);
}
// usleep(1000);
// fflush(stdout);
// }
if (shmdt(shared_memory) == -1)
{
exit(EXIT_FAILURE);
}
exit(EXIT_SUCCESS);
}
+303
View File
@@ -0,0 +1,303 @@
#include "unp.h"
#include "unpipc.h"
//pthread_mutex_t vrcd_lock = PTHREAD_MUTEX_INITIALIZER;
char logString[1024];
void vrcd_timeout()
{
WriteSHLog_safe("------- vrcd func timeout!! -------\n");
return;
}
void vrcd_thread_make(int i)
{
void *vrcd_thread_main(void *);
/* make tcp listen thread (for Update Share Memory. recieve from vrcd) */
Pthread_create(&vrcd_tptr[i].thread_tid, NULL, &vrcd_thread_main, (void *)i);
return; /* main thread returns */
}
void * vrcd_thread_main(void *arg)
{
int res;
int vrcd_func(int, int);
socklen_t clilen;
struct sockaddr *cliaddr;
char logString[1024];
cliaddr = Malloc(vrcd_addrlen);
WriteSHLog_safe("vrcd thread %d starting....\n", (int)arg);
for ( ; ; ) {
int connfd;
clilen = vrcd_addrlen;
Pthread_mutex_lock(&vrcd_lock);
connfd = Accept(vrcdfd, cliaddr, &clilen);
Pthread_mutex_unlock(&vrcd_lock);
// huibong
//WriteSHLog_safe("vrcd thread %d, accept OK\n", (int)arg);
res = -1;
vrcd_tptr[(int) arg].thread_count++;
res = vrcd_func(connfd, (int)arg);
// huibong
//WriteSHLog_safe("vrcd thread %d, vrcd_func return.[%d]\n", (int)arg, res);
#ifdef __DEBUG__
if (res == 0)
fprintf(stderr, "\nOne vrcd Job Success!\n");
else
fprintf(stderr, "\nOne vrcd Job Fail!!\n");
#endif
//#ifdef __SETLOG__
#ifdef __DEBUG__
if (res != 0)
{
WriteSHLog_safe("FAIL! ::vrcd thread number(%d), repeate(%lu)\n", (int)arg, vrcd_tptr[(int) arg].thread_count);
}
#endif
if (connfd)
Close(connfd);
SafeProcessRunSpinWait();
}
}
int vrcd_func(int cfd, int thnum)
{
struct common_message_header *cheader;
struct svr_status *recv_serv;
unsigned long int nread;
unsigned long int bodylen;
int svr_num;
int nBodyRead;
char header_buf[1024];
char *vrcd_buf = NULL;
//char sndResult[32];
// huibong
//WriteSHLog_safe("vrcd thread: start\n");
if ((nread = Readn(cfd, header_buf, MaxSizeOfCMH)) == 0)
{
return 1;
}
// huibong
//WriteSHLog_safe("vrcd thread: nread [%u]\n",nread);
#if 0
fprintf(stderr, "Receive Size(header) from rc_vrcd: %lu\n", nread);
#endif
/* Casting receiving string */
cheader = (struct common_message_header *)header_buf;
/* view common message header */
//view_header_packet(cheader);
bodylen = ntohl(cheader->ulBodyLength);
vrcd_buf = (char *)malloc(bodylen+128);
memset(vrcd_buf, 0, bodylen+128);
// huibong
//WriteSHLog_safe("vrcd thread: body len [%lu]\n",bodylen);
if ((nread = Readn(cfd, vrcd_buf, bodylen) == 0))
{
free(vrcd_buf);
return 1;
}
// huibong
//WriteSHLog_safe("vrcd thread: nread 2 [%u]\n",nread);
Pthread_mutex_lock(&vrcd_lock2);
if (running_vrcd_thread_count >= 5)
{
//WriteSHLog_safe("-------------------------- vrcd thread Passed ---------------------------\n");
free(vrcd_buf);
Pthread_mutex_unlock(&vrcd_lock2);
return 1;
}
else {
running_vrcd_thread_count++;
Pthread_mutex_unlock(&vrcd_lock2);
}
#if 0
fprintf(stderr, "Receive Size(body) : (%lu)\n\n\n", bodylen);
#endif
/* Casting receiving string */
nBodyRead = 0;
svr_num = *((int *)(vrcd_buf + nBodyRead));
nBodyRead += sizeof(int);
recv_serv = (struct svr_status *)(vrcd_buf + nBodyRead);
// huibong
WriteSHLog_safe("rc_statd receive: count[%3d], 0th fhs[%s]\n", svr_num, recv_serv[0].du.domain);
/* view body packet */
/*
int i;
for (i=0; i < svr_num; i++)
{
view_serv_status_packet(recv_serv);
recv_serv++;
}
*/
Semop(vrcd_semid, &waitop, 1);
updateShm(recv_serv, svr_num, thnum);
running_vrcd_thread_count--;
Semop(vrcd_semid, &postop, 1);
#ifdef __DEBUG__
fprintf(stderr , "vrcd_func@@@@@@@@@@@@@@\n");
#endif
/* Send Result */
//sprintf(sndResult, "%d", 1);
//Writen(cfd, sndResult, 32);
free(vrcd_buf);
return 0;
}
void updateShm(struct svr_status *r_ss, int r_ss_num, int thnum)
{
servinfo_t *start_ptr, *ii;
int i, j;
int retval;
int shm_size;
int dflag;
char *addr = NULL;
shm_size = get_sizeof_shm();
start_ptr = get_shm_start_pointer();
for (i = 0; i < r_ss_num; i++) {
dflag = 0;
for (ii = start_ptr; strcmp(ii->m_pszServName, END_OF_SHM); ii++) {
if (ii->m_pszServName[0] == '\0')
break;
#if 0
/* test : 090707 */
if (!strcmp(ii->m_pszServName, "GAMPLE_NS_RTS1036") || !strcmp(ii->m_pszServName, "GAMPLE_NS_RTS1046"))
{
WriteSHLog_safe("------- check invalidate -------\n");
WriteSHLog_safe("Domain : %s, TotalDisk : %llu\n", ii->m_pszDomainName, (r_ss + i)->du.total);
}
#endif
if (ii->m_ServType != 2 || ii->m_Status == SERV_DEAD || ii->m_Status == NO_MONITOR)
continue;
if (ii->m_pszDomainName != NULL && strcmp(ii->m_pszDomainName, "")) {
if (!strcmp(ii->m_pszDomainName, (r_ss + i)->du.domain)) {
memcpy((char *)&(ii->ss), (char *)(r_ss + i), sizeof(struct svr_status));
dflag = 1;
}
else if (!strcmp(ii->m_pszDomainName, (r_ss + i)->du.hostname)) {
memcpy((char *)&(ii->ss), (char *)(r_ss + i), sizeof(struct svr_status));
dflag = 1;
}
}
}
// Check If IP
if (dflag == 0)
{
struct in_addr *inp = NULL;
if (((retval = inet_aton((r_ss + i)->du.domain, inp)) != 0) && dflag == 0) {
for (ii = start_ptr; strcmp(ii->m_pszServName, END_OF_SHM); ii++) {
if (ii->m_pszServName[0] == '\0')
break;
if (ii->m_ServType != 2 || ii->m_Status == SERV_DEAD || ii->m_Status == NO_MONITOR)
continue;
if (!strcmp(ii->m_szIpString, (r_ss + i)->du.domain)) {
strncpy(ii->m_pszDomainName, (r_ss + i)->du.domain, MAX_DOMAIN_NAME);
memcpy((char *)&(ii->ss), (char *)(r_ss + i), sizeof(struct svr_status));
dflag = 1;
}
}
}
}
// Check If Domain
{
struct hostent *he = NULL;
if (dflag == 0)
{
addr = ((r_ss + i)->du.hostname[0] == '\0') ? (r_ss + i)->du.domain : (r_ss + i)->du.hostname;
if (addr != NULL)
he = gethostbyname(addr);
if (he == NULL)
continue;
}
if (dflag == 0)
{
for (ii = start_ptr; strcmp(ii->m_pszServName, END_OF_SHM); ii++)
{
if (ii->m_ServType != 2 || ii->m_Status == SERV_DEAD || ii->m_Status == NO_MONITOR)
continue;
for (j = 0; he->h_addr_list[j]; j++)
{
if (!strncmp(ii->m_szIpString, inet_ntoa(*(struct in_addr *)he->h_addr_list[j]), MAX_IP_STRING))
{
#ifdef __DEBUG__
WriteSHLog_safe("[+++++] ServName : %s , IPADDR : %s(%s) , DomainName : %s\n", ii->m_pszServName, ii->m_szIpString, inet_ntoa(*(struct in_addr *)he->h_addr_list[j]), addr);
#endif
strncpy(ii->m_pszDomainName, addr, MAX_DOMAIN_NAME);
memcpy((char *)&(ii->ss), (char *)(r_ss + i), sizeof(struct svr_status));
break;
}
}
}
}
}
}
munmap((void *)start_ptr, shm_size);
}
void view_header_packet(struct common_message_header *cheader)
{
/******************************************************************************/
/**************************** View receive packet(header) *********************/
/******************************************************************************/
fprintf(stderr, "Transaction ID -> [ %s ]\n", cheader->szTransactionID);
fprintf(stderr, "Mode -> [ 0x%04X ]\n", ntohl(cheader->ulMode));
fprintf(stderr, "Issuer -> [ %s ]\n", cheader->szIssuer);
fprintf(stderr, "Service ID -> [ %s ]\n", cheader->szServiceID);
fprintf(stderr, "Result -> [ 0x%04X ]\n", ntohl(cheader->ulResult));
fprintf(stderr, "Body Length -> [ %lu ]\n\n", (unsigned long)ntohl(cheader->ulBodyLength));
fflush(stderr);
}
void view_serv_status_packet(struct svr_status *recv_serv)
{
/******************************************************************************/
/**************************** View receive packet(body) ***********************/
/******************************************************************************/
fprintf(stderr, "Time stamp -> [ %ld ]\n", (long)recv_serv->stamp);
fprintf(stderr, "Domain -> [ %s ]\n", recv_serv->du.domain);
fprintf(stderr, "Total -> [ %llu ]\n", (recv_serv->du.total));
fprintf(stderr, "Free -> [ %llu ]\n", (recv_serv->du.free));
fprintf(stderr, "Manual y/n -> [ %d ]\n", (recv_serv->du.manual_disable));
fprintf(stderr, "upload level -> [ %d ]\n", (recv_serv->du.upload_level));
fprintf(stderr, "disk backlog -> [ %d ]\n", (recv_serv->du.disk_backlog));
fprintf(stderr, "disk percent -> [ %d ]\n", (recv_serv->du.disk_percent));
fprintf(stderr, "conn establish -> [ %d ]\n", (recv_serv->du.connection_established));
fprintf(stderr, "conn total -> [ %d ]\n", (recv_serv->du.connection_total));
fprintf(stderr, "traffic ip -> [ %lu ]\n", (recv_serv->du.traffic_ip));
fprintf(stderr, "traffic ib -> [ %lu ]\n", (recv_serv->du.traffic_ib));
fprintf(stderr, "traffic op -> [ %lu ]\n", (recv_serv->du.traffic_op));
fprintf(stderr, "traffic ob -> [ %lu ]\n", (recv_serv->du.traffic_ob));
fprintf(stderr, "Hostname -> [ %s ]\n\n", recv_serv->du.hostname);
fflush(stderr);
}
+187
View File
@@ -0,0 +1,187 @@
/*
* pthreads wrapper functions.
*/
#include "unpthread.h"
void
Pthread_create(pthread_t *tid, const pthread_attr_t *attr,
void * (*func)(void *), void *arg)
{
int n;
if ( (n = pthread_create(tid, attr, func, arg)) == 0)
return;
errno = n;
err_sys("pthread_create error");
}
void
Pthread_join(pthread_t tid, void **status)
{
int n;
if ( (n = pthread_join(tid, status)) == 0)
return;
errno = n;
err_sys("pthread_join error");
}
void
Pthread_detach(pthread_t tid)
{
int n;
if ( (n = pthread_detach(tid)) == 0)
return;
errno = n;
err_sys("pthread_detach error");
}
void
Pthread_kill(pthread_t tid, int signo)
{
int n;
if ( (n = pthread_kill(tid, signo)) == 0)
return;
errno = n;
err_sys("pthread_kill error");
}
void
Pthread_mutexattr_init(pthread_mutexattr_t *attr)
{
int n;
if ( (n = pthread_mutexattr_init(attr)) == 0)
return;
errno = n;
err_sys("pthread_mutexattr_init error");
}
#ifdef _POSIX_THREAD_PROCESS_SHARED
void
Pthread_mutexattr_setpshared(pthread_mutexattr_t *attr, int flag)
{
int n;
if ( (n = pthread_mutexattr_setpshared(attr, flag)) == 0)
return;
errno = n;
err_sys("pthread_mutexattr_setpshared error");
}
#endif
void
Pthread_mutex_init(pthread_mutex_t *mptr, pthread_mutexattr_t *attr)
{
int n;
if ( (n = pthread_mutex_init(mptr, attr)) == 0)
return;
errno = n;
err_sys("pthread_mutex_init error");
}
/* include Pthread_mutex_lock */
void
Pthread_mutex_lock(pthread_mutex_t *mptr)
{
int n;
if ( (n = pthread_mutex_lock(mptr)) == 0)
return;
errno = n;
err_sys("pthread_mutex_lock error");
}
/* end Pthread_mutex_lock */
void
Pthread_mutex_unlock(pthread_mutex_t *mptr)
{
int n;
if ( (n = pthread_mutex_unlock(mptr)) == 0)
return;
errno = n;
err_sys("pthread_mutex_unlock error");
}
void
Pthread_cond_broadcast(pthread_cond_t *cptr)
{
int n;
if ( (n = pthread_cond_broadcast(cptr)) == 0)
return;
errno = n;
err_sys("pthread_cond_broadcast error");
}
void
Pthread_cond_signal(pthread_cond_t *cptr)
{
int n;
if ( (n = pthread_cond_signal(cptr)) == 0)
return;
errno = n;
err_sys("pthread_cond_signal error");
}
void
Pthread_cond_wait(pthread_cond_t *cptr, pthread_mutex_t *mptr)
{
int n;
if ( (n = pthread_cond_wait(cptr, mptr)) == 0)
return;
errno = n;
err_sys("pthread_cond_wait error");
}
void
Pthread_cond_timedwait(pthread_cond_t *cptr, pthread_mutex_t *mptr,
const struct timespec *tsptr)
{
int n;
if ( (n = pthread_cond_timedwait(cptr, mptr, tsptr)) == 0)
return;
errno = n;
err_sys("pthread_cond_timedwait error");
}
void
Pthread_once(pthread_once_t *ptr, void (*func)(void))
{
int n;
if ( (n = pthread_once(ptr, func)) == 0)
return;
errno = n;
err_sys("pthread_once error");
}
void
Pthread_key_create(pthread_key_t *key, void (*func)(void *))
{
int n;
if ( (n = pthread_key_create(key, func)) == 0)
return;
errno = n;
err_sys("pthread_key_create error");
}
void
Pthread_setspecific(pthread_key_t key, const void *value)
{
int n;
if ( (n = pthread_setspecific(key, value)) == 0)
return;
errno = n;
err_sys("pthread_setspecific error");
}
+503
View File
@@ -0,0 +1,503 @@
/*
* Socket wrapper functions.
* These could all go into separate files, so only the ones needed cause
* the corresponding function to be added to the executable. If sockets
* are a library (SVR4) this might make a difference (?), but if sockets
* are in the kernel (BSD) it doesn't matter.
*
* These wrapper functions also use the same prototypes as POSIX.1g,
* which might differ from many implementations (i.e., POSIX.1g specifies
* the fourth argument to getsockopt() as "void *", not "char *").
*
* If your system's headers are not correct [i.e., the Solaris 2.5
* <sys/socket.h> omits the "const" from the second argument to both
* bind() and connect()], you'll get warnings of the form:
*warning: passing arg 2 of `bind' discards `const' from pointer target type
*warning: passing arg 2 of `connect' discards `const' from pointer target type
*/
#include "unp.h"
int
Accept(int fd, struct sockaddr *sa, socklen_t *salenptr)
{
int n;
again:
if ( (n = accept(fd, sa, salenptr)) < 0) {
#ifdef EPROTO
if (errno == EPROTO || errno == ECONNABORTED)
#else
if (errno == ECONNABORTED)
#endif
goto again;
else
err_sys("accept error");
}
return(n);
}
void
Bind(int fd, const struct sockaddr *sa, socklen_t salen)
{
if (bind(fd, sa, salen) < 0)
err_sys("bind error");
}
void
Connect(int fd, const struct sockaddr *sa, socklen_t salen)
{
if (connect(fd, sa, salen) < 0)
err_sys("connect error");
}
void
Getpeername(int fd, struct sockaddr *sa, socklen_t *salenptr)
{
if (getpeername(fd, sa, salenptr) < 0)
err_sys("getpeername error");
}
void
Getsockname(int fd, struct sockaddr *sa, socklen_t *salenptr)
{
if (getsockname(fd, sa, salenptr) < 0)
err_sys("getsockname error");
}
void
Getsockopt(int fd, int level, int optname, void *optval, socklen_t *optlenptr)
{
if (getsockopt(fd, level, optname, optval, optlenptr) < 0)
err_sys("getsockopt error");
}
#ifdef HAVE_INET6_RTH_INIT
int
Inet6_rth_space(int type, int segments)
{
int ret;
ret = inet6_rth_space(type, segments);
if (ret < 0)
err_quit("inet6_rth_space error");
return ret;
}
void *
Inet6_rth_init(void *rthbuf, socklen_t rthlen, int type, int segments)
{
void *ret;
ret = inet6_rth_init(rthbuf, rthlen, type, segments);
if (ret == NULL)
err_quit("inet6_rth_init error");
return ret;
}
void
Inet6_rth_add(void *rthbuf, const struct in6_addr *addr)
{
if (inet6_rth_add(rthbuf, addr) < 0)
err_quit("inet6_rth_add error");
}
void
Inet6_rth_reverse(const void *in, void *out)
{
if (inet6_rth_reverse(in, out) < 0)
err_quit("inet6_rth_reverse error");
}
int
Inet6_rth_segments(const void *rthbuf)
{
int ret;
ret = inet6_rth_segments(rthbuf);
if (ret < 0)
err_quit("inet6_rth_segments error");
return ret;
}
struct in6_addr *
Inet6_rth_getaddr(const void *rthbuf, int idx)
{
struct in6_addr *ret;
ret = inet6_rth_getaddr(rthbuf, idx);
if (ret == NULL)
err_quit("inet6_rth_getaddr error");
return ret;
}
#endif
#ifdef HAVE_KQUEUE
int
Kqueue(void)
{
int ret;
if ((ret = kqueue()) < 0)
err_sys("kqueue error");
return ret;
}
int
Kevent(int kq, const struct kevent *changelist, int nchanges,
struct kevent *eventlist, int nevents, const struct timespec *timeout)
{
int ret;
if ((ret = kevent(kq, changelist, nchanges,
eventlist, nevents, timeout)) < 0)
err_sys("kevent error");
return ret;
}
#endif
/* include Listen */
void
Listen(int fd, int backlog)
{
char *ptr;
/*4can override 2nd argument with environment variable */
if ( (ptr = getenv("LISTENQ")) != NULL)
backlog = atoi(ptr);
if (listen(fd, backlog) < 0)
err_sys("listen error");
}
/* end Listen */
#ifdef HAVE_POLL
int
Poll(struct pollfd *fdarray, unsigned long nfds, int timeout)
{
int n;
if ( (n = poll(fdarray, nfds, timeout)) < 0)
err_sys("poll error");
return(n);
}
#endif
ssize_t
Recv(int fd, void *ptr, size_t nbytes, int flags)
{
ssize_t n;
if ( (n = recv(fd, ptr, nbytes, flags)) < 0)
err_sys("recv error");
return(n);
}
ssize_t
Recvfrom(int fd, void *ptr, size_t nbytes, int flags,
struct sockaddr *sa, socklen_t *salenptr)
{
ssize_t n;
if ( (n = recvfrom(fd, ptr, nbytes, flags, sa, salenptr)) < 0)
err_msg("recvfrom error");
return(n);
}
ssize_t
Recvmsg(int fd, struct msghdr *msg, int flags)
{
ssize_t n;
if ( (n = recvmsg(fd, msg, flags)) < 0)
err_sys("recvmsg error");
return(n);
}
int
Select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds,
struct timeval *timeout)
{
int n;
if ( (n = select(nfds, readfds, writefds, exceptfds, timeout)) < 0)
err_sys("select error");
return(n); /* can return 0 on timeout */
}
void
Send(int fd, const void *ptr, size_t nbytes, int flags)
{
if (send(fd, ptr, nbytes, flags) != (ssize_t)nbytes)
err_sys("send error");
}
void
Sendto(int fd, const void *ptr, size_t nbytes, int flags,
const struct sockaddr *sa, socklen_t salen)
{
if (sendto(fd, ptr, nbytes, flags, sa, salen) != (ssize_t)nbytes)
err_sys("sendto error");
}
void
Sendmsg(int fd, const struct msghdr *msg, int flags)
{
unsigned int i;
ssize_t nbytes;
nbytes = 0; /* must first figure out what return value should be */
for (i = 0; i < msg->msg_iovlen; i++)
nbytes += msg->msg_iov[i].iov_len;
if (sendmsg(fd, msg, flags) != nbytes)
err_sys("sendmsg error");
}
void
Setsockopt(int fd, int level, int optname, const void *optval, socklen_t optlen)
{
if (setsockopt(fd, level, optname, optval, optlen) < 0)
err_sys("setsockopt error");
}
void
Shutdown(int fd, int how)
{
if (shutdown(fd, how) < 0)
err_sys("shutdown error");
}
int
Sockatmark(int fd)
{
int n;
if ( (n = sockatmark(fd)) < 0)
err_sys("sockatmark error");
return(n);
}
/* include Socket */
int
Socket(int family, int type, int protocol)
{
int n;
if ( (n = socket(family, type, protocol)) < 0)
err_sys("socket error");
return(n);
}
/* end Socket */
void
Socketpair(int family, int type, int protocol, int *fd)
{
int n;
if ( (n = socketpair(family, type, protocol, fd)) < 0)
err_sys("socketpair error");
}
ssize_t /* Write "n" bytes to a descriptor. */
writen(int fd, const void *vptr, size_t n)
{
size_t nleft;
ssize_t nwritten;
const char *ptr;
ptr = vptr;
nleft = n;
while (nleft > 0) {
if ( (nwritten = write(fd, ptr, nleft)) <= 0) {
if (nwritten < 0 && errno == EINTR)
nwritten = 0; /* and call write() again */
else
return(-1); /* error */
}
nleft -= nwritten;
ptr += nwritten;
}
return(n);
}
/* end writen */
void
Writen(int fd, void *ptr, size_t nbytes)
{
if ( writen(fd, ptr, nbytes) != nbytes)
err_sys("writen error");
}
ssize_t /* Read "n" bytes from a descriptor. */
readn(int fd, void *vptr, size_t n)
{
size_t nleft;
ssize_t nread;
char *ptr;
ptr = vptr;
nleft = n;
while (nleft > 0) {
if ( (nread = read(fd, ptr, nleft)) < 0) {
if (errno == EINTR)
nread = 0; /* and call read() again */
else
return(-1);
} else if (nread == 0)
break; /* EOF */
nleft -= nread;
ptr += nread;
}
return(n - nleft); /* return >= 0 */
}
/* end readn */
ssize_t
Readn(int fd, void *ptr, size_t nbytes)
{
ssize_t n;
if ( (n = readn(fd, ptr, nbytes)) < 0)
err_sys("readn error");
return(n);
}
int
tcp_connect(const char *host, const char *serv)
{
int sockfd, n;
struct addrinfo hints, *res, *ressave;
bzero(&hints, sizeof(struct addrinfo));
hints.ai_family = AF_UNSPEC;
hints.ai_socktype = SOCK_STREAM;
if ( (n = getaddrinfo(host, serv, &hints, &res)) != 0)
err_quit("tcp_connect error for %s, %s: %s",
host, serv, gai_strerror(n));
ressave = res;
do {
sockfd = socket(res->ai_family, res->ai_socktype, res->ai_protocol);
if (sockfd < 0)
continue; /* ignore this one */
if (connect(sockfd, res->ai_addr, res->ai_addrlen) == 0)
break; /* success */
Close(sockfd); /* ignore this one */
} while ( (res = res->ai_next) != NULL);
if (res == NULL) /* errno set from final connect() */
err_sys("tcp_connect error for %s, %s", host, serv);
freeaddrinfo(ressave);
return(sockfd);
}
/* end tcp_connect */
/*
* We place the wrapper function here, not in wraplib.c, because some
* XTI programs need to include wraplib.c, and it also defines
* a Tcp_connect() function.
*/
int
Tcp_connect(const char *host, const char *serv)
{
return(tcp_connect(host, serv));
}
int ConnectWait(int sockfd, struct sockaddr *saddr, int addrsize, int sec)
{
int newSockStat;
int orgSockStat;
int res, n;
fd_set rset, wset;
struct timeval tval;
int error = 0;
int esize;
if ( (newSockStat = fcntl(sockfd, F_GETFL, NULL)) < 0 )
{
perror("F_GETFL error");
return -1;
}
orgSockStat = newSockStat;
newSockStat |= O_NONBLOCK;
// Non blocking 상태로 만든다.
if(fcntl(sockfd, F_SETFL, newSockStat) < 0)
{
perror("F_SETLF error");
return -1;
}
// 연결을 기다린다.
// Non blocking 상태이므로 바로 리턴한다.
if((res = connect(sockfd, saddr, addrsize)) < 0)
{
if (errno != EINPROGRESS)
return -1;
}
fprintf(stderr, "Waiting RES : %d\n", res);
// 즉시 연결이 성공했을 경우 소켓을 원래 상태로 되돌리고 리턴한다.
if (res == 0)
{
fprintf(stderr, "Waiting Connect Success\n");
fcntl(sockfd, F_SETFL, orgSockStat);
return 1;
}
FD_ZERO(&rset);
FD_SET(sockfd, &rset);
wset = rset;
tval.tv_sec = sec;
tval.tv_usec = 0;
if ( (n = select(sockfd, &rset, &wset, NULL, &tval)) == 0)
{
// timeout
errno = ETIMEDOUT;
return -1;
}
// 읽거나 쓴 데이터가 있는지 검사한다.
if (FD_ISSET(sockfd, &rset) || FD_ISSET(sockfd, &wset) )
{
fprintf(stderr, "Read data\n");
esize = sizeof(int);
if ((n = getsockopt(sockfd, SOL_SOCKET, SO_ERROR, &error, (socklen_t *)&esize)) < 0)
return -1;
}
else
{
perror("Socket Not Set");
return -1;
}
fcntl(sockfd, F_SETFL, orgSockStat);
if(error)
{
errno = error;
perror("Socket");
return -1;
}
return 1;
}
+440
View File
@@ -0,0 +1,440 @@
#include "unp.h"
#include <stdarg.h>
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/sem.h>
#include <semaphore.h>
void *
Calloc(size_t n, size_t size)
{
void *ptr;
if ( (ptr = calloc(n, size)) == NULL)
err_sys("calloc error");
return(ptr);
}
void
Close(int fd)
{
if (close(fd) == -1)
err_sys("close error");
}
void
Dup2(int fd1, int fd2)
{
if (dup2(fd1, fd2) == -1)
err_sys("dup2 error");
}
int
Fcntl(int fd, int cmd, int arg)
{
int n;
if ( (n = fcntl(fd, cmd, arg)) == -1)
err_sys("fcntl error");
return(n);
}
void
Gettimeofday(struct timeval *tv, void *foo)
{
if (gettimeofday(tv, foo) == -1)
err_sys("gettimeofday error");
return;
}
int
Ioctl(int fd, int request, void *arg)
{
int n;
if ( (n = ioctl(fd, request, arg)) == -1)
err_sys("ioctl error");
return(n); /* streamio of I_LIST returns value */
}
pid_t
Fork(void)
{
pid_t pid;
if ( (pid = fork()) == -1)
err_sys("fork error");
return(pid);
}
void *
Malloc(size_t size)
{
void *ptr;
if ( (ptr = malloc(size)) == NULL)
err_sys("malloc error");
return(ptr);
}
int
Mkstemp(char *template)
{
int i;
if ((i = mkstemp(template)) < 0)
err_quit("mkstemp error");
return i;
}
#include <sys/mman.h>
void *
Mmap(void *addr, size_t len, int prot, int flags, int fd, off_t offset)
{
void *ptr;
if ( (ptr = mmap(addr, len, prot, flags, fd, offset)) == ((void *) -1))
err_sys("mmap error");
return(ptr);
}
int
Open(const char *pathname, int oflag, mode_t mode)
{
int fd;
if ( (fd = open(pathname, oflag, mode)) == -1)
err_sys("open error for %s", pathname);
return(fd);
}
void
Pipe(int *fds)
{
if (pipe(fds) < 0)
err_sys("pipe error");
}
ssize_t
Read(int fd, void *ptr, size_t nbytes)
{
ssize_t n;
if ( (n = read(fd, ptr, nbytes)) == -1)
err_sys("read error");
return(n);
}
void
Sigaddset(sigset_t *set, int signo)
{
if (sigaddset(set, signo) == -1)
err_sys("sigaddset error");
}
void
Sigdelset(sigset_t *set, int signo)
{
if (sigdelset(set, signo) == -1)
err_sys("sigdelset error");
}
void
Sigemptyset(sigset_t *set)
{
if (sigemptyset(set) == -1)
err_sys("sigemptyset error");
}
void
Sigfillset(sigset_t *set)
{
if (sigfillset(set) == -1)
err_sys("sigfillset error");
}
int
Sigismember(const sigset_t *set, int signo)
{
int n;
if ( (n = sigismember(set, signo)) == -1)
err_sys("sigismember error");
return(n);
}
void
Sigpending(sigset_t *set)
{
if (sigpending(set) == -1)
err_sys("sigpending error");
}
void
Sigprocmask(int how, const sigset_t *set, sigset_t *oset)
{
if (sigprocmask(how, set, oset) == -1)
err_sys("sigprocmask error");
}
char *
Strdup(const char *str)
{
char *ptr;
if ( (ptr = strdup(str)) == NULL)
err_sys("strdup error");
return(ptr);
}
long
Sysconf(int name)
{
long val;
errno = 0; /* in case sysconf() does not change this */
if ( (val = sysconf(name)) == -1)
err_sys("sysconf error");
return(val);
}
#ifdef HAVE_SYS_SYSCTL_H
void
Sysctl(int *name, u_int namelen, void *oldp, size_t *oldlenp,
void *newp, size_t newlen)
{
if (sysctl(name, namelen, oldp, oldlenp, newp, newlen) == -1)
err_sys("sysctl error");
}
#endif
void
Unlink(const char *pathname)
{
if (unlink(pathname) == -1)
err_sys("unlink error for %s", pathname);
}
pid_t
Wait(int *iptr)
{
pid_t pid;
if ( (pid = wait(iptr)) == -1)
err_sys("wait error");
return(pid);
}
pid_t
Waitpid(pid_t pid, int *iptr, int options)
{
pid_t retpid;
if ( (retpid = waitpid(pid, iptr, options)) == -1)
err_sys("waitpid error");
return(retpid);
}
void
Write(int fd, void *ptr, size_t nbytes)
{
if (write(fd, ptr, nbytes) != nbytes)
err_sys("write error");
}
sem_t *
Sem_open(const char *pathname, int oflag, ...)
{
sem_t *sem;
va_list ap;
mode_t mode;
unsigned int value;
if (oflag & O_CREAT) {
va_start(ap, oflag);
if (sizeof (mode_t) < sizeof (int))
mode = va_arg(ap, int);
else
mode = va_arg(ap, mode_t);
//mode = va_arg(ap, va_mode_t);
value = va_arg(ap, unsigned int);
if ( (sem = sem_open(pathname, oflag, mode, value)) == SEM_FAILED)
err_sys("sem_open error for %s", pathname);
va_end(ap);
} else {
if ( (sem = sem_open(pathname, oflag)) == SEM_FAILED)
err_sys("sem_open error for %s", pathname);
}
return(sem);
}
void
Sem_close(sem_t *sem)
{
if (sem_close(sem) == -1)
err_sys("sem_close error");
}
void
Sem_unlink(const char *pathname)
{
if (sem_unlink(pathname) == -1)
err_sys("sem_unlink error");
}
void
Sem_init(sem_t *sem, int pshared, unsigned int value)
{
if (sem_init(sem, pshared, value) == -1)
err_sys("sem_init error");
}
void
Sem_destroy(sem_t *sem)
{
if (sem_destroy(sem) == -1)
err_sys("sem_destroy error");
}
void
Sem_wait(sem_t *sem)
{
if (sem_wait(sem) == -1)
err_sys("sem_wait error");
}
int
Sem_trywait(sem_t *sem)
{
int rc;
if ( (rc = sem_trywait(sem)) == -1 && errno != EAGAIN)
err_sys("sem_trywait error");
return(rc);
}
/* include Sem_post */
void
Sem_post(sem_t *sem)
{
if (sem_post(sem) == -1)
err_sys("sem_post error");
}
/* end Sem_post */
void
Sem_getvalue(sem_t *sem, int *valp)
{
if (sem_getvalue(sem, valp) == -1)
err_sys("sem_getvalue error");
}
int
Semget(key_t key, int nsems, int flag)
{
int rc;
if ( (rc = semget(key, nsems, flag)) == -1)
err_sys("semget error");
return(rc);
}
void
Semop(int id, struct sembuf *opsptr, size_t nops)
{
if (semop(id, opsptr, nops) == -1)
err_sys("semctl error");
}
#if defined(__GNU_LIBRARY__) && !defined(_SEM_SEMUN_UNDEFINED)
/* union semun is defined by including <sys/sem.h> */
#else
/* according to X/OPEN we have to define it ourselves */
union semun {
int val; /* SETVAL을 위한값 */
struct semid_ds *buf; /* IPC_STAT, IPC_SET을 위한 버퍼 */
unsigned short int *array; /* GETALL, SETALL을 위한 배열 */
struct seminfo *__buf; /* IPC_INFO을 위한 버퍼 */
};
#endif
int
Semctl(int id, int semnum, int cmd, ...)
{
int rc;
va_list ap;
union semun arg;
if (cmd == GETALL || cmd == SETALL || cmd == SETVAL || cmd == IPC_STAT || cmd == IPC_SET)
{
va_start(ap, cmd); // init ap to final named argument
arg = va_arg(ap, union semun);
if ( (rc = semctl(id, semnum, cmd, arg)) == -1)
err_sys("semctl error");
va_end(ap);
}
else
{
if ( (rc = semctl(id, semnum, cmd)) == -1)
err_sys("semctl error");
}
return(rc);
}
key_t
Ftok(const char *pathname, int id)
{
key_t key;
if ( (key = ftok(pathname, id)) == -1)
err_sys("ftok error for pathname \"%s\" and id %d", pathname, id);
return(key);
}
int
Getopt(int argc, char *const *argv, const char *str)
{
int opt;
if ( ( opt = getopt(argc, argv, str)) == '?')
exit(1); /* getopt() has already written to stderr */
return(opt);
}
void
Ftruncate(int fd, off_t length)
{
if (ftruncate(fd, length) == -1)
err_sys("ftruncate error");
}
int
Shm_open(const char *pathname, int oflag, mode_t mode)
{
int fd;
if ( (fd = shm_open(pathname, oflag, mode)) == -1)
err_sys("shm_open error for %s", pathname);
return(fd);
}
void
Shm_unlink(const char *pathname)
{
if (shm_unlink(pathname) == -1)
err_sys("shm_unlink error");
}
void
Fstat(int fd, struct stat *ptr)
{
if (fstat(fd, ptr) == -1)
err_sys("fstat error");
}
+48
View File
@@ -0,0 +1,48 @@
#program name
RCCHKNAME = rc_updown_test
# Which Compiler
CC = gcc
CXX = g++
# Which OS
OS = FreeBSD
#library directory
LIBDIR = -L/usr/local/lib -L/usr/lib -L../lib -L/user/db/mysql/lib/mysql\
-L/user/db/pgsql/lib -L/usr/local/raslib/lib
INCLUDEDIR = -I/usr/local/include -I/usr/include\
-I../include -I/user/db/mysql/include/mysql\
-I/user/db/pgsql/include
RCCHK_INCLUDEDIR = -I/usr/local/include -I/usr/include\
-I../include\
-I/usr/local/raslib/include
#libraries
#LIBS = /usr/local/lib/libxml2.so
LIBS = -lpthread -lreadconfig -lmysqlclient -lpq -lshsdk
RCCHK_LIBS = -lraslib -lexpat -lintl -lcrypt
#compile option
CFLAGS = -Wall -O -g3 -Wall -Wimplicit -Wreturn-type -Wunused -Wuninitialized
# -Wparentheses -Wshadow -Wpointer-arith -Woverloaded-virtual
#link option
LFLAGS =
#LFLAGS =
#Definition flag
#DFLAGS = -D__DEBUG__
DFLAGS = -D__SETLOG__
#DFLAGS = -D__RELEASE__
#DFLAGS = -D_REENTRANT
RCCHK_SRC = rc_updown_test.cpp
RCCHECK_OBJ = rc_updown_test.o
rc_updown_test : ${RCCHECK_OBJ}
${CXX} ${CFLAGS} ${RCCHECK_OBJ} -o ${RCCHKNAME} ${LIBDIR} ${RCCHK_LIBS} ${LIBS}
.cpp.o : ${RCCHK_SRC}
${CXX} $(CFLAGS) -c -o $@ $< ${RCCHK_INCLUDEDIR} ${DFLAGS}
clean :
rm -f $(RCCHECK_OBJ) ${RCCHKNAME} *.log *.pid *.core
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,37 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void)
{
FILE *ifp = NULL;
FILE *ofp1, *ofp2;
char one_line_str[2048];
char temp_str[8][512];
ifp = fopen("sms_data.txt", "r");
ofp1 = fopen("ip_list.txt", "w");
ofp2 = fopen("host_list.txt", "w");
while ( fgets(one_line_str, 2048, ifp) != NULL )
{
sscanf(one_line_str, "%s%s%s%s%s%s%s%s"
, temp_str[0]
, temp_str[1]
, temp_str[2]
, temp_str[3]
, temp_str[4]
, temp_str[5]
, temp_str[6]
, temp_str[7]);
fprintf(stdout, "%s %s\n", temp_str[3], temp_str[7]);
fprintf(ofp1, "%s\n", temp_str[3]);
fprintf(ofp2, "%s\n", temp_str[7]);
}
fclose(ifp);
fclose(ofp1);
fclose(ofp2);
return 0;
}
+840
View File
@@ -0,0 +1,840 @@
rts0001.ktsh.co.kr
rts0002.ktsh.co.kr
rts0003.ktsh.co.kr
-
-
-
-
-
-
-
rts1001.ktsh.co.kr
rts1002.ktsh.co.kr
rts1003.ktsh.co.kr
rts1004.ktsh.co.kr
rts1005.ktsh.co.kr
rts1006.ktsh.co.kr
rts1007.ktsh.co.kr
rts1008.ktsh.co.kr
rts1009.ktsh.co.kr
rts1010.ktsh.co.kr
rts1011.ktsh.co.kr
rts1012.ktsh.co.kr
rts1013.ktsh.co.kr
rts1014.ktsh.co.kr
rts1015.ktsh.co.kr
rts1016.ktsh.co.kr
rts1017.ktsh.co.kr
rts1018.ktsh.co.kr
rts1019.ktsh.co.kr
rts1020.ktsh.co.kr
rts1021.ktsh.co.kr
rts1022.ktsh.co.kr
rts1023.ktsh.co.kr
rts1024.ktsh.co.kr
rts1025.ktsh.co.kr
rts1026.ktsh.co.kr
rts1027.ktsh.co.kr
rts1028.ktsh.co.kr
rts1029.ktsh.co.kr
rts1030.ktsh.co.kr
rts1031.ktsh.co.kr
rts1032.ktsh.co.kr
rts1033.ktsh.co.kr
rts1034.ktsh.co.kr
rts1035.ktsh.co.kr
rts1036.ktsh.co.kr
rts1037.ktsh.co.kr
rts1038.ktsh.co.kr
rts1039.ktsh.co.kr
rts1040.ktsh.co.kr
rts1041.ktsh.co.kr
rts1042.ktsh.co.kr
rts1043.ktsh.co.kr
rts1044.ktsh.co.kr
rts1045.ktsh.co.kr
rts1046.ktsh.co.kr
rts1047.ktsh.co.kr
rts1048.ktsh.co.kr
rts1049.ktsh.co.kr
rts1050.ktsh.co.kr
rts1051.ktsh.co.kr
rts1052.ktsh.co.kr
rts1053.ktsh.co.kr
rts1054.ktsh.co.kr
rts1055.ktsh.co.kr
rts1056.ktsh.co.kr
rts1057.ktsh.co.kr
rts1058.ktsh.co.kr
rts1059.ktsh.co.kr
rts1060.ktsh.co.kr
rts1061.ktsh.co.kr
rts1062.ktsh.co.kr
rts1063.ktsh.co.kr
rts1064.ktsh.co.kr
rts1065.ktsh.co.kr
rts1066.ktsh.co.kr
rts1067.ktsh.co.kr
rts1068.ktsh.co.kr
rts1069.ktsh.co.kr
rts1070.ktsh.co.kr
rts1071.ktsh.co.kr
rts1072.ktsh.co.kr
rts1073.ktsh.co.kr
rts1074.ktsh.co.kr
rts1075.ktsh.co.kr
rts1076.ktsh.co.kr
rts1077.ktsh.co.kr
rts1078.ktsh.co.kr
rts1079.ktsh.co.kr
rts1080.ktsh.co.kr
rts1081.ktsh.co.kr
rts1082.ktsh.co.kr
rts1083.ktsh.co.kr
rts1084.ktsh.co.kr
rts1085.ktsh.co.kr
rts1086.ktsh.co.kr
rts1087.ktsh.co.kr
rts1088.ktsh.co.kr
rts1089.ktsh.co.kr
rts1090.ktsh.co.kr
rts1091.ktsh.co.kr
rts1092.ktsh.co.kr
rts1093.ktsh.co.kr
rts1094.ktsh.co.kr
rts1095.ktsh.co.kr
rts1096.ktsh.co.kr
rts1097.ktsh.co.kr
rts1098.ktsh.co.kr
rts1099.ktsh.co.kr
rts1100.ktsh.co.kr
rts1101.ktsh.co.kr
rts1102.ktsh.co.kr
rts1103.ktsh.co.kr
rts1104.ktsh.co.kr
rts1105.ktsh.co.kr
rts1106.ktsh.co.kr
rts1107.ktsh.co.kr
rts1108.ktsh.co.kr
rts1109.ktsh.co.kr
rts1111.ktsh.co.kr
rts1112.ktsh.co.kr
rts1113.ktsh.co.kr
rts1114.ktsh.co.kr
rts1115.ktsh.co.kr
rts1116.ktsh.co.kr
rts1117.ktsh.co.kr
rts1118.ktsh.co.kr
rts1119.ktsh.co.kr
rts1120.ktsh.co.kr
rts1121.ktsh.co.kr
rts1122.ktsh.co.kr
rts1123.ktsh.co.kr
rts1124.ktsh.co.kr
rts1125.ktsh.co.kr
-
-
-
-
-
-
-
rts2001.ktsh.co.kr
rts2002.ktsh.co.kr
rts2003.ktsh.co.kr
rts2004.ktsh.co.kr
rts2005.ktsh.co.kr
rts2006.ktsh.co.kr
rts2007.ktsh.co.kr
rts2008.ktsh.co.kr
rts2009.ktsh.co.kr
rts2010.ktsh.co.kr
rts2011.ktsh.co.kr
rts2012.ktsh.co.kr
rts2013.ktsh.co.kr
rts2014.ktsh.co.kr
rts2015.ktsh.co.kr
rts2016.ktsh.co.kr
rts2017.ktsh.co.kr
rts2018.ktsh.co.kr
rts2019.ktsh.co.kr
rts2020.ktsh.co.kr
rts2021.ktsh.co.kr
rts2022.ktsh.co.kr
rts2023.ktsh.co.kr
rts2024.ktsh.co.kr
rts2025.ktsh.co.kr
rts2026.ktsh.co.kr
rts2027.ktsh.co.kr
rts2028.ktsh.co.kr
rts2029.ktsh.co.kr
rts2030.ktsh.co.kr
rts2031.ktsh.co.kr
rts2032.ktsh.co.kr
rts2033.ktsh.co.kr
rts2034.ktsh.co.kr
rts2035.ktsh.co.kr
rts2036.ktsh.co.kr
rts2037.ktsh.co.kr
rts2038.ktsh.co.kr
rts2039.ktsh.co.kr
rts2040.ktsh.co.kr
rts2041.ktsh.co.kr
rts2042.ktsh.co.kr
rts2043.ktsh.co.kr
rts2044.ktsh.co.kr
rts2045.ktsh.co.kr
rts2046.ktsh.co.kr
rts2047.ktsh.co.kr
rts2048.ktsh.co.kr
rts2049.ktsh.co.kr
rts2050.ktsh.co.kr
rts2051.ktsh.co.kr
rts2052.ktsh.co.kr
rts2053.ktsh.co.kr
rts2054.ktsh.co.kr
rts2055.ktsh.co.kr
rts2056.ktsh.co.kr
rts2057.ktsh.co.kr
rts2058.ktsh.co.kr
rts2059.ktsh.co.kr
rts2060.ktsh.co.kr
rts2061.ktsh.co.kr
rts2062.ktsh.co.kr
rts2063.ktsh.co.kr
rts2064.ktsh.co.kr
rts2065.ktsh.co.kr
rts2066.ktsh.co.kr
rts2067.ktsh.co.kr
rts2068.ktsh.co.kr
rts2069.ktsh.co.kr
rts2070.ktsh.co.kr
rts2071.ktsh.co.kr
rts2072.ktsh.co.kr
rts2073.ktsh.co.kr
rts2074.ktsh.co.kr
rts2075.ktsh.co.kr
rts2076.ktsh.co.kr
rts2077.ktsh.co.kr
rts2078.ktsh.co.kr
rts2079.ktsh.co.kr
rts2080.ktsh.co.kr
rts2081.ktsh.co.kr
rts2082.ktsh.co.kr
rts2083.ktsh.co.kr
rts2084.ktsh.co.kr
rts2085.ktsh.co.kr
rts2086.ktsh.co.kr
rts2087.ktsh.co.kr
rts2088.ktsh.co.kr
rts2089.ktsh.co.kr
rts2090.ktsh.co.kr
rts2091.ktsh.co.kr
rts2092.ktsh.co.kr
rts2093.ktsh.co.kr
rts2094.ktsh.co.kr
rts2095.ktsh.co.kr
rts2096.ktsh.co.kr
rts2097.ktsh.co.kr
rts2098.ktsh.co.kr
rts2099.ktsh.co.kr
rts2100.ktsh.co.kr
rts2101.ktsh.co.kr
rts2102.ktsh.co.kr
rts2103.ktsh.co.kr
rts2104.ktsh.co.kr
rts2105.ktsh.co.kr
rts2106.ktsh.co.kr
rts2107.ktsh.co.kr
rts2108.ktsh.co.kr
rts2109.ktsh.co.kr
rts2110.ktsh.co.kr
rts2111.ktsh.co.kr
rts2112.ktsh.co.kr
rts2113.ktsh.co.kr
rts2114.ktsh.co.kr
rts2115.ktsh.co.kr
rts2116.ktsh.co.kr
rts2117.ktsh.co.kr
rts2118.ktsh.co.kr
rts2119.ktsh.co.kr
rts2120.ktsh.co.kr
rts2121.ktsh.co.kr
rts2122.ktsh.co.kr
rts2123.ktsh.co.kr
rts2124.ktsh.co.kr
rts2125.ktsh.co.kr
rts2126.ktsh.co.kr
rts2127.ktsh.co.kr
rts2128.ktsh.co.kr
rts2129.ktsh.co.kr
rts2130.ktsh.co.kr
rts2131.ktsh.co.kr
rts2132.ktsh.co.kr
rts2133.ktsh.co.kr
rts2134.ktsh.co.kr
rts2135.ktsh.co.kr
rts2136.ktsh.co.kr
rts2137.ktsh.co.kr
rts2138.ktsh.co.kr
rts2139.ktsh.co.kr
rts2140.ktsh.co.kr
rts2141.ktsh.co.kr
rts2142.ktsh.co.kr
rts2143.ktsh.co.kr
rts2144.ktsh.co.kr
rts2145.ktsh.co.kr
rts2146.ktsh.co.kr
rts2147.ktsh.co.kr
rts2148.ktsh.co.kr
rts2149.ktsh.co.kr
rts2150.ktsh.co.kr
rts2151.ktsh.co.kr
rts2152.ktsh.co.kr
rts2153.ktsh.co.kr
rts2154.ktsh.co.kr
rts2155.ktsh.co.kr
rts2156.ktsh.co.kr
rts2157.ktsh.co.kr
rts2158.ktsh.co.kr
rts2159.ktsh.co.kr
rts2160.ktsh.co.kr
rts2161.ktsh.co.kr
rts2162.ktsh.co.kr
rts2163.ktsh.co.kr
rts2164.ktsh.co.kr
rts2165.ktsh.co.kr
rts2166.ktsh.co.kr
rts2167.ktsh.co.kr
rts2168.ktsh.co.kr
rts2169.ktsh.co.kr
rts2170.ktsh.co.kr
rts2171.ktsh.co.kr
rts2172.ktsh.co.kr
rts2173.ktsh.co.kr
rts2174.ktsh.co.kr
rts2175.ktsh.co.kr
rts2176.ktsh.co.kr
rts2177.ktsh.co.kr
rts2178.ktsh.co.kr
rts2179.ktsh.co.kr
rts2180.ktsh.co.kr
rts2181.ktsh.co.kr
rts2182.ktsh.co.kr
rts2183.ktsh.co.kr
rts2184.ktsh.co.kr
rts2185.ktsh.co.kr
rts2186.ktsh.co.kr
rts2187.ktsh.co.kr
rts2188.ktsh.co.kr
rts2189.ktsh.co.kr
rts2190.ktsh.co.kr
rts2191.ktsh.co.kr
rts2192.ktsh.co.kr
rts2193.ktsh.co.kr
rts2194.ktsh.co.kr
rts2195.ktsh.co.kr
rts2196.ktsh.co.kr
rts2197.ktsh.co.kr
rts2198.ktsh.co.kr
rts2199.ktsh.co.kr
rts2200.ktsh.co.kr
rts2201.ktsh.co.kr
rts2202.ktsh.co.kr
rts2203.ktsh.co.kr
rts2204.ktsh.co.kr
rts2205.ktsh.co.kr
rts2206.ktsh.co.kr
rts2207.ktsh.co.kr
rts2208.ktsh.co.kr
rts2209.ktsh.co.kr
rts2210.ktsh.co.kr
rts2211.ktsh.co.kr
rts2213.ktsh.co.kr
rts2214.ktsh.co.kr
rts2215.ktsh.co.kr
rts2216.ktsh.co.kr
rts2217.ktsh.co.kr
rts2218.ktsh.co.kr
rts2219.ktsh.co.kr
rts2220.ktsh.co.kr
rts2221.ktsh.co.kr
rts2222.ktsh.co.kr
rts2223.ktsh.co.kr
rts2224.ktsh.co.kr
rts2225.ktsh.co.kr
rts2226.ktsh.co.kr
rts2227.ktsh.co.kr
rts2228.ktsh.co.kr
rts2229.ktsh.co.kr
rts2230.ktsh.co.kr
rts2231.ktsh.co.kr
rts2232.ktsh.co.kr
rts2233.ktsh.co.kr
rts2234.ktsh.co.kr
rts2235.ktsh.co.kr
rts2236.ktsh.co.kr
rts2237.ktsh.co.kr
rts2238.ktsh.co.kr
rts2239.ktsh.co.kr
rts2240.ktsh.co.kr
rts2241.ktsh.co.kr
rts2242.ktsh.co.kr
rts2243.ktsh.co.kr
rts2244.ktsh.co.kr
-
-
-
-
-
-
bd-04-fhs001.ktsh.co.kr
bd-04-fhs002.ktsh.co.kr
bd-04-fhs003.ktsh.co.kr
bd-04-fhs004.ktsh.co.kr
bd-04-fhs005.ktsh.co.kr
bd-04-fhs006.ktsh.co.kr
bd-04-fhs007.ktsh.co.kr
bd-04-fhs008.ktsh.co.kr
bd-04-fhs009.ktsh.co.kr
bd-04-fhs010.ktsh.co.kr
bd-04-fhs011.ktsh.co.kr
bd-04-fhs012.ktsh.co.kr
bd-04-fhs013.ktsh.co.kr
bd-04-fhs014.ktsh.co.kr
bd-04-fhs015.ktsh.co.kr
bd-04-fhs016.ktsh.co.kr
bd-04-fhs017.ktsh.co.kr
bd-04-fhs018.ktsh.co.kr
bd-04-fhs019.ktsh.co.kr
bd-04-fhs020.ktsh.co.kr
bd-04-fhs021.ktsh.co.kr
bd-04-fhs023.ktsh.co.kr
bd-04-fhs030.ktsh.co.kr
bd-04-fhs031.ktsh.co.kr
bd-04-fhs032.ktsh.co.kr
bd-04-fhs033.ktsh.co.kr
bd-04-fhs034.ktsh.co.kr
bd-04-fhs035.ktsh.co.kr
-
-
-
-
-
-
-
-
-
rts4001.ktsh.co.kr(rts4001-1)
rts4001.ktsh.co.kr(rts4001-2)
rts4002.ktsh.co.kr(rts4002-1)
rts4002.ktsh.co.kr(rts4002-2)
rts4003.ktsh.co.kr(rts4003-1)
rts4003.ktsh.co.kr(rts4003-2)
rts4004.ktsh.co.kr(rts4004-1)
rts4004.ktsh.co.kr(rts4004-2)
rts4005.ktsh.co.kr(rts4005-1)
rts4005.ktsh.co.kr(rts4005-2)
rts4006.ktsh.co.kr(rts4006-1)
rts4006.ktsh.co.kr(rts4006-2)
rts4007.ktsh.co.kr(rts4007-1)
rts4007.ktsh.co.kr(rts4007-2)
rts4008.ktsh.co.kr(rts4008-1)
rts4008.ktsh.co.kr(rts4008-2)
rts4009.ktsh.co.kr(rts4009-1)
rts4009.ktsh.co.kr(rts4009-2)
rts4010.ktsh.co.kr(rts4010-1)
rts4010.ktsh.co.kr(rts4010-2)
rts4011.ktsh.co.kr(rts4011-1)
rts4011.ktsh.co.kr(rts4011-2)
rts4012.ktsh.co.kr(rts4012-1)
rts4012.ktsh.co.kr(rts4012-2)
rts4013.ktsh.co.kr(rts4013-1)
rts4013.ktsh.co.kr(rts4013-2)
rts4014.ktsh.co.kr(rts4014-1)
rts4014.ktsh.co.kr(rts4014-2)
rts4015.ktsh.co.kr(rts4015-1)
rts4015.ktsh.co.kr(rts4015-2)
rts4016.ktsh.co.kr(rts4016-1)
rts4016.ktsh.co.kr(rts4016-2)
rts4017.ktsh.co.kr(rts4017-1)
rts4017.ktsh.co.kr(rts4017-2)
rts4018.ktsh.co.kr(rts4018-1)
rts4018.ktsh.co.kr(rts4018-2)
rts4019.ktsh.co.kr(rts4019-1)
rts4019.ktsh.co.kr(rts4019-2)
rts4020.ktsh.co.kr(rts4020-1)
rts4020.ktsh.co.kr(rts4020-2)
rts4021.ktsh.co.kr(rts4021-1)
rts4021.ktsh.co.kr(rts4021-2)
rts4022.ktsh.co.kr(rts4022-1)
rts4022.ktsh.co.kr(rts4022-2)
rts4023.ktsh.co.kr(rts4023-1)
rts4023.ktsh.co.kr(rts4023-2)
-
-
-
-
-
rts5001.ktsh.co.kr(rts5001-1)
rts5001.ktsh.co.kr(rts5001-2)
rts5002.ktsh.co.kr(rts5002-1)
rts5002.ktsh.co.kr(rts5002-1)
rts5003.ktsh.co.kr(rts5003-1)
rts5003.ktsh.co.kr(rts5003-2)
rts5004.ktsh.co.kr(rts5004-1)
rts5004.ktsh.co.kr(rts5004-2)
rts5005.ktsh.co.kr(rts5005-1)
rts5005.ktsh.co.kr(rts5005-2)
-
-
-
-
-
-
-
rts6001.ktsh.co.kr(rts6001-1)
rts6001.ktsh.co.kr(rts6001-2)
rts6002.ktsh.co.kr(rts6002-1)
rts6002.ktsh.co.kr(rts6002-2)
rts6003.ktsh.co.kr(rts6003-1)
rts6003.ktsh.co.kr(rts6003-2)
rts6004.ktsh.co.kr(rts6004-1)
rts6004.ktsh.co.kr(rts6004-2)
rts6005.ktsh.co.kr(rts6005-1)
rts6005.ktsh.co.kr(rts6005-2)
rts6006.ktsh.co.kr(rts6006-1)
rts6006.ktsh.co.kr(rts6006-2)
rts6007.ktsh.co.kr(rts6007-1)
rts6007.ktsh.co.kr(rts6007-2)
rts6008.ktsh.co.kr(rts6008-1)
rts6008.ktsh.co.kr(rts6008-2)
rts6009.ktsh.co.kr(rts6009-1)
rts6009.ktsh.co.kr(rts6009-2)
rts6010.ktsh.co.kr(rts6010-1)
rts6010.ktsh.co.kr(rts6010-2)
rts6011.ktsh.co.kr(rts6011-1)
rts6011.ktsh.co.kr(rts6011-2)
rts6012.ktsh.co.kr(rts6012-1)
rts6012.ktsh.co.kr(rts6012-2)
rts6013.ktsh.co.kr(rts6013-1)
rts6013.ktsh.co.kr(rts6013-2)
rts6014.ktsh.co.kr(rts6014-1)
rts6014.ktsh.co.kr(rts6014-2)
rts6015.ktsh.co.kr(rts6015-1)
rts6015.ktsh.co.kr(rts6015-2)
rts6016.ktsh.co.kr(rts6016-1)
rts6016.ktsh.co.kr(rts6016-2)
rts6017.ktsh.co.kr(rts6017-1)
rts6017.ktsh.co.kr(rts6017-2)
rts6018.ktsh.co.kr(rts6018-1)
rts6018.ktsh.co.kr(rts6018-2)
rts6019.ktsh.co.kr(rts6019-1)
rts6019.ktsh.co.kr(rts6019-2)
rts6020.ktsh.co.kr(rts6020-1)
rts6020.ktsh.co.kr(rts6020-2)
rts6021.ktsh.co.kr(rts6021-1)
rts6021.ktsh.co.kr(rts6021-2)
rts6022.ktsh.co.kr(rts6022-1)
rts6022.ktsh.co.kr(rts6022-2)
rts6023.ktsh.co.kr(rts6023-2)
rts6023.ktsh.co.kr(rts6023-2)
rts6024.ktsh.co.kr(rts6024-1)
rts6024.ktsh.co.kr(rts6024-2)
rts6025.ktsh.co.kr(rts6025-1)
rts6025.ktsh.co.kr(rts6025-2)
rts6026.ktsh.co.kr(rts6026-1)
rts6026.ktsh.co.kr(rts6026-2)
rts6027.ktsh.co.kr(rts6027-1)
rts6027.ktsh.co.kr(rts6027-2)
rts6028.ktsh.co.kr(rts6028-1)
rts6028.ktsh.co.kr(rts6028-2)
rts6029.ktsh.co.kr(rts6029-2)
rts6029.ktsh.co.kr(rts6029-2)
rts6030.ktsh.co.kr(rts6030-1)
rts6030.ktsh.co.kr(rts6030-2)
rts6031.ktsh.co.kr(rts6031-1)
rts6031.ktsh.co.kr(rts6031-2)
rts6032.ktsh.co.kr(rts6032-1)
rts6032.ktsh.co.kr(rts6032-2)
rts6033.ktsh.co.kr(rts6033-1)
rts6033.ktsh.co.kr(rts6033-2)
rts6034.ktsh.co.kr(rts6034-1)
rts6034.ktsh.co.kr(rts6034-2)
rts6035.ktsh.co.kr(rts6035-1)
rts6035.ktsh.co.kr(rts6035-2)
-
-
-
-
-
-
bd-08-fhs001.ktsh.co.kr
bd-08-fhs002.ktsh.co.kr
bd-08-fhs003.ktsh.co.kr
bd-08-fhs004.ktsh.co.kr
bd-08-fhs005.ktsh.co.kr
bd-08-fhs006.ktsh.co.kr
bd-08-fhs007.ktsh.co.kr
bd-08-fhs008.ktsh.co.kr
bd-08-fhs009.ktsh.co.kr
bd-08-fhs010.ktsh.co.kr
bd-08-fhs011.ktsh.co.kr
bd-08-fhs012.ktsh.co.kr
bd-08-fhs013.ktsh.co.kr
bd-08-fhs014.ktsh.co.kr
bd-08-fhs015.ktsh.co.kr
bd-08-fhs016.ktsh.co.kr
bd-08-fhs017.ktsh.co.kr
bd-08-fhs018.ktsh.co.kr
bd-08-fhs019.ktsh.co.kr
bd-08-fhs020.ktsh.co.kr
-
-
-
-
-
-
ns-rts0001.ktsh.co.kr
ns-rts0002.ktsh.co.kr
ns-rts0003.ktsh.co.kr
ns-rts0004.ktsh.co.kr
ns-rts0005.ktsh.co.kr
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
ns-rts2001.ktsh.co.kr
ns-rts2002.ktsh.co.kr
ns-rts2003.ktsh.co.kr
ns-rts2004.ktsh.co.kr
ns-rts2005.ktsh.co.kr
ns-rts2006.ktsh.co.kr
ns-rts2007.ktsh.co.kr
ns-rts2008.ktsh.co.kr
ns-rts2009.ktsh.co.kr
ns-rts2010.ktsh.co.kr
ns-rts2011.ktsh.co.kr
ns-rts2012.ktsh.co.kr
ns-rts2013.ktsh.co.kr
ns-rts2014.ktsh.co.kr
ns-rts2015.ktsh.co.kr
ns-rts2016.ktsh.co.kr
ns-rts2017.ktsh.co.kr
ns-rts2018.ktsh.co.kr
ns-rts2019.ktsh.co.kr
ns-rts2020.ktsh.co.kr
ns-rts2021.ktsh.co.kr
ns-rts2022.ktsh.co.kr
ns-rts2023.ktsh.co.kr
ns-rts2024.ktsh.co.kr
ns-rts2025.ktsh.co.kr
ns-rts2026.ktsh.co.kr
ns-rts2027.ktsh.co.kr
ns-rts2028.ktsh.co.kr
ns-rts2029.ktsh.co.kr
ns-rts2030.ktsh.co.kr
ns-rts2031.ktsh.co.kr
ns-rts2032.ktsh.co.kr
ns-rts2033.ktsh.co.kr
ns-rts2034.ktsh.co.kr
ns-rts2035.ktsh.co.kr
ns-rts2036.ktsh.co.kr
ns-rts2037.ktsh.co.kr
ns-rts2038.ktsh.co.kr
ns-rts2039.ktsh.co.kr
ns-rts2040.ktsh.co.kr
ns-rts2041.ktsh.co.kr
ns-rts2042.ktsh.co.kr
ns-rts2043.ktsh.co.kr
ns-rts2044.ktsh.co.kr
ns-rts2045.ktsh.co.kr
ns-rts2046.ktsh.co.kr
ns-rts2047.ktsh.co.kr
ns-rts2048.ktsh.co.kr
ns-rts2049.ktsh.co.kr
ns-rts2050.ktsh.co.kr
-
-
-
-
-
-
ns-04-fhs001.ktsh.co.kr
ns-04-fhs002.ktsh.co.kr
ns-04-fhs003.ktsh.co.kr
ns-04-fhs004.ktsh.co.kr
ns-04-fhs005.ktsh.co.kr
ns-04-fhs006.ktsh.co.kr
ns-04-fhs007.ktsh.co.kr
ns-04-fhs008.ktsh.co.kr
ns-04-fhs009.ktsh.co.kr
ns-04-fhs010.ktsh.co.kr
ns-04-fhs011.ktsh.co.kr
ns-04-fhs012.ktsh.co.kr
ns-04-fhs013.ktsh.co.kr
ns-04-fhs014.ktsh.co.kr
ns-04-fhs015.ktsh.co.kr
ns-04-fhs016.ktsh.co.kr
ns-04-fhs017.ktsh.co.kr
ns-04-fhs018.ktsh.co.kr
ns-04-fhs019.ktsh.co.kr
ns-04-fhs020.ktsh.co.kr
ns-04-fhs021.ktsh.co.kr
ns-04-fhs022.ktsh.co.kr
ns-04-fhs023.ktsh.co.kr
ns-04-fhs024.ktsh.co.kr
ns-04-fhs025.ktsh.co.kr
ns-04-fhs026.ktsh.co.kr
ns-04-fhs027.ktsh.co.kr
ns-04-fhs028.ktsh.co.kr
ns-04-fhs029.ktsh.co.kr
ns-04-fhs030.ktsh.co.kr
ns-04-fhs031.ktsh.co.kr
ns-04-fhs032.ktsh.co.kr
ns-04-fhs033.ktsh.co.kr
ns-04-fhs034.ktsh.co.kr
ns-04-fhs035.ktsh.co.kr
ns-04-fhs036.ktsh.co.kr
ns-04-fhs037.ktsh.co.kr
ns-04-fhs038.ktsh.co.kr
ns-04-fhs039.ktsh.co.kr
ns-04-fhs040.ktsh.co.kr
ns-04-fhs041.ktsh.co.kr
ns-04-fhs042.ktsh.co.kr
ns-04-fhs043.ktsh.co.kr
ns-04-fhs044.ktsh.co.kr
ns-04-fhs045.ktsh.co.kr
ns-04-fhs046.ktsh.co.kr
ns-04-fhs047.ktsh.co.kr
ns-04-fhs048.ktsh.co.kr
ns-04-fhs049.ktsh.co.kr
ns-04-fhs050.ktsh.co.kr
ns-04-fhs051.ktsh.co.kr
ns-04-fhs052.ktsh.co.kr
ns-04-fhs053.ktsh.co.kr
ns-04-fhs054.ktsh.co.kr
ns-04-fhs055.ktsh.co.kr
ns-04-fhs056.ktsh.co.kr
ns-04-fhs057.ktsh.co.kr
ns-04-fhs058.ktsh.co.kr
ns-04-fhs059.ktsh.co.kr
ns-04-fhs060.ktsh.co.kr
ns-04-fhs061.ktsh.co.kr
ns-04-fhs062.ktsh.co.kr
ns-04-fhs063.ktsh.co.kr
ns-04-fhs064.ktsh.co.kr
ns-04-fhs065.ktsh.co.kr
ns-04-fhs066.ktsh.co.kr
ns-04-fhs067.ktsh.co.kr
ns-04-fhs068.ktsh.co.kr
ns-04-fhs069.ktsh.co.kr
ns-04-fhs070.ktsh.co.kr
ns-04-fhs071.ktsh.co.kr
ns-04-fhs072.ktsh.co.kr
ns-04-fhs073.ktsh.co.kr
ns-04-fhs074.ktsh.co.kr
ns-04-fhs075.ktsh.co.kr
ns-04-fhs076.ktsh.co.kr
ns-04-fhs077.ktsh.co.kr
ns-04-fhs078.ktsh.co.kr
ns-04-fhs079.ktsh.co.kr
ns-04-fhs080.ktsh.co.kr
ns-04-fhs081.ktsh.co.kr
ns-04-fhs082.ktsh.co.kr
ns-04-fhs083.ktsh.co.kr
ns-04-fhs084.ktsh.co.kr
ns-04-fhs085.ktsh.co.kr
ns-04-fhs086.ktsh.co.kr
ns-04-fhs087.ktsh.co.kr
ns-04-fhs088.ktsh.co.kr
ns-04-fhs089.ktsh.co.kr
ns-04-fhs090.ktsh.co.kr
ns-04-fhs091.ktsh.co.kr
ns-04-fhs092.ktsh.co.kr
ns-04-fhs093.ktsh.co.kr
ns-04-fhs094.ktsh.co.kr
ns-04-fhs095.ktsh.co.kr
ns-04-fhs096.ktsh.co.kr
ns-04-fhs097.ktsh.co.kr
ns-04-fhs098.ktsh.co.kr
ns-04-fhs099.ktsh.co.kr
-
-
-
-
-
-
-
+46
View File
@@ -0,0 +1,46 @@
#include "unpipc.h"
struct shared {
sem_t mutex; /* the mutex: a Posix memory-based semaphore */
int count; /* and the counter */
} shared;
int
main(int argc, char **argv)
{
int fd, i, nloop;
struct shared *ptr;
if (argc != 3)
err_quit("usage: incr3 <pathname> <#loops>");
nloop = atoi(argv[2]);
/* 4open file, initialize to 0, map into memory */
fd = Open(argv[1], O_RDWR | O_CREAT, FILE_MODE);
Write(fd, &shared, sizeof(struct shared));
fprintf(stderr, "before ptr-->%x\n", ptr);
ptr = Mmap(NULL, sizeof(struct shared), PROT_READ | PROT_WRITE,
MAP_SHARED, fd, 0);
Close(fd);
fprintf(stderr, "after ptr-->%x\n", ptr);
/* 4initialize semaphore that is shared between processes */
Sem_init(&ptr->mutex, 0, 0);
fprintf(stderr, "---- 5 ----\n");
setbuf(stdout, NULL); /* stdout is unbuffered */
if (Fork() == 0) { /* child */
for (i = 0; i < nloop; i++) {
Sem_wait(&ptr->mutex);
printf("child: %d\n", ptr->count++);
Sem_post(&ptr->mutex);
}
exit(0);
}
/* 4parent */
for (i = 0; i < nloop; i++) {
Sem_wait(&ptr->mutex);
printf("parent: %d\n", ptr->count++);
Sem_post(&ptr->mutex);
}
Sem_destroy(&ptr->mutex);
exit(0);
}
+840
View File
@@ -0,0 +1,840 @@
222.122.136.11
222.122.136.12
222.122.136.13
222.122.136.25
222.122.136.28
222.122.136.80
222.122.136.81
222.122.136.82
rc002-test
soribada
222.122.153.11
222.122.153.12
222.122.153.13
222.122.153.14
222.122.153.15
222.122.153.16
222.122.153.17
222.122.153.18
222.122.153.19
222.122.153.20
222.122.153.21
222.122.153.22
222.122.153.23
222.122.153.24
222.122.153.25
222.122.153.26
222.122.153.27
222.122.153.28
222.122.153.29
222.122.153.30
222.122.153.31
222.122.153.32
222.122.153.33
222.122.153.34
222.122.153.35
222.122.153.36
222.122.153.37
222.122.153.38
222.122.153.39
222.122.153.40
222.122.153.41
222.122.153.42
222.122.153.43
222.122.153.44
222.122.153.45
222.122.153.46
222.122.153.47
222.122.153.48
222.122.153.49
222.122.153.50
222.122.153.51
222.122.153.52
222.122.153.53
222.122.153.54
222.122.153.55
222.122.153.56
222.122.153.57
222.122.153.58
222.122.153.59
222.122.153.60
222.122.153.61
222.122.153.62
222.122.153.63
222.122.153.64
222.122.153.65
222.122.153.66
222.122.153.67
222.122.153.68
222.122.153.69
222.122.153.70
222.122.153.71
222.122.153.72
222.122.153.73
222.122.153.74
222.122.153.75
222.122.153.76
222.122.153.77
222.122.153.78
222.122.153.79
222.122.153.80
222.122.153.81
222.122.153.82
222.122.153.83
222.122.153.84
222.122.153.85
222.122.153.86
222.122.153.87
222.122.153.88
222.122.153.89
222.122.153.90
222.122.153.91
222.122.153.92
222.122.153.93
222.122.153.94
222.122.153.95
222.122.153.96
222.122.153.97
222.122.153.98
222.122.153.99
222.122.153.100
222.122.153.101
222.122.153.102
222.122.153.103
222.122.153.104
222.122.153.105
222.122.153.106
222.122.153.107
222.122.153.108
222.122.153.109
222.122.153.110
222.122.153.111
222.122.153.112
222.122.153.113
222.122.153.114
222.122.153.115
222.122.153.116
222.122.153.117
222.122.153.118
222.122.153.119
222.122.153.121
222.122.153.122
222.122.153.123
222.122.153.124
222.122.165.5
222.122.165.6
222.122.165.7
222.122.165.8
222.122.165.9
222.122.165.10
222.122.165.11
222.122.165.12
222.122.165.13
222.122.165.14
222.122.165.15
222.122.153.8
222.122.153.9
222.122.153.5
222.122.153.6
222.122.153.7
rc003-test
rc003
222.122.162.11
222.122.162.12
222.122.162.13
222.122.162.14
222.122.162.15
222.122.162.16
222.122.162.17
222.122.162.18
222.122.162.19
222.122.162.20
222.122.162.21
222.122.162.22
222.122.162.23
222.122.162.24
222.122.162.25
222.122.162.26
222.122.162.27
222.122.162.28
222.122.162.29
222.122.162.30
222.122.162.31
222.122.162.32
222.122.162.33
222.122.162.34
222.122.162.35
222.122.162.36
222.122.162.37
222.122.162.38
222.122.162.39
222.122.162.40
222.122.162.41
222.122.162.42
222.122.162.43
222.122.162.44
222.122.162.45
222.122.162.46
222.122.162.47
222.122.162.48
222.122.162.49
222.122.162.50
222.122.162.51
222.122.162.52
222.122.162.53
222.122.162.54
222.122.162.55
222.122.162.56
222.122.162.57
222.122.162.58
222.122.162.59
222.122.162.60
222.122.162.61
222.122.162.62
222.122.162.63
222.122.162.64
222.122.162.65
222.122.162.66
222.122.162.67
222.122.162.68
222.122.162.69
222.122.162.70
222.122.162.71
222.122.162.72
222.122.162.73
222.122.162.74
222.122.162.75
222.122.162.76
222.122.162.77
222.122.162.78
222.122.162.79
222.122.162.80
222.122.162.81
222.122.162.82
222.122.162.83
222.122.162.84
222.122.162.85
222.122.162.86
222.122.162.87
222.122.162.88
222.122.162.89
222.122.162.90
222.122.162.91
222.122.162.92
222.122.162.93
222.122.162.94
222.122.162.95
222.122.162.96
222.122.162.97
222.122.162.98
222.122.162.99
222.122.162.100
222.122.162.101
222.122.162.102
222.122.162.103
222.122.162.104
222.122.162.105
222.122.162.106
222.122.162.107
222.122.162.108
222.122.162.109
222.122.162.110
222.122.162.111
222.122.162.112
222.122.162.113
222.122.162.114
222.122.162.115
222.122.162.116
222.122.162.117
222.122.162.118
222.122.162.119
222.122.162.120
222.122.162.121
222.122.162.122
222.122.162.123
222.122.162.124
121.156.49.5
121.156.49.6
121.156.49.7
121.156.49.8
121.156.49.9
121.156.49.10
121.156.49.11
121.156.49.12
121.156.49.13
121.156.49.14
121.156.49.15
121.156.49.16
121.156.49.17
121.156.49.18
121.156.49.19
121.156.49.20
121.156.49.21
121.156.49.22
121.156.49.23
121.156.49.24
121.156.49.25
121.156.49.26
121.156.49.27
121.156.49.28
121.156.49.29
121.156.49.30
121.156.49.31
121.156.49.32
121.156.49.33
121.156.49.34
121.156.49.35
121.156.49.36
121.156.49.37
121.156.49.38
121.156.49.39
121.156.49.40
121.156.49.41
121.156.49.42
121.156.49.43
121.156.49.44
121.156.49.45
121.156.49.46
121.156.49.47
121.156.49.48
121.156.49.49
121.156.49.50
121.156.49.51
121.156.49.52
121.156.49.53
121.156.49.54
121.156.49.55
121.156.49.56
121.156.49.57
121.156.49.58
121.156.49.59
121.156.49.60
121.156.49.61
121.156.49.62
121.156.49.63
121.156.49.64
121.156.49.65
121.156.49.66
121.156.49.67
121.156.49.68
121.156.49.69
121.156.49.70
121.156.49.71
121.156.49.72
121.156.49.73
121.156.49.74
121.156.49.75
121.156.49.76
121.156.49.77
121.156.49.78
121.156.49.79
121.156.49.80
121.156.49.81
121.156.49.82
121.156.49.83
121.156.49.84
121.156.49.85
222.122.171.6
222.122.171.7
222.122.171.8
222.122.171.9
222.122.171.10
222.122.171.11
222.122.171.12
222.122.171.13
222.122.171.14
222.122.171.15
222.122.171.16
222.122.171.17
222.122.171.18
222.122.171.19
222.122.171.20
222.122.171.21
222.122.171.23
222.122.171.24
222.122.171.25
222.122.171.26
222.122.171.27
222.122.171.28
222.122.171.29
222.122.171.30
222.122.171.31
222.122.171.32
222.122.171.33
222.122.171.34
222.122.171.35
222.122.171.36
222.122.171.37
222.122.171.38
222.122.171.39
222.122.171.40
222.122.171.41
222.122.171.42
222.122.171.43
222.122.171.44
222.122.171.45
222.122.171.46
222.122.171.47
222.122.171.48
222.122.171.49
222.122.171.50
222.122.171.51
222.122.171.52
222.122.171.53
222.122.171.54
222.122.162.9
222.122.162.10
222.122.162.5
222.122.162.136
222.122.162.7
rc004
125.141.201.161
125.141.201.162
125.141.201.163
125.141.201.164
125.141.201.165
125.141.201.166
125.141.201.167
125.141.201.168
125.141.201.169
125.141.201.170
125.141.201.171
125.141.201.172
125.141.201.173
125.141.201.174
125.141.201.175
125.141.201.176
125.141.201.177
125.141.201.178
125.141.201.179
125.141.201.180
125.141.201.181
125.141.201.183
125.141.201.190
125.141.201.191
125.141.201.192
125.141.201.193
125.141.201.194
125.141.201.195
125.141.201.159
125.141.201.160
125.141.201.155
125.141.201.156
125.141.201.157
222.122.171.123
222.122.171.124
222.122.171.122
222.122.171.121
222.122.170.101
222.122.170.102
222.122.170.103
222.122.170.104
222.122.170.105
222.122.170.106
222.122.170.107
222.122.170.108
222.122.170.109
222.122.170.110
222.122.170.111
222.122.170.112
222.122.170.113
222.122.170.114
222.122.170.115
222.122.170.116
222.122.170.117
222.122.170.118
222.122.170.122
222.122.170.124
222.122.171.101
222.122.171.102
222.122.171.103
222.122.171.104
222.122.171.105
222.122.171.106
222.122.171.107
222.122.171.108
222.122.171.109
222.122.171.110
222.122.171.111
222.122.171.112
222.122.171.113
222.122.171.114
222.122.171.115
222.122.171.116
222.122.171.117
222.122.171.118
222.122.171.119
222.122.171.120
222.122.171.81
222.122.171.82
222.122.171.83
222.122.171.84
222.122.171.85
222.122.171.86
222.122.170.119
222.122.170.120
222.122.170.121
222.122.170.252
222.122.170.123
222.122.170.11
222.122.170.12
222.122.170.13
222.122.170.14
222.122.170.15
222.122.170.16
222.122.170.17
222.122.170.18
222.122.170.19
222.122.170.20
222.122.170.9
222.122.170.10
222.122.170.5
222.122.170.136
222.122.170.7
orgel
222.122.170.96
222.122.170.51
222.122.170.52
222.122.170.53
222.122.170.54
222.122.170.55
222.122.170.56
222.122.170.57
222.122.170.58
222.122.170.59
222.122.170.60
222.122.170.61
222.122.170.62
222.122.170.63
222.122.170.64
222.122.170.65
222.122.170.66
222.122.170.67
222.122.170.68
222.122.170.69
222.122.170.70
222.122.170.71
222.122.170.72
222.122.170.73
222.122.170.74
222.122.170.75
222.122.170.76
222.122.170.77
222.122.170.78
222.122.170.79
222.122.170.80
222.122.170.81
222.122.170.82
222.122.170.83
222.122.170.84
222.122.170.85
222.122.170.86
222.122.170.87
222.122.170.88
222.122.170.89
222.122.170.90
222.122.170.91
222.122.170.92
222.122.170.93
222.122.170.94
222.122.170.31
222.122.170.32
222.122.170.33
222.122.170.34
222.122.170.35
222.122.170.36
222.122.170.37
222.122.170.38
222.122.170.39
222.122.170.40
222.122.170.41
222.122.170.42
222.122.170.43
222.122.170.44
222.122.170.45
222.122.170.46
222.122.170.47
222.122.170.48
222.122.170.49
222.122.170.50
222.122.171.61
222.122.171.62
222.122.171.63
222.122.171.64
222.122.171.65
222.122.171.66
222.122.170.99
222.122.170.100
222.122.170.95
222.122.170.226
222.122.170.97
ncsoft
125.141.201.211
125.141.201.212
125.141.201.213
125.141.201.214
125.141.201.215
125.141.201.216
125.141.201.217
125.141.201.218
125.141.201.219
125.141.201.220
125.141.201.221
125.141.201.222
125.141.201.223
125.141.201.224
125.141.201.225
125.141.201.226
125.141.201.227
125.141.201.228
125.141.201.229
125.141.201.230
125.141.201.205
125.141.201.206
125.141.201.203
125.141.201.201
125.141.201.202
freezonetest
125.141.192.21
125.141.192.22
125.141.192.23
125.141.192.24
125.141.192.25
125.141.192.9
125.141.192.10
125.141.192.4
125.141.192.136
125.141.192.138
rc105-test
125.141.214.11
125.141.214.12
125.141.214.13
125.141.214.14
125.141.214.15
125.141.214.16
125.141.214.17
125.141.214.18
125.141.214.19
125.141.214.20
125.141.214.21
125.141.214.22
125.141.214.23
125.141.214.24
125.141.214.25
125.141.214.26
125.141.214.27
125.141.214.28
125.141.214.29
125.141.214.30
125.141.214.31
125.141.214.32
125.141.214.33
125.141.214.34
125.141.214.35
125.141.214.36
125.141.214.37
125.141.214.38
125.141.214.39
125.141.214.40
125.141.214.41
125.141.214.42
125.141.214.43
125.141.214.44
125.141.214.45
125.141.214.46
125.141.214.47
125.141.214.48
125.141.214.49
125.141.214.50
125.141.214.51
125.141.214.52
125.141.214.53
125.141.214.54
125.141.214.55
125.141.214.56
125.141.214.57
125.141.214.58
125.141.214.59
125.141.214.60
125.141.214.61
125.141.214.62
125.141.214.63
125.141.214.64
125.141.214.65
125.141.214.66
125.141.214.67
125.141.214.68
125.141.214.69
125.141.214.70
125.141.214.71
125.141.214.72
125.141.214.73
125.141.214.74
125.141.214.9
125.141.214.10
125.141.214.7
125.141.214.5
125.141.214.136
rc103-test
125.141.193.11
125.141.193.12
125.141.193.13
125.141.193.14
125.141.193.15
125.141.193.16
125.141.193.17
125.141.193.18
125.141.193.19
125.141.193.20
125.141.193.21
125.141.193.22
125.141.193.23
125.141.193.24
125.141.193.25
125.141.193.26
125.141.193.27
125.141.193.28
125.141.193.29
125.141.193.30
125.141.193.31
125.141.193.32
125.141.193.33
125.141.193.34
125.141.193.35
125.141.193.36
125.141.193.37
125.141.193.38
125.141.193.39
125.141.193.40
125.141.193.41
125.141.193.42
125.141.193.43
125.141.193.44
125.141.193.45
125.141.193.46
125.141.193.47
125.141.193.48
125.141.193.49
125.141.193.50
125.141.193.51
125.141.193.52
125.141.193.53
125.141.193.54
125.141.193.55
125.141.193.56
125.141.193.57
125.141.193.58
125.141.193.59
125.141.193.60
125.141.193.9
125.141.193.10
125.141.193.5
125.141.193.136
125.141.193.7
incok
125.141.192.51
125.141.192.52
125.141.192.53
125.141.192.54
125.141.192.55
125.141.192.56
125.141.192.57
125.141.192.58
125.141.192.59
125.141.192.60
125.141.192.61
125.141.192.62
125.141.192.63
125.141.192.64
125.141.192.65
125.141.192.66
125.141.192.67
125.141.192.68
125.141.192.69
125.141.192.70
125.141.192.71
125.141.192.72
125.141.192.73
125.141.192.74
125.141.192.75
125.141.192.76
125.141.192.77
125.141.192.78
125.141.192.79
125.141.192.80
125.141.192.81
125.141.192.82
125.141.192.83
125.141.192.84
125.141.192.85
125.141.192.86
125.141.192.87
125.141.192.88
125.141.192.89
125.141.192.90
125.141.192.91
125.141.192.92
125.141.192.93
125.141.192.94
125.141.192.95
125.141.192.96
125.141.192.97
125.141.192.98
125.141.192.99
125.141.192.100
125.141.192.101
125.141.192.102
125.141.192.103
125.141.192.104
125.141.192.105
125.141.192.106
125.141.192.107
125.141.192.108
125.141.192.109
125.141.192.110
125.141.192.111
125.141.192.112
125.141.192.113
125.141.192.114
125.141.192.115
125.141.192.116
125.141.192.117
125.141.192.118
125.141.192.119
125.141.192.120
125.141.192.31
125.141.192.32
125.141.192.33
125.141.192.34
125.141.192.35
125.141.192.36
125.141.192.37
125.141.192.38
125.141.192.39
125.141.192.40
125.141.192.41
125.141.192.42
125.141.192.43
125.141.192.44
125.141.192.45
125.141.214.86
125.141.214.87
125.141.214.88
125.141.214.89
125.141.214.90
125.141.214.91
125.141.214.92
125.141.214.93
125.141.214.94
125.141.214.95
125.141.214.96
125.141.214.97
125.141.214.98
125.141.214.99
125.141.192.123
125.141.192.124
125.141.192.121
125.141.192.251
125.141.192.122
211.39.132.203
211.39.132.204
+28
View File
@@ -0,0 +1,28 @@
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <signal.h>
int main()
{
FILE *fp;
int state;
char buff[256];
fp = popen("ps aux | grep new_sh_statusd | awk '{print $2}'", "r");
if (fp == NULL)
{
perror("erro : ");
exit(0);
}
while (fgets(buff, 256, fp) != NULL)
{
fprintf(stderr, "%s", buff);
}
state = pclose(fp);
fprintf(stderr, "state is %d\n", state);
exit(0);
}
Binary file not shown.
@@ -0,0 +1,206 @@
#include <sys/time.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <errno.h>
#include "SHSSDK.h"
#include "SHCSDK.h"
#include "log.h"
#include "protocol.h"
using namespace std;
using namespace SDSocket;
HSHSDK access_sh(rcacct_t *rcinfo, char *errorMsg)
{
char *serviceHost = NULL;
char *authString = NULL;
HSHSDK hshsdk = NULL;
int errorCode;
serviceHost = "demo.opendisk.com/dav";
//serviceHost = "rc101.ktsh.co.kr/dav";
authString = "ZGVtb0BkZW1vOjJhMzY2MTZiZjUxMjMxMzVkMTNjNjM5MTZlNGFkNDg2";
//authString = "ZnJlZXpvbmV0ZXN0QGZyZWV6b25ldGVzdDo6/YBHEvD83rs4+oN8Axa5x/7vLY/CE/sjaj6wgUcyinDklTsjRrthzMV61zrosygAdkLyj9Ns1Otj8jngwcRhNzI0OTM=";
//authString = (char *)sh_get_auth_string("kpost", "kpost", "kpost", "geniuspizon", "./kpost48.cert", time(NULL) + 150000);
/* System Hosting Client-side SDK : 초기화 */
fprintf(stderr, "serviceHost : %s\nauthString : %s\n", serviceHost, authString);
hshsdk = sh_init(serviceHost, authString, NULL, NULL);
fprintf(stderr, "------------------ 1 ------------------\n");
if (!hshsdk) {
errorCode = errno;
fprintf(stderr, "System Hosting Client-side SDK 초기화에 실패하였습니다.");
fprintf(stderr, "------------------ 2 ------------------\n");
if (hshsdk)
sh_free(hshsdk);
if (serviceHost)
free(serviceHost);
if (authString)
free(authString);
fprintf(stderr, "------------------ 3 ------------------\n");
return NULL;
}
fprintf(stderr, "------------------ 4 ------------------\n");
fprintf(stderr, "------------------ 5 ------------------\n");
return hshsdk;
}
int check_rc(char *filename, rcacct_t *rcinfo)
{
HSHSDK hshsdk = NULL;
char local_path[128], remote_path[128], local_temp[128];
int errorCode;
char errorMsg[1024];
strcpy(filename, "jin.avi");
sprintf(local_path, "/tmp/%s", filename);
sprintf(remote_path, "/%s", filename);
sprintf(local_temp, "/user/ics10/gms/new_sh_statusd/test/%s", filename);
unlink(local_temp);
fprintf(stderr, "filename : %s\n", filename);
hshsdk = access_sh(rcinfo, errorMsg);
if (hshsdk) {
errorCode = sh_upload(hshsdk, local_path, remote_path, SHWRITEPOLICY_OVERWRITE, -1);
fprintf(stderr, "error: upload: %d:%s\n", errorCode, sh_get_error_message(hshsdk));
fprintf(stderr, "debug: step 1 - %s\n", filename);
if (errorCode == 0) {
fprintf(stderr, "Error : %s\n", rcinfo->m_pszServiceName);
sh_free(hshsdk);
return -1;
}
fprintf(stderr, "debug: step 2\n");
//usleep(500000);
sleep(5);
fprintf(stderr, "debug: step 3\n");
errorCode = sh_download(hshsdk, remote_path, local_temp, SHWRITEPOLICY_OVERWRITE, -1);
fprintf(stderr, "debug: step 4\n");
fprintf(stderr, "error: download: %d:%s\n", errorCode, sh_get_error_message(hshsdk));
if (errorCode == 0) {
sh_free(hshsdk);
return -1;
}
fprintf(stderr, "debug: step 5\n");
sh_delete(hshsdk, remote_path);
fprintf(stderr, "debug: step 6\n");
sh_free(hshsdk);
} else {
fprintf(stderr, "error: %s\n", errorMsg);
return -1;
}
unlink(local_temp);
fflush(stderr);
return 0;
}
int check_rc_updown(rcacct_t *rcinfo)
{
FILE *fp;
struct timeval tv;
char tagname[38];
char tagfull[38];
int retval = -1;
gettimeofday(&tv, NULL);
sprintf(tagname, "%d%06d", (int)tv.tv_sec, (int)tv.tv_usec);
sprintf(tagfull, "/tmp/%d%06d", (int)tv.tv_sec, (int)tv.tv_usec);
#ifdef __DEBUG__
fprintf(stderr, "tagname %s tagfull %s\n", tagname, tagfull);
#endif
if ((fp = fopen(tagfull, "w"))) {
//fprintf(fp, "%s", tagname);
fclose(fp);
/* start! */
if (check_rc(tagname, rcinfo)) {
#ifdef __DEBUG__
fprintf(stderr, "RC %s check failed\n", rcinfo->m_pszServiceName);
#endif
retval = -1;
} else {
#ifdef __DEBUG__
fprintf(stderr, "RC %s check success\n", rcinfo->m_pszServiceName);
#endif
retval = 0;
}
unlink(tagfull);
}
return retval;
}
void usage(void)
{
fprintf(stderr, " usage : rc_updown_test <user> <passwd>\n");
exit(2);
}
void HandleTimeOut(int signum)
{
fprintf(stderr, "TIMEOUT!\n");
exit(1);
return;
}
int main(int argc, char *argv[])
{
rcacct_t rcinfo;
char buf[1024];
int retval;
#ifdef __DEBUG__
fprintf(stderr, "argc %d argv %s\n", argc, argv[1]);
#endif
if (argc != 3) {
usage();
}
memset((char *)&rcinfo, 0, sizeof(rcacct_t));
/*
typedef struct _RCAcct_e
{
char * m_pszServiceName;
char * m_pszUserName;
char * m_pszPassword;
char * m_pszAuthkey;
char * m_pszCertLocation;
struct _RCAcct_e *next;
} rcacct_t;
*/
//rcinfo.m_pszServiceName = argv[2];
rcinfo.m_pszUserName = argv[3];
rcinfo.m_pszPassword = argv[4];
//rcinfo.m_pszAuthkey = argv[5];
//rcinfo.m_pszCertLocation = argv[6];
::signal(SIGALRM, HandleTimeOut);
::alarm(60);
if ((retval = check_rc_updown(&rcinfo)) != 0) {
fprintf(stderr, "RC %s check failed\n", rcinfo.m_pszUserName);
usleep(1);
exit(1);
} else {
fprintf(stderr, "RC %s check success\n", rcinfo.m_pszUserName);
usleep(1);
exit(0);
}
::alarm(0);
exit(1);
}
+267
View File
@@ -0,0 +1,267 @@
#include <sys/time.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <errno.h>
#include "SHSSDK.h"
#include "SHCSDK.h"
#include "log.h"
#include "protocol.h"
using namespace std;
using namespace SDLog;
using namespace SDSocket;
string strLogPath;
string strLogPrefix = "rccheck";
HSHSDK access_sh(rcacct_t *rcinfo, char *errorMsg)
{
char *serviceHost = NULL;
char *authString = NULL;
HSHSDK hshsdk = NULL;
int errorCode;
/* System Hosting Server-side SDK : 서비스 서버 얻기 */
//serviceHost = (char *)sh_get_service_host(userid, userpass, serviceId);
serviceHost = (char *)sh_get_service_host(rcinfo->m_pszUserName, rcinfo->m_pszPassword, rcinfo->m_pszServiceName);
if (!serviceHost) {
errorCode = errno;
sprintf(errorMsg, "서비스 호스트를 받아오지 못했습니다.");
if (hshsdk)
sh_free(hshsdk);
return NULL;
}
fprintf(stderr, "serviceHost : %s\n", serviceHost);
/* System Hosting Server-side SDK : 인증스트링 얻기 */
//authString = (char *)sh_get_auth_string(userid, userpass, serviceId, authKey, authFile, time(NULL) + 100000);
authString = (char *)sh_get_auth_string(rcinfo->m_pszUserName, rcinfo->m_pszPassword, rcinfo->m_pszServiceName, rcinfo->m_pszAuthkey, rcinfo->m_pszCertLocation, time(NULL) + 100000);
if (!authString) {
errorCode = errno;
sprintf(errorMsg, "인증 스트링을 받아오지 못했습니다.");
if (hshsdk)
sh_free(hshsdk);
if (serviceHost)
free(serviceHost);
return NULL;
}
fprintf(stderr, "authString : %s\n", authString);
/*
serviceHost = "222.122.152.33/dav";
authString = (char *)sh_get_auth_string("kpost", "kpost", "kpost", "geniuspizon", "./kpost48.cert", time(NULL) + 150000);
*/
/* System Hosting Client-side SDK : 초기화 */
hshsdk = sh_init(serviceHost, authString, NULL, NULL);
if (!hshsdk) {
errorCode = errno;
sprintf(errorMsg, "System Hosting Client-side SDK 초기화에 실패하였습니다.");
if (hshsdk)
sh_free(hshsdk);
if (serviceHost)
free(serviceHost);
if (authString)
free(authString);
return NULL;
}
#ifndef __TEST__
if (serviceHost)
free(serviceHost);
if (authString)
free(authString);
#endif
return hshsdk;
}
int check_rc(char *filename, rcacct_t *rcinfo)
{
HSHSDK hshsdk = NULL;
char local_path[128], remote_path[128], local_temp[128];
int errorCode;
char errorMsg[1024];
LogToFile LFile(strLogPath, strLogPrefix, 0);
sprintf(local_path, "/tmp/%s", filename);
sprintf(remote_path, "/INCINERATE/%s", filename);
sprintf(local_temp, "/tmp/%s.download", filename);
unlink(local_temp);
hshsdk = access_sh(rcinfo, errorMsg);
if (hshsdk) {
errorCode = sh_upload(hshsdk, local_path, remote_path, SHWRITEPOLICY_OVERWRITE, -1);
#ifdef __DEBUG__
fprintf(stderr, "error: upload: %d:%s\n", errorCode, sh_get_error_message(hshsdk));
fprintf(stderr, "debug: step 1 - %s\n", filename);
#endif
if (errorCode == 0) {
LFile << "!check_rc:: RC " << rcinfo->m_pszServiceName << ": upload failed: " << sh_get_error_message(hshsdk) << EL;
sh_free(hshsdk);
return -1;
}
#ifdef __DEBUG__
fprintf(stderr, "debug: step 2\n");
#endif
usleep(500000);
#ifdef __DEBUG__
fprintf(stderr, "debug: step 3\n");
#endif
errorCode = sh_download(hshsdk, remote_path, local_temp, SHWRITEPOLICY_OVERWRITE, -1);
#ifdef __DEBUG__
fprintf(stderr, "debug: step 4\n");
fprintf(stderr, "error: download: %d:%s\n", errorCode, sh_get_error_message(hshsdk));
#endif
if (errorCode == 0) {
LFile << "!check_rc:: RC " << rcinfo->m_pszServiceName << ": download failed: " << sh_get_error_message(hshsdk) << EL;
sh_free(hshsdk);
return -1;
}
#ifdef __DEBUG__
fprintf(stderr, "debug: step 5\n");
#endif
sh_delete(hshsdk, remote_path);
#ifdef __DEBUG__
fprintf(stderr, "debug: step 6\n");
#endif
sh_free(hshsdk);
} else {
#ifdef __DEBUG__
fprintf(stderr, "error: %s\n", errorMsg);
#endif
LFile << "!check_rc:: RC " << rcinfo->m_pszServiceName << ": access failed: " << errorMsg << ": " << sh_get_error_message(hshsdk) << EL;
return -1;
}
unlink(local_temp);
fflush(stderr);
return 0;
}
int check_rc_updown(rcacct_t *rcinfo)
{
FILE *fp;
struct timeval tv;
char tagname[38];
char tagfull[38];
int retval = -1;
//string strLogPath = DEFAULT_LOGFILE_PATH;
//string strLogPrefix = DEFAULT_LOGFILE_PREFIX;
LogToFile LFile(strLogPath, strLogPrefix, 0);
gettimeofday(&tv, NULL);
sprintf(tagname, "%d%06d", (int)tv.tv_sec, (int)tv.tv_usec);
sprintf(tagfull, "/tmp/%d%06d", (int)tv.tv_sec, (int)tv.tv_usec);
#ifdef __DEBUG__
fprintf(stderr, "tagname %s tagfull %s\n", tagname, tagfull);
#endif
if ((fp = fopen(tagfull, "w"))) {
//fprintf(fp, "%s", tagname);
fclose(fp);
/* start! */
if (check_rc(tagname, rcinfo)) {
LFile << "!RC " << rcinfo->m_pszServiceName << " check failed" << EL;
#ifdef __DEBUG__
fprintf(stderr, "RC %s check failed\n", rcinfo->m_pszServiceName);
#endif
retval = -1;
} else {
//LFile << "!RC " << rcinfo->m_pszServiceName << " check success" << EL;
#ifdef __DEBUG__
fprintf(stderr, "RC %s check success\n", rcinfo->m_pszServiceName);
#endif
retval = 0;
}
unlink(tagfull);
}
return retval;
}
void usage(void)
{
fprintf(stderr, "rccheck - check rc by ics sdk\n");
fprintf(stderr, " usage : rccheck <log dir> <volume> <user> <passwd> <authkey> <cert location>\n");
exit(2);
}
void HandleTimeOut(int signum)
{
fprintf(stderr, "TIMEOUT!\n");
exit(1);
return;
}
int main(int argc, char *argv[])
{
rcacct_t rcinfo;
char buf[1024];
int retval;
#ifdef __DEBUG__
fprintf(stderr, "argc %d argv %s\n", argc, argv[1]);
#endif
if (argc != 7) {
usage();
}
strLogPath = argv[1];
sprintf(buf, "mkdir -p %s\n", argv[1]);
system(buf);
memset((char *)&rcinfo, 0, sizeof(rcacct_t));
/*
typedef struct _RCAcct_e
{
char * m_pszServiceName;
char * m_pszUserName;
char * m_pszPassword;
char * m_pszAuthkey;
char * m_pszCertLocation;
struct _RCAcct_e *next;
} rcacct_t;
*/
rcinfo.m_pszServiceName = argv[2];
rcinfo.m_pszUserName = argv[3];
rcinfo.m_pszPassword = argv[4];
rcinfo.m_pszAuthkey = argv[5];
rcinfo.m_pszCertLocation = argv[6];
::signal(SIGALRM, HandleTimeOut);
::alarm(60);
if ((retval = check_rc_updown(&rcinfo)) != 0) {
#ifdef __DEBUG__
fprintf(stderr, "RC %s check failed\n", rcinfo.m_pszServiceName);
#endif
//sleep(10);
usleep(1);
exit(1);
} else {
#ifdef __DEBUG__
fprintf(stderr, "RC %s check success\n", rcinfo.m_pszServiceName);
#endif
//sleep(1);
usleep(1);
exit(0);
}
::alarm(0);
exit(1);
}
+840
View File
@@ -0,0 +1,840 @@
1 2 0UDISK_RTS001 222.122.136.11 80 1209384412 1209460535 rts0001.ktsh.co.kr 1937068609536 1700392333312 0 0 0 0 0 5 7 985 7 4027
1 2 0UDISK_RTS002 222.122.136.12 80 1209384412 1209460543 rts0002.ktsh.co.kr 1937068609536 1548431892480 0 0 0 0 0 6 4 445 2 229
1 2 0UDISK_RTS003 222.122.136.13 80 1209384412 1209460533 rts0003.ktsh.co.kr 1937068609536 1706715541504 0 0 0 0 0 5 4 495 3 316
1 3 0UDISK_RCTS01 222.122.136.25 13104 1209384412 - - - - - - - - - - - - - -
1 3 0UDISK_RCTS02 222.122.136.28 13104 1209384412 - - - - - - - - - - - - - -
1 4 0UDISK_DB01 222.122.136.80 5432 1209384412 - - - - - - - - - - - - - -
1 4 0UDISK_DB02 222.122.136.81 5432 1209384412 - - - - - - - - - - - - - -
1 4 0UDISK_PGLB01 222.122.136.82 6543 1209384412 - - - - - - - - - - - - - -
1 0 SORIBADA_RC rc002-test 80 1209384412 - - - - - - - - - - - - - -
1 1 SORIBADA_STAT soribada 80 1209384412 - - - - - - - - - - - - - -
1 2 SORIBADA_RTS1001 222.122.153.11 80 1209384412 1209460540 rts1001.ktsh.co.kr 1937068609536 246766616576 0 0 0 0 2 3 763 59554 1242 1857813
1 2 SORIBADA_RTS1002 222.122.153.12 80 1209384412 1209460533 rts1002.ktsh.co.kr 1937068609536 247336060928 0 0 0 0 3 4 539 46451 1205 1825655
1 2 SORIBADA_RTS1003 222.122.153.13 80 1209384412 1209460537 rts1003.ktsh.co.kr 1937068609536 247263238144 0 0 0 0 1 2 214 25335 296 448269
1 2 SORIBADA_RTS1004 222.122.153.14 80 1209384412 1209460534 rts1004.ktsh.co.kr 1937068609536 246767376384 0 0 0 3 9 11 1191 89524 3371 5092016
1 2 SORIBADA_RTS1005 222.122.153.15 80 1209384412 1209460531 rts1005.ktsh.co.kr 1937068609536 246960726016 0 0 0 0 3 5 455 41636 673 1013146
1 2 SORIBADA_RTS1006 222.122.153.16 80 1209384412 1209460537 rts1006.ktsh.co.kr 1937068609536 245934520320 0 0 0 0 8 18 1318 1196578 1599 1226640
1 2 SORIBADA_RTS1007 222.122.153.17 80 1209384412 1209460535 rts1007.ktsh.co.kr 1937068609536 245877719040 0 0 0 0 1 2 519 45383 755 1132701
1 2 SORIBADA_RTS1008 222.122.153.18 80 1209384412 1209460540 rts1008.ktsh.co.kr 1937068609536 246670788608 0 0 0 1 5 9 894 70656 1903 2840039
1 2 SORIBADA_RTS1009 222.122.153.19 80 1209384412 1209460533 rts1009.ktsh.co.kr 1937068609536 247060944896 0 0 0 0 4 6 789 62837 1562 2352355
1 2 SORIBADA_RTS1010 222.122.153.20 80 1209384412 1209460536 rts1010.ktsh.co.kr 1937068609536 246865115136 0 0 0 4 3 5 591 50590 5105 7635869
1 2 SORIBADA_RTS1011 222.122.153.21 80 1209384412 1209460537 rts1011.ktsh.co.kr 1937068609536 246338508800 0 0 0 3 5 6 3936 263381 9008 13664310
1 2 SORIBADA_RTS1012 222.122.153.22 80 1209384412 1209460537 rts1012.ktsh.co.kr 1937068609536 247279601664 0 0 0 14 4 7 4722 316525 11641 17661247
1 2 SORIBADA_RTS1013 222.122.153.23 80 1209384412 1209460534 rts1013.ktsh.co.kr 1937068609536 247281108992 0 0 0 0 2 3 622 52480 1213 1823932
1 2 SORIBADA_RTS1014 222.122.153.24 80 1209384412 1209460536 rts1014.ktsh.co.kr 1937068609536 247324577792 0 0 0 0 1 2 43 14328 60 88523
1 2 SORIBADA_RTS1015 222.122.153.25 80 1209384412 1209460537 rts1015.ktsh.co.kr 1937068609536 247231754240 0 0 0 0 1 2 37 13898 147 220475
1 2 SORIBADA_RTS1016 222.122.153.26 80 1209384412 1209460534 rts1016.ktsh.co.kr 1937068609536 246201823232 0 0 0 0 5 6 742 59875 1425 2045354
1 2 SORIBADA_RTS1017 222.122.153.27 80 1209384412 1209460539 rts1017.ktsh.co.kr 1937068609536 247269117952 0 0 0 0 1 2 180 22100 337 502002
1 2 SORIBADA_RTS1018 222.122.153.28 80 1209384412 1209460537 rts1018.ktsh.co.kr 1937068609536 246861750272 0 0 0 3 4 5 922 164978 1509 2186911
1 2 SORIBADA_RTS1019 222.122.153.29 80 1209384412 1209460537 rts1019.ktsh.co.kr 1937068609536 247313952768 0 0 0 0 1 2 105 18353 283 427991
1 2 SORIBADA_RTS1020 222.122.153.30 80 1209384412 1209460540 rts1020.ktsh.co.kr 1937068609536 246226964480 0 0 0 3 8 9 1056 80578 2698 4082333
1 2 SORIBADA_RTS1021 222.122.153.31 80 1209384412 1209460531 rts1021.ktsh.co.kr 1937068609536 247284551680 0 0 0 11 5 6 2769 900180 8723 12509778
1 2 SORIBADA_RTS1022 222.122.153.32 80 1209384412 1209460541 rts1022.ktsh.co.kr 1937068609536 246943285248 0 0 0 0 1 3 336 33589 632 950786
1 2 SORIBADA_RTS1023 222.122.153.33 80 1209384412 1209460534 rts1023.ktsh.co.kr 1937068609536 245242861568 0 0 0 11 0 1 2972 206445 4446 6732286
1 2 SORIBADA_RTS1024 222.122.153.34 80 1209384412 1209460535 rts1024.ktsh.co.kr 1937068609536 246737932288 0 0 0 0 3 4 1545 119476 2902 4390343
1 2 SORIBADA_RTS1025 222.122.153.35 80 1209384412 1209460538 rts1025.ktsh.co.kr 1937068609536 246671298560 0 0 0 4 5 6 746 59825 1597 2381572
1 2 SORIBADA_RTS1026 222.122.153.36 80 1209384412 1209460539 rts1026.ktsh.co.kr 1937068609536 247105570816 0 0 9 23 10 12 5721 6362423 8665 5032781
1 2 SORIBADA_RTS1027 222.122.153.37 80 1209384412 1209460531 rts1027.ktsh.co.kr 1937068609536 246964682752 0 0 0 1 5 6 522 45188 821 1224051
1 2 SORIBADA_RTS1028 222.122.153.38 80 1209384412 1209460534 rts1028.ktsh.co.kr 1937068609536 247117864960 0 0 0 1 5 6 1174 87529 2379 3593099
1 2 SORIBADA_RTS1029 222.122.153.39 80 1209384412 1209460535 rts1029.ktsh.co.kr 1937068609536 246837616640 0 0 0 0 3 4 338 33166 645 964943
1 2 SORIBADA_RTS1030 222.122.153.40 80 1209384412 1209460539 rts1030.ktsh.co.kr 1937068609536 246691350528 0 0 0 0 3 4 357 34417 838 1270021
1 2 SORIBADA_RTS1031 222.122.153.41 80 1209384412 1209460532 rts1031.ktsh.co.kr 1937068609536 246949371904 0 0 0 0 1 2 541 802756 544 38600
1 2 SORIBADA_RTS1032 222.122.153.42 80 1209384412 1209460533 rts1032.ktsh.co.kr 1937068609536 247274477568 0 0 0 4 2 3 1788 466932 2555 3520564
1 2 SORIBADA_RTS1033 222.122.153.43 80 1209384412 1209460537 rts1033.ktsh.co.kr 1937068609536 246383349760 0 0 0 0 3 4 368 35305 653 966595
1 2 SORIBADA_RTS1034 222.122.153.44 80 1209384412 1209460539 rts1034.ktsh.co.kr 1937068609536 247108050944 0 0 0 0 3 4 575 48221 1112 1685690
1 2 SORIBADA_RTS1035 222.122.153.45 80 1209384412 1209460533 rts1035.ktsh.co.kr 1937068609536 247142481920 0 0 0 3 5 6 411 38121 1507 2281287
1 2 SORIBADA_RTS1036 222.122.153.46 80 1209384412 1209460540 rts1036.ktsh.co.kr 1937068609536 246210148352 0 0 0 4 7 8 831 64377 1870 2799767
1 2 SORIBADA_RTS1037 222.122.153.47 80 1209384412 1209460533 rts1037.ktsh.co.kr 1937068609536 246742226944 0 0 0 1 3 4 561 47637 1096 1648904
1 2 SORIBADA_RTS1038 222.122.153.48 80 1209384412 1209460536 rts1038.ktsh.co.kr 1937068609536 246934327296 0 0 0 0 1 2 40 14672 40 57652
1 2 SORIBADA_RTS1039 222.122.153.49 80 1209384412 1209460540 rts1039.ktsh.co.kr 1937068609536 246552891392 0 0 0 1 4 5 767 62141 1178 1785567
1 2 SORIBADA_RTS1040 222.122.153.50 80 1209384412 1209460539 rts1040.ktsh.co.kr 1937068609536 247254169600 0 0 0 0 4 5 348 33857 657 943505
1 2 SORIBADA_RTS1041 222.122.153.51 80 1209384412 1209460534 rts1041.ktsh.co.kr 1937068609536 246729394176 0 0 0 0 1 2 197 24342 600 902531
1 2 SORIBADA_RTS1042 222.122.153.52 80 1209384412 1209460533 rts1042.ktsh.co.kr 1937068609536 246719492096 0 0 0 0 4 5 469 441526 640 571002
1 2 SORIBADA_RTS1043 222.122.153.53 80 1209384412 1209460533 rts1043.ktsh.co.kr 1937068609536 246821709824 0 0 0 0 2 3 724 58378 1473 2235309
1 2 SORIBADA_RTS1044 222.122.153.54 80 1209384412 1209460539 rts1044.ktsh.co.kr 1937068609536 246421354496 0 0 0 0 4 5 150 21336 229 339584
1 2 SORIBADA_RTS1045 222.122.153.55 80 1209384412 1209460535 rts1045.ktsh.co.kr 1937068609536 246396393472 0 0 0 0 2 3 445 40192 1128 1681258
1 2 SORIBADA_RTS1046 222.122.153.56 80 1209384412 1209460538 rts1046.ktsh.co.kr 1937068609536 246664640512 0 0 0 0 3 4 97 17631 263 373561
1 2 SORIBADA_RTS1047 222.122.153.57 80 1209384412 1209460539 rts1047.ktsh.co.kr 1937068609536 246196246528 0 0 0 1 6 7 366 35512 3824 5789839
1 2 SORIBADA_RTS1048 222.122.153.58 80 1209384412 1209460532 rts1048.ktsh.co.kr 1937068609536 247299905536 0 0 0 4 4 5 4939 329204 12610 17876215
1 2 SORIBADA_RTS1049 222.122.153.59 80 1209384412 1209460538 rts1049.ktsh.co.kr 1937068609536 247161776128 0 0 0 6 5 6 2810 228502 6597 9970494
1 2 SORIBADA_RTS1050 222.122.153.60 80 1209384412 1209460535 rts1050.ktsh.co.kr 1937068609536 247108923392 0 0 0 0 5 6 371 35706 1226 1857810
1 2 SORIBADA_RTS1051 222.122.153.61 80 1209384412 1209460533 rts1051.ktsh.co.kr 1937068609536 246706579456 0 0 0 0 3 4 589 50492 944 1430146
1 2 SORIBADA_RTS1052 222.122.153.62 80 1209384412 1209460531 rts1052.ktsh.co.kr 1937068609536 246515929088 0 0 0 20 8 10 4760 378793 8019 11538805
1 2 SORIBADA_RTS1053 222.122.153.63 80 1209384412 1209460531 rts1053.ktsh.co.kr 1937068609536 246156218368 0 0 0 63 7 8 3298 224907 8463 12784637
1 2 SORIBADA_RTS1054 222.122.153.64 80 1209384412 1209460541 rts1054.ktsh.co.kr 1937068609536 246926172160 0 0 0 0 1 2 33 13832 32 39583
1 2 SORIBADA_RTS1055 222.122.153.65 80 1209384412 1209460532 rts1055.ktsh.co.kr 1937068609536 244796125184 0 0 0 2 4 5 1564 111685 2554 3829029
1 2 SORIBADA_RTS1056 222.122.153.66 80 1209384412 1209460538 rts1056.ktsh.co.kr 1937068609536 247370821632 0 0 0 8 6 7 2370 283869 4138 6153122
1 2 SORIBADA_RTS1057 222.122.153.67 80 1209384412 1209460531 rts1057.ktsh.co.kr 1937068609536 247304980480 0 0 0 1 4 5 539 46182 1402 2096008
1 2 SORIBADA_RTS1058 222.122.153.68 80 1209384412 1209460533 rts1058.ktsh.co.kr 1937068609536 246802223104 0 0 0 0 4 5 201 24723 356 525172
1 2 SORIBADA_RTS1059 222.122.153.69 80 1209384412 1209460535 rts1059.ktsh.co.kr 1937068609536 247003525120 0 0 0 0 3 4 345 33832 1052 1591913
1 2 SORIBADA_RTS1060 222.122.153.70 80 1209384412 1209460539 rts1060.ktsh.co.kr 1937068609536 246679574528 0 0 0 5 3 4 4227 283330 6535 9673747
1 2 SORIBADA_RTS1061 222.122.153.71 80 1209384412 1209460535 rts1061.ktsh.co.kr 1937068609536 247292971008 0 0 0 4 5 6 3220 216824 5415 7984156
1 2 SORIBADA_RTS1062 222.122.153.72 80 1209384412 1209460540 rts1062.ktsh.co.kr 1937068609536 247099115520 0 0 0 5 5 6 1978 139520 4006 5646104
1 2 SORIBADA_RTS1063 222.122.153.73 80 1209384412 1209460539 rts1063.ktsh.co.kr 1937068609536 246922086400 0 0 0 0 9 10 735 58981 1524 2298911
1 2 SORIBADA_RTS1064 222.122.153.74 80 1209384412 1209460532 rts1064.ktsh.co.kr 1937068609536 246531889152 0 0 0 5 5 6 1408 102221 2257 3425192
1 2 SORIBADA_RTS1065 222.122.153.75 80 1209384412 1209460538 rts1065.ktsh.co.kr 1937068609536 246099916800 0 0 0 0 3 4 485 43157 735 1113584
1 2 SORIBADA_RTS1066 222.122.153.76 80 1209384412 1209460542 rts1066.ktsh.co.kr 1937068609536 246199152640 0 0 0 0 5 6 644 53093 1055 1597095
1 2 SORIBADA_RTS1067 222.122.153.77 80 1209384412 1209460540 rts1067.ktsh.co.kr 1937068609536 246423093248 0 0 0 0 3 4 577 48723 1633 2472462
1 2 SORIBADA_RTS1068 222.122.153.78 80 1209384412 1209460539 rts1068.ktsh.co.kr 1937068609536 246640259072 0 0 0 4 1 2 256 27873 1638 2484030
1 2 SORIBADA_RTS1069 222.122.153.79 80 1209384412 1209460535 rts1069.ktsh.co.kr 1937068609536 246977071104 0 0 0 0 5 6 1415 101928 2905 4383162
1 2 SORIBADA_RTS1070 222.122.153.80 80 1209384412 1209460538 rts1070.ktsh.co.kr 1937068609536 247335725056 0 0 0 0 4 5 1100 1630790 1109 109924
1 2 SORIBADA_RTS1071 222.122.153.81 80 1209384412 1209460540 rts1071.ktsh.co.kr 1937068609536 246495782912 0 0 0 6 7 8 1025 78499 1903 2853435
1 2 SORIBADA_RTS1072 222.122.153.82 80 1209384412 1209460533 rts1072.ktsh.co.kr 1937068609536 247299663872 0 0 0 9 3 4 368 35449 1345 2034662
1 2 SORIBADA_RTS1073 222.122.153.83 80 1209384412 1209460541 rts1073.ktsh.co.kr 1937068609536 246922686464 0 0 0 10 5 6 1501 108595 3149 4767771
1 2 SORIBADA_RTS1074 222.122.153.84 80 1209384412 1209460541 rts1074.ktsh.co.kr 1937068609536 246979069952 0 0 0 2 4 5 1972 138387 3177 4795924
1 2 SORIBADA_RTS1075 222.122.153.85 80 1209384412 1209460539 rts1075.ktsh.co.kr 1937068609536 246176192512 0 0 0 12 3 4 1502 109490 3670 5566222
1 2 SORIBADA_RTS1076 222.122.153.86 80 1209384412 1209460538 rts1076.ktsh.co.kr 1937068609536 246648956928 0 0 0 5 6 7 1003 76416 1849 2685789
1 2 SORIBADA_RTS1077 222.122.153.87 80 1209384412 1209460541 rts1077.ktsh.co.kr 1937068609536 246892521472 0 0 0 2 5 6 502 44089 1160 1758735
1 2 SORIBADA_RTS1078 222.122.153.88 80 1209384412 1209460532 rts1078.ktsh.co.kr 1937068609536 247148285952 0 0 0 2 5 6 1171 87385 3169 4777694
1 2 SORIBADA_RTS1079 222.122.153.89 80 1209384412 1209460541 rts1079.ktsh.co.kr 1937068609536 246818381824 0 0 0 3 5 6 1123 83674 2279 3449135
1 2 SORIBADA_RTS1080 222.122.153.90 80 1209384412 1209460531 rts1080.ktsh.co.kr 1937068609536 246758868992 0 0 0 0 2 3 608 50895 1186 1797121
1 2 SORIBADA_RTS1081 222.122.153.91 80 1209384412 1209460534 rts1081.ktsh.co.kr 1937068609536 246883041280 0 0 0 0 2 3 329 69463 464 664299
1 2 SORIBADA_RTS1082 222.122.153.92 80 1209384412 1209460532 rts1082.ktsh.co.kr 1937068609536 246676568064 0 0 0 1 6 7 2368 162673 3861 5847999
1 2 SORIBADA_RTS1083 222.122.153.93 80 1209384412 1209460540 rts1083.ktsh.co.kr 1937068609536 246758348800 0 0 0 1 3 4 604 50244 927 1403905
1 2 SORIBADA_RTS1084 222.122.153.94 80 1209384412 1209460540 rts1084.ktsh.co.kr 1937068609536 247357267968 0 0 0 11 8 9 3906 347633 9258 13959869
1 2 SORIBADA_RTS1085 222.122.153.95 80 1209384412 1209460541 rts1085.ktsh.co.kr 1937068609536 246113695744 0 0 0 1 3 4 925 71280 1374 2083505
1 2 SORIBADA_RTS1086 222.122.153.96 80 1209384412 1209460533 rts1086.ktsh.co.kr 1937068609536 247316480000 0 0 0 0 4 5 950 72304 1492 2263360
1 2 SORIBADA_RTS1087 222.122.153.97 80 1209384412 1209460539 rts1087.ktsh.co.kr 1937068609536 246950408192 0 0 0 0 3 4 302 126373 488 637053
1 2 SORIBADA_RTS1088 222.122.153.98 80 1209384412 1209460537 rts1088.ktsh.co.kr 1937068609536 246143518720 0 0 0 0 3 4 474 42234 922 1354875
1 2 SORIBADA_RTS1089 222.122.153.99 80 1209384412 1209460540 rts1089.ktsh.co.kr 1937068609536 247059036160 0 0 0 3 7 8 1272 93387 3178 4795489
1 2 SORIBADA_RTS1090 222.122.153.100 80 1209384412 1209460534 rts1090.ktsh.co.kr 1937068609536 401947224064 1 0 0 0 1 2 21 13061 10 11319
1 2 SORIBADA_RTS1091 222.122.153.101 80 1209384412 1209460538 rts1091.ktsh.co.kr 1937068609536 247305682944 0 0 0 0 0 1 13 12324 1 220
1 2 SORIBADA_RTS1092 222.122.153.102 80 1209384412 1209460534 rts1092.ktsh.co.kr 1937068609536 246631030784 0 0 0 3 3 4 3349 227895 5006 7590907
1 2 SORIBADA_RTS1093 222.122.153.103 80 1209384412 1209460541 rts1093.ktsh.co.kr 1937068609536 247338522624 0 0 0 1 2 3 294 30921 2256 3413461
1 2 SORIBADA_RTS1094 222.122.153.104 80 1209384412 1209460540 rts1094.ktsh.co.kr 1937068609536 246483466240 0 0 0 0 3 4 188 23285 331 489621
1 2 SORIBADA_RTS1095 222.122.153.105 80 1209384412 1209460536 rts1095.ktsh.co.kr 1937068609536 247348801536 0 0 0 0 5 6 217 25600 448 672124
1 2 SORIBADA_RTS1096 222.122.153.106 80 1209384412 1209460540 rts1096.ktsh.co.kr 1937068609536 246526748672 0 0 0 0 4 5 564 48364 905 1366624
1 2 SORIBADA_RTS1097 222.122.153.107 80 1209384412 1209460540 rts1097.ktsh.co.kr 1937068609536 247264292864 0 0 0 0 3 4 790 62883 1189 1799555
1 2 SORIBADA_RTS1098 222.122.153.108 80 1209384412 1209460538 rts1098.ktsh.co.kr 1937068609536 246811222016 0 0 0 0 2 3 579 48668 1139 1727066
1 2 SORIBADA_RTS1099 222.122.153.109 80 1209384412 1209460541 rts1099.ktsh.co.kr 1937068609536 247201839104 0 0 0 1 3 4 837 65453 1615 2435179
1 2 SORIBADA_RTS1100 222.122.153.110 80 1209384412 1209460531 rts1100.ktsh.co.kr 1937068609536 247275704320 0 0 0 0 1 3 60 79680 47 3277
1 2 SORIBADA_RTS1101 222.122.153.111 80 1209384412 1209460534 rts1101.ktsh.co.kr 1937068609536 245864427520 0 0 0 10 5 6 760 60167 1861 2821797
1 2 SORIBADA_RTS1102 222.122.153.112 80 1209384412 1209460532 rts1102.ktsh.co.kr 1937068609536 246271045632 0 0 0 0 3 4 617 50858 1178 1783354
1 2 SORIBADA_RTS1103 222.122.153.113 80 1209384412 1209460540 rts1103.ktsh.co.kr 1937068609536 247360786432 0 0 0 3 5 7 612 50535 1137 1714128
1 2 SORIBADA_RTS1104 222.122.153.114 80 1209384412 1209460535 rts1104.ktsh.co.kr 1937068609536 246374322176 0 0 0 9 3 4 4070 4907472 4635 2057893
1 2 SORIBADA_RTS1105 222.122.153.115 80 1209384412 1209460534 rts1105.ktsh.co.kr 1937068609536 247357163520 0 0 0 0 0 1 19 12830 7 534
1 2 SORIBADA_RTS1106 222.122.153.116 80 1209384412 1209460538 rts1106.ktsh.co.kr 1937068609536 246927001600 0 0 0 30 2 3 2258 155623 3740 5670455
1 2 SORIBADA_RTS1107 222.122.153.117 80 1209384412 1209460533 rts1107.ktsh.co.kr 1937068609536 246562654208 0 0 0 3 5 6 2171 150527 5200 7855017
1 2 SORIBADA_RTS1108 222.122.153.118 80 1209384412 1209460532 rts1108.ktsh.co.kr 1937068609536 246900996096 0 0 0 2 4 5 464 41429 1595 2410591
1 2 SORIBADA_RTS1109 222.122.153.119 80 1209384412 1209460539 rts1109.ktsh.co.kr 1937068609536 247125321728 0 0 0 2 6 7 1960 136667 3976 5784044
1 2 SORIBADA_RTS1111 222.122.153.121 80 1209384412 1209460536 rts1111.ktsh.co.kr 1937068609536 246133032960 0 0 0 0 3 4 368 35508 1035 1565443
1 2 SORIBADA_RTS1112 222.122.153.122 80 1209384412 1209460541 rts1112.ktsh.co.kr 1937068609536 247260508160 0 0 0 3 6 7 293 31448 632 952147
1 2 SORIBADA_RTS1113 222.122.153.123 80 1209384412 1209460541 rts1113.ktsh.co.kr 1937068609536 201152468992 0 0 0 1 5 6 1949 136974 3912 5936643
1 2 SORIBADA_RTS1114 222.122.153.124 80 1209384412 1209460533 rts1114.ktsh.co.kr 1937068609536 247227592704 0 0 0 3 3 4 616 51442 1142 1729159
1 2 SORIBADA_RTS1115 222.122.165.5 80 1209384412 1209460533 rts1115.ktsh.co.kr 1937068609536 247220748288 0 0 0 0 4 5 958 1095195 1181 767610
1 2 SORIBADA_RTS1116 222.122.165.6 80 1209384412 1209460537 rts1116.ktsh.co.kr 1937068609536 246442950656 0 0 0 0 3 4 416 38219 814 985960
1 2 SORIBADA_RTS1117 222.122.165.7 80 1209384412 1209460540 rts1117.ktsh.co.kr 1937068609536 244294998016 0 0 0 0 0 1 14 12703 1 220
1 2 SORIBADA_RTS1118 222.122.165.8 80 1209384412 1209460536 rts1118.ktsh.co.kr 1937068609536 247368015872 0 0 0 0 4 5 125 19556 212 306762
1 2 SORIBADA_RTS1119 222.122.165.9 80 1209384412 1209460536 rts1119.ktsh.co.kr 1937068609536 246803558400 0 0 0 0 1 2 37 13863 107 160127
1 2 SORIBADA_RTS1120 222.122.165.10 80 1209384412 1209460541 rts1120.ktsh.co.kr 1937068609536 247162875904 0 0 0 26 7 8 7830 6617275 9780 8714368
1 2 SORIBADA_RTS1121 222.122.165.11 80 1209384412 1209460539 rts1121.ktsh.co.kr 1937068609536 246750519296 0 0 0 30 10 11 3726 252444 8568 12773622
1 2 SORIBADA_RTS1122 222.122.165.12 80 1209384412 1209460536 rts1122.ktsh.co.kr 1937068609536 247209062400 0 0 0 0 2 3 763 62761 1154 1748896
1 2 SORIBADA_RTS1123 222.122.165.13 80 1209384412 1209460533 rts1123.ktsh.co.kr 1937068609536 247281491968 0 0 0 1 5 7 605 50488 1066 1601262
1 2 SORIBADA_RTS1124 222.122.165.14 80 1209384412 1209460539 rts1124.ktsh.co.kr 1937492424704 245883324416 0 0 0 0 2 3 57 15045 243 367051
1 2 SORIBADA_RTS1125 222.122.165.15 80 1209384412 1209460539 rts1125.ktsh.co.kr 1937068609536 247256938496 0 0 0 2 5 6 1921 134551 6525 9904084
1 3 SORIBADA_RCTS03 222.122.153.8 13104 1209384412 - - - - - - - - - - - - - -
1 3 SORIBADA_RCTS04 222.122.153.9 13104 1209384412 - - - - - - - - - - - - - -
1 4 SORIBADA_DB01 222.122.153.5 5432 1209384412 - - - - - - - - - - - - - -
1 4 SORIBADA_DB02 222.122.153.6 5432 1209384412 - - - - - - - - - - - - - -
1 4 SORIBADA_PGLB01 222.122.153.7 6543 1209384412 - - - - - - - - - - - - - -
1 0 RC003_RC rc003-test 80 1209384412 - - - - - - - - - - - - - -
1 1 RC003_STAT rc003 80 1209384412 - - - - - - - - - - - - - -
1 2 RC003_RTS2001 222.122.162.11 80 1209384412 1209460540 rts2001.ktsh.co.kr 1937068609536 462142240768 0 0 0 0 5 7 339 45543 606 905875
1 2 RC003_RTS2002 222.122.162.12 80 1209384412 1209460539 rts2002.ktsh.co.kr 1937068609536 461346258944 0 0 0 0 5 373 602 67177 1814 2687605
1 2 RC003_RTS2003 222.122.162.13 80 1209384412 1209460536 rts2003.ktsh.co.kr 1937068609536 462418724864 0 0 0 3 6 30 3679 262353 6295 9505293
1 2 RC003_RTS2004 222.122.162.14 80 1209384412 1209460536 rts2004.ktsh.co.kr 1937068609536 461396660224 0 0 2 12 6 20 1732 135134 5912 8945151
1 2 RC003_RTS2005 222.122.162.15 80 1209384412 1209460541 rts2005.ktsh.co.kr 5794547349504 2642509221888 1 0 0 0 13 14 2185 157095 3657 5199965
1 2 RC003_RTS2006 222.122.162.16 80 1209384412 1209460541 rts2006.ktsh.co.kr 1937068609536 462341638144 0 0 0 6 6 7 3028 216960 5499 8330205
1 2 RC003_RTS2007 222.122.162.17 80 1209384412 1209460539 rts2007.ktsh.co.kr 1937068609536 462607378432 0 0 0 2 3 41 410 51927 843 1244643
1 2 RC003_RTS2008 222.122.162.18 80 1209384412 1209460537 rts2008.ktsh.co.kr 1937068609536 460984680448 0 0 0 0 2 50 99 31531 114 147677
1 2 RC003_RTS2009 222.122.162.19 80 1209384412 1209460538 rts2009.ktsh.co.kr 1937068609536 462197030912 0 0 0 0 7 9 579 60656 1290 1913797
1 2 RC003_RTS2010 222.122.162.20 80 1209384412 1209460531 rts2010.ktsh.co.kr 1937068609536 462207612928 0 0 0 0 3 4 222 37668 326 490364
1 2 RC003_RTS2011 222.122.162.21 80 1209384412 1209460540 rts2011.ktsh.co.kr 1937068609536 462521556992 0 0 0 1 5 8 1324 108742 2700 4086185
1 2 RC003_RTS2012 222.122.162.22 80 1209384412 1209460532 rts2012.ktsh.co.kr 1937068609536 462469494784 0 0 0 6 9 12 917 82802 2011 3046574
1 2 RC003_RTS2013 222.122.162.23 80 1209384412 1209460532 rts2013.ktsh.co.kr 1937068609536 461748977664 0 0 0 0 3 4 801 76407 1594 2413475
1 2 RC003_RTS2014 222.122.162.24 80 1209384412 1209460535 rts2014.ktsh.co.kr 1937068609536 462134822912 0 0 0 0 4 5 800 75135 1550 2314166
1 2 RC003_RTS2015 222.122.162.25 80 1209384412 1209460532 rts2015.ktsh.co.kr 1937068609536 462506274816 0 0 0 1 2 3 2627 2956171 2980 1748093
1 2 RC003_RTS2016 222.122.162.26 80 1209384412 1209460532 rts2016.ktsh.co.kr 1937068609536 462503237632 0 0 0 0 5 7 514 55976 1003 1499426
1 2 RC003_RTS2017 222.122.162.27 80 1209384412 1209460535 rts2017.ktsh.co.kr 1937068609536 462596591616 0 0 0 8 8 11 2336 175093 4202 6370621
1 2 RC003_RTS2018 222.122.162.28 80 1209384412 1209460532 rts2018.ktsh.co.kr 1937068609536 462581166080 0 0 0 1 6 7 597 61513 1309 1964689
1 2 RC003_RTS2019 222.122.162.29 80 1209384412 1209460541 rts2019.ktsh.co.kr 1937068609536 462499196928 0 0 0 0 4 5 627 64206 1088 1607756
1 2 RC003_RTS2020 222.122.162.30 80 1209384412 1209460535 rts2020.ktsh.co.kr 1937068609536 461246105600 0 0 0 1 1 3 299 42616 416 627870
1 2 RC003_RTS2021 222.122.162.31 80 1209384412 1209460534 rts2021.ktsh.co.kr 1937068609536 462676086784 0 0 0 1 5 8 449 51873 875 1321362
1 2 RC003_RTS2022 222.122.162.32 80 1209384412 1209460541 rts2022.ktsh.co.kr 1937068609536 462654294016 0 0 0 8 3 4 944 84408 1579 2392724
1 2 RC003_RTS2023 222.122.162.33 80 1209384412 1209460540 rts2023.ktsh.co.kr 1937068609536 460154558464 0 0 0 0 4 6 456 52874 817 1233299
1 2 RC003_RTS2024 222.122.162.34 80 1209384412 1209460534 rts2024.ktsh.co.kr 1937068609536 461396563968 0 0 0 2 4 5 1715 132746 3720 5638309
1 2 RC003_RTS2025 222.122.162.35 80 1209384412 1209460533 rts2025.ktsh.co.kr 1937068609536 462349883392 0 0 0 2 7 8 565 59843 1091 1648123
1 2 RC003_RTS2026 222.122.162.36 80 1209384412 1209460532 rts2026.ktsh.co.kr 1937068609536 462589915136 0 0 0 1 8 9 649 65323 1359 2053838
1 2 RC003_RTS2027 222.122.162.37 80 1209384412 1209460538 rts2027.ktsh.co.kr 1937068609536 462623625216 0 0 0 1 3 4 230 38347 535 806589
1 2 RC003_RTS2028 222.122.162.38 80 1209384412 1209460535 rts2028.ktsh.co.kr 1937068609536 461752096768 0 0 0 0 0 3 27 25417 3 343
1 2 RC003_RTS2029 222.122.162.39 80 1209384412 1209460536 rts2029.ktsh.co.kr 1937068609536 461872171008 0 0 0 0 3 6 499 55930 1009 1481897
1 2 RC003_RTS2030 222.122.162.40 80 1209384412 1209460536 rts2030.ktsh.co.kr 1937068609536 462367551488 0 0 1 2 3 6 334 44475 956 1429632
1 2 RC003_RTS2031 222.122.162.41 80 1209384412 1209460541 rts2031.ktsh.co.kr 1937068609536 462258663424 0 0 0 3 9 12 638 66621 1292 1919459
1 2 RC003_RTS2032 222.122.162.42 80 1209384412 1209460540 rts2032.ktsh.co.kr 1937068609536 460395073536 0 0 0 0 7 10 1376 111823 2711 4064887
1 2 RC003_RTS2033 222.122.162.43 80 1209384412 1209460534 rts2033.ktsh.co.kr 1937068609536 462592329728 0 0 0 0 2 3 142 32444 272 409547
1 2 RC003_RTS2034 222.122.162.44 80 1209384412 1209460535 rts2034.ktsh.co.kr 1937068609536 462641491968 0 0 0 11 3 6 2713 196074 5249 7945105
1 2 RC003_RTS2035 222.122.162.45 80 1209384412 1209460538 rts2035.ktsh.co.kr 1937068609536 458302930944 0 0 0 3 4 5 2017 156397 3782 5738932
1 2 RC003_RTS2036 222.122.162.46 80 1209384412 1209460535 rts2036.ktsh.co.kr 1937068609536 462698362880 0 0 0 5 6 8 1019 91493 1858 2811291
1 2 RC003_RTS2037 222.122.162.47 80 1209384412 1209460532 rts2037.ktsh.co.kr 1937068609536 461210560512 0 0 0 29 6 7 5415 5960348 7050 5080258
1 2 RC003_RTS2038 222.122.162.48 80 1209384412 1209460534 rts2038.ktsh.co.kr 1937068609536 462691768320 0 0 0 3 5 9 1135 97134 2339 3520511
1 2 RC003_RTS2039 222.122.162.49 80 1209384412 1209460535 rts2039.ktsh.co.kr 1937068609536 462447591424 0 0 0 0 4 6 326 45121 517 769836
1 2 RC003_RTS2040 222.122.162.50 80 1209384412 1209460533 rts2040.ktsh.co.kr 1937068609536 462199838720 0 0 0 0 5 6 540 57897 991 1499424
1 2 RC003_RTS2041 222.122.162.51 80 1209384412 1209460535 rts2041.ktsh.co.kr 1937068609536 462634045440 0 0 0 0 5 6 219 37484 414 624802
1 2 RC003_RTS2042 222.122.162.52 80 1209384412 1209460539 rts2042.ktsh.co.kr 1937068609536 462576234496 0 0 0 0 2 3 404 49399 1064 1608367
1 2 RC003_RTS2043 222.122.162.53 80 1209384412 1209460537 rts2043.ktsh.co.kr 1937068609536 462541053952 0 0 0 0 3 4 145 32300 191 283926
1 2 RC003_RTS2044 222.122.162.54 80 1209384412 1209460540 rts2044.ktsh.co.kr 1937068609536 458741305344 0 0 0 0 2 3 355 46065 1123 1700872
1 2 RC003_RTS2045 222.122.162.55 80 1209384412 1209460540 rts2045.ktsh.co.kr 1937068609536 462532974592 0 0 0 1 4 5 1463 117825 2982 4521341
1 2 RC003_RTS2046 222.122.162.56 80 1209384412 1209460539 rts2046.ktsh.co.kr 1937068609536 462298507264 0 0 0 6 5 6 388 137186 581 786734
1 2 RC003_RTS2047 222.122.162.57 80 1209384412 1209460538 rts2047.ktsh.co.kr 1937068609536 462096066560 0 0 0 0 6 8 372 47622 691 1042413
1 2 RC003_RTS2048 222.122.162.58 80 1209384412 1209460539 rts2048.ktsh.co.kr 1937068609536 462576093184 0 0 0 0 3 4 170 34072 284 425450
1 2 RC003_RTS2049 222.122.162.59 80 1209384412 1209460540 rts2049.ktsh.co.kr 1937068609536 456017377280 0 0 0 0 3 5 324 44235 581 872697
1 2 RC003_RTS2050 222.122.162.60 80 1209384412 1209460537 rts2050.ktsh.co.kr 1937068609536 462465923072 0 0 0 0 2 3 93 29163 142 210954
1 2 RC003_RTS2051 222.122.162.61 80 1209384412 1209460536 rts2051.ktsh.co.kr 1937068609536 462454161408 0 0 0 0 4 5 448 52109 1469 2228453
1 2 RC003_RTS2052 222.122.162.62 80 1209384412 1209460534 rts2052.ktsh.co.kr 1937068609536 462370463744 0 0 0 0 5 7 822 75679 1301 1969083
1 2 RC003_RTS2053 222.122.162.63 80 1209384412 1209460537 rts2053.ktsh.co.kr 1937068609536 431708065792 0 0 0 0 1 3 1776 137389 2794 4238656
1 2 RC003_RTS2054 222.122.162.64 80 1209384412 1209460541 rts2054.ktsh.co.kr 1937068609536 462479509504 0 0 0 6 3 4 4078 283401 8123 12321475
1 2 RC003_RTS2055 222.122.162.65 80 1209384412 1209460538 rts2055.ktsh.co.kr 1937068609536 462546124800 0 0 0 1 5 8 798 75324 1529 2315673
1 2 RC003_RTS2056 222.122.162.66 80 1209384412 1209460538 rts2056.ktsh.co.kr 1937068609536 462446608384 0 0 0 0 5 6 421 50663 747 1107660
1 2 RC003_RTS2057 222.122.162.67 80 1209384412 1209460538 rts2057.ktsh.co.kr 1937068609536 462617260032 0 0 0 0 4 5 145 32666 277 416717
1 2 RC003_RTS2058 222.122.162.68 80 1209384412 1209460539 rts2058.ktsh.co.kr 1937068609536 461479634944 0 0 0 3 9 10 1075 92624 2053 3106466
1 2 RC003_RTS2059 222.122.162.69 80 1209384412 1209460532 rts2059.ktsh.co.kr 1937068609536 460436314112 0 0 0 16 5 6 2721 196940 5433 8219680
1 2 RC003_RTS2060 222.122.162.70 80 1209384412 1209460539 rts2060.ktsh.co.kr 1937068609536 462465972224 0 0 0 0 1 3 42 26142 73 106895
1 2 RC003_RTS2061 222.122.162.71 80 1209384412 1209460533 rts2061.ktsh.co.kr 1937068609536 461886253056 0 0 0 0 7 8 1080 92380 2174 3285468
1 2 RC003_RTS2062 222.122.162.72 80 1209384412 1209460540 rts2062.ktsh.co.kr 1937068609536 462479212544 0 0 0 2 9 11 472 54409 953 1425839
1 2 RC003_RTS2063 222.122.162.73 80 1209384412 1209460535 rts2063.ktsh.co.kr 1937068609536 462362339328 0 0 1 3 6 8 1592 125554 2971 4445293
1 2 RC003_RTS2064 222.122.162.74 80 1209384412 1209460541 rts2064.ktsh.co.kr 1937068609536 461985148928 0 0 0 0 1 2 58 27396 57 72336
1 2 RC003_RTS2065 222.122.162.75 80 1209384412 1209460533 rts2065.ktsh.co.kr 1937068609536 460978296832 0 0 0 2 4 6 1336 109627 3466 5259339
1 2 RC003_RTS2066 222.122.162.76 80 1209384412 1209460537 rts2066.ktsh.co.kr 1937068609536 461885622272 0 0 0 1 1 2 290 41570 2090 3169779
1 2 RC003_RTS2067 222.122.162.77 80 1209384412 1209460538 rts2067.ktsh.co.kr 1937068609536 462302128128 0 0 0 0 5 6 603 63694 1484 2126520
1 2 RC003_RTS2068 222.122.162.78 80 1209384412 1209460537 rts2068.ktsh.co.kr 1937068609536 462564696064 0 0 0 0 2 3 328 44641 599 894350
1 2 RC003_RTS2069 222.122.162.79 80 1209384412 1209460535 rts2069.ktsh.co.kr 1937068609536 462535577600 0 0 0 0 3 4 177 34789 312 468293
1 2 RC003_RTS2070 222.122.162.80 80 1209384412 1209460533 rts2070.ktsh.co.kr 1937068609536 462471116800 0 0 0 19 4 6 2324 172073 3486 5260043
1 2 RC003_RTS2071 222.122.162.81 80 1209384412 1209460534 rts2071.ktsh.co.kr 1937068609536 458934108160 0 0 0 10 10 11 1837 140996 5120 7752901
1 2 RC003_RTS2072 222.122.162.82 80 1209384412 1209460534 rts2072.ktsh.co.kr 1937068609536 461426638848 0 0 0 0 3 4 591 61178 1188 1800330
1 2 RC003_RTS2073 222.122.162.83 80 1209384412 1209460540 rts2073.ktsh.co.kr 1937068609536 462381633536 0 0 0 1 5 6 1697 132352 3223 4875591
1 2 RC003_RTS2074 222.122.162.84 80 1209384412 1209460537 rts2074.ktsh.co.kr 1937068609536 461296404480 0 0 0 0 4 7 740 70089 2026 3070982
1 2 RC003_RTS2075 222.122.162.85 80 1209384412 1209460538 rts2075.ktsh.co.kr 1937068609536 462538094592 0 0 0 0 7 8 300 42609 604 746354
1 2 RC003_RTS2076 222.122.162.86 80 1209384412 1209460531 rts2076.ktsh.co.kr 1937068609536 456731797504 0 0 0 0 3 4 225 38130 381 573300
1 2 RC003_RTS2077 222.122.162.87 80 1209384412 1209460538 rts2077.ktsh.co.kr 1937068609536 462384310272 0 0 0 11 4 5 2281 170198 8364 12678034
1 2 RC003_RTS2078 222.122.162.88 80 1209384412 1209460534 rts2078.ktsh.co.kr 1937068609536 462524821504 0 0 0 0 4 5 1016 88079 2272 3427977
1 2 RC003_RTS2079 222.122.162.89 80 1209384412 1209460539 rts2079.ktsh.co.kr 1937068609536 462149328896 0 0 0 3 5 6 1043 90650 1926 2905159
1 2 RC003_RTS2080 222.122.162.90 80 1209384412 1209460535 rts2080.ktsh.co.kr 1937068609536 462488371200 0 0 0 5 6 8 924 82385 2649 3910097
1 2 RC003_RTS2081 222.122.162.91 80 1209384412 1209460535 rts2081.ktsh.co.kr 1937068609536 462503516160 0 0 0 0 2 3 400 49691 786 1183316
1 2 RC003_RTS2082 222.122.162.92 80 1209384412 1209460536 rts2082.ktsh.co.kr 1937068609536 460909885440 0 0 0 0 6 7 491 269241 660 765203
1 2 RC003_RTS2083 222.122.162.93 80 1209384412 1209460538 rts2083.ktsh.co.kr 1937068609536 461920952320 0 0 0 1 5 7 874 79410 1595 2143379
1 2 RC003_RTS2084 222.122.162.94 80 1209384412 1209460538 rts2084.ktsh.co.kr 1937068609536 462261016576 0 0 0 0 4 5 455 52731 850 1274536
1 2 RC003_RTS2085 222.122.162.95 80 1209384412 1209460540 rts2085.ktsh.co.kr 1937068609536 462474420224 0 0 0 1 6 7 1353 109459 2134 3209370
1 2 RC003_RTS2086 222.122.162.96 80 1209384412 1209460537 rts2086.ktsh.co.kr 1937068609536 462416640000 0 0 0 4 4 5 386 48186 747 1129899
1 2 RC003_RTS2087 222.122.162.97 80 1209384412 1209460534 rts2087.ktsh.co.kr 1937068609536 462602303488 0 0 0 0 4 5 140 32314 209 311074
1 2 RC003_RTS2088 222.122.162.98 80 1209384412 1209460538 rts2088.ktsh.co.kr 1937068609536 462243577856 0 0 0 1 3 4 515 57813 761 1083185
1 2 RC003_RTS2089 222.122.162.99 80 1209384412 1209460539 rts2089.ktsh.co.kr 1937068609536 462426083328 0 0 0 0 2 4 488 54791 1029 1520829
1 2 RC003_RTS2090 222.122.162.100 80 1209384412 1209460535 rts2090.ktsh.co.kr 1937068609536 462601592832 0 0 0 0 3 4 57 27423 73 104447
1 2 RC003_RTS2091 222.122.162.101 80 1209384412 1209460541 rts2091.ktsh.co.kr 1937068609536 462582857728 0 0 0 34 10 12 3878 273210 8126 12326096
1 2 RC003_RTS2092 222.122.162.102 80 1209384412 1209460537 rts2092.ktsh.co.kr 1937068609536 462043404288 0 0 0 1 5 7 1234 102277 3532 5355386
1 2 RC003_RTS2093 222.122.162.103 80 1209384412 1209460535 rts2093.ktsh.co.kr 1937068609536 462237347840 0 0 0 8 8 9 860 78497 1563 2307013
1 2 RC003_RTS2094 222.122.162.104 80 1209384412 1209460538 rts2094.ktsh.co.kr 1937068609536 461180348416 0 0 0 1 6 7 418 51048 655 982061
1 2 RC003_RTS2095 222.122.162.105 80 1209384412 1209460534 rts2095.ktsh.co.kr 1937068609536 461540716544 0 0 0 0 4 5 442 51682 781 1175659
1 2 RC003_RTS2096 222.122.162.106 80 1209384412 1209460533 rts2096.ktsh.co.kr 1937068609536 453778755584 0 0 0 1 4 5 440 52203 800 1186998
1 2 RC003_RTS2097 222.122.162.107 80 1209384412 1209460535 rts2097.ktsh.co.kr 1937068609536 462606260224 0 0 0 3 4 5 324 44108 582 875729
1 2 RC003_RTS2098 222.122.162.108 80 1209384412 1209460534 rts2098.ktsh.co.kr 1937068609536 460771278848 0 0 0 3 8 9 898 80662 1473 2217981
1 2 RC003_RTS2099 222.122.162.109 80 1209384412 1209460537 rts2099.ktsh.co.kr 1937068609536 462641661952 0 0 0 0 6 8 447 52429 780 1152328
1 2 RC003_RTS2100 222.122.162.110 80 1209384412 1209460540 rts2100.ktsh.co.kr 1937068609536 462051006464 0 0 2 9 7 9 4129 1816171 6230 7615035
1 2 RC003_RTS2101 222.122.162.111 80 1209384412 1209460537 rts2101.ktsh.co.kr 1937068609536 462702405632 0 0 0 13 4 5 1411 113741 2958 4398720
1 2 RC003_RTS2102 222.122.162.112 80 1209384412 1209460538 rts2102.ktsh.co.kr 1937068609536 462058018816 0 0 0 0 4 5 2724 197991 4569 6337196
1 2 RC003_RTS2103 222.122.162.113 80 1209384412 1209460539 rts2103.ktsh.co.kr 1937068609536 462232461312 0 0 0 0 3 6 176 34393 396 595457
1 2 RC003_RTS2104 222.122.162.114 80 1209384412 1209460535 rts2104.ktsh.co.kr 1937068609536 462368043008 0 0 0 1 10 12 1207 101260 2251 3383909
1 2 RC003_RTS2105 222.122.162.115 80 1209384412 1209460541 rts2105.ktsh.co.kr 1937068609536 462512306176 0 0 0 3 9 10 2517 1905682 3806 4032983
1 2 RC003_RTS2106 222.122.162.116 80 1209384412 1209460538 rts2106.ktsh.co.kr 1937068609536 460687745024 0 0 1 5 6 10 2353 175659 3760 5698752
1 2 RC003_RTS2107 222.122.162.117 80 1209384412 1209460539 rts2107.ktsh.co.kr 1937068609536 462230734848 0 0 0 0 4 6 293 42150 702 1058345
1 2 RC003_RTS2108 222.122.162.118 80 1209384412 1209460536 rts2108.ktsh.co.kr 1937068609536 462523625472 0 0 0 3 3 4 1471 119266 2402 3643285
1 2 RC003_RTS2109 222.122.162.119 80 1209384412 1209460539 rts2109.ktsh.co.kr 1937068609536 462080473088 0 0 0 0 5 7 570 60204 1568 2379309
1 2 RC003_RTS2110 222.122.162.120 80 1209384412 1209460538 rts2110.ktsh.co.kr 1937068609536 462617710592 0 0 0 6 5 7 758 73820 4035 5985210
1 2 RC003_RTS2111 222.122.162.121 80 1209384412 1209460536 rts2111.ktsh.co.kr 1937068609536 462293774336 0 0 0 1 7 8 2708 197830 5225 7327802
1 2 RC003_RTS2112 222.122.162.122 80 1209384412 1209460531 rts2112.ktsh.co.kr 1937068609536 462656229376 0 0 0 0 4 5 624 63307 1434 2165462
1 2 RC003_RTS2113 222.122.162.123 80 1209384412 1209460533 rts2113.ktsh.co.kr 1937068609536 462546591744 0 0 0 3 2 7 533 57188 3365 5106341
1 2 RC003_RTS2114 222.122.162.124 80 1209384412 1209460538 rts2114.ktsh.co.kr 1937068609536 462531631104 0 0 0 0 3 5 263 40108 483 717892
1 2 RC003_RTS2115 121.156.49.5 80 1209384412 1209460532 rts2115.ktsh.co.kr 1937068609536 460512329728 0 0 0 0 4 6 869 79063 2025 3072324
1 2 RC003_RTS2116 121.156.49.6 80 1209384412 1209460541 rts2116.ktsh.co.kr 1937068609536 462397587456 0 0 0 2 4 5 1589 125774 3471 5262176
1 2 RC003_RTS2117 121.156.49.7 80 1209384412 1209460534 rts2117.ktsh.co.kr 1937068609536 462205716480 0 0 0 0 2 3 182 34818 302 451001
1 2 RC003_RTS2118 121.156.49.8 80 1209384412 1209460535 rts2118.ktsh.co.kr 1937068609536 462158899200 0 0 0 0 2 3 669 66291 1417 2136562
1 2 RC003_RTS2119 121.156.49.9 80 1209384412 1209460536 rts2119.ktsh.co.kr 1937068609536 462625947648 0 0 0 0 2 4 180 35127 307 464026
1 2 RC003_RTS2120 121.156.49.10 80 1209384412 1209460535 rts2120.ktsh.co.kr 1937068609536 462223298560 0 0 0 1 7 14 620 63215 1125 1662051
1 2 RC003_RTS2121 121.156.49.11 80 1209384412 1209460541 rts2121.ktsh.co.kr 1937068609536 462419152896 0 0 1 8 8 9 1629 129672 2646 4017238
1 2 RC003_RTS2122 121.156.49.12 80 1209384412 1209460533 rts2122.ktsh.co.kr 1937068609536 462476503040 0 0 0 0 2 3 586 60602 890 1348448
1 2 RC003_RTS2123 121.156.49.13 80 1209384412 1209460534 rts2123.ktsh.co.kr 1937068609536 461415510016 0 0 0 13 7 8 5147 2408206 7390 9045090
1 2 RC003_RTS2124 121.156.49.14 80 1209384412 1209460535 rts2124.ktsh.co.kr 1937068609536 462665879552 0 0 0 1 3 5 436 51774 1038 1571902
1 2 RC003_RTS2125 121.156.49.15 80 1209384412 1209460536 rts2125.ktsh.co.kr 1937068609536 461826613248 0 0 0 10 5 6 1235 103167 4685 7108924
1 2 RC003_RTS2126 121.156.49.16 80 1209384412 1209460539 rts2126.ktsh.co.kr 1937068609536 462587471872 0 0 0 0 6 7 450 52415 842 1273780
1 2 RC003_RTS2127 121.156.49.17 80 1209384412 1209460534 rts2127.ktsh.co.kr 1937068609536 461261225984 0 0 0 4 10 12 949 84610 2325 3508769
1 2 RC003_RTS2128 121.156.49.18 80 1209384412 1209460541 rts2128.ktsh.co.kr 1937068609536 461127645184 0 0 0 0 0 1 31 25696 6 522
1 2 RC003_RTS2129 121.156.49.19 80 1209384412 1209460534 rts2129.ktsh.co.kr 1937068609536 462594512896 0 0 0 0 3 4 185 35057 306 446093
1 2 RC003_RTS2130 121.156.49.20 80 1209384412 1209460537 rts2130.ktsh.co.kr 1937068609536 462111223808 0 0 0 2 5 6 1410 113756 2710 3966515
1 2 RC003_RTS2131 121.156.49.21 80 1209384412 1209460540 rts2131.ktsh.co.kr 1937068609536 462668662784 0 0 0 0 5 6 686 67795 1488 2246042
1 2 RC003_RTS2132 121.156.49.22 80 1209384412 1209460540 rts2132.ktsh.co.kr 1937068609536 462004975616 0 0 0 13 6 8 2039 153964 4546 6888845
1 2 RC003_RTS2133 121.156.49.23 80 1209384412 1209460536 rts2133.ktsh.co.kr 1937068609536 462593886208 0 0 0 3 8 9 1983 151086 3882 5875473
1 2 RC003_RTS2134 121.156.49.24 80 1209384412 1209460539 rts2134.ktsh.co.kr 1937068609536 462592565248 0 0 0 1 5 6 434 50827 815 1166411
1 2 RC003_RTS2135 121.156.49.25 80 1209384412 1209460541 rts2135.ktsh.co.kr 1937068609536 462414323712 0 0 0 30 7 8 5708 385519 9472 14161338
1 2 RC003_RTS2136 121.156.49.26 80 1209384412 1209460540 rts2136.ktsh.co.kr 1937068609536 462185592832 0 0 0 0 2 3 74 28291 93 138969
1 2 RC003_RTS2137 121.156.49.27 80 1209384412 1209460534 rts2137.ktsh.co.kr 1937068609536 462647144448 0 0 0 29 5 7 1555 122468 3196 4797049
1 2 RC003_RTS2138 121.156.49.28 80 1209384412 1209460540 rts2138.ktsh.co.kr 1937068609536 462421186560 0 0 0 3 7 10 1910 146022 3427 5194723
1 2 RC003_RTS2139 121.156.49.29 80 1209384412 1209460540 rts2139.ktsh.co.kr 1937068609536 461585426432 0 0 0 0 4 5 1222 101702 2525 3519081
1 2 RC003_RTS2140 121.156.49.30 80 1209384412 1209460541 rts2140.ktsh.co.kr 1937068609536 462209755136 0 0 0 1 4 5 474 53834 1279 1933330
1 2 RC003_RTS2141 121.156.49.31 80 1209384412 1209460535 rts2141.ktsh.co.kr 1937068609536 461386680320 0 0 0 0 3 4 203 36603 398 596411
1 2 RC003_RTS2142 121.156.49.32 80 1209384412 1209460540 rts2142.ktsh.co.kr 1937068609536 462477740032 0 0 0 0 4 8 310 43309 490 739961
1 2 RC003_RTS2143 121.156.49.33 80 1209384412 1209460541 rts2143.ktsh.co.kr 1937068609536 462142242816 0 0 0 69 8 10 3217 236298 5377 7976335
1 2 RC003_RTS2144 121.156.49.34 80 1209384412 1209460537 rts2144.ktsh.co.kr 1937068609536 461133240320 0 0 0 0 5 6 501 55911 865 1303744
1 2 RC003_RTS2145 121.156.49.35 80 1209384412 1209460537 rts2145.ktsh.co.kr 1937068609536 446986110976 0 0 0 0 4 5 516 58254 1266 1920024
1 2 RC003_RTS2146 121.156.49.36 80 1209384412 1209460535 rts2146.ktsh.co.kr 1937068609536 462549702656 0 0 2 27 15 17 3805 268163 6518 9782314
1 2 RC003_RTS2147 121.156.49.37 80 1209384412 1209460534 rts2147.ktsh.co.kr 1937068609536 462361909248 0 0 0 6 5 6 426 50892 1916 2899394
1 2 RC003_RTS2148 121.156.49.38 80 1209384412 1209460535 rts2148.ktsh.co.kr 1937068609536 462315261952 0 0 0 0 3 4 511 57298 924 1381188
1 2 RC003_RTS2149 121.156.49.39 80 1209384412 1209460532 rts2149.ktsh.co.kr 1937068609536 462536376320 0 0 0 2 1 3 124 31157 146 219620
1 2 RC003_RTS2150 121.156.49.40 80 1209384412 1209460536 rts2150.ktsh.co.kr 1937068609536 462333558784 0 0 0 0 4 5 891 879852 1121 896860
1 2 RC003_RTS2151 121.156.49.41 80 1209384412 1209460541 rts2151.ktsh.co.kr 1937068609536 462459027456 0 0 0 0 4 5 466 53404 742 1119680
1 2 RC003_RTS2152 121.156.49.42 80 1209384412 1209460533 rts2152.ktsh.co.kr 1937068609536 462057267200 0 0 0 4 6 8 1969 149937 3774 5723881
1 2 RC003_RTS2153 121.156.49.43 80 1209384412 1209460534 rts2153.ktsh.co.kr 1937068609536 462142345216 0 0 0 0 2 3 250 39637 373 558765
1 2 RC003_RTS2154 121.156.49.44 80 1209384412 1209460539 rts2154.ktsh.co.kr 1937068609536 462257739776 0 0 0 0 3 6 1440 116253 2341 3522825
1 2 RC003_RTS2155 121.156.49.45 80 1209384412 1209460531 rts2155.ktsh.co.kr 1937068609536 462344970240 0 0 0 0 4 5 231 38490 415 628578
1 2 RC003_RTS2156 121.156.49.46 80 1209384412 1209460538 rts2156.ktsh.co.kr 1937068609536 462639755264 0 0 0 3 5 8 647 68739 1013 1527970
1 2 RC003_RTS2157 121.156.49.47 80 1209384412 1209460534 rts2157.ktsh.co.kr 1937068609536 461592365056 0 0 0 24 6 7 3840 269811 7335 11119227
1 2 RC003_RTS2158 121.156.49.48 80 1209384412 1209460534 rts2158.ktsh.co.kr 1937068609536 462402977792 0 0 0 0 2 5 140 32303 184 265587
1 2 RC003_RTS2159 121.156.49.49 80 1209384412 1209460540 rts2159.ktsh.co.kr 1937068609536 462656528384 0 0 0 0 1 2 35 25846 18 24878
1 2 RC003_RTS2160 121.156.49.50 80 1209384412 1209460533 rts2160.ktsh.co.kr 1937068609536 461898684416 0 0 0 2 7 9 2450 183904 4827 7235078
1 2 RC003_RTS2161 121.156.49.51 80 1209384412 1209460538 rts2161.ktsh.co.kr 1937068609536 462501468160 0 0 0 1 5 6 433 53493 679 990500
1 2 RC003_RTS2162 121.156.49.52 80 1209384412 1209460533 rts2162.ktsh.co.kr 1937068609536 461824223232 0 0 0 1 5 7 519 56317 1025 1554208
1 2 RC003_RTS2163 121.156.49.53 80 1209384412 1209460538 rts2163.ktsh.co.kr 1937068609536 462471913472 0 0 0 2 5 6 1304 109406 1840 2788561
1 2 RC003_RTS2164 121.156.49.54 80 1209384412 1209460536 rts2164.ktsh.co.kr 1937068609536 462529863680 0 0 0 0 5 6 284 41706 515 778789
1 2 RC003_RTS2165 121.156.49.55 80 1209384412 1209460538 rts2165.ktsh.co.kr 1937068609536 462593230848 0 0 0 9 3 5 1012 88289 4015 5920360
1 2 RC003_RTS2166 121.156.49.56 80 1209384412 1209460532 rts2166.ktsh.co.kr 1937068609536 462242252800 0 0 0 1 3 4 1569 124343 3168 4749653
1 2 RC003_RTS2167 121.156.49.57 80 1209384412 1209460538 rts2167.ktsh.co.kr 1937068609536 462047053824 0 0 0 0 7 8 900 82027 1668 2521600
1 2 RC003_RTS2168 121.156.49.58 80 1209384412 1209460537 rts2168.ktsh.co.kr 1937068609536 462526025728 0 0 0 3 7 9 1156 97505 2624 3619587
1 2 RC003_RTS2169 121.156.49.59 80 1209384412 1209460534 rts2169.ktsh.co.kr 1937068609536 461835986944 0 0 0 0 0 1 30 25260 6 505
1 2 RC003_RTS2170 121.156.49.60 80 1209384412 1209460539 rts2170.ktsh.co.kr 1937068609536 462403278848 0 0 0 10 6 7 2276 169411 4346 5761537
1 2 RC003_RTS2171 121.156.49.61 80 1209384412 1209460541 rts2171.ktsh.co.kr 1937068609536 454932051968 0 0 0 0 4 5 887 81291 1814 2564880
1 2 RC003_RTS2172 121.156.49.62 80 1209384412 1209460533 rts2172.ktsh.co.kr 1937068609536 462076753920 0 0 0 8 8 11 1004 87818 2158 3274698
1 2 RC003_RTS2173 121.156.49.63 80 1209384412 1209460532 rts2173.ktsh.co.kr 1937068609536 462569158656 0 0 0 1 6 7 686 67418 1366 2066294
1 2 RC003_RTS2174 121.156.49.64 80 1209384412 1209460541 rts2174.ktsh.co.kr 1937068609536 462536118272 0 0 0 6 8 10 1490 118956 2991 4521970
1 2 RC003_RTS2175 121.156.49.65 80 1209384412 1209460539 rts2175.ktsh.co.kr 1937068609536 459775725568 0 0 1 2 10 12 760 71897 1722 2610263
1 2 RC003_RTS2176 121.156.49.66 80 1209384412 1209460537 rts2176.ktsh.co.kr 1937068609536 462548975616 0 0 0 8 3 4 1119 95573 2185 3316624
1 2 RC003_RTS2177 121.156.49.67 80 1209384412 1209460535 rts2177.ktsh.co.kr 1937068609536 462393626624 0 0 0 5 7 9 610 62096 3464 5144867
1 2 RC003_RTS2178 121.156.49.68 80 1209384412 1209460533 rts2178.ktsh.co.kr 1937068609536 462493433856 0 0 0 1 7 9 496 54997 1152 1744534
1 2 RC003_RTS2179 121.156.49.69 80 1209384412 1209460534 rts2179.ktsh.co.kr 1937068609536 461169223680 0 0 0 13 11 13 1278 107011 4706 7129686
1 2 RC003_RTS2180 121.156.49.70 80 1209384412 1209460533 rts2180.ktsh.co.kr 1937068609536 462297700352 0 0 0 0 3 5 581 60641 1133 1711056
1 2 RC003_RTS2181 121.156.49.71 80 1209384412 1209460533 rts2181.ktsh.co.kr 1937068609536 462399979520 0 0 0 0 5 8 973 579663 1344 1528579
1 2 RC003_RTS2182 121.156.49.72 80 1209384412 1209460539 rts2182.ktsh.co.kr 1937068609536 462665172992 0 0 0 1 6 9 457 53985 1395 2116534
1 2 RC003_RTS2183 121.156.49.73 80 1209384412 1209460537 rts2183.ktsh.co.kr 1937068609536 462619086848 0 0 0 0 2 3 155 33044 291 433190
1 2 RC003_RTS2184 121.156.49.74 80 1209384412 1209460542 rts2184.ktsh.co.kr 1937068609536 462123587584 0 0 0 3 5 6 1279 105992 5352 8080746
1 2 RC003_RTS2185 121.156.49.75 80 1209384412 1209460537 rts2185.ktsh.co.kr 1937068609536 461854195712 0 0 0 2 9 11 1266 104313 2178 3283435
1 2 RC003_RTS2186 121.156.49.76 80 1209384412 1209460535 rts2186.ktsh.co.kr 1937068609536 462564618240 0 0 0 0 6 9 709 71402 1256 1729102
1 2 RC003_RTS2187 121.156.49.77 80 1209384412 1209460537 rts2187.ktsh.co.kr 1937068609536 451406182400 0 0 0 0 6 7 542 57896 993 1317967
1 2 RC003_RTS2188 121.156.49.78 80 1209384412 1209460534 rts2188.ktsh.co.kr 1937068609536 461694605312 0 0 0 2 9 13 484 54294 943 1406020
1 2 RC003_RTS2189 121.156.49.79 80 1209384412 1209460541 rts2189.ktsh.co.kr 1937068609536 462703003648 0 0 0 1 5 8 1985 149943 3539 5331236
1 2 RC003_RTS2190 121.156.49.80 80 1209384412 1209460537 rts2190.ktsh.co.kr 1937068609536 462464632832 0 0 1 2 5 6 905 80969 1576 2391582
1 2 RC003_RTS2191 121.156.49.81 80 1209384412 1209460536 rts2191.ktsh.co.kr 1937068609536 462695041024 0 0 0 0 2 3 124 32194 214 320888
1 2 RC003_RTS2192 121.156.49.82 80 1209384412 1209460533 rts2192.ktsh.co.kr 1937068609536 461964081152 0 0 0 0 1 2 420 50017 786 1192270
1 2 RC003_RTS2193 121.156.49.83 80 1209384412 1209460539 rts2193.ktsh.co.kr 1937068609536 462656026624 0 0 0 0 5 6 233 38811 353 519814
1 2 RC003_RTS2194 121.156.49.84 80 1209384412 1209460534 rts2194.ktsh.co.kr 1937068609536 462391083008 0 0 0 0 3 4 1045 90702 1536 2324031
1 2 RC003_RTS2195 121.156.49.85 80 1209384412 1209460535 rts2195.ktsh.co.kr 1937068609536 462353498112 0 0 0 0 3 4 642 65262 1202 1823651
1 2 RC003_RTS2196 222.122.171.6 80 1209384412 1209460540 rts2196.ktsh.co.kr 1937068609536 462543472640 0 0 0 0 4 5 330 44232 604 901068
1 2 RC003_RTS2197 222.122.171.7 80 1209384412 1209460535 rts2197.ktsh.co.kr 1937068609536 444166465536 0 0 0 9 13 15 1127 96239 2020 3031983
1 2 RC003_RTS2198 222.122.171.8 80 1209384412 1209460535 rts2198.ktsh.co.kr 1937068609536 462546690048 0 0 0 1 7 8 981 86021 2101 2971084
1 2 RC003_RTS2199 222.122.171.9 80 1209384412 1209460534 rts2199.ktsh.co.kr 1937068609536 462097014784 0 0 0 0 7 8 371 47210 715 1081827
1 2 RC003_RTS2200 222.122.171.10 80 1209384412 1209460533 rts2200.ktsh.co.kr 1937068609536 462324013056 0 0 0 12 8 9 1798 499454 3140 4320583
1 2 RC003_RTS2201 222.122.171.11 80 1209384412 1209460538 rts2201.ktsh.co.kr 1937068609536 462490068992 0 0 0 17 4 6 950 87013 1585 2375032
1 2 RC003_RTS2202 222.122.171.12 80 1209384412 1209460532 rts2202.ktsh.co.kr 1937068609536 462662164480 0 0 0 1 5 6 2385 176591 3871 5841743
1 2 RC003_RTS2203 222.122.171.13 80 1209384412 1209460538 rts2203.ktsh.co.kr 1937068609536 462630682624 0 0 0 0 3 4 209 36537 356 536825
1 2 RC003_RTS2204 222.122.171.14 80 1209384412 1209460536 rts2204.ktsh.co.kr 1937068609536 461345533952 0 0 0 5 10 13 2617 195647 5321 7981808
1 2 RC003_RTS2205 222.122.171.15 80 1209384412 1209460540 rts2205.ktsh.co.kr 1937068609536 461668173824 0 0 0 8 12 13 1078 92999 2370 3533116
1 2 RC003_RTS2206 222.122.171.16 80 1209384412 1209460541 rts2206.ktsh.co.kr 1937068609536 462281152512 0 0 0 0 2 6 134 31906 216 318670
1 2 RC003_RTS2207 222.122.171.17 80 1209384412 1209460540 rts2207.ktsh.co.kr 1937068609536 462471895040 0 0 0 2 3 4 562 58932 1084 1482796
1 2 RC003_RTS2208 222.122.171.18 80 1209384412 1209460537 rts2208.ktsh.co.kr 1937068609536 462607118336 0 0 0 4 8 11 3518 248608 7528 11297751
1 2 RC003_RTS2209 222.122.171.19 80 1209384412 1209460537 rts2209.ktsh.co.kr 1937068609536 461904474112 0 0 0 0 3 6 494 55024 752 1108796
1 2 RC003_RTS2210 222.122.171.20 80 1209384412 1209460533 rts2210.ktsh.co.kr 1937068609536 461914664960 0 0 0 0 4 5 155 33133 385 581453
1 2 RC003_RTS2211 222.122.171.21 80 1209384412 1209460532 rts2211.ktsh.co.kr 1937068609536 460601092096 0 0 0 2 6 7 1644 128946 3613 5470097 1 2 RC003_RTS2212 222.122.171.22 80 1209384412 1209460533 rts2212.ktsh.co.kr 1937068609536 461880025088 0 0 0 1 8 10 1252 104189 2662 3968434
1 2 RC003_RTS2213 222.122.171.23 80 1209384412 1209460533 rts2213.ktsh.co.kr 1937068609536 461096669184 0 0 0 4 4 5 3818 267987 8916 13514752
1 2 RC003_RTS2214 222.122.171.24 80 1209384412 1209460541 rts2214.ktsh.co.kr 1937068609536 461592276992 0 0 0 1 8 9 590 63552 923 1386961
1 2 RC003_RTS2215 222.122.171.25 80 1209384412 1209460539 rts2215.ktsh.co.kr 1937068609536 462164813824 0 0 0 3 6 7 1493 120913 2694 3817750
1 2 RC003_RTS2216 222.122.171.26 80 1209384412 1209460535 rts2216.ktsh.co.kr 1937068609536 574604562432 1 0 0 0 1 2 74 28418 91 136378
1 2 RC003_RTS2217 222.122.171.27 80 1209384412 1209460538 rts2217.ktsh.co.kr 1937068609536 565665366016 1 0 0 0 2 3 123 31654 194 293411
1 2 RC003_RTS2218 222.122.171.28 80 1209384412 1209460540 rts2218.ktsh.co.kr 1937068609536 556045848576 1 0 0 2 3 4 748 71566 1519 2301104
1 2 RC003_RTS2219 222.122.171.29 80 1209384412 1209460539 rts2219.ktsh.co.kr 1937068609536 564667125760 1 0 0 2 7 8 1384 112636 2242 3363595
1 2 RC003_RTS2220 222.122.171.30 80 1209384412 1209460540 rts2220.ktsh.co.kr 1937068609536 555793342464 1 0 0 2 3 4 481 54925 2074 3104819
1 2 RC003_RTS2221 222.122.171.31 80 1209384412 1209460537 rts2221.ktsh.co.kr 1937068609536 561647478784 1 0 0 0 3 4 225 37843 537 813750
1 2 RC003_RTS2222 222.122.171.32 80 1209384412 1209460531 rts2222.ktsh.co.kr 1937068609536 579326212096 1 0 0 0 4 6 668 65895 1484 2235838
1 2 RC003_RTS2223 222.122.171.33 80 1209384412 1209460539 rts2223.ktsh.co.kr 1937068609536 549761304576 1 0 0 0 2 3 88 29267 125 184226
1 2 RC003_RTS2224 222.122.171.34 80 1209384412 1209460534 rts2224.ktsh.co.kr 1937068609536 568688025600 1 0 0 0 1 2 58 27077 67 100740
1 2 RC003_RTS2225 222.122.171.35 80 1209384412 1209460535 rts2225.ktsh.co.kr 1937068609536 568089833472 1 0 0 3 3 4 1554 123209 2866 4348986
1 2 RC003_RTS2226 222.122.171.36 80 1209384412 1209460540 rts2226.ktsh.co.kr 1937068609536 568705241088 1 0 0 1 6 8 602 62290 3672 5552824
1 2 RC003_RTS2227 222.122.171.37 80 1209384412 1209460535 rts2227.ktsh.co.kr 1937068609536 560547706880 1 0 0 0 3 4 197 36241 361 546611
1 2 RC003_RTS2228 222.122.171.38 80 1209384412 1209460532 rts2228.ktsh.co.kr 1937068609536 551492251648 1 0 0 2 5 6 1262 104451 4204 6315784
1 2 RC003_RTS2229 222.122.171.39 80 1209384412 1209460536 rts2229.ktsh.co.kr 1937068609536 555382003712 1 0 0 0 1 2 101 30432 115 172093
1 2 RC003_RTS2230 222.122.171.40 80 1209384412 1209460536 rts2230.ktsh.co.kr 1937068609536 558592630784 1 0 0 0 2 3 55 26916 85 126816
1 2 RC003_RTS2231 222.122.171.41 80 1209384412 1209460534 rts2231.ktsh.co.kr 1937068609536 541091248128 1 0 0 0 3 4 228 37603 407 602354
1 2 RC003_RTS2232 222.122.171.42 80 1209384412 1209460537 rts2232.ktsh.co.kr 1937068609536 570735687680 1 0 0 0 4 5 842 77151 1470 2199683
1 2 RC003_RTS2233 222.122.171.43 80 1209384412 1209460536 rts2233.ktsh.co.kr 1937068609536 571678453760 1 0 0 0 7 8 442 52751 723 1081406
1 2 RC003_RTS2234 222.122.171.44 80 1209384412 1209460540 rts2234.ktsh.co.kr 1937068609536 552046174208 1 0 0 0 2 3 288 41476 779 1181070
1 2 RC003_RTS2235 222.122.171.45 80 1209384412 1209460535 rts2235.ktsh.co.kr 1937068609536 528473810944 1 0 0 3 2 3 453 52343 934 1416101
1 2 RC003_RTS2236 222.122.171.46 80 1209384412 1209460537 rts2236.ktsh.co.kr 1937068609536 528048044032 1 0 0 0 1 2 47 26521 44 63350
1 2 RC003_RTS2237 222.122.171.47 80 1209384412 1209460535 rts2237.ktsh.co.kr 1937068609536 560761229312 1 0 0 1 6 7 1044 90916 1800 2687328
1 2 RC003_RTS2238 222.122.171.48 80 1209384412 1209460536 rts2238.ktsh.co.kr 1937068609536 550958024704 1 0 0 0 2 3 66 28102 259 391611
1 2 RC003_RTS2239 222.122.171.49 80 1209384412 1209460539 rts2239.ktsh.co.kr 1937068609536 554318379008 1 0 0 0 4 6 923 82396 2065 3133517
1 2 RC003_RTS2240 222.122.171.50 80 1209384412 1209460537 rts2240.ktsh.co.kr 1937068609536 498643130368 1 0 0 0 0 1 25 25218 1 200
1 2 RC003_RTS2241 222.122.171.51 80 1209384412 1209460541 rts2241.ktsh.co.kr 1937068609536 478799699968 1 0 0 0 3 4 216 37490 342 513678
1 2 RC003_RTS2242 222.122.171.52 80 1209384412 1209460536 rts2242.ktsh.co.kr 1937068609536 559209691136 1 0 0 1 3 5 677 67115 1318 1973765
1 2 RC003_RTS2243 222.122.171.53 80 1209384412 1209460535 rts2243.ktsh.co.kr 1937068609536 516139984896 1 0 0 0 3 4 407 49309 772 1166672
1 2 RC003_RTS2244 222.122.171.54 80 1209384412 1209460535 rts2244.ktsh.co.kr 1937068609536 525124855808 1 0 0 1 3 4 317 43604 971 1465297
1 3 RC003_RCTS01 222.122.162.9 13104 1209384412 - - - - - - - - - - - - - -
1 3 RC003_RCTS02 222.122.162.10 13104 1209384412 - - - - - - - - - - - - - -
1 4 RC003_DB01 222.122.162.5 5432 1209384412 - - - - - - - - - - - - - -
1 4 RC003_DB02 222.122.162.136 5432 1209384412 - - - - - - - - - - - - - -
1 4 RC003_PGLB01 222.122.162.7 6543 1209384412 - - - - - - - - - - - - - -
1 1 RC004_STAT rc004 80 1209384412 - - - - - - - - - - - - - -
3 2 RC004_BD-04-FHS001 125.141.201.161 80 1209384412 1209460544 bd-04-fhs001.ktsh.co.kr 1098038200320 405290795008 1 0 0 0 0 1 4 2907 1 165
3 2 RC004_BD-04-FHS002 125.141.201.162 80 1209384412 1209460534 bd-04-fhs002.ktsh.co.kr 1098038200320 405290795008 1 0 0 0 0 1 3 2876 0 139
3 2 RC004_BD-04-FHS003 125.141.201.163 80 1209384412 1209460543 bd-04-fhs003.ktsh.co.kr 1098038200320 405290795008 1 0 0 0 0 1 3 2881 0 139
3 2 RC004_BD-04-FHS004 125.141.201.164 80 1209384412 1209460537 bd-04-fhs004.ktsh.co.kr 1098038200320 405290795008 1 0 0 0 0 1 3 2870 0 139
3 2 RC004_BD-04-FHS005 125.141.201.165 80 1209384412 1209460537 bd-04-fhs005.ktsh.co.kr 1098050324480 405301950464 1 0 0 0 0 1 3 2870 0 139
3 2 RC004_BD-04-FHS006 125.141.201.166 80 1209384412 1209460543 bd-04-fhs006.ktsh.co.kr 1098038200320 405290795008 1 0 0 0 0 1 3 2881 0 139
3 2 RC004_BD-04-FHS007 125.141.201.167 80 1209384412 1209460534 bd-04-fhs007.ktsh.co.kr 1098038200320 405284683776 1 0 0 0 0 1 3 2876 0 139
3 2 RC004_BD-04-FHS008 125.141.201.168 80 1209384412 1209460535 bd-04-fhs008.ktsh.co.kr 1098038200320 405290795008 1 0 0 0 0 1 3 2902 1 165
3 2 RC004_BD-04-FHS009 125.141.201.169 80 1209384412 1209460543 bd-04-fhs009.ktsh.co.kr 1098038200320 405290795008 1 0 0 0 0 1 4 2907 1 165
3 2 RC004_BD-04-FHS010 125.141.201.170 80 1209384412 1209460535 bd-04-fhs010.ktsh.co.kr 1098038200320 405290795008 1 0 0 0 0 1 3 2876 0 139
1 2 RC004_BD-04-FHS011 125.141.201.171 80 1209384412 1209460537 bd-04-fhs011.ktsh.co.kr 1937062572032 1152105304064 0 0 0 8 11 35 2396 147737 5421 8169332
1 2 RC004_BD-04-FHS012 125.141.201.172 80 1209384412 1209460537 bd-04-fhs012.ktsh.co.kr 1937062572032 1152085645312 0 0 0 2 3 15 4580 278191 8170 12367143
1 2 RC004_BD-04-FHS013 125.141.201.173 80 1209384412 1209460534 bd-04-fhs013.ktsh.co.kr 1937062572032 1150258796544 0 0 0 0 8 28 927 58657 2253 3397624
1 2 RC004_BD-04-FHS014 125.141.201.174 80 1209384412 1209460539 bd-04-fhs014.ktsh.co.kr 1937062572032 1152077287424 0 0 2 0 10 13 607 59042 3115 4577416
1 2 RC004_BD-04-FHS015 125.141.201.175 80 1209384412 1209460535 bd-04-fhs015.ktsh.co.kr 1937062572032 1152018141184 0 0 0 0 4 15 888 56135 1888 2856805
1 2 RC004_BD-04-FHS016 125.141.201.176 80 1209384412 1209460541 bd-04-fhs016.ktsh.co.kr 1937062572032 1152120047616 0 0 0 0 1 5 145 11394 266 401758
1 2 RC004_BD-04-FHS017 125.141.201.177 80 1209384412 1209460537 bd-04-fhs017.ktsh.co.kr 1937062572032 1150279929856 0 0 0 0 7 26 1319 82144 2508 3738030
1 2 RC004_BD-04-FHS018 125.141.201.178 80 1209384412 1209460539 bd-04-fhs018.ktsh.co.kr 1937062572032 1150244227072 0 0 0 1 8 16 2828 172467 5281 7920895
1 2 RC004_BD-04-FHS019 125.141.201.179 80 1209384412 1209460542 bd-04-fhs019.ktsh.co.kr 1937062572032 1152081711104 0 0 0 1 5 18 1399 86639 5946 8986375
1 2 RC004_BD-04-FHS020 125.141.201.180 80 1209384412 1209460543 bd-04-fhs020.ktsh.co.kr 1937062572032 1150255353856 0 0 0 0 1 5 559 36233 1012 1530370
1 2 RC004_BD-04-FHS021 125.141.201.181 80 1209384412 1209460534 bd-04-fhs021.ktsh.co.kr 1937062572032 1150255368192 0 0 0 0 5 11 1099 68897 2016 3012989 1 2 RC004_BD-04-FHS022 125.141.201.182 80 1209384412 1209460543 bd-04-fhs022.ktsh.co.kr 1937062572032 1152083200000 0 0 0 1 7 14 1672 103291 3091 4679249
1 2 RC004_BD-04-FHS023 125.141.201.183 80 1209384412 1209460536 bd-04-fhs023.ktsh.co.kr 1937062572032 1148601501696 0 0 0 0 1 2 53 5926 86 129452
1 2 RC004_BD-04-FHS030 125.141.201.190 80 1209384412 1209460535 bd-04-fhs030.ktsh.co.kr 1937062572032 1152096962560 0 0 0 1 4 13 980 62816 1834 2752539
1 2 RC004_BD-04-FHS031 125.141.201.191 80 1209384412 1209460535 bd-04-fhs031.ktsh.co.kr 1937062572032 1151744739328 0 0 0 0 5 11 906 59503 1695 2411501
1 2 RC004_BD-04-FHS032 125.141.201.192 80 1209384412 1209460534 bd-04-fhs032.ktsh.co.kr 1937062572032 1152082130944 0 0 0 0 4 19 658 42664 1571 2346789
1 2 RC004_BD-04-FHS033 125.141.201.193 80 1209384412 1209460539 bd-04-fhs033.ktsh.co.kr 1937062572032 1152078778368 0 0 0 0 3 14 371 25724 644 968436
1 2 RC004_BD-04-FHS034 125.141.201.194 80 1209384412 1209460535 bd-04-fhs034.ktsh.co.kr 1937062572032 1149159571456 0 0 0 2 2 5 3937 239015 6965 10543850
1 2 RC004_BD-04-FHS035 125.141.201.195 80 1209384412 1209460539 bd-04-fhs035.ktsh.co.kr 1937062572032 1148820838400 0 0 0 0 5 14 1101 69012 2082 3124925
1 3 RC004_RCTS01 125.141.201.159 13104 1209384412 - - - - - - - - - - - - - -
1 3 RC004_RCTS02 125.141.201.160 13104 1209384412 - - - - - - - - - - - - - -
1 4 RC004_DB01 125.141.201.155 5432 1209384412 - - - - - - - - - - - - - -
1 4 RC004_DB02 125.141.201.156 5432 1209384412 - - - - - - - - - - - - - -
1 4 RC004_PGLB01 125.141.201.157 6543 1209384412 - - - - - - - - - - - - - -
1 2 EVENT_CACHE01 222.122.171.123 80 1209384412 - - - - - - - - - - - - - -
1 2 EVENT_CACHE02 222.122.171.124 80 1209384412 - - - - - - - - - - - - - -
1 2 EVENT_CACHE03 222.122.171.122 80 1209384412 - - - - - - - - - - - - - -
1 2 EVENT_CACHE04 222.122.171.121 80 1209384412 - - - - - - - - - - - - - -
1 2 EVENT_RTS4001-1 222.122.170.101 80 1209384412 1209460546 rts4001.ktsh.co.kr(rts4001-1) 1937068609536 125927655424 0 0 0 0 5 15 303 31183 588 811345
1 2 EVENT_RTS4001-2 222.122.170.102 80 1209384412 1209460524 rts4001.ktsh.co.kr(rts4001-2) 1937068609536 125769478144 0 0 0 0 10 24 699 56246 1300 1687543
1 2 EVENT_RTS4002-1 222.122.170.103 80 1209384412 1209460545 rts4002.ktsh.co.kr(rts4002-1) 1937068609536 125288962048 0 0 0 2 9 26 385 36466 905 1320013
1 2 EVENT_RTS4002-2 222.122.170.104 80 1209384412 1209460525 rts4002.ktsh.co.kr(rts4002-2) 1937068609536 125583898624 0 0 0 0 5 18 202 24901 447 615507
1 2 EVENT_RTS4003-1 222.122.170.105 80 1209384412 1209460531 rts4003.ktsh.co.kr(rts4003-1) 1937068609536 4183676928 0 0 0 0 6 25 242 26980 487 664657
1 2 EVENT_RTS4003-2 222.122.170.106 80 1209384412 1209460544 rts4003.ktsh.co.kr(rts4003-2) 1937068609536 4248047616 0 0 0 0 6 22 424 40296 824 1110404
1 2 EVENT_RTS4004-1 222.122.170.107 80 1209384412 1209460540 rts4004.ktsh.co.kr(rts4004-1) 1937068609536 129641517056 0 0 0 0 12 41 482 42221 1030 1469832
1 2 EVENT_RTS4004-2 222.122.170.108 80 1209384412 1209460547 rts4004.ktsh.co.kr(rts4004-2) 1937068609536 130703151104 0 0 0 0 5 18 164 22786 268 391148
1 2 EVENT_RTS4005-1 222.122.170.109 80 1209384412 1209460537 rts4005.ktsh.co.kr(rts4005-1) 1937068609536 123347953664 0 0 0 0 2 32 40 14342 61 83988
1 2 EVENT_RTS4005-2 222.122.170.110 80 1209384412 1209460547 rts4005.ktsh.co.kr(rts4005-2) 1937068609536 123750318080 0 0 0 0 8 23 479 42444 969 1300077
1 2 EVENT_RTS4006-1 222.122.170.111 80 1209384412 1209460549 rts4006.ktsh.co.kr(rts4006-1) 1937068609536 5466339328 0 0 0 0 10 24 424 38950 842 1141323
1 2 EVENT_RTS4006-2 222.122.170.112 80 1209384412 1209460495 rts4006.ktsh.co.kr(rts4006-2) 1937068609536 5507774464 0 0 0 0 5 20 338 33367 592 834599
1 2 EVENT_RTS4007-1 222.122.170.113 80 1209384412 1209460540 rts4007.ktsh.co.kr(rts4007-1) 1937068609536 93665765376 0 0 0 0 12 42 967 73936 1779 2334522
1 2 EVENT_RTS4007-2 222.122.170.114 80 1209384412 1209460547 rts4007.ktsh.co.kr(rts4007-2) 1937068609536 93496023040 0 0 0 0 4 9 261 29002 472 643379
1 2 EVENT_RTS4008-1 222.122.170.115 80 1209384412 1209460547 rts4008.ktsh.co.kr(rts4008-1) 1937068609536 148420317184 0 0 0 0 6 15 278 29658 592 836315
1 2 EVENT_RTS4008-2 222.122.170.116 80 1209384412 1209460531 rts4008.ktsh.co.kr(rts4008-2) 1937068609536 148419497984 0 0 0 0 3 10 59 15927 127 163438
1 2 EVENT_RTS4009-1 222.122.170.117 80 1209384412 1209460536 rts4009.ktsh.co.kr(rts4009-1) 1937068609536 130746968064 0 0 0 0 14 34 622 52058 1348 1923919
1 2 EVENT_RTS4009-2 222.122.170.118 80 1209384412 1209460547 rts4009.ktsh.co.kr(rts4009-2) 1937068609536 130645919744 0 0 0 0 7 17 496 43535 946 1327315
1 2 EVENT_RTS4010-1 222.122.170.122 80 1209384412 1209460527 rts4010.ktsh.co.kr(rts4010-1) 1937068609536 137106089984 0 0 0 1 18 32 393 40443 673 899016
1 2 EVENT_RTS4010-2 222.122.170.124 80 1209384412 1209460549 rts4010.ktsh.co.kr(rts4010-2) 1937068609536 136826900480 0 0 0 0 8 24 388 37087 839 1164172
1 2 EVENT_RTS4011-1 222.122.171.101 80 1209384412 1209460549 rts4011.ktsh.co.kr(rts4011-1) 1937068609536 22499794944 0 0 0 0 9 22 552 47536 1073 1483209
1 2 EVENT_RTS4011-2 222.122.171.102 80 1209384412 1209460539 rts4011.ktsh.co.kr(rts4011-2) 1937068609536 22495954944 0 0 0 0 6 17 361 34897 696 985021
1 2 EVENT_RTS4012-1 222.122.171.103 80 1209384412 1209460546 rts4012.ktsh.co.kr(rts4012-1) 1937068609536 127229829120 0 0 0 0 10 26 295 30303 619 827332
1 2 EVENT_RTS4012-2 222.122.171.104 80 1209384412 1209460522 rts4012.ktsh.co.kr(rts4012-2) 1937068609536 126961061888 0 0 0 0 3 14 284 30006 510 668584
1 2 EVENT_RTS4013-1 222.122.171.105 80 1209384412 1209460539 rts4013.ktsh.co.kr(rts4013-1) 1937068609536 148401840128 0 0 0 0 4 13 218 26664 433 556124
1 2 EVENT_RTS4013-2 222.122.171.106 80 1209384412 1209460541 rts4013.ktsh.co.kr(rts4013-2) 1937068609536 148324296704 0 0 0 0 6 14 383 36002 739 1002403
1 2 EVENT_RTS4014-1 222.122.171.107 80 1209384412 1209460513 rts4014.ktsh.co.kr(rts4014-1) 1937068609536 21454936064 0 0 0 0 10 21 435 39703 1146 1592351
1 2 EVENT_RTS4014-2 222.122.171.108 80 1209384412 1209460549 rts4014.ktsh.co.kr(rts4014-2) 1937068609536 21437829120 0 0 0 0 4 11 183 23275 366 508039
1 2 EVENT_RTS4015-1 222.122.171.109 80 1209384412 1209460528 rts4015.ktsh.co.kr(rts4015-1) 1937068609536 111989706752 0 0 0 0 21 48 978 74384 2170 2977330
1 2 EVENT_RTS4015-2 222.122.171.110 80 1209384412 1209460549 rts4015.ktsh.co.kr(rts4015-2) 1937068609536 111976146944 0 0 0 0 12 39 667 54252 1393 1986464
1 2 EVENT_RTS4016-1 222.122.171.111 80 1209384412 1209460546 rts4016.ktsh.co.kr(rts4016-1) 1937068609536 57727203328 0 0 0 0 15 45 490 43069 1065 1470540
1 2 EVENT_RTS4016-2 222.122.171.112 80 1209384412 1209460522 rts4016.ktsh.co.kr(rts4016-2) 1937068609536 57743489024 0 0 0 0 7 37 340 33515 715 963749
1 2 EVENT_RTS4017-1 222.122.171.113 80 1209384412 1209460547 rts4017.ktsh.co.kr(rts4017-1) 1937068609536 1275492352 0 0 0 1 9 29 426 39212 902 1214547
1 2 EVENT_RTS4017-2 222.122.171.114 80 1209384412 1209460525 rts4017.ktsh.co.kr(rts4017-2) 1937068609536 1353064448 0 0 0 0 6 22 108 18696 168 243910
1 2 EVENT_RTS4018-1 222.122.171.115 80 1209384412 1209460547 rts4018.ktsh.co.kr(rts4018-1) 1937068609536 835852288 0 0 0 0 24 66 447 40477 814 1115876
1 2 EVENT_RTS4018-2 222.122.171.116 80 1209384412 1209460531 rts4018.ktsh.co.kr(rts4018-2) 1937068609536 797157376 0 0 0 1 16 39 820 64715 1687 2180641
1 2 EVENT_RTS4019-1 222.122.171.117 80 1209384412 1209460450 rts4019.ktsh.co.kr(rts4019-1) 1937068609536 51362633728 0 0 0 0 10 48 303 31572 755 1041832
1 2 EVENT_RTS4019-2 222.122.171.118 80 1209384412 1209460545 rts4019.ktsh.co.kr(rts4019-2) 1937068609536 51263537152 0 0 0 0 6 31 454 40879 1046 1434115
1 2 EVENT_RTS4020-1 222.122.171.119 80 1209384412 1209460549 rts4020.ktsh.co.kr(rts4020-1) 1937068609536 413387515904 0 0 0 0 9 75 722 59017 2312 3063143
1 2 EVENT_RTS4020-2 222.122.171.120 80 1209384412 1209460522 rts4020.ktsh.co.kr(rts4020-2) 1937068609536 413277054976 0 0 0 0 4 37 175 23048 325 460421
1 2 EVENT_RTS4021-1 222.122.171.81 80 1209384412 1209460543 rts4021.ktsh.co.kr(rts4021-1) 1937068609536 619598010368 0 1 0 4 51 328 3018 205424 6507 8662991
1 2 EVENT_RTS4021-2 222.122.171.82 80 1209384412 1209460521 rts4021.ktsh.co.kr(rts4021-2) 1937068609536 619543621632 0 0 0 1 23 177 965 76806 2039 2785826
1 2 EVENT_RTS4022-1 222.122.171.83 80 1209384412 1209460532 rts4022.ktsh.co.kr(rts4022-1) 1937068609536 618844979200 0 1 0 11 64 415 4057 285735 8229 10951738
1 2 EVENT_RTS4022-2 222.122.171.84 80 1209384412 1209460542 rts4022.ktsh.co.kr(rts4022-2) 1937068609536 618733584384 0 0 0 2 38 191 2223 167098 4252 5649518
1 2 EVENT_RTS4023-1 222.122.171.85 80 1209384412 1209460548 rts4023.ktsh.co.kr(rts4023-1) 1937068609536 618799663104 0 1 0 11 67 385 2483 209935 5163 7141804
1 2 EVENT_RTS4023-2 222.122.171.86 80 1209384412 1209460522 rts4023.ktsh.co.kr(rts4023-2) 1937068609536 618796871680 0 0 0 3 38 138 2336 214819 4221 5741054
1 3 EVENT_RCTS01 222.122.170.119 80 1209384412 - - - - - - - - - - - - - -
1 3 EVENT_RCTS02 222.122.170.120 80 1209384412 - - - - - - - - - - - - - -
1 4 EVENT_DB01 222.122.170.121 5432 1209384412 - - - - - - - - - - - - - -
1 4 EVENT_DB02 222.122.170.252 5432 1209384412 - - - - - - - - - - - - - -
1 4 EVENT_PGLB01 222.122.170.123 6543 1209384412 - - - - - - - - - - - - - -
1 2 KTINSIDE_RTS5001-1 222.122.170.11 80 1209384412 1209460495 rts5001.ktsh.co.kr(rts5001-1) 1937068609536 1220506265600 1 0 0 0 4 13 93 20271 155 187214
1 2 KTINSIDE_RTS5001-2 222.122.170.12 80 1209384412 1209460540 rts5001.ktsh.co.kr(rts5001-2) 1937068609536 1220385884160 1 0 0 0 2 12 13 12360 2 327
1 2 KTINSIDE_RTS5002-1 222.122.170.13 80 1209384412 1209460538 rts5002.ktsh.co.kr(rts5002-1) 1937068609536 1358502236160 0 0 0 1 6 8 124 55214 124 83853
1 2 KTINSIDE_RTS5002-2 222.122.170.14 80 1209384412 1209460538 rts5002.ktsh.co.kr(rts5002-1) 1937068609536 1358502236160 0 0 0 1 6 8 124 55214 124 83853
1 2 KTINSIDE_RTS5003-1 222.122.170.15 80 1209384412 1209460507 rts5003.ktsh.co.kr(rts5003-1) 1937068609536 1238879784960 1 0 0 0 1 2 17 18218 6 577
1 2 KTINSIDE_RTS5003-2 222.122.170.16 80 1209384412 1209460539 rts5003.ktsh.co.kr(rts5003-2) 1937068609536 1163296688128 1 0 0 0 1 2 14 12802 2 730
1 2 KTINSIDE_RTS5004-1 222.122.170.17 80 1209384412 1209460536 rts5004.ktsh.co.kr(rts5004-1) 1937068609536 1317946705920 1 0 0 0 4 8 177 23374 247 365661
1 2 KTINSIDE_RTS5004-2 222.122.170.18 80 1209384412 1209460523 rts5004.ktsh.co.kr(rts5004-2) 1937068609536 1317675429888 1 0 0 0 0 1 13 12181 1 193
1 2 KTINSIDE_RTS5005-1 222.122.170.19 80 1209384412 1209460513 rts5005.ktsh.co.kr(rts5005-1) 1937068609536 1174748647424 1 0 0 0 0 2 17 12544 5 5716
1 2 KTINSIDE_RTS5005-2 222.122.170.20 80 1209384412 1209460541 rts5005.ktsh.co.kr(rts5005-2) 1937068609536 1174570663936 1 0 0 0 2 3 35 14374 32 39254
1 3 KTINSIDE_RCTS01 222.122.170.9 80 1209384412 - - - - - - - - - - - - - -
1 3 KTINSIDE_RCTS02 222.122.170.10 80 1209384412 - - - - - - - - - - - - - -
1 4 KTINSIDE_DB01 222.122.170.5 5432 1209384412 - - - - - - - - - - - - - -
1 4 KTINSIDE_DB02 222.122.170.136 5432 1209384412 - - - - - - - - - - - - - -
1 4 KTINSIDE_PGLB01 222.122.170.7 6543 1209384412 - - - - - - - - - - - - - -
1 0 ORGEL_RC orgel 80 1209384412 - - - - - - - - - - - - - -
1 2 ORGEL_MYON-CACHE1 222.122.170.96 80 1209384412 - - - - - - - - - - - - - -
1 2 ORGEL_RTS6001-1 222.122.170.51 80 1209384412 1209460535 rts6001.ktsh.co.kr(rts6001-1) 1937068609536 14712309760 1 0 0 1 1 13 479 44155 760 1116486
1 2 ORGEL_RTS6001-2 222.122.170.52 80 1209384412 1209460539 rts6001.ktsh.co.kr(rts6001-2) 1937068609536 14693255168 1 0 0 1 3 18 424 39854 936 1405496
1 2 ORGEL_RTS6002-1 222.122.170.53 80 1209384412 1209460542 rts6002.ktsh.co.kr(rts6002-1) 1937068609536 15266572288 1 0 0 4 4 21 800 65062 1391 2070289
1 2 ORGEL_RTS6002-2 222.122.170.54 80 1209384412 1209460535 rts6002.ktsh.co.kr(rts6002-2) 1937068609536 15240118272 1 0 1 0 3 12 448 41414 657 970523
1 2 ORGEL_RTS6003-1 222.122.170.55 80 1209384412 1209460507 rts6003.ktsh.co.kr(rts6003-1) 1937068609536 22304253952 1 0 0 0 2 15 313 33191 500 703650
1 2 ORGEL_RTS6003-2 222.122.170.56 80 1209384412 1209460541 rts6003.ktsh.co.kr(rts6003-2) 1937068609536 22216335360 1 0 0 3 4 25 582 51003 1045 1538987
1 2 ORGEL_RTS6004-1 222.122.170.57 80 1209384412 1209460541 rts6004.ktsh.co.kr(rts6004-1) 1937068609536 30547111936 1 0 0 9 8 32 1454 108695 2643 3949210
1 2 ORGEL_RTS6004-2 222.122.170.58 80 1209384412 1209460525 rts6004.ktsh.co.kr(rts6004-2) 1937068609536 27072733184 1 0 0 0 5 11 403 38298 1056 1591035
1 2 ORGEL_RTS6005-1 222.122.170.59 80 1209384412 1209460533 rts6005.ktsh.co.kr(rts6005-1) 1937068609536 66132832256 1 0 0 6 4 20 1411 105282 2146 3202371
1 2 ORGEL_RTS6005-2 222.122.170.60 80 1209384412 1209460543 rts6005.ktsh.co.kr(rts6005-2) 1937068609536 66132430848 1 0 0 1 2 21 525 47609 1447 2174332
1 2 ORGEL_RTS6006-1 222.122.170.61 80 1209384412 1209460499 rts6006.ktsh.co.kr(rts6006-1) 1937068609536 82238539776 1 0 0 1 7 23 597 51262 1141 1660232
1 2 ORGEL_RTS6006-2 222.122.170.62 80 1209384412 1209460544 rts6006.ktsh.co.kr(rts6006-2) 1937068609536 82230894592 1 0 0 0 0 12 263 29712 483 712768
1 2 ORGEL_RTS6007-1 222.122.170.63 80 1209384412 1209460508 rts6007.ktsh.co.kr(rts6007-1) 1937068609536 82620391424 1 0 0 0 2 18 22 13814 12 1443
1 2 ORGEL_RTS6007-2 222.122.170.64 80 1209384412 1209460544 rts6007.ktsh.co.kr(rts6007-2) 1937068609536 82620928000 1 0 0 0 2 18 183 24034 321 448632
1 2 ORGEL_RTS6008-1 222.122.170.65 80 1209384412 1209460489 rts6008.ktsh.co.kr(rts6008-1) 1937068609536 82663899136 1 0 0 2 6 25 551 49051 1289 1917943
1 2 ORGEL_RTS6008-2 222.122.170.66 80 1209384412 1209460544 rts6008.ktsh.co.kr(rts6008-2) 1937068609536 82664083456 1 0 0 1 0 14 276 30544 409 608209
1 2 ORGEL_RTS6009-1 222.122.170.67 80 1209384412 1209460541 rts6009.ktsh.co.kr(rts6009-1) 1937068609536 83260059648 1 0 0 2 3 19 623 53557 1101 1649928
1 2 ORGEL_RTS6009-2 222.122.170.68 80 1209384412 1209460520 rts6009.ktsh.co.kr(rts6009-2) 1937068609536 83260000256 1 0 0 0 1 9 243 27470 380 547892
1 2 ORGEL_RTS6010-1 222.122.170.69 80 1209384412 1209460541 rts6010.ktsh.co.kr(rts6010-1) 1937068609536 83407458304 1 0 0 1 2 15 520 47752 956 1414887
1 2 ORGEL_RTS6010-2 222.122.170.70 80 1209384412 1209460517 rts6010.ktsh.co.kr(rts6010-2) 1937068609536 83408902144 1 0 0 2 0 14 522 47886 959 1339780
1 2 ORGEL_RTS6011-1 222.122.170.71 80 1209384412 1209460533 rts6011.ktsh.co.kr(rts6011-1) 1937068609536 83578271744 1 0 0 1 3 18 248 28512 457 683056
1 2 ORGEL_RTS6011-2 222.122.170.72 80 1209384412 1209460542 rts6011.ktsh.co.kr(rts6011-2) 1937068609536 83577935872 1 0 0 2 4 11 431 41762 793 1187468
1 2 ORGEL_RTS6012-1 222.122.170.73 80 1209384412 1209460541 rts6012.ktsh.co.kr(rts6012-1) 1937068609536 83299608576 1 0 0 2 2 8 584 51225 891 1319855
1 2 ORGEL_RTS6012-2 222.122.170.74 80 1209384412 1209460526 rts6012.ktsh.co.kr(rts6012-2) 1937068609536 83299850240 1 0 0 1 0 10 372 36965 614 919286
1 2 ORGEL_RTS6013-1 222.122.170.75 80 1209384412 1209460526 rts6013.ktsh.co.kr(rts6013-1) 1937068609536 83175196672 1 0 0 2 1 11 193 24530 374 561119
1 2 ORGEL_RTS6013-2 222.122.170.76 80 1209384412 1209460538 rts6013.ktsh.co.kr(rts6013-2) 1937068609536 83222990848 1 0 0 0 1 6 167 22725 307 461161
1 2 ORGEL_RTS6014-1 222.122.170.77 80 1209384412 1209460517 rts6014.ktsh.co.kr(rts6014-1) 1937068609536 83333826560 1 0 0 1 5 22 116 19885 408 603678
1 2 ORGEL_RTS6014-2 222.122.170.78 80 1209384412 1209460541 rts6014.ktsh.co.kr(rts6014-2) 1937068609536 83327496192 1 0 0 0 2 14 37 14643 46 57921
1 2 ORGEL_RTS6015-1 222.122.170.79 80 1209384412 1209460508 rts6015.ktsh.co.kr(rts6015-1) 1937068609536 83419602944 1 0 0 1 2 20 455 42150 960 1436214
1 2 ORGEL_RTS6015-2 222.122.170.80 80 1209384412 1209460538 rts6015.ktsh.co.kr(rts6015-2) 1937068609536 83418060800 1 0 0 2 3 20 371 37253 581 856612
1 2 ORGEL_RTS6016-1 222.122.170.81 80 1209384412 1209460534 rts6016.ktsh.co.kr(rts6016-1) 1937068609536 93783427072 0 0 0 1 2 13 138 20735 279 418928
1 2 ORGEL_RTS6016-2 222.122.170.82 80 1209384412 1209460538 rts6016.ktsh.co.kr(rts6016-2) 1937068609536 93783443456 0 0 0 1 0 10 376 37487 700 1032628
1 2 ORGEL_RTS6017-1 222.122.170.83 80 1209384412 1209460525 rts6017.ktsh.co.kr(rts6017-1) 1937068609536 93379375104 0 0 0 2 2 8 459 43196 908 1346685
1 2 ORGEL_RTS6017-2 222.122.170.84 80 1209384412 1209460542 rts6017.ktsh.co.kr(rts6017-2) 1937068609536 93379375104 0 0 0 0 1 10 26 13633 14 11653
1 2 ORGEL_RTS6018-1 222.122.170.85 80 1209384412 1209460539 rts6018.ktsh.co.kr(rts6018-1) 1937068609536 92467392512 0 0 0 0 2 11 125 21558 166 242243
1 2 ORGEL_RTS6018-2 222.122.170.86 80 1209384412 1209460519 rts6018.ktsh.co.kr(rts6018-2) 1937068609536 92446027776 0 0 0 0 0 6 304 32802 615 925118
1 2 ORGEL_RTS6019-1 222.122.170.87 80 1209384412 1209460541 rts6019.ktsh.co.kr(rts6019-1) 1937068609536 93178335232 0 0 1 0 1 21 355 37214 714 1069403
1 2 ORGEL_RTS6019-2 222.122.170.88 80 1209384412 1209460468 rts6019.ktsh.co.kr(rts6019-2) 1937068609536 93173731328 0 0 0 0 0 5 13 13073 1 1355
1 2 ORGEL_RTS6020-1 222.122.170.89 80 1209384412 1209460542 rts6020.ktsh.co.kr(rts6020-1) 1937068609536 93616707584 0 0 0 4 3 14 612 53946 1855 2789179
1 2 ORGEL_RTS6020-2 222.122.170.90 80 1209384412 1209460517 rts6020.ktsh.co.kr(rts6020-2) 1937068609536 93616707584 0 0 0 1 1 13 246 28776 990 1492818
1 2 ORGEL_RTS6021-1 222.122.170.91 80 1209384412 1209460541 rts6021.ktsh.co.kr(rts6021-1) 1937068609536 82161403904 1 0 0 0 3 23 234 27183 440 662649
1 2 ORGEL_RTS6021-2 222.122.170.92 80 1209384412 1209460532 rts6021.ktsh.co.kr(rts6021-2) 1937068609536 82153605120 1 0 0 0 1 13 271 29379 379 570128
1 2 ORGEL_RTS6022-1 222.122.170.93 80 1209384412 1209460499 rts6022.ktsh.co.kr(rts6022-1) 1937068609536 82313377792 1 0 0 2 6 20 646 55097 1693 2543694
1 2 ORGEL_RTS6022-2 222.122.170.94 80 1209384412 1209460544 rts6022.ktsh.co.kr(rts6022-2) 1937068609536 82208518144 1 0 0 1 5 14 458 42482 864 1234696
1 2 ORGEL_RTS6023-1 222.122.170.31 80 1209384412 1209460535 rts6023.ktsh.co.kr(rts6023-2) 1937068609536 100073785344 0 0 0 1 1 7 597 50361 935 1400189
1 2 ORGEL_RTS6023-2 222.122.170.32 80 1209384412 1209460535 rts6023.ktsh.co.kr(rts6023-2) 1937068609536 100073785344 0 0 0 1 1 7 597 50361 935 1400189
1 2 ORGEL_RTS6024-1 222.122.170.33 80 1209384412 1209460525 rts6024.ktsh.co.kr(rts6024-1) 1937068609536 82349295616 1 0 0 1 3 18 527 47868 1027 1526002
1 2 ORGEL_RTS6024-2 222.122.170.34 80 1209384412 1209460540 rts6024.ktsh.co.kr(rts6024-2) 1937068609536 82362419200 1 0 0 0 1 11 596 49489 1086 1400318
1 2 ORGEL_RTS6025-1 222.122.170.35 80 1209384412 1209460535 rts6025.ktsh.co.kr(rts6025-1) 1937068609536 82723151872 1 0 0 5 3 25 432 41832 902 1339986
1 2 ORGEL_RTS6025-2 222.122.170.36 80 1209384412 1209460538 rts6025.ktsh.co.kr(rts6025-2) 1937068609536 82725890048 1 0 0 2 3 19 183 24046 329 485421
1 2 ORGEL_RTS6026-1 222.122.170.37 80 1209384412 1209460499 rts6026.ktsh.co.kr(rts6026-1) 1937068609536 42610853888 1 0 0 1 1 15 187 23444 355 208560
1 2 ORGEL_RTS6026-2 222.122.170.38 80 1209384412 1209460543 rts6026.ktsh.co.kr(rts6026-2) 1937068609536 40247345152 1 0 0 4 1 5 453 41160 666 1001988
1 2 ORGEL_RTS6027-1 222.122.170.39 80 1209384412 1209460489 rts6027.ktsh.co.kr(rts6027-1) 1937068609536 82231951360 1 0 0 0 3 25 491 44114 800 1199061
1 2 ORGEL_RTS6027-2 222.122.170.40 80 1209384412 1209460542 rts6027.ktsh.co.kr(rts6027-2) 1937068609536 83209388032 1 0 0 1 5 20 589 50483 1209 1819673
1 2 ORGEL_RTS6028-1 222.122.170.41 80 1209384412 1209460489 rts6028.ktsh.co.kr(rts6028-1) 1937068609536 83415779328 1 0 0 2 9 41 1154 88337 2267 3387216
1 2 ORGEL_RTS6028-2 222.122.170.42 80 1209384412 1209460543 rts6028.ktsh.co.kr(rts6028-2) 1937068609536 83423987712 1 0 0 0 6 35 480 44296 921 1371657
1 2 ORGEL_RTS6029-1 222.122.170.43 80 1209384412 1209460536 rts6029.ktsh.co.kr(rts6029-2) 1937068609536 83331180544 1 0 0 3 7 39 1515 113065 3075 4563832
1 2 ORGEL_RTS6029-2 222.122.170.44 80 1209384412 1209460536 rts6029.ktsh.co.kr(rts6029-2) 1937068609536 83331180544 1 0 0 3 7 39 1515 113065 3075 4563832
1 2 ORGEL_RTS6030-1 222.122.170.45 80 1209384412 1209460527 rts6030.ktsh.co.kr(rts6030-1) 1937068609536 83548628992 1 0 0 4 5 33 979 78063 2573 3801349
1 2 ORGEL_RTS6030-2 222.122.170.46 80 1209384412 1209460542 rts6030.ktsh.co.kr(rts6030-2) 1937068609536 83520800768 1 0 0 0 0 19 19 14489 8 1270
1 2 ORGEL_RTS6031-1 222.122.170.47 80 1209384412 1209460537 rts6031.ktsh.co.kr(rts6031-1) 1937068609536 86489479168 1 0 0 8 9 49 702 67897 1444 2073088
1 2 ORGEL_RTS6031-2 222.122.170.48 80 1209384412 1209460535 rts6031.ktsh.co.kr(rts6031-2) 1937068609536 86477584384 1 0 0 5 8 40 989 77187 1794 2688282
1 2 ORGEL_RTS6032-1 222.122.170.49 80 1209384412 1209460544 rts6032.ktsh.co.kr(rts6032-1) 1937068609536 84728875008 1 0 0 7 9 35 1183 100874 2509 3641262
1 2 ORGEL_RTS6032-2 222.122.170.50 80 1209384412 1209460534 rts6032.ktsh.co.kr(rts6032-2) 1937068609536 84765755392 1 0 0 0 2 36 544 48343 956 1387275
1 2 ORGEL_RTS6033-1 222.122.171.61 80 1209384412 1209460539 rts6033.ktsh.co.kr(rts6033-1) 1937068609536 85733892096 1 0 0 1 2 34 513 48519 1347 1698366
1 2 ORGEL_RTS6033-2 222.122.171.62 80 1209384412 1209460535 rts6033.ktsh.co.kr(rts6033-2) 1937068609536 85762109440 1 0 0 1 4 36 489 44757 1024 1532541
1 2 ORGEL_RTS6034-1 222.122.171.63 80 1209384412 1209460508 rts6034.ktsh.co.kr(rts6034-1) 1937068609536 1062796759040 0 0 1 5 20 69 3553 1544524 4843 5722170
1 2 ORGEL_RTS6034-2 222.122.171.64 80 1209384412 1209460542 rts6034.ktsh.co.kr(rts6034-2) 1937068609536 1062758043648 0 0 0 4 8 44 977 78491 1677 2469409
1 2 ORGEL_RTS6035-1 222.122.171.65 80 1209384412 1209460542 rts6035.ktsh.co.kr(rts6035-1) 1937068609536 1062567989248 0 0 0 10 13 65 4979 3021653 6530 6464102
1 2 ORGEL_RTS6035-2 222.122.171.66 80 1209384412 1209460517 rts6035.ktsh.co.kr(rts6035-2) 1937068609536 1062593873920 0 0 0 5 6 56 1739 1777148 1951 843082
1 3 ORGEL_RCTS01 222.122.170.99 80 1209384412 - - - - - - - - - - - - - -
1 3 ORGEL_RCTS02 222.122.170.100 80 1209384412 - - - - - - - - - - - - - -
1 4 ORGEL_DB01 222.122.170.95 5432 1209384412 - - - - - - - - - - - - - -
1 4 ORGEL_DB02 222.122.170.226 5432 1209384412 - - - - - - - - - - - - - -
1 4 ORGEL_PGLB01 222.122.170.97 6543 1209384412 - - - - - - - - - - - - - -
1 1 NCSOFT_STAT ncsoft 80 1209384412 - - - - - - - - - - - - - -
1 2 NCSOFT_BD_08_FHS001 125.141.201.211 80 1209384412 1209460539 bd-08-fhs001.ktsh.co.kr 516777674752 419448338432 0 5 0 24 252 352 10073 612357 22441 33559020
1 2 NCSOFT_BD_08_FHS002 125.141.201.212 80 1209384412 1209460534 bd-08-fhs002.ktsh.co.kr 516777674752 423482740736 0 3 1 38 170 259 14910 901847 34372 51752788
1 2 NCSOFT_BD_08_FHS003 125.141.201.213 80 1209384412 1209460538 bd-08-fhs003.ktsh.co.kr 516777674752 423769610240 0 3 0 5 198 273 6422 392058 12679 19101336
1 2 NCSOFT_BD_08_FHS004 125.141.201.214 80 1209384412 1209460540 bd-08-fhs004.ktsh.co.kr 516777674752 424557660160 0 2 0 0 119 166 53 8017 86 109438
1 2 NCSOFT_BD_08_FHS005 125.141.201.215 80 1209384412 1209460536 bd-08-fhs005.ktsh.co.kr 516777674752 423611873280 0 2 0 20 148 201 8230 503299 16810 25353962
1 2 NCSOFT_BD_08_FHS006 125.141.201.216 80 1209384412 1209460539 bd-08-fhs006.ktsh.co.kr 516777674752 424721369088 0 2 0 2 148 220 4482 275078 8439 12713680
1 2 NCSOFT_BD_08_FHS007 125.141.201.217 80 1209384412 1209460543 bd-08-fhs007.ktsh.co.kr 516777674752 424028960768 0 0 0 2 22 27 3213 197854 5956 8982358
1 2 NCSOFT_BD_08_FHS008 125.141.201.218 80 1209384412 1209460540 bd-08-fhs008.ktsh.co.kr 516777674752 424558772224 0 2 0 3 133 171 2432 150049 4196 6304202
1 2 NCSOFT_BD_08_FHS009 125.141.201.219 80 1209384412 1209460535 bd-08-fhs009.ktsh.co.kr 516777674752 424379181056 0 0 0 1 35 41 2044 127660 4296 6411434
1 2 NCSOFT_BD_08_FHS010 125.141.201.220 80 1209384412 1209460543 bd-08-fhs010.ktsh.co.kr 518239127552 423343140864 0 3 0 5 170 234 2454 156638 4090 6155801
1 2 NCSOFT_BD_08_FHS011 125.141.201.221 80 1209384412 1209460537 bd-08-fhs011.ktsh.co.kr 516777674752 447453247488 0 0 0 13 13 19 4839 292618 12307 18532748
1 2 NCSOFT_BD_08_FHS012 125.141.201.222 80 1209384412 1209460535 bd-08-fhs012.ktsh.co.kr 516777674752 447454253056 0 3 0 19 170 224 6907 421755 13269 19921392
1 2 NCSOFT_BD_08_FHS013 125.141.201.223 80 1209384412 1209460539 bd-08-fhs013.ktsh.co.kr 516777674752 447446425600 0 0 0 5 42 67 2273 140943 5534 8358784
1 2 NCSOFT_BD_08_FHS014 125.141.201.224 80 1209384412 1209460541 bd-08-fhs014.ktsh.co.kr 516777674752 447436509184 0 3 0 0 180 248 3898 241085 7305 10962873
1 2 NCSOFT_BD_08_FHS015 125.141.201.225 80 1209384412 1209460538 bd-08-fhs015.ktsh.co.kr 516777674752 447459751936 0 2 0 7 145 186 6849 417918 13128 19723630
1 2 NCSOFT_BD_08_FHS016 125.141.201.226 80 1209384412 1209460544 bd-08-fhs016.ktsh.co.kr 516777674752 447451113472 0 0 0 3 40 44 5537 337539 10131 15271661
1 2 NCSOFT_BD_08_FHS017 125.141.201.227 80 1209384412 1209460542 bd-08-fhs017.ktsh.co.kr 516777674752 447449745408 0 2 0 8 139 187 7113 432430 17902 26924768
1 2 NCSOFT_BD_08_FHS018 125.141.201.228 80 1209384412 1209460536 bd-08-fhs018.ktsh.co.kr 516777674752 447315093504 0 0 0 3 41 46 1836 112247 4354 6585828
1 2 NCSOFT_BD_08_FHS019 125.141.201.229 80 1209384412 1209460535 bd-08-fhs019.ktsh.co.kr 516777674752 447459024896 0 1 0 0 51 77 2993 184257 8723 13161982
1 2 NCSOFT_BD_08_FHS020 125.141.201.230 80 1209384412 1209460541 bd-08-fhs020.ktsh.co.kr 516777674752 447445952512 0 0 0 15 12 14 2397 145970 4348 6557216
1 3 NCSOFT_NC_RCTS01 125.141.201.205 13104 1209384412 - - - - - - - - - - - - - -
1 3 NCSOFT_NC_RCTS02 125.141.201.206 13104 1209384412 - - - - - - - - - - - - - -
1 4 NCSOFT_NC_PGLB01 125.141.201.203 6543 1209384412 - - - - - - - - - - - - - -
1 4 NCSOFT_NC_RCDB01 125.141.201.201 5432 1209384412 - - - - - - - - - - - - - -
1 4 NCSOFT_NC_RCDB02 125.141.201.202 5432 1209384412 - - - - - - - - - - - - - -
1 0 FREEZONE_RC freezonetest 80 1209384412 - - - - - - - - - - - - - -
1 2 FREEZONE_NS_RTS0001 125.141.192.21 80 1209384412 1209460543 ns-rts0001.ktsh.co.kr 1937068609536 1492333795328 0 0 0 0 4 30 51 6931 57 25268
1 2 FREEZONE_NS_RTS0002 125.141.192.22 80 1209384412 1209460542 ns-rts0002.ktsh.co.kr 1937068609536 1493444478976 0 0 0 0 4 5 21 2887 21 4406
1 2 FREEZONE_NS_RTS0003 125.141.192.23 80 1209384412 1209460540 ns-rts0003.ktsh.co.kr 1937068609536 1492710082560 0 0 0 0 12 23 28 4203 42 41357
1 2 FREEZONE_NS_RTS0004 125.141.192.24 80 1209384412 1209460541 ns-rts0004.ktsh.co.kr 1937068609536 1691431079936 0 0 0 0 7 25 52 5148 77 91593
1 2 FREEZONE_NS_RTS0005 125.141.192.25 80 1209384412 1209460549 ns-rts0005.ktsh.co.kr 1937068609536 1493499244544 0 0 0 0 22 38 40 6775 46 25252
1 3 FREEZONE_NS_RCTS01 125.141.192.9 80 1209384412 - - - - - - - - - - - - - -
1 3 FREEZONE_NS_RCTS02 125.141.192.10 80 1209384412 - - - - - - - - - - - - - -
1 4 FREEZONE_NS_DB01 125.141.192.4 5432 1209384412 - - - - - - - - - - - - - -
1 4 FREEZONE_NS_DB02 125.141.192.136 5432 1209384412 - - - - - - - - - - - - - -
1 4 FREEZONE_NS_PGLB01 125.141.192.138 6543 1209384412 - - - - - - - - - - - - - -
3 0 OLSOFT_RC rc105-test 80 1209384412 - - - - - - - - - - - - - -
3 2 OLSOFT_NS_02_FHS001 125.141.214.11 80 1209384412 - - - - - - - - - - - - - -
3 2 OLSOFT_NS_02_FHS002 125.141.214.12 80 1209384412 - - - - - - - - - - - - - -
3 2 OLSOFT_NS_02_FHS003 125.141.214.13 80 1209384412 - - - - - - - - - - - - - -
3 2 OLSOFT_NS_02_FHS004 125.141.214.14 80 1209384412 - - - - - - - - - - - - - -
3 2 OLSOFT_NS_02_FHS005 125.141.214.15 80 1209384412 - - - - - - - - - - - - - -
3 2 OLSOFT_NS_02_FHS006 125.141.214.16 80 1209384412 - - - - - - - - - - - - - -
3 2 OLSOFT_NS_02_FHS007 125.141.214.17 80 1209384412 - - - - - - - - - - - - - -
3 2 OLSOFT_NS_02_FHS008 125.141.214.18 80 1209384412 - - - - - - - - - - - - - -
3 2 OLSOFT_NS_02_FHS009 125.141.214.19 80 1209384412 - - - - - - - - - - - - - -
3 2 OLSOFT_NS_02_FHS010 125.141.214.20 80 1209384412 - - - - - - - - - - - - - -
3 2 OLSOFT_NS_02_FHS011 125.141.214.21 80 1209384412 - - - - - - - - - - - - - -
3 2 OLSOFT_NS_02_FHS012 125.141.214.22 80 1209384412 - - - - - - - - - - - - - -
3 2 OLSOFT_NS_02_FHS013 125.141.214.23 80 1209384412 - - - - - - - - - - - - - -
3 2 OLSOFT_NS_02_FHS014 125.141.214.24 80 1209384412 - - - - - - - - - - - - - -
3 2 OLSOFT_NS_02_FHS015 125.141.214.25 80 1209384412 - - - - - - - - - - - - - -
3 2 OLSOFT_NS_02_FHS016 125.141.214.26 80 1209384412 - - - - - - - - - - - - - -
3 2 OLSOFT_NS_02_FHS017 125.141.214.27 80 1209384412 - - - - - - - - - - - - - -
3 2 OLSOFT_NS_02_FHS018 125.141.214.28 80 1209384412 - - - - - - - - - - - - - -
3 2 OLSOFT_NS_02_FHS019 125.141.214.29 80 1209384412 - - - - - - - - - - - - - -
3 2 OLSOFT_NS_02_FHS020 125.141.214.30 80 1209384412 - - - - - - - - - - - - - -
3 2 OLSOFT_NS_02_FHS021 125.141.214.31 80 1209384412 - - - - - - - - - - - - - -
3 2 OLSOFT_NS_02_FHS022 125.141.214.32 80 1209384412 - - - - - - - - - - - - - -
3 2 OLSOFT_NS_02_FHS023 125.141.214.33 80 1209384412 - - - - - - - - - - - - - -
3 2 OLSOFT_NS_02_FHS024 125.141.214.34 80 1209384412 - - - - - - - - - - - - - -
3 2 OLSOFT_NS_02_FHS025 125.141.214.35 80 1209384412 - - - - - - - - - - - - - -
3 2 OLSOFT_NS_02_FHS026 125.141.214.36 80 1209384412 - - - - - - - - - - - - - -
3 2 OLSOFT_NS_02_FHS027 125.141.214.37 80 1209384412 - - - - - - - - - - - - - -
3 2 OLSOFT_NS_02_FHS028 125.141.214.38 80 1209384412 - - - - - - - - - - - - - -
3 2 OLSOFT_NS_02_FHS029 125.141.214.39 80 1209384412 - - - - - - - - - - - - - -
3 2 OLSOFT_NS_02_FHS030 125.141.214.40 80 1209384412 - - - - - - - - - - - - - -
3 2 OLSOFT_NS_02_FHS031 125.141.214.41 80 1209384412 - - - - - - - - - - - - - -
3 2 OLSOFT_NS_02_FHS032 125.141.214.42 80 1209384412 - - - - - - - - - - - - - -
3 2 OLSOFT_NS_02_FHS033 125.141.214.43 80 1209384412 - - - - - - - - - - - - - -
3 2 OLSOFT_NS_02_FHS034 125.141.214.44 80 1209384412 - - - - - - - - - - - - - -
3 2 OLSOFT_NS_02_FHS035 125.141.214.45 80 1209384412 - - - - - - - - - - - - - -
3 2 OLSOFT_NS_02_FHS036 125.141.214.46 80 1209384412 - - - - - - - - - - - - - -
3 2 OLSOFT_NS_02_FHS037 125.141.214.47 80 1209384412 - - - - - - - - - - - - - -
3 2 OLSOFT_NS_02_FHS038 125.141.214.48 80 1209384412 - - - - - - - - - - - - - -
3 2 OLSOFT_NS_02_FHS039 125.141.214.49 80 1209384412 - - - - - - - - - - - - - -
3 2 OLSOFT_NS_02_FHS040 125.141.214.50 80 1209384412 - - - - - - - - - - - - - -
3 2 OLSOFT_NS_02_FHS041 125.141.214.51 80 1209384412 - - - - - - - - - - - - - -
3 2 OLSOFT_NS_02_FHS042 125.141.214.52 80 1209384412 - - - - - - - - - - - - - -
3 2 OLSOFT_NS_02_FHS043 125.141.214.53 80 1209384412 - - - - - - - - - - - - - -
3 2 OLSOFT_NS_02_FHS044 125.141.214.54 80 1209384412 - - - - - - - - - - - - - -
3 2 OLSOFT_NS_02_FHS045 125.141.214.55 80 1209384412 - - - - - - - - - - - - - -
3 2 OLSOFT_NS_02_FHS046 125.141.214.56 80 1209384412 - - - - - - - - - - - - - -
3 2 OLSOFT_NS_02_FHS047 125.141.214.57 80 1209384412 - - - - - - - - - - - - - -
3 2 OLSOFT_NS_02_FHS048 125.141.214.58 80 1209384412 - - - - - - - - - - - - - -
3 2 OLSOFT_NS_02_FHS049 125.141.214.59 80 1209384412 - - - - - - - - - - - - - -
3 2 OLSOFT_NS_02_FHS050 125.141.214.60 80 1209384412 - - - - - - - - - - - - - -
3 2 OLSOFT_NS_02_FHS051 125.141.214.61 80 1209384412 - - - - - - - - - - - - - -
3 2 OLSOFT_NS_02_FHS052 125.141.214.62 80 1209384412 - - - - - - - - - - - - - -
3 2 OLSOFT_NS_02_FHS053 125.141.214.63 80 1209384412 - - - - - - - - - - - - - -
3 2 OLSOFT_NS_02_FHS054 125.141.214.64 80 1209384412 - - - - - - - - - - - - - -
3 2 OLSOFT_NS_02_FHS055 125.141.214.65 80 1209384412 - - - - - - - - - - - - - -
3 2 OLSOFT_NS_02_FHS056 125.141.214.66 80 1209384412 - - - - - - - - - - - - - -
3 2 OLSOFT_NS_02_FHS057 125.141.214.67 80 1209384412 - - - - - - - - - - - - - -
3 2 OLSOFT_NS_02_FHS058 125.141.214.68 80 1209384412 - - - - - - - - - - - - - -
3 2 OLSOFT_NS_02_FHS059 125.141.214.69 80 1209384412 - - - - - - - - - - - - - -
3 2 OLSOFT_NS_02_FHS060 125.141.214.70 80 1209384412 - - - - - - - - - - - - - -
3 2 OLSOFT_NS_02_FHS061 125.141.214.71 80 1209384412 - - - - - - - - - - - - - -
3 2 OLSOFT_NS_02_FHS062 125.141.214.72 80 1209384412 - - - - - - - - - - - - - -
3 2 OLSOFT_NS_02_FHS063 125.141.214.73 80 1209384412 - - - - - - - - - - - - - -
3 2 OLSOFT_NS_02_FHS064 125.141.214.74 80 1209384412 - - - - - - - - - - - - - -
3 3 OLSOFT_NS_RCTS01 125.141.214.9 13104 1209384412 - - - - - - - - - - - - - -
3 3 OLSOFT_NS_RCTS02 125.141.214.10 13104 1209384412 - - - - - - - - - - - - - -
3 4 OLSOFT_NS_PGLB01 125.141.214.7 6543 1209384412 - - - - - - - - - - - - - -
3 4 OLSOFT_NS_RCDB01 125.141.214.5 5432 1209384412 - - - - - - - - - - - - - -
3 4 OLSOFT_NS_RCDB02 125.141.214.136 5432 1209384412 - - - - - - - - - - - - - -
1 0 JJANGHARD_NS_RC rc103-test 80 1209384412 - - - - - - - - - - - - - -
1 2 JJANGHARD_NS_RTS2001 125.141.193.11 80 1209384412 1209460540 ns-rts2001.ktsh.co.kr 1937068609536 1640473188352 0 0 0 0 0 1 11 5216 5 421
1 2 JJANGHARD_NS_RTS2002 125.141.193.12 80 1209384412 1209460541 ns-rts2002.ktsh.co.kr 1937068609536 1639545651200 0 0 0 1 3 5 2129 141843 5100 7733322
1 2 JJANGHARD_NS_RTS2003 125.141.193.13 80 1209384412 1209460538 ns-rts2003.ktsh.co.kr 1937068609536 1639417477120 0 0 0 0 4 5 937 155114 3484 5063763
1 2 JJANGHARD_NS_RTS2004 125.141.193.14 80 1209384412 1209460541 ns-rts2004.ktsh.co.kr 1937068609536 1640246614016 0 0 0 0 3 4 1209 81124 2440 3675591
1 2 JJANGHARD_NS_RTS2005 125.141.193.15 80 1209384412 1209460533 ns-rts2005.ktsh.co.kr 1937068609536 1639503966208 0 0 0 1 9 10 3323 217270 7843 11728941
1 2 JJANGHARD_NS_RTS2006 125.141.193.16 80 1209384412 1209460540 ns-rts2006.ktsh.co.kr 1937068609536 1640165337088 0 0 0 1 4 10 1306 89714 5092 7692142
1 2 JJANGHARD_NS_RTS2007 125.141.193.17 80 1209384412 1209460532 ns-rts2007.ktsh.co.kr 1937068609536 1639650623488 0 0 0 0 2 5 929 64423 1879 2843800
1 2 JJANGHARD_NS_RTS2008 125.141.193.18 80 1209384412 1209460532 ns-rts2008.ktsh.co.kr 1937068609536 1640022753280 0 0 0 2 1 3 3042 202428 6003 9078639
1 2 JJANGHARD_NS_RTS2009 125.141.193.19 80 1209384412 1209460539 ns-rts2009.ktsh.co.kr 1937068609536 1640060755968 0 0 0 0 2 6 1287 87105 3482 4791077
1 2 JJANGHARD_NS_RTS2010 125.141.193.20 80 1209384412 1209460540 ns-rts2010.ktsh.co.kr 1937068609536 1639518148608 0 0 0 0 3 5 762 53110 1852 2808229
1 2 JJANGHARD_NS_RTS2011 125.141.193.21 80 1209384412 1209460539 ns-rts2011.ktsh.co.kr 1937068609536 1640070457344 0 0 0 0 1 2 734 52612 1445 1748889
1 2 JJANGHARD_NS_RTS2012 125.141.193.22 80 1209384412 1209460536 ns-rts2012.ktsh.co.kr 1937068609536 1640168699904 0 0 0 0 2 4 607 44371 894 1346336
1 2 JJANGHARD_NS_RTS2013 125.141.193.23 80 1209384412 1209460535 ns-rts2013.ktsh.co.kr 1937068609536 1639625273344 0 0 0 1 4 6 2676 3297969 3170 1672039
1 2 JJANGHARD_NS_RTS2014 125.141.193.24 80 1209384412 1209460533 ns-rts2014.ktsh.co.kr 1937068609536 1640175128576 0 0 0 0 3 5 864 60929 1798 2685654
1 2 JJANGHARD_NS_RTS2015 125.141.193.25 80 1209384412 1209460540 ns-rts2015.ktsh.co.kr 1937068609536 1639133259776 0 0 0 2 4 7 1534 104160 2940 4321983
1 2 JJANGHARD_NS_RTS2016 125.141.193.26 80 1209384412 1209460531 ns-rts2016.ktsh.co.kr 1937068609536 1639560749056 0 0 0 0 2 5 642 45147 1282 1942451
1 2 JJANGHARD_NS_RTS2017 125.141.193.27 80 1209384412 1209460541 ns-rts2017.ktsh.co.kr 1937068609536 1640043702272 0 0 0 0 2 4 357 27805 1487 2255733
1 2 JJANGHARD_NS_RTS2018 125.141.193.28 80 1209384412 1209460535 ns-rts2018.ktsh.co.kr 1937068609536 1638925891584 0 0 0 1 5 6 2013 133577 3442 5220085
1 2 JJANGHARD_NS_RTS2019 125.141.193.29 80 1209384412 1209460539 ns-rts2019.ktsh.co.kr 1937068609536 1640003473408 0 0 0 0 2 3 696 49027 1708 2589546
1 2 JJANGHARD_NS_RTS2020 125.141.193.30 80 1209384412 1209460533 ns-rts2020.ktsh.co.kr 1937068609536 1639901345792 0 0 0 0 4 5 410 31876 808 1215015
1 2 JJANGHARD_NS_RTS2021 125.141.193.31 80 1209384412 1209460539 ns-rts2021.ktsh.co.kr 1937068609536 1640098461696 0 0 0 2 6 9 3371 220976 6472 9753049
1 2 JJANGHARD_NS_RTS2022 125.141.193.32 80 1209384412 1209460540 ns-rts2022.ktsh.co.kr 1937068609536 1640120487936 0 0 0 0 1 2 152 14674 1040 1577057
1 2 JJANGHARD_NS_RTS2023 125.141.193.33 80 1209384412 1209460539 ns-rts2023.ktsh.co.kr 1937068609536 1639945846784 0 0 0 0 2 3 510 37114 947 1436472
1 2 JJANGHARD_NS_RTS2024 125.141.193.34 80 1209384412 1209460542 ns-rts2024.ktsh.co.kr 1937068609536 1639582783488 0 0 0 2 3 6 2255 150112 5367 7913640
1 2 JJANGHARD_NS_RTS2025 125.141.193.35 80 1209384412 1209460539 ns-rts2025.ktsh.co.kr 1937068609536 1638883147776 0 0 0 1 4 5 2309 151699 5576 8439865
1 2 JJANGHARD_NS_RTS2026 125.141.193.36 80 1209384412 1209460540 ns-rts2026.ktsh.co.kr 1937068609536 1639989110784 0 0 0 1 2 3 458 34418 1173 1774499
1 2 JJANGHARD_NS_RTS2027 125.141.193.37 80 1209384412 1209460533 ns-rts2027.ktsh.co.kr 1937068609536 1639579715584 0 0 0 0 5 9 828 57710 1279 1939821
1 2 JJANGHARD_NS_RTS2028 125.141.193.38 80 1209384412 1209460539 ns-rts2028.ktsh.co.kr 1937068609536 1640029040640 0 0 0 0 1 4 945 64890 1397 2088302
1 2 JJANGHARD_NS_RTS2029 125.141.193.39 80 1209384412 1209460537 ns-rts2029.ktsh.co.kr 1937068609536 1639536558080 0 0 0 0 9 12 7441 480580 13617 20578944
1 2 JJANGHARD_NS_RTS2030 125.141.193.40 80 1209384412 1209460533 ns-rts2030.ktsh.co.kr 1937068609536 1639922237440 0 0 0 0 0 3 7 5414 1 169
1 2 JJANGHARD_NS_RTS2031 125.141.193.41 80 1209384412 1209460532 ns-rts2031.ktsh.co.kr 1937068609536 1638954553344 0 0 0 0 4 5 1935 127972 3646 5525145
1 2 JJANGHARD_NS_RTS2032 125.141.193.42 80 1209384412 1209460541 ns-rts2032.ktsh.co.kr 1937068609536 1639985747968 0 0 0 0 2 3 1416 95224 2643 3370075
1 2 JJANGHARD_NS_RTS2033 125.141.193.43 80 1209384412 1209460541 ns-rts2033.ktsh.co.kr 1937068609536 1639999137792 0 0 0 0 1 3 8 4861 4 5348
1 2 JJANGHARD_NS_RTS2034 125.141.193.44 80 1209384412 1209460532 ns-rts2034.ktsh.co.kr 1937068609536 1639007401984 0 0 0 0 3 5 473 34979 1105 1656591
1 2 JJANGHARD_NS_RTS2035 125.141.193.45 80 1209384412 1209460536 ns-rts2035.ktsh.co.kr 1937068609536 1639435800576 0 0 0 6 9 11 9779 628549 19035 28150503
1 2 JJANGHARD_NS_RTS2036 125.141.193.46 80 1209384412 1209460541 ns-rts2036.ktsh.co.kr 1937068609536 1639146047488 0 0 0 0 2 3 1475 99718 2229 3381795
1 2 JJANGHARD_NS_RTS2037 125.141.193.47 80 1209384412 1209460532 ns-rts2037.ktsh.co.kr 1937068609536 1639133868032 0 0 0 0 2 3 424 32251 1683 2549810
1 2 JJANGHARD_NS_RTS2038 125.141.193.48 80 1209384412 1209460541 ns-rts2038.ktsh.co.kr 1937068609536 1639149479936 0 0 0 8 4 7 5355 747746 9693 14299978
1 2 JJANGHARD_NS_RTS2039 125.141.193.49 80 1209384412 1209460534 ns-rts2039.ktsh.co.kr 1937068609536 1638971080704 0 0 0 0 2 3 487 36224 1798 2729725
1 2 JJANGHARD_NS_RTS2040 125.141.193.50 80 1209384412 1209460539 ns-rts2040.ktsh.co.kr 1937068609536 1638772424704 0 0 0 5 9 11 5465 355776 10279 14923027
1 2 JJANGHARD_NS_RTS2041 125.141.193.51 80 1209384412 1209460536 ns-rts2041.ktsh.co.kr 1937068609536 1639928039424 0 0 0 0 3 6 819 57519 2345 3547869
1 2 JJANGHARD_NS_RTS2042 125.141.193.52 80 1209384412 1209460540 ns-rts2042.ktsh.co.kr 1937068609536 1640137787392 0 0 0 0 2 3 1630 109544 2670 4052122
1 2 JJANGHARD_NS_RTS2043 125.141.193.53 80 1209384412 1209460541 ns-rts2043.ktsh.co.kr 1937068609536 1639233529856 0 0 0 4 5 8 5467 356667 8655 13138513
1 2 JJANGHARD_NS_RTS2044 125.141.193.54 80 1209384412 1209460538 ns-rts2044.ktsh.co.kr 1937068609536 1638787014656 0 0 0 3 4 7 1279 86479 4614 6996941
1 2 JJANGHARD_NS_RTS2045 125.141.193.55 80 1209384412 1209460540 ns-rts2045.ktsh.co.kr 1937068609536 1639362703360 0 0 0 0 3 4 623 44208 1053 1580772
1 2 JJANGHARD_NS_RTS2046 125.141.193.56 80 1209384412 1209460538 ns-rts2046.ktsh.co.kr 1937068609536 1640182013952 0 0 0 0 3 4 623 44235 1214 1820650
1 2 JJANGHARD_NS_RTS2047 125.141.193.57 80 1209384412 1209460535 ns-rts2047.ktsh.co.kr 1937068609536 1640039485440 0 0 0 0 2 3 781 54731 1595 2419967
1 2 JJANGHARD_NS_RTS2048 125.141.193.58 80 1209384412 1209460540 ns-rts2048.ktsh.co.kr 1937068609536 1639556683776 0 0 0 0 3 6 1226 83628 3769 5567212
1 2 JJANGHARD_NS_RTS2049 125.141.193.59 80 1209384412 1209460541 ns-rts2049.ktsh.co.kr 1937068609536 1639341662208 0 0 0 0 0 3 6 4949 1 165
1 2 JJANGHARD_NS_RTS2050 125.141.193.60 80 1209384412 1209460538 ns-rts2050.ktsh.co.kr 1937068609536 1639627579392 0 0 0 0 1 2 793 54996 1182 1787015
1 3 JJANGHARD_NS_RCTS01 125.141.193.9 80 1209384412 - - - - - - - - - - - - - -
1 3 JJANGHARD_NS_RCTS02 125.141.193.10 80 1209384412 - - - - - - - - - - - - - -
1 4 JJANGHARD_NS_DB01 125.141.193.5 5432 1209384412 - - - - - - - - - - - - - -
1 4 JJANGHARD_NS_DB02 125.141.193.136 5432 1209384412 - - - - - - - - - - - - - -
1 4 JJANGHARD_NS_PGLB01 125.141.193.7 6543 1209384412 - - - - - - - - - - - - - -
3 0 INCOK_RC incok 80 1209384412 - - - - - - - - - - - - - -
1 2 INCOK_NS_RTS1001 125.141.192.51 80 1209384412 1209460534 ns-04-fhs001.ktsh.co.kr 1937068609536 628972003328 0 0 0 0 2 3 277 27176 397 593001
1 2 INCOK_NS_RTS1002 125.141.192.52 80 1209384412 1209460531 ns-04-fhs002.ktsh.co.kr 1937068609536 629860444160 0 0 0 0 2 3 214 23392 292 430949
1 2 INCOK_NS_RTS1003 125.141.192.53 80 1209384412 1209460536 ns-04-fhs003.ktsh.co.kr 1937068609536 629782845440 0 0 0 1 1 2 2371 161725 3600 5461378
1 2 INCOK_NS_RTS1004 125.141.192.54 80 1209384412 1209460531 ns-04-fhs004.ktsh.co.kr 1937068609536 628504377344 0 0 0 0 1 2 19 10694 40 56055
1 2 INCOK_NS_RTS1005 125.141.192.55 80 1209384412 1209460531 ns-04-fhs005.ktsh.co.kr 1937068609536 627307155456 0 0 0 2 1 2 2271 155664 3568 5407239
1 2 INCOK_NS_RTS1006 125.141.192.56 80 1209384412 1209460538 ns-04-fhs006.ktsh.co.kr 1937068609536 630152775680 0 0 0 0 1 3 283 27801 754 1141405
1 2 INCOK_NS_RTS1007 125.141.192.57 80 1209384412 1209460537 ns-04-fhs007.ktsh.co.kr 1937068609536 629672660992 0 0 0 0 2 3 133 112492 160 148762
1 2 INCOK_NS_RTS1008 125.141.192.58 80 1209384412 1209460538 ns-04-fhs008.ktsh.co.kr 1937068609536 630018310144 0 0 0 0 2 3 340 86378 641 913852
1 2 INCOK_NS_RTS1009 125.141.192.59 80 1209384412 1209460531 ns-04-fhs009.ktsh.co.kr 1937068609536 630187939840 0 0 0 1 3 4 1020 75124 1797 2723644
1 2 INCOK_NS_RTS1010 125.141.192.60 80 1209384412 1209460536 ns-04-fhs010.ktsh.co.kr 1937068609536 630161537024 0 0 0 0 2 3 315 30177 902 1365830
1 2 INCOK_NS_RTS1011 125.141.192.61 80 1209384412 1209460537 ns-04-fhs011.ktsh.co.kr 1937068609536 627877910528 0 0 0 0 1 2 610 48620 895 1347942
1 2 INCOK_NS_RTS1012 125.141.192.62 80 1209384412 1209460538 ns-04-fhs012.ktsh.co.kr 1937068609536 630165278720 0 0 0 0 0 1 13 10265 2 276
1 2 INCOK_NS_RTS1013 125.141.192.63 80 1209384412 1209460534 ns-04-fhs013.ktsh.co.kr 1937068609536 629819631616 0 0 0 0 1 2 141 18211 249 375160
1 2 INCOK_NS_RTS1014 125.141.192.64 80 1209384412 1209460531 ns-04-fhs014.ktsh.co.kr 1937068609536 629590546432 0 0 0 2 2 3 2489 413209 6026 8896041
1 2 INCOK_NS_RTS1015 125.141.192.65 80 1209384412 1209460536 ns-04-fhs015.ktsh.co.kr 1937068609536 629224896512 0 0 0 0 0 1 13 10367 3 301
1 2 INCOK_NS_RTS1016 125.141.192.66 80 1209384412 1209460539 ns-04-fhs016.ktsh.co.kr 1937068609536 630142984192 0 0 0 0 0 1 13 10639 2 247
1 2 INCOK_NS_RTS1017 125.141.192.67 80 1209384412 1209460536 ns-04-fhs017.ktsh.co.kr 1937068609536 630127394816 0 0 0 0 0 1 13 10477 3 291
1 2 INCOK_NS_RTS1018 125.141.192.68 80 1209384412 1209460540 ns-04-fhs018.ktsh.co.kr 1937068609536 629781360640 0 0 0 0 1 6 333 31236 741 1114452
1 2 INCOK_NS_RTS1019 125.141.192.69 80 1209384412 1209460541 ns-04-fhs019.ktsh.co.kr 1937068609536 629555802112 0 0 0 0 1 2 215 23260 578 863408
1 2 INCOK_NS_RTS1020 125.141.192.70 80 1209384412 1209460534 ns-04-fhs020.ktsh.co.kr 1937068609536 630101749760 0 0 0 0 2 3 952 70466 1408 2135203
1 2 INCOK_NS_RTS1021 125.141.192.71 80 1209384412 1209460536 ns-04-fhs021.ktsh.co.kr 1937068609536 627121555456 0 0 0 0 1 2 13 10361 3 305
1 2 INCOK_NS_RTS1022 125.141.192.72 80 1209384412 1209460536 ns-04-fhs022.ktsh.co.kr 1937068609536 630175752192 0 0 0 0 0 1 13 10555 2 276
1 2 INCOK_NS_RTS1023 125.141.192.73 80 1209384412 1209460535 ns-04-fhs023.ktsh.co.kr 1937068609536 629932492800 0 0 0 0 0 1 18 10620 7 555
1 2 INCOK_NS_RTS1024 125.141.192.74 80 1209384412 1209460538 ns-04-fhs024.ktsh.co.kr 1937068609536 630176430080 0 0 0 0 1 2 184 21153 346 522482
1 2 INCOK_NS_RTS1025 125.141.192.75 80 1209384412 1209460534 ns-04-fhs025.ktsh.co.kr 1937068609536 630140254208 0 0 0 0 2 3 274 26590 856 1297975
1 2 INCOK_NS_RTS1026 125.141.192.76 80 1209384412 1209460538 ns-04-fhs026.ktsh.co.kr 1937068609536 628142088192 0 0 1 1 2 3 862 64830 1812 2417366
1 2 INCOK_NS_RTS1027 125.141.192.77 80 1209384412 1209460540 ns-04-fhs027.ktsh.co.kr 1937068609536 629700528128 0 0 0 0 1 2 73 14432 117 173148
1 2 INCOK_NS_RTS1028 125.141.192.78 80 1209384412 1209460532 ns-04-fhs028.ktsh.co.kr 1937068609536 630219403264 0 0 0 0 2 3 203 75671 1534 2271085
1 2 INCOK_NS_RTS1029 125.141.192.79 80 1209384412 1209460535 ns-04-fhs029.ktsh.co.kr 1937068609536 629789702144 0 0 0 0 0 1 13 10151 3 300
1 2 INCOK_NS_RTS1030 125.141.192.80 80 1209384412 1209460537 ns-04-fhs030.ktsh.co.kr 1937068609536 630169841664 0 0 0 0 0 1 13 10264 3 305
1 2 INCOK_NS_RTS1031 125.141.192.81 80 1209384412 1209460537 ns-04-fhs031.ktsh.co.kr 1937068609536 629797683200 0 0 0 0 2 3 694 53483 1546 2342191
1 2 INCOK_NS_RTS1032 125.141.192.82 80 1209384412 1209460537 ns-04-fhs032.ktsh.co.kr 1937068609536 629752268800 0 0 0 1 4 5 793 60945 3071 4579113
1 2 INCOK_NS_RTS1033 125.141.192.83 80 1209384412 1209460537 ns-04-fhs033.ktsh.co.kr 1937068609536 630177222656 0 0 0 0 0 1 13 10266 3 305
1 2 INCOK_NS_RTS1034 125.141.192.84 80 1209384412 1209460535 ns-04-fhs034.ktsh.co.kr 1937068609536 629592930304 0 0 0 1 2 3 1682 117403 3993 6060369
1 2 INCOK_NS_RTS1035 125.141.192.85 80 1209384412 1209460536 ns-04-fhs035.ktsh.co.kr 1937068609536 626022168576 0 0 0 2 2 3 729 56223 1195 1765156
1 2 INCOK_NS_RTS1036 125.141.192.86 80 1209384412 1209460532 ns-04-fhs036.ktsh.co.kr 1937068609536 630160762880 0 0 0 0 2 3 253 108258 334 420999
1 2 INCOK_NS_RTS1037 125.141.192.87 80 1209384412 1209460539 ns-04-fhs037.ktsh.co.kr 1937068609536 630216056832 0 0 0 0 0 1 13 10652 2 276
1 2 INCOK_NS_RTS1038 125.141.192.88 80 1209384412 1209460532 ns-04-fhs038.ktsh.co.kr 1937068609536 630175604736 0 0 0 1 4 5 669 53780 1763 2667303
1 2 INCOK_NS_RTS1039 125.141.192.89 80 1209384412 1209460532 ns-04-fhs039.ktsh.co.kr 1937068609536 630088398848 0 0 0 0 0 2 13 10298 3 340
1 2 INCOK_NS_RTS1040 125.141.192.90 80 1209384412 1209460540 ns-04-fhs040.ktsh.co.kr 1937068609536 630120957952 0 0 0 0 1 2 373 33643 667 1003595
1 2 INCOK_NS_RTS1041 125.141.192.91 80 1209384412 1209460533 ns-04-fhs041.ktsh.co.kr 1937068609536 629143949312 0 0 0 0 1 2 238 24513 455 686024
1 2 INCOK_NS_RTS1042 125.141.192.92 80 1209384412 1209460536 ns-04-fhs042.ktsh.co.kr 1937068609536 626905636864 0 0 0 0 0 1 13 10262 3 303
1 2 INCOK_NS_RTS1043 125.141.192.93 80 1209384412 1209460539 ns-04-fhs043.ktsh.co.kr 1937068609536 630161612800 0 0 0 0 0 1 13 10918 2 296
1 2 INCOK_NS_RTS1044 125.141.192.94 80 1209384412 1209460539 ns-04-fhs044.ktsh.co.kr 1937068609536 630180251648 0 0 0 0 0 1 13 10555 2 276
1 2 INCOK_NS_RTS1045 125.141.192.95 80 1209384412 1209460535 ns-04-fhs045.ktsh.co.kr 1937068609536 630085691392 0 0 0 0 0 1 18 10400 7 557
1 2 INCOK_NS_RTS1046 125.141.192.96 80 1209384412 1209460534 ns-04-fhs046.ktsh.co.kr 1937068609536 628396365824 0 0 0 0 2 3 142 130487 159 121379
1 2 INCOK_NS_RTS1047 125.141.192.97 80 1209384412 1209460539 ns-04-fhs047.ktsh.co.kr 1937068609536 629908088832 0 0 0 0 2 3 654 51925 963 1418681
1 2 INCOK_NS_RTS1048 125.141.192.98 80 1209384412 1209460539 ns-04-fhs048.ktsh.co.kr 1937068609536 630179479552 0 0 0 0 1 2 13 10732 2 244
1 2 INCOK_NS_RTS1049 125.141.192.99 80 1209384412 1209460538 ns-04-fhs049.ktsh.co.kr 1937068609536 629693526016 0 0 0 0 1 2 67 13851 157 228478
1 2 INCOK_NS_RTS1050 125.141.192.100 80 1209384412 1209460539 ns-04-fhs050.ktsh.co.kr 1937068609536 629813510144 0 0 0 0 0 2 13 10564 2 276
1 2 INCOK_NS_RTS1051 125.141.192.101 80 1209384412 1209460531 ns-04-fhs051.ktsh.co.kr 1937068609536 629781667840 0 0 0 0 1 2 381 33917 789 1187493
1 2 INCOK_NS_RTS1052 125.141.192.102 80 1209384412 1209460540 ns-04-fhs052.ktsh.co.kr 1937068609536 630191075328 0 0 0 0 0 1 749 58442 1119 1622550
1 2 INCOK_NS_RTS1053 125.141.192.103 80 1209384412 1209460539 ns-04-fhs053.ktsh.co.kr 1937068609536 630166798336 0 0 0 0 0 1 13 10638 2 247
1 2 INCOK_NS_RTS1054 125.141.192.104 80 1209384412 1209460539 ns-04-fhs054.ktsh.co.kr 1937068609536 630195410944 0 0 0 0 1 2 602 48621 884 1314838
1 2 INCOK_NS_RTS1055 125.141.192.105 80 1209384412 1209460532 ns-04-fhs055.ktsh.co.kr 5794547349504 2471639576576 1 0 0 0 0 1 12 10271 2 230
1 2 INCOK_NS_RTS1056 125.141.192.106 80 1209384412 1209460531 ns-04-fhs056.ktsh.co.kr 5794547349504 2485205837824 1 0 0 0 0 1 13 10491 2 262
1 2 INCOK_NS_RTS1057 125.141.192.107 80 1209384412 1209460537 ns-04-fhs057.ktsh.co.kr 5792466548736 2659651465216 1 0 0 0 0 1 13 10287 2 230
1 2 INCOK_NS_RTS1058 125.141.192.108 80 1209384412 1209460533 ns-04-fhs058.ktsh.co.kr 5794547349504 2627481522176 1 0 0 0 0 1 12 10086 2 230
1 2 INCOK_NS_RTS1059 125.141.192.109 80 1209384412 1209460532 ns-04-fhs059.ktsh.co.kr 5794547349504 2638337683456 1 0 0 0 0 1 17 10433 6 488
1 2 INCOK_NS_RTS1060 125.141.192.110 80 1209384412 1209460538 ns-04-fhs060.ktsh.co.kr 5794547349504 2620679018496 1 0 0 0 0 1 13 10505 2 262
1 2 INCOK_NS_RTS1061 125.141.192.111 80 1209384412 1209460538 ns-04-fhs061.ktsh.co.kr 5794547349504 2611749595136 1 0 0 0 0 1 13 10389 2 262
1 2 INCOK_NS_RTS1062 125.141.192.112 80 1209384412 1209460539 ns-04-fhs062.ktsh.co.kr 5794547349504 2665890385920 1 0 0 0 0 1 13 10487 2 230
1 2 INCOK_NS_RTS1063 125.141.192.113 80 1209384412 1209460539 ns-04-fhs063.ktsh.co.kr 5794547349504 2674832646144 1 0 0 0 0 1 13 10774 1 217
1 2 INCOK_NS_RTS1064 125.141.192.114 80 1209384412 1209460540 ns-04-fhs064.ktsh.co.kr 5794547349504 2642916046848 1 0 0 0 0 1 13 10767 1 217
1 2 INCOK_NS_RTS1065 125.141.192.115 80 1209384412 1209460537 ns-04-fhs065.ktsh.co.kr 5794547349504 2646798594048 1 0 0 0 0 1 17 10535 6 478
1 2 INCOK_NS_RTS1066 125.141.192.116 80 1209384412 1209460533 ns-04-fhs066.ktsh.co.kr 5794547349504 2643064819712 1 0 0 0 0 1 17 10486 6 511
1 2 INCOK_NS_RTS1067 125.141.192.117 80 1209384412 1209460535 ns-04-fhs067.ktsh.co.kr 5792466548736 2557366671360 1 0 0 0 0 1 13 10365 2 239
1 2 INCOK_NS_RTS1068 125.141.192.118 80 1209384412 1209460536 ns-04-fhs068.ktsh.co.kr 5792466548736 2539391827968 1 0 0 0 0 1 13 10577 2 230
1 2 INCOK_NS_RTS1069 125.141.192.119 80 1209384412 1209460534 ns-04-fhs069.ktsh.co.kr 5792466548736 2543755796480 1 0 0 0 0 2 12 10040 1 191
1 2 INCOK_NS_RTS1070 125.141.192.120 80 1209384412 1209460535 ns-04-fhs070.ktsh.co.kr 5792466548736 2519910359040 1 0 0 0 0 1 16 10096 6 439
1 2 INCOK_NS_RTS1071 125.141.192.31 80 1209384412 1209460533 ns-04-fhs071.ktsh.co.kr 5794547349504 2650318884864 1 0 0 0 0 1 12 10086 2 230
1 2 INCOK_NS_RTS1072 125.141.192.32 80 1209384412 1209460534 ns-04-fhs072.ktsh.co.kr 5794547349504 2634585882624 1 0 0 0 0 1 12 10066 1 210
1 2 INCOK_NS_RTS1073 125.141.192.33 80 1209384412 1209460535 ns-04-fhs073.ktsh.co.kr 5794547349504 2632156194816 1 0 0 0 0 1 13 10385 2 257
1 2 INCOK_NS_RTS1074 125.141.192.34 80 1209384412 1209460535 ns-04-fhs074.ktsh.co.kr 5794547349504 2645625286656 1 0 0 0 0 1 13 10364 2 239
1 2 INCOK_NS_RTS1075 125.141.192.35 80 1209384412 1209460531 ns-04-fhs075.ktsh.co.kr 5794547349504 2612454291456 1 0 0 0 0 1 12 10195 2 260
1 2 INCOK_NS_RTS1076 125.141.192.36 80 1209384412 1209460533 ns-04-fhs076.ktsh.co.kr 5794547349504 2690423048192 1 0 0 0 0 1 12 10110 1 217
1 2 INCOK_NS_RTS1077 125.141.192.37 80 1209384412 1209460537 ns-04-fhs077.ktsh.co.kr 5794547349504 2685724878848 1 0 0 0 0 1 13 10472 2 230
1 2 INCOK_NS_RTS1078 125.141.192.38 80 1209384412 1209460538 ns-04-fhs078.ktsh.co.kr 5794547349504 2671208736768 1 0 0 0 0 1 13 10395 2 262
1 2 INCOK_NS_RTS1079 125.141.192.39 80 1209384412 1209460534 ns-04-fhs079.ktsh.co.kr 5794547349504 2683813550080 1 0 0 0 0 1 12 10117 2 243
1 2 INCOK_NS_RTS1080 125.141.192.40 80 1209384412 1209460534 ns-04-fhs080.ktsh.co.kr 5794547349504 2726027593728 1 0 0 0 0 1 12 10162 1 210
1 2 INCOK_NS_RTS1081 125.141.192.41 80 1209384412 1209460538 ns-04-fhs081.ktsh.co.kr 5794547349504 2683933739008 1 0 0 0 0 1 18 10678 7 544
1 2 INCOK_NS_RTS1082 125.141.192.42 80 1209384412 1209460538 ns-04-fhs082.ktsh.co.kr 5794547349504 2219321944064 1 0 0 0 0 1 13 10505 2 262
1 2 INCOK_NS_RTS1083 125.141.192.43 80 1209384412 1209460533 ns-04-fhs083.ktsh.co.kr 5794547349504 2652152889344 1 0 0 0 0 1 12 10086 2 230
1 2 INCOK_NS_RTS1084 125.141.192.44 80 1209384412 1209460536 ns-04-fhs084.ktsh.co.kr 5794547349504 2636731934720 1 0 0 0 0 1 13 10577 2 230
1 2 INCOK_NS_RTS1085 125.141.192.45 80 1209384412 1209460534 ns-04-fhs085.ktsh.co.kr 5794547349504 2654840309760 1 0 0 0 0 1 12 10066 1 210
1 2 INCOK_NS_RTS1086 125.141.214.86 80 1209384412 1209460535 ns-04-fhs086.ktsh.co.kr 5794547349504 2640993413120 1 0 0 0 0 1 12 10326 2 239
1 2 INCOK_NS_RTS1087 125.141.214.87 80 1209384412 1209460535 ns-04-fhs087.ktsh.co.kr 5794547349504 2625621260288 1 0 0 0 0 1 16 10079 6 439
1 2 INCOK_NS_RTS1088 125.141.214.88 80 1209384412 1209460538 ns-04-fhs088.ktsh.co.kr 5794547349504 2634263158784 1 0 0 0 0 1 12 10248 2 230
1 2 INCOK_NS_RTS1089 125.141.214.89 80 1209384412 1209460530 ns-04-fhs089.ktsh.co.kr 5794547349504 2645044002816 1 0 0 0 0 1 13 10498 3 369
1 2 INCOK_NS_RTS1090 125.141.214.90 80 1209384412 1209460536 ns-04-fhs090.ktsh.co.kr 5794547349504 2607990456320 1 0 0 0 0 1 12 10524 1 210
1 2 INCOK_NS_RTS1091 125.141.214.91 80 1209384412 1209460534 ns-04-fhs091.ktsh.co.kr 5792466548736 2568369455104 1 0 0 0 0 1 12 10049 1 210
1 2 INCOK_NS_RTS1092 125.141.214.92 80 1209384412 1209460538 ns-04-fhs092.ktsh.co.kr 5792466548736 2561527459840 1 0 0 0 0 1 12 10248 2 230
1 2 INCOK_NS_RTS1093 125.141.214.93 80 1209384412 1209460535 ns-04-fhs093.ktsh.co.kr 5792466548736 2559525062656 1 0 0 0 0 1 11 9927 1 191
1 2 INCOK_NS_RTS1094 125.141.214.94 80 1209384412 1209460533 ns-04-fhs094.ktsh.co.kr 5792466548736 2640021319680 1 0 0 0 0 1 12 10097 1 217
1 2 INCOK_NS_RTS1095 125.141.214.95 80 1209384412 1209460535 ns-04-fhs095.ktsh.co.kr 5792466548736 2643065090048 1 0 0 0 0 1 11 9901 1 171
1 2 INCOK_NS_RTS1096 125.141.214.96 80 1209384412 1209460532 ns-04-fhs096.ktsh.co.kr 5792466548736 2591684958208 1 0 0 0 0 1 13 10374 2 262
1 2 INCOK_NS_RTS1097 125.141.214.97 80 1209384412 1209460532 ns-04-fhs097.ktsh.co.kr 5792466548736 2603585579008 1 0 0 0 0 1 18 10657 7 544
1 2 INCOK_NS_RTS1098 125.141.214.98 80 1209384412 1209460535 ns-04-fhs098.ktsh.co.kr 5792466548736 2589865056256 1 0 0 0 0 1 12 10326 2 239
1 2 INCOK_NS_RTS1099 125.141.214.99 80 1209384412 1209460536 ns-04-fhs099.ktsh.co.kr 5792466548736 2604569047040 1 0 0 0 0 1 12 10524 1 210
1 3 INCOK_NS_RCTS01 125.141.192.123 80 1209384412 - - - - - - - - - - - - - -
1 3 INCOK_NS_RCTS02 125.141.192.124 80 1209384412 - - - - - - - - - - - - - -
1 4 INCOK_NS_DB01 125.141.192.121 5432 1209384412 - - - - - - - - - - - - - -
1 4 INCOK_NS_DB02 125.141.192.251 5432 1209384412 - - - - - - - - - - - - - -
1 4 INCOK_NS_PGLB01 125.141.192.122 6543 1209384412 - - - - - - - - - - - - - -
1 9 TIME_SERVER01 211.39.132.203 80 1209384412 - - - - - - - - - - - - - -
1 9 TIME_SERVER02 211.39.132.204 80 1209384412 - - - - - - - - - - - - - -
+50
View File
@@ -0,0 +1,50 @@
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
void *t_function(void *data)
{
int id;
int i = 0;
id = *((int *)data);
while(1)
{
if (i == 10)
break;
printf("%d : %d\n", id, i);
i++;
sleep(1);
}
}
int main()
{
pthread_t p_thread[2];
int thr_id;
int status;
int a = 1;
int b = 2;
thr_id = pthread_create(&p_thread[0], NULL, t_function, (void *)&a);
if (thr_id < 0)
{
perror("thread create error : ");
exit(0);
}
thr_id = pthread_create(&p_thread[1], NULL, t_function, (void *)&b);
if (thr_id < 0)
{
perror("thread create error : ");
exit(0);
}
fprintf(stderr, "pth1-->%d\n", p_thread[0]);
fprintf(stderr, "pth2-->%d\n", p_thread[1]);
pthread_join(p_thread[0], (void **)&status);
pthread_join(p_thread[1], (void **)&status);
return 0;
}
+17
View File
@@ -0,0 +1,17 @@
#include <stdio.h>
#include <pthread.h>
#include <semaphore.h>
sem_t bin_sem;
int main()
{
pthread_t a_thread;
sem_init(&bin_sem, 1, 1);
sem_destroy(&bin_sem);
printf("Everything OK!!\n");
exit(1);
}
Binary file not shown.
+28
View File
@@ -0,0 +1,28 @@
#include "unpipc.h"
int main(int argc, char **argv)
{
int c, fd, flags;
char *ptr;
off_t length;
flags = O_RDWR | O_CREAT;
while ( (c = Getopt(argc, argv, "e")) != -1)
{
switch(c)
{
case 'e':
flags |= O_EXCL;
break;
}
}
if (optind != argc - 2)
err_quit("usage: shmcreate [ -e ] <name> <length>");
length = atoi(argv[optind + 1]);
fd = Shm_open(argv[optind], flags, FILE_MODE);
Ftruncate(fd, length);
ptr = Mmap(NULL, length, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);
exit(0);
}
Binary file not shown.
+10
View File
@@ -0,0 +1,10 @@
#include "unpipc.h"
int main(int argc, char **argv)
{
if (argc !=2)
err_quit("usage: shmunlink <name>");
Shm_unlink(argv[1]);
exit(0);
}
Binary file not shown.
Binary file not shown.
+21
View File
@@ -0,0 +1,21 @@
#include "unpthread.h"
#include "unpipc.h"
#include "pre_thread_model.h"
#include "protocol.h"
int main(int argc, char **argv)
{
int c, flags;
sem_t *sem;
unsigned int value;
flags = O_RDWR | O_CREAT;
value = 1;
fprintf(stderr, "Semaphore Name is : %s(%o)\n", SEM_NAME, FILE_MODE);
sem_unlink(SEM_NAME);
sem = Sem_open("/tmpaa", flags, FILE_MODE, value);
Sem_close(sem);
exit(0);
}
+30
View File
@@ -0,0 +1,30 @@
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define DEFAULT_LOGFILE_PATH "."
int main()
{
char *makeLogString();
FILE *shLogFile=NULL;
shLogFile = fopen(makeLogString(), "a");
fprintf(shLogFile, "-------- shit ----------\n");
fclose(shLogFile);
return 0;
}
char *makeLogString()
{
struct tm *t;
time_t timer;
static char log_path_file[128];
timer = time(NULL);
t = localtime(&timer);
snprintf(log_path_file, 128, "%ssh_statusd_%04d%02d%02d.log", DEFAULT_LOGFILE_PATH,
t->tm_year + 1900, t->tm_mon + 1, t->tm_mday);
return log_path_file;
}
+111
View File
@@ -0,0 +1,111 @@
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <pthread.h>
void *func1(void *data)
{
int i;
char *string;
string = (char *)data;
for (i = 0; i < 10; i++)
{
fprintf(stderr, "[%d] --> %s\n", i, string);
}
}
void *func2(void *data)
{
int i;
char *string;
string = (char *)data;
for (i = 0; i < 10; i++)
{
fprintf(stderr, "--[%d] --> %s\n", i, string);
}
}
int main()
{
int pid, pid2;
int status1 = 0;
int status2 = 0;
int pstatus1;
int pstatus2;
int c1 = 0;
int pth_id;
int retval = -1;
char *str1 = "RyuHyunSoo";
char *str2 = "RooluAndJin";
pthread_t pthr_t[2];
if ( (pid = fork()) < 0 )
{
fprintf(stderr, "Cannot Fork(1)!!\n");
}
else if ( pid == 0 )
{
fprintf(stderr, "Start Child(one) Process!!\n");
// scanf("%d", &c1);
// fprintf(stderr, "Child(one) Result is : %d\n", c1);
if (pthread_create(&pthr_t[0], NULL, func1, (void *)str1))
{
perror("thread of Child(one) create error:");
exit(0);
}
else
fprintf(stderr, "Success!! pth_id1 = %d\n", pthr_t[0]);
}
else
{
fprintf(stderr, "Mother's job with Child(one)\n");
if ( (pid2=fork()) == 0 )
{
fprintf(stderr, "Start Child(two) Process!!\n");
// scanf("%d", &c1);
// fprintf(stderr, "Child(two) Result is : %x\n", c1);
if (pthread_create(&pthr_t[1], NULL, func2, (void *)str2))
{
perror("thread of Child(two) create error:");
exit(0);
}
else
fprintf(stderr, "Success!! pth_id2 = %d\n", pthr_t[1]);
}
else
{
fprintf(stderr, "Mothers' job with Child(two) !!\n");
wait(&status1);
}
wait(&status2);
}
/* Ending .... */
if (pid == 0 || pid2 == 0)
{
fprintf(stderr, "End Child Process!!..(pid=%d)\n", pid);
if (pid == 0)
{
retval = pthread_join(pthr_t[0], (void **)&pstatus1);
fprintf(stderr, "Thread of Child(one) End %d(%d)\n", (pthread_t)pthr_t[0], retval);
}
else if (pid2 == 0)
{
retval = pthread_join(pthr_t[1], (void **)&pstatus2);
fprintf(stderr, "Thread of Child(two) End %d(%d)\n", (pthread_t)pthr_t[1], retval);
}
}
else
{
fprintf(stderr, "End Mother Process!!..(pid=%d)\n", pid);
}
exit(0);
}
@@ -0,0 +1,145 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
int main(void)
{
FILE *ifp = NULL;
struct hostent *he = NULL;
//struct in_addr *inp = NULL;
int i, j;
int retval;
int dflag;
char *addr = NULL;
for (i = 0; i < r_ss_num; i++) {
dflag = 0;
for (ii = start_ptr; strcmp(ii->m_pszServName, END_OF_SHM); ii++) {
if (ii->m_pszDomainName != NULL && strcmp(ii->m_pszDomainName, "")) {
if (!strcmp(ii->m_pszDomainName, (r_ss + i)->du.domain)) {
memcpy((char *)&(ii->ss), (char *)(r_ss + i), sizeof(struct svr_status));
dflag = 1;
}
else if (!strcmp(ii->m_pszDomainName, (r_ss + i)->du.hostname)) {
memcpy((char *)&(ii->ss), (char *)(r_ss + i), sizeof(struct svr_status));
dflag = 1;
}
}
}
// Check If IP
if (dflag == 0)
{
//if (((retval = inet_aton((r_ss + i)->du.domain, inp)) != 0) && dflag == 0) {
if (((retval = inet_addr((r_ss + i)->du.domain)) != INADDR_NONE) && dflag == 0) {
for (ii = start_ptr; strcmp(ii->m_pszServName, END_OF_SHM); ii++) {
if (!strcmp(ii->m_szIpString, (r_ss + i)->du.domain)) {
strncpy(ii->m_pszDomainName, (r_ss + i)->du.domain, MAX_DOMAIN_NAME);
memcpy((char *)&(ii->ss), (char *)(r_ss + i), sizeof(struct svr_status));
dflag = 1;
}
}
}
}
// Check If Domain
if (dflag == 0)
{
addr = ((r_ss + i)->du.hostname[0] == '\0') ? (r_ss + i)->du.domain : (r_ss + i)->du.hostname;
if (addr != NULL)
he = gethostbyname(addr);
if (!he)
continue;
}
if (dflag == 0)
{
for (ii = start_ptr; strcmp(ii->m_pszServName, END_OF_SHM); ii++)
{
for (j = 0; he->h_addr_list[j]; j++)
{
if (!strcmp(ii->m_szIpString, inet_ntoa(*(struct in_addr *)he->h_addr_list[j])))
{
snprintf(logString, 1024, "[+++++] ServName : %s , IPADDR : %s , DomainName : %s", ii->m_pszServName, ii->m_szIpString, addr);
WriteSHLog(logString, shLogFile);
strncpy(ii->m_pszDomainName, addr, MAX_DOMAIN_NAME);
memcpy((char *)&(ii->ss), (char *)(r_ss + i), sizeof(struct svr_status));
}
}
}
}
}
fclose(shLogFile);
munmap((void *)start_ptr, shm_size);
}
int get_sizeof_shm()
{
struct stat stat;
int memsize;
int filed;
/*** Posix Share Memory ***/
filed = Shm_open(SHM_NAME, O_RDONLY, FILE_MODE);
Fstat(filed, &stat);
Close(filed);
/* get size of mapping memory */
memsize = stat.st_size;
return memsize;
}
servinfo_t *get_shm_start_pointer()
{
struct stat stat;
servinfo_t *start_ptr;
int fd;
fd = Shm_open(SHM_NAME, O_RDWR, FILE_MODE);
Fstat(fd, &stat);
start_ptr = Mmap(NULL, stat.st_size, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);
Close(fd);
return start_ptr;
}
void view_header_packet(struct common_message_header *cheader)
{
/******************************************************************************/
/**************************** View receive packet(header) *********************/
/******************************************************************************/
fprintf(stderr, "Transaction ID -> [ %s ]\n", cheader->szTransactionID);
fprintf(stderr, "Mode -> [ 0x%04X ]\n", ntohl(cheader->ulMode));
fprintf(stderr, "Issuer -> [ %s ]\n", cheader->szIssuer);
fprintf(stderr, "Service ID -> [ %s ]\n", cheader->szServiceID);
fprintf(stderr, "Result -> [ 0x%04X ]\n", ntohl(cheader->ulResult));
fprintf(stderr, "Body Length -> [ %lu ]\n\n", (unsigned long)ntohl(cheader->ulBodyLength));
fflush(stderr);
}
void view_serv_status_packet(struct svr_status *recv_serv)
{
/******************************************************************************/
/**************************** View receive packet(body) ***********************/
/******************************************************************************/
fprintf(stderr, "Time stamp -> [ %ld ]\n", (long)recv_serv->stamp);
fprintf(stderr, "Domain -> [ %s ]\n", recv_serv->du.domain);
fprintf(stderr, "Total -> [ %llu ]\n", (recv_serv->du.total));
fprintf(stderr, "Free -> [ %llu ]\n", (recv_serv->du.free));
fprintf(stderr, "Manual y/n -> [ %d ]\n", (recv_serv->du.manual_disable));
fprintf(stderr, "upload level -> [ %d ]\n", (recv_serv->du.upload_level));
fprintf(stderr, "disk backlog -> [ %d ]\n", (recv_serv->du.disk_backlog));
fprintf(stderr, "disk percent -> [ %d ]\n", (recv_serv->du.disk_percent));
fprintf(stderr, "conn establish -> [ %d ]\n", (recv_serv->du.connection_established));
fprintf(stderr, "conn total -> [ %d ]\n", (recv_serv->du.connection_total));
fprintf(stderr, "traffic ip -> [ %lu ]\n", (recv_serv->du.traffic_ip));
fprintf(stderr, "traffic ib -> [ %lu ]\n", (recv_serv->du.traffic_ib));
fprintf(stderr, "traffic op -> [ %lu ]\n", (recv_serv->du.traffic_op));
fprintf(stderr, "traffic ob -> [ %lu ]\n", (recv_serv->du.traffic_ob));
fprintf(stderr, "Hostname -> [ %s ]\n\n", recv_serv->du.hostname);
fflush(stderr);
}
+73
View File
@@ -0,0 +1,73 @@
#include <stdio.h>
#include <stdlib.h>
#define RCACCT_CONF_PATH "/user/service/etc/rcacct.conf"
int devide(char **val, char *str, char delim)
{
char *p;
int i, j;
val[0] = (char *)malloc(512);
memset(val[0], 0, 512);
for (p=str, i=0, j=0; *p != '\0'; p++)
{
if (*p == delim)
{
*(val[i] + j) = '\0';
j = 0;
i++;
val[i] = (char *)malloc(sizeof(char) * 2 + 1);
memset(val[i], 0, sizeof(char)*2+1);
continue;
}
//else if (*p == '\n')
//{
// continue;
//}
else
{
*(val[i] + j++) = *p;
}
}
*(val[i] + j) = '\0';
return (i+1);
}
int rcacctFind(char **param, char *ipString)
{
FILE *acct_ifp = NULL;
char delim = ':';
char buff[1024];
int num;
acct_ifp = fopen(RCACCT_CONF_PATH, "r");
if (acct_ifp == NULL)
{
fprintf(stderr, "cannot open rcacct file!\n");
exit(1);
}
while(fgets(buff, 1024, acct_ifp) != NULL)
{
fprintf(stderr, "buff : %s", buff);
/* extraction information */
num = devide(param, buff, delim);
fprintf(stderr, "param[0] : %s\n", param[4]);
if (!strcmp(ipString, param[0]))
{
break;
}
}
return num;
}
int main()
{
char *param[512];
int param_num;
param_num = rcacctFind(param, "rc105-test");
exit(0);
}
Binary file not shown.
+31
View File
@@ -0,0 +1,31 @@
#include <stdio.h>
#include <pthread.h>
#include <semaphore.h>
char buffer[1024];
sem_t bin_sem;
void *thread_func(void *arg)
{
while(1)
{
sem_wait(&bin_sem);
printf("you typed : %s\n", buffer);
}
}
int main()
{
pthread_t a_thread;
sem_init(&bin_sem, 0, 1);
pthread_create(&a_thread, 0, thread_func, 0);
while(1)
{
fgets(buffer, 1024, stdin);
sem_post(&bin_sem);
}
exit(1);
}