Пример #1
0
 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();
 }
Пример #2
0
            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();
            }
Пример #3
0
 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;
   }
 }
Пример #4
0
        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;
            }
        }