arnaucube
arnaucube/decentralized-blogging-platformPublic Self-hosted repository
decentralized-blogging-platform/main.go
main.goRaw
 1package main
 2
 3import (
 4	"fmt"
 5	"log"
 6	"net/http"
 7	"os"
 8
 9	"github.com/fatih/color"
10	"github.com/gorilla/handlers"
11	mgo "gopkg.in/mgo.v2"
12)
13
14const keysDir = "keys"
15const postsDir = "ownposts"
16const keysize = 2048
17const hashize = 1536
18
19var userCollection *mgo.Collection
20var postCollection *mgo.Collection
21
22func main() {
23	color.Blue("Starting ipfs-ai-models-market")
24
25	readConfig("config.json")
26	fmt.Println(config)
27
28	//create models directory
29	_ = os.Mkdir(keysDir, os.ModePerm)
30	//create models directory
31	_ = os.Mkdir(postsDir, os.ModePerm)
32
33	initializeToken()
34
35	//mongodb
36	session, err := getSession()
37	check(err)
38	userCollection = getCollection(session, "users")
39	postCollection = getCollection(session, "posts")
40
41	//run thw webserver
42	go GUI()
43
44	//run API
45	log.Println("api server running")
46	log.Print("port: ")
47	log.Println(config.APIPort)
48	router := NewRouter()
49	headersOk := handlers.AllowedHeaders([]string{"X-Requested-With", "Access-Control-Allow-Origin", "Authorization"})
50	originsOk := handlers.AllowedOrigins([]string{"*"})
51	methodsOk := handlers.AllowedMethods([]string{"GET", "HEAD", "POST", "PUT", "OPTIONS"})
52	log.Fatal(http.ListenAndServe(":"+config.APIPort, handlers.CORS(originsOk, headersOk, methodsOk)(router)))
53}
54
55func GUI() {
56	//here, run webserver
57	log.Println("webserver in port " + config.WebPort)
58	http.Handle("/", http.FileServer(http.Dir("./webapp")))
59	http.ListenAndServe(":"+config.WebPort, nil)
60}