ActiveX를 만들때 매개변수로 배열을 받아야 할 필요가 있다.
또는 VB Script라면,
컨트롤 소스가 잘못 생성되어서 나왔다.
일단 void ShowArray(LPVARIANT varArray); 로 정의를 변경해야 한다.
iptables를 설정하다 보면, 잘못 설정할 수도 있고 아주 어려운 편 입니다.
그에 비해 UFW는 매우 쉬운 편이죠. 그렇다고 마구 설정하다 보면 서버에 문제가 생길 수 도 있습니다.
UFW 설치법
UFW 사용법
방화벽 활성화, 비활성화(On/Off)하기
기본적인 룰을 적용.
UFW 설정 옵션들.
DENY (거부) 리스트에 더하는 방법.
거부 포트를 추가할때.
–> 예를들면, sudo ufw deny 80
–> sudo ufw deny 53/tcp 아니면 udp
서비스 이름으로 거부 등록할때.
–> sudo ufw deny ssh
거부 아이피를 추가할때.
–> sudo ufw deny from 121.121.121.121
특정 아이피에서 포트 거부방법
–> sudo ufw deny from 121.121.121.121 to port 22
–> sudo ufw deny from 121.0.0.1/24 to any port 22
이건 121.0.0.1~121.0.0.255 까지 port 22로 접속 불가능
주) 121.0.0.1/24 인데 왜 1~255까지일까...? 누가 설명줌 해주삼...
ALLOW (허가) 리스트에 더하는 방법.
허가 포트를 추가할때.
–> sudo ufw allow 80
–> sudo ufw allow 80/udp 아니면 tcp
서비스 이름으로 허가 추가할때.
–> sudo ufw allow ssh
허가 아이피를 추가할때.
–> sudo ufw allow from 121.121.121.121
특정 아이피에서 포트 허용방법
–> sudo ufw allow from 121.121.121.121 to port 22
–> sudo ufw allow from 121.0.0.1/24 to any port 22
추가한 Rule들을 보고 싶을 때.
적용한 Rule들 삭제하는 방법.
–> sudo ufw delete deny from 121.121.121.121
–> sudo ufw delete allow 80/tcp
–> sudo ufw delete deny from 121.121.121.121 to port 22
Example.
이렇게 설정할때,
sudo ufw deny from 192.168.0.1 to any port 22
sudo ufw deny from 192.168.0.7 to any port 22
sudo ufw allow from 192.168.0.0/24 to any port 22
sudo ufw status 치면.
To Action From
– —— —-
22:tcp DENY 192.168.0.1
22:udp DENY 192.168.0.1
22:tcp DENY 192.168.0.7
22:udp DENY 192.168.0.7
22:tcp ALLOW 192.168.0.0/24
22:udp ALLOW 192.168.0.0/24
출처 : http://www.codeproject.com/Articles/12949/A-Simple-C-Function-Call-Stack-Trace-Utility
<code>
// trace.hpp
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <stdarg.h>
#include <string>
#define CM_TRACE_FILE(trace_file) cm::Trace::LogToFile(trace_file)
#define CM_TRACE_FUNC(func_name) cm::Trace __CM_TRACE__(func_name, "()")
#define CM_TRACE_FUNC_ARG1(func_name, argfmt, arg) \
cm::Trace __CM_TRACE__(func_name, argfmt, arg)
#define CM_TRACE_FUNC_ARG2(func_name, argfmt, arg1, arg2) \
cm::Trace __CM_TRACE__(func_name, argfmt, arg1, arg2)
// more macros define....
namespace cm
{
class Trace
{
public:
explicit Trace(char *func_name, const char* argsfmt, ...)
{
char fmt[256] ={0};
sprintf(fmt, "%s%s", func_name, argsfmt);
va_list arglist;
va_start(arglist, argsfmt);
LogMsg(depth_, depth_ * 2, fmt, arglist);
va_end(arglist);
++depth_;
}
~Trace()
{
--depth_;
}
/// special the global log file.
void static LogToFile(const char *trace_file)
{
trace_file_ = trace_file;
}
private:
void LogMsg(int depth, int align, const char *fmt, va_list args)
{
FILE *fp = fopen(trace_file_.c_str(), "a+");
if (fp == NULL)
{
return;
}
time_t curTime;
time(&curTime);
char timeStamp[32] = { 0 };
strftime(timeStamp, sizeof(timeStamp),
"%Y%m%d.%H%M%S", localtime(&curTime));
// only log the timestamp when the time changes
unsigned int len = fprintf( fp, "%s %*.*s> (%d)",
(last_invoke_time_ != curTime) ?
timeStamp : " ",
2 * depth,
2 * depth,
nest_,
depth);
last_invoke_time_ = curTime;
len += vfprintf(fp, fmt, args);
len += fwrite("\n", 1, 1, fp);
fflush(fp);
fclose(fp);
}
private:
// the debug trace filename
static std::string trace_file_;
// function call stack depth
static int depth_;
static const char* nest_;
static time_t last_invoke_time_;
};
std::string Trace::trace_file_ = "";
int Trace::depth_ = 0;
// arbitrarily support nesting 34 deep for no particular reason
const char* Trace::nest_ =
"| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ";
time_t Trace::last_invoke_time_ = 0;
} // end namespace cm
#endif // CM_TRACE_20060209_HPP
</code>
<code>
#include "cm/trace.hpp"
void foo()
{
CM_TRACE_FUNC("foo");
}
void bar(int x)
{
CM_TRACE_FUNC_ARG1("bar", "(%d)", x);
foo();
}
void foobar(int x, const char* s)
{
CM_TRACE_FUNC_ARG2("foobar", "(%d, %s)", x, s);
bar(789);
}
void foobar3(int x, int y, double z)
{
CM_TRACE_FUNC_ARG3("foobar3", "(%d, %d, %f)", x, y, z);
foobar(123, "4546");
}
int main()
{
CM_TRACE_FILE("./trace.log");
CM_TRACE_FUNC("main");
foo();
bar(23);
foobar(33, "char");
foobar3(12, 23, 34.45);
return 0;
}
</code>
20060211.132431 > (0)main()
| > (1)foo()
| > (1)bar(23)
| | > (2)foo()
| > (1)foobar(33, char)
| | > (2)bar(789)
| | | > (3)foo()
| > (1)foobar3(12, 23, 34.450000)
| | > (2)foobar(123, 4546)
| | | > (3)bar(789)
| | | | > (4)foo()