Example #1
0
DAO_DLL int DaoBase_OnLoad( DaoVmSpace *vmSpace, DaoNamespace *ns )
{
	DaoNamespace *testns = DaoNamespace_GetNamespace( ns, "test" );
	DaoNamespace *basens = DaoNamespace_GetNamespace( testns, "base" );
	DaoNamespace_WrapFunctions( testns, testFuncs );
	DaoNamespace_WrapFunctions( basens, baseFuncs );
	DMutex_Init( &test_mtx );
	return 0;
}
Example #2
0
DAO_DLL int DaoCGI_OnLoad( DaoVmSpace *vmSpace, DaoNamespace *ns )
{
    DaoProcess *process = DaoVmSpace_AcquireProcess( vmSpace );
    DaoMap *httpENV, *httpGET, *httpPOST, *httpFILE, *httpCOOKIE;
    DaoMap *httpGETS, *httpPOSTS;
    srand( time(NULL) );

    vmMaster = vmSpace;

    ns = DaoNamespace_GetNamespace( ns, "cgi" );
    daox_type_namestream = DaoNamespace_DefineType( ns,
                           "tuple<file:string,size:int,data:io::FileStream>", "HttpUpload" );
    daox_type_filemap = DaoNamespace_DefineType( ns, "map<string,HttpUpload>", NULL );

    DaoNamespace_WrapFunctions( ns, cgiMeths );

    httpENV = DaoMap_New(1+rand());
    httpGET = DaoMap_New(1+rand());
    httpPOST = DaoMap_New(1+rand());
    httpFILE = DaoMap_New(1+rand());
    httpCOOKIE = DaoMap_New(1+rand());
    httpGETS = DaoMap_New(1+rand());
    httpPOSTS = DaoMap_New(1+rand());

    DaoNamespace_AddValue( ns, "HTTP_ENV", (DaoValue*)httpENV, "map<string,string>" );
    DaoNamespace_AddValue( ns, "HTTP_GET", (DaoValue*)httpGET, "map<string,string>" );
    DaoNamespace_AddValue( ns, "HTTP_POST", (DaoValue*)httpPOST, "map<string,string>" );
    DaoNamespace_AddValue( ns, "HTTP_FILE", (DaoValue*)httpFILE, "map<string,HttpUpload>" );
    DaoNamespace_AddValue( ns, "HTTP_COOKIE", (DaoValue*)httpCOOKIE, "map<string,string>");
    DaoNamespace_AddValue( ns,"HTTP_GETS",(DaoValue*)httpGETS,"map<string,list<string>>");
    DaoNamespace_AddValue( ns,"HTTP_POSTS",(DaoValue*)httpPOSTS,"map<string,list<string>>");

    // Prepare HTTP_ENV:
    ParseKeyValueStringArray( process, httpENV, environ );

    // Prepare HTTP_GET:
    char *query = getenv( "QUERY_STRING" );
    if( query == NULL ) { /* lighttpd does not set "QUERY_STRING": */
        query = getenv( "REQUEST_URI" );
        if( query ) query = strchr( query, '?' );
        if( query ) query += 1;
    }
    if( query ) ParseKeyValueString( process, httpGETS, httpGET, query );
    query = getenv( "HTTP_COOKIE" );
    if( query ) ParseKeyValueString( process, NULL, httpCOOKIE, query );

    PreparePostData( process, httpPOSTS, httpPOST, httpFILE );

    DaoVmSpace_ReleaseProcess( vmSpace, process );
    return 0;
}
Example #3
0
DAO_DLL int DaoZip_OnLoad( DaoVmSpace *vmSpace, DaoNamespace *ns )
{
	ns = DaoNamespace_GetNamespace( ns, "zip" );
	DaoNamespace_WrapFunctions( ns, zipMeths );
	return 0;
}