overdue
This commit is contained in:
83
enc.go
Executable file
83
enc.go
Executable file
@@ -0,0 +1,83 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"io"
|
||||
"local/encoder"
|
||||
"os"
|
||||
"strconv"
|
||||
)
|
||||
|
||||
func key() []byte {
|
||||
k := []byte(os.Getenv("KEY"))
|
||||
if len(k) == 0 {
|
||||
panic("KEY is empty")
|
||||
}
|
||||
return k
|
||||
}
|
||||
|
||||
func do_stdin_op(op string, src ...io.Reader) (io.Reader, error) {
|
||||
k := key()
|
||||
bops := []encoder.BOP{
|
||||
&encoder.Salter{},
|
||||
//&encoder.Zipper{},
|
||||
&encoder.AES{Key: k},
|
||||
//&encoder.Zipper{},
|
||||
//&encoder.PAR2{},
|
||||
}
|
||||
if os.Getenv("chunksize") == "" {
|
||||
os.Setenv("chunksize", "1")
|
||||
}
|
||||
chunksize, err := strconv.ParseFloat(os.Getenv("chunksize"), 64)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
//encoder.SetPipeBuffSize(int(chunksize * 1000 * 1000 * 1000 / float64(len(bops)+1) * .66))
|
||||
encoder.SetPipeBuffSize(int(chunksize * 1000 * 1000 * 1000 * .9))
|
||||
enc, err := encoder.New(nil, bops...)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
var o io.Reader = os.Stdin
|
||||
if len(src) > 0 {
|
||||
o = src[0]
|
||||
}
|
||||
var p io.Reader
|
||||
switch op {
|
||||
case "enc":
|
||||
p, err = enc.Encode2(o)
|
||||
case "dec":
|
||||
p, err = enc.Decode2(o)
|
||||
default:
|
||||
err = errors.New("unknown op " + op)
|
||||
}
|
||||
return p, err
|
||||
}
|
||||
|
||||
func DecIO(src io.Reader) (io.Reader, error) {
|
||||
return do_stdin_op("dec", src)
|
||||
}
|
||||
|
||||
func EncIO(src io.Reader) (io.Reader, error) {
|
||||
return do_stdin_op("enc", src)
|
||||
}
|
||||
|
||||
func Enc(src ...io.Reader) error {
|
||||
b, err := do_stdin_op("enc", src...)
|
||||
if err == nil {
|
||||
if _, err := io.Copy(os.Stdout, b); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
return err
|
||||
}
|
||||
|
||||
func Dec(src ...io.Reader) error {
|
||||
b, err := do_stdin_op("dec", src...)
|
||||
if err == nil {
|
||||
if _, err = io.Copy(os.Stdout, b); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
return err
|
||||
}
|
||||
Reference in New Issue
Block a user