This project intends to be the go implementation of pttbbs/pttbbs.
Collaborating with Ptt-official-app middlewares. go-pttbbs intends to be web-based bbs.
You can start with the swagger api and try the api.
You can copy the curl command from the link if you encounter CORS issue.
You can do the following to start with docker-compose:
- copy
docker_compose.env.template
todocker_compose.env
and modify the settings. ./scripts/docker_initbbs.sh [BBSHOME] pttofficialapps/go-pttbbs:latest
docker-compose --env-file docker_compose.env -f docker-compose.yaml up -d
- register SYSOP and pttguest (api.GUEST) at
http://localhost:3456/v1/register
- register your account at
http://localhost:3456/register
- login at
http://localhost:3456/v1/login
telnet localhost 8888
and use the account that you registered.
./scripts/test.sh
./scripts/coverage.sh
You can do the following to run with ./scripts/run.sh:
- On Mac: put the following lines in /etc/sysctl.conf and reboot for 16M shared-mem:
kern.sysv.shmmax=16777216 kern.sysv.shmmin=1 kern.sysv.shmmni=128 kern.sysv.shmseg=32 kern.sysv.shmall=4096
- Check that we do have 16M shared-mem
sysctl -a|grep shm
- Init your own BBSHOME:
./scripts/docker_initbbs.sh [BBSHOME] pttofficialapps/go-pttbbs:latest
cp 02-config-run.go.template ptttype/02-config-run.go
cp 02-config.run.template.ini 02-config.run.ini
- Setup BBSHOME in 02-config.run.ini
- Do the following step ONLY IF you want to reset shared-mem:
ipcrm -M 0x000004cc
ipcrm -S 0x000007da
./scripts/run.sh
You can do the following do run updated-code in docker:
-
Modify the docker-compose.yaml and add the expected ports and mount directory in volumes:
ports: - "127.0.0.1:3456:3456" - "127.0.0.1:8889:8888" - "127.0.0.1:48764:48763" - "127.0.0.1:[local-port]:[docker-port]" volumes: - ${BBSHOME}:/home/bbs - [local absolute directory]:/home/[username]/go-pttbbs
-
do docker-compose
-
docker container ls
and find the corresponding docker container -
docker exec -it [container] /bin/bash
-
cd /home/[username]/go-pttbbs
-
./scripts/run-in-docker.sh [docker-port]
Some config-variables are required const in ptttype, to be defined as Cstr (IDLEN, PASSLEN, etc.)
For the normal config-variables, we use config.ini as the configuration.
For the const config-variables in ptttype, We use 00-config-[dev-mode].go with +build flag
We use viper and .ini as our config-framework. 00-config.template.ini is the config-template file.
We have 3 files For every module with the config:
- 00-config.go: define the variables of the config.
- config.go: define the func of setting the variables from the config-file.
- config_util.go: helper functions. should be straightforward to follow.
We can customized ptttype/00-config-default.go with the following steps:
- Copy 00-config-production.go.template to ptttype/00-config-production.go and change the +build and variables accordingly.
cd go-pttbbs ; go build -tag [dev-mode]; cd ..
The swagger setup is based on flask-swagger, which is a python-project. You can do following for the swagger-api:
- setup the python virtualenv.
- cd apidoc; pip install . && pip uninstall apidoc -y && python setup develop; cd ..
- ./scripts/swagger.sh
- connect to http://localhost:8080
Relationship with https://github.com/PichuChen/go-bbs
PiChuChen's go-bbs was the first repo in Ptt-official-app intending to be the backend. This repository is intending to have another approach to implement the go-version of the bbs.