Exemple #1
0
        public FrontModule(IViewProjectionFactory viewFactory)
        {
            _viewFactory = viewFactory;

            After.AddItemToEndOfPipeline(SetRecentBlogPosts);
            After.AddItemToEndOfPipeline(SetTagCloud);
        }
Exemple #2
0
        public SampleModule()
        {
            After.AddItemToEndOfPipeline((ctx) => ctx.Response
                                         .WithHeader("Access-Control-Allow-Origin", "*")
                                         .WithHeader("Access-Control-Allow-Methods", "POST,GET")
                                         .WithHeader("Access-Control-Allow-Headers", "Accept, Origin, Content-type"));
            //需要把views文件夹复制到debug目录
            Get["/test"]  = _ => View["test.html"];
            Get["/razor"] = _ => View["razor"];
            Get["/"]      = r =>
            {
                Console.WriteLine("ok");
                return("hello world");
            };
            Get["/call1"] = Call1;

            //读卡集成
            Get["apc/call"] = Call;
            //关闭端口
            Get["/exit"] = Dc_Exit;
            //打开端口
            Get["/init"] = Dc_Init;
            //弹卡
            Get["/cardexit"] = dc_SelfServiceDeviceCardEject;
            //弹卡集成
            Get["/cardexitx"] = cardexitx;
        }
Exemple #3
0
 private void SetupModelDefaults()
 {
     Before.AddItemToEndOfPipeline(ctx =>
     {
         baseModel.MasterPage       = new Model.MasterPageView();
         baseModel.MasterPage.Title = "Log Parser Monitor and Reporting";
         if (Request.Cookies.ContainsKey("lastvisit"))
         {
             baseModel.MasterPage.LastVisit = Uri.UnescapeDataString(Request.Cookies["lastvisit"]);
         }
         else
         {
             baseModel.MasterPage.LastVisit = "No cookie value yet";
         }
         baseModel.MasterPage.IsAuthenticated = (ctx.CurrentUser != null);
         if (ctx.CurrentUser != null)
         {
             baseModel.MasterPage.UserName = ctx.CurrentUser.UserName;
         }
         // TODO: Get a list of the user claims here - set in model for use in view?
         return(null);
     });
     After.AddItemToEndOfPipeline(ctx =>
     {
         var now = DateTime.Now;
         ctx.Response.AddCookie("lastvisit", now.ToShortDateString() + " " + now.ToShortTimeString(), now.AddYears(1));
     });
 }
        public ApiModule()
        {
            // CORS
            After.AddItemToEndOfPipeline((ctx) => ctx.Response
                                         .WithHeader("Access-Control-Allow-Origin", "*")
                                         .WithHeader("Access-Control-Allow-Methods", "POST,GET")
                                         .WithHeader("Access-Control-Allow-Headers", "Accept, Origin, Content-type"));

            Get("/classify", ctx =>
            {
                var req = this.Bind <ClassifyRequest>();

                if (req.Month == null || req.Day == null || req.DayOfWeek == null ||
                    req.Airline == null || req.Airport == null)
                {
                    return("{\"error\": \"must provide all parameters\"}");
                }

                // build example based on params
                var example = new Example("");

                example.AddAttribute(Attrs.Month, int.Parse(req.Month));
                example.AddAttribute(Attrs.Day, int.Parse(req.Day));
                example.AddAttribute(Attrs.DayOfWeek, int.Parse(req.DayOfWeek));
                example.AddAttribute(Attrs.Airline, req.Airline);
                example.AddAttribute(Attrs.Airport, req.Airport);

                var result = WebServer.Tree.Classify(example);

                var value = result.classification.ToLower();
                var ratio = result.randomnessRatio;

                return("{\"classification\": " + value + ", \"randomnessRatio\": " + ratio + "}");
            });
        }
Exemple #5
0
        public Initialize()
        {
            After.AddItemToEndOfPipeline((ctx) =>
            {
                ctx.Response.WithHeader("Access-Control-Allow-Origin", "*")
                .WithHeader("Access-Control-Allow-Methods", "POST,GET")
                .WithHeader("Access-Control-Allow-Headers", "Accept, Origin, Content-type");
            });

            Get["/"] = parameters =>
            {
                return("handshake successful");
            };

            Get["/init"] = parameters =>
            {
                return(JsonConvert.SerializeObject(Medina.Initialize()));
            };

            Get["/init/site"] = parameters =>
            {
                //Do the logic.

                return(JsonConvert.SerializeObject(Medina.LoadSite(@"G:\My Drive\medina\protocol_site_v0.5.0.3dm")));
            };

            Get["/init/motifs"] = parameters =>
            {
                //Please work I beg you

                return(JsonConvert.SerializeObject(Medina.LoadMotifs(@"G:\My Drive\medina\motifs\Arc_Construct.ghx")));
            };
        }
Exemple #6
0
        public FrontModule(IViewProjectionFactory viewFactory)
        {
            _viewFactory = viewFactory;

            After.AddItemToEndOfPipeline(SetRecentBlogPosts);
            After.AddItemToEndOfPipeline(SetTagCloud);
            After.AddItemToEndOfPipeline(NancyCompressionExtenstion.CheckForCompression);
        }
 protected BaseModule(string modulePath) : base(modulePath)
 {
     if (AuthInfo?.Validate)
     {
         this.RequiresAuthentication();
     }
     After.AddItemToEndOfPipeline(NancyCompressionExtenstion.CheckForCompression);
 }
 private void EnableCors()
 {
     After.AddItemToEndOfPipeline((ctx) =>
     {
         ctx.Response.WithHeader("Access-Control-Allow-Origin", "*") // Set to allow all, change with implementation
         .WithHeader("Access-Control-Allow-Methods", "POST,GET,DELETE")
         .WithHeader("Access-Control-Allow-Headers", "Accept, Origin, Content-type, X-Requested-With")
         .WithHeader("Access-Control-Allow-Credentials", "true");
     });
 }
Exemple #9
0
        public VersionModule(string version, string route, IComponentManager componentManager) : base(version + route)
        {
            foreach (var extender in componentManager.GetModuleExtenders())
            {
                Before.AddItemToEndOfPipeline(extender.Before);
                After.AddItemToEndOfPipeline(extender.After);
            }

            Get("/", _ => HttpStatusCode.NotFound);
        }
        public WelcomeModule()
        {
            this.RequiresAuthentication();



            After.AddItemToEndOfPipeline((context) =>
                                         context.Response
                                         .WithHeader("Access-Control-Allow-Origin", "*")
                                         .WithHeader("Access-Control-Allow-Methods", "POST,GET")
                                         .WithHeader("Access-Control-Allow-Headers", "Accept, Origin, Content-type")
                                         );

            //var s=this.Context.CurrentUser.Identity.IsAuthenticated;
            var commandHandlers = Program.container.GetTypesToRegister(typeof(ICommandHandler <>),
                                                                       new[] { typeof(LoanAppService).Assembly });
            var commands =
                commandHandlers.SelectMany(type => type.GetInterfaces())
                .Where(type => type.IsGenericType)
                .Select(type => type.GetGenericArguments().First());

            foreach (var command in commands)
            {
                var serviceName = command.Namespace.Split('.').LastOrDefault();
                var address     = $"/{serviceName}/{command.Name}";
                var makeHandler = this.GetType().GetMethod("MakeHandler", System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Instance)
                                  .MakeGenericMethod(command);
                //    //     Get["/"] = parameters => "Hello World!";

                //    Get(address+"t", async (args, ct) =>
                //    {
                //        var result = await MakeHandler1(this);
                //        return result;
                //    });

                //    Post(address + "t", async (args, ct) =>
                //    {

                //    var result = await MakeHandler(this);
                //    return result;
                //});



                Get(address, async x => await(Task <object>) makeHandler.Invoke(this, new object[0]));
                Post(address, async x => await(Task <object>) makeHandler.Invoke(this, new object[0]));


                //Get(address,  x => (Func<object, object>)makeHandler.Invoke(this, new object[0]));
                //Post(address,  x => (Func<object, object>)makeHandler.Invoke(this, new object[0]));
            }

            this.serviceProvider = serviceProvider;
        }
Exemple #11
0
        public TabService()
        {
            Post["/chrome"]  = SetChromeTabs;
            Post["/firefox"] = SetFirefoxTabs;
            Get["/test"]     = Test;

            // Allow CORS, so that extension are able to get answer
            After.AddItemToEndOfPipeline(ctx => ctx.Response
                                         .WithHeader("Access-Control-Allow-Origin", "*")
                                         .WithHeader("Access-Control-Allow-Methods", "POST,GET")
                                         .WithHeader("Access-Control-Allow-Headers", "Accept, Origin, Content-type"));
        }
Exemple #12
0
 private void SetupModelDefaults()
 {
     Before.AddItemToEndOfPipeline(ctx =>
     {
         Model.MasterPage                 = new MasterPageViewModel();
         Model.MasterPage.Title           = "Nancy & Hangfire - Hello World!";
         Model.MasterPage.IsAuthenticated = (ctx.CurrentUser == null);
         return(null);
     });
     After.AddItemToEndOfPipeline(ctx =>
     {
     });
 }
 protected ApiModule()
 {
     After.AddItemToEndOfPipeline(ctx => ctx.Response
                                  .WithHeader("Access-Control-Allow-Origin", "*")
                                  .WithHeader("Access-Control-Allow-Methods", "POST,GET")
                                  .WithHeader("Accept", "application/json")
                                  .WithHeader("Access-Control-Allow-Headers", "Accept, Origin, Content-type")
                                  .WithHeader("Expires", "Tue, 03 Jul 2001 06:00:00 GMT")
                                  .WithHeader("Last-Modified", DateTime.Now.ToUniversalTime().ToString("R"))
                                  .WithHeader("Cache-Control", "max-age=0, no-cache, must-revalidate, proxy-revalidate, no-store")
                                  .WithHeader("Pragma", "no-cache")
                                  );
 }
Exemple #14
0
        public ApiClassFile()
        {
            //To allow cors
            After.AddItemToEndOfPipeline((ctx) =>
            {
                ctx.Response.WithHeader("Access-Control-Allow-Origin", "*")
                .WithHeader("Access-Control-Allow-Methods", "POST,GET")
                .WithHeader("Access-Control-Allow-Headers", "Accept, Origin, Content-type");
            });


            Get["/api/thing/{val}"] = x => method(x);
            Get["/api/thing"]       = x => anotherMethod(x);
        }
        /*
         * TODO: city data service access for desired shards.
         * Need to maintain connections to shards and request from their data services...
         * Either that or online status has to at least writeback to DB.
         */

        public CityInfoController(IDAFactory daFactory, IServerNFSProvider nfs) : base("/userapi/city")
        {
            DAFactory = daFactory;
            NFS       = nfs;

            After.AddItemToEndOfPipeline(x =>
            {
                x.Response.WithHeader("Access-Control-Allow-Origin", "*");
            });

            Get["/{shardid}/{id}.png"] = parameters =>
            {
                using (var da = daFactory.Get)
                {
                    var lot = da.Lots.GetByLocation((int)parameters.shardid, (uint)parameters.id);
                    if (lot == null)
                    {
                        return(HttpStatusCode.NotFound);
                    }
                    return(Response.AsImage(Path.Combine(NFS.GetBaseDirectory(), "Lots/" + lot.lot_id.ToString("x8") + "/thumb.png")));
                }
            };

            Get["/{shardid}/city.json"] = parameters =>
            {
                var now = Epoch.Now;
                if (LastModelUpdate < now - 15)
                {
                    LastModelUpdate = now;
                    lock (ModelLock)
                    {
                        LastModel = new CityInfoModel();
                        using (var da = daFactory.Get)
                        {
                            var lots      = da.Lots.AllLocations((int)parameters.shardid);
                            var lotstatus = da.LotClaims.AllLocations((int)parameters.shardid);
                            LastModel.reservedLots = lots.ConvertAll(x => x.location).ToArray();
                            LastModel.names        = lots.ConvertAll(x => x.name).ToArray();
                            LastModel.activeLots   = lotstatus.ConvertAll(x => x.location).ToArray();
                            LastModel.onlineCount  = lotstatus.ConvertAll(x => x.active).ToArray();
                        }
                    }
                }
                lock (ModelLock)
                {
                    return(Response.AsJson(LastModel));
                }
            };
        }
Exemple #16
0
        public Module()
        {
            After.AddItemToEndOfPipeline((ctx) => ctx.Response.WithHeader("Access-Control-Allow-Origin", "*").WithHeader("Access-Control-Allow-Methods", "POST,GET").WithHeader("Access-Control-Allow-Headers", "Accept, Origin, Content-type"));
            Options["/"] = _ => new Response();

            Get["/{printerName?printi}"] = (ctx) =>
            {
                var model = new PrinterPageModel(ctx.printerName, ctx.printerName == "printi");
                int.TryParse(Request.Query["log"], out model.ShowDebug);
                return(View["Index", model]);
            };

            Get["/ping"] = para => "OK";

            Get["/snel"] = Get["/sneller"] = Get["/fast"] = Get["/faster"] = para => Response.AsRedirect("http://192.168.2.42/");
        }
        public LoginServer()
        {
            After.AddItemToEndOfPipeline(ctx => ctx.Response
                                         .WithHeader("Access-Control-Allow-Origin", "*")
                                         .WithHeader("Access-Control-Allow-Methods", "POST,GET")
                                         .WithHeader("Access-Control-Allow-Headers", "Accept, Origin, Content-type"));
            Get("/token", x =>
            {
                if (LauncherLogic.User != null)
                {
                    return(JsonConvert.SerializeObject(new { StatusCode = 0, UserName = Base64Encode(LauncherLogic.User.UserName), Token = LauncherLogic.User.AuthCode }));
                }

                //1 = Not Authenticated
                return(JsonConvert.SerializeObject(new { StatusCode = 1 }));
            });
        }
Exemple #18
0
        public RestApiModule() : base("/api/v0.1")
        {
            //todo: debug code, get rid of this later
            Before.AddItemToStartOfPipeline(x =>
            {
                _stopwatch = new Stopwatch();
                _stopwatch.Start();
                return(null);
            });

            //version number request
            Get["/version"] = _ => { return(_GetVersion()); };

            //list the current boxes
            Get["/boxes"] = _ => { return(_GetBoxList()); };

            //create a new box
            Put["/boxes/{box}"] = x => { return(_CreateBox(x["box"])); };

            //delete a box
            Delete["/boxes/{box}"] = x => { return(_DeleteBox(x["box"])); };

            //list messages in a box
            Get["/boxes/{box}"] = x => { return(_GetMessagesInBox(x["box"])); };

            //create a new message
            Put["/boxes/{box}/{message}"] = x =>
            {
                var msg = this.Bind <Message>();
                return(_CreateMessage(x["box"], x["message"], msg));
            };

            //delete a message
            Delete["/boxes/{box}/{message}"] = x => { return(_DeleteMessage(x["box"], x["message"])); };

            //get message details
            Get["/boxes/{box}/{message}"] = x => { return(_GetMessage(x["box"], x["message"])); };

            //todo: debug code, get rid of this later
            After.AddItemToEndOfPipeline(x =>
            {
                _stopwatch.Stop();
                Console.WriteLine("> ({0}ms) {1}: {2}", _stopwatch.ElapsedMilliseconds, Request.Method, Request.Url.Path);
            });
        }
        public Endpoints()
        {
            Options["/{catchAll*}"] = parmeters => { return(new Response {
                    StatusCode = HttpStatusCode.Accepted
                }); };

            After.AddItemToEndOfPipeline(context =>
            {
                context.Response.WithHeader("Access-Control-Allow-Origin", "*")
                .WithHeader("Access-Control-Allow-Methods", "POST, GET")
                .WithHeader("Access-Control-Allow-Headers", "Accept, Origin, Content-type");
            });

            Get[nameof(PreviousRun)] = _ => PreviousRun();
            Get[$"{nameof(PreviousRun)}/{{runId}}"] = parameters => PreviousRun(parameters.runId);
            Get[nameof(RuleDefinitions)]            = _ => RuleDefinitions();
            Post[nameof(NewAnalysis)] = _ => NewAnalysis();
        }
        public AdminShardOpController(IDAFactory daFactory, JWTFactory jwt, ApiServer server) : base("/admin/shards")
        {
            JWTTokenAuthentication.Enable(this, jwt);

            DAFactory = daFactory;
            Server    = server;

            After.AddItemToEndOfPipeline(x =>
            {
                x.Response.WithHeader("Access-Control-Allow-Origin", "*");
            });

            Post["/shutdown"] = _ =>
            {
                this.DemandAdmin();
                var shutdown = this.Bind <ShutdownModel>();

                var type = ShutdownType.SHUTDOWN;
                if (shutdown.update)
                {
                    type = ShutdownType.UPDATE;
                }
                else if (shutdown.restart)
                {
                    type = ShutdownType.RESTART;
                }

                //JWTUserIdentity user = (JWTUserIdentity)this.Context.CurrentUser;
                Server.RequestShutdown((uint)shutdown.timeout, type);

                return(Response.AsJson(true));
            };

            Post["/announce"] = _ =>
            {
                this.DemandModerator();
                var announce = this.Bind <AnnouncementModel>();

                Server.BroadcastMessage(announce.sender, announce.subject, announce.message);

                return(Response.AsJson(true));
            };
        }
Exemple #21
0
        public ComputerInfoApi()
        {
#if DEBUG
            After.AddItemToEndOfPipeline((ctx) => ctx.Response
                                         .WithHeader("Access-Control-Allow-Origin", "*")
                                         .WithHeader("Access-Control-Allow-Methods", "POST,GET,OPTIONS")
                                         .WithHeader("Access-Control-Allow-Headers", "Accept, Origin, Content-type"));
#endif

            Get("/", x => {
                return(View["Web/index.html"]);
            });
            Get("/GetTemp", x => {
                var cdata = ComputerData.Get();
                cdata.Refresh();//todo 可能需要改成独立线程刷新
                //Dictionary<string, string> result = new Dictionary<string, string>();
                //result.Add("cputemp", cdata.GetCpuTemperature());
                //result.Add("gputemp", cdata.GetGpuTemperature());
                //result.Add("cpuload", cdata.GetCpuLoad());
                //result.Add("ramload", cdata.GetMemoryLoad());
                ComputerInfoModel result = new ComputerInfoModel()
                {
                    CpuLoad  = cdata.GetCpuLoad(),
                    CpuTemp  = cdata.GetCpuTemperature(),
                    RamLoad  = cdata.GetMemoryLoad(),
                    GpuTemp  = cdata.GetGpuTemperature(),
                    DiskLoad = cdata.GetDiskLoad()
                };
                return(Response.AsJson(result));
            });
            Get("/test", x => {
                var cpu = ComputerData.Get().GetCpu();
                if (cpu == null)
                {
                    return("Cant find cpu");
                }

                return(ComputerData.Get().GetTemperature(cpu));
            });
        }
Exemple #22
0
        public NancyDemo() : base("/nancy")
        {
            Before.AddItemToEndOfPipeline(async(ctx, ct) =>
            {
                this.AddToLog("Before Hook Delay\n");
                await Task.Delay(5000);

                return(null);
            });

            After.AddItemToEndOfPipeline(async(ctx, ct) =>
            {
                this.AddToLog("After Hook Delay\n");
                await Task.Delay(5000);
                this.AddToLog("After Hook Complete\n");

                ctx.Response = this.GetLog();
            });

            Get["/", runAsync : true] = async(x, ct) =>
            {
                this.AddToLog("Delay 1\n");
                await Task.Delay(1000);

                this.AddToLog("Delay 2\n");
                await Task.Delay(1000);

                this.AddToLog("Executing async http client\n");
                using (var client = new HttpClient())
                {
                    var res = await client.GetAsync("http://nancyfx.org");

                    var content = await res.Content.ReadAsStringAsync();

                    this.AddToLog("Response: " + content + "\n");
                }
                return((Response)this.GetLog());
            };
            Get["/nancy/demo"] = parameters => new string[] { "Hello", "World" };
        }
Exemple #23
0
 private void SetupModelDefaults()
 {
     Before.AddItemToEndOfPipeline(ctx =>
     {
         var guid = System.Guid.NewGuid().ToString();
         if (Request.Cookies.ContainsKey("NerdGuid"))
         {
             guid = Request.Cookies["NerdGuid"];
         }
         Model.NerdGuid = guid;
         Model.Nerd     = DB.Nerds.FindByGuid(guid) ?? DB.Nerds.Insert(Name: "John Doe", Guid: guid);
         Model.Title    = "NerdBeers";
         IEnumerable <BeerEvent> ube = DB.BeerEvents.FindAllByEventDate(DateTime.Now.to(DateTime.Now.AddYears(1))).Cast <BeerEvent>();
         Model.UpcomingEvents        = ube.OrderBy(e => e.EventDate).Take(10);
         Model.SubscribedEvents      = DB.BeerEvents.FindAll(DB.BeerEvents.NerdSubscriptions.Nerds.Guid == Model.Nerd.Guid).Cast <BeerEvent>();
         return(null);
     });
     After.AddItemToEndOfPipeline(ctx =>
     {
         ctx.Response.AddCookie("NerdGuid", Model.NerdGuid);
     });
 }
Exemple #24
0
        public Resource() : base(Constants.Path)
        {
            After.AddItemToEndOfPipeline(ctx => ctx.Response
                                         .WithHeader("Access-Control-Allow-Credentials", "true")
                                         .WithHeader("Access-Control-Allow-Origin", "*")
                                         .WithHeader("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS, HEAD")
                                         .WithHeader("Access-Control-Allow-Headers", "origin, content-type, accept, authorization, X-HTTP-Method-Override, Accept-Encoding, Content-Encoding"));

            Get["/portal"] = _ => {
                // Return the UI's script
                var jsonBytes = Encoding.UTF8.GetBytes(System.IO.File.ReadAllText(@"../../Client/build/ServiceConfiguration.bundle.js"));

                return(new Response {
                    StatusCode = HttpStatusCode.OK,
                    ContentType = "text/plain",
                    Contents = c => c.Write(jsonBytes, 0, jsonBytes.Length)
                });
            };

            Options["/portal"] = _ => new Response {
                StatusCode = HttpStatusCode.OK
            };
        }
Exemple #25
0
        public ApiModule()
        {
            After.AddItemToEndOfPipeline((ctx) => ctx.Response
                                         .WithHeader("Access-Control-Allow-Origin", "*"));

            Get("/", _ => "");
            Get("/GetTraders", _ =>
            {
                return(Response.AsJson(new
                {
                    code = 200,
                    status = "success",
                    result = GetTraders()
                }));
            });


            var nicksList = File.ReadAllLines("traders.txt")
                            .ToList();

            for (var i = 0; i < nicksList.Count(); i++)
            {
                nicks[i + 1400060] = nicksList[i];
            }
            if (thread == null)
            {
                thread = new Thread(() =>
                {
                    while (true)
                    {
                        Update();
                        Thread.Sleep(30000);
                    }
                });
                thread.Start();
            }
        }
        public CalcNancyModule()
        {
            After.AddItemToEndOfPipeline((ctx) => ctx.Response
                                         .WithHeader("Access-Control-Allow-Origin", GetOrigin(ctx))
                                         .WithHeader("Access-Control-Allow-Methods", "POST,GET")
                                         .WithHeader("Access-Control-Allow-Headers", "Accept, Origin, Content-type"));

            Get["/Calc"] = _ =>
            {
                //Simaulate hard work...
                Thread.Sleep(1000);

                var assemblyVersion = Assembly.GetExecutingAssembly().GetName().Version.ToString();
                return($"{{ \"version\": \"{assemblyVersion}\" }}");
            };
            Get["/Calc/Add"] = _ =>
            {
                //Simaulate hard work...
                Thread.Sleep(1000);

                var num1String = Request.Query["num1"] ?? "";
                var num2String = Request.Query["num2"] ?? "";

                var parsed1 = int.TryParse(num1String, out int num1);
                var parsed2 = int.TryParse(num2String, out int num2);
                var parsed  = parsed1 && parsed2;

                if (parsed)
                {
                    return($"{{ \"result\": \"{num1 + num2}\" }}");
                }
                else
                {
                    return($"{{ \"error\": \"can't parse input values\" }}");
                }
            };
        }
Exemple #27
0
        public TaskModule(IManagableScheduleTask manager) : base("/v1")
        {
            After.AddItemToEndOfPipeline((ctx) => ctx.Response
                                         .WithHeader("Access-Control-Allow-Origin", "*")
                                         .WithHeader("Access-Control-Allow-Methods", "POST,GET")
                                         .WithHeader("Access-Control-Allow-Headers", "Accept, Origin, Content-type"));

            Get["/"] = parameters =>
            {
                string path = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), @"sharedResources\html\page.html");
                return(Response.AsFile(path, "text/html"));
            };

            Get["/gettasks"] = parameters =>
            {
                var results = manager.GetAllScheduleTask();
                Console.WriteLine("# of task loaded: " + results.Count);
                return(Response.AsJson(results));
            };

            Get["/removetask/{id}"] = parameters =>
            {
                string id = parameters.id;

                if (int.TryParse(id, out int numbericId))
                {
                    manager.RemoveScheduleTaskByID(numbericId);
                    Console.WriteLine("Id called: " + id);
                    return(Response.AsJson("# " + id));
                }
                else
                {
                    return(HttpStatusCode.BadRequest);
                }
            };
        }
Exemple #28
0
 public JabbRModule(string modulePath)
     : base(modulePath)
 {
     Before.AddItemToEndOfPipeline(AlertsToViewBag);
     After.AddItemToEndOfPipeline(RemoveAlters);
 }
        public RegistrationController(IDAFactory daFactory, JWTFactory jwt, ApiServerConfiguration config) : base("/userapi/registration")
        {
            JWTTokenAuthentication.Enable(this, jwt);

            DAFactory = daFactory;

            After.AddItemToEndOfPipeline(x =>
            {
                x.Response.WithHeader("Access-Control-Allow-Origin", "*");
            });

            //Create a new user
            Post["/"] = x =>
            {
                var user  = this.Bind <RegistrationModel>();
                var tryIP = Request.Headers["X-Forwarded-For"].FirstOrDefault();
                if (tryIP != null)
                {
                    tryIP = tryIP.Substring(tryIP.LastIndexOf(',') + 1).Trim();
                }
                var ip = tryIP ?? Request.UserHostAddress;

                user.username = user.username ?? "";
                user.username = user.username.ToLowerInvariant();
                user.email    = user.email ?? "";
                user.key      = user.key ?? "";
                string failReason = null;
                if (user.username.Length < 3)
                {
                    failReason = "user_short";
                }
                else if (user.username.Length > 24)
                {
                    failReason = "user_long";
                }
                else if (!USERNAME_VALIDATION.IsMatch(user.username ?? ""))
                {
                    failReason = "user_invalid";
                }
                else if ((user.password?.Length ?? 0) == 0)
                {
                    failReason = "pass_required";
                }

                if (failReason != null)
                {
                    return(Response.AsJson(new RegistrationError()
                    {
                        error = "bad_request",
                        error_description = failReason
                    }));
                }

                bool isAdmin = false;
                if (config.Regkey != null && config.Regkey != user.key)
                {
                    return(Response.AsJson(new RegistrationError()
                    {
                        error = "key_wrong",
                        error_description = failReason
                    }));
                }

                var passhash = PasswordHasher.Hash(user.password);

                using (var da = daFactory.Get)
                {
                    //has this ip been banned?
                    var ban = da.Bans.GetByIP(ip);
                    if (ban != null)
                    {
                        return(Response.AsJson(new RegistrationError()
                        {
                            error = "registration_failed",
                            error_description = "ip_banned"
                        }));
                    }

                    //has this user registered a new account too soon after their last?
                    var now  = Epoch.Now;
                    var prev = da.Users.GetByRegisterIP(ip);
                    if (now - (prev.FirstOrDefault()?.register_date ?? 0) < REGISTER_THROTTLE_SECS)
                    {
                        //cannot create a new account this soon.
                        return(Response.AsJson(new RegistrationError()
                        {
                            error = "registration_failed",
                            error_description = "registrations_too_frequent"
                        }));
                    }

                    //TODO: is this ip banned?

                    var userModel = new User
                    {
                        username      = user.username,
                        email         = user.email,
                        is_admin      = isAdmin,
                        is_moderator  = isAdmin,
                        user_state    = UserState.valid,
                        register_date = now,
                        is_banned     = false,
                        register_ip   = ip,
                        last_ip       = ip
                    };

                    var authSettings = new UserAuthenticate
                    {
                        scheme_class = passhash.scheme,
                        data         = passhash.data
                    };

                    try
                    {
                        var userId = da.Users.Create(userModel);
                        authSettings.user_id = userId;
                        da.Users.CreateAuth(authSettings);

                        userModel = da.Users.GetById(userId);
                        if (userModel == null)
                        {
                            throw new Exception("Unable to find user");
                        }
                        return(Response.AsJson(userModel));
                    } catch (Exception)
                    {
                        return(Response.AsJson(new RegistrationError()
                        {
                            error = "registration_failed",
                            error_description = "user_exists"
                        }));
                    }
                }
            };
        }
Exemple #30
0
 private void EnableCORS() =>
 After.AddItemToEndOfPipeline((ctx) => ctx.Response
                              .WithHeader("Access-Control-Allow-Origin", "*")
                              .WithHeader("Access-Control-Allow-Methods", "POST,GET")
                              .WithHeader("Access-Control-Allow-Headers", "Accept, Origin, Content-type"));