revert DeletePeer having a return value; match other app apis with message returns; full app client/service support
continuous-integration/drone/pr Build is passing Details

This commit is contained in:
Dan Ballard 2021-06-14 16:50:35 -07:00
parent 3fc2a3fcb1
commit d82194bae0
4 changed files with 33 additions and 18 deletions

View File

@ -44,7 +44,7 @@ type Application interface {
LoadProfiles(password string)
CreatePeer(name string, password string)
CreateTaggedPeer(name string, password string, tag string)
DeletePeer(onion string, currentPassword string) bool
DeletePeer(onion string, currentPassword string)
AddPeerPlugin(onion string, pluginID plugins.PluginID)
ChangePeerPassword(onion, oldpass, newpass string)
LaunchPeers()
@ -142,7 +142,7 @@ func (app *application) CreatePeer(name string, password string) {
app.CreateTaggedPeer(name, password, "")
}
func (app *application) DeletePeer(onion string, password string) bool {
func (app *application) DeletePeer(onion string, password string) {
log.Infof("DeletePeer called on %v\n", onion)
app.appmutex.Lock()
defer app.appmutex.Unlock()
@ -165,9 +165,10 @@ func (app *application) DeletePeer(onion string, password string) bool {
app.applicationCore.DeletePeer(onion)
log.Debugf("Delete peer for %v Done\n", onion)
return true
app.appBus.Publish(event.NewEventList(event.PeerDeleted, event.Identity, onion))
return
}
return false
app.appBus.Publish(event.NewEventList(event.AppError, event.Error, event.PasswordMatchError, event.Identity, onion))
}
func (app *application) ChangePeerPassword(onion, oldpass, newpass string) {

View File

@ -47,7 +47,7 @@ func (ac *applicationClient) handleEvent(ev *event.Event) {
reload := ev.Data[event.Status] == event.StorageRunning
created := ev.Data[event.Created]
ac.newPeer(localID, key, salt, reload, created)
case event.DeletePeer:
case event.PeerDeleted:
onion := ev.Data[event.Identity]
ac.handleDeletedPeer(onion)
case event.PeerError:
@ -113,11 +113,9 @@ func (ac *applicationClient) CreateTaggedPeer(name, password, tag string) {
}
// DeletePeer messages the service to delete a peer
func (ac *applicationClient) DeletePeer(onion string, password string) bool {
func (ac *applicationClient) DeletePeer(onion string, password string) {
message := event.IPCMessage{Dest: DestApp, Message: event.NewEvent(event.DeletePeer, map[event.Field]string{event.Identity: onion, event.Password: password})}
ac.bridge.Write(&message)
// This return value is a lie...
return true
}
func (ac *applicationClient) ChangePeerPassword(onion, oldpass, newpass string) {
@ -133,6 +131,7 @@ func (ac *applicationClient) handleDeletedPeer(onion string) {
ac.eventBuses[onion].Publish(event.NewEventList(event.ShutdownPeer, event.Identity, onion))
ac.applicationCore.DeletePeer(onion)
ac.appBus.Publish(event.NewEventList(event.PeerDeleted, event.Identity, onion))
}
func (ac *applicationClient) AddPeerPlugin(onion string, pluginID plugins.PluginID) {

View File

@ -52,7 +52,8 @@ func (as *applicationService) handleEvent(ev *event.Event) {
as.createPeer(profileName, password, tag)
case event.DeletePeer:
onion := ev.Data[event.Identity]
as.deletePeer(onion)
password := ev.Data[event.Password]
as.deletePeer(onion, password)
message := event.IPCMessage{Dest: DestApp, Message: *ev}
as.bridge.Write(&message)
@ -164,21 +165,32 @@ func (as *applicationService) getACNStatusHandler() func(int, string) {
}
}
func (as *applicationService) deletePeer(onion string) {
func (as *applicationService) deletePeer(onion, password string) {
as.asmutex.Lock()
defer as.asmutex.Unlock()
as.appletPlugins.ShutdownPeer(onion)
as.plugins.Delete(onion)
if as.storage[onion].CheckPassword(password) {
as.appletPlugins.ShutdownPeer(onion)
as.plugins.Delete(onion)
as.engines[onion].Shutdown()
delete(as.engines, onion)
as.engines[onion].Shutdown()
delete(as.engines, onion)
as.storage[onion].Shutdown()
as.storage[onion].Delete()
delete(as.storage, onion)
as.storage[onion].Shutdown()
as.storage[onion].Delete()
delete(as.storage, onion)
as.applicationCore.DeletePeer(onion)
as.eventBuses[onion].Publish(event.NewEventList(event.ShutdownPeer, event.Identity, onion))
as.applicationCore.DeletePeer(onion)
log.Debugf("Delete peer for %v Done\n", onion)
message := event.IPCMessage{Dest: DestApp, Message: event.NewEventList(event.PeerDeleted, event.Identity, onion)}
as.bridge.Write(&message)
return
}
message := event.IPCMessage{Dest: DestApp, Message: event.NewEventList(event.AppError, event.Error, event.PasswordMatchError, event.Identity, onion)}
as.bridge.Write(&message)
}
func (as *applicationService) ShutdownPeer(onion string) {

View File

@ -194,6 +194,8 @@ const (
// Identity(onion)
DeletePeer = Type("DeletePeer")
// Identity(onion)
PeerDeleted = Type("PeerDeleted")
// Identity(onion), Data(pluginID)
AddPeerPlugin = Type("AddPeerPlugin")
@ -312,6 +314,7 @@ const (
// Defining Common errors
const (
AppErrLoaded0 = "Loaded 0 profiles"
PasswordMatchError = "Password did not match"
)
// Values to be suplied in event.NewPeer for Status