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]