From fbff584bb44fd699f2473cbc27eb4223c99cb4c1 Mon Sep 17 00:00:00 2001 From: alfred-mk Date: Wed, 29 Jan 2025 10:14:01 +0300 Subject: [PATCH 01/19] use the latest changes from grassrootseconomics/visedriver-africastalking --- go.mod | 2 +- go.sum | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/go.mod b/go.mod index 4171c44..9be5609 100644 --- a/go.mod +++ b/go.mod @@ -7,7 +7,7 @@ require ( git.grassecon.net/grassrootseconomics/common v0.0.0-20250121134736-ba8cbbccea7d git.grassecon.net/grassrootseconomics/sarafu-api v0.0.0-20250123142805-2181388f5bf1 git.grassecon.net/grassrootseconomics/visedriver v0.8.0-beta.10.0.20250124100946-03d19283f6fa - git.grassecon.net/grassrootseconomics/visedriver-africastalking v0.0.0-20250121135340-ca97e23e8c84 + git.grassecon.net/grassrootseconomics/visedriver-africastalking v0.0.0-20250129070628-5a539172c694 github.com/alecthomas/assert/v2 v2.2.2 github.com/gofrs/uuid v4.4.0+incompatible github.com/grassrootseconomics/ussd-data-service v1.2.0-beta diff --git a/go.sum b/go.sum index c4ef475..b2e2876 100644 --- a/go.sum +++ b/go.sum @@ -8,6 +8,10 @@ git.grassecon.net/grassrootseconomics/visedriver v0.8.0-beta.10.0.20250124100946 git.grassecon.net/grassrootseconomics/visedriver v0.8.0-beta.10.0.20250124100946-03d19283f6fa/go.mod h1:pjKp9L/ZsWW3kMB0UoIl1yv9TBIuU33mn9Aghxp7vGk= git.grassecon.net/grassrootseconomics/visedriver-africastalking v0.0.0-20250121135340-ca97e23e8c84 h1:VoBmqsjlRdz+IPbtKsAkc1IrMepjR+QlesZT31Jokrk= git.grassecon.net/grassrootseconomics/visedriver-africastalking v0.0.0-20250121135340-ca97e23e8c84/go.mod h1:DpibtYpnT3nG4Kn556hRAkdu4+CtiI/6MbnQHal51mQ= +git.grassecon.net/grassrootseconomics/visedriver-africastalking v0.0.0-20250121153115-bfb16bd5a57a h1:jyS1Q8ktEGnH8R5ne/1GN7SyuDPtEGTrGtC8Px3fVJc= +git.grassecon.net/grassrootseconomics/visedriver-africastalking v0.0.0-20250121153115-bfb16bd5a57a/go.mod h1:DpibtYpnT3nG4Kn556hRAkdu4+CtiI/6MbnQHal51mQ= +git.grassecon.net/grassrootseconomics/visedriver-africastalking v0.0.0-20250129070628-5a539172c694 h1:DjJlBSz0S13acft5XZDWk7ZYnzElym0xLMYEVgyNJ+E= +git.grassecon.net/grassrootseconomics/visedriver-africastalking v0.0.0-20250129070628-5a539172c694/go.mod h1:DpibtYpnT3nG4Kn556hRAkdu4+CtiI/6MbnQHal51mQ= github.com/alecthomas/assert/v2 v2.2.2 h1:Z/iVC0xZfWTaFNE6bA3z07T86hd45Xe2eLt6WVy2bbk= github.com/alecthomas/assert/v2 v2.2.2/go.mod h1:pXcQ2Asjp247dahGEmsZ6ru0UVwnkhktn7S0bBDLxvQ= github.com/alecthomas/participle/v2 v2.0.0 h1:Fgrq+MbuSsJwIkw3fEj9h75vDP0Er5JzepJ0/HNHv0g= From 5722d4f8dd080e35209632b2a8899bdba101e9aa Mon Sep 17 00:00:00 2001 From: Carlosokumu Date: Tue, 4 Feb 2025 08:41:06 +0300 Subject: [PATCH 02/19] reset flags on back navigation,process only numeric pin entries --- handlers/application/menuhandler.go | 39 +++++++++++++++++++++++------ 1 file changed, 31 insertions(+), 8 deletions(-) diff --git a/handlers/application/menuhandler.go b/handlers/application/menuhandler.go index 53ada39..e25764d 100644 --- a/handlers/application/menuhandler.go +++ b/handlers/application/menuhandler.go @@ -326,12 +326,16 @@ func (h *MenuHandlers) VerifyNewPin(ctx context.Context, sym string, input []byt return res, fmt.Errorf("missing session") } flag_valid_pin, _ := h.flagManager.GetFlag("flag_valid_pin") - pinInput := string(input) - // Validate that the PIN is a 4-digit number. - if pin.IsValidPIN(pinInput) { - res.FlagSet = append(res.FlagSet, flag_valid_pin) + if !h.st.Back() { + pinInput := string(input) + // Validate that the PIN is a 4-digit number. + if pin.IsValidPIN(pinInput) { + res.FlagSet = append(res.FlagSet, flag_valid_pin) + } else { + res.FlagReset = append(res.FlagReset, flag_valid_pin) + } } else { - res.FlagReset = append(res.FlagReset, flag_valid_pin) + res.FlagSet = append(res.FlagSet, flag_valid_pin) } return res, nil @@ -420,6 +424,11 @@ func (h *MenuHandlers) CheckBlockedNumPinMisMatch(ctx context.Context, sym strin if !ok { return res, fmt.Errorf("missing session") } + if h.st.Back() { + res.FlagReset = append(res.FlagReset, flag_pin_mismatch) + return res, nil + } + // Get blocked number from storage. store := h.userdataStore blockedNumber, err := store.ReadEntry(ctx, sessionId, storedb.DATA_BLOCKED_NUMBER) @@ -450,6 +459,11 @@ func (h *MenuHandlers) ConfirmPinChange(ctx context.Context, sym string, input [ } flag_pin_mismatch, _ := h.flagManager.GetFlag("flag_pin_mismatch") + if h.st.Back() { + res.FlagReset = append(res.FlagReset, flag_pin_mismatch) + return res, nil + } + store := h.userdataStore hashedTemporaryPin, err := store.ReadEntry(ctx, sessionId, storedb.DATA_TEMPORARY_VALUE) if err != nil { @@ -581,6 +595,11 @@ func (h *MenuHandlers) ValidateBlockedNumber(ctx context.Context, sym string, in if !ok { return res, fmt.Errorf("missing session") } + + if h.st.Back() { + res.FlagReset = append(res.FlagReset, flag_unregistered_number) + return res, nil + } blockedNumber := string(input) _, err = store.ReadEntry(ctx, blockedNumber, storedb.DATA_PUBLIC_KEY) if !phone.IsValidPhoneNumber(blockedNumber) { @@ -1219,7 +1238,9 @@ func (h *MenuHandlers) Authorize(ctx context.Context, sym string, input []byte) logg.ErrorCtxf(ctx, "failed to read AccountPin entry with", "key", storedb.DATA_ACCOUNT_PIN, "error", err) return res, err } - if len(input) == 4 { + str := string(input) + _, err = strconv.Atoi(str) + if len(input) == 4 && err == nil { if pin.VerifyPIN(string(AccountPin), string(input)) { if h.st.MatchFlag(flag_account_authorized, false) { res.FlagReset = append(res.FlagReset, flag_incorrect_pin) @@ -1237,7 +1258,7 @@ func (h *MenuHandlers) Authorize(ctx context.Context, sym string, input []byte) } } } else { - err := h.incrementIncorrectPINAttempts(ctx, sessionId) + err = h.incrementIncorrectPINAttempts(ctx, sessionId) if err != nil { return res, err } @@ -1254,11 +1275,13 @@ func (h *MenuHandlers) Authorize(ctx context.Context, sym string, input []byte) // Setback sets the flag_back_set flag when the navigation is back. func (h *MenuHandlers) SetBack(ctx context.Context, sym string, input []byte) (resource.Result, error) { var res resource.Result + flag_back_set, _ := h.flagManager.GetFlag("flag_back_set") //TODO: //Add check if the navigation is lateral nav instead of checking the input. if string(input) == "0" { - flag_back_set, _ := h.flagManager.GetFlag("flag_back_set") res.FlagSet = append(res.FlagSet, flag_back_set) + } else { + res.FlagReset = append(res.FlagReset, flag_back_set) } return res, nil } From d3f1a14e71143ba8402d5f15ee8b33c8cd57b835 Mon Sep 17 00:00:00 2001 From: Carlosokumu Date: Tue, 4 Feb 2025 08:41:55 +0300 Subject: [PATCH 03/19] replace back with retry option --- services/registration/unregistered_number.vis | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/services/registration/unregistered_number.vis b/services/registration/unregistered_number.vis index 0ff96be..c7ba24b 100644 --- a/services/registration/unregistered_number.vis +++ b/services/registration/unregistered_number.vis @@ -1,7 +1,8 @@ LOAD reset_unregistered_number 0 RELOAD reset_unregistered_number -MOUT back 0 +MOUT retry 1 MOUT quit 9 HALT -INCMP ^ 0 +INCMP _ 1 INCMP quit 9 +INCMP . * From 04429ab74c192cb685f30888f7b3d3022d5ce536 Mon Sep 17 00:00:00 2001 From: Carlosokumu Date: Tue, 4 Feb 2025 08:43:55 +0300 Subject: [PATCH 04/19] fix: wrong pin count by load and reload handlers --- services/registration/confirm_others_new_pin.vis | 2 +- services/registration/confirm_pin_change.vis | 4 +++- services/registration/enter_other_number.vis | 3 +++ services/registration/enter_others_new_pin.vis | 3 --- services/registration/new_pin.vis | 8 +------- services/registration/no_admin_privilege.vis | 2 +- services/registration/old_pin.vis | 6 +++--- services/registration/pin_reset_mismatch.vis | 2 +- services/registration/pin_reset_result.vis | 2 +- services/registration/pin_reset_success.vis | 3 --- 10 files changed, 14 insertions(+), 21 deletions(-) diff --git a/services/registration/confirm_others_new_pin.vis b/services/registration/confirm_others_new_pin.vis index 9132dc4..8409418 100644 --- a/services/registration/confirm_others_new_pin.vis +++ b/services/registration/confirm_others_new_pin.vis @@ -8,7 +8,7 @@ RELOAD save_others_temporary_pin MOUT back 0 HALT INCMP _ 0 -LOAD check_pin_mismatch 0 +LOAD check_pin_mismatch 6 RELOAD check_pin_mismatch CATCH others_pin_mismatch flag_pin_mismatch 1 INCMP pin_entry * diff --git a/services/registration/confirm_pin_change.vis b/services/registration/confirm_pin_change.vis index cf485a1..09b12f8 100644 --- a/services/registration/confirm_pin_change.vis +++ b/services/registration/confirm_pin_change.vis @@ -1,5 +1,7 @@ -CATCH invalid_pin flag_valid_pin 0 +LOAD confirm_pin_change 0 MOUT back 0 HALT INCMP _ 0 +RELOAD confirm_pin_change +CATCH pin_reset_mismatch flag_pin_mismatch 1 INCMP * pin_reset_success diff --git a/services/registration/enter_other_number.vis b/services/registration/enter_other_number.vis index 0957165..9447678 100644 --- a/services/registration/enter_other_number.vis +++ b/services/registration/enter_other_number.vis @@ -4,4 +4,7 @@ RELOAD reset_account_authorized MOUT back 0 HALT INCMP _ 0 +LOAD validate_blocked_number 6 +RELOAD validate_blocked_number +CATCH unregistered_number flag_unregistered_number 1 INCMP enter_others_new_pin * diff --git a/services/registration/enter_others_new_pin.vis b/services/registration/enter_others_new_pin.vis index 7711c97..3f8a5c6 100644 --- a/services/registration/enter_others_new_pin.vis +++ b/services/registration/enter_others_new_pin.vis @@ -1,6 +1,3 @@ -LOAD validate_blocked_number 6 -RELOAD validate_blocked_number -CATCH unregistered_number flag_unregistered_number 1 LOAD retrieve_blocked_number 0 RELOAD retrieve_blocked_number MAP retrieve_blocked_number diff --git a/services/registration/new_pin.vis b/services/registration/new_pin.vis index 29013a9..56705d7 100644 --- a/services/registration/new_pin.vis +++ b/services/registration/new_pin.vis @@ -1,13 +1,7 @@ -LOAD authorize_account 12 -RELOAD authorize_account -CATCH incorrect_pin flag_incorrect_pin 1 -CATCH old_pin flag_allow_update 0 MOUT back 0 HALT INCMP _ 0 -LOAD save_temporary_pin 6 -LOAD verify_new_pin 0 RELOAD save_temporary_pin RELOAD verify_new_pin +CATCH invalid_pin flag_valid_pin 0 INCMP * confirm_pin_change - diff --git a/services/registration/no_admin_privilege.vis b/services/registration/no_admin_privilege.vis index 3cf1e4c..a7f9c4d 100644 --- a/services/registration/no_admin_privilege.vis +++ b/services/registration/no_admin_privilege.vis @@ -1,5 +1,5 @@ MOUT quit 9 MOUT back 0 HALT -INCMP pin_management 0 +INCMP ^ 0 INCMP quit 9 diff --git a/services/registration/old_pin.vis b/services/registration/old_pin.vis index 1e99f4f..2addb56 100644 --- a/services/registration/old_pin.vis +++ b/services/registration/old_pin.vis @@ -1,7 +1,7 @@ -LOAD reset_allow_update 0 +RELOAD reset_incorrect MOUT back 0 HALT -RELOAD reset_allow_update INCMP _ 0 +RELOAD authorize_account +CATCH incorrect_pin flag_incorrect_pin 1 INCMP new_pin * - diff --git a/services/registration/pin_reset_mismatch.vis b/services/registration/pin_reset_mismatch.vis index 5dc7e7c..78318f2 100644 --- a/services/registration/pin_reset_mismatch.vis +++ b/services/registration/pin_reset_mismatch.vis @@ -1,6 +1,6 @@ MOUT retry 1 MOUT quit 9 HALT -INCMP confirm_pin_change 1 +INCMP _ 1 INCMP quit 9 diff --git a/services/registration/pin_reset_result.vis b/services/registration/pin_reset_result.vis index 34b9789..de877e5 100644 --- a/services/registration/pin_reset_result.vis +++ b/services/registration/pin_reset_result.vis @@ -4,5 +4,5 @@ LOAD reset_others_pin 6 MOUT back 0 MOUT quit 9 HALT -INCMP pin_management 0 +INCMP ^ 0 INCMP quit 9 diff --git a/services/registration/pin_reset_success.vis b/services/registration/pin_reset_success.vis index 96dee73..537a511 100644 --- a/services/registration/pin_reset_success.vis +++ b/services/registration/pin_reset_success.vis @@ -1,6 +1,3 @@ -LOAD confirm_pin_change 0 -RELOAD confirm_pin_change -CATCH pin_reset_mismatch flag_pin_mismatch 1 MOUT back 0 MOUT quit 9 HALT From f9a9a9b4a61c0a368331ab77e4d173accafae186 Mon Sep 17 00:00:00 2001 From: Carlosokumu Date: Tue, 4 Feb 2025 08:44:10 +0300 Subject: [PATCH 05/19] preload all common functions --- services/registration/pin_management.vis | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/services/registration/pin_management.vis b/services/registration/pin_management.vis index 5eb7d5a..6716863 100644 --- a/services/registration/pin_management.vis +++ b/services/registration/pin_management.vis @@ -1,8 +1,16 @@ +LOAD reset_admin_flag_privilege 9 +LOAD confirm_pin_change 7 +LOAD set_back 6 +LOAD authorize_account 5 +LOAD reset_allow_update 4 +LOAD verify_new_pin 2 +LOAD save_temporary_pin 1 +LOAD reset_incorrect 0 MOUT change_pin 1 MOUT reset_pin 2 MOUT back 0 HALT -INCMP my_account 0 +INCMP _ 0 INCMP old_pin 1 INCMP enter_other_number 2 INCMP . * From 815e3b2a25f55fb341ff300fd894626fece58bcc Mon Sep 17 00:00:00 2001 From: Carlosokumu Date: Tue, 4 Feb 2025 09:46:33 +0300 Subject: [PATCH 06/19] remove unused handler --- services/registration/pin_management.vis | 1 - 1 file changed, 1 deletion(-) diff --git a/services/registration/pin_management.vis b/services/registration/pin_management.vis index 6716863..f7b7a81 100644 --- a/services/registration/pin_management.vis +++ b/services/registration/pin_management.vis @@ -1,4 +1,3 @@ -LOAD reset_admin_flag_privilege 9 LOAD confirm_pin_change 7 LOAD set_back 6 LOAD authorize_account 5 From f7873bfef7943d3d21b2879d33640443de78db39 Mon Sep 17 00:00:00 2001 From: Carlosokumu Date: Tue, 4 Feb 2025 10:16:12 +0300 Subject: [PATCH 07/19] add mock state to failing tests --- handlers/application/menuhandler_test.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/handlers/application/menuhandler_test.go b/handlers/application/menuhandler_test.go index 3bf66a4..8cfe358 100644 --- a/handlers/application/menuhandler_test.go +++ b/handlers/application/menuhandler_test.go @@ -1857,12 +1857,14 @@ func TestVerifyNewPin(t *testing.T) { sessionId := "session123" fm, _ := NewFlagManager(flagsPath) + mockState := state.NewState(16) flag_valid_pin, _ := fm.GetFlag("flag_valid_pin") mockAccountService := new(mocks.MockAccountService) h := &MenuHandlers{ flagManager: fm, accountService: mockAccountService, + st: mockState, } ctx := context.WithValue(context.Background(), "SessionId", sessionId) @@ -1900,6 +1902,7 @@ func TestVerifyNewPin(t *testing.T) { func TestConfirmPin(t *testing.T) { sessionId := "session123" + mockState := state.NewState(16) ctx, store := InitializeTestStore(t) ctx = context.WithValue(ctx, "SessionId", sessionId) @@ -1910,6 +1913,7 @@ func TestConfirmPin(t *testing.T) { userdataStore: store, flagManager: fm, accountService: mockAccountService, + st: mockState, } tests := []struct { From 861d04dbfde635e13b23a6bc724ab58f95072db1 Mon Sep 17 00:00:00 2001 From: lash Date: Tue, 4 Feb 2025 13:25:10 +0000 Subject: [PATCH 08/19] WIP Implement custom engine --- cmd/africastalking/main.go | 1 + cmd/async/main.go | 2 ++ cmd/http/main.go | 1 + cmd/main.go | 15 ++------------- go.mod | 4 ++-- go.sum | 12 ++++-------- handlers/local.go | 15 +++++++++++---- ssh/ssh.go | 16 ++-------------- testutil/engine.go | 6 +++--- 9 files changed, 28 insertions(+), 44 deletions(-) diff --git a/cmd/africastalking/main.go b/cmd/africastalking/main.go index 2975d03..a1a5b27 100644 --- a/cmd/africastalking/main.go +++ b/cmd/africastalking/main.go @@ -133,6 +133,7 @@ func main() { rp := &at.ATRequestParser{} bsh := request.NewBaseRequestHandler(cfg, rs, stateStore, userdataStore, rp, hl) + bsh = bsh.WithEngineFunc(lhs.GetEngine) sh := at.NewATRequestHandler(bsh) mux := http.NewServeMux() diff --git a/cmd/async/main.go b/cmd/async/main.go index a55a19b..e40caa4 100644 --- a/cmd/async/main.go +++ b/cmd/async/main.go @@ -145,6 +145,8 @@ func main() { sessionId: sessionId, } sh := request.NewBaseRequestHandler(cfg, rs, stateStore, userdataStore, rp, hl) + sh = sh.WithEngineFunc(lhs.GetEngine) + cfg.SessionId = sessionId rqs := request.RequestSession{ Ctx: ctx, diff --git a/cmd/http/main.go b/cmd/http/main.go index e691254..a2732eb 100644 --- a/cmd/http/main.go +++ b/cmd/http/main.go @@ -133,6 +133,7 @@ func main() { rp := &httprequest.DefaultRequestParser{} bsh := request.NewBaseRequestHandler(cfg, rs, stateStore, userdataStore, rp, hl) + bsh = bsh.WithEngineFunc(lhs.GetEngine) sh := httprequest.NewHTTPRequestHandler(bsh) s := &http.Server{ Addr: fmt.Sprintf("%s:%s", host, strconv.Itoa(int(port))), diff --git a/cmd/main.go b/cmd/main.go index 360f8af..408d2b3 100644 --- a/cmd/main.go +++ b/cmd/main.go @@ -16,7 +16,6 @@ import ( "git.grassecon.net/grassrootseconomics/sarafu-vise/args" "git.grassecon.net/grassrootseconomics/sarafu-vise/config" "git.grassecon.net/grassrootseconomics/sarafu-vise/handlers" - "git.grassecon.net/grassrootseconomics/sarafu-vise/services" "git.grassecon.net/grassrootseconomics/visedriver/storage" ) @@ -79,6 +78,7 @@ func main() { OutputSize: uint32(size), FlagCount: uint32(128), MenuSeparator: menuSeparator, + EngineDebug: engineDebug, } menuStorageService := storage.NewMenuStorageService(conns) @@ -123,18 +123,7 @@ func main() { os.Exit(1) } - accountService := services.New(ctx, menuStorageService) - hl, err := lhs.GetHandler(accountService) - if err != nil { - fmt.Fprintf(os.Stderr, "get accounts service handler: %v\n", err) - os.Exit(1) - } - - en := lhs.GetEngine() - en = en.WithFirst(hl.Init) - if engineDebug { - en = en.WithDebug(nil) - } + en := lhs.GetEngine(cfg, rs, pe) cint := make(chan os.Signal) cterm := make(chan os.Signal) diff --git a/go.mod b/go.mod index 9be5609..54e6967 100644 --- a/go.mod +++ b/go.mod @@ -3,10 +3,10 @@ module git.grassecon.net/grassrootseconomics/sarafu-vise go 1.23.4 require ( - git.defalsify.org/vise.git v0.2.3-0.20250120121301-10739fb4a8c9 + git.defalsify.org/vise.git v0.2.3-0.20250204132233-2bffe532f21e git.grassecon.net/grassrootseconomics/common v0.0.0-20250121134736-ba8cbbccea7d git.grassecon.net/grassrootseconomics/sarafu-api v0.0.0-20250123142805-2181388f5bf1 - git.grassecon.net/grassrootseconomics/visedriver v0.8.0-beta.10.0.20250124100946-03d19283f6fa + git.grassecon.net/grassrootseconomics/visedriver v0.9.0-beta.1.0.20250204132347-1eb0b1555244 git.grassecon.net/grassrootseconomics/visedriver-africastalking v0.0.0-20250129070628-5a539172c694 github.com/alecthomas/assert/v2 v2.2.2 github.com/gofrs/uuid v4.4.0+incompatible diff --git a/go.sum b/go.sum index b2e2876..3e16a53 100644 --- a/go.sum +++ b/go.sum @@ -1,15 +1,11 @@ -git.defalsify.org/vise.git v0.2.3-0.20250120121301-10739fb4a8c9 h1:sPcqXQcywxA8W3W+9qQncLPmsrgqTIlec7vmD4/7vyA= -git.defalsify.org/vise.git v0.2.3-0.20250120121301-10739fb4a8c9/go.mod h1:jyBMe1qTYUz3mmuoC9JQ/TvFeW0vTanCUcPu3H8p4Ck= +git.defalsify.org/vise.git v0.2.3-0.20250204132233-2bffe532f21e h1:gtB9OdX6x5gQRM3W824dEurXuuf/YPInqgtv2KAp5Zo= +git.defalsify.org/vise.git v0.2.3-0.20250204132233-2bffe532f21e/go.mod h1:jyBMe1qTYUz3mmuoC9JQ/TvFeW0vTanCUcPu3H8p4Ck= git.grassecon.net/grassrootseconomics/common v0.0.0-20250121134736-ba8cbbccea7d h1:5mzLas+jxTUtusOKx4XvU+n2QvrV/mH17MnJRy46siQ= git.grassecon.net/grassrootseconomics/common v0.0.0-20250121134736-ba8cbbccea7d/go.mod h1:wgQJZGIS6QuNLHqDhcsvehsbn5PvgV7aziRebMnJi60= git.grassecon.net/grassrootseconomics/sarafu-api v0.0.0-20250123142805-2181388f5bf1 h1:BJHfokTHzrw9QjQ+4s2HmSER0iBPuE7byW5oQC2zLIQ= git.grassecon.net/grassrootseconomics/sarafu-api v0.0.0-20250123142805-2181388f5bf1/go.mod h1:gOn89ipaDcDvmQXRMQYKUqcw/sJcwVOPVt2eC6Geip8= -git.grassecon.net/grassrootseconomics/visedriver v0.8.0-beta.10.0.20250124100946-03d19283f6fa h1:yQLKwby3eD/zNjNw/INU5lGiLuWPEHdsgASwMA4UptE= -git.grassecon.net/grassrootseconomics/visedriver v0.8.0-beta.10.0.20250124100946-03d19283f6fa/go.mod h1:pjKp9L/ZsWW3kMB0UoIl1yv9TBIuU33mn9Aghxp7vGk= -git.grassecon.net/grassrootseconomics/visedriver-africastalking v0.0.0-20250121135340-ca97e23e8c84 h1:VoBmqsjlRdz+IPbtKsAkc1IrMepjR+QlesZT31Jokrk= -git.grassecon.net/grassrootseconomics/visedriver-africastalking v0.0.0-20250121135340-ca97e23e8c84/go.mod h1:DpibtYpnT3nG4Kn556hRAkdu4+CtiI/6MbnQHal51mQ= -git.grassecon.net/grassrootseconomics/visedriver-africastalking v0.0.0-20250121153115-bfb16bd5a57a h1:jyS1Q8ktEGnH8R5ne/1GN7SyuDPtEGTrGtC8Px3fVJc= -git.grassecon.net/grassrootseconomics/visedriver-africastalking v0.0.0-20250121153115-bfb16bd5a57a/go.mod h1:DpibtYpnT3nG4Kn556hRAkdu4+CtiI/6MbnQHal51mQ= +git.grassecon.net/grassrootseconomics/visedriver v0.9.0-beta.1.0.20250204132347-1eb0b1555244 h1:BXotWSKg04U97sf/xeWJuUTSVgKk2aEK+5BtBrnafXQ= +git.grassecon.net/grassrootseconomics/visedriver v0.9.0-beta.1.0.20250204132347-1eb0b1555244/go.mod h1:6B6ByxXOiRY0NR7K02Bf3fEu7z+2c/6q8PFVNjC5G8w= git.grassecon.net/grassrootseconomics/visedriver-africastalking v0.0.0-20250129070628-5a539172c694 h1:DjJlBSz0S13acft5XZDWk7ZYnzElym0xLMYEVgyNJ+E= git.grassecon.net/grassrootseconomics/visedriver-africastalking v0.0.0-20250129070628-5a539172c694/go.mod h1:DpibtYpnT3nG4Kn556hRAkdu4+CtiI/6MbnQHal51mQ= github.com/alecthomas/assert/v2 v2.2.2 h1:Z/iVC0xZfWTaFNE6bA3z07T86hd45Xe2eLt6WVy2bbk= diff --git a/handlers/local.go b/handlers/local.go index 77e3980..5cbaa9d 100644 --- a/handlers/local.go +++ b/handlers/local.go @@ -24,6 +24,7 @@ type LocalHandlerService struct { UserdataStore *db.Db Cfg engine.Config Rs resource.Resource + first resource.EntryFunc } func NewLocalHandlerService(ctx context.Context, fp string, debug bool, dbResource *resource.DbResource, cfg engine.Config, rs resource.Resource) (*LocalHandlerService, error) { @@ -118,13 +119,19 @@ func (ls *LocalHandlerService) GetHandler(accountService remote.AccountService) ls.DbRs.AddLocalFunc("update_all_profile_items", appHandlers.UpdateAllProfileItems) ls.DbRs.AddLocalFunc("set_back", appHandlers.SetBack) ls.DbRs.AddLocalFunc("show_blocked_account", appHandlers.ShowBlockedAccount) + ls.first = appHandlers.Init return appHandlers, nil } -// TODO: enable setting of sessionId on engine init time -func (ls *LocalHandlerService) GetEngine() *engine.DefaultEngine { - en := engine.NewEngine(ls.Cfg, ls.Rs) - en = en.WithPersister(ls.Pe) +func (ls *LocalHandlerService) GetEngine(cfg engine.Config, rs resource.Resource, pr *persist.Persister) engine.Engine { + en := engine.NewEngine(cfg, rs) + if ls.first != nil { + en = en.WithFirst(ls.first) + } + en = en.WithPersister(pr) + if cfg.EngineDebug { + en = en.WithDebug(nil) + } return en } diff --git a/ssh/ssh.go b/ssh/ssh.go index 81d7835..9e6b76f 100644 --- a/ssh/ssh.go +++ b/ssh/ssh.go @@ -17,7 +17,7 @@ import ( "git.defalsify.org/vise.git/resource" "git.defalsify.org/vise.git/state" "git.grassecon.net/grassrootseconomics/sarafu-vise/handlers" - "git.grassecon.net/grassrootseconomics/sarafu-vise/services" +// "git.grassecon.net/grassrootseconomics/sarafu-vise/services" "git.grassecon.net/grassrootseconomics/visedriver/storage" ) @@ -177,20 +177,8 @@ func (s *SshRunner) GetEngine(sessionId string) (engine.Engine, func(), error) { return nil, nil, err } - // TODO: clear up why pointer here and by-value other cmds - accountService := services.New(ctx, menuStorageService) - - hl, err := lhs.GetHandler(accountService) - if err != nil { - return nil, nil, err - } - - en := lhs.GetEngine() - en = en.WithFirst(hl.Init) - if s.Debug { - en = en.WithDebug(nil) - } // TODO: this is getting very hacky! + en := lhs.GetEngine(lhs.Cfg, rs, pe) closer := func() { err := menuStorageService.Close(ctx) if err != nil { diff --git a/testutil/engine.go b/testutil/engine.go index a179b5d..167ad5a 100644 --- a/testutil/engine.go +++ b/testutil/engine.go @@ -137,14 +137,14 @@ func TestEngine(sessionId string) (engine.Engine, func(), chan bool) { panic("Unknown account service type") } - hl, err := lhs.GetHandler(testtag.AccountService) + // TODO: triggers withfirst assignment + _, err = lhs.GetHandler(testtag.AccountService) if err != nil { fmt.Fprintf(os.Stderr, err.Error()) os.Exit(1) } - en := lhs.GetEngine() - en = en.WithFirst(hl.Init) + en := lhs.GetEngine(lhs.Cfg, rs, pe) cleanFn := func() { err := en.Finish(ctx) if err != nil { From 422b6510973f8e47db8f1c9f26b85b04592c354a Mon Sep 17 00:00:00 2001 From: lash Date: Tue, 4 Feb 2025 13:33:44 +0000 Subject: [PATCH 09/19] Add missing file --- engine/engine.go | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 engine/engine.go diff --git a/engine/engine.go b/engine/engine.go new file mode 100644 index 0000000..a3b8e29 --- /dev/null +++ b/engine/engine.go @@ -0,0 +1,25 @@ +package engine + +import ( + "context" + + "git.defalsify.org/vise.git/engine" + "git.defalsify.org/vise.git/resource" +) + +type SarafuEngine struct { + engine.Engine +} + +func NewSarafuEngine(cfg engine.Config, rs resource.Resource) *SarafuEngine { + return &SarafuEngine{ + Engine: engine.NewEngine(cfg, rs), + } +} + +func (se *SarafuEngine) Exec(ctx context.Context, input []byte) (bool, error) { + if len(input) == 0 { + panic("insert something here") + } + return se.Engine.Exec(ctx, input) +} From 23cadc6178cee0ae7f2fa0212bfd5bc093ea97d5 Mon Sep 17 00:00:00 2001 From: lash Date: Wed, 5 Feb 2025 10:21:21 +0000 Subject: [PATCH 10/19] Reinstate loading handlerfuncs in cmd, ssh clients --- cmd/main.go | 7 +++++++ ssh/ssh.go | 6 ++++++ 2 files changed, 13 insertions(+) diff --git a/cmd/main.go b/cmd/main.go index 408d2b3..48edda6 100644 --- a/cmd/main.go +++ b/cmd/main.go @@ -16,6 +16,7 @@ import ( "git.grassecon.net/grassrootseconomics/sarafu-vise/args" "git.grassecon.net/grassrootseconomics/sarafu-vise/config" "git.grassecon.net/grassrootseconomics/sarafu-vise/handlers" + "git.grassecon.net/grassrootseconomics/sarafu-vise/services" "git.grassecon.net/grassrootseconomics/visedriver/storage" ) @@ -123,6 +124,12 @@ func main() { os.Exit(1) } + accountService := services.New(ctx, menuStorageService) + _, err = lhs.GetHandler(accountService) + if err != nil { + fmt.Fprintf(os.Stderr, "get accounts service handler: %v\n", err) + os.Exit(1) + } en := lhs.GetEngine(cfg, rs, pe) cint := make(chan os.Signal) diff --git a/ssh/ssh.go b/ssh/ssh.go index 9e6b76f..9a0440a 100644 --- a/ssh/ssh.go +++ b/ssh/ssh.go @@ -178,6 +178,12 @@ func (s *SshRunner) GetEngine(sessionId string) (engine.Engine, func(), error) { } // TODO: this is getting very hacky! + accountService := services.New(ctx, menuStorageService) + _, err = lhs.GetHandler(accountService) + if err != nil { + fmt.Fprintf(os.Stderr, "get accounts service handler: %v\n", err) + os.Exit(1) + } en := lhs.GetEngine(lhs.Cfg, rs, pe) closer := func() { err := menuStorageService.Close(ctx) From fdde1bb979d437291e9fde6a92d44caa97f10408 Mon Sep 17 00:00:00 2001 From: lash Date: Wed, 5 Feb 2025 10:28:20 +0000 Subject: [PATCH 11/19] Add missing services import in ssh --- go.mod | 2 +- go.sum | 4 ++-- ssh/ssh.go | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/go.mod b/go.mod index 54e6967..12278ee 100644 --- a/go.mod +++ b/go.mod @@ -3,7 +3,7 @@ module git.grassecon.net/grassrootseconomics/sarafu-vise go 1.23.4 require ( - git.defalsify.org/vise.git v0.2.3-0.20250204132233-2bffe532f21e + git.defalsify.org/vise.git v0.2.3-0.20250205092758-ea6bfa050eeb git.grassecon.net/grassrootseconomics/common v0.0.0-20250121134736-ba8cbbccea7d git.grassecon.net/grassrootseconomics/sarafu-api v0.0.0-20250123142805-2181388f5bf1 git.grassecon.net/grassrootseconomics/visedriver v0.9.0-beta.1.0.20250204132347-1eb0b1555244 diff --git a/go.sum b/go.sum index 3e16a53..18b9d5c 100644 --- a/go.sum +++ b/go.sum @@ -1,5 +1,5 @@ -git.defalsify.org/vise.git v0.2.3-0.20250204132233-2bffe532f21e h1:gtB9OdX6x5gQRM3W824dEurXuuf/YPInqgtv2KAp5Zo= -git.defalsify.org/vise.git v0.2.3-0.20250204132233-2bffe532f21e/go.mod h1:jyBMe1qTYUz3mmuoC9JQ/TvFeW0vTanCUcPu3H8p4Ck= +git.defalsify.org/vise.git v0.2.3-0.20250205092758-ea6bfa050eeb h1:WcNLKynPAXT/djmWJcdgiEsNO4HVSLYiaqclPpMCIK8= +git.defalsify.org/vise.git v0.2.3-0.20250205092758-ea6bfa050eeb/go.mod h1:jyBMe1qTYUz3mmuoC9JQ/TvFeW0vTanCUcPu3H8p4Ck= git.grassecon.net/grassrootseconomics/common v0.0.0-20250121134736-ba8cbbccea7d h1:5mzLas+jxTUtusOKx4XvU+n2QvrV/mH17MnJRy46siQ= git.grassecon.net/grassrootseconomics/common v0.0.0-20250121134736-ba8cbbccea7d/go.mod h1:wgQJZGIS6QuNLHqDhcsvehsbn5PvgV7aziRebMnJi60= git.grassecon.net/grassrootseconomics/sarafu-api v0.0.0-20250123142805-2181388f5bf1 h1:BJHfokTHzrw9QjQ+4s2HmSER0iBPuE7byW5oQC2zLIQ= diff --git a/ssh/ssh.go b/ssh/ssh.go index 9a0440a..bab538a 100644 --- a/ssh/ssh.go +++ b/ssh/ssh.go @@ -17,7 +17,7 @@ import ( "git.defalsify.org/vise.git/resource" "git.defalsify.org/vise.git/state" "git.grassecon.net/grassrootseconomics/sarafu-vise/handlers" -// "git.grassecon.net/grassrootseconomics/sarafu-vise/services" + "git.grassecon.net/grassrootseconomics/sarafu-vise/services" "git.grassecon.net/grassrootseconomics/visedriver/storage" ) From df58f690323da15c0f724df97bda11c67d6015a7 Mon Sep 17 00:00:00 2001 From: alfred-mk Date: Wed, 5 Feb 2025 19:02:23 +0300 Subject: [PATCH 12/19] Remove input length check on menuhandler Init --- handlers/application/menuhandler.go | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/handlers/application/menuhandler.go b/handlers/application/menuhandler.go index 53ada39..4518ba7 100644 --- a/handlers/application/menuhandler.go +++ b/handlers/application/menuhandler.go @@ -125,12 +125,7 @@ func (h *MenuHandlers) Init(ctx context.Context, sym string, input []byte) (reso h.st = h.pe.GetState() h.ca = h.pe.GetMemory() - - if len(input) == 0 { - // move to the top node - h.st.Code = []byte{} - } - +`` sessionId, ok := ctx.Value("SessionId").(string) if ok { ctx = context.WithValue(ctx, "SessionId", sessionId) From 3d9eeddab88c14465b96fca7dc1614b478b1af9c Mon Sep 17 00:00:00 2001 From: alfred-mk Date: Wed, 5 Feb 2025 19:07:35 +0300 Subject: [PATCH 13/19] Remove the Move to top node on empty input test case --- handlers/application/menuhandler.go | 1 - handlers/application/menuhandler_test.go | 14 -------------- 2 files changed, 15 deletions(-) diff --git a/handlers/application/menuhandler.go b/handlers/application/menuhandler.go index 4518ba7..17acfe9 100644 --- a/handlers/application/menuhandler.go +++ b/handlers/application/menuhandler.go @@ -125,7 +125,6 @@ func (h *MenuHandlers) Init(ctx context.Context, sym string, input []byte) (reso h.st = h.pe.GetState() h.ca = h.pe.GetMemory() -`` sessionId, ok := ctx.Value("SessionId").(string) if ok { ctx = context.WithValue(ctx, "SessionId", sessionId) diff --git a/handlers/application/menuhandler_test.go b/handlers/application/menuhandler_test.go index 3bf66a4..2e426aa 100644 --- a/handlers/application/menuhandler_test.go +++ b/handlers/application/menuhandler_test.go @@ -175,20 +175,6 @@ func TestInit(t *testing.T) { input: []byte("1"), expectedResult: resource.Result{}, }, - { - name: "Move to top node on empty input", - setup: func() (*MenuHandlers, context.Context) { - pe := persist.NewPersister(testStore).WithSession(sessionId).WithContent(st, ca) - h := &MenuHandlers{ - flagManager: fm, - pe: pe, - } - st.Code = []byte("some pending bytecode") - return h, context.WithValue(ctx, "SessionId", sessionId) - }, - input: []byte(""), - expectedResult: resource.Result{}, - }, } for _, tt := range tests { From 68597ea7cc0ee6020a74d7ef88f64f0cfcfee892 Mon Sep 17 00:00:00 2001 From: alfred-mk Date: Wed, 5 Feb 2025 19:08:36 +0300 Subject: [PATCH 14/19] Return the Sarafu Engine in GetEngine --- handlers/local.go | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/handlers/local.go b/handlers/local.go index 5cbaa9d..c001fab 100644 --- a/handlers/local.go +++ b/handlers/local.go @@ -10,6 +10,7 @@ import ( "git.defalsify.org/vise.git/resource" "git.grassecon.net/grassrootseconomics/sarafu-api/remote" + sarafu_engine "git.grassecon.net/grassrootseconomics/sarafu-vise/engine" "git.grassecon.net/grassrootseconomics/sarafu-vise/handlers/application" ) @@ -24,7 +25,7 @@ type LocalHandlerService struct { UserdataStore *db.Db Cfg engine.Config Rs resource.Resource - first resource.EntryFunc + first resource.EntryFunc } func NewLocalHandlerService(ctx context.Context, fp string, debug bool, dbResource *resource.DbResource, cfg engine.Config, rs resource.Resource) (*LocalHandlerService, error) { @@ -125,7 +126,8 @@ func (ls *LocalHandlerService) GetHandler(accountService remote.AccountService) } func (ls *LocalHandlerService) GetEngine(cfg engine.Config, rs resource.Resource, pr *persist.Persister) engine.Engine { - en := engine.NewEngine(cfg, rs) + se := sarafu_engine.NewSarafuEngine(cfg, rs) + en := se.Engine.(*engine.DefaultEngine) if ls.first != nil { en = en.WithFirst(ls.first) } @@ -133,5 +135,6 @@ func (ls *LocalHandlerService) GetEngine(cfg engine.Config, rs resource.Resource if cfg.EngineDebug { en = en.WithDebug(nil) } - return en + + return se } From f88e2534864957514e76aee361047efa5d0e900b Mon Sep 17 00:00:00 2001 From: alfred-mk Date: Wed, 5 Feb 2025 19:16:25 +0300 Subject: [PATCH 15/19] Call the engine Reset --- engine/engine.go | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/engine/engine.go b/engine/engine.go index a3b8e29..d8aef60 100644 --- a/engine/engine.go +++ b/engine/engine.go @@ -2,6 +2,7 @@ package engine import ( "context" + "fmt" "git.defalsify.org/vise.git/engine" "git.defalsify.org/vise.git/resource" @@ -19,7 +20,12 @@ func NewSarafuEngine(cfg engine.Config, rs resource.Resource) *SarafuEngine { func (se *SarafuEngine) Exec(ctx context.Context, input []byte) (bool, error) { if len(input) == 0 { - panic("insert something here") + e, ok := se.Engine.(*engine.DefaultEngine) + if !ok { + return false, fmt.Errorf("") + } + + e.Reset(ctx, true) } return se.Engine.Exec(ctx, input) } From 12acd508b1eace15b7fc9f898ae2c22adada9341 Mon Sep 17 00:00:00 2001 From: lash Date: Wed, 5 Feb 2025 16:26:17 +0000 Subject: [PATCH 16/19] Allow empty input in async cmd --- cmd/async/main.go | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/cmd/async/main.go b/cmd/async/main.go index a55a19b..56b69da 100644 --- a/cmd/async/main.go +++ b/cmd/async/main.go @@ -1,12 +1,15 @@ package main import ( + "bufio" "context" "flag" "fmt" + "io" "os" "os/signal" "path" + "strings" "syscall" "git.defalsify.org/vise.git/engine" @@ -184,11 +187,19 @@ func main() { os.Exit(1) } fmt.Println("") - _, err = fmt.Scanln(&rqs.Input) + in := bufio.NewReader(os.Stdin) + //_, err = fmt.Scanln(&rqs.Input) + s, err := in.ReadString('\n') if err != nil { + if err == io.EOF { + break + } logg.ErrorCtxf(ctx, "error in input", "err", err) fmt.Errorf("error in input: %v", err) os.Exit(1) } + rqs.Input = []byte{} + s = strings.TrimSpace(s) + rqs.Input = []byte(s) } } From 1d7027905df7d7c453cb51c35e72dbf970812aee Mon Sep 17 00:00:00 2001 From: lash Date: Wed, 5 Feb 2025 17:44:29 +0000 Subject: [PATCH 17/19] Use simplified reset on empty input solution --- cmd/africastalking/main.go | 1 + cmd/async/main.go | 4 ++-- cmd/http/main.go | 1 + cmd/main.go | 1 + engine/engine.go | 22 +++++++++++++--------- go.mod | 2 +- go.sum | 4 ++-- handlers/local.go | 17 ++++++++++++----- 8 files changed, 33 insertions(+), 19 deletions(-) diff --git a/cmd/africastalking/main.go b/cmd/africastalking/main.go index a1a5b27..3f7e372 100644 --- a/cmd/africastalking/main.go +++ b/cmd/africastalking/main.go @@ -81,6 +81,7 @@ func main() { OutputSize: uint32(size), FlagCount: uint32(128), MenuSeparator: menuSeparator, + ResetOnEmptyInput: true, } if engineDebug { diff --git a/cmd/async/main.go b/cmd/async/main.go index 91a2542..9a064a6 100644 --- a/cmd/async/main.go +++ b/cmd/async/main.go @@ -96,6 +96,7 @@ func main() { OutputSize: uint32(size), FlagCount: uint32(128), MenuSeparator: menuSeparator, + ResetOnEmptyInput: true, } if engineDebug { @@ -130,7 +131,6 @@ func main() { lhs.SetDataStore(&userdataStore) accountService := services.New(ctx, menuStorageService) - hl, err := lhs.GetHandler(accountService) if err != nil { fmt.Fprintf(os.Stderr, err.Error()) @@ -190,10 +190,10 @@ func main() { } fmt.Println("") in := bufio.NewReader(os.Stdin) - //_, err = fmt.Scanln(&rqs.Input) s, err := in.ReadString('\n') if err != nil { if err == io.EOF { + logg.DebugCtxf(ctx, "have EOF, bailing") break } logg.ErrorCtxf(ctx, "error in input", "err", err) diff --git a/cmd/http/main.go b/cmd/http/main.go index a2732eb..13ef408 100644 --- a/cmd/http/main.go +++ b/cmd/http/main.go @@ -82,6 +82,7 @@ func main() { OutputSize: uint32(size), FlagCount: uint32(128), MenuSeparator: menuSeparator, + ResetOnEmptyInput: true, } if engineDebug { diff --git a/cmd/main.go b/cmd/main.go index 48edda6..564649a 100644 --- a/cmd/main.go +++ b/cmd/main.go @@ -80,6 +80,7 @@ func main() { FlagCount: uint32(128), MenuSeparator: menuSeparator, EngineDebug: engineDebug, + ResetOnEmptyInput: true, } menuStorageService := storage.NewMenuStorageService(conns) diff --git a/engine/engine.go b/engine/engine.go index d8aef60..08b9aa1 100644 --- a/engine/engine.go +++ b/engine/engine.go @@ -2,10 +2,14 @@ package engine import ( "context" - "fmt" "git.defalsify.org/vise.git/engine" "git.defalsify.org/vise.git/resource" + "git.defalsify.org/vise.git/logging" +) + +var ( + logg = logging.NewVanilla().WithDomain("sarafu-vise.engine") ) type SarafuEngine struct { @@ -19,13 +23,13 @@ func NewSarafuEngine(cfg engine.Config, rs resource.Resource) *SarafuEngine { } func (se *SarafuEngine) Exec(ctx context.Context, input []byte) (bool, error) { - if len(input) == 0 { - e, ok := se.Engine.(*engine.DefaultEngine) - if !ok { - return false, fmt.Errorf("") - } - - e.Reset(ctx, true) - } + logg.TraceCtxf(ctx, "sarafu engine exec", "input", input) +// if len(input) == 0 { +// e := se.Engine.(*engine.DefaultEngine) +// v, err := e.Reset(ctx, true) +// if err != nil { +// return v, err +// } +// } return se.Engine.Exec(ctx, input) } diff --git a/go.mod b/go.mod index 12278ee..04cfbd6 100644 --- a/go.mod +++ b/go.mod @@ -3,7 +3,7 @@ module git.grassecon.net/grassrootseconomics/sarafu-vise go 1.23.4 require ( - git.defalsify.org/vise.git v0.2.3-0.20250205092758-ea6bfa050eeb + git.defalsify.org/vise.git v0.2.3-0.20250205173834-d1f6647211ac git.grassecon.net/grassrootseconomics/common v0.0.0-20250121134736-ba8cbbccea7d git.grassecon.net/grassrootseconomics/sarafu-api v0.0.0-20250123142805-2181388f5bf1 git.grassecon.net/grassrootseconomics/visedriver v0.9.0-beta.1.0.20250204132347-1eb0b1555244 diff --git a/go.sum b/go.sum index 18b9d5c..dae909d 100644 --- a/go.sum +++ b/go.sum @@ -1,5 +1,5 @@ -git.defalsify.org/vise.git v0.2.3-0.20250205092758-ea6bfa050eeb h1:WcNLKynPAXT/djmWJcdgiEsNO4HVSLYiaqclPpMCIK8= -git.defalsify.org/vise.git v0.2.3-0.20250205092758-ea6bfa050eeb/go.mod h1:jyBMe1qTYUz3mmuoC9JQ/TvFeW0vTanCUcPu3H8p4Ck= +git.defalsify.org/vise.git v0.2.3-0.20250205173834-d1f6647211ac h1:f/E0ZTclVfMEnD/3Alrzzbg+dOm138zGydV42jT0JPw= +git.defalsify.org/vise.git v0.2.3-0.20250205173834-d1f6647211ac/go.mod h1:jyBMe1qTYUz3mmuoC9JQ/TvFeW0vTanCUcPu3H8p4Ck= git.grassecon.net/grassrootseconomics/common v0.0.0-20250121134736-ba8cbbccea7d h1:5mzLas+jxTUtusOKx4XvU+n2QvrV/mH17MnJRy46siQ= git.grassecon.net/grassrootseconomics/common v0.0.0-20250121134736-ba8cbbccea7d/go.mod h1:wgQJZGIS6QuNLHqDhcsvehsbn5PvgV7aziRebMnJi60= git.grassecon.net/grassrootseconomics/sarafu-api v0.0.0-20250123142805-2181388f5bf1 h1:BJHfokTHzrw9QjQ+4s2HmSER0iBPuE7byW5oQC2zLIQ= diff --git a/handlers/local.go b/handlers/local.go index c001fab..7ae996c 100644 --- a/handlers/local.go +++ b/handlers/local.go @@ -8,12 +8,17 @@ import ( "git.defalsify.org/vise.git/engine" "git.defalsify.org/vise.git/persist" "git.defalsify.org/vise.git/resource" + "git.defalsify.org/vise.git/logging" "git.grassecon.net/grassrootseconomics/sarafu-api/remote" - sarafu_engine "git.grassecon.net/grassrootseconomics/sarafu-vise/engine" +// sarafu_engine "git.grassecon.net/grassrootseconomics/sarafu-vise/engine" "git.grassecon.net/grassrootseconomics/sarafu-vise/handlers/application" ) +var ( + logg = logging.NewVanilla().WithDomain("sarafu-vise.engine") +) + type HandlerService interface { GetHandler() (*application.MenuHandlers, error) } @@ -126,8 +131,10 @@ func (ls *LocalHandlerService) GetHandler(accountService remote.AccountService) } func (ls *LocalHandlerService) GetEngine(cfg engine.Config, rs resource.Resource, pr *persist.Persister) engine.Engine { - se := sarafu_engine.NewSarafuEngine(cfg, rs) - en := se.Engine.(*engine.DefaultEngine) + //logg.Tracef("creating new engine") + //se := sarafu_engine.NewSarafuEngine(cfg, rs) + //en := se.Engine.(*engine.DefaultEngine) + en := engine.NewEngine(cfg, rs) if ls.first != nil { en = en.WithFirst(ls.first) } @@ -135,6 +142,6 @@ func (ls *LocalHandlerService) GetEngine(cfg engine.Config, rs resource.Resource if cfg.EngineDebug { en = en.WithDebug(nil) } - - return se + //return se + return en } From af4b075df3f87fb047d71595cc3c648a91bcb683 Mon Sep 17 00:00:00 2001 From: lash Date: Wed, 5 Feb 2025 17:45:31 +0000 Subject: [PATCH 18/19] Add reset on empty to ssh --- cmd/ssh/main.go | 1 + 1 file changed, 1 insertion(+) diff --git a/cmd/ssh/main.go b/cmd/ssh/main.go index d3afbb0..96dd150 100644 --- a/cmd/ssh/main.go +++ b/cmd/ssh/main.go @@ -84,6 +84,7 @@ func main() { Root: "root", OutputSize: uint32(size), FlagCount: uint32(128), + ResetOnEmptyInput: true, } if stateDebug { cfg.StateDebug = true From c13768d7825e786143ec2199391ae2717d79efee Mon Sep 17 00:00:00 2001 From: lash Date: Wed, 5 Feb 2025 17:56:08 +0000 Subject: [PATCH 19/19] Remove custom engine --- engine/engine.go | 35 ----------------------------------- handlers/local.go | 4 ---- 2 files changed, 39 deletions(-) delete mode 100644 engine/engine.go diff --git a/engine/engine.go b/engine/engine.go deleted file mode 100644 index 08b9aa1..0000000 --- a/engine/engine.go +++ /dev/null @@ -1,35 +0,0 @@ -package engine - -import ( - "context" - - "git.defalsify.org/vise.git/engine" - "git.defalsify.org/vise.git/resource" - "git.defalsify.org/vise.git/logging" -) - -var ( - logg = logging.NewVanilla().WithDomain("sarafu-vise.engine") -) - -type SarafuEngine struct { - engine.Engine -} - -func NewSarafuEngine(cfg engine.Config, rs resource.Resource) *SarafuEngine { - return &SarafuEngine{ - Engine: engine.NewEngine(cfg, rs), - } -} - -func (se *SarafuEngine) Exec(ctx context.Context, input []byte) (bool, error) { - logg.TraceCtxf(ctx, "sarafu engine exec", "input", input) -// if len(input) == 0 { -// e := se.Engine.(*engine.DefaultEngine) -// v, err := e.Reset(ctx, true) -// if err != nil { -// return v, err -// } -// } - return se.Engine.Exec(ctx, input) -} diff --git a/handlers/local.go b/handlers/local.go index 7ae996c..96d2d8c 100644 --- a/handlers/local.go +++ b/handlers/local.go @@ -131,9 +131,6 @@ func (ls *LocalHandlerService) GetHandler(accountService remote.AccountService) } func (ls *LocalHandlerService) GetEngine(cfg engine.Config, rs resource.Resource, pr *persist.Persister) engine.Engine { - //logg.Tracef("creating new engine") - //se := sarafu_engine.NewSarafuEngine(cfg, rs) - //en := se.Engine.(*engine.DefaultEngine) en := engine.NewEngine(cfg, rs) if ls.first != nil { en = en.WithFirst(ls.first) @@ -142,6 +139,5 @@ func (ls *LocalHandlerService) GetEngine(cfg engine.Config, rs resource.Resource if cfg.EngineDebug { en = en.WithDebug(nil) } - //return se return en }