Native/C++
[CGI]환경변수 얻어오기
aucd29
2013. 10. 2. 18:56
gcc ver: 2.95.4
os: linux
compile: gcc -o test.cgi test.c
require memory free: yes
test environment: ie 5.0,apache1.3
note: must permition is exeutable.
[code]
#include <stdio.h>
typedef struct cgienv{
char *AUTH_TYPE;
char *CONTENT_LENGTH;
char *CONTENT_TYPE;
char *COOKIES;
char *DOCUMENT_NAME;
char *DOCUMENT_URI;
char *GATEWAY_INTERFACE;
char *HTTP_ACCEPT;
char *HTTP_ACCEPT_CHARSET;
char *HTTP_ACCEPT_ENCODING;
char *HTTP_ACCEPT_LANGUAGE;
char *HTTP_AUTHORIZATION;
char *HTTP_HOST;
char *HTTP_PROXY_CONNECTION;
char *HTTP_PRAGMA;
char *HTTP_CONNECTION;
char *HTTP_REFERER;
char *HTTP_USER_AGENT;
char *INDEX;
char *LAST_MODIFIED;
char *PATH_INFO;
char *PATH_TRANSLATED;
char *QUERY_STRING;
char *REMOTE_ADDR;
char *REMOTE_HOST;
char *REMOTE_PORT;
char *REMOTE_USER;
char *REMOTE_PASSWORD;
char *REQUEST_METHOD;
char *REQUEST_URI;
char *SCRIPT_FILENAME;
char *SCRIPT_NAME;
char *SERVER_NAME;
char *SERVER_PORT;
char *SERVER_PROTOCOL;
char *SERVER_SOFTWARE;
char *SERVER_URL;
} cgienv_t;
cgienv_t *getcgienv(){
cgienv_t *cgienv;
cgienv=(cgienv_t *)malloc(sizeof(cgienv_t));
memset(cgienv,0x0,sizeof(cgienv_t));
cgienv->AUTH_TYPE =(char *)getenv("AUTH_TYPE");
cgienv->CONTENT_LENGTH =(char *)getenv("CONTENT_LENGTH");
cgienv->CONTENT_TYPE =(char *)getenv("CONTENT_TYPE");
cgienv->COOKIES =(char *)getenv("COOKIES");
cgienv->DOCUMENT_NAME =(char *)getenv("DOCUMENT_NAME");
cgienv->DOCUMENT_URI =(char *)getenv("DOCUMENT_URI");
cgienv->GATEWAY_INTERFACE =(char *)getenv("GATEWAY_INTERFACE");
cgienv->HTTP_ACCEPT =(char *)getenv("HTTP_ACCEPT");
cgienv->HTTP_ACCEPT_CHARSET =(char *)getenv("HTTP_ACCEPT_CHARSET");
cgienv->HTTP_ACCEPT_ENCODING =(char *)getenv("HTTP_ACCEPT_ENCODING");
cgienv->HTTP_ACCEPT_LANGUAGE =(char *)getenv("HTTP_ACCEPT_LANGUAGE");
cgienv->HTTP_AUTHORIZATION =(char *)getenv("HTTP_AUTHORIZATION");
cgienv->HTTP_HOST =(char *)getenv("HTTP_HOST");
cgienv->HTTP_PROXY_CONNECTION =(char *)getenv("HTTP_PROXY_CONNECTION");
cgienv->HTTP_PRAGMA =(char *)getenv("HTTP_PRAGMA");
cgienv->HTTP_CONNECTION =(char *)getenv("HTTP_CONNECTION");
cgienv->HTTP_REFERER =(char *)getenv("HTTP_REFERER");
cgienv->HTTP_USER_AGENT =(char *)getenv("HTTP_USER_AGENT");
cgienv->INDEX =(char *)getenv("INDEX");
cgienv->LAST_MODIFIED =(char *)getenv("LAST_MODIFIED");
cgienv->PATH_INFO =(char *)getenv("PATH_INFO");
cgienv->PATH_TRANSLATED =(char *)getenv("PATH_TRANSLATED");
cgienv->QUERY_STRING =(char *)getenv("QUERY_STRING");
cgienv->REMOTE_ADDR =(char *)getenv("REMOTE_ADDR");
cgienv->REMOTE_HOST =(char *)getenv("REMOTE_HOST");
cgienv->REMOTE_PORT =(char *)getenv("REMOTE_PORT");
cgienv->REMOTE_USER =(char *)getenv("REMOTE_USER");
cgienv->REMOTE_PASSWORD =(char *)getenv("REMOTE_PASSWORD");
cgienv->REQUEST_METHOD =(char *)getenv("REQUEST_METHOD");
cgienv->REQUEST_URI =(char *)getenv("REQUEST_URI");
cgienv->SCRIPT_FILENAME =(char *)getenv("SCRIPT_FILENAME");
cgienv->SCRIPT_NAME =(char *)getenv("SCRIPT_NAME");
cgienv->SERVER_NAME =(char *)getenv("SERVER_NAME");
cgienv->SERVER_PORT =(char *)getenv("SERVER_PORT");
cgienv->SERVER_PROTOCOL =(char *)getenv("SERVER_PROTOCOL");
cgienv->SERVER_SOFTWARE =(char *)getenv("SERVER_SOFTWARE");
cgienv->SERVER_URL =(char *)getenv("SERVER_URL");
return cgienv;
}
int main(int argc,char **argv){
cgienv_t *cgienv;
cgienv=getcgienv();
printf("Content-Type: text/html\n\n");
printf("%s\n",cgienv->AUTH_TYPE);
printf("%s\n",cgienv->CONTENT_LENGTH);
printf("%s\n",cgienv->CONTENT_TYPE);
printf("%s\n",cgienv->COOKIES);
printf("%s\n",cgienv->DOCUMENT_NAME);
printf("%s\n",cgienv->DOCUMENT_URI);
printf("%s\n",cgienv->GATEWAY_INTERFACE);
printf("%s\n",cgienv->HTTP_ACCEPT);
printf("%s\n",cgienv->HTTP_ACCEPT_CHARSET);
printf("%s\n",cgienv->HTTP_ACCEPT_ENCODING);
printf("%s\n",cgienv->HTTP_ACCEPT_LANGUAGE);
printf("%s\n",cgienv->HTTP_AUTHORIZATION);
printf("%s\n",cgienv->HTTP_HOST);
printf("%s\n",cgienv->HTTP_PROXY_CONNECTION);
printf("%s\n",cgienv->HTTP_PRAGMA);
printf("%s\n",cgienv->HTTP_CONNECTION);
printf("%s\n",cgienv->HTTP_REFERER);
printf("%s\n",cgienv->HTTP_USER_AGENT);
printf("%s\n",cgienv->INDEX);
printf("%s\n",cgienv->LAST_MODIFIED);
printf("%s\n",cgienv->PATH_INFO);
printf("%s\n",cgienv->PATH_TRANSLATED);
printf("%s\n",cgienv->QUERY_STRING);
printf("%s\n",cgienv->REMOTE_ADDR);
printf("%s\n",cgienv->REMOTE_HOST);
printf("%s\n",cgienv->REMOTE_PORT);
printf("%s\n",cgienv->REMOTE_USER);
printf("%s\n",cgienv->REMOTE_PASSWORD);
printf("%s\n",cgienv->REQUEST_METHOD);
printf("%s\n",cgienv->REQUEST_URI);
printf("%s\n",cgienv->SCRIPT_FILENAME);
printf("%s\n",cgienv->SCRIPT_NAME);
printf("%s\n",cgienv->SERVER_NAME);
printf("%s\n",cgienv->SERVER_PORT);
printf("%s\n",cgienv->SERVER_PROTOCOL);
printf("%s\n",cgienv->SERVER_SOFTWARE);
printf("%s\n",cgienv->SERVER_URL);
free(cgienv);
return 0;
}
[/code]
os: linux
compile: gcc -o test.cgi test.c
require memory free: yes
test environment: ie 5.0,apache1.3
note: must permition is exeutable.
[code]
#include <stdio.h>
typedef struct cgienv{
char *AUTH_TYPE;
char *CONTENT_LENGTH;
char *CONTENT_TYPE;
char *COOKIES;
char *DOCUMENT_NAME;
char *DOCUMENT_URI;
char *GATEWAY_INTERFACE;
char *HTTP_ACCEPT;
char *HTTP_ACCEPT_CHARSET;
char *HTTP_ACCEPT_ENCODING;
char *HTTP_ACCEPT_LANGUAGE;
char *HTTP_AUTHORIZATION;
char *HTTP_HOST;
char *HTTP_PROXY_CONNECTION;
char *HTTP_PRAGMA;
char *HTTP_CONNECTION;
char *HTTP_REFERER;
char *HTTP_USER_AGENT;
char *INDEX;
char *LAST_MODIFIED;
char *PATH_INFO;
char *PATH_TRANSLATED;
char *QUERY_STRING;
char *REMOTE_ADDR;
char *REMOTE_HOST;
char *REMOTE_PORT;
char *REMOTE_USER;
char *REMOTE_PASSWORD;
char *REQUEST_METHOD;
char *REQUEST_URI;
char *SCRIPT_FILENAME;
char *SCRIPT_NAME;
char *SERVER_NAME;
char *SERVER_PORT;
char *SERVER_PROTOCOL;
char *SERVER_SOFTWARE;
char *SERVER_URL;
} cgienv_t;
cgienv_t *getcgienv(){
cgienv_t *cgienv;
cgienv=(cgienv_t *)malloc(sizeof(cgienv_t));
memset(cgienv,0x0,sizeof(cgienv_t));
cgienv->AUTH_TYPE =(char *)getenv("AUTH_TYPE");
cgienv->CONTENT_LENGTH =(char *)getenv("CONTENT_LENGTH");
cgienv->CONTENT_TYPE =(char *)getenv("CONTENT_TYPE");
cgienv->COOKIES =(char *)getenv("COOKIES");
cgienv->DOCUMENT_NAME =(char *)getenv("DOCUMENT_NAME");
cgienv->DOCUMENT_URI =(char *)getenv("DOCUMENT_URI");
cgienv->GATEWAY_INTERFACE =(char *)getenv("GATEWAY_INTERFACE");
cgienv->HTTP_ACCEPT =(char *)getenv("HTTP_ACCEPT");
cgienv->HTTP_ACCEPT_CHARSET =(char *)getenv("HTTP_ACCEPT_CHARSET");
cgienv->HTTP_ACCEPT_ENCODING =(char *)getenv("HTTP_ACCEPT_ENCODING");
cgienv->HTTP_ACCEPT_LANGUAGE =(char *)getenv("HTTP_ACCEPT_LANGUAGE");
cgienv->HTTP_AUTHORIZATION =(char *)getenv("HTTP_AUTHORIZATION");
cgienv->HTTP_HOST =(char *)getenv("HTTP_HOST");
cgienv->HTTP_PROXY_CONNECTION =(char *)getenv("HTTP_PROXY_CONNECTION");
cgienv->HTTP_PRAGMA =(char *)getenv("HTTP_PRAGMA");
cgienv->HTTP_CONNECTION =(char *)getenv("HTTP_CONNECTION");
cgienv->HTTP_REFERER =(char *)getenv("HTTP_REFERER");
cgienv->HTTP_USER_AGENT =(char *)getenv("HTTP_USER_AGENT");
cgienv->INDEX =(char *)getenv("INDEX");
cgienv->LAST_MODIFIED =(char *)getenv("LAST_MODIFIED");
cgienv->PATH_INFO =(char *)getenv("PATH_INFO");
cgienv->PATH_TRANSLATED =(char *)getenv("PATH_TRANSLATED");
cgienv->QUERY_STRING =(char *)getenv("QUERY_STRING");
cgienv->REMOTE_ADDR =(char *)getenv("REMOTE_ADDR");
cgienv->REMOTE_HOST =(char *)getenv("REMOTE_HOST");
cgienv->REMOTE_PORT =(char *)getenv("REMOTE_PORT");
cgienv->REMOTE_USER =(char *)getenv("REMOTE_USER");
cgienv->REMOTE_PASSWORD =(char *)getenv("REMOTE_PASSWORD");
cgienv->REQUEST_METHOD =(char *)getenv("REQUEST_METHOD");
cgienv->REQUEST_URI =(char *)getenv("REQUEST_URI");
cgienv->SCRIPT_FILENAME =(char *)getenv("SCRIPT_FILENAME");
cgienv->SCRIPT_NAME =(char *)getenv("SCRIPT_NAME");
cgienv->SERVER_NAME =(char *)getenv("SERVER_NAME");
cgienv->SERVER_PORT =(char *)getenv("SERVER_PORT");
cgienv->SERVER_PROTOCOL =(char *)getenv("SERVER_PROTOCOL");
cgienv->SERVER_SOFTWARE =(char *)getenv("SERVER_SOFTWARE");
cgienv->SERVER_URL =(char *)getenv("SERVER_URL");
return cgienv;
}
int main(int argc,char **argv){
cgienv_t *cgienv;
cgienv=getcgienv();
printf("Content-Type: text/html\n\n");
printf("%s\n",cgienv->AUTH_TYPE);
printf("%s\n",cgienv->CONTENT_LENGTH);
printf("%s\n",cgienv->CONTENT_TYPE);
printf("%s\n",cgienv->COOKIES);
printf("%s\n",cgienv->DOCUMENT_NAME);
printf("%s\n",cgienv->DOCUMENT_URI);
printf("%s\n",cgienv->GATEWAY_INTERFACE);
printf("%s\n",cgienv->HTTP_ACCEPT);
printf("%s\n",cgienv->HTTP_ACCEPT_CHARSET);
printf("%s\n",cgienv->HTTP_ACCEPT_ENCODING);
printf("%s\n",cgienv->HTTP_ACCEPT_LANGUAGE);
printf("%s\n",cgienv->HTTP_AUTHORIZATION);
printf("%s\n",cgienv->HTTP_HOST);
printf("%s\n",cgienv->HTTP_PROXY_CONNECTION);
printf("%s\n",cgienv->HTTP_PRAGMA);
printf("%s\n",cgienv->HTTP_CONNECTION);
printf("%s\n",cgienv->HTTP_REFERER);
printf("%s\n",cgienv->HTTP_USER_AGENT);
printf("%s\n",cgienv->INDEX);
printf("%s\n",cgienv->LAST_MODIFIED);
printf("%s\n",cgienv->PATH_INFO);
printf("%s\n",cgienv->PATH_TRANSLATED);
printf("%s\n",cgienv->QUERY_STRING);
printf("%s\n",cgienv->REMOTE_ADDR);
printf("%s\n",cgienv->REMOTE_HOST);
printf("%s\n",cgienv->REMOTE_PORT);
printf("%s\n",cgienv->REMOTE_USER);
printf("%s\n",cgienv->REMOTE_PASSWORD);
printf("%s\n",cgienv->REQUEST_METHOD);
printf("%s\n",cgienv->REQUEST_URI);
printf("%s\n",cgienv->SCRIPT_FILENAME);
printf("%s\n",cgienv->SCRIPT_NAME);
printf("%s\n",cgienv->SERVER_NAME);
printf("%s\n",cgienv->SERVER_PORT);
printf("%s\n",cgienv->SERVER_PROTOCOL);
printf("%s\n",cgienv->SERVER_SOFTWARE);
printf("%s\n",cgienv->SERVER_URL);
free(cgienv);
return 0;
}
[/code]