• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

simple-bbs: 一个编码挑战项目

原作者: [db:作者] 来自: 网络 收藏 邀请

开源软件名称:

simple-bbs

开源软件地址:

https://gitee.com/greenlaw110/simple-bbs

开源软件介绍:

Simple BBS

Live demo site

http://simple-bbs.actframework.org

Background

The project is created to finish the coding challenge I've raised to @AutoPlus.

I've also use this project to demonstrate on the following features of ActFramework:

  1. Login/SignUp user with Social connection, specifically github in this project. However it's a matter of configuration to get the project working on other social channels including LinkedIn and Facebook.
  2. Authentication/Authorisation/Auditing with Act-AAA
  3. CRUD form with Post/Update/Delete and data validation
  4. The expressiveness of ActFramework. It takes only 281 lines of Java code to implement this project.

Known issues

See https://git.oschina.net/greenlaw110/simple-bbs/issues

Requirement

1 It shall allow user to register/login to the system through Github oauth service2 It shall be able to display user's github profile3 It shall allow user to publish a message4 The message must have the following fields

  • title
  • body
  • author
  • date time

5 It shall be able to display a message detail including title, body, author and time6 It shall display message list7 It shall allow author to edit message including title and body8 It shall allow author to delete message he/she published

non-functional requirements

  • No requirement on styling. Just keep it simple.
  • Session expiration time is 60s. Every request shall update the expiration time.
  • No requirement on database. Choose whatever you want. But data must be persistent
  • No need to CSS just use standard HTML element is enough. List shall use <li> element. The body shall use <textarea> element
  • The home page should be message list. Use ajax to implement pagination. Each page shall display 20 messages
  • Project must provide the build script, deploy script and README file.

Platform and Database

You must have MongoDB, JDK7+ and the corresponding JCE installed in order to play with this project. You must install maven to build the application

Build/Run/Deploy

To build and run the app locally

mvn clean compile exec:exec

This will start the app in actframework default port: 5460

To build package for deployment

mvn clean package

This will generate a distribution package in target/dist dir. You can scp the file to your cloud server.

To run the distribution package, unzip it and type ./run

Note about Github application

This app require user to authenticate through GitHub OAuth service. Thus you must register your Github app.

Callback URL

Any OAuth app requrie the app owner to provide a callback URL. You must make sure your callback URL looks like:

http://<my-domain>/~/social/callback?provider=github

Once you registered the github application, you need to open /src/main/resources/app.properties file and type in your app ID and secret.

More about running locally

Since Github allows only one callback URL, if you registered a callback URL for live demo site (like me) then it needs to do some tricks in order to get the app running on local box:

  1. The local app start on port 5460, so you need to install a frontend http server (e.g. nginx) to direct the traffic from port 80 to 5460. Or you change the app configuration and add http.port=80 to get it start on port 80

  2. You might need to hijack your /etc/hosts file (C:\Windows\System32\drivers\etc\hosts on windows) by adding the mapping from the domain in the callback URL you registered on Github to your local ip. Here is my hosts file:

127.0.0.1	localhost simple-bbs.actframework.org

Extra

This project provides some extra functions in addition to the requirements stated above

Authentication/Authorisation/Auditing

This app demonstrate how to use act-aaa to implement Authentication/Authorization/Auditing.

When user post new message or update existing message, the app will audit the action into audit collection in the mongodb. Thus you should be able to find something like the follows:

> use bbsswitched to db bbs> db.audit.find().pretty(){	"_id" : ObjectId("58c4b2daaa5dcb61026fe597"),	"className" : "simple_bbs.model.Audit",	"target" : "simple_bbs.model.Message[]",	"principal" : "[email protected]",	"success" : true,	"permission" : "update",	"_created" : NumberLong("1489285850015"),	"_modified" : NumberLong("1489285850015"),	"v" : NumberLong(1)}{	"_id" : ObjectId("58c4b2deaa5dcb61026fe598"),	"className" : "simple_bbs.model.Audit",	"target" : "simple_bbs.model.Message[]",	"principal" : "[email protected]",	"success" : true,	"permission" : "update",	"_created" : NumberLong("1489285854817"),	"_modified" : NumberLong("1489285854817"),	"v" : NumberLong(1)}{	"_id" : ObjectId("58c4b2e7aa5dcb61026fe599"),	"className" : "simple_bbs.model.Audit",

Adding test data

This app provides a console command allow you to add test data. Before you start generating test data. Make sure you have at least one user in the system by open your browser navigating to the app and click on Login with Github.

Run nc localhost 5461 (you can change nc to anything like, e.g. telnet or putty on windows) when the app has been started. You should see something like:

  __  ___         _        _     _    _    __  (_    |   |\/|  |_)  |   |_    |_)  |_)  (_   __)  _|_  |  |  |    |_  |_    |_)  |_)  __)                                                          powered by ActFramework v1.1.0-f544 version: ${project.version}scan pkg: simple_bbsbase dir: /home/luog/p/greenlaw110/simple-bbs     pid: 29282 profile: dev    mode: DEV     zen: If the implementation is hard to explain, it's a bad idea.Simple BBS[2k9b0dZP]>

Type help -a to query application command:

Simple BBS[2k9b0dZP]>help -ahelp -aAPPLICATION COMMANDSdata.gen     - Generate test data

Type data.gen -h to check how to use the command:

Simple BBS[2k9b0dZP]>data.gen -hdata.gen -hUsage: data.genGenerate test dataOptions:  -n,--n     Number of record to be generatedShortcuts: .dg, d.g, d.gen, data.g, da.ge

Now suppose you want to generate 30 posts, type

Simple BBS[2k9b0dZP]>data.gen -n 30data.gen -n 30Test data generatedSimple BBS[2k9b0dZP]>

You will get the data generated.

LOC statistics

luog@luog-Satellite-P50-A:~/p/greenlaw110/simple-bbs$ loc src-------------------------------------------------------------------------------- Language             Files        Lines        Blank      Comment         Code-------------------------------------------------------------------------------- Java                     9          395           71           43          281 HTML                     5          269           24            0          245 XML                      2          133           21           20           92 JavaScript               3           85            7            2           76 Batch                    2           14            0            0           14 YAML                     1           15            3            0           12 CSS                      1            3            0            0            3-------------------------------------------------------------------------------- Total                   23          914          126           65          723--------------------------------------------------------------------------------```

Should you have any questions, please comment below or submit an issue.


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap