/* Path is the path to the esp.json */ static int defineApp(HttpRoute *route, cchar *path) { EspRoute *eroute; if ((eroute = espRoute(route)) == 0) { return MPR_ERR_MEMORY; } eroute->top = eroute; if (path) { if (!mprPathExists(path, R_OK)) { mprLog("error esp", 0, "Cannot open %s", path); return MPR_ERR_CANT_FIND; } httpSetRouteHome(route, mprGetPathDir(path)); eroute->configFile = sclone(path); } espSetDefaultDirs(route); httpAddRouteHandler(route, "espHandler", ""); httpAddRouteIndex(route, "index.esp"); httpAddRouteIndex(route, "index.html"); httpSetRouteXsrf(route, 1); mprLog("info esp", 3, "ESP app: %s", path); return 0; }
/* Configure the server. If the configFile is defined, use it. If not, then consider home, documents, ip and port. */ PUBLIC int maConfigureServer(MaServer *server, cchar *configFile, cchar *home, cchar *documents, cchar *ip, int port) { MaAppweb *appweb; Http *http; HttpEndpoint *endpoint; HttpHost *host; HttpRoute *route; char *path; appweb = server->appweb; http = appweb->http; if (configFile) { path = mprGetAbsPath(configFile); if (maParseConfig(server, path, 0) < 0) { /* mprError("Cannot configure server using %s", path); */ return MPR_ERR_CANT_INITIALIZE; } return 0; } else { if ((endpoint = httpCreateConfiguredEndpoint(home, documents, ip, port)) == 0) { return MPR_ERR_CANT_OPEN; } maAddEndpoint(server, endpoint); host = mprGetFirstItem(endpoint->hosts); assert(host); route = mprGetFirstItem(host->routes); assert(route); #if BIT_PACK_CGI maLoadModule(appweb, "cgiHandler", "mod_cgi"); if (httpLookupStage(http, "cgiHandler")) { httpAddRouteHandler(route, "cgiHandler", "cgi cgi-nph bat cmd pl py"); /* Add cgi-bin with a route for the /cgi-bin URL prefix. */ path = "cgi-bin"; if (mprPathExists(path, X_OK)) { HttpRoute *cgiRoute; cgiRoute = httpCreateAliasRoute(route, "/cgi-bin/", path, 0); mprTrace(4, "ScriptAlias \"/cgi-bin/\":\"%s\"", path); httpSetRouteHandler(cgiRoute, "cgiHandler"); httpFinalizeRoute(cgiRoute); } } #endif #if BIT_PACK_ESP maLoadModule(appweb, "espHandler", "mod_esp"); if (httpLookupStage(http, "espHandler")) { httpAddRouteHandler(route, "espHandler", "esp"); } #endif #if BIT_PACK_EJSCRIPT maLoadModule(appweb, "ejsHandler", "mod_ejs"); if (httpLookupStage(http, "ejsHandler")) { httpAddRouteHandler(route, "ejsHandler", "ejs"); } #endif #if BIT_PACK_PHP maLoadModule(appweb, "phpHandler", "mod_php"); if (httpLookupStage(http, "phpHandler")) { httpAddRouteHandler(route, "phpHandler", "php"); } #endif httpAddRouteHandler(route, "fileHandler", ""); httpFinalizeRoute(route); if (home) { httpSetRouteHome(route, home); } } return 0; }