Skip to content

Instantly share code, notes, and snippets.

View arzahs's full-sized avatar

Sergey Nelepa arzahs

  • Ukraine, Kiev
View GitHub Profile
@arzahs
arzahs / Delete docker trash from mac os
Created March 31, 2019 18:23
Delete docker trash from mac os
docker rm $(docker ps -a -q)
docker rmi $(docker images -q)
docker volume rm $(docker volume ls |awk '{print $2}')
STOP DOCKER
rm -rf ~/Library/Containers/com.docker.docker/Data/*
@arzahs
arzahs / security.go
Created December 12, 2018 07:21
Generation RSA key pairs with golang
package security
import (
"crypto/rand"
"crypto/rsa"
"crypto/x509"
"encoding/pem"
"github.com/pkg/errors"
)
@arzahs
arzahs / jwt.go
Created December 12, 2018 07:20
JWT token generation with golang
func GenerateToken(signingKey []byte, clientID string, id string, lifeDur time.Duration) (*Token, error) {
var expiredAt time.Time
if id != "" {
expiredAt = time.Now().Add(defaultRefreshExp)
} else {
expiredAt = time.Now().Add(lifeDur)
}
claims := CustomClaims{
clientID,
jwt.StandardClaims{
@arzahs
arzahs / password.go
Created December 12, 2018 07:20
hash password with golang
func HashPassword(password string) (string, error) {
bytes, err := bcrypt.GenerateFromPassword([]byte(password), 14)
return string(bytes), err
}
func CheckPasswordHash(password, hash string) bool {
err := bcrypt.CompareHashAndPassword([]byte(hash), []byte(password))
return err == nil
}
@arzahs
arzahs / goland_aes_encoder_decoder
Created November 9, 2018 17:55
aes encoding using go
type Encoder struct {
Block cipher.Block
SecretKey string
}
func (e *Encoder) Encode(message string) (string, error) {
plainText := []byte(message)
cipherText := make([]byte, aes.BlockSize+len(plainText))
iv := cipherText[:aes.BlockSize]
if _, err := io.ReadFull(rand.Reader, iv); err != nil {
ype Scheduler struct {
interval time.Duration
}
func (s *Scheduler) Run() {
go func() {
for {
select {
case <-timeutil.After(s.interval):
s.process()
@arzahs
arzahs / gist:adacfb82d26c2d09c8be16b455570168
Created October 23, 2018 07:06
load and read scanner
resp, err := http.Get(s.host)
if err != nil {
return err
}
defer resp.Body.Close()
scanner := bufio.NewScanner(resp.Body)
for scanner.Scan() {
fmt.Println(scanner.Text())
}
// After it also works as a "time.After" but it does truncate by duration.
func After(d time.Duration) <-chan time.Time {
return time.After(time.Until(time.Now().Truncate(d).Add(d)))
}
const DefaultTolerance = 4
func (m Message) Distance(e bktree.Entry) int {
return levenshtein.Distance(m.Name, e.(Message).Name)
}
type Searcher struct {
tree bktree.BKTree
}
@arzahs
arzahs / Create certificate chain
Created June 18, 2018 17:15
Create certificate chain for nginx
cat certfile.crt bundle.ca-bundle >> chain.crt