2021-09-24 06:48:48 +00:00
|
|
|
//---------------------------------------------------------------------------
|
|
|
|
//
|
2022-08-26 01:01:39 +00:00
|
|
|
// SCSI Target Emulator RaSCSI Reloaded
|
2021-09-24 06:48:48 +00:00
|
|
|
// for Raspberry Pi
|
|
|
|
//
|
SASI code removal, error handling update, bug fixes, code cleanup (#806)
Summary ov most important changes triggered by the SASI code removal:
- Removed the SASI controller code
- New controller management. There is a new controller base class AbstractController and a class ControllerManager managing the controller lifecycle. The lifecycle management was removed from rasci.cpp and is covered by unit tests.
- New device management. The DeviceFactory manages the device lifecycle instead of rascsi.cpp. The new code is covered by unit tests.
- The lifecycle managment uses C++ collections with variable size instead of arrays with hard-coded sizes.
- The ScsiController method contains most of what was previously contained in scsidev_ctrl.cpp plus the code from sasidev_ctrl.cpp that was relevant for SCSI.
- scsi_command_util contains helper methods used for identical SCSI command implementations of more than one device
- Devices know their controllers, so that the controller instance does not need to be passed to each SCSI command. This change helps to decouple the devices from the controller. The phase_handler interface is also part of this decoupling.
- Use scsi_command_exception for propagating SCSI command execution errors, This resolves issues with the previous error handling, which was based on return values and often on magic numbers.
- Removed legacy SCSI error codes, all errors are now encoded by sense_key::, asc:: and status::.
- Fixed various warnings reported with -Wextra, -Weffc++ and -Wpedantic.
- Use constructor member initialization lists (recommended for ISO C++)
- Consistently use new/delete instead of malloc/free (recommended for ISO C++), resulting in better type safety and error handling
- Replaced variable sized arrays on the stack (violates ISO C++ and can cause a stack overflow)
- Replaced NULL by nullptr (recommended for C++), resulting in better type safety
- Use more const member functions in order to avoid side effects
- The format device page can now also be changed for hard disk drives (Fujitsu M2624S supports this, for instance), not just for MOs.
- Better encapsulation, updated access specifiers in many places
- Removed unused methods and method arguments
- Fixed a number of TODOs
- Added/updated unit tests for a lot of non-legacy classes
- Makefile support for creating HTML coverage reports with lcov/genhtml
2022-09-03 14:53:53 +00:00
|
|
|
// Copyright (C) 2021-2022 Uwe Seimet
|
2021-09-24 06:48:48 +00:00
|
|
|
//
|
|
|
|
//---------------------------------------------------------------------------
|
|
|
|
|
|
|
|
#include "devices/file_support.h"
|
|
|
|
#include "devices/disk.h"
|
|
|
|
#include "devices/device_factory.h"
|
|
|
|
#include "protobuf_util.h"
|
|
|
|
#include "rascsi_version.h"
|
|
|
|
#include "rascsi_interface.pb.h"
|
2021-10-17 06:51:14 +00:00
|
|
|
#include "rascsi_image.h"
|
|
|
|
#include "rascsi_response.h"
|
2021-09-24 06:48:48 +00:00
|
|
|
|
|
|
|
using namespace rascsi_interface;
|
2021-10-17 06:51:14 +00:00
|
|
|
using namespace protobuf_util;
|
2021-09-24 06:48:48 +00:00
|
|
|
|
2021-10-17 06:51:14 +00:00
|
|
|
PbDeviceProperties *RascsiResponse::GetDeviceProperties(const Device *device)
|
2021-09-24 06:48:48 +00:00
|
|
|
{
|
2022-09-07 14:38:42 +00:00
|
|
|
auto properties = make_unique<PbDeviceProperties>().release();
|
2021-09-24 06:48:48 +00:00
|
|
|
|
SASI code removal, error handling update, bug fixes, code cleanup (#806)
Summary ov most important changes triggered by the SASI code removal:
- Removed the SASI controller code
- New controller management. There is a new controller base class AbstractController and a class ControllerManager managing the controller lifecycle. The lifecycle management was removed from rasci.cpp and is covered by unit tests.
- New device management. The DeviceFactory manages the device lifecycle instead of rascsi.cpp. The new code is covered by unit tests.
- The lifecycle managment uses C++ collections with variable size instead of arrays with hard-coded sizes.
- The ScsiController method contains most of what was previously contained in scsidev_ctrl.cpp plus the code from sasidev_ctrl.cpp that was relevant for SCSI.
- scsi_command_util contains helper methods used for identical SCSI command implementations of more than one device
- Devices know their controllers, so that the controller instance does not need to be passed to each SCSI command. This change helps to decouple the devices from the controller. The phase_handler interface is also part of this decoupling.
- Use scsi_command_exception for propagating SCSI command execution errors, This resolves issues with the previous error handling, which was based on return values and often on magic numbers.
- Removed legacy SCSI error codes, all errors are now encoded by sense_key::, asc:: and status::.
- Fixed various warnings reported with -Wextra, -Weffc++ and -Wpedantic.
- Use constructor member initialization lists (recommended for ISO C++)
- Consistently use new/delete instead of malloc/free (recommended for ISO C++), resulting in better type safety and error handling
- Replaced variable sized arrays on the stack (violates ISO C++ and can cause a stack overflow)
- Replaced NULL by nullptr (recommended for C++), resulting in better type safety
- Use more const member functions in order to avoid side effects
- The format device page can now also be changed for hard disk drives (Fujitsu M2624S supports this, for instance), not just for MOs.
- Better encapsulation, updated access specifiers in many places
- Removed unused methods and method arguments
- Fixed a number of TODOs
- Added/updated unit tests for a lot of non-legacy classes
- Makefile support for creating HTML coverage reports with lcov/genhtml
2022-09-03 14:53:53 +00:00
|
|
|
properties->set_luns(AbstractController::LUN_MAX);
|
2021-09-24 06:48:48 +00:00
|
|
|
properties->set_read_only(device->IsReadOnly());
|
|
|
|
properties->set_protectable(device->IsProtectable());
|
|
|
|
properties->set_stoppable(device->IsStoppable());
|
|
|
|
properties->set_removable(device->IsRemovable());
|
|
|
|
properties->set_lockable(device->IsLockable());
|
2022-09-15 21:01:10 +00:00
|
|
|
properties->set_supports_file(dynamic_cast<const FileSupport *>(device) != nullptr);
|
2021-09-24 06:48:48 +00:00
|
|
|
properties->set_supports_params(device->SupportsParams());
|
|
|
|
|
|
|
|
PbDeviceType t = UNDEFINED;
|
|
|
|
PbDeviceType_Parse(device->GetType(), &t);
|
|
|
|
|
|
|
|
if (device->SupportsParams()) {
|
2022-09-07 14:38:42 +00:00
|
|
|
for (const auto& [key, value] : device_factory->GetDefaultParams(t)) {
|
2021-09-24 06:48:48 +00:00
|
|
|
auto& map = *properties->mutable_default_params();
|
2022-09-07 14:38:42 +00:00
|
|
|
map[key] = value;
|
2021-09-24 06:48:48 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2021-10-17 06:51:14 +00:00
|
|
|
for (const auto& block_size : device_factory->GetSectorSizes(t)) {
|
2021-09-24 06:48:48 +00:00
|
|
|
properties->add_block_sizes(block_size);
|
|
|
|
}
|
|
|
|
|
|
|
|
return properties;
|
|
|
|
}
|
|
|
|
|
2021-10-17 06:51:14 +00:00
|
|
|
void RascsiResponse::GetDeviceTypeProperties(PbDeviceTypesInfo& device_types_info, PbDeviceType type)
|
2021-09-24 06:48:48 +00:00
|
|
|
{
|
|
|
|
PbDeviceTypeProperties *type_properties = device_types_info.add_properties();
|
|
|
|
type_properties->set_type(type);
|
2022-09-15 21:01:10 +00:00
|
|
|
const PrimaryDevice *device = device_factory->CreateDevice(type, "", -1);
|
2021-09-24 06:48:48 +00:00
|
|
|
type_properties->set_allocated_properties(GetDeviceProperties(device));
|
2022-09-15 21:01:10 +00:00
|
|
|
device_factory->DeleteDevice(device); //NOSONAR The alloced memory is managed by protobuf
|
2021-09-24 06:48:48 +00:00
|
|
|
}
|
|
|
|
|
2021-10-17 06:51:14 +00:00
|
|
|
void RascsiResponse::GetAllDeviceTypeProperties(PbDeviceTypesInfo& device_types_info)
|
2021-09-24 06:48:48 +00:00
|
|
|
{
|
SASI code removal, error handling update, bug fixes, code cleanup (#806)
Summary ov most important changes triggered by the SASI code removal:
- Removed the SASI controller code
- New controller management. There is a new controller base class AbstractController and a class ControllerManager managing the controller lifecycle. The lifecycle management was removed from rasci.cpp and is covered by unit tests.
- New device management. The DeviceFactory manages the device lifecycle instead of rascsi.cpp. The new code is covered by unit tests.
- The lifecycle managment uses C++ collections with variable size instead of arrays with hard-coded sizes.
- The ScsiController method contains most of what was previously contained in scsidev_ctrl.cpp plus the code from sasidev_ctrl.cpp that was relevant for SCSI.
- scsi_command_util contains helper methods used for identical SCSI command implementations of more than one device
- Devices know their controllers, so that the controller instance does not need to be passed to each SCSI command. This change helps to decouple the devices from the controller. The phase_handler interface is also part of this decoupling.
- Use scsi_command_exception for propagating SCSI command execution errors, This resolves issues with the previous error handling, which was based on return values and often on magic numbers.
- Removed legacy SCSI error codes, all errors are now encoded by sense_key::, asc:: and status::.
- Fixed various warnings reported with -Wextra, -Weffc++ and -Wpedantic.
- Use constructor member initialization lists (recommended for ISO C++)
- Consistently use new/delete instead of malloc/free (recommended for ISO C++), resulting in better type safety and error handling
- Replaced variable sized arrays on the stack (violates ISO C++ and can cause a stack overflow)
- Replaced NULL by nullptr (recommended for C++), resulting in better type safety
- Use more const member functions in order to avoid side effects
- The format device page can now also be changed for hard disk drives (Fujitsu M2624S supports this, for instance), not just for MOs.
- Better encapsulation, updated access specifiers in many places
- Removed unused methods and method arguments
- Fixed a number of TODOs
- Added/updated unit tests for a lot of non-legacy classes
- Makefile support for creating HTML coverage reports with lcov/genhtml
2022-09-03 14:53:53 +00:00
|
|
|
// Start with 2 instead of 1. 1 was the removed SASI drive type.
|
|
|
|
int ordinal = 2;
|
2022-02-10 18:54:48 +00:00
|
|
|
while (PbDeviceType_IsValid(ordinal)) {
|
|
|
|
PbDeviceType type = UNDEFINED;
|
2022-02-13 19:30:02 +00:00
|
|
|
PbDeviceType_Parse(PbDeviceType_Name((PbDeviceType)ordinal), &type);
|
2022-02-10 18:54:48 +00:00
|
|
|
GetDeviceTypeProperties(device_types_info, type);
|
|
|
|
ordinal++;
|
|
|
|
}
|
2021-09-24 06:48:48 +00:00
|
|
|
}
|
|
|
|
|
2021-10-17 06:51:14 +00:00
|
|
|
void RascsiResponse::GetDevice(const Device *device, PbDevice *pb_device)
|
2021-09-24 06:48:48 +00:00
|
|
|
{
|
|
|
|
pb_device->set_id(device->GetId());
|
|
|
|
pb_device->set_unit(device->GetLun());
|
|
|
|
pb_device->set_vendor(device->GetVendor());
|
|
|
|
pb_device->set_product(device->GetProduct());
|
|
|
|
pb_device->set_revision(device->GetRevision());
|
|
|
|
|
|
|
|
PbDeviceType type = UNDEFINED;
|
|
|
|
PbDeviceType_Parse(device->GetType(), &type);
|
|
|
|
pb_device->set_type(type);
|
|
|
|
|
|
|
|
pb_device->set_allocated_properties(GetDeviceProperties(device));
|
|
|
|
|
2022-09-07 14:38:42 +00:00
|
|
|
auto status = make_unique<PbDeviceStatus>().release();
|
2021-09-24 06:48:48 +00:00
|
|
|
pb_device->set_allocated_status(status);
|
|
|
|
status->set_protected_(device->IsProtected());
|
|
|
|
status->set_stopped(device->IsStopped());
|
|
|
|
status->set_removed(device->IsRemoved());
|
|
|
|
status->set_locked(device->IsLocked());
|
|
|
|
|
2022-09-15 21:01:10 +00:00
|
|
|
if (device->SupportsParams()) { //NOSONAR The alloced memory is managed by protobuf
|
2022-09-07 14:38:42 +00:00
|
|
|
for (const auto& [key, value] : device->GetParams()) {
|
|
|
|
AddParam(*pb_device, key, value);
|
2021-09-24 06:48:48 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2022-09-07 14:38:42 +00:00
|
|
|
if (const auto disk = dynamic_cast<const Disk*>(device); disk) {
|
2021-09-24 06:48:48 +00:00
|
|
|
pb_device->set_block_size(device->IsRemoved()? 0 : disk->GetSectorSizeInBytes());
|
|
|
|
pb_device->set_block_count(device->IsRemoved() ? 0: disk->GetBlockCount());
|
|
|
|
}
|
|
|
|
|
2022-09-07 14:38:42 +00:00
|
|
|
const auto file_support = dynamic_cast<const FileSupport *>(device);
|
2021-09-24 06:48:48 +00:00
|
|
|
if (file_support) {
|
|
|
|
Filepath filepath;
|
|
|
|
file_support->GetPath(filepath);
|
2022-09-07 14:38:42 +00:00
|
|
|
auto image_file = make_unique<PbImageFile>().release();
|
2021-10-17 06:51:14 +00:00
|
|
|
GetImageFile(image_file, device->IsRemovable() && !device->IsReady() ? "" : filepath.GetPath());
|
2021-09-24 06:48:48 +00:00
|
|
|
pb_device->set_allocated_file(image_file);
|
|
|
|
}
|
2022-09-15 21:01:10 +00:00
|
|
|
} //NOSONAR The alloced memory is managed by protobuf
|
2021-09-24 06:48:48 +00:00
|
|
|
|
2022-09-15 21:01:10 +00:00
|
|
|
bool RascsiResponse::GetImageFile(PbImageFile *image_file, const string& filename) const
|
2021-09-24 06:48:48 +00:00
|
|
|
{
|
|
|
|
if (!filename.empty()) {
|
2021-09-30 17:22:57 +00:00
|
|
|
image_file->set_name(filename);
|
2021-10-17 06:51:14 +00:00
|
|
|
image_file->set_type(device_factory->GetTypeForFile(filename));
|
2021-09-24 06:48:48 +00:00
|
|
|
|
2021-10-17 06:51:14 +00:00
|
|
|
string f = filename[0] == '/' ? filename : rascsi_image->GetDefaultImageFolder() + "/" + filename;
|
2021-09-24 06:48:48 +00:00
|
|
|
|
|
|
|
image_file->set_read_only(access(f.c_str(), W_OK));
|
|
|
|
|
2022-09-07 14:38:42 +00:00
|
|
|
struct stat st; //NOSONAR Cannot be declared in a separate statement because struct keyword is required
|
2021-09-30 21:31:09 +00:00
|
|
|
if (!stat(f.c_str(), &st) && !S_ISDIR(st.st_mode)) {
|
2021-09-24 06:48:48 +00:00
|
|
|
image_file->set_size(st.st_size);
|
2021-09-30 17:22:57 +00:00
|
|
|
return true;
|
2021-09-24 06:48:48 +00:00
|
|
|
}
|
|
|
|
}
|
2021-09-30 17:22:57 +00:00
|
|
|
|
|
|
|
return false;
|
2021-09-24 06:48:48 +00:00
|
|
|
}
|
|
|
|
|
2022-09-07 14:38:42 +00:00
|
|
|
void RascsiResponse::GetAvailableImages(PbImageFilesInfo& image_files_info, string_view default_image_folder,
|
2021-12-22 08:25:05 +00:00
|
|
|
const string& folder, const string& folder_pattern, const string& file_pattern, int scan_depth) {
|
|
|
|
string folder_pattern_lower = folder_pattern;
|
|
|
|
transform(folder_pattern_lower.begin(), folder_pattern_lower.end(), folder_pattern_lower.begin(), ::tolower);
|
|
|
|
|
|
|
|
string file_pattern_lower = file_pattern;
|
|
|
|
transform(file_pattern_lower.begin(), file_pattern_lower.end(), file_pattern_lower.begin(), ::tolower);
|
2021-12-19 10:49:17 +00:00
|
|
|
|
|
|
|
if (scan_depth-- >= 0) {
|
2022-09-07 14:38:42 +00:00
|
|
|
if (DIR *d = opendir(folder.c_str()); d) {
|
|
|
|
const dirent *dir;
|
2021-12-19 10:49:17 +00:00
|
|
|
while ((dir = readdir(d))) {
|
|
|
|
bool is_supported_type = dir->d_type == DT_REG || dir->d_type == DT_DIR || dir->d_type == DT_LNK || dir->d_type == DT_BLK;
|
|
|
|
if (is_supported_type && dir->d_name[0] != '.') {
|
2021-12-22 08:25:05 +00:00
|
|
|
string name_lower = dir->d_name;
|
|
|
|
if (!file_pattern.empty()) {
|
|
|
|
transform(name_lower.begin(), name_lower.end(), name_lower.begin(), ::tolower);
|
|
|
|
}
|
|
|
|
|
|
|
|
string filename = folder + "/" + dir->d_name;
|
|
|
|
|
2022-09-10 05:59:41 +00:00
|
|
|
if (struct stat st; dir->d_type == DT_REG && !stat(filename.c_str(), &st)) {
|
2021-12-19 10:49:17 +00:00
|
|
|
if (!st.st_size) {
|
2022-09-07 14:38:42 +00:00
|
|
|
LOGWARN("File '%s' in image folder '%s' has a size of 0 bytes", dir->d_name, folder.c_str())
|
2021-12-19 10:49:17 +00:00
|
|
|
continue;
|
|
|
|
}
|
|
|
|
} else if (dir->d_type == DT_LNK && stat(filename.c_str(), &st)) {
|
2022-09-07 14:38:42 +00:00
|
|
|
LOGWARN("Symlink '%s' in image folder '%s' is broken", dir->d_name, folder.c_str())
|
2021-12-19 10:49:17 +00:00
|
|
|
continue;
|
|
|
|
} else if (dir->d_type == DT_DIR) {
|
2021-12-22 08:25:05 +00:00
|
|
|
if (folder_pattern_lower.empty() || name_lower.find(folder_pattern_lower) != string::npos) {
|
|
|
|
GetAvailableImages(image_files_info, default_image_folder, filename, folder_pattern,
|
|
|
|
file_pattern, scan_depth);
|
|
|
|
}
|
2021-09-24 06:48:48 +00:00
|
|
|
continue;
|
|
|
|
}
|
|
|
|
|
2021-12-22 08:25:05 +00:00
|
|
|
if (file_pattern_lower.empty() || name_lower.find(file_pattern_lower) != string::npos) {
|
2022-09-10 05:59:41 +00:00
|
|
|
if (auto image_file = make_unique<PbImageFile>(); GetImageFile(image_file.get(), filename)) {
|
2021-12-19 10:49:17 +00:00
|
|
|
GetImageFile(image_files_info.add_image_files(), filename.substr(default_image_folder.length() + 1));
|
|
|
|
}
|
|
|
|
}
|
2021-09-30 21:31:09 +00:00
|
|
|
}
|
2021-09-24 06:48:48 +00:00
|
|
|
}
|
|
|
|
|
2021-12-19 10:49:17 +00:00
|
|
|
closedir(d);
|
|
|
|
}
|
2021-09-24 06:48:48 +00:00
|
|
|
}
|
2021-12-19 10:49:17 +00:00
|
|
|
}
|
|
|
|
|
2021-12-22 08:25:05 +00:00
|
|
|
PbImageFilesInfo *RascsiResponse::GetAvailableImages(PbResult& result, const string& folder_pattern,
|
|
|
|
const string& file_pattern, int scan_depth)
|
2021-12-19 10:49:17 +00:00
|
|
|
{
|
2022-09-07 14:38:42 +00:00
|
|
|
auto image_files_info = make_unique<PbImageFilesInfo>().release();
|
2021-12-19 10:49:17 +00:00
|
|
|
|
|
|
|
string default_image_folder = rascsi_image->GetDefaultImageFolder();
|
|
|
|
image_files_info->set_default_image_folder(default_image_folder);
|
2021-12-22 08:25:05 +00:00
|
|
|
image_files_info->set_depth(scan_depth);
|
2021-12-19 10:49:17 +00:00
|
|
|
|
2021-12-22 08:25:05 +00:00
|
|
|
GetAvailableImages(*image_files_info, default_image_folder, default_image_folder, folder_pattern,
|
|
|
|
file_pattern, scan_depth);
|
2021-09-24 06:48:48 +00:00
|
|
|
|
|
|
|
result.set_status(true);
|
|
|
|
|
|
|
|
return image_files_info;
|
|
|
|
}
|
|
|
|
|
2021-12-22 08:25:05 +00:00
|
|
|
void RascsiResponse::GetAvailableImages(PbResult& result, PbServerInfo& server_info, const string& folder_pattern,
|
|
|
|
const string& file_pattern, int scan_depth)
|
2021-09-24 06:48:48 +00:00
|
|
|
{
|
2021-12-22 08:25:05 +00:00
|
|
|
PbImageFilesInfo *image_files_info = GetAvailableImages(result, folder_pattern, file_pattern, scan_depth);
|
2021-10-17 06:51:14 +00:00
|
|
|
image_files_info->set_default_image_folder(rascsi_image->GetDefaultImageFolder());
|
2021-09-24 06:48:48 +00:00
|
|
|
server_info.set_allocated_image_files_info(image_files_info);
|
|
|
|
|
2022-09-15 21:01:10 +00:00
|
|
|
result.set_status(true); //NOSONAR The alloced memory is managed by protobuf
|
2021-09-24 06:48:48 +00:00
|
|
|
}
|
|
|
|
|
2022-03-02 02:25:22 +00:00
|
|
|
PbReservedIdsInfo *RascsiResponse::GetReservedIds(PbResult& result, const unordered_set<int>& ids)
|
2021-10-06 21:25:43 +00:00
|
|
|
{
|
2022-09-07 14:38:42 +00:00
|
|
|
auto reserved_ids_info = make_unique<PbReservedIdsInfo>().release();
|
2021-10-06 21:25:43 +00:00
|
|
|
for (int id : ids) {
|
|
|
|
reserved_ids_info->add_ids(id);
|
|
|
|
}
|
|
|
|
|
|
|
|
result.set_status(true);
|
|
|
|
|
|
|
|
return reserved_ids_info;
|
|
|
|
}
|
|
|
|
|
SASI code removal, error handling update, bug fixes, code cleanup (#806)
Summary ov most important changes triggered by the SASI code removal:
- Removed the SASI controller code
- New controller management. There is a new controller base class AbstractController and a class ControllerManager managing the controller lifecycle. The lifecycle management was removed from rasci.cpp and is covered by unit tests.
- New device management. The DeviceFactory manages the device lifecycle instead of rascsi.cpp. The new code is covered by unit tests.
- The lifecycle managment uses C++ collections with variable size instead of arrays with hard-coded sizes.
- The ScsiController method contains most of what was previously contained in scsidev_ctrl.cpp plus the code from sasidev_ctrl.cpp that was relevant for SCSI.
- scsi_command_util contains helper methods used for identical SCSI command implementations of more than one device
- Devices know their controllers, so that the controller instance does not need to be passed to each SCSI command. This change helps to decouple the devices from the controller. The phase_handler interface is also part of this decoupling.
- Use scsi_command_exception for propagating SCSI command execution errors, This resolves issues with the previous error handling, which was based on return values and often on magic numbers.
- Removed legacy SCSI error codes, all errors are now encoded by sense_key::, asc:: and status::.
- Fixed various warnings reported with -Wextra, -Weffc++ and -Wpedantic.
- Use constructor member initialization lists (recommended for ISO C++)
- Consistently use new/delete instead of malloc/free (recommended for ISO C++), resulting in better type safety and error handling
- Replaced variable sized arrays on the stack (violates ISO C++ and can cause a stack overflow)
- Replaced NULL by nullptr (recommended for C++), resulting in better type safety
- Use more const member functions in order to avoid side effects
- The format device page can now also be changed for hard disk drives (Fujitsu M2624S supports this, for instance), not just for MOs.
- Better encapsulation, updated access specifiers in many places
- Removed unused methods and method arguments
- Fixed a number of TODOs
- Added/updated unit tests for a lot of non-legacy classes
- Makefile support for creating HTML coverage reports with lcov/genhtml
2022-09-03 14:53:53 +00:00
|
|
|
void RascsiResponse::GetDevices(PbServerInfo& server_info)
|
2021-09-24 06:48:48 +00:00
|
|
|
{
|
SASI code removal, error handling update, bug fixes, code cleanup (#806)
Summary ov most important changes triggered by the SASI code removal:
- Removed the SASI controller code
- New controller management. There is a new controller base class AbstractController and a class ControllerManager managing the controller lifecycle. The lifecycle management was removed from rasci.cpp and is covered by unit tests.
- New device management. The DeviceFactory manages the device lifecycle instead of rascsi.cpp. The new code is covered by unit tests.
- The lifecycle managment uses C++ collections with variable size instead of arrays with hard-coded sizes.
- The ScsiController method contains most of what was previously contained in scsidev_ctrl.cpp plus the code from sasidev_ctrl.cpp that was relevant for SCSI.
- scsi_command_util contains helper methods used for identical SCSI command implementations of more than one device
- Devices know their controllers, so that the controller instance does not need to be passed to each SCSI command. This change helps to decouple the devices from the controller. The phase_handler interface is also part of this decoupling.
- Use scsi_command_exception for propagating SCSI command execution errors, This resolves issues with the previous error handling, which was based on return values and often on magic numbers.
- Removed legacy SCSI error codes, all errors are now encoded by sense_key::, asc:: and status::.
- Fixed various warnings reported with -Wextra, -Weffc++ and -Wpedantic.
- Use constructor member initialization lists (recommended for ISO C++)
- Consistently use new/delete instead of malloc/free (recommended for ISO C++), resulting in better type safety and error handling
- Replaced variable sized arrays on the stack (violates ISO C++ and can cause a stack overflow)
- Replaced NULL by nullptr (recommended for C++), resulting in better type safety
- Use more const member functions in order to avoid side effects
- The format device page can now also be changed for hard disk drives (Fujitsu M2624S supports this, for instance), not just for MOs.
- Better encapsulation, updated access specifiers in many places
- Removed unused methods and method arguments
- Fixed a number of TODOs
- Added/updated unit tests for a lot of non-legacy classes
- Makefile support for creating HTML coverage reports with lcov/genhtml
2022-09-03 14:53:53 +00:00
|
|
|
for (const Device *device : device_factory->GetAllDevices()) {
|
|
|
|
PbDevice *pb_device = server_info.mutable_devices_info()->add_devices();
|
|
|
|
GetDevice(device, pb_device);
|
2021-09-24 06:48:48 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
SASI code removal, error handling update, bug fixes, code cleanup (#806)
Summary ov most important changes triggered by the SASI code removal:
- Removed the SASI controller code
- New controller management. There is a new controller base class AbstractController and a class ControllerManager managing the controller lifecycle. The lifecycle management was removed from rasci.cpp and is covered by unit tests.
- New device management. The DeviceFactory manages the device lifecycle instead of rascsi.cpp. The new code is covered by unit tests.
- The lifecycle managment uses C++ collections with variable size instead of arrays with hard-coded sizes.
- The ScsiController method contains most of what was previously contained in scsidev_ctrl.cpp plus the code from sasidev_ctrl.cpp that was relevant for SCSI.
- scsi_command_util contains helper methods used for identical SCSI command implementations of more than one device
- Devices know their controllers, so that the controller instance does not need to be passed to each SCSI command. This change helps to decouple the devices from the controller. The phase_handler interface is also part of this decoupling.
- Use scsi_command_exception for propagating SCSI command execution errors, This resolves issues with the previous error handling, which was based on return values and often on magic numbers.
- Removed legacy SCSI error codes, all errors are now encoded by sense_key::, asc:: and status::.
- Fixed various warnings reported with -Wextra, -Weffc++ and -Wpedantic.
- Use constructor member initialization lists (recommended for ISO C++)
- Consistently use new/delete instead of malloc/free (recommended for ISO C++), resulting in better type safety and error handling
- Replaced variable sized arrays on the stack (violates ISO C++ and can cause a stack overflow)
- Replaced NULL by nullptr (recommended for C++), resulting in better type safety
- Use more const member functions in order to avoid side effects
- The format device page can now also be changed for hard disk drives (Fujitsu M2624S supports this, for instance), not just for MOs.
- Better encapsulation, updated access specifiers in many places
- Removed unused methods and method arguments
- Fixed a number of TODOs
- Added/updated unit tests for a lot of non-legacy classes
- Makefile support for creating HTML coverage reports with lcov/genhtml
2022-09-03 14:53:53 +00:00
|
|
|
void RascsiResponse::GetDevicesInfo(PbResult& result, const PbCommand& command)
|
2021-09-24 06:48:48 +00:00
|
|
|
{
|
|
|
|
set<id_set> id_sets;
|
|
|
|
if (!command.devices_size()) {
|
SASI code removal, error handling update, bug fixes, code cleanup (#806)
Summary ov most important changes triggered by the SASI code removal:
- Removed the SASI controller code
- New controller management. There is a new controller base class AbstractController and a class ControllerManager managing the controller lifecycle. The lifecycle management was removed from rasci.cpp and is covered by unit tests.
- New device management. The DeviceFactory manages the device lifecycle instead of rascsi.cpp. The new code is covered by unit tests.
- The lifecycle managment uses C++ collections with variable size instead of arrays with hard-coded sizes.
- The ScsiController method contains most of what was previously contained in scsidev_ctrl.cpp plus the code from sasidev_ctrl.cpp that was relevant for SCSI.
- scsi_command_util contains helper methods used for identical SCSI command implementations of more than one device
- Devices know their controllers, so that the controller instance does not need to be passed to each SCSI command. This change helps to decouple the devices from the controller. The phase_handler interface is also part of this decoupling.
- Use scsi_command_exception for propagating SCSI command execution errors, This resolves issues with the previous error handling, which was based on return values and often on magic numbers.
- Removed legacy SCSI error codes, all errors are now encoded by sense_key::, asc:: and status::.
- Fixed various warnings reported with -Wextra, -Weffc++ and -Wpedantic.
- Use constructor member initialization lists (recommended for ISO C++)
- Consistently use new/delete instead of malloc/free (recommended for ISO C++), resulting in better type safety and error handling
- Replaced variable sized arrays on the stack (violates ISO C++ and can cause a stack overflow)
- Replaced NULL by nullptr (recommended for C++), resulting in better type safety
- Use more const member functions in order to avoid side effects
- The format device page can now also be changed for hard disk drives (Fujitsu M2624S supports this, for instance), not just for MOs.
- Better encapsulation, updated access specifiers in many places
- Removed unused methods and method arguments
- Fixed a number of TODOs
- Added/updated unit tests for a lot of non-legacy classes
- Makefile support for creating HTML coverage reports with lcov/genhtml
2022-09-03 14:53:53 +00:00
|
|
|
for (const Device *device : device_factory->GetAllDevices()) {
|
|
|
|
id_sets.insert(make_pair(device->GetId(), device->GetLun()));
|
2021-09-24 06:48:48 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
for (const auto& device : command.devices()) {
|
SASI code removal, error handling update, bug fixes, code cleanup (#806)
Summary ov most important changes triggered by the SASI code removal:
- Removed the SASI controller code
- New controller management. There is a new controller base class AbstractController and a class ControllerManager managing the controller lifecycle. The lifecycle management was removed from rasci.cpp and is covered by unit tests.
- New device management. The DeviceFactory manages the device lifecycle instead of rascsi.cpp. The new code is covered by unit tests.
- The lifecycle managment uses C++ collections with variable size instead of arrays with hard-coded sizes.
- The ScsiController method contains most of what was previously contained in scsidev_ctrl.cpp plus the code from sasidev_ctrl.cpp that was relevant for SCSI.
- scsi_command_util contains helper methods used for identical SCSI command implementations of more than one device
- Devices know their controllers, so that the controller instance does not need to be passed to each SCSI command. This change helps to decouple the devices from the controller. The phase_handler interface is also part of this decoupling.
- Use scsi_command_exception for propagating SCSI command execution errors, This resolves issues with the previous error handling, which was based on return values and often on magic numbers.
- Removed legacy SCSI error codes, all errors are now encoded by sense_key::, asc:: and status::.
- Fixed various warnings reported with -Wextra, -Weffc++ and -Wpedantic.
- Use constructor member initialization lists (recommended for ISO C++)
- Consistently use new/delete instead of malloc/free (recommended for ISO C++), resulting in better type safety and error handling
- Replaced variable sized arrays on the stack (violates ISO C++ and can cause a stack overflow)
- Replaced NULL by nullptr (recommended for C++), resulting in better type safety
- Use more const member functions in order to avoid side effects
- The format device page can now also be changed for hard disk drives (Fujitsu M2624S supports this, for instance), not just for MOs.
- Better encapsulation, updated access specifiers in many places
- Removed unused methods and method arguments
- Fixed a number of TODOs
- Added/updated unit tests for a lot of non-legacy classes
- Makefile support for creating HTML coverage reports with lcov/genhtml
2022-09-03 14:53:53 +00:00
|
|
|
if (device_factory->GetDeviceByIdAndLun(device.id(), device.unit())) {
|
2021-09-24 06:48:48 +00:00
|
|
|
id_sets.insert(make_pair(device.id(), device.unit()));
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
result.set_status(false);
|
Initial remote interface error message localization support (#555)
* Extracted code
* Initial support for (optional) recursive image file listings
* Manpage update
* Added support for image file filter
* Updated filtering
* Made image scan depth configurable
* Code cleanup, initial support for creating nested file
* Check for existing folder
* Cleanup
* Cleanup
* Copy/rename/create
* Updated delete operation
* Delete empty folders
* Code cleanup
* Fixed typo
* Check image file nesting level
* Updated error handling
* Fixed warning
* Renaming
* Error message update
* Interface comment updates
* Added depth to image info
* Fixed scan depth check
* Squashed commit of the following:
commit 94786aec54c589c080dcec3b18b388a17de64ae3
Author: Uwe Seimet <48174652+uweseimet@users.noreply.github.com>
Date: Tue Dec 21 08:43:21 2021 +0100
Added support for operation meta data, code cleanup (#534)
* Added messages
* Comment update
* Interface update
* Support for localized descriptions
* Sort operations
* Completed meta data
* rasctl -s returns operation meta data
* Manpage update
* Type update
* Comment update
* Description updates
* Comment update
* Added convenience method
* Added convenience method
* Code cleanup
* Comment update
* Display permitted values
* For completeness sake added permitted boolean values
* Added support for default value
* Removed redundant message field
* Description update
* Description upddate
* Squashed commit of the following:
commit 8171c6ea27982c736c30c0db69a7fdde07ee10ce
Author: Uwe Seimet <Uwe.Seimet@seimet.de>
Date: Sat Dec 18 12:43:14 2021 +0100
The data type is implicit
commit fb01dc9d82e8ff7456b05a0cb9d08069adacc64c
Author: Uwe Seimet <Uwe.Seimet@seimet.de>
Date: Sat Dec 18 12:37:49 2021 +0100
Renaming
commit 057dbf1aca7be3f7e76a5ff89a582a276b6d3089
Author: Uwe Seimet <Uwe.Seimet@seimet.de>
Date: Sat Dec 18 12:29:54 2021 +0100
Comment update
commit 5f699aad2f835f72accdb445d1e59f094aeb108f
Author: Uwe Seimet <Uwe.Seimet@seimet.de>
Date: Sat Dec 18 12:24:25 2021 +0100
Signature update
commit cbcf8b09f9d1ba7b82f816269bcfe91d9f00eb6e
Author: Uwe Seimet <Uwe.Seimet@seimet.de>
Date: Sat Dec 18 12:22:45 2021 +0100
Signature update
commit a8148ef802ca809e5a305d2caa69856c9033d932
Author: Uwe Seimet <Uwe.Seimet@seimet.de>
Date: Sat Dec 18 12:16:46 2021 +0100
Comment update
commit ce685a92d4827e131d80d10ecd56e2b3baf173f8
Author: Uwe Seimet <Uwe.Seimet@seimet.de>
Date: Sat Dec 18 12:15:46 2021 +0100
Use map instead of list
commit 454c0438f3589904f5dbe5253963dd200ea416dd
Author: Uwe Seimet <Uwe.Seimet@seimet.de>
Date: Sat Dec 18 10:47:36 2021 +0100
Updated size check
commit b386dbba4b0262f4f6f02aecb2a1daeffd41f4a2
Author: Uwe Seimet <Uwe.Seimet@seimet.de>
Date: Sat Dec 18 01:23:43 2021 +0100
Initial improvements
* Default value update
* Comment update
* Comment update
* Map operations by ordinal
* Added safeguard against unknown operations
* Added cast
* Data type update
* Sort map by operation name
* Renaming
* Code cleanup
* Comment update
* Renaming
* Comment update
* Description updates
* Fixed typo
* Added operation
* Logging update
* Interface comment update
* Fixed typo
* Aded operation parameters
* Updated handling of mandatory parameters
* Updated assertion handling
* Added missing condition
* Removed duplicate cod3
* Code cleanup
* Logging update
* Removed duplicate code
* Code cleanup
* Squashed commit of the following:
commit 4ae273ccbd3e2b9bfda6426a9c1f71844b48b2d9
Author: akuker <34318535+akuker@users.noreply.github.com>
Date: Sun Dec 19 22:30:22 2021 -0600
Loopback tester pcb (#545)
commit 46c5c1966f36841419df7c3337990ac941de3c85
Author: akuker <34318535+akuker@users.noreply.github.com>
Date: Sun Dec 19 22:29:59 2021 -0600
RaSCSI Zero version 1.0 (#546)
commit d09df31d67de3470ef4ed3fc74b40da1b181c0bb
Author: Daniel Markstedt <markstedt@gmail.com>
Date: Sun Dec 19 20:25:23 2021 -0800
Remove redundant code from OLED script (#547)
commit d8828da6909a8b87e54f21aada20758607a2a67a
Author: akuker <34318535+akuker@users.noreply.github.com>
Date: Sun Dec 19 21:02:50 2021 -0600
Added list of sponsors
commit bcd7e8396d945f5a051e01080354d3ac7ba63704
Author: Daniel Markstedt <markstedt@gmail.com>
Date: Sun Dec 19 15:51:45 2021 -0800
Second attempt at properly creating the manpage dir (#542)
commit c887edfc8c9956aa9dcac3764abe6cef16ffb596
Author: Daniel Markstedt <markstedt@gmail.com>
Date: Sun Dec 19 15:50:03 2021 -0800
Remove special elevated privileges for the Web Interface (#536)
* Use the pi_shutdown method to restart the rascsi service
* Use the pi_shutdown method to restart the rascsi service
* Remove modifications to sudoers no longer needed
* Introduce sleeps attempting to connect to socket; reduce overall number of retries
* Remove systemd helped methods and the functionality that depends on it
* Attempts to speed up splash code
* Remove unneccessary verbosity
* Attempt to optimize service definition
commit 801aebfb96e968a3bef1575b0301db4bd7625a35
Author: Daniel Markstedt <markstedt@gmail.com>
Date: Sun Dec 19 15:47:22 2021 -0800
More readable message when downloading a file (#531)
commit 29cf58288f228fe235b7d6fe2f0dd5852cf9a411
Author: Daniel Markstedt <markstedt@gmail.com>
Date: Sun Dec 19 15:47:03 2021 -0800
Add a warning notice when ejecting removable media (#526)
commit 7efa89523905a6985bea261f1dcf078ec76faf27
Author: Daniel Markstedt <markstedt@gmail.com>
Date: Sun Dec 19 15:46:22 2021 -0800
Unzip zipfiles before storing to iso (#525)
* Unzip zipfiles before storing to iso
* Add helptext
* Skip unzip for MacZip format
* Should not be an fstring
commit 39bc485671fa5163c6fc87860eed53b2966637ca
Author: Daniel Markstedt <markstedt@gmail.com>
Date: Sun Dec 19 15:28:22 2021 -0800
Add pip3 to global dependencies; remove duplicates from monitor_rascs… (#523)
* Add pip3 to global dependencies; remove duplicates from monitor_rascsi dependencies
* Cleanup
* Shutdown functionality is only available if started with root permissions
* Only restrict shutdown parameters, not everything if not root
* Updated operation count check
commit 693ade296756ee8e480e75663a873e4a35829034
Author: Daniel Markstedt <markstedt@gmail.com>
Date: Mon Dec 20 12:04:23 2021 -0800
Bump Macproxy version to 21.12.2 (#550)
commit 958fb95908f2d8cdf13c02d827f2d14f6011170e
Author: akuker <34318535+akuker@users.noreply.github.com>
Date: Mon Dec 20 12:50:14 2021 -0600
Adjust bus settle delay to match SCSI standard (#544)
* Move the GCC v10 compiler flags into makefile instead of easyinstall.sh
* #504 - Update the bus settle time to match the SCSI standard
Co-authored-by: RaSCSI User <user@rascsi.com>
commit 200bc7251f2395842df7c7be9b90f2b44940a9d4
Author: Daniel Markstedt <markstedt@gmail.com>
Date: Mon Dec 20 06:20:22 2021 -0800
More helpful error message when IP does not resolve for OLED screen (#541)
* More helpful error message
* Remove confusing fallback IP
* Tweak message
commit 4ae273ccbd3e2b9bfda6426a9c1f71844b48b2d9
Author: akuker <34318535+akuker@users.noreply.github.com>
Date: Sun Dec 19 22:30:22 2021 -0600
Loopback tester pcb (#545)
commit 46c5c1966f36841419df7c3337990ac941de3c85
Author: akuker <34318535+akuker@users.noreply.github.com>
Date: Sun Dec 19 22:29:59 2021 -0600
RaSCSI Zero version 1.0 (#546)
commit d09df31d67de3470ef4ed3fc74b40da1b181c0bb
Author: Daniel Markstedt <markstedt@gmail.com>
Date: Sun Dec 19 20:25:23 2021 -0800
Remove redundant code from OLED script (#547)
commit d8828da6909a8b87e54f21aada20758607a2a67a
Author: akuker <34318535+akuker@users.noreply.github.com>
Date: Sun Dec 19 21:02:50 2021 -0600
Added list of sponsors
commit bcd7e8396d945f5a051e01080354d3ac7ba63704
Author: Daniel Markstedt <markstedt@gmail.com>
Date: Sun Dec 19 15:51:45 2021 -0800
Second attempt at properly creating the manpage dir (#542)
commit c887edfc8c9956aa9dcac3764abe6cef16ffb596
Author: Daniel Markstedt <markstedt@gmail.com>
Date: Sun Dec 19 15:50:03 2021 -0800
Remove special elevated privileges for the Web Interface (#536)
* Use the pi_shutdown method to restart the rascsi service
* Use the pi_shutdown method to restart the rascsi service
* Remove modifications to sudoers no longer needed
* Introduce sleeps attempting to connect to socket; reduce overall number of retries
* Remove systemd helped methods and the functionality that depends on it
* Attempts to speed up splash code
* Remove unneccessary verbosity
* Attempt to optimize service definition
commit 801aebfb96e968a3bef1575b0301db4bd7625a35
Author: Daniel Markstedt <markstedt@gmail.com>
Date: Sun Dec 19 15:47:22 2021 -0800
More readable message when downloading a file (#531)
commit 29cf58288f228fe235b7d6fe2f0dd5852cf9a411
Author: Daniel Markstedt <markstedt@gmail.com>
Date: Sun Dec 19 15:47:03 2021 -0800
Add a warning notice when ejecting removable media (#526)
commit 7efa89523905a6985bea261f1dcf078ec76faf27
Author: Daniel Markstedt <markstedt@gmail.com>
Date: Sun Dec 19 15:46:22 2021 -0800
Unzip zipfiles before storing to iso (#525)
* Unzip zipfiles before storing to iso
* Add helptext
* Skip unzip for MacZip format
* Should not be an fstring
commit 39bc485671fa5163c6fc87860eed53b2966637ca
Author: Daniel Markstedt <markstedt@gmail.com>
Date: Sun Dec 19 15:28:22 2021 -0800
Add pip3 to global dependencies; remove duplicates from monitor_rascs… (#523)
* Add pip3 to global dependencies; remove duplicates from monitor_rascsi dependencies
* Cleanup
commit ec31198d83f5ff7400d74d7acf08c832998deb91
Author: Uwe Seimet <48174652+uweseimet@users.noreply.github.com>
Date: Sun Dec 19 11:54:10 2021 +0100
Optional authentication by access token (#529)
* Added authentication by access token
* No authentication is required for getting the rascsi version
* Added comment
* Interface description update
* Manpage update
* Added error code
* Enum value update (backwards compatible)
* Error code update
* Error code update
* Added CHECK_AUTHENTICATION
* Comment update
* VERSION_INFO also requires authentication
* rasctl: Made token an optional parameter for -P
* Fixed interface comment
commit e32211ef737d1a435ee8ca1d7244b3609202b28f
Author: Uwe Seimet <48174652+uweseimet@users.noreply.github.com>
Date: Sun Dec 19 11:49:17 2021 +0100
Recursive image file scan and image file filter (#532)
* Extracted code
* Initial support for (optional) recursive image file listings
* Manpage update
* Added support for image file filter
* Updated filtering
* Made image scan depth configurable
* Squashed commit of the following:
commit 192b14169f7b3f433d23d4306b60ae1aff7e3c96
Author: Uwe Seimet <Uwe.Seimet@seimet.de>
Date: Tue Dec 21 09:19:05 2021 +0100
Meta data update
commit b319d726018a8fef01b76c19cd600aa70891568f
Author: Uwe Seimet <Uwe.Seimet@seimet.de>
Date: Tue Dec 21 09:02:39 2021 +0100
Squashed commit of the following:
commit 0ab4918c5a59f978f48cf26f431ff809e9ddae33
Author: Uwe Seimet <Uwe.Seimet@seimet.de>
Date: Mon Dec 20 16:52:03 2021 +0100
Scan depth determines availability of folder filter
commit 16590cc4e4420a348fae610d749082c9d718be0a
Author: Uwe Seimet <Uwe.Seimet@seimet.de>
Date: Mon Dec 20 15:47:08 2021 +0100
Updated operation count check
commit 82f7c99755f535a7a5c30fe66e377705c5306faa
Author: Uwe Seimet <Uwe.Seimet@seimet.de>
Date: Mon Dec 20 15:41:32 2021 +0100
Only restrict shutdown parameters, not everything if not root
commit 9bd50d37b11c48b2130e4f6e66d12def88ddc38f
Author: Uwe Seimet <Uwe.Seimet@seimet.de>
Date: Mon Dec 20 15:28:08 2021 +0100
Shutdown functionality is only available if started with root permissions
commit aa5f3331abf4c178e8ce738c14fd584bd41d1b94
Author: Uwe Seimet <Uwe.Seimet@seimet.de>
Date: Mon Dec 20 10:26:14 2021 +0100
Squashed commit of the following:
commit 4ae273ccbd3e2b9bfda6426a9c1f71844b48b2d9
Author: akuker <34318535+akuker@users.noreply.github.com>
Date: Sun Dec 19 22:30:22 2021 -0600
Loopback tester pcb (#545)
commit 46c5c1966f36841419df7c3337990ac941de3c85
Author: akuker <34318535+akuker@users.noreply.github.com>
Date: Sun Dec 19 22:29:59 2021 -0600
RaSCSI Zero version 1.0 (#546)
commit d09df31d67de3470ef4ed3fc74b40da1b181c0bb
Author: Daniel Markstedt <markstedt@gmail.com>
Date: Sun Dec 19 20:25:23 2021 -0800
Remove redundant code from OLED script (#547)
commit d8828da6909a8b87e54f21aada20758607a2a67a
Author: akuker <34318535+akuker@users.noreply.github.com>
Date: Sun Dec 19 21:02:50 2021 -0600
Added list of sponsors
commit bcd7e8396d945f5a051e01080354d3ac7ba63704
Author: Daniel Markstedt <markstedt@gmail.com>
Date: Sun Dec 19 15:51:45 2021 -0800
Second attempt at properly creating the manpage dir (#542)
commit c887edfc8c9956aa9dcac3764abe6cef16ffb596
Author: Daniel Markstedt <markstedt@gmail.com>
Date: Sun Dec 19 15:50:03 2021 -0800
Remove special elevated privileges for the Web Interface (#536)
* Use the pi_shutdown method to restart the rascsi service
* Use the pi_shutdown method to restart the rascsi service
* Remove modifications to sudoers no longer needed
* Introduce sleeps attempting to connect to socket; reduce overall number of retries
* Remove systemd helped methods and the functionality that depends on it
* Attempts to speed up splash code
* Remove unneccessary verbosity
* Attempt to optimize service definition
commit 801aebfb96e968a3bef1575b0301db4bd7625a35
Author: Daniel Markstedt <markstedt@gmail.com>
Date: Sun Dec 19 15:47:22 2021 -0800
More readable message when downloading a file (#531)
commit 29cf58288f228fe235b7d6fe2f0dd5852cf9a411
Author: Daniel Markstedt <markstedt@gmail.com>
Date: Sun Dec 19 15:47:03 2021 -0800
Add a warning notice when ejecting removable media (#526)
commit 7efa89523905a6985bea261f1dcf078ec76faf27
Author: Daniel Markstedt <markstedt@gmail.com>
Date: Sun Dec 19 15:46:22 2021 -0800
Unzip zipfiles before storing to iso (#525)
* Unzip zipfiles before storing to iso
* Add helptext
* Skip unzip for MacZip format
* Should not be an fstring
commit 39bc485671fa5163c6fc87860eed53b2966637ca
Author: Daniel Markstedt <markstedt@gmail.com>
Date: Sun Dec 19 15:28:22 2021 -0800
Add pip3 to global dependencies; remove duplicates from monitor_rascs… (#523)
* Add pip3 to global dependencies; remove duplicates from monitor_rascsi dependencies
* Cleanup
commit a1f4b28f92bd9f7cdba18c04f61d3721fc7c720f
Author: Uwe Seimet <Uwe.Seimet@seimet.de>
Date: Sun Dec 19 21:50:15 2021 +0100
Comment update
commit 9cbc06caf5f00ce85e0f7f984c871ed614e2e483
Author: Uwe Seimet <Uwe.Seimet@seimet.de>
Date: Sun Dec 19 21:49:09 2021 +0100
Option update
commit c4aa39c2285c5c72e2ea28ad749f5670dd10e89f
Author: Uwe Seimet <Uwe.Seimet@seimet.de>
Date: Sun Dec 19 21:46:37 2021 +0100
Merged feature_folder_filter
commit ea386fc74cbd64f19a7805d16c19f08f278739f3
Author: Uwe Seimet <Uwe.Seimet@seimet.de>
Date: Sun Dec 19 19:05:07 2021 +0100
Code cleanup
commit 17c320113564fa2f0f2f11c1fe2e8b0048be2f48
Author: Uwe Seimet <Uwe.Seimet@seimet.de>
Date: Sun Dec 19 19:03:13 2021 +0100
Removed duplicate code
commit 296f816dd3bc632efd11cda4b181362fb89e14e3
Author: Uwe Seimet <Uwe.Seimet@seimet.de>
Date: Sun Dec 19 18:40:49 2021 +0100
Logging update
commit 73e0df85576932f2a99df5c8472a6922a6ed9e95
Author: Uwe Seimet <Uwe.Seimet@seimet.de>
Date: Sun Dec 19 17:28:02 2021 +0100
Code cleanup
commit 405dbb034cf7775e069e5db9751f007587318558
Author: Uwe Seimet <Uwe.Seimet@seimet.de>
Date: Sun Dec 19 17:13:40 2021 +0100
Removed duplicate cod3
commit c7c168a9420ea43f3b3dd003a5d75a928e8f66c5
Author: Uwe Seimet <Uwe.Seimet@seimet.de>
Date: Sun Dec 19 17:08:02 2021 +0100
Added missing condition
commit 6af5394f7879854b12d341c4b6c7ac1b06302494
Author: Uwe Seimet <Uwe.Seimet@seimet.de>
Date: Sun Dec 19 16:16:12 2021 +0100
Updated assertion handling
commit 632fe1acd81fa27c096ff6190b5082717e3b3f02
Author: Uwe Seimet <Uwe.Seimet@seimet.de>
Date: Sun Dec 19 14:33:01 2021 +0100
Updated handling of mandatory parameters
commit a4e0d506c6a48641b827bc88590d0b416ae2513c
Author: Uwe Seimet <Uwe.Seimet@seimet.de>
Date: Sun Dec 19 14:14:09 2021 +0100
Aded operation parameters
commit fc783e6a437fb3a4f3f0f60235717c9f7621408d
Author: Uwe Seimet <Uwe.Seimet@seimet.de>
Date: Sun Dec 19 12:38:35 2021 +0100
Fixed typo
commit cb1b498459b700556700575946264a3a8eabfb96
Author: Uwe Seimet <Uwe.Seimet@seimet.de>
Date: Sun Dec 19 12:37:13 2021 +0100
Interface comment update
commit e2d4347ce6daa0a1c3de606aead8cadeb203881a
Author: Uwe Seimet <Uwe.Seimet@seimet.de>
Date: Sun Dec 19 12:35:50 2021 +0100
Logging update
commit cecb72df3ea9c1b27071d4b62017449709206ec9
Author: Uwe Seimet <Uwe.Seimet@seimet.de>
Date: Sun Dec 19 12:13:44 2021 +0100
Added operation
commit bbf153ccd673004e371f5fb1f325ad2f3d95a97d
Author: Uwe Seimet <Uwe.Seimet@seimet.de>
Date: Sun Dec 19 12:09:49 2021 +0100
Fixed typo
commit 29fa5c2f962c6e775b82940682121c6d41ffb5fc
Merge: 28a36fa ec31198
Author: Uwe Seimet <Uwe.Seimet@seimet.de>
Date: Sun Dec 19 12:07:34 2021 +0100
Merge branch 'develop' into feature_meta_data
commit 28a36fa308d926fce4885f16a019604060ff1107
Author: Uwe Seimet <Uwe.Seimet@seimet.de>
Date: Sat Dec 18 15:51:02 2021 +0100
Description updates
commit 73df9f136ca572ba160918acf85ecf06d0bd7d2c
Author: Uwe Seimet <Uwe.Seimet@seimet.de>
Date: Sat Dec 18 14:37:58 2021 +0100
Comment update
commit c3ea3c8b372284468c8302b82067454d17cd061c
Author: Uwe Seimet <Uwe.Seimet@seimet.de>
Date: Sat Dec 18 14:34:48 2021 +0100
Renaming
commit 6a84edd0fbab8253e47c024ae65529c1c5b246ef
Author: Uwe Seimet <Uwe.Seimet@seimet.de>
Date: Sat Dec 18 14:22:31 2021 +0100
Comment update
commit c0d6e66afe819bbcfeb5c606ba7cbc257b39dfec
Author: Uwe Seimet <Uwe.Seimet@seimet.de>
Date: Sat Dec 18 14:20:20 2021 +0100
Code cleanup
commit cc81b588eb6bea2014a9abec6d67cdbe849e76e0
Author: Uwe Seimet <Uwe.Seimet@seimet.de>
Date: Sat Dec 18 14:18:31 2021 +0100
Renaming
commit c88628e12ad252420f29ebed0541a1c3c4ede231
Author: Uwe Seimet <Uwe.Seimet@seimet.de>
Date: Sat Dec 18 14:17:50 2021 +0100
Sort map by operation name
commit b64001e8a4a6941a8f671420e61121f471f90010
Author: Uwe Seimet <Uwe.Seimet@seimet.de>
Date: Sat Dec 18 13:39:44 2021 +0100
Data type update
commit 8177cd306222c8674fbcf889be634565bbd2337f
Author: Uwe Seimet <Uwe.Seimet@seimet.de>
Date: Sat Dec 18 13:37:23 2021 +0100
Added cast
commit b8599ba0886363d91399bba6fa4607fd7b3fd445
Author: Uwe Seimet <Uwe.Seimet@seimet.de>
Date: Sat Dec 18 13:35:40 2021 +0100
Added safeguard against unknown operations
commit 6b14ba651135db152fe57c6fe469227f71f00969
Author: Uwe Seimet <Uwe.Seimet@seimet.de>
Date: Sat Dec 18 13:26:21 2021 +0100
Map operations by ordinal
commit ee101f2c6b8dbf527f77c8e005f2ded9ebdf4436
Author: Uwe Seimet <Uwe.Seimet@seimet.de>
Date: Sat Dec 18 13:14:31 2021 +0100
Comment update
commit 67c958ed371f35870e9acf91bd90446c46783264
Author: Uwe Seimet <Uwe.Seimet@seimet.de>
Date: Sat Dec 18 13:13:06 2021 +0100
Comment update
commit d1a9c4074576e75300d990a346abd2357a536138
Author: Uwe Seimet <Uwe.Seimet@seimet.de>
Date: Sat Dec 18 13:04:58 2021 +0100
Default value update
commit d9dbbc0bb3347832619c3e600405d4b3cf25d0da
Author: Uwe Seimet <Uwe.Seimet@seimet.de>
Date: Sat Dec 18 12:47:36 2021 +0100
Squashed commit of the following:
commit 8171c6ea27982c736c30c0db69a7fdde07ee10ce
Author: Uwe Seimet <Uwe.Seimet@seimet.de>
Date: Sat Dec 18 12:43:14 2021 +0100
The data type is implicit
commit fb01dc9d82e8ff7456b05a0cb9d08069adacc64c
Author: Uwe Seimet <Uwe.Seimet@seimet.de>
Date: Sat Dec 18 12:37:49 2021 +0100
Renaming
commit 057dbf1aca7be3f7e76a5ff89a582a276b6d3089
Author: Uwe Seimet <Uwe.Seimet@seimet.de>
Date: Sat Dec 18 12:29:54 2021 +0100
Comment update
commit 5f699aad2f835f72accdb445d1e59f094aeb108f
Author: Uwe Seimet <Uwe.Seimet@seimet.de>
Date: Sat Dec 18 12:24:25 2021 +0100
Signature update
commit cbcf8b09f9d1ba7b82f816269bcfe91d9f00eb6e
Author: Uwe Seimet <Uwe.Seimet@seimet.de>
Date: Sat Dec 18 12:22:45 2021 +0100
Signature update
commit a8148ef802ca809e5a305d2caa69856c9033d932
Author: Uwe Seimet <Uwe.Seimet@seimet.de>
Date: Sat Dec 18 12:16:46 2021 +0100
Comment update
commit ce685a92d4827e131d80d10ecd56e2b3baf173f8
Author: Uwe Seimet <Uwe.Seimet@seimet.de>
Date: Sat Dec 18 12:15:46 2021 +0100
Use map instead of list
commit 454c0438f3589904f5dbe5253963dd200ea416dd
Author: Uwe Seimet <Uwe.Seimet@seimet.de>
Date: Sat Dec 18 10:47:36 2021 +0100
Updated size check
commit b386dbba4b0262f4f6f02aecb2a1daeffd41f4a2
Author: Uwe Seimet <Uwe.Seimet@seimet.de>
Date: Sat Dec 18 01:23:43 2021 +0100
Initial improvements
commit 5d6862b6b0fcd2f6b59779c7d47fdc99af748a28
Author: Uwe Seimet <Uwe.Seimet@seimet.de>
Date: Fri Dec 17 23:22:27 2021 +0100
Description upddate
commit 69263b3e4b8c9443d6593db49b4bbb995d884382
Author: Uwe Seimet <Uwe.Seimet@seimet.de>
Date: Fri Dec 17 23:21:38 2021 +0100
Description update
commit 49e14f7078ae419766326758a923bde69af8eb9d
Author: Uwe Seimet <Uwe.Seimet@seimet.de>
Date: Fri Dec 17 23:19:08 2021 +0100
Removed redundant message field
commit ff468aafa85a25c3f48a8bfdc1eb0a24b3fca63f
Author: Uwe Seimet <Uwe.Seimet@seimet.de>
Date: Fri Dec 17 23:09:18 2021 +0100
Added support for default value
commit 2da717a0a037653d9b182439271165eb1859ed8d
Author: Uwe Seimet <Uwe.Seimet@seimet.de>
Date: Fri Dec 17 22:57:59 2021 +0100
For completeness sake added permitted boolean values
commit 5d894d2e4f39b75e1672c430d5421df397d5ed10
Author: Uwe Seimet <Uwe.Seimet@seimet.de>
Date: Fri Dec 17 22:53:07 2021 +0100
Display permitted values
commit acc7d3cba5e667f690f76d68e6d8aa373faf1db5
Author: Uwe Seimet <Uwe.Seimet@seimet.de>
Date: Fri Dec 17 20:37:03 2021 +0100
Comment update
commit f846242aea70c723241eee7ed99943f54694e1e7
Author: Uwe Seimet <Uwe.Seimet@seimet.de>
Date: Fri Dec 17 20:35:07 2021 +0100
Code cleanup
commit 5a9592f102a93bbe0acde908e9f0f7b9bebf1e41
Author: Uwe Seimet <Uwe.Seimet@seimet.de>
Date: Fri Dec 17 20:24:33 2021 +0100
Added convenience method
commit 9d258d9979afe452ed58ef58c24b73b4ef2bfb05
Author: Uwe Seimet <Uwe.Seimet@seimet.de>
Date: Fri Dec 17 20:05:53 2021 +0100
Added convenience method
commit 6c4103989baee3fcffeeb040b501cc6aae9b4b0d
Author: Uwe Seimet <Uwe.Seimet@seimet.de>
Date: Fri Dec 17 19:45:20 2021 +0100
Comment update
commit 7d543451f059cd12bed4a8a49bdfd1e8c0a7d706
Author: Uwe Seimet <Uwe.Seimet@seimet.de>
Date: Fri Dec 17 19:27:50 2021 +0100
Description updates
commit f4b0e50e663e5736f4ed1ec176dea2b10cf9d006
Author: Uwe Seimet <Uwe.Seimet@seimet.de>
Date: Fri Dec 17 19:23:29 2021 +0100
Comment update
commit 35dd3f6282cf3253b04e1eea1d25c5ad65247690
Author: Uwe Seimet <Uwe.Seimet@seimet.de>
Date: Fri Dec 17 19:21:12 2021 +0100
Type update
commit 7a94c0e6e0641e1aaa62f892a3f70975165cbca0
Author: Uwe Seimet <Uwe.Seimet@seimet.de>
Date: Fri Dec 17 19:17:05 2021 +0100
Manpage update
commit 4179110bac97268860a1b5bed32d18b0b944bda6
Author: Uwe Seimet <Uwe.Seimet@seimet.de>
Date: Fri Dec 17 19:13:42 2021 +0100
rasctl -s returns operation meta data
commit eed83bb005b1f03df7f10c451a7cf2d872d42b0a
Author: Uwe Seimet <Uwe.Seimet@seimet.de>
Date: Fri Dec 17 19:05:29 2021 +0100
Completed meta data
commit 4a7528d9d320bbac4f77d29f293cb99da56561bb
Author: Uwe Seimet <Uwe.Seimet@seimet.de>
Date: Fri Dec 17 18:39:18 2021 +0100
Sort operations
commit d3af9a142ceb2dcfb3f0dc310925eff3bf62071b
Author: Uwe Seimet <Uwe.Seimet@seimet.de>
Date: Fri Dec 17 18:29:22 2021 +0100
Support for localized descriptions
commit b4ff4f52ab03683f76b6f23b057063ca67f1b9dd
Author: Uwe Seimet <Uwe.Seimet@seimet.de>
Date: Fri Dec 17 17:53:11 2021 +0100
Interface update
commit e8d9e97fe5c3e64fab57ccff8cfdb60fe24a849d
Author: Uwe Seimet <Uwe.Seimet@seimet.de>
Date: Fri Dec 17 16:59:49 2021 +0100
Comment update
commit 22753b15471166a34748113026b1e46b4c3b6888
Author: Uwe Seimet <Uwe.Seimet@seimet.de>
Date: Fri Dec 17 16:57:39 2021 +0100
Added messages
commit b3a92924588513787e89908310d450306064e946
Merge: ea3bb83 94786ae
Author: Uwe Seimet <Uwe.Seimet@seimet.de>
Date: Tue Dec 21 08:57:56 2021 +0100
Merge branch 'develop' into feature_folder_filter
commit ea3bb8363a2a9a734abd2fc330066c52d5638b6d
Author: Uwe Seimet <Uwe.Seimet@seimet.de>
Date: Tue Dec 21 08:53:30 2021 +0100
Squashed commit of the following:
commit 94786aec54c589c080dcec3b18b388a17de64ae3
Author: Uwe Seimet <48174652+uweseimet@users.noreply.github.com>
Date: Tue Dec 21 08:43:21 2021 +0100
Added support for operation meta data, code cleanup (#534)
* Added messages
* Comment update
* Interface update
* Support for localized descriptions
* Sort operations
* Completed meta data
* rasctl -s returns operation meta data
* Manpage update
* Type update
* Comment update
* Description updates
* Comment update
* Added convenience method
* Added convenience method
* Code cleanup
* Comment update
* Display permitted values
* For completeness sake added permitted boolean values
* Added support for default value
* Removed redundant message field
* Description update
* Description upddate
* Squashed commit of the following:
commit 8171c6ea27982c736c30c0db69a7fdde07ee10ce
Author: Uwe Seimet <Uwe.Seimet@seimet.de>
Date: Sat Dec 18 12:43:14 2021 +0100
The data type is implicit
commit fb01dc9d82e8ff7456b05a0cb9d08069adacc64c
Author: Uwe Seimet <Uwe.Seimet@seimet.de>
Date: Sat Dec 18 12:37:49 2021 +0100
Renaming
commit 057dbf1aca7be3f7e76a5ff89a582a276b6d3089
Author: Uwe Seimet <Uwe.Seimet@seimet.de>
Date: Sat Dec 18 12:29:54 2021 +0100
Comment update
commit 5f699aad2f835f72accdb445d1e59f094aeb108f
Author: Uwe Seimet <Uwe.Seimet@seimet.de>
Date: Sat Dec 18 12:24:25 2021 +0100
Signature update
commit cbcf8b09f9d1ba7b82f816269bcfe91d9f00eb6e
Author: Uwe Seimet <Uwe.Seimet@seimet.de>
Date: Sat Dec 18 12:22:45 2021 +0100
Signature update
commit a8148ef802ca809e5a305d2caa69856c9033d932
Author: Uwe Seimet <Uwe.Seimet@seimet.de>
Date: Sat Dec 18 12:16:46 2021 +0100
Comment update
commit ce685a92d4827e131d80d10ecd56e2b3baf173f8
Author: Uwe Seimet <Uwe.Seimet@seimet.de>
Date: Sat Dec 18 12:15:46 2021 +0100
Use map instead of list
commit 454c0438f3589904f5dbe5253963dd200ea416dd
Author: Uwe Seimet <Uwe.Seimet@seimet.de>
Date: Sat Dec 18 10:47:36 2021 +0100
Updated size check
commit b386dbba4b0262f4f6f02aecb2a1daeffd41f4a2
Author: Uwe Seimet <Uwe.Seimet@seimet.de>
Date: Sat Dec 18 01:23:43 2021 +0100
Initial improvements
* Default value update
* Comment update
* Comment update
* Map operations by ordinal
* Added safeguard against unknown operations
* Added cast
* Data type update
* Sort map by operation name
* Renaming
* Code cleanup
* Comment update
* Renaming
* Comment update
* Description updates
* Fixed typo
* Added operation
* Logging update
* Interface comment update
* Fixed typo
* Aded operation parameters
* Updated handling of mandatory parameters
* Updated assertion handling
* Added missing condition
* Removed duplicate cod3
* Code cleanup
* Logging update
* Removed duplicate code
* Code cleanup
* Squashed commit of the following:
commit 4ae273ccbd3e2b9bfda6426a9c1f71844b48b2d9
Author: akuker <34318535+akuker@users.noreply.github.com>
Date: Sun Dec 19 22:30:22 2021 -0600
Loopback tester pcb (#545)
commit 46c5c1966f36841419df7c3337990ac941de3c85
Author: akuker <34318535+akuker@users.noreply.github.com>
Date: Sun Dec 19 22:29:59 2021 -0600
RaSCSI Zero version 1.0 (#546)
commit d09df31d67de3470ef4ed3fc74b40da1b181c0bb
Author: Daniel Markstedt <markstedt@gmail.com>
Date: Sun Dec 19 20:25:23 2021 -0800
Remove redundant code from OLED script (#547)
commit d8828da6909a8b87e54f21aada20758607a2a67a
Author: akuker <34318535+akuker@users.noreply.github.com>
Date: Sun Dec 19 21:02:50 2021 -0600
Added list of sponsors
commit bcd7e8396d945f5a051e01080354d3ac7ba63704
Author: Daniel Markstedt <markstedt@gmail.com>
Date: Sun Dec 19 15:51:45 2021 -0800
Second attempt at properly creating the manpage dir (#542)
commit c887edfc8c9956aa9dcac3764abe6cef16ffb596
Author: Daniel Markstedt <markstedt@gmail.com>
Date: Sun Dec 19 15:50:03 2021 -0800
Remove special elevated privileges for the Web Interface (#536)
* Use the pi_shutdown method to restart the rascsi service
* Use the pi_shutdown method to restart the rascsi service
* Remove modifications to sudoers no longer needed
* Introduce sleeps attempting to connect to socket; reduce overall number of retries
* Remove systemd helped methods and the functionality that depends on it
* Attempts to speed up splash code
* Remove unneccessary verbosity
* Attempt to optimize service definition
commit 801aebfb96e968a3bef1575b0301db4bd7625a35
Author: Daniel Markstedt <markstedt@gmail.com>
Date: Sun Dec 19 15:47:22 2021 -0800
More readable message when downloading a file (#531)
commit 29cf58288f228fe235b7d6fe2f0dd5852cf9a411
Author: Daniel Markstedt <markstedt@gmail.com>
Date: Sun Dec 19 15:47:03 2021 -0800
Add a warning notice when ejecting removable media (#526)
commit 7efa89523905a6985bea261f1dcf078ec76faf27
Author: Daniel Markstedt <markstedt@gmail.com>
Date: Sun Dec 19 15:46:22 2021 -0800
Unzip zipfiles before storing to iso (#525)
* Unzip zipfiles before storing to iso
* Add helptext
* Skip unzip for MacZip format
* Should not be an fstring
commit 39bc485671fa5163c6fc87860eed53b2966637ca
Author: Daniel Markstedt <markstedt@gmail.com>
Date: Sun Dec 19 15:28:22 2021 -0800
Add pip3 to global dependencies; remove duplicates from monitor_rascs… (#523)
* Add pip3 to global dependencies; remove duplicates from monitor_rascsi dependencies
* Cleanup
* Shutdown functionality is only available if started with root permissions
* Only restrict shutdown parameters, not everything if not root
* Updated operation count check
commit 693ade296756ee8e480e75663a873e4a35829034
Author: Daniel Markstedt <markstedt@gmail.com>
Date: Mon Dec 20 12:04:23 2021 -0800
Bump Macproxy version to 21.12.2 (#550)
commit 958fb95908f2d8cdf13c02d827f2d14f6011170e
Author: akuker <34318535+akuker@users.noreply.github.com>
Date: Mon Dec 20 12:50:14 2021 -0600
Adjust bus settle delay to match SCSI standard (#544)
* Move the GCC v10 compiler flags into makefile instead of easyinstall.sh
* #504 - Update the bus settle time to match the SCSI standard
Co-authored-by: RaSCSI User <user@rascsi.com>
commit 200bc7251f2395842df7c7be9b90f2b44940a9d4
Author: Daniel Markstedt <markstedt@gmail.com>
Date: Mon Dec 20 06:20:22 2021 -0800
More helpful error message when IP does not resolve for OLED screen (#541)
* More helpful error message
* Remove confusing fallback IP
* Tweak message
commit 4ae273ccbd3e2b9bfda6426a9c1f71844b48b2d9
Author: akuker <34318535+akuker@users.noreply.github.com>
Date: Sun Dec 19 22:30:22 2021 -0600
Loopback tester pcb (#545)
commit 46c5c1966f36841419df7c3337990ac941de3c85
Author: akuker <34318535+akuker@users.noreply.github.com>
Date: Sun Dec 19 22:29:59 2021 -0600
RaSCSI Zero version 1.0 (#546)
commit d09df31d67de3470ef4ed3fc74b40da1b181c0bb
Author: Daniel Markstedt <markstedt@gmail.com>
Date: Sun Dec 19 20:25:23 2021 -0800
Remove redundant code from OLED script (#547)
commit d8828da6909a8b87e54f21aada20758607a2a67a
Author: akuker <34318535+akuker@users.noreply.github.com>
Date: Sun Dec 19 21:02:50 2021 -0600
Added list of sponsors
commit bcd7e8396d945f5a051e01080354d3ac7ba63704
Author: Daniel Markstedt <markstedt@gmail.com>
Date: Sun Dec 19 15:51:45 2021 -0800
Second attempt at properly creating the manpage dir (#542)
commit c887edfc8c9956aa9dcac3764abe6cef16ffb596
Author: Daniel Markstedt <markstedt@gmail.com>
Date: Sun Dec 19 15:50:03 2021 -0800
Remove special elevated privileges for the Web Interface (#536)
* Use the pi_shutdown method to restart the rascsi service
* Use the pi_shutdown method to restart the rascsi service
* Remove modifications to sudoers no longer needed
* Introduce sleeps attempting to connect to socket; reduce overall number of retries
* Remove systemd helped methods and the functionality that depends on it
* Attempts to speed up splash code
* Remove unneccessary verbosity
* Attempt to optimize service definition
commit 801aebfb96e968a3bef1575b0301db4bd7625a35
Author: Daniel Markstedt <markstedt@gmail.com>
Date: Sun Dec 19 15:47:22 2021 -0800
More readable message when downloading a file (#531)
commit 29cf58288f228fe235b7d6fe2f0dd5852cf9a411
Author: Daniel Markstedt <markstedt@gmail.com>
Date: Sun Dec 19 15:47:03 2021 -0800
Add a warning notice when ejecting removable media (#526)
commit 7efa89523905a6985bea261f1dcf078ec76faf27
Author: Daniel Markstedt <markstedt@gmail.com>
Date: Sun Dec 19 15:46:22 2021 -0800
Unzip zipfiles before storing to iso (#525)
* Unzip zipfiles before storing to iso
* Add helptext
* Skip unzip for MacZip format
* Should not be an fstring
commit 39bc485671fa5163c6fc87860eed53b2966637ca
Author: Daniel Markstedt <markstedt@gmail.com>
Date: Sun Dec 19 15:28:22 2021 -0800
Add pip3 to global dependencies; remove duplicates from monitor_rascs… (#523)
* Add pip3 to global dependencies; remove duplicates from monitor_rascsi dependencies
* Cleanup
commit 94786aec54c589c080dcec3b18b388a17de64ae3
Author: Uwe Seimet <48174652+uweseimet@users.noreply.github.com>
Date: Tue Dec 21 08:43:21 2021 +0100
Added support for operation meta data, code cleanup (#534)
* Added messages
* Comment update
* Interface update
* Support for localized descriptions
* Sort operations
* Completed meta data
* rasctl -s returns operation meta data
* Manpage update
* Type update
* Comment update
* Description updates
* Comment update
* Added convenience method
* Added convenience method
* Code cleanup
* Comment update
* Display permitted values
* For completeness sake added permitted boolean values
* Added support for default value
* Removed redundant message field
* Description update
* Description upddate
* Squashed commit of the following:
commit 8171c6ea27982c736c30c0db69a7fdde07ee10ce
Author: Uwe Seimet <Uwe.Seimet@seimet.de>
Date: Sat Dec 18 12:43:14 2021 +0100
The data type is implicit
commit fb01dc9d82e8ff7456b05a0cb9d08069adacc64c
Author: Uwe Seimet <Uwe.Seimet@seimet.de>
Date: Sat Dec 18 12:37:49 2021 +0100
Renaming
commit 057dbf1aca7be3f7e76a5ff89a582a276b6d3089
Author: Uwe Seimet <Uwe.Seimet@seimet.de>
Date: Sat Dec 18 12:29:54 2021 +0100
Comment update
commit 5f699aad2f835f72accdb445d1e59f094aeb108f
Author: Uwe Seimet <Uwe.Seimet@seimet.de>
Date: Sat Dec 18 12:24:25 2021 +0100
Signature update
commit cbcf8b09f9d1ba7b82f816269bcfe91d9f00eb6e
Author: Uwe Seimet <Uwe.Seimet@seimet.de>
Date: Sat Dec 18 12:22:45 2021 +0100
Signature update
commit a8148ef802ca809e5a305d2caa69856c9033d932
Author: Uwe Seimet <Uwe.Seimet@seimet.de>
Date: Sat Dec 18 12:16:46 2021 +0100
Comment update
commit ce685a92d4827e131d80d10ecd56e2b3baf173f8
Author: Uwe Seimet <Uwe.Seimet@seimet.de>
Date: Sat Dec 18 12:15:46 2021 +0100
Use map instead of list
commit 454c0438f3589904f5dbe5253963dd200ea416dd
Author: Uwe Seimet <Uwe.Seimet@seimet.de>
Date: Sat Dec 18 10:47:36 2021 +0100
Updated size check
commit b386dbba4b0262f4f6f02aecb2a1daeffd41f4a2
Author: Uwe Seimet <Uwe.Seimet@seimet.de>
Date: Sat Dec 18 01:23:43 2021 +0100
Initial improvements
* Default value update
* Comment update
* Comment update
* Map operations by ordinal
* Added safeguard against unknown operations
* Added cast
* Data type update
* Sort map by operation name
* Renaming
* Code cleanup
* Comment update
* Renaming
* Comment update
* Description updates
* Fixed typo
* Added operation
* Logging update
* Interface comment update
* Fixed typo
* Aded operation parameters
* Updated handling of mandatory parameters
* Updated assertion handling
* Added missing condition
* Removed duplicate cod3
* Code cleanup
* Logging update
* Removed duplicate code
* Code cleanup
* Squashed commit of the following:
commit 4ae273ccbd3e2b9bfda6426a9c1f71844b48b2d9
Author: akuker <34318535+akuker@users.noreply.github.com>
Date: Sun Dec 19 22:30:22 2021 -0600
Loopback tester pcb (#545)
commit 46c5c1966f36841419df7c3337990ac941de3c85
Author: akuker <34318535+akuker@users.noreply.github.com>
Date: Sun Dec 19 22:29:59 2021 -0600
RaSCSI Zero version 1.0 (#546)
commit d09df31d67de3470ef4ed3fc74b40da1b181c0bb
Author: Daniel Markstedt <markstedt@gmail.com>
Date: Sun Dec 19 20:25:23 2021 -0800
Remove redundant code from OLED script (#547)
commit d8828da6909a8b87e54f21aada20758607a2a67a
Author: akuker <34318535+akuker@users.noreply.github.com>
Date: Sun Dec 19 21:02:50 2021 -0600
Added list of sponsors
commit bcd7e8396d945f5a051e01080354d3ac7ba63704
Author: Daniel Markstedt <markstedt@gmail.com>
Date: Sun Dec 19 15:51:45 2021 -0800
Second attempt at properly creating the manpage dir (#542)
commit c887edfc8c9956aa9dcac3764abe6cef16ffb596
Author: Daniel Markstedt <markstedt@gmail.com>
Date: Sun Dec 19 15:50:03 2021 -0800
Remove special elevated privileges for the Web Interface (#536)
* Use the pi_shutdown method to restart the rascsi service
* Use the pi_shutdown method to restart the rascsi service
* Remove modifications to sudoers no longer needed
* Introduce sleeps attempting to connect to socket; reduce overall number of retries
* Remove systemd helped methods and the functionality that depends on it
* Attempts to speed up splash code
* Remove unneccessary verbosity
* Attempt to optimize service definition
commit 801aebfb96e968a3bef1575b0301db4bd7625a35
Author: Daniel Markstedt <markstedt@gmail.com>
Date: Sun Dec 19 15:47:22 2021 -0800
More readable message when downloading a file (#531)
commit 29cf58288f228fe235b7d6fe2f0dd5852cf9a411
Author: Daniel Markstedt <markstedt@gmail.com>
Date: Sun Dec 19 15:47:03 2021 -0800
Add a warning notice when ejecting removable media (#526)
commit 7efa89523905a6985bea261f1dcf078ec76faf27
Author: Daniel Markstedt <markstedt@gmail.com>
Date: Sun Dec 19 15:46:22 2021 -0800
Unzip zipfiles before storing to iso (#525)
* Unzip zipfiles before storing to iso
* Add helptext
* Skip unzip for MacZip format
* Should not be an fstring
commit 39bc485671fa5163c6fc87860eed53b2966637ca
Author: Daniel Markstedt <markstedt@gmail.com>
Date: Sun Dec 19 15:28:22 2021 -0800
Add pip3 to global dependencies; remove duplicates from monitor_rascs… (#523)
* Add pip3 to global dependencies; remove duplicates from monitor_rascsi dependencies
* Cleanup
* Shutdown functionality is only available if started with root permissions
* Only restrict shutdown parameters, not everything if not root
* Updated operation count check
commit 693ade296756ee8e480e75663a873e4a35829034
Author: Daniel Markstedt <markstedt@gmail.com>
Date: Mon Dec 20 12:04:23 2021 -0800
Bump Macproxy version to 21.12.2 (#550)
commit 958fb95908f2d8cdf13c02d827f2d14f6011170e
Author: akuker <34318535+akuker@users.noreply.github.com>
Date: Mon Dec 20 12:50:14 2021 -0600
Adjust bus settle delay to match SCSI standard (#544)
* Move the GCC v10 compiler flags into makefile instead of easyinstall.sh
* #504 - Update the bus settle time to match the SCSI standard
Co-authored-by: RaSCSI User <user@rascsi.com>
commit 200bc7251f2395842df7c7be9b90f2b44940a9d4
Author: Daniel Markstedt <markstedt@gmail.com>
Date: Mon Dec 20 06:20:22 2021 -0800
More helpful error message when IP does not resolve for OLED screen (#541)
* More helpful error message
* Remove confusing fallback IP
* Tweak message
commit f59eeb842ef5a71020bd1ae642eb9fe250963ea5
Author: Uwe Seimet <Uwe.Seimet@seimet.de>
Date: Mon Dec 20 10:25:28 2021 +0100
Squashed commit of the following:
commit 4ae273ccbd3e2b9bfda6426a9c1f71844b48b2d9
Author: akuker <34318535+akuker@users.noreply.github.com>
Date: Sun Dec 19 22:30:22 2021 -0600
Loopback tester pcb (#545)
commit 46c5c1966f36841419df7c3337990ac941de3c85
Author: akuker <34318535+akuker@users.noreply.github.com>
Date: Sun Dec 19 22:29:59 2021 -0600
RaSCSI Zero version 1.0 (#546)
commit d09df31d67de3470ef4ed3fc74b40da1b181c0bb
Author: Daniel Markstedt <markstedt@gmail.com>
Date: Sun Dec 19 20:25:23 2021 -0800
Remove redundant code from OLED script (#547)
commit d8828da6909a8b87e54f21aada20758607a2a67a
Author: akuker <34318535+akuker@users.noreply.github.com>
Date: Sun Dec 19 21:02:50 2021 -0600
Added list of sponsors
commit bcd7e8396d945f5a051e01080354d3ac7ba63704
Author: Daniel Markstedt <markstedt@gmail.com>
Date: Sun Dec 19 15:51:45 2021 -0800
Second attempt at properly creating the manpage dir (#542)
commit c887edfc8c9956aa9dcac3764abe6cef16ffb596
Author: Daniel Markstedt <markstedt@gmail.com>
Date: Sun Dec 19 15:50:03 2021 -0800
Remove special elevated privileges for the Web Interface (#536)
* Use the pi_shutdown method to restart the rascsi service
* Use the pi_shutdown method to restart the rascsi service
* Remove modifications to sudoers no longer needed
* Introduce sleeps attempting to connect to socket; reduce overall number of retries
* Remove systemd helped methods and the functionality that depends on it
* Attempts to speed up splash code
* Remove unneccessary verbosity
* Attempt to optimize service definition
commit 801aebfb96e968a3bef1575b0301db4bd7625a35
Author: Daniel Markstedt <markstedt@gmail.com>
Date: Sun Dec 19 15:47:22 2021 -0800
More readable message when downloading a file (#531)
commit 29cf58288f228fe235b7d6fe2f0dd5852cf9a411
Author: Daniel Markstedt <markstedt@gmail.com>
Date: Sun Dec 19 15:47:03 2021 -0800
Add a warning notice when ejecting removable media (#526)
commit 7efa89523905a6985bea261f1dcf078ec76faf27
Author: Daniel Markstedt <markstedt@gmail.com>
Date: Sun Dec 19 15:46:22 2021 -0800
Unzip zipfiles before storing to iso (#525)
* Unzip zipfiles before storing to iso
* Add helptext
* Skip unzip for MacZip format
* Should not be an fstring
commit 39bc485671fa5163c6fc87860eed53b2966637ca
Author: Daniel Markstedt <markstedt@gmail.com>
Date: Sun Dec 19 15:28:22 2021 -0800
Add pip3 to global dependencies; remove duplicates from monitor_rascs… (#523)
* Add pip3 to global dependencies; remove duplicates from monitor_rascsi dependencies
* Cleanup
commit 4ae273ccbd3e2b9bfda6426a9c1f71844b48b2d9
Author: akuker <34318535+akuker@users.noreply.github.com>
Date: Sun Dec 19 22:30:22 2021 -0600
Loopback tester pcb (#545)
commit 46c5c1966f36841419df7c3337990ac941de3c85
Author: akuker <34318535+akuker@users.noreply.github.com>
Date: Sun Dec 19 22:29:59 2021 -0600
RaSCSI Zero version 1.0 (#546)
commit d09df31d67de3470ef4ed3fc74b40da1b181c0bb
Author: Daniel Markstedt <markstedt@gmail.com>
Date: Sun Dec 19 20:25:23 2021 -0800
Remove redundant code from OLED script (#547)
commit d8828da6909a8b87e54f21aada20758607a2a67a
Author: akuker <34318535+akuker@users.noreply.github.com>
Date: Sun Dec 19 21:02:50 2021 -0600
Added list of sponsors
commit bcd7e8396d945f5a051e01080354d3ac7ba63704
Author: Daniel Markstedt <markstedt@gmail.com>
Date: Sun Dec 19 15:51:45 2021 -0800
Second attempt at properly creating the manpage dir (#542)
commit c887edfc8c9956aa9dcac3764abe6cef16ffb596
Author: Daniel Markstedt <markstedt@gmail.com>
Date: Sun Dec 19 15:50:03 2021 -0800
Remove special elevated privileges for the Web Interface (#536)
* Use the pi_shutdown method to restart the rascsi service
* Use the pi_shutdown method to restart the rascsi service
* Remove modifications to sudoers no longer needed
* Introduce sleeps attempting to connect to socket; reduce overall number of retries
* Remove systemd helped methods and the functionality that depends on it
* Attempts to speed up splash code
* Remove unneccessary verbosity
* Attempt to optimize service definition
commit 801aebfb96e968a3bef1575b0301db4bd7625a35
Author: Daniel Markstedt <markstedt@gmail.com>
Date: Sun Dec 19 15:47:22 2021 -0800
More readable message when downloading a file (#531)
commit 29cf58288f228fe235b7d6fe2f0dd5852cf9a411
Author: Daniel Markstedt <markstedt@gmail.com>
Date: Sun Dec 19 15:47:03 2021 -0800
Add a warning notice when ejecting removable media (#526)
commit 7efa89523905a6985bea261f1dcf078ec76faf27
Author: Daniel Markstedt <markstedt@gmail.com>
Date: Sun Dec 19 15:46:22 2021 -0800
Unzip zipfiles before storing to iso (#525)
* Unzip zipfiles before storing to iso
* Add helptext
* Skip unzip for MacZip format
* Should not be an fstring
commit 39bc485671fa5163c6fc87860eed53b2966637ca
Author: Daniel Markstedt <markstedt@gmail.com>
Date: Sun Dec 19 15:28:22 2021 -0800
Add pip3 to global dependencies; remove duplicates from monitor_rascs… (#523)
* Add pip3 to global dependencies; remove duplicates from monitor_rascsi dependencies
* Cleanup
commit 670356e0e29b4c03ddb5f02f0621043881766ad6
Author: Uwe Seimet <Uwe.Seimet@seimet.de>
Date: Sun Dec 19 20:26:03 2021 +0100
Code cleanup
commit 4fc8f679758aef6d29a73850a7b8d15541b496e6
Author: Uwe Seimet <Uwe.Seimet@seimet.de>
Date: Sun Dec 19 20:21:10 2021 +0100
Manpage update
commit 29603a327a8bdbe2241200ccef7df8a36415fcf4
Author: Uwe Seimet <Uwe.Seimet@seimet.de>
Date: Sun Dec 19 19:49:56 2021 +0100
Added optional folder name filter
commit ec31198d83f5ff7400d74d7acf08c832998deb91
Author: Uwe Seimet <48174652+uweseimet@users.noreply.github.com>
Date: Sun Dec 19 11:54:10 2021 +0100
Optional authentication by access token (#529)
* Added authentication by access token
* No authentication is required for getting the rascsi version
* Added comment
* Interface description update
* Manpage update
* Added error code
* Enum value update (backwards compatible)
* Error code update
* Error code update
* Added CHECK_AUTHENTICATION
* Comment update
* VERSION_INFO also requires authentication
* rasctl: Made token an optional parameter for -P
* Fixed interface comment
commit e32211ef737d1a435ee8ca1d7244b3609202b28f
Author: Uwe Seimet <48174652+uweseimet@users.noreply.github.com>
Date: Sun Dec 19 11:49:17 2021 +0100
Recursive image file scan and image file filter (#532)
* Extracted code
* Initial support for (optional) recursive image file listings
* Manpage update
* Added support for image file filter
* Updated filtering
* Made image scan depth configurable
* Interface update
* Squashed commit of the following:
commit 6c98228726c26936c81b498d2837c7af7731be3c
Author: Uwe Seimet <Uwe.Seimet@seimet.de>
Date: Mon Dec 20 22:45:24 2021 +0100
Fixed scan depth check
commit 87e8b3be6a74d873efd982b027049ee0aebe6184
Author: Uwe Seimet <Uwe.Seimet@seimet.de>
Date: Mon Dec 20 20:46:36 2021 +0100
Added depth to image info
commit 7c08fa6569e4c91132ff50f02a1c5d79935d78a3
Author: Uwe Seimet <Uwe.Seimet@seimet.de>
Date: Mon Dec 20 20:38:53 2021 +0100
Interface comment updates
commit 29d919d30eeb0322ad0178e4a14190089c505062
Author: Uwe Seimet <Uwe.Seimet@seimet.de>
Date: Mon Dec 20 20:06:02 2021 +0100
Error message update
commit fe76a1a577929f4f5b0517f859b58a611811b520
Author: Uwe Seimet <Uwe.Seimet@seimet.de>
Date: Mon Dec 20 19:56:36 2021 +0100
Renaming
commit 412b53ddf185406cf8ce7b6eab54e2271a110aaf
Merge: bf9d906 958fb95
Author: Uwe Seimet <Uwe.Seimet@seimet.de>
Date: Mon Dec 20 19:50:53 2021 +0100
Merge branch 'develop' into feature_file_operations_with_folders
commit 958fb95908f2d8cdf13c02d827f2d14f6011170e
Author: akuker <34318535+akuker@users.noreply.github.com>
Date: Mon Dec 20 12:50:14 2021 -0600
Adjust bus settle delay to match SCSI standard (#544)
* Move the GCC v10 compiler flags into makefile instead of easyinstall.sh
* #504 - Update the bus settle time to match the SCSI standard
Co-authored-by: RaSCSI User <user@rascsi.com>
commit bf9d90664cfd6c5e85ec16a607dcf1de9067db7e
Author: Uwe Seimet <Uwe.Seimet@seimet.de>
Date: Mon Dec 20 19:42:36 2021 +0100
Fixed warning
commit 362a90f3dc2960bf9b272073bb1904a8879e4486
Author: Uwe Seimet <Uwe.Seimet@seimet.de>
Date: Mon Dec 20 19:37:32 2021 +0100
Updated error handling
commit 66c380bd974fd5ada7b254d702d123ac775e768f
Author: Uwe Seimet <Uwe.Seimet@seimet.de>
Date: Mon Dec 20 19:33:01 2021 +0100
Check image file nesting level
commit c98a2b906929b6e10cc7a43d038c5a0671e8c6a1
Author: Uwe Seimet <Uwe.Seimet@seimet.de>
Date: Mon Dec 20 19:06:18 2021 +0100
Fixed typo
commit a36dabc00216aa22ec2953d17b2293ad0c7bf7fc
Author: Uwe Seimet <Uwe.Seimet@seimet.de>
Date: Mon Dec 20 19:03:18 2021 +0100
Code cleanup
commit 46fc22f72aabe0e51d2519a540707369eb91d8fc
Author: Uwe Seimet <Uwe.Seimet@seimet.de>
Date: Mon Dec 20 18:58:27 2021 +0100
Delete empty folders
commit d55bf3e06f7d2ab9f64ffe89d8e383f9b4dcca5e
Author: Uwe Seimet <Uwe.Seimet@seimet.de>
Date: Mon Dec 20 18:33:59 2021 +0100
Updated delete operation
commit 5afce5f50fd113c3d925f8b81e42247d8bd1b789
Author: Uwe Seimet <Uwe.Seimet@seimet.de>
Date: Mon Dec 20 18:31:55 2021 +0100
Copy/rename/create
commit b969d3990a5b21905e21ecb572e3ab1f19f52ccb
Author: Uwe Seimet <Uwe.Seimet@seimet.de>
Date: Mon Dec 20 15:21:17 2021 +0100
Cleanup
commit 200bc7251f2395842df7c7be9b90f2b44940a9d4
Author: Daniel Markstedt <markstedt@gmail.com>
Date: Mon Dec 20 06:20:22 2021 -0800
More helpful error message when IP does not resolve for OLED screen (#541)
* More helpful error message
* Remove confusing fallback IP
* Tweak message
commit 6a6efa6bdd9974b4e0bb00b603914f824375a997
Author: Uwe Seimet <Uwe.Seimet@seimet.de>
Date: Mon Dec 20 12:58:29 2021 +0100
Cleanup
commit 72ab669158d55f8008f4c80a882356cad42a4c53
Author: Uwe Seimet <Uwe.Seimet@seimet.de>
Date: Mon Dec 20 12:58:03 2021 +0100
Check for existing folder
commit 6a9ac4d0dafbc4e385a7553d03e2dce21f88b7ae
Author: Uwe Seimet <Uwe.Seimet@seimet.de>
Date: Mon Dec 20 12:52:26 2021 +0100
Code cleanup, initial support for creating nested file
commit 4ae273ccbd3e2b9bfda6426a9c1f71844b48b2d9
Author: akuker <34318535+akuker@users.noreply.github.com>
Date: Sun Dec 19 22:30:22 2021 -0600
Loopback tester pcb (#545)
commit 46c5c1966f36841419df7c3337990ac941de3c85
Author: akuker <34318535+akuker@users.noreply.github.com>
Date: Sun Dec 19 22:29:59 2021 -0600
RaSCSI Zero version 1.0 (#546)
commit d09df31d67de3470ef4ed3fc74b40da1b181c0bb
Author: Daniel Markstedt <markstedt@gmail.com>
Date: Sun Dec 19 20:25:23 2021 -0800
Remove redundant code from OLED script (#547)
commit d8828da6909a8b87e54f21aada20758607a2a67a
Author: akuker <34318535+akuker@users.noreply.github.com>
Date: Sun Dec 19 21:02:50 2021 -0600
Added list of sponsors
commit bcd7e8396d945f5a051e01080354d3ac7ba63704
Author: Daniel Markstedt <markstedt@gmail.com>
Date: Sun Dec 19 15:51:45 2021 -0800
Second attempt at properly creating the manpage dir (#542)
commit c887edfc8c9956aa9dcac3764abe6cef16ffb596
Author: Daniel Markstedt <markstedt@gmail.com>
Date: Sun Dec 19 15:50:03 2021 -0800
Remove special elevated privileges for the Web Interface (#536)
* Use the pi_shutdown method to restart the rascsi service
* Use the pi_shutdown method to restart the rascsi service
* Remove modifications to sudoers no longer needed
* Introduce sleeps attempting to connect to socket; reduce overall number of retries
* Remove systemd helped methods and the functionality that depends on it
* Attempts to speed up splash code
* Remove unneccessary verbosity
* Attempt to optimize service definition
commit 801aebfb96e968a3bef1575b0301db4bd7625a35
Author: Daniel Markstedt <markstedt@gmail.com>
Date: Sun Dec 19 15:47:22 2021 -0800
More readable message when downloading a file (#531)
commit 29cf58288f228fe235b7d6fe2f0dd5852cf9a411
Author: Daniel Markstedt <markstedt@gmail.com>
Date: Sun Dec 19 15:47:03 2021 -0800
Add a warning notice when ejecting removable media (#526)
commit 7efa89523905a6985bea261f1dcf078ec76faf27
Author: Daniel Markstedt <markstedt@gmail.com>
Date: Sun Dec 19 15:46:22 2021 -0800
Unzip zipfiles before storing to iso (#525)
* Unzip zipfiles before storing to iso
* Add helptext
* Skip unzip for MacZip format
* Should not be an fstring
commit 39bc485671fa5163c6fc87860eed53b2966637ca
Author: Daniel Markstedt <markstedt@gmail.com>
Date: Sun Dec 19 15:28:22 2021 -0800
Add pip3 to global dependencies; remove duplicates from monitor_rascs… (#523)
* Add pip3 to global dependencies; remove duplicates from monitor_rascsi dependencies
* Cleanup
commit ec31198d83f5ff7400d74d7acf08c832998deb91
Author: Uwe Seimet <48174652+uweseimet@users.noreply.github.com>
Date: Sun Dec 19 11:54:10 2021 +0100
Optional authentication by access token (#529)
* Added authentication by access token
* No authentication is required for getting the rascsi version
* Added comment
* Interface description update
* Manpage update
* Added error code
* Enum value update (backwards compatible)
* Error code update
* Error code update
* Added CHECK_AUTHENTICATION
* Comment update
* VERSION_INFO also requires authentication
* rasctl: Made token an optional parameter for -P
* Fixed interface comment
commit e32211ef737d1a435ee8ca1d7244b3609202b28f
Author: Uwe Seimet <48174652+uweseimet@users.noreply.github.com>
Date: Sun Dec 19 11:49:17 2021 +0100
Recursive image file scan and image file filter (#532)
* Extracted code
* Initial support for (optional) recursive image file listings
* Manpage update
* Added support for image file filter
* Updated filtering
* Made image scan depth configurable
* Code cleanup
* Resolved merged issues
* Fixed merge issue
* Comment update
* Message update
* Fixed typo
* Logging update
* Logging update
* Logging update
* Fixed merge issue
* Set pattern param for SERVER_INFO
* Added missing break
* Updated error handling
* Logging update
* Error message update
* Removed initial approach for localization in remote interface
* Added command context
* Initialize context
* Initial localization support class
* Localized authentication error
* Comment update
* Added TODO
* Merge with develop
* Only localize remote interface errors, but not log messages
* Removed TODO
* Use enum as localization key
* Added consistency checks
* Updated consitency checks
* Fixed initial entries
* Added fallback
* Locales are always treated lower case
* Support for string parameters
* Added convenience method
* Added localization support to rasctl
* Error message update
* Error handling update
* Error handling update
* Concatenate strings instead of using stream for error messages
* Error message handling update
* Error handling update
* Comment update
* Removed obsolete method
* Logging update
* Code cleanup
* Added assertions
* Code cleanup
* Updated empty string handling
* Code cleanup
* Added localized messages
* Added error messages
* Added more error messages
* Fixed typo
* Translation update
* Translation update
* Uodated default locale handling
* Updated locale handling
* Manpage update
* Removed debug code
* Added translations
* Added translations
* Add Swedish localization
* Swedish fix
* Added -z option to rascsi
* Manpage update
Co-authored-by: Daniel Markstedt <markstedt@gmail.com>
2021-12-23 07:49:04 +00:00
|
|
|
result.set_msg("No device for ID " + to_string(device.id()) + ", unit " + to_string(device.unit()));
|
2021-09-24 06:48:48 +00:00
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2022-09-07 14:38:42 +00:00
|
|
|
auto devices_info = make_unique<PbDevicesInfo>().release();
|
2021-10-06 21:25:43 +00:00
|
|
|
result.set_allocated_devices_info(devices_info);
|
2021-09-24 06:48:48 +00:00
|
|
|
|
2022-09-10 05:59:41 +00:00
|
|
|
for (const auto& [id, lun] : id_sets) {
|
|
|
|
GetDevice(device_factory->GetDeviceByIdAndLun(id, lun), devices_info->add_devices());
|
2021-09-24 06:48:48 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
result.set_status(true);
|
|
|
|
}
|
|
|
|
|
SASI code removal, error handling update, bug fixes, code cleanup (#806)
Summary ov most important changes triggered by the SASI code removal:
- Removed the SASI controller code
- New controller management. There is a new controller base class AbstractController and a class ControllerManager managing the controller lifecycle. The lifecycle management was removed from rasci.cpp and is covered by unit tests.
- New device management. The DeviceFactory manages the device lifecycle instead of rascsi.cpp. The new code is covered by unit tests.
- The lifecycle managment uses C++ collections with variable size instead of arrays with hard-coded sizes.
- The ScsiController method contains most of what was previously contained in scsidev_ctrl.cpp plus the code from sasidev_ctrl.cpp that was relevant for SCSI.
- scsi_command_util contains helper methods used for identical SCSI command implementations of more than one device
- Devices know their controllers, so that the controller instance does not need to be passed to each SCSI command. This change helps to decouple the devices from the controller. The phase_handler interface is also part of this decoupling.
- Use scsi_command_exception for propagating SCSI command execution errors, This resolves issues with the previous error handling, which was based on return values and often on magic numbers.
- Removed legacy SCSI error codes, all errors are now encoded by sense_key::, asc:: and status::.
- Fixed various warnings reported with -Wextra, -Weffc++ and -Wpedantic.
- Use constructor member initialization lists (recommended for ISO C++)
- Consistently use new/delete instead of malloc/free (recommended for ISO C++), resulting in better type safety and error handling
- Replaced variable sized arrays on the stack (violates ISO C++ and can cause a stack overflow)
- Replaced NULL by nullptr (recommended for C++), resulting in better type safety
- Use more const member functions in order to avoid side effects
- The format device page can now also be changed for hard disk drives (Fujitsu M2624S supports this, for instance), not just for MOs.
- Better encapsulation, updated access specifiers in many places
- Removed unused methods and method arguments
- Fixed a number of TODOs
- Added/updated unit tests for a lot of non-legacy classes
- Makefile support for creating HTML coverage reports with lcov/genhtml
2022-09-03 14:53:53 +00:00
|
|
|
PbDeviceTypesInfo *RascsiResponse::GetDeviceTypesInfo(PbResult& result)
|
2021-09-24 06:48:48 +00:00
|
|
|
{
|
2022-09-07 14:38:42 +00:00
|
|
|
auto device_types_info = make_unique<PbDeviceTypesInfo>().release();
|
2021-09-24 06:48:48 +00:00
|
|
|
|
|
|
|
GetAllDeviceTypeProperties(*device_types_info);
|
|
|
|
|
|
|
|
result.set_status(true);
|
|
|
|
|
|
|
|
return device_types_info;
|
|
|
|
}
|
|
|
|
|
SASI code removal, error handling update, bug fixes, code cleanup (#806)
Summary ov most important changes triggered by the SASI code removal:
- Removed the SASI controller code
- New controller management. There is a new controller base class AbstractController and a class ControllerManager managing the controller lifecycle. The lifecycle management was removed from rasci.cpp and is covered by unit tests.
- New device management. The DeviceFactory manages the device lifecycle instead of rascsi.cpp. The new code is covered by unit tests.
- The lifecycle managment uses C++ collections with variable size instead of arrays with hard-coded sizes.
- The ScsiController method contains most of what was previously contained in scsidev_ctrl.cpp plus the code from sasidev_ctrl.cpp that was relevant for SCSI.
- scsi_command_util contains helper methods used for identical SCSI command implementations of more than one device
- Devices know their controllers, so that the controller instance does not need to be passed to each SCSI command. This change helps to decouple the devices from the controller. The phase_handler interface is also part of this decoupling.
- Use scsi_command_exception for propagating SCSI command execution errors, This resolves issues with the previous error handling, which was based on return values and often on magic numbers.
- Removed legacy SCSI error codes, all errors are now encoded by sense_key::, asc:: and status::.
- Fixed various warnings reported with -Wextra, -Weffc++ and -Wpedantic.
- Use constructor member initialization lists (recommended for ISO C++)
- Consistently use new/delete instead of malloc/free (recommended for ISO C++), resulting in better type safety and error handling
- Replaced variable sized arrays on the stack (violates ISO C++ and can cause a stack overflow)
- Replaced NULL by nullptr (recommended for C++), resulting in better type safety
- Use more const member functions in order to avoid side effects
- The format device page can now also be changed for hard disk drives (Fujitsu M2624S supports this, for instance), not just for MOs.
- Better encapsulation, updated access specifiers in many places
- Removed unused methods and method arguments
- Fixed a number of TODOs
- Added/updated unit tests for a lot of non-legacy classes
- Makefile support for creating HTML coverage reports with lcov/genhtml
2022-09-03 14:53:53 +00:00
|
|
|
PbServerInfo *RascsiResponse::GetServerInfo(PbResult& result, const unordered_set<int>& reserved_ids,
|
|
|
|
const string& current_log_level, const string& folder_pattern, const string& file_pattern, int scan_depth)
|
2021-09-24 06:48:48 +00:00
|
|
|
{
|
2022-09-07 14:38:42 +00:00
|
|
|
auto server_info = make_unique<PbServerInfo>().release();
|
2021-09-24 06:48:48 +00:00
|
|
|
|
2021-10-06 21:25:43 +00:00
|
|
|
server_info->set_allocated_version_info(GetVersionInfo(result));
|
2022-09-15 21:01:10 +00:00
|
|
|
server_info->set_allocated_log_level_info(GetLogLevelInfo(result, current_log_level)); //NOSONAR The alloced memory is managed by protobuf
|
|
|
|
GetAllDeviceTypeProperties(*server_info->mutable_device_types_info()); //NOSONAR The alloced memory is managed by protobuf
|
2021-12-22 08:25:05 +00:00
|
|
|
GetAvailableImages(result, *server_info, folder_pattern, file_pattern, scan_depth);
|
2021-09-24 06:48:48 +00:00
|
|
|
server_info->set_allocated_network_interfaces_info(GetNetworkInterfacesInfo(result));
|
2022-09-15 21:01:10 +00:00
|
|
|
server_info->set_allocated_mapping_info(GetMappingInfo(result)); //NOSONAR The alloced memory is managed by protobuf
|
|
|
|
GetDevices(*server_info); //NOSONAR The alloced memory is managed by protobuf
|
2021-10-06 21:25:43 +00:00
|
|
|
server_info->set_allocated_reserved_ids_info(GetReservedIds(result, reserved_ids));
|
2022-09-15 21:01:10 +00:00
|
|
|
server_info->set_allocated_operation_info(GetOperationInfo(result, scan_depth)); //NOSONAR The alloced memory is managed by protobuf
|
2021-09-24 06:48:48 +00:00
|
|
|
|
|
|
|
result.set_status(true);
|
|
|
|
|
|
|
|
return server_info;
|
|
|
|
}
|
|
|
|
|
2021-10-17 06:51:14 +00:00
|
|
|
PbVersionInfo *RascsiResponse::GetVersionInfo(PbResult& result)
|
2021-10-06 21:25:43 +00:00
|
|
|
{
|
2022-09-07 14:38:42 +00:00
|
|
|
auto version_info = make_unique<PbVersionInfo>().release();
|
2021-10-06 21:25:43 +00:00
|
|
|
|
|
|
|
version_info->set_major_version(rascsi_major_version);
|
|
|
|
version_info->set_minor_version(rascsi_minor_version);
|
|
|
|
version_info->set_patch_version(rascsi_patch_version);
|
|
|
|
|
|
|
|
result.set_status(true);
|
|
|
|
|
|
|
|
return version_info;
|
|
|
|
}
|
|
|
|
|
2021-10-17 06:51:14 +00:00
|
|
|
PbLogLevelInfo *RascsiResponse::GetLogLevelInfo(PbResult& result, const string& current_log_level)
|
2021-09-24 06:48:48 +00:00
|
|
|
{
|
2022-09-07 14:38:42 +00:00
|
|
|
auto log_level_info = make_unique<PbLogLevelInfo>().release();
|
2021-10-06 21:25:43 +00:00
|
|
|
|
2021-09-24 06:48:48 +00:00
|
|
|
for (const auto& log_level : log_levels) {
|
2021-10-06 21:25:43 +00:00
|
|
|
log_level_info->add_log_levels(log_level);
|
2021-09-24 06:48:48 +00:00
|
|
|
}
|
2021-10-06 21:25:43 +00:00
|
|
|
|
|
|
|
log_level_info->set_current_log_level(current_log_level);
|
|
|
|
|
|
|
|
result.set_status(true);
|
|
|
|
|
|
|
|
return log_level_info;
|
2021-09-24 06:48:48 +00:00
|
|
|
}
|
|
|
|
|
2021-10-17 06:51:14 +00:00
|
|
|
PbNetworkInterfacesInfo *RascsiResponse::GetNetworkInterfacesInfo(PbResult& result)
|
2021-09-24 06:48:48 +00:00
|
|
|
{
|
2022-09-07 14:38:42 +00:00
|
|
|
auto network_interfaces_info = make_unique<PbNetworkInterfacesInfo>().release();
|
2021-09-24 06:48:48 +00:00
|
|
|
|
2021-10-17 06:51:14 +00:00
|
|
|
for (const auto& network_interface : device_factory->GetNetworkInterfaces()) {
|
2021-09-24 06:48:48 +00:00
|
|
|
network_interfaces_info->add_name(network_interface);
|
|
|
|
}
|
|
|
|
|
|
|
|
result.set_status(true);
|
|
|
|
|
|
|
|
return network_interfaces_info;
|
|
|
|
}
|
2021-09-27 23:39:50 +00:00
|
|
|
|
2021-10-17 06:51:14 +00:00
|
|
|
PbMappingInfo *RascsiResponse::GetMappingInfo(PbResult& result)
|
2021-09-27 23:39:50 +00:00
|
|
|
{
|
2022-09-07 14:38:42 +00:00
|
|
|
auto mapping_info = make_unique<PbMappingInfo>().release();
|
2021-09-27 23:39:50 +00:00
|
|
|
|
2022-09-10 05:59:41 +00:00
|
|
|
for (const auto& [name, type] : device_factory->GetExtensionMapping()) {
|
|
|
|
(*mapping_info->mutable_mapping())[name] = type;
|
2021-09-27 23:39:50 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
result.set_status(true);
|
|
|
|
|
|
|
|
return mapping_info;
|
|
|
|
}
|
2021-12-21 07:43:21 +00:00
|
|
|
|
2021-12-22 08:25:05 +00:00
|
|
|
PbOperationInfo *RascsiResponse::GetOperationInfo(PbResult& result, int depth)
|
2021-12-21 07:43:21 +00:00
|
|
|
{
|
2022-09-21 06:27:51 +00:00
|
|
|
auto operation_info = make_unique<PbOperationInfo>();
|
2021-12-21 07:43:21 +00:00
|
|
|
|
2022-09-21 06:27:51 +00:00
|
|
|
auto operation = CreateOperation(*operation_info, ATTACH, "Attach device, device-specific parameters are required");
|
|
|
|
AddOperationParameter(*operation, "name", "Image file name in case of a mass storage device");
|
|
|
|
AddOperationParameter(*operation, "interface", "Comma-separated prioritized network interface list");
|
|
|
|
AddOperationParameter(*operation, "inet", "IP address and netmask of the network bridge");
|
|
|
|
AddOperationParameter(*operation, "cmd", "Print command for the printer device");
|
|
|
|
AddOperationParameter(*operation, "timeout", "Reservation timeout for the printer device in seconds");
|
2021-12-21 07:43:21 +00:00
|
|
|
|
2022-09-21 06:27:51 +00:00
|
|
|
CreateOperation(*operation_info, DETACH, "Detach device, device-specific parameters are required");
|
2021-12-21 07:43:21 +00:00
|
|
|
|
2022-09-21 06:27:51 +00:00
|
|
|
CreateOperation(*operation_info, DETACH_ALL, "Detach all devices");
|
2021-12-21 07:43:21 +00:00
|
|
|
|
2022-09-21 06:27:51 +00:00
|
|
|
CreateOperation(*operation_info, START, "Start device, device-specific parameters are required");
|
2021-12-21 07:43:21 +00:00
|
|
|
|
2022-09-21 06:27:51 +00:00
|
|
|
CreateOperation(*operation_info, STOP, "Stop device, device-specific parameters are required");
|
2021-12-21 07:43:21 +00:00
|
|
|
|
2022-09-21 06:27:51 +00:00
|
|
|
operation = CreateOperation(*operation_info, INSERT, "Insert medium, device-specific parameters are required");
|
|
|
|
AddOperationParameter(*operation, "file", "Image file name", "", true);
|
2021-12-21 07:43:21 +00:00
|
|
|
|
2022-09-21 06:27:51 +00:00
|
|
|
CreateOperation(*operation_info, EJECT, "Eject medium, device-specific parameters are required");
|
2021-12-21 07:43:21 +00:00
|
|
|
|
2022-09-21 06:27:51 +00:00
|
|
|
CreateOperation(*operation_info, PROTECT, "Protect medium, device-specific parameters are required");
|
2021-12-21 07:43:21 +00:00
|
|
|
|
2022-09-21 06:27:51 +00:00
|
|
|
CreateOperation(*operation_info, UNPROTECT, "Unprotect medium, device-specific parameters are required");
|
2021-12-21 07:43:21 +00:00
|
|
|
|
2022-09-21 06:27:51 +00:00
|
|
|
operation = CreateOperation(*operation_info, SERVER_INFO, "Get rascsi server information");
|
2021-12-22 08:25:05 +00:00
|
|
|
if (depth) {
|
2022-09-21 06:27:51 +00:00
|
|
|
AddOperationParameter(*operation, "folder_pattern", "Pattern for filtering image folder names");
|
2021-12-22 08:25:05 +00:00
|
|
|
}
|
2022-09-21 06:27:51 +00:00
|
|
|
AddOperationParameter(*operation, "file_pattern", "Pattern for filtering image file names");
|
2021-12-21 07:43:21 +00:00
|
|
|
|
2022-09-21 06:27:51 +00:00
|
|
|
CreateOperation(*operation_info, VERSION_INFO, "Get rascsi server version");
|
2021-12-21 07:43:21 +00:00
|
|
|
|
2022-09-21 06:27:51 +00:00
|
|
|
CreateOperation(*operation_info, DEVICES_INFO, "Get information on attached devices");
|
2021-12-21 07:43:21 +00:00
|
|
|
|
2022-09-21 06:27:51 +00:00
|
|
|
CreateOperation(*operation_info, DEVICE_TYPES_INFO, "Get device properties by device type");
|
2021-12-21 07:43:21 +00:00
|
|
|
|
2022-09-21 06:27:51 +00:00
|
|
|
operation = CreateOperation(*operation_info, DEFAULT_IMAGE_FILES_INFO, "Get information on available image files");
|
2021-12-22 08:25:05 +00:00
|
|
|
if (depth) {
|
2022-09-21 06:27:51 +00:00
|
|
|
AddOperationParameter(*operation, "folder_pattern", "Pattern for filtering image folder names");
|
2021-12-22 08:25:05 +00:00
|
|
|
}
|
2022-09-21 06:27:51 +00:00
|
|
|
AddOperationParameter(*operation, "file_pattern", "Pattern for filtering image file names");
|
2021-12-21 07:43:21 +00:00
|
|
|
|
2022-09-21 06:27:51 +00:00
|
|
|
operation = CreateOperation(*operation_info, IMAGE_FILE_INFO, "Get information on image file");
|
|
|
|
AddOperationParameter(*operation, "file", "Image file name", "", true);
|
2021-12-21 07:43:21 +00:00
|
|
|
|
2022-09-21 06:27:51 +00:00
|
|
|
CreateOperation(*operation_info, LOG_LEVEL_INFO, "Get log level information");
|
2021-12-21 07:43:21 +00:00
|
|
|
|
2022-09-21 06:27:51 +00:00
|
|
|
CreateOperation(*operation_info, NETWORK_INTERFACES_INFO, "Get the available network interfaces");
|
2021-12-21 07:43:21 +00:00
|
|
|
|
2022-09-21 06:27:51 +00:00
|
|
|
CreateOperation(*operation_info, MAPPING_INFO, "Get mapping of extensions to device types");
|
2021-12-21 07:43:21 +00:00
|
|
|
|
2022-09-21 06:27:51 +00:00
|
|
|
CreateOperation(*operation_info, RESERVED_IDS_INFO, "Get list of reserved device IDs");
|
2021-12-21 07:43:21 +00:00
|
|
|
|
2022-09-21 06:27:51 +00:00
|
|
|
operation = CreateOperation(*operation_info, DEFAULT_FOLDER, "Set default image file folder");
|
|
|
|
AddOperationParameter(*operation, "folder", "Default image file folder name", "", true);
|
2021-12-21 07:43:21 +00:00
|
|
|
|
2022-09-21 06:27:51 +00:00
|
|
|
operation = CreateOperation(*operation_info, LOG_LEVEL, "Set log level");
|
|
|
|
AddOperationParameter(*operation, "level", "New log level", "", true);
|
2021-12-21 07:43:21 +00:00
|
|
|
|
2022-09-21 06:27:51 +00:00
|
|
|
operation = CreateOperation(*operation_info, RESERVE_IDS, "Reserve device IDs");
|
|
|
|
AddOperationParameter(*operation, "ids", "Comma-separated device ID list", "", true);
|
2021-12-21 07:43:21 +00:00
|
|
|
|
2022-09-21 06:27:51 +00:00
|
|
|
operation = CreateOperation(*operation_info, SHUT_DOWN, "Shut down or reboot");
|
|
|
|
PbOperationParameter *parameter = AddOperationParameter(*operation, "mode", "Shutdown mode", "", true);
|
2021-12-21 07:43:21 +00:00
|
|
|
parameter->add_permitted_values("rascsi");
|
|
|
|
// System shutdown/reboot requires root permissions
|
|
|
|
if (!getuid()) {
|
|
|
|
parameter->add_permitted_values("system");
|
|
|
|
parameter->add_permitted_values("reboot");
|
|
|
|
}
|
|
|
|
|
2022-09-21 06:27:51 +00:00
|
|
|
operation = CreateOperation(*operation_info, CREATE_IMAGE, "Create an image file");
|
|
|
|
AddOperationParameter(*operation, "file", "Image file name", "", true);
|
|
|
|
AddOperationParameter(*operation, "size", "Image file size in bytes", "", true);
|
|
|
|
parameter = AddOperationParameter(*operation, "read_only", "Read-only flag", "false");
|
2021-12-21 07:43:21 +00:00
|
|
|
parameter->add_permitted_values("true");
|
|
|
|
parameter->add_permitted_values("false");
|
|
|
|
|
2022-09-21 06:27:51 +00:00
|
|
|
operation = CreateOperation(*operation_info, DELETE_IMAGE, "Delete image file");
|
|
|
|
AddOperationParameter(*operation, "file", "Image file name", "", true);
|
2021-12-21 07:43:21 +00:00
|
|
|
|
2022-09-21 06:27:51 +00:00
|
|
|
operation = CreateOperation(*operation_info, RENAME_IMAGE, "Rename image file");
|
|
|
|
AddOperationParameter(*operation, "from", "Source image file name", "", true);
|
|
|
|
AddOperationParameter(*operation, "to", "Destination image file name", "", true);
|
2021-12-21 07:43:21 +00:00
|
|
|
|
2022-09-21 06:27:51 +00:00
|
|
|
operation = CreateOperation(*operation_info, COPY_IMAGE, "Copy image file");
|
|
|
|
AddOperationParameter(*operation, "from", "Source image file name", "", true);
|
|
|
|
AddOperationParameter(*operation, "to", "Destination image file name", "", true);
|
|
|
|
parameter = AddOperationParameter(*operation, "read_only", "Read-only flag", "false");
|
2021-12-21 07:43:21 +00:00
|
|
|
parameter->add_permitted_values("true");
|
|
|
|
parameter->add_permitted_values("false");
|
|
|
|
|
2022-09-21 06:27:51 +00:00
|
|
|
operation = CreateOperation(*operation_info, PROTECT_IMAGE, "Write-protect image file");
|
|
|
|
AddOperationParameter(*operation, "file", "Image file name", "", true);
|
2021-12-21 07:43:21 +00:00
|
|
|
|
2022-09-21 06:27:51 +00:00
|
|
|
operation = CreateOperation(*operation_info, UNPROTECT_IMAGE, "Make image file writable");
|
|
|
|
AddOperationParameter(*operation, "file", "Image file name", "", true);
|
2021-12-21 07:43:21 +00:00
|
|
|
|
2022-09-21 06:27:51 +00:00
|
|
|
operation = CreateOperation(*operation_info, CHECK_AUTHENTICATION, "Check whether an authentication token is valid");
|
|
|
|
AddOperationParameter(*operation, "token", "Authentication token to be checked", "", true);
|
2021-12-21 07:43:21 +00:00
|
|
|
|
2022-09-21 06:27:51 +00:00
|
|
|
CreateOperation(*operation_info, OPERATION_INFO, "Get operation meta data");
|
2021-12-21 07:43:21 +00:00
|
|
|
|
|
|
|
result.set_status(true);
|
|
|
|
|
2022-09-21 06:27:51 +00:00
|
|
|
return operation_info.release();
|
2021-12-21 07:43:21 +00:00
|
|
|
}
|
|
|
|
|
2022-09-21 06:27:51 +00:00
|
|
|
PbOperationMetaData *RascsiResponse::CreateOperation(PbOperationInfo& operation_info, const PbOperation& operation,
|
|
|
|
const string& description) const
|
2021-12-21 07:43:21 +00:00
|
|
|
{
|
2022-09-21 06:27:51 +00:00
|
|
|
auto meta_data = make_unique<PbOperationMetaData>();
|
2021-12-21 07:43:21 +00:00
|
|
|
meta_data->set_server_side_name(PbOperation_Name(operation));
|
2021-12-22 08:25:05 +00:00
|
|
|
meta_data->set_description(description);
|
2021-12-21 07:43:21 +00:00
|
|
|
int ordinal = PbOperation_descriptor()->FindValueByName(PbOperation_Name(operation))->index();
|
2022-09-21 06:27:51 +00:00
|
|
|
(*operation_info.mutable_operations())[ordinal] = *meta_data.release();
|
|
|
|
return &(*operation_info.mutable_operations())[ordinal];
|
2021-12-21 07:43:21 +00:00
|
|
|
}
|
|
|
|
|
2022-09-21 06:27:51 +00:00
|
|
|
PbOperationParameter *RascsiResponse::AddOperationParameter(PbOperationMetaData& meta_data, const string& name,
|
2021-12-21 07:43:21 +00:00
|
|
|
const string& description, const string& default_value, bool is_mandatory)
|
|
|
|
{
|
2022-09-21 06:27:51 +00:00
|
|
|
auto parameter = unique_ptr<PbOperationParameter>(meta_data.add_parameters());
|
2021-12-21 07:43:21 +00:00
|
|
|
parameter->set_name(name);
|
2021-12-22 08:25:05 +00:00
|
|
|
parameter->set_description(description);
|
2021-12-21 07:43:21 +00:00
|
|
|
parameter->set_default_value(default_value);
|
|
|
|
parameter->set_is_mandatory(is_mandatory);
|
|
|
|
|
2022-09-21 06:27:51 +00:00
|
|
|
return parameter.release();
|
2021-12-21 07:43:21 +00:00
|
|
|
}
|