5 Star 16 Fork 4

greenlaw110 / simple-bbs

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
README.md 7.85 KB
一键复制 编辑 原始数据 按行查看 历史
greenlaw110 提交于 2017-03-28 10:10 . Update README.md

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 service 2 It shall be able to display user's github profile 3 It shall allow user to publish a message 4 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 time 6 It shall display message list 7 It shall allow author to edit message including title and body 8 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 bbs
switched to db bbs
> db.audit.find().pretty()
{
	"_id" : ObjectId("58c4b2daaa5dcb61026fe597"),
	"className" : "simple_bbs.model.Audit",
	"target" : "simple_bbs.model.Message[]",
	"principal" : "greenlaw110@gmail.com",
	"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" : "greenlaw110@gmail.com",
	"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_bbs
base 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 -a
help -a
APPLICATION COMMANDS

data.gen     - Generate test data

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

Simple BBS[2k9b0dZP]>data.gen -h
data.gen -h
Usage: data.gen
Generate test data

Options:
  -n,--n     Number of record to be generated

Shortcuts: .dg, d.g, d.gen, data.g, da.ge

Now suppose you want to generate 30 posts, type

Simple BBS[2k9b0dZP]>data.gen -n 30
data.gen -n 30
Test data generated
Simple 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.

Java
1
https://gitee.com/greenlaw110/simple-bbs.git
git@gitee.com:greenlaw110/simple-bbs.git
greenlaw110
simple-bbs
simple-bbs
master

搜索帮助