Compare commits
	
		
			11 Commits
		
	
	
		
			cc760e7698
			...
			b0f6188122
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| b0f6188122 | |||
| aea7afe129 | |||
| 1263228351 | |||
| a239bc4ba8 | |||
| 8a03b05c90 | |||
| 5a38b40eaf | |||
| 909d1f3409 | |||
| 66cf90f044 | |||
| 74d5da3987 | |||
| f215159725 | |||
| a6301163eb | 
							
								
								
									
										113
									
								
								cmd/ssh/main.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										113
									
								
								cmd/ssh/main.go
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,113 @@
 | 
			
		||||
package main
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"context"
 | 
			
		||||
	"flag"
 | 
			
		||||
	"fmt"
 | 
			
		||||
	"os"
 | 
			
		||||
	"os/signal"
 | 
			
		||||
	"path"
 | 
			
		||||
	"sync"
 | 
			
		||||
	"syscall"
 | 
			
		||||
 | 
			
		||||
	"git.defalsify.org/vise.git/db"
 | 
			
		||||
	"git.defalsify.org/vise.git/engine"
 | 
			
		||||
	"git.defalsify.org/vise.git/logging"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
var (
 | 
			
		||||
	wg        sync.WaitGroup
 | 
			
		||||
	keyStore  db.Db
 | 
			
		||||
	logg      = logging.NewVanilla()
 | 
			
		||||
	scriptDir = path.Join("services", "registration")
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
func main() {
 | 
			
		||||
	var dbDir string
 | 
			
		||||
	var resourceDir string
 | 
			
		||||
	var size uint
 | 
			
		||||
	var engineDebug bool
 | 
			
		||||
	var stateDebug bool
 | 
			
		||||
	var host string
 | 
			
		||||
	var port uint
 | 
			
		||||
	flag.StringVar(&dbDir, "dbdir", ".state", "database dir to read from")
 | 
			
		||||
	flag.StringVar(&resourceDir, "resourcedir", path.Join("services", "registration"), "resource dir")
 | 
			
		||||
	flag.BoolVar(&engineDebug, "engine-debug", false, "use engine debug output")
 | 
			
		||||
	flag.BoolVar(&stateDebug, "state-debug", false, "use engine debug output")
 | 
			
		||||
	flag.UintVar(&size, "s", 160, "max size of output")
 | 
			
		||||
	flag.StringVar(&host, "h", "127.0.0.1", "http host")
 | 
			
		||||
	flag.UintVar(&port, "p", 7122, "http port")
 | 
			
		||||
	flag.Parse()
 | 
			
		||||
 | 
			
		||||
	sshKeyFile := flag.Arg(0)
 | 
			
		||||
	_, err := os.Stat(sshKeyFile)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		fmt.Fprintf(os.Stderr, "cannot open ssh server private key file: %v\n", err)
 | 
			
		||||
		os.Exit(1)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	ctx := context.Background()
 | 
			
		||||
	logg.WarnCtxf(ctx, "!!!!! WARNING WARNING WARNING")
 | 
			
		||||
	logg.WarnCtxf(ctx, "!!!!! =======================")
 | 
			
		||||
	logg.WarnCtxf(ctx, "!!!!! This is not a production ready server!")
 | 
			
		||||
	logg.WarnCtxf(ctx, "!!!!! Do not expose to internet and only use with tunnel!")
 | 
			
		||||
	logg.WarnCtxf(ctx, "!!!!! (See ssh -L <...>)")
 | 
			
		||||
 | 
			
		||||
	logg.Infof("start command", "dbdir", dbDir, "resourcedir", resourceDir, "outputsize", size, "keyfile", sshKeyFile, "host", host, "port", port)
 | 
			
		||||
 | 
			
		||||
	pfp := path.Join(scriptDir, "pp.csv")
 | 
			
		||||
 | 
			
		||||
	cfg := engine.Config{
 | 
			
		||||
		Root:       "root",
 | 
			
		||||
		OutputSize: uint32(size),
 | 
			
		||||
		FlagCount:  uint32(16),
 | 
			
		||||
	}
 | 
			
		||||
	if stateDebug {
 | 
			
		||||
		cfg.StateDebug = true
 | 
			
		||||
	}
 | 
			
		||||
	if engineDebug {
 | 
			
		||||
		cfg.EngineDebug = true
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	authKeyStore, err := ssh.NewSshKeyStore(ctx, dbDir)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		fmt.Fprintf(os.Stderr, "keystore file open error: %v", err)
 | 
			
		||||
		os.Exit(1)
 | 
			
		||||
	}
 | 
			
		||||
	defer func() {
 | 
			
		||||
		logg.TraceCtxf(ctx, "shutdown auth key store reached")
 | 
			
		||||
		err = authKeyStore.Close()
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			logg.ErrorCtxf(ctx, "keystore close error", "err", err)
 | 
			
		||||
		}
 | 
			
		||||
	}()
 | 
			
		||||
 | 
			
		||||
	cint := make(chan os.Signal)
 | 
			
		||||
	cterm := make(chan os.Signal)
 | 
			
		||||
	signal.Notify(cint, os.Interrupt, syscall.SIGINT)
 | 
			
		||||
	signal.Notify(cterm, os.Interrupt, syscall.SIGTERM)
 | 
			
		||||
 | 
			
		||||
	runner := &ssh.SshRunner{
 | 
			
		||||
		Cfg:         cfg,
 | 
			
		||||
		Debug:       engineDebug,
 | 
			
		||||
		FlagFile:    pfp,
 | 
			
		||||
		DbDir:       dbDir,
 | 
			
		||||
		ResourceDir: resourceDir,
 | 
			
		||||
		SrvKeyFile:  sshKeyFile,
 | 
			
		||||
		Host:        host,
 | 
			
		||||
		Port:        port,
 | 
			
		||||
	}
 | 
			
		||||
	go func() {
 | 
			
		||||
		select {
 | 
			
		||||
		case _ = <-cint:
 | 
			
		||||
		case _ = <-cterm:
 | 
			
		||||
		}
 | 
			
		||||
		logg.TraceCtxf(ctx, "shutdown runner reached")
 | 
			
		||||
		err := runner.Stop()
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			logg.ErrorCtxf(ctx, "runner stop error", "err", err)
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
	}()
 | 
			
		||||
	runner.Run(ctx, authKeyStore)
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										1
									
								
								services/registration/_catch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								services/registration/_catch
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1 @@
 | 
			
		||||
Something went wrong.Please try again
 | 
			
		||||
							
								
								
									
										1
									
								
								services/registration/_catch.vis
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								services/registration/_catch.vis
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1 @@
 | 
			
		||||
HALT
 | 
			
		||||
@ -9,4 +9,5 @@ CATCH invalid_amount flag_invalid_amount 1
 | 
			
		||||
INCMP _ 0
 | 
			
		||||
LOAD get_recipient 12
 | 
			
		||||
LOAD get_sender 64
 | 
			
		||||
LOAD get_amount 12
 | 
			
		||||
INCMP transaction_pin *
 | 
			
		||||
 | 
			
		||||
@ -1,7 +1,7 @@
 | 
			
		||||
LOAD reset_incorrect 6
 | 
			
		||||
CATCH incorrect_pin flag_incorrect_pin 1
 | 
			
		||||
CATCH _ flag_account_authorized 0
 | 
			
		||||
LOAD get_amount 10
 | 
			
		||||
RELOAD get_amount
 | 
			
		||||
MAP get_amount
 | 
			
		||||
RELOAD get_recipient
 | 
			
		||||
MAP get_recipient
 | 
			
		||||
 | 
			
		||||
@ -1,2 +1,2 @@
 | 
			
		||||
{{.get_recipient}} will receive {{.validate_amount}} from {{.get_sender}}
 | 
			
		||||
{{.get_recipient}} will receive {{.get_amount}} from {{.get_sender}}
 | 
			
		||||
Please enter your PIN to confirm:
 | 
			
		||||
@ -1,12 +1,13 @@
 | 
			
		||||
MAP validate_amount
 | 
			
		||||
RELOAD get_amount
 | 
			
		||||
MAP get_amount
 | 
			
		||||
RELOAD get_recipient
 | 
			
		||||
MAP get_recipient
 | 
			
		||||
RELOAD get_sender
 | 
			
		||||
MAP get_sender
 | 
			
		||||
MOUT back 0
 | 
			
		||||
MOUT quit 9
 | 
			
		||||
HALT
 | 
			
		||||
LOAD authorize_account 6
 | 
			
		||||
HALT
 | 
			
		||||
RELOAD authorize_account
 | 
			
		||||
CATCH incorrect_pin flag_incorrect_pin 1
 | 
			
		||||
INCMP _ 0
 | 
			
		||||
 | 
			
		||||
@ -1,2 +1,2 @@
 | 
			
		||||
{{.get_recipient}} atapokea {{.validate_amount}} kutoka kwa {{.get_sender}}
 | 
			
		||||
{{.get_recipient}} atapokea {{.get_amount}} kutoka kwa {{.get_sender}}
 | 
			
		||||
Tafadhali weka PIN yako kudhibitisha:
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user