protected override void OnStarted() { base.OnStarted(); Logger.Debug("Started"); try { if (!HTTPUtils.CheckAuthorization(this.request, AccessControl.AuthenticationKey)) { throw new HTTPError(HttpStatusCode.Unauthorized); } if (this.request.Method != "HEAD" && this.request.Method != "GET") { throw new HTTPError(HttpStatusCode.MethodNotAllowed); } if (this.request.Uri.AbsolutePath == "/") { SendResponseMoveToIndex(); } else { SendResponseFileContent(); } } catch (HTTPError err) { Send(HTTPUtils.CreateResponseHeader(err.StatusCode, new Dictionary <string, string> { })); } catch (UnauthorizedAccessException) { Send(HTTPUtils.CreateResponseHeader(HttpStatusCode.Forbidden, new Dictionary <string, string> { })); } Stop(); }
protected override void OnStarted() { base.OnStarted(); Logger.Debug("Started"); try { if (!HTTPUtils.CheckAuthorization(this.request, AccessControl.AuthenticationKey)) { throw new HTTPError(HttpStatusCode.Unauthorized); } if (this.request.Method != "HEAD" && this.request.Method != "GET") { throw new HTTPError(HttpStatusCode.MethodNotAllowed); } var query = HTTPUtils.ParseQuery(this.request.Uri.Query); string value; if (query.TryGetValue("cmd", out value)) { switch (value) { case "viewxml": //リレー情報XML出力 OnViewXML(query); break; case "stop": //チャンネル停止 OnStop(query); break; case "bump": //チャンネル再接続 OnBump(query); break; default: throw new HTTPError(HttpStatusCode.BadRequest); } } else { throw new HTTPError(HttpStatusCode.BadRequest); } } catch (HTTPError err) { Send(HTTPUtils.CreateResponseHeader(err.StatusCode, new Dictionary <string, string> { })); } Stop(); }
private async Task OnProcess(IDictionary<string, object> owinenv) { var env = new OWINEnv(owinenv); var cancel_token = env.CallCanlelled; try { if (!HTTPUtils.CheckAuthorization(env.GetAuthorizationToken(), env.AccessControlInfo)) { throw new HTTPError(HttpStatusCode.Unauthorized); } if (env.RequestMethod!="HEAD" && env.RequestMethod!="GET") { throw new HTTPError(HttpStatusCode.MethodNotAllowed); } var query = env.RequestParameters; string value; if (query.TryGetValue("cmd", out value)) { switch (value) { case "viewxml": //リレー情報XML出力 await OnViewXML(env, query, cancel_token).ConfigureAwait(false); break; case "stop": //チャンネル停止 await OnStop(env, query, cancel_token).ConfigureAwait(false); break; case "bump": //チャンネル再接続 await OnBump(env, query, cancel_token).ConfigureAwait(false); break; default: throw new HTTPError(HttpStatusCode.BadRequest); } } else { throw new HTTPError(HttpStatusCode.BadRequest); } } catch (HTTPError err) { env.ResponseStatusCode = (int)err.StatusCode; } catch (UnauthorizedAccessException) { env.ResponseStatusCode = (int)HttpStatusCode.Forbidden; } }
private async Task OnRedirect(IDictionary <string, object> owinenv) { var env = new OWINEnv(owinenv); var cancel_token = env.CallCanlelled; try { if (!HTTPUtils.CheckAuthorization(env.GetAuthorizationToken(), env.AccessControlInfo)) { throw new HTTPError(HttpStatusCode.Unauthorized); } if (env.RequestMethod != "HEAD" && env.RequestMethod != "GET") { throw new HTTPError(HttpStatusCode.MethodNotAllowed); } await SendResponseMoveToIndex(env, cancel_token).ConfigureAwait(false); } catch (HTTPError err) { env.ResponseStatusCode = (int)err.StatusCode; } catch (UnauthorizedAccessException) { env.ResponseStatusCode = (int)HttpStatusCode.Forbidden; } }