Research
Security News
Malicious npm Packages Inject SSH Backdoors via Typosquatted Libraries
Socket’s threat research team has detected six malicious npm packages typosquatting popular libraries to insert SSH backdoors.
github.com/kosatnkn/catalyst
A REST API base that is written in Go using the Clean Architecture paradigm.
A new project can be created in one of two ways.
The easiest way to create a project using Catalyst
as the base is to use Cauldron
. It is a small tool that enables you to set up a new project in no time.
More information about Cauldron
can be found here
Clone and install Cauldron
git clone https://github.com/kosatnkn/cauldron.git
cd cauldron
go install
Create a new project
$ cauldron -n=ProjectOne -ns=github.com/example [-t=v1.0.0]
NOTE:
- -n Project name (ex: ProjectOne)
- -ns Namespace for the project (ex: github.com/example)
- -t Release version of Catalyst to be used. The latest version will be used if -t is not provided
- -help or -h Show help message
Cauldron will do a git init on the newly created project but you will have to stage all the files in the project and do the first commit yourself.
git add .
git commit -m "first commit"
This is the work intensive approach.
Clone Catalyst
git clone https://github.com/kosatnkn/catalyst.git <new_project_name>
Remove .git
cd <new_project_name>
rm -rf .git
Change import paths
NOTE: Since
Catalyst
uses go mod the the newly created application will still work. But all the import paths would be as inCatalyst
base project which is not what you will want.
go.mod
file to a module name of your choiceFind & Replace
in the entire project to update all the import pathsapp/splash/styles.go
git init
to the projectWe have included a sample set of endpoints and their corresponding controller and domain logic by default.
This is to make it easier for you to follow through and understand how Catalyst handles the request response cycle for a given request.
The sample set will cover all basic CRUD operations that a REST API will normally need.
+ -------- + + ------- +
| RESPONSE | | REQUEST |
+ -------- + + ------- +
/\ ||
|| \/
|| + ------------ + => + ---------- +
|| | Router | | Middleware |
|| + ------------ + <= + ---------- +
|| ||
|| ||
+ --------------------------- + ||
| Transformer | Error Handler | ||
+ --------------------------- + ||
/\ ||
|| \/
+ -------------- + => + -------------------- +
| Controller | | Unpacker | Validator |
+ -------------- + <= + -------------------- +
/\ ||
|| \/
+ -------------- +
| Use Case |
+ -------------- +
/\ ||
|| \/
______________________________________________
+ ------- + + ---------- + + ------- +
| Adapter | | Repository | | Service |
+ ------- + + ---------- + + ------- +
/\ || /\ || /\ ||
|| \/ || \/ || \/
+ ------- + + ---------- + + ------- +
| Library | | Database | | APIs |
+ ------- + + ---------- + + ------- +
godoc -http=:6060 -v
Navigate to http://localhost:6060/pkg/github.com/kosatnkn/catalyst/
Go mod is used as the dependency management mechanism. Visit here for more details.
Use go mod in projects that are within the GOPATH
export GO111MODULE=on
Initialize go mod
go mod init github.com/my/repo
View final versions that will be used in a build for all direct and indirect dependencies
go list -m all
View available minor and patch upgrades for all direct and indirect dependencies
go list -u -m all
Update all direct and indirect dependencies to latest minor or patch upgrades (pre-releases are ignored)
go get -u or go get -u=patch
Build or test all packages in the module when run from the module root directory
go build ./... or go test ./...
Prune any no-longer-needed dependencies from go.mod and add any dependencies needed for other combinations of OS, architecture, and build tags
go mod tidy
Optional step to create a vendor directory
go mod vendor
Catalyst provides a basic multistage Dockerfile so you have a starting point for creating Docker images.
docker build -t <tag_name>:<tag_version> .
NOTE: Do not forget the tailing
.
that indicates the current directory
Example
docker build -t kosatnkn/catalyst:1.0.0 .
You can use it as follows
docker run --name catalyst -p 3000:3000 -p 3001:3001 kosatnkn/catalyst:1.0.0
Do both in one go
docker build -t kosatnkn/catalyst:1.0.0 . && docker run -it --rm --name catalyst -p 3000:3000 -p 3001:3001 kosatnkn/catalyst:1.0.0
Wiki pages on technical aspects of the project can be found here
FAQs
Unknown package
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Security News
Socket’s threat research team has detected six malicious npm packages typosquatting popular libraries to insert SSH backdoors.
Security News
MITRE's 2024 CWE Top 25 highlights critical software vulnerabilities like XSS, SQL Injection, and CSRF, reflecting shifts due to a refined ranking methodology.
Security News
In this segment of the Risky Business podcast, Feross Aboukhadijeh and Patrick Gray discuss the challenges of tracking malware discovered in open source softare.