78 lines
1.4 KiB
Go
78 lines
1.4 KiB
Go
package core
|
|
|
|
import (
|
|
"crypto/rand"
|
|
"crypto/sha256"
|
|
"fmt"
|
|
"io/fs"
|
|
"io/ioutil"
|
|
"os"
|
|
)
|
|
|
|
func GenRandomToken() string {
|
|
rdata := make([]byte, 64)
|
|
rand.Read(rdata)
|
|
hash := sha256.Sum256(rdata)
|
|
token := fmt.Sprintf("%x", hash)
|
|
return token
|
|
}
|
|
|
|
func GenRandomString(n int) string {
|
|
const lb = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
|
|
b := make([]byte, n)
|
|
for i := range b {
|
|
t := make([]byte, 1)
|
|
rand.Read(t)
|
|
b[i] = lb[int(t[0])%len(lb)]
|
|
}
|
|
return string(b)
|
|
}
|
|
|
|
func GenRandomAlphanumString(n int) string {
|
|
const lb = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
|
|
b := make([]byte, n)
|
|
for i := range b {
|
|
t := make([]byte, 1)
|
|
rand.Read(t)
|
|
b[i] = lb[int(t[0])%len(lb)]
|
|
}
|
|
return string(b)
|
|
}
|
|
|
|
func CreateDir(path string, perm os.FileMode) error {
|
|
if _, err := os.Stat(path); os.IsNotExist(err) {
|
|
err = os.Mkdir(path, perm)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func ReadFromFile(path string) ([]byte, error) {
|
|
f, err := os.OpenFile(path, os.O_RDONLY, 0644)
|
|
defer f.Close()
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
b, err := ioutil.ReadAll(f)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return b, nil
|
|
}
|
|
|
|
func SaveToFile(b []byte, fpath string, perm fs.FileMode) error {
|
|
file, err := os.OpenFile(fpath, os.O_WRONLY|os.O_TRUNC|os.O_CREATE, perm)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
defer file.Close()
|
|
|
|
_, err = file.Write(b)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
return nil
|
|
}
|