Exemple #1
0
        private bool InitializePortalAPI()
        {
            try
            {
                PortalApiHelper.Init("Administrator", SecretManager.PortalPassword);
                SecretManager.PortalPassword = string.IsNullOrEmpty(SecretManager.PortalPassword) ? SharedConstants.DEFAULT_PORTAL_PASSWORD : SecretManager.PortalPassword;
            }
            catch (Exception e)
            {
                DebugHelper.LogError($"The Portal API Access could not be initialized: {e.Message}");

                //Attempting default password
                if (SecretManager.PortalPassword != SharedConstants.DEFAULT_PORTAL_PASSWORD)
                {
                    try
                    {
                        PortalApiHelper.Init("Administrator", SharedConstants.DEFAULT_PORTAL_PASSWORD);
                        SecretManager.PortalPassword = SharedConstants.DEFAULT_PORTAL_PASSWORD;
                    }
                    catch (Exception e2)
                    {
                        DebugHelper.LogCritical($"The Portal API Access could not be initialized: {e2.Message}");
                        DebugHelper.LogCritical($"Cannot access the Portal API. Please flash a new firmware.");
                        return(false);
                    }
                }
            }
            return(true);
        }
        public async Task <ResultCommand> SetDeviceSecretKeys(RequestCommandSetDeviceSecretKeys requestSetDeviceKeys)
        {
            try
            {
                //Set new Portal password
                if (!await PortalApiHelper.SetDevicePassword(SecretManager.PortalPassword, requestSetDeviceKeys.PortalPassword))
                {
                    return(ResultCommand.CreateFailedCommand($"Error SetDevicePassword: Error while setting new device password."));
                }
                //Update Portal Password
                SecretManager.PortalPassword = requestSetDeviceKeys.PortalPassword;
                PortalApiHelper.Init("Administrator", SecretManager.PortalPassword);

                //Change Encryption Key
                SecretManager.EncryptionKey = requestSetDeviceKeys.EncryptionKey;

                //Set new Access Point - Will change the AP after reboot of the app
                //SecretManager.AccessPointSsid = SecretManager.AccessPointSsid;
                SecretManager.AccessPointPassword = requestSetDeviceKeys.AccessPointPassword;

                return(ResultCommand.CreateSuccessCommand());
            }
            catch (Exception e)
            {
                DebugHelper.LogError($"Error SetDevicePassword: {e.Message}.");
                return(ResultCommand.CreateFailedCommand($"Error SetDevicePassword: {e.Message}."));
            }
        }
Exemple #3
0
        public async Task <ResultCommandAvailableNetworks> GetAvailableNetworkListHandler()
        {
            try
            {
                var wifiAdapterList = await WiFiAdapter.FindAllAdaptersAsync();

                List <AvailableNetwork> networks = new List <AvailableNetwork>();

                foreach (var adapter in wifiAdapterList)
                {
                    try
                    {
                        var availableNetworks = await PortalApiHelper.GetAvailableNetworks(adapter.NetworkAdapter.NetworkAdapterId);

                        if (availableNetworks != null && availableNetworks.AvailableNetworks != null)
                        {
                            networks.AddRange(availableNetworks.AvailableNetworks);
                        }
                    }
                    catch (Exception) { }
                }

                var sortedNetworks = networks.OrderBy(x => x.SSID).Distinct().ToList();

                return(new ResultCommandAvailableNetworks()
                {
                    Networks = sortedNetworks, IsSuccess = true
                });
            }
            catch (Exception e)
            {
                DebugHelper.LogError($"Error GetAvailableNetworkListHandler: {e.Message}.");
                return(ResultCommand.CreateFailedCommand <ResultCommandAvailableNetworks>($"Error GetAvailableNetworkListHandler: {e.Message}."));
            }
        }
        private async Task <IEnumerable <HeadlessApp> > LoadFirmwares()
        {
            var allFirmwares = await PortalApiHelper.ListFirmwares();

            return(allFirmwares.AppPackages.Where(p =>
                                                  p.PackageFullName.ToLower().StartsWith("edison.devices.") &&
                                                  !p.PackageFullName.ToLower().StartsWith("edison.devices.onboarding")));
        }
        public async Task <ResultCommand> SetDeviceType(RequestCommandSetDeviceType requestDeviceType)
        {
            try
            {
                var apps = await LoadFirmwares();

                //Find the app
                var app = apps.FirstOrDefault(p => p.PackageFullName.ToLower().StartsWith(requestDeviceType.DeviceType.ToLower()));
                if (app == null)
                {
                    DebugHelper.LogError($"Package starting with {requestDeviceType.DeviceType} not found.");
                    return(ResultCommand.CreateFailedCommand($"Error SetDeviceType: Package starting with {requestDeviceType.DeviceType} not found."));
                }

                //Deactivate all other firmwares at startup
                foreach (var appToStop in apps)
                {
                    if (appToStop.IsStartup)
                    {
                        if (!await PortalApiHelper.SetStartupForHeadlessApp(false, appToStop.PackageFullName))
                        {
                            DebugHelper.LogError($"Error while turning off run at startup for App {appToStop.PackageFullName}");
                        }
                    }
                    if (!await PortalApiHelper.StopHeadlessApp(appToStop.PackageFullName))
                    {
                        DebugHelper.LogError($"Error while stopping App {appToStop.PackageFullName}");
                    }
                }

                //Start our firmware and set to run
                if (!await PortalApiHelper.StartHeadlessApp(app.PackageFullName))
                {
                    DebugHelper.LogError($"Error while starting App {app.PackageFullName}");
                    return(ResultCommand.CreateFailedCommand($"Error SetDeviceType: Error while starting App {app.PackageFullName}"));
                }

                if (!await PortalApiHelper.SetStartupForHeadlessApp(true, app.PackageFullName))
                {
                    DebugHelper.LogError($"Error while turning on run at startup for App {app.PackageFullName}");
                    return(ResultCommand.CreateFailedCommand($"Error SetDeviceType: Error while turning on run at startup for App {app.PackageFullName}"));
                }

                return(ResultCommand.CreateSuccessCommand());
            }
            catch (Exception e)
            {
                DebugHelper.LogError($"Error SetDeviceType: {e.Message}.");
                return(ResultCommand.CreateFailedCommand($"Error SetDeviceType: {e.Message}."));
            }
        }
        public async Task <ResultCommand> StopApp(string appName)
        {
            var apps = await PortalApiHelper.ListFirmwares();

            foreach (var app in apps.AppPackages)
            {
                if (app.PackageFullName.ToLower().StartsWith(appName.ToLower()))
                {
                    if (!await PortalApiHelper.StopHeadlessApp(app.PackageFullName))
                    {
                        return(ResultCommand.CreateFailedCommand($"Error StopApp: Error while stopping App {app.PackageFullName}"));
                    }
                    break;
                }
            }
            return(ResultCommand.CreateSuccessCommand());
        }
        public async Task <ResultCommandSoftAPSettings> GetAccessPointSettings()
        {
            try
            {
                var apSettings = await PortalApiHelper.GetSoftAPSettings();

                return(new ResultCommandSoftAPSettings()
                {
                    SoftAPSettings = apSettings,
                    IsSuccess = true
                });
            }
            catch (Exception e)
            {
                DebugHelper.LogError($"Error GetAccessPointSettings: {e.Message}.");
                return(ResultCommand.CreateFailedCommand <ResultCommandSoftAPSettings>($"Error GetAccessPointSettings: {e.Message}."));
            }
        }
        public async Task <ResultCommandIPAdapters> GetNetworkProfiles()
        {
            try
            {
                var profiles = await PortalApiHelper.GetNetworkProfiles();

                return(new ResultCommandIPAdapters()
                {
                    IPAdapters = profiles,
                    IsSuccess = true
                });
            }
            catch (Exception e)
            {
                DebugHelper.LogError($"Error GetAccessPointSettings: {e.Message}.");
                return(ResultCommand.CreateFailedCommand <ResultCommandIPAdapters>($"Error GetAccessPointSettings: {e.Message}."));
            }
        }
        public async Task <ResultCommand> SetDeviceName(RequestCommandSetDeviceName requestDeviceName)
        {
            try
            {
                if (!await PortalApiHelper.SetDeviceName(requestDeviceName.Name))
                {
                    DebugHelper.LogError($"Error while setting device name: {requestDeviceName.Name}");
                    return(ResultCommand.CreateFailedCommand($"Error SetDeviceName: Error while setting device name: {requestDeviceName.Name}"));
                }

                return(ResultCommand.CreateSuccessCommand());
            }
            catch (Exception e)
            {
                DebugHelper.LogError($"Error SetDeviceName: {e.Message}.");
                return(ResultCommand.CreateFailedCommand($"Error SetDeviceName: {e.Message}."));
            }
        }
Exemple #10
0
        public async Task <ResultCommandNetworkStatus> ConnectToNetworkHandler(RequestCommandConnectToNetwork requestConnectToNetwork)
        {
            try
            {
                NetworkInformation networkInfo = requestConnectToNetwork.NetworkInformation;

                var wifiSet = await FindWifi(networkInfo.Ssid);

                if (wifiSet != null)
                {
                    if (!await PortalApiHelper.DisconnectFromNetwork(wifiSet.Adapter.NetworkAdapter.NetworkAdapterId))
                    {
                        DebugHelper.LogWarning($"Error while trying to disconnect from network: {wifiSet.Adapter.NetworkAdapter.NetworkAdapterId}");
                    }

                    var availableNetworks = await PortalApiHelper.GetAvailableNetworks(wifiSet.Adapter.NetworkAdapter.NetworkAdapterId);

                    foreach (var network in availableNetworks.AvailableNetworks)
                    {
                        if (network.ProfileAvailable && !await PortalApiHelper.DeleteNetworkProfile(wifiSet.Adapter.NetworkAdapter.NetworkAdapterId, network.ProfileName))
                        {
                            DebugHelper.LogWarning($"Error while trying to disconnect from network: {wifiSet.Adapter.NetworkAdapter.NetworkAdapterId}");
                        }
                    }
                    if (!await PortalApiHelper.ConnectToNetwork(wifiSet.Adapter.NetworkAdapter.NetworkAdapterId, networkInfo.Ssid, networkInfo.Password))
                    {
                        return(ResultCommand.CreateFailedCommand <ResultCommandNetworkStatus>($"Error ConnectToNetworkHandler: Could not connect to network '{networkInfo.Ssid}'."));
                    }

                    return(new ResultCommandNetworkStatus()
                    {
                        IsSuccess = true, Status = "Connected"
                    });
                }
                return(ResultCommand.CreateFailedCommand <ResultCommandNetworkStatus>($"Error ConnectToNetworkHandler: UnspecifiedFailure."));
            }
            catch (Exception e)
            {
                DebugHelper.LogError($"Error ConnectToNetworkHandler: {e.Message}.");
                return(ResultCommand.CreateFailedCommand <ResultCommandNetworkStatus>($"Error ConnectToNetworkHandler: {e.Message}."));
            }
        }