https://github.com/jgantunes/hds-bbs

High Dependable Bulletin Board built for the HDS course @ IST.

https://github.com/jgantunes/hds-bbs

Science Score: 13.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
  • DOI references
  • Academic publication links
  • Committers with academic emails
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (10.4%) to scientific vocabulary
Last synced: 6 months ago · JSON representation

Repository

High Dependable Bulletin Board built for the HDS course @ IST.

Basic Info
  • Host: GitHub
  • Owner: JGAntunes
  • License: mit
  • Language: Java
  • Default Branch: master
  • Homepage:
  • Size: 39.1 KB
Statistics
  • Stars: 1
  • Watchers: 1
  • Forks: 0
  • Open Issues: 0
  • Releases: 0
Created almost 8 years ago · Last pushed over 7 years ago
Metadata Files
Readme License

README.md

Highly Dependable Systems - Bulletin Board System

A fault tolerant bulletin board built for the HDS course @ IST.

Dependencies

In order to run the project you'll need: - Java > 1.8 - Maven - Docker and/or Tomcat > 9.0

Building and running

Server

To compile and bundle the web server run: mvn install

This will generate a bbs.war file in the target dir that you can deploy in Tomcat. If you don't have Tomcat installed and configured though you can run the web server with Docker, which copies the resources from the target dir and runs it in a Tomcat server. To run and build the Dockerfile: docker build --tag bbs . && docker run --rm -p 8080:8080 bbs

By default it will run in port 8080 (feel free to map it to another port with the docker -p options) under the path /bbs. Example: ``` jgantunes@BRUTOZORD ~/I/hds-bbs> curl -X POST -H "Content-Type: application/json" "http://localhost:8080/bbs/users" -d '{"pubKey": "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxiUrH00bdLboTGwtsYcMTscHDLyGwEsHHWxEtzxUC/VzFNC4N0SOap14TDtI9kgBYaoLmnti1CZ35KMetUyXVJp4A4O15sir3e0uxWSyErhPQ9X/2e3AvIGfmhPMiOC6zmMnZfcSjXcAKCaRCDx6C3MhFaHtC8MCLiBcJO09nBYUK7B1te1MDwYq5YAhoFgjDFlb6GKMSMRT2MsK5VYDT9srSlq5e94RlF1hTOhNyhLjuWfxuVxK5okmaoQUcDsHOYXmJPU9t4VE+djz946vM4sVOzq3hxFHCrI/jPyrFNJ0jRFvQk3lgpE9+muDsrbW/3r/XjCswlW7mhmiHGgSrQIDAQAB", "id": "4a74ec5e2108a415c5ec3e4f6e3f5962b212f5e42f34b763e2d97e7fe3ec70fe"}'

```

Replicated server locally

To run multiple BBS servers locally you'll need docker-compose. You can then run the following command where is the server replication factor: docker-compose up --build --scale bbs-server=<N>

To see which ports the processes are bound to (by default will be in the range of 8080 -> 8090) run the following: jgantunes@BRUTOZORD ~> docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 7eb5e3472362 hds-bbs_bbs-server "catalina.sh run" 17 minutes ago Up 18 seconds 0.0.0.0:8084->8080/tcp hds-bbs_bbs-server_1 b001012e834e hds-bbs_bbs-server "catalina.sh run" 17 minutes ago Up 17 seconds 0.0.0.0:8085->8080/tcp hds-bbs_bbs-server_2

The ports for your host will be listed under PORTS.

Client

The client lib under bbs.client package has all the necessary resources to interact with the API, specifically the Operations class. For commodity, we've packaged a small CLI (bbs.client.Client) based utility that can be used to load user keys and interact with the BBS service of your choice.

To compile the source code and generate a JAR under the target dir: mvn install -Dp.type=jar

To run the CLI utility and interact with the BBS service: mvn exec:java -Dexec.mainClass="bbs.client.Client" -Dexec.args="<YOUR-PRIVATE-PEM-FORMATTED-KEY> <YOUR-PRIVATE-PEM-FORMATTED-KEY> <BBS-SERVER-1>,<BBS-SERVER-2>,..."

The last argument is a comma separated list (or just a single one) of the URLs where the BBS service is running.

Example: mvn exec:java -Dexec.mainClass="bbs.client.Client" -Dexec.args="./examples/private_key.pem ./examples/public_key.pem \"http://localhost:8080/bbs\""

There's a set of example PEM encoded RSA keys under the examples dir which you can use for tests (for obvious reasons don't use it for anything other then tests and examples). The README.md under examples also has instructions on how to create RSA keys to use with the BBS system using openssl.

Owner

  • Name: João Antunes
  • Login: JGAntunes
  • Kind: user
  • Location: Lisbon
  • Company: @netlify

GitHub Events

Total
Last Year

Committers

Last synced: 10 months ago

All Time
  • Total Commits: 14
  • Total Committers: 1
  • Avg Commits per committer: 14.0
  • Development Distribution Score (DDS): 0.0
Past Year
  • Commits: 0
  • Committers: 0
  • Avg Commits per committer: 0.0
  • Development Distribution Score (DDS): 0.0
Top Committers
Name Email Commits
JGAntunes j****s@g****m 14

Issues and Pull Requests

Last synced: 10 months ago

All Time
  • Total issues: 0
  • Total pull requests: 0
  • Average time to close issues: N/A
  • Average time to close pull requests: N/A
  • Total issue authors: 0
  • Total pull request authors: 0
  • Average comments per issue: 0
  • Average comments per pull request: 0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 0
  • Pull requests: 0
  • Average time to close issues: N/A
  • Average time to close pull requests: N/A
  • Issue authors: 0
  • Pull request authors: 0
  • Average comments per issue: 0
  • Average comments per pull request: 0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
Pull Request Authors
Top Labels
Issue Labels
Pull Request Labels

Dependencies

Dockerfile docker
  • tomcat 9.0 build
pom.xml maven
  • com.fasterxml.jackson.core:jackson-annotations 2.9.6
  • javax.activation:activation 1.1.1
  • javax.servlet:servlet-api 2.5
  • javax.ws.rs:javax.ws.rs-api 2.1
  • javax.xml.bind:jaxb-api 2.3.0
  • org.glassfish.jersey.containers:jersey-container-servlet 2.25.1
  • org.glassfish.jersey.core:jersey-client 2.25.1
  • org.glassfish.jersey.core:jersey-server 2.25.1
  • org.glassfish.jersey.media:jersey-media-json-jackson 2.27