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) LoadProfiles(password string)
CreatePeer(name string, password string) CreatePeer(name string, password string)
CreateTaggedPeer(name string, password string, tag 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) AddPeerPlugin(onion string, pluginID plugins.PluginID)
ChangePeerPassword(onion, oldpass, newpass string) ChangePeerPassword(onion, oldpass, newpass string)
LaunchPeers() LaunchPeers()
@ -142,7 +142,7 @@ func (app *application) CreatePeer(name string, password string) {
app.CreateTaggedPeer(name, password, "") 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) log.Infof("DeletePeer called on %v\n", onion)
app.appmutex.Lock() app.appmutex.Lock()
defer app.appmutex.Unlock() defer app.appmutex.Unlock()
@ -165,9 +165,10 @@ func (app *application) DeletePeer(onion string, password string) bool {
app.applicationCore.DeletePeer(onion) app.applicationCore.DeletePeer(onion)
log.Debugf("Delete peer for %v Done\n", 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) { 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 reload := ev.Data[event.Status] == event.StorageRunning
created := ev.Data[event.Created] created := ev.Data[event.Created]
ac.newPeer(localID, key, salt, reload, created) ac.newPeer(localID, key, salt, reload, created)
case event.DeletePeer: case event.PeerDeleted:
onion := ev.Data[event.Identity] onion := ev.Data[event.Identity]
ac.handleDeletedPeer(onion) ac.handleDeletedPeer(onion)
case event.PeerError: case event.PeerError:
@ -113,11 +113,9 @@ func (ac *applicationClient) CreateTaggedPeer(name, password, tag string) {
} }
// DeletePeer messages the service to delete a peer // 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})} message := event.IPCMessage{Dest: DestApp, Message: event.NewEvent(event.DeletePeer, map[event.Field]string{event.Identity: onion, event.Password: password})}
ac.bridge.Write(&message) ac.bridge.Write(&message)
// This return value is a lie...
return true
} }
func (ac *applicationClient) ChangePeerPassword(onion, oldpass, newpass string) { 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.eventBuses[onion].Publish(event.NewEventList(event.ShutdownPeer, event.Identity, onion))
ac.applicationCore.DeletePeer(onion) ac.applicationCore.DeletePeer(onion)
ac.appBus.Publish(event.NewEventList(event.PeerDeleted, event.Identity, onion))
} }
func (ac *applicationClient) AddPeerPlugin(onion string, pluginID plugins.PluginID) { 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) as.createPeer(profileName, password, tag)
case event.DeletePeer: case event.DeletePeer:
onion := ev.Data[event.Identity] onion := ev.Data[event.Identity]
as.deletePeer(onion) password := ev.Data[event.Password]
as.deletePeer(onion, password)
message := event.IPCMessage{Dest: DestApp, Message: *ev} message := event.IPCMessage{Dest: DestApp, Message: *ev}
as.bridge.Write(&message) 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() as.asmutex.Lock()
defer as.asmutex.Unlock() defer as.asmutex.Unlock()
as.appletPlugins.ShutdownPeer(onion) if as.storage[onion].CheckPassword(password) {
as.plugins.Delete(onion) as.appletPlugins.ShutdownPeer(onion)
as.plugins.Delete(onion)
as.engines[onion].Shutdown() as.engines[onion].Shutdown()
delete(as.engines, onion) delete(as.engines, onion)
as.storage[onion].Shutdown() as.storage[onion].Shutdown()
as.storage[onion].Delete() as.storage[onion].Delete()
delete(as.storage, onion) 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) { func (as *applicationService) ShutdownPeer(onion string) {

View File

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