first commit
This commit is contained in:
79
tool/encrypt.go
Normal file
79
tool/encrypt.go
Normal file
@ -0,0 +1,79 @@
|
||||
package tool
|
||||
|
||||
import (
|
||||
"crypto/aes"
|
||||
"crypto/cipher"
|
||||
"crypto/rand"
|
||||
"encoding/base64"
|
||||
"fmt"
|
||||
"io"
|
||||
"unicode"
|
||||
)
|
||||
|
||||
func Encrypt(key []byte, text string) string {
|
||||
|
||||
plaintext := []byte(text)
|
||||
|
||||
block, err := aes.NewCipher(key)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
ciphertext := make([]byte, aes.BlockSize+len(plaintext))
|
||||
iv := ciphertext[:aes.BlockSize]
|
||||
if _, err := io.ReadFull(rand.Reader, iv); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
stream := cipher.NewCFBEncrypter(block, iv)
|
||||
stream.XORKeyStream(ciphertext[aes.BlockSize:], plaintext)
|
||||
|
||||
return base64.URLEncoding.EncodeToString(ciphertext)
|
||||
}
|
||||
|
||||
func Decrypt(key []byte, cryptoText string) string {
|
||||
ciphertext, _ := base64.URLEncoding.DecodeString(cryptoText)
|
||||
|
||||
block, err := aes.NewCipher(key)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
if len(ciphertext) < aes.BlockSize {
|
||||
panic("ciphertext too short")
|
||||
}
|
||||
iv := ciphertext[:aes.BlockSize]
|
||||
ciphertext = ciphertext[aes.BlockSize:]
|
||||
|
||||
stream := cipher.NewCFBDecrypter(block, iv)
|
||||
|
||||
stream.XORKeyStream(ciphertext, ciphertext)
|
||||
|
||||
return fmt.Sprintf("%s", ciphertext)
|
||||
}
|
||||
|
||||
func IsPasswordValid(s string) bool {
|
||||
var (
|
||||
hasMinLen = false
|
||||
hasUpper = false
|
||||
hasLower = false
|
||||
hasNumber = false
|
||||
hasSpecial = false
|
||||
)
|
||||
if len(s) >= 7 {
|
||||
hasMinLen = true
|
||||
}
|
||||
for _, char := range s {
|
||||
switch {
|
||||
case unicode.IsUpper(char):
|
||||
hasUpper = true
|
||||
case unicode.IsLower(char):
|
||||
hasLower = true
|
||||
case unicode.IsNumber(char):
|
||||
hasNumber = true
|
||||
case unicode.IsPunct(char) || unicode.IsSymbol(char):
|
||||
hasSpecial = true
|
||||
}
|
||||
}
|
||||
return hasMinLen && hasUpper && hasLower && hasNumber && hasSpecial
|
||||
}
|
72
tool/log.go
Normal file
72
tool/log.go
Normal file
@ -0,0 +1,72 @@
|
||||
package tool
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
)
|
||||
|
||||
var (
|
||||
Black = Color("\033[1;30m%s\033[0m")
|
||||
Red = Color("\033[1;31m%s\033[0m")
|
||||
Green = Color("\033[1;32m%s\033[0m")
|
||||
Yellow = Color("\033[1;33m%s\033[0m")
|
||||
Purple = Color("\033[1;34m%s\033[0m")
|
||||
Magenta = Color("\033[1;35m%s\033[0m")
|
||||
Teal = Color("\033[1;36m%s\033[0m")
|
||||
White = Color("\033[1;37m%s\033[0m")
|
||||
)
|
||||
|
||||
func Log(v string) {
|
||||
fmt.Println(v)
|
||||
}
|
||||
|
||||
func LogInfo(v string) {
|
||||
fmt.Println(Teal(v))
|
||||
}
|
||||
|
||||
func LogFatal(v string) {
|
||||
|
||||
fmt.Println(Red(LogLine("*")))
|
||||
fmt.Println(Red(v))
|
||||
fmt.Println(Red(LogLine("*")))
|
||||
}
|
||||
|
||||
func LogLine(car string) string {
|
||||
v := ""
|
||||
for i := len(v); len(v) < 100; i++ {
|
||||
v = v + car
|
||||
}
|
||||
return v
|
||||
}
|
||||
|
||||
func LogJobTitle(v string) {
|
||||
v = "== CMD = " + v + " "
|
||||
for i := len(v); len(v) < 100; i++ {
|
||||
v = v + "="
|
||||
}
|
||||
|
||||
fmt.Println("")
|
||||
fmt.Println("")
|
||||
fmt.Println(Magenta(LogLine("=")))
|
||||
fmt.Println(Magenta(v))
|
||||
fmt.Println(Magenta(LogLine("=")))
|
||||
}
|
||||
|
||||
func LogTitle(v string) {
|
||||
v = "== " + v + " "
|
||||
for i := len(v); len(v) < 100; i++ {
|
||||
v = v + "="
|
||||
}
|
||||
|
||||
fmt.Println("")
|
||||
fmt.Println("")
|
||||
fmt.Println(Green(LogLine("=")))
|
||||
fmt.Println(Green(v))
|
||||
fmt.Println(Green(LogLine("=")))
|
||||
}
|
||||
|
||||
func Color(colorString string) func(...interface{}) string {
|
||||
sprint := func(args ...interface{}) string {
|
||||
return fmt.Sprintf(colorString, fmt.Sprint(args...))
|
||||
}
|
||||
return sprint
|
||||
}
|
59
tool/session.go
Normal file
59
tool/session.go
Normal file
@ -0,0 +1,59 @@
|
||||
package tool
|
||||
|
||||
import (
|
||||
"github.com/martini-contrib/sessions"
|
||||
)
|
||||
|
||||
func Rendersession(session sessions.Session) map[string]string {
|
||||
rendersession := make(map[string]string)
|
||||
|
||||
rendersession["Userid"] = ""
|
||||
tmp := session.Get("Userid")
|
||||
if tmp != nil {
|
||||
rendersession["Userid"] = tmp.(string)
|
||||
}
|
||||
|
||||
rendersession["Login"] = ""
|
||||
tmp = session.Get("Login")
|
||||
if tmp != nil {
|
||||
rendersession["Login"] = tmp.(string)
|
||||
}
|
||||
|
||||
rendersession["Firstname"] = ""
|
||||
tmp = session.Get("Firstname")
|
||||
if tmp != nil {
|
||||
rendersession["Firstname"] = tmp.(string)
|
||||
}
|
||||
|
||||
rendersession["Lastname"] = ""
|
||||
tmp = session.Get("Lastname")
|
||||
if tmp != nil {
|
||||
rendersession["Lastname"] = tmp.(string)
|
||||
}
|
||||
|
||||
rendersession["Email"] = ""
|
||||
tmp = session.Get("Email")
|
||||
if tmp != nil {
|
||||
rendersession["Email"] = tmp.(string)
|
||||
}
|
||||
|
||||
rendersession["Avatar"] = ""
|
||||
tmp = session.Get("Avatar")
|
||||
if tmp != nil {
|
||||
rendersession["Avatar"] = tmp.(string)
|
||||
}
|
||||
|
||||
rendersession["Role"] = ""
|
||||
tmp = session.Get("Role")
|
||||
if tmp != nil {
|
||||
rendersession["Role"] = tmp.(string)
|
||||
}
|
||||
|
||||
rendersession["Apikey"] = ""
|
||||
tmp = session.Get("Apikey")
|
||||
if tmp != nil {
|
||||
rendersession["Apikey"] = tmp.(string)
|
||||
}
|
||||
|
||||
return rendersession
|
||||
}
|
Reference in New Issue
Block a user