package cmd import ( "fmt" "github.com/Akilan1999/p2p-rendering-computation/abstractions" "github.com/Akilan1999/p2p-rendering-computation/client" "github.com/Akilan1999/p2p-rendering-computation/client/clientIPTable" "github.com/Akilan1999/p2p-rendering-computation/config/generate" "github.com/Akilan1999/p2p-rendering-computation/p2p" "github.com/Akilan1999/p2p-rendering-computation/server" "github.com/urfave/cli/v2" ) var CliAction = func(ctx *cli.Context) error { if Server { _, err := server.Server() if err != nil { fmt.Print(err) } //server.Rpc() for { } } //Listing servers and also updates IP tables (Default 3 hops) if UpdateServerList { err := clientIPTable.UpdateIpTableListClient() if err != nil { fmt.Print(err) } // Reads from ip table and passes it // on to struct print function //Servers, err := p2p.ReadIpTable() //if err != nil { // return err //} //client.PrettyPrint(Servers) p2p.PrintIpTable() } // Displays the IP table if ServerList { // Reads from ip table and passes it // on to struct print function //Servers, err := p2p.ReadIpTable() //if err != nil { // return err //} p2p.PrintIpTable() } // Add provided IP to the IP table if AddServer != "" { res, err := p2p.ReadIpTable() if err != nil { fmt.Println(err) } //Create variable of type IpAddress and set IP address // to it var IpAddr p2p.IpAddress //Checking if the address is a ipv4 // or ipv6 address ip4Orip6 := p2p.Ip4or6(AddServer) if ip4Orip6 == "version 6" { IpAddr.Ipv6 = AddServer } else { IpAddr.Ipv4 = AddServer } // If a server port is provided then set it if Ports != "" { IpAddr.ServerPort = Ports } else { IpAddr.ServerPort = "8088" } // Append IP address to variable result which // is a list res.IpAddress = append(res.IpAddress, IpAddr) // Adds the new server IP to the iptable res.WriteIpTable() } // Displays all images available on the server side //if ViewImages != "" { // imageRes, err := client.ViewContainers(ViewImages) // standardOutput(err, imageRes) //} // //// Function called to stop and remove server from Docker //if RemoveVM != "" { // if ID == "" { // fmt.Println("provide container ID via --ID or --id") // } else { // err := client.RemoveContianer(RemoveVM, ID) // standardOutput(err, nil) // } //} //Call function to create Docker container //if CreateVM != "" { // // var PortsInt int // // if Ports != "" { // // Convert Get Request value to int // fmt.Sscanf(Ports, "%d", &PortsInt) // } // // // Calls function to do Api call to start the container on the server side // imageRes, err := client.StartContainer(CreateVM, PortsInt, GPU, ContainerName, BaseImage) // // standardOutput(err, imageRes) //} //Call if specs flag is called if Specs != "" { specs, err := client.GetSpecs(Specs) standardOutput(err, specs) } //Sets default paths to the config file if SetDefaultConfig { _, err := generate.SetDefaults("P2PRC", false, nil, false) standardOutput(err, nil) } //If the network interface flag is called // Then all the network interfaces are displayed if NetworkInterface { err := p2p.ViewNetworkInterface() standardOutput(err, nil) } // If the view plugin flag is called then display all // plugins available //if ViewPlugin { // plugins, err := plugin.DetectPlugins() // standardOutput(err, plugins) //} // If the flag Tracked Container is called or the flag // --tc //if TrackedContainers { // err, trackedContainers := client.ViewTrackedContainers() // standardOutput(err, trackedContainers) //} //Executing plugin when the plugin flag is called // --plugin //if ExecutePlugin != "" { // // To execute plugin requires the container ID or group ID provided when being executed // if ID != "" { // err := plugin.CheckRunPlugin(ExecutePlugin, ID) // standardOutput(err, nil) // } // //else { // // fmt.Println("provide container ID via --ID or --id") // //} // //} // Executing function to create new group // Creates new group and outputs JSON file //if CreateGroup { // group, err := client.CreateGroup() // standardOutput(err, group) //} // Actions to be performed when the // group flag is called // --group //if Group != "" { // // Remove container from group based on group ID provided // // --rmcgroup --id // if RemoveContainerGroup && ID != "" { // group, err := client.RemoveContainerGroup(ID, Group) // standardOutput(err, group) // } else if ID != "" { // Add container to group based on group ID provided // // --id // group, err := client.AddContainerToGroup(ID, Group) // standardOutput(err, group) // } else { // View all information about current group // group, err := client.GetGroup(Group) // standardOutput(err, group) // } //} // Execute function to remove entire group // when remove group flag is called // --rmgroup //if RemoveGroup != "" { // err := client.RemoveGroup(RemoveGroup) // standardOutput(err, nil) //} // Execute Function to view all groups //if Groups { // groups, err := client.ReadGroup() // standardOutput(err, groups) //} //-------------------------------- //if PullPlugin != "" { // err := plugin.DownloadPlugin(PullPlugin) // standardOutput(err, nil) //} // //if RemovePlugin != "" { // err := plugin.DeletePlugin(RemovePlugin) // standardOutput(err, nil) //} if AddMetaData != "" { err := clientIPTable.AddCustomInformationToIPTable(AddMetaData) standardOutput(err, nil) } if MAPPort != "" { address, err := client.MAPPort(MAPPort, DomainName, RemoteAddress) standardOutput(err, address) } // Action called to add root node to network if AddRootNode && IP != "" && Ports != "" { err := abstractions.AddRootNode(IP, Ports) standardOutput(err, nil) } return nil } func standardOutput(err error, i interface{}) { if err != nil { fmt.Println(err) } else if i == nil { fmt.Println("Success") } else { client.PrettyPrint(i) } }