Files
XTLS_Xray-core/main/commands/all/base64/encode.go
T

48 lines
1.1 KiB
Go

package base64
import (
"fmt"
"os"
xbase64 "github.com/xtls/xray-core/common/base64"
"github.com/xtls/xray-core/main/commands/base"
)
var cmdEncode = &base.Command{
UsageLine: "{{.Exec}} base64 encode [-gzip] [file | - | stdin:]",
Short: "Encode as Base64",
Long: fmt.Sprintf(`
Encode a file as Base64 with the %s prefix.
Omit file or pass "-" or "stdin:" to read stdin. Use -gzip to compress and output %s.
Examples:
{{.Exec}} base64 encode data.bin
{{.Exec}} base64 encode -gzip data.bin
{{.Exec}} base64 encode
`, xbase64.Prefix, xbase64.GzipPrefix),
}
var gzipEnabled = cmdEncode.Flag.Bool("gzip", false, "Compress the input with gzip.")
func init() {
cmdEncode.Run = executeEncode
}
func executeEncode(cmd *base.Command, args []string) {
if len(args) > 1 {
cmd.Usage()
}
data, err := readInput(args)
if err != nil {
base.Fatalf("failed to read input: %s", err)
}
value, err := xbase64.Encode(data, *gzipEnabled)
if err != nil {
base.Fatalf("failed to encode input: %s", err)
}
if _, err := fmt.Fprintln(os.Stdout, value); err != nil {
base.Fatalf("failed to write encoded output: %s", err)
}
}