some tests and major cleanup

This commit is contained in:
ston1th 2018-10-19 23:08:32 +02:00
commit 16671b3406
30 changed files with 192057 additions and 202431 deletions

View file

@ -5,6 +5,7 @@ package server
import (
"bytes"
"context"
"errors"
"git.giftfish.de/ston1th/gowiki/pkg/core"
"git.giftfish.de/ston1th/gowiki/pkg/db"
"git.giftfish.de/ston1th/gowiki/pkg/log"
@ -54,7 +55,7 @@ func NewHTTPServer(l net.Listener, conf core.Config) (srv *HTTPServer) {
func (s *HTTPServer) Start() (err error) {
s.DB, err = db.New(s.DataDir)
if err != nil {
return
return errors.New("db: " + err.Error())
}
if s.Secret != "" {
s.JWT, err = jwt.New(jwt.DefaultExpiry, s.DB, bytes.NewBufferString(s.Secret))
@ -62,7 +63,7 @@ func (s *HTTPServer) Start() (err error) {
s.JWT, err = jwt.New(jwt.DefaultExpiry, s.DB, nil)
}
if err != nil {
return
return errors.New("server: " + err.Error())
}
go func() {
log.Println(s.srv.Serve(s.listener))

View file

@ -48,7 +48,7 @@ const (
<head>
<title>GoWiki | {{.Title}}</title>
<link rel="stylesheet" type="text/css" href="/bootstrap.css" media="screen" integrity="sha256-NeLmQ7cX66J4MdtgGlG3O/TgvsSyP1b9WbaQtxYZUbQ="></link>
<link rel="stylesheet" type="text/css" href="/custom.css" media="screen" integrity="sha256-1LNAeuiM/rtsY1jIgLovUZ7HbYnOCkj3ZyailNA3rFQ="></link>
<link rel="stylesheet" type="text/css" href="/custom.css" media="screen" integrity="sha256-/SZfW8eVqFuioMg+QXacvK1Zc3XLtT5LGu9tMle65Jc="></link>
</head>
<body id="back-to-top">
<div class="navbar navbar-expand fixed-top navbar-dark bg-primary">
@ -259,7 +259,7 @@ const (
</div>
<div class="row mt-5">
<div class="col">
{{.Data.PageIndex}}
{{.Data.TOC}}
</div>
<div class="col">
<div class="btn-group float-md-right">
@ -388,7 +388,7 @@ const (
</div>
<div class="row mt-5">
<div class="col">
{{.Data.PageIndex}}
{{.Data.TOC}}
</div>
<div class="col">
<div class="btn-group float-md-right">
@ -680,6 +680,10 @@ h6 {
font-family: 'Courier New';
font-size: 14;
}
ul.toc {
list-style-type: disc;
margin-bottom: 0 !important;
}
pre {
display: block;
padding: 10px;

View file

@ -30,6 +30,9 @@ func checkXsrf(xsrf string, secret []byte) bool {
if err != nil {
return false
}
if len(t) != jwt.KeySize {
return false
}
return subtle.ConstantTimeCompare(secret, xor(t[keySize:], t[:keySize])) == 1
}

31
pkg/server/xsrf_test.go Normal file
View file

@ -0,0 +1,31 @@
// Copyright (C) 2018 Marius Schellenberger
package server
import (
"testing"
)
func TestXsrf(t *testing.T) {
sec := genKey(keySize)
if len(sec) != keySize {
t.Fatal("len(sec) != keySize")
}
xsrf := newXsrf(sec)
if xsrf == "" {
t.Fatal("xsrf is empty")
}
if !checkXsrf(xsrf, sec) {
t.Fatal("valid xsrf check failed")
}
if checkXsrf("test", sec) {
t.Fatal("invalid xsrf check succeeded")
}
rnd := genKey(keySize)
if checkXsrf(xsrf, rnd) {
t.Fatal("invalid xsrf check succeeded")
}
}