Ejemplo n.º 1
0
static EjsVar *getResponseVar(void *handle, int field)
{
    Ejs         *ejs;
    MaConn      *conn;
    MaResponse  *resp;

    conn = handle;
    resp = conn->response;
    ejs = ((EjsWeb*) maGetHandlerQueueData(conn))->ejs;

    switch (field) {
    case ES_ejs_web_Response_code:
        return (EjsVar*) ejsCreateNumber(ejs, resp->code);

    case ES_ejs_web_Response_filename:
        return (EjsVar*) createString(ejs, resp->filename);

    case ES_ejs_web_Response_headers:
        return (EjsVar*) createHeaders(ejs, conn->response->headers);

    case ES_ejs_web_Response_mimeType:
        return (EjsVar*) createString(ejs, resp->mimeType);

    default:
        ejsThrowOutOfBoundsError(ejs, "Bad property slot reference");
        return 0;
    }
}
Ejemplo n.º 2
0
int main(int , char **)
{
    createHeaders("compressed_matrix");
    createHeaders("coordinate_matrix");
    createHeaders("ell_matrix");
    createHeaders("hyb_matrix");
    createHeaders("matrix_row");
    createHeaders("matrix_row_element");
    createHeaders("matrix_col");
    createHeaders("matrix_col_element");
    createHeaders("matrix_prod_row_row_row");
    createHeaders("matrix_prod_row_row_col");
    createHeaders("matrix_prod_row_col_row");
    createHeaders("matrix_prod_row_col_col");
    createHeaders("matrix_prod_col_row_row");
    createHeaders("matrix_prod_col_row_col");
    createHeaders("matrix_prod_col_col_row");
    createHeaders("matrix_prod_col_col_col");
    createHeaders("matrix_solve_col_col");
    createHeaders("matrix_solve_col_row");
    createHeaders("matrix_solve_row_col");
    createHeaders("matrix_solve_row_row");
    createHeaders("scalar");
    createHeaders("fft");
    createHeaders("rand");
    createHeaders("svd");
    createHeaders("spai");
    createHeaders("nmf");
    createHeaders("ilu");
}
Ejemplo n.º 3
0
static EjsVar *getRequestVar(void *handle, int field)
{
    Ejs         *ejs;
    EjsWeb      *web;
    MaConn      *conn;
    MaRequest   *req;

    conn = handle;
    req = conn->request;
    ejs = ((EjsWeb*) maGetHandlerQueueData(conn))->ejs;

    switch (field) {
    case ES_ejs_web_Request_accept:
        return createString(ejs, req->accept);

    case ES_ejs_web_Request_acceptCharset:
        return createString(ejs, req->acceptCharset);

    case ES_ejs_web_Request_acceptEncoding:
        return createString(ejs, req->acceptEncoding);

    case ES_ejs_web_Request_authAcl:
    case ES_ejs_web_Request_authGroup:
    case ES_ejs_web_Request_authUser:
        //  TODO 
        return (EjsVar*) ejs->undefinedValue;

    case ES_ejs_web_Request_authType:
        return createString(ejs, req->authType);

    case ES_ejs_web_Request_connection:
        return createString(ejs, req->connection);

    case ES_ejs_web_Request_contentLength:
        return (EjsVar*) ejsCreateNumber(ejs, req->length);

    case ES_ejs_web_Request_cookies:
        if (req->cookie) {
            return (EjsVar*) ejsCreateCookies(ejs);
        } else {
            return ejs->nullValue;
        }
        break;

    case ES_ejs_web_Request_extension:
        return createString(ejs, req->parsedUri->ext);

    case ES_ejs_web_Request_files:
        return (EjsVar*) ejs->undefinedValue;

    case ES_ejs_web_Request_headers:
        return (EjsVar*) createHeaders(ejs, conn->request->headers);

    case ES_ejs_web_Request_hostName:
        return createString(ejs, req->hostName);

    case ES_ejs_web_Request_method:
        return createString(ejs, req->methodName);

    case ES_ejs_web_Request_mimeType:
        return createString(ejs, req->mimeType);

    case ES_ejs_web_Request_pathInfo:
        return createString(ejs, req->pathInfo);

    case ES_ejs_web_Request_pathTranslated:
        return createString(ejs, req->pathTranslated);

    case ES_ejs_web_Request_pragma:
        return createString(ejs, req->pragma);

    case ES_ejs_web_Request_query:
        return createString(ejs, req->parsedUri->query);

    case ES_ejs_web_Request_originalUri:
        return createString(ejs, req->parsedUri->originalUri);

    case ES_ejs_web_Request_referrer:
        return createString(ejs, req->referer);

    case ES_ejs_web_Request_remoteAddress:
        return createString(ejs, conn->remoteIpAddr);

    case ES_ejs_web_Request_remoteHost:
#if BLD_FEATURE_REVERSE_DNS && BLD_UNIX_LIKE
        {
            /*
             *  This feature has denial of service risks. Doing a reverse DNS will be slower,
             *  and can potentially hang the web server. Use at your own risk!!  Not supported for windows.
             */
            struct addrinfo *result;
            char            name[MPR_MAX_STRING];
            int             rc;

            if (getaddrinfo(remoteIpAddr, NULL, NULL, &result) == 0) {
                rc = getnameinfo(result->ai_addr, sizeof(struct sockaddr), name, sizeof(name), NULL, 0, NI_NAMEREQD);
                freeaddrinfo(result);
                if (rc == 0) {
                    return createString(ejs, name);
                }
            }
        }
#endif
        return createString(ejs, conn->remoteIpAddr);

    case ES_ejs_web_Request_sessionID:
        web = ejs->handle;
        return createString(ejs, web->session ? web->session->id : "");

    case ES_ejs_web_Request_url:
        return createString(ejs, req->url);

    case ES_ejs_web_Request_userAgent:
        return createString(ejs, req->userAgent);
    }

    ejsThrowOutOfBoundsError(ejs, "Bad property slot reference");
    return 0;
}