static int parseCgi(MaHttp *http, cchar *key, char *value, MaConfigState *state) { MaLocation *location; MaServer *server; MaHost *host; MaAlias *alias; MaDir *dir, *parent; char *program, *mimeType, *prefix, *path; host = state->host; server = state->server; location = state->location; if (mprStrcmpAnyCase(key, "Action") == 0) { if (maSplitConfigValue(http, &mimeType, &program, value, 1) < 0) { return MPR_ERR_BAD_SYNTAX; } maSetMimeActionProgram(host, mimeType, program); return 1; } else if (mprStrcmpAnyCase(key, "ScriptAlias") == 0) { if (maSplitConfigValue(server, &prefix, &path, value, 1) < 0 || path == 0 || prefix == 0) { return MPR_ERR_BAD_SYNTAX; } /* Create an alias and location with a cgiHandler and pathInfo processing */ path = maMakePath(host, path); dir = maLookupDir(host, path); if (maLookupDir(host, path) == 0) { parent = mprGetFirstItem(host->dirs); dir = maCreateDir(host, path, parent); } alias = maCreateAlias(host, prefix, path, 0); mprLog(server, 4, "ScriptAlias \"%s\" for \"%s\"", prefix, path); mprFree(path); maInsertAlias(host, alias); if ((location = maLookupLocation(host, prefix)) == 0) { location = maCreateLocation(host, state->location); maSetLocationAuth(location, state->dir->auth); maSetLocationPrefix(location, prefix); maAddLocation(host, location); } else { maSetLocationPrefix(location, prefix); } maSetHandler(http, host, location, "cgiHandler"); return 1; } return 0; }
static int parseEjs(MaHttp *http, cchar *key, char *value, MaConfigState *state) { MaLocation *location; MaServer *server; MaHost *host; char *prefix, *path; int flags; host = state->host; server = state->server; location = state->location; flags = location->flags & (MA_LOC_BROWSER | MA_LOC_AUTO_SESSION); #if UNUSED MaStage *ejsHandler; EjsWebControl *web; if (mprStrcmpAnyCase(key, "Ejs") == 0) { path = mprStrTrim(value, "\""); mprCleanFilename(http, path); if (!mprAccess(http, path, X_OK)) { mprError(http, "Can't access Ejs path %s", path); return MPR_ERR_BAD_SYNTAX; } if ((ejsHandler = maLookupStage(http, "ejsHandler")) == 0) { mprError(http, "Ejscript module is not loaded"); return MPR_ERR_BAD_SYNTAX; } web = (EjsWebControl*) ejsHandler->stageData; web->ejsLibDir = path; } else #endif if (mprStrcmpAnyCase(key, "EjsApp") == 0) { if (mprStrcmpAnyCase(value, "on") == 0) { location->flags |= MA_LOC_APP; } else { location->flags &= ~MA_LOC_APP; } return 1; } else if (mprStrcmpAnyCase(key, "EjsAppDir") == 0) { if (mprStrcmpAnyCase(value, "on") == 0) { location->flags |= MA_LOC_APP_DIR; } else { location->flags &= ~MA_LOC_APP_DIR; } return 1; } else if (mprStrcmpAnyCase(key, "EjsAppAlias") == 0) { if (maSplitConfigValue(server, &prefix, &path, value, 1) < 0 || path == 0 || prefix == 0) { return MPR_ERR_BAD_SYNTAX; } location = maCreateLocationAlias(http, state, prefix, path, "ejsHandler", MA_LOC_APP | flags); if (location == 0) { return MPR_ERR_BAD_SYNTAX; } return 1; } else if (mprStrcmpAnyCase(key, "EjsAppDirAlias") == 0) { if (maSplitConfigValue(server, &prefix, &path, value, 1) < 0 || path == 0 || prefix == 0) { return MPR_ERR_BAD_SYNTAX; } location = maCreateLocationAlias(http, state, prefix, path, "ejsHandler", MA_LOC_APP_DIR | flags); if (location == 0) { return MPR_ERR_BAD_SYNTAX; } return 1; } else if (mprStrcmpAnyCase(key, "EjsErrors") == 0) { if (mprStrcmpAnyCase(value, "browser") == 0) { location->flags |= MA_LOC_BROWSER; } else { location->flags &= ~MA_LOC_BROWSER; } return 1; } else if (mprStrcmpAnyCase(key, "EjsSessionTimeout") == 0) { if (value == 0) { return MPR_ERR_BAD_SYNTAX; } if (! mprGetDebugMode(http)) { location->sessionTimeout = atoi(mprStrTrim(value, "\"")); } return 1; } else if (mprStrcmpAnyCase(key, "EjsSession") == 0) { if (mprStrcmpAnyCase(value, "on") == 0) { location->flags |= MA_LOC_AUTO_SESSION; } else { location->flags &= ~MA_LOC_AUTO_SESSION; } return 1; } return 0; }
static int parseEjs(MaHttp *http, cchar *key, char *value, MaConfigState *state) { MaLocation *location; MaServer *server; MaHost *host; char *prefix, *path; int flags; host = state->host; server = state->server; location = state->location; flags = location->flags & (MA_LOC_BROWSER | MA_LOC_AUTO_SESSION); if (mprStrcmpAnyCase(key, "EjsApp") == 0) { if (mprStrcmpAnyCase(value, "on") == 0) { location->flags |= MA_LOC_APP; } else { location->flags &= ~MA_LOC_APP; } return 1; } else if (mprStrcmpAnyCase(key, "EjsAppDir") == 0) { if (mprStrcmpAnyCase(value, "on") == 0) { location->flags |= MA_LOC_APP_DIR; } else { location->flags &= ~MA_LOC_APP_DIR; } return 1; } else if (mprStrcmpAnyCase(key, "EjsAppAlias") == 0) { if (maSplitConfigValue(server, &prefix, &path, value, 1) < 0 || path == 0 || prefix == 0) { return MPR_ERR_BAD_SYNTAX; } location = maCreateLocationAlias(http, state, prefix, path, "ejsHandler", MA_LOC_APP | flags); if (location == 0) { return MPR_ERR_BAD_SYNTAX; } return 1; } else if (mprStrcmpAnyCase(key, "EjsAppDirAlias") == 0) { if (maSplitConfigValue(server, &prefix, &path, value, 1) < 0 || path == 0 || prefix == 0) { return MPR_ERR_BAD_SYNTAX; } location = maCreateLocationAlias(http, state, prefix, path, "ejsHandler", MA_LOC_APP_DIR | flags); if (location == 0) { return MPR_ERR_BAD_SYNTAX; } return 1; } else if (mprStrcmpAnyCase(key, "EjsErrors") == 0) { if (mprStrcmpAnyCase(value, "browser") == 0) { location->flags |= MA_LOC_BROWSER; } else { location->flags &= ~MA_LOC_BROWSER; } return 1; } else if (mprStrcmpAnyCase(key, "EjsSessionTimeout") == 0) { if (value == 0) { return MPR_ERR_BAD_SYNTAX; } if (! mprGetDebugMode(http)) { location->sessionTimeout = atoi(mprStrTrim(value, "\"")); } return 1; } else if (mprStrcmpAnyCase(key, "EjsSession") == 0) { if (mprStrcmpAnyCase(value, "on") == 0) { location->flags |= MA_LOC_AUTO_SESSION; } else { location->flags &= ~MA_LOC_AUTO_SESSION; } return 1; } return 0; }