Commit Graph

261 Commits

Author SHA1 Message Date
Uwe Seimet
43cd5263f9 Moved commands from controller to disk 2021-08-22 12:47:45 +02:00
Uwe Seimet
ff88ce9602 Simplified controller/device interface 2021-08-22 12:01:58 +02:00
Uwe Seimet
f1f2f4a84f Moved commands from controller do disk 2021-08-22 11:46:03 +02:00
Uwe Seimet
af13ce37bc Use generic name for MO, must like for HD 2021-08-22 11:05:48 +02:00
Uwe Seimet
000b568dfb Consider media removed if no filename was provided when attaching 2021-08-22 09:55:47 +02:00
Uwe Seimet
524327f7be Merged feature_controller_cleanup 2021-08-22 00:42:24 +02:00
Uwe Seimet
db8c50ab00 Made block size configurable (resolves issue #196) 2021-08-22 00:37:13 +02:00
Uwe Seimet
0bd12e93f5
Refactoring, device handling extensions, additional settings, improved error handling, 64 bit OS support, fixed issues (#184)
* Device type unification, support of removable media

* Added support for .hdr extension

* Removable flag cleanup

* Manpage update

* Enriched PbOperation with PbDevice

* Added file size to PbImageFile

* Added device list support

* Set image_file

* Make remote interface more robust by ignoring SIGPIPE

* Return status only once

* Fixed typo

* Error handling update

* When starting rascsi parse everything before attaching devices

* Added dry run mode

* Comment update

* Updated logging

* Added Device base class, Disk class inherits from it

* Renaming

* Use vectors for controllers and disks, as preparation for using maps

* Updated file support handling

* Comment update

* DaynaPort and Bridge inherit from Device instead of Disk

* ProcessCmd() now works with devices instead of disks

* Renaming

* Added DeviceFactory

* Improved factory

* Comment update

* protected disk_t

* Code cleanup, added translations

* Device name can be set for rascsi

* rasctl can set device name

* Manpage update

* Manpage update

* Formatting update

* Check for missing name

* Initialize fd

* Initialize type

* Fixed string length issue

* Updated capacity formatting

* Fixed typo

* Split PbDevice into device and device definition

* Added TODO

* Renaming

* Renaming

* Device types can be explicitly specified with -t (no FILE:TYPE syntax anymore)

* Fixed compile-time issue

* Removed unused Append mode, updated read-only handling

* Type handling and manpage update

* Cleanup

* rasctl parser cleanup

* Review

* Constructor update

* Added .hdr (SCRM) support to web interface, tested web interface

* Default folder can be set remotely

* Removed deprecated operation

* DETACH supports all parameters in order to detach all devices

* include cleanup

* Logging should not depend on NDEBUG, for RaSCSI it is not peformance-critical

* INFO is default log level

* Exception renaming

* Updated GetPaddedName()

* Inheritance update

* Added BlockDevice class

* Removed unused code

* Updated typedefs

* Revert "Updated typedefs"

This reverts commit 546b46215a.

* Removed unused code

* Fixed warnign

* Use standard C++ integer types, use streams to resolve printf data type issues

* Added TODOs

* Added TODO

* Renaming

* Added TODO

* Added TODO

* Improved dry-run

* Code cleanup

* Updated handling of unknown options, code review and cleanup

* Manpage update

* Added PrimaryDevice

* Include cleanup

* Added pure virtual methods

* Comment updates

* Split rasutil

* Replaced some occurrences of BOOL

* Removed obsolete RASCSI definition in xm6.h

* Removed unused code, updated TODOs, replaced BOOL

* Added capacity check (issue #192)

* Fixed (most likely) https://github.com/akuker/RASCSI/issues/191

* Fixed wrong error messages

* For root the default image folder is /home/pi/images, updated error handling

* Dynaport code review

* Improved error handling

* Implemented READ CAPACITY(16)

* Comment update

* Commands can be 16 bytes long

* Implemented READ/WRITE/VERIFY(16)

* Comment update

* Renamed method to reflect the name of the respective SCSI command

* Do not created devices during dryRun

* Fixed padding of SCSIHD_APPLE vendor and product

* Initial implementation

* Updated ReportLuns

* Byte count update

* Fixed typo

* Finalized REPORT LUNS

* Removed TODO

* Updated TODO

* TODO update

* Updated device factory

* Comment update

* 64 bit update, tested on Ubuntu 64 bit system

* Removed assertion

* SCSI hard disks always have Apple specific mode pages (resolves issue #193)

* Error messsage update, 64 bit cleanup

* Reduced streams usage

* Updated handling of device flags

* MOs are protectable

* Removed duplicate error code handling

* Removed duplicate code

* Fixed CmdReadToc buffer overflow (https://github.com/akuker/RASCSI/issues/194)

* Added naive implementation of GET EVENT STATUS NOTIFICATION to avoid wranings

* HD must set removable device bit if the media is removable

* Removed duplicate logging

* Updated daynaport additional length

* Removed broken daynaport REQUEST SENSE. Successfully tested with my Mac.

* EnableInterface should not always return TRUE

* Updated Inquiry

* Updated LUN handling

* Replaced incorrect free by delete

* Updated comments and write-protection handling

* Made default HD name consistent

* STATUS_NOERROR is default

* Fixed Eject

* More eject handling updates

* Manpage updates

* Logging update

* Changed debug level

* Logging update

* Log capacity of all media types

* Logging update

* Encapsulated disk.blocks

* Encapsulated sector size

* Added overrides

* Added more overrides

* Fixed error message

* Fixed typos

* Fixed logging

* Added logging

* Use PrimaryDevice when calling Inquiry

* Comment update

* Changed default buffer size for testing

* Reverted last change

* Removed debug output

* De-inlined methods because optimized code did not work with them inlined

* Web interface can attach Daynaport again

* Improved handling of read-only hard disks

* Fixed issue with "all" semantics of DETACH

* rasctl supports adding removable media devices without providing a filename

* Removed unused flag in PbDeviceDefinition

* Updated rasctl output for ecjected media (resolves issue #199)

* Validate default folder name when changing default folder
2021-08-21 16:45:30 -05:00
Uwe Seimet
1c8c3600a7
Feature explicit device type (rascsi) (#177)
* Added support for explicit file type

* Check file type

* Manpage update

* Removed device file work-around, an explicit type can be used instead

Co-authored-by: akuker <akuker@gmail.com>
2021-08-09 21:20:58 -05:00
Uwe Seimet
79de9e29e0
Added PbDevices to PbServerInfo for client convenience (#176)
* Added device list to server info

* Updated loggin

* Added comment

* Added comment

* Added comment

* Comment update

* Deprecate LIST

* Comment update

* Updated duplicate ID/unit check

* Updated logging

* Updated logging

* Unified error message handling: Errors are now consistently logged

* REview

* Added missing field initialization (reported by Eclipse IDE)

* Added some translations

* Fixed typo

Co-authored-by: akuker <akuker@gmail.com>
2021-08-09 20:24:56 -05:00
Uwe Seimet
157172b566
Use existing ioexception for Disk::Open() error handling (#175)
* Use ioexception for file open error handling

* Use standard string comparison functions

* Error message update

* Improved CD-ROM handling error messages
2021-08-09 18:56:13 -05:00
Uwe Seimet
0a5298b8ac
Feature extended server information (#169)
* PbDevice returns information on whether a device is removable

* Fixed log message

* Added additional status data (ejectable, protctable, removable)

* Assume ejectable == removable

* Removed obsolete fields

* Added locked/lockable to interface

* Code review

* Logging update

* The user should be allowed to also write protect hard disk drives

* Updated error handling

* Testing

* INSERT also has to search in the default file folder

* Added TODO

* Manpage update

* Message updates

* Moved some sanity checks to the server, so that they are run for any client

* Updated error handling

* Moved CR/LF handling to the client, the server should not format too much

* rascsi should not mention "rasctl" in its messages, there may be other clients

* Improved error messages

* Improved error handling by returning an error string

* Added TODO

* Moved check for duplicate ID to ProcessCmd()

* Removed debug output

* Moved include

* Removed obsolete includes, updated includes

* Reverted ready check

* Fixed error messages

* Added convenience method

* Simplified error handling

* Socket/error handling review

* "NO MEDIA" is added by the client, not by the server

* Added missing include

* Only check for duplicate ID when attaching a device

* Added type/string converters for PbDeviceType

* PbDevice indicates whether image files are supported

* Write-protecing a read-only devices is not treated as an error anymore

* Updated read-only check

* Made difference between read-only and protected more explicit

* Added comment

* Comment update

* Made hard disk drives write-protectable by the user

* Resolved https://github.com/akuker/RASCSI/issues/166

* Addressing compiler error - type needs to be initialized

Co-authored-by: akuker <akuker@gmail.com>
2021-08-08 10:08:58 -05:00
akuker
3d14950548
Delete extraneous files (#171)
Co-authored-by: akuker <akuker@gmail.com>
2021-08-07 08:52:58 +02:00
Uwe Seimet
1ba3b6a2f6
PbDevice returns information on whether a device is removable (#167)
* PbDevice returns information on whether a device is removable

* Fixed log message
2021-08-06 19:50:20 -05:00
Uwe Seimet
eeef537bc0
Manpage updates (#165)
* Updated rasctl.1

* Updated rascsi manpage, synchronized case/format with rasctl

* Added default folder option

* Added missing upper case option

* Sorted options alphabetically, as far as possible

* Updated rascsi manpage

* More rascsi manpage updates

* Added -v option

* Fixed issue with detection of duplicate image files
2021-08-06 19:30:35 -05:00
Uwe Seimet
735aff6cd1
Feature server information (#163)
* Extended protobuf interface with rascsi server information

* Added default_image_folder (to be used in a different feature)

* Remember log level because not all versions of spdlog support get_log_level()

* Display enum names instead of values

* Added support for default image folder

* Added method that returns the available image files

* Added list of image files to protobuf interface

* Error handling update

* Filter image files

* Update setting up image file list

* Message update

* Replaced if/else cascade by switch

* Updated log level handling

* Renaming, sort rasctl list output

* Added -lstdc++fs (required by gcc 8.3.0)

* Changed option shortcut

* Sorted log levels by severity

* Fixed sorting of log levels

* Use map for storing available log levels

* Replaced explicit typ

* Revert "Replaced explicit typ"

This reverts commit 4106c15d6f.

* Revert "Use map for storing available log levels"

This reverts commit 505751e64a.

* Added comments

* Removed needless CR/LF when logging

Co-authored-by: akuker <akuker@gmail.com>
2021-08-05 20:56:07 -05:00
Uwe Seimet
dd7ce23adc
Reject duplicate image files (#162)
* Reject duplicate image files

* Renaming
2021-08-05 20:38:03 -05:00
Uwe Seimet
8601452b67
Feature testing improvement for X86 platforms (#164)
* Do not poll for RaSCSI hardware events on X86 platforms

* Fixed typo
2021-08-05 08:36:55 -05:00
Uwe Seimet
8cf24e7163
Feature serialization improvements (#159)
* Re-added lost code

* Avoid some potential serialization issues
2021-08-03 20:41:18 -05:00
Eric Helgeson
ea4486d1c0
Speed up web uploads and various fixes (#158)
* Move to bjoern

* Stream upload

* wip

* Streams

* check for filename

* Allow easyinstall to be scripted

* Tell user we're done

* show help

* ignore hfdisk

* fix var

* Allow override of remote by setting GIT_REMOTE, default to origin

* Better handling of local changes

* Give user more info

* Fix #156 - show all supported types in web interface

* *.mos does not seem to be valid - ractl throws error

* Try some minor optomizations
Error handling
2021-07-31 10:52:09 -05:00
Uwe Seimet
18633a748c
Re-added lost code (#152) 2021-07-27 09:47:22 -05:00
Uwe Seimet
e70469d344
FASTCALL/INLINE removal (#151)
* Removed FASTCALL and INLINE, added translations, update Disk constructor

* Disk ID cannot be empty, ensured by assertion in constructor

* Disk ID cannot be empty, ensured by assertion in constructor
2021-07-26 13:33:36 -05:00
Uwe Seimet
b3862c4726
Disk ID handling improvements (#149)
* Replaced DWORD ID by string

* Signature update

* Removed unused code

* Added getters for all device types

* Renaming

* Removed unused code

* Renaming

* Updated more ID checks

* Removed unused code

* Use IsSCSI()
2021-07-23 19:41:55 -05:00
akuker
55ec2291ef
fd needs to be initialized in order to compile (#150)
Co-authored-by: akuker <akuker@gmail.com>
2021-07-23 19:30:56 -05:00
Uwe Seimet
863feed611
Feature device list (#146)
* Removed all BAREMETAL ifdefs

* Cleaned up subfolders

* Fixed regression

* Re-added underscores

* Fixed merge conflicts

* Assume RASCSI is always defined

* Fixed mege issue

* Re-added result message

* Added Devices message to protobuf interface

* Fixed typo

* Fixed include file names

* Updated files to be ignored by git

* Merge with develop branch

* Synchronized output with develop branch

* Fixed missing dependency, causing issues when running "make -j1"

* Fixed handling of connection errors

* Improved protobuf interface upwards compatibility

* Use -g instead of -s, this has less conflict potential with future options

* Made log level options consistent (rascsi and rasctl used a different option)

* Serialization improvements (#142)

* Simplified serialization, extracted sending commands

* Simplified serialization

* Fixed warning

* Signature update

* Use Pb prefix for protobuf interface messages

* Moved ListDevices to rasutil

* Log device list

* Split initialization

* Moved code
2021-07-23 19:13:05 -05:00
Uwe Seimet
845d249d9b
Removed unused code (#147) 2021-07-23 08:41:07 -05:00
Uwe Seimet
56f1d99d4c
Made port selectable (#145)
* Made port selectable

* Added port number error handling

* Added checks for negative port
2021-07-23 08:40:01 -05:00
Uwe Seimet
62e7727a48
Added Devices message to protobuf interface (#141)
* Removed all BAREMETAL ifdefs

* Cleaned up subfolders

* Fixed regression

* Re-added underscores

* Fixed merge conflicts

* Assume RASCSI is always defined

* Fixed mege issue

* Re-added result message

* Added Devices message to protobuf interface

* Fixed typo

* Fixed include file names

* Updated files to be ignored by git

* Merge with develop branch

* Synchronized output with develop branch

* Fixed missing dependency, causing issues when running "make -j1"

* Fixed handling of connection errors

* Improved protobuf interface upwards compatibility

* Use -g instead of -s, this has less conflict potential with future options

* Made log level options consistent (rascsi and rasctl used a different option)
2021-07-22 07:47:08 -05:00
uweseimet
3c5a0003a4
Feature baremetal removal (#140)
* Removed all BAREMETAL ifdefs

* Cleaned up subfolders

* Fixed regression

* Re-added underscores

* Fixed merge conflicts

* Assume RASCSI is always defined

* Fixed mege issue

* Re-added result message

* Fix typo

Co-authored-by: akuker <34318535+akuker@users.noreply.github.com>
2021-07-20 08:32:44 -05:00
uweseimet
0032ce5010
Allow rasctl to connect from a different host (#134)
* Set hostname

* Added option for hostname

* Support connecting from a different host

* Squashed commit of the following:

commit 6698b8b90a
Author: akuker <34318535+akuker@users.noreply.github.com>
Date:   Mon Jul 19 01:19:41 2021 -0500

    Remove extraneous carriage return (#135)

    Co-authored-by: Tony Kuker <akuker@gmail.com>

commit af6e311e6e
Author: uweseimet <48174652+uweseimet@users.noreply.github.com>
Date:   Mon Jul 19 00:15:13 2021 +0200

    protobuf-based rasctl/rascsi command interface (#129)

    * Initial protobuf definition

    * protobuf result message draft

    * Merge with develop branch

    * Makefile generates protobuf-based source files

    * Interface update

    * Fixed typo

    * Fixed typo

    * Updated returning status

    * Serialize return data

    * Use correct descriptor

    * Made interface fields required

    * Deserialize result

    * Serialization update

    * Updated serialization

    * Serialization update

    * Updated deserialization

    * status handling update

    * Evaluate status

    * Revert "Evaluate status"

    This reverts commit 3d8f2c3252.

    * Completed sense_key enum

    * Renaming

    * Added protobuf Command

    * Updated command evaluation

    * Interface update

    * Interface update

    * Added DeviceType enum

    * Improved type-safety

    * Fixed typo

    * Type-safety update

    * Fixed typo

    * Error handling update

    * Updated list handling

    * Error handling update

    * Use more C++ strings

    * protobuf enums can provide their names

    * Fixed listing devices

    * Updated logging

    * Enum usage cleanup

    * More enum cleanup

    * Fixed command check

    * Updated type check

    * Updated enums

    * Removed unused variable

    * Removed goto, added exception

    * Socket handling cleanup

    * Code locality cleanup

    * Added helper method

    * Extracted code

    * Updated socket/file handling

    * Use C++ I/O

    * Use tolower()

    * Renaming

    * Simplified has_suffix

    * Fixed typo

    * Use spdlog namespace

    * Simplified formatting (endl) of error messages

    * Added -s option for changing the runtime log level to rasctl

    * Renaming

    * Renaming

    * Updated error reporting

    * Fixed log string formatting

    * String conversion cleanup

    * Fixed typo

    * Log mmap error (happens on 64 bit)

    * Improved proto3 compatibility, updated error handling

    * CHanges based on review

    * Fixed comment

    * Comment update

    * Updated ListDevice to not directly write to the stream

    * Use size_t

    * Renaming

    * Buffering update

    * MapController should not use fp

    * Use fd, not fp

    * rasctl has to display *all* results

    * rasctl has to display *all* results

    * Error handling update

    * Updated to proto3 protocol

    * Optimization by using protobuf-lite

    * RaspBian outdated protoc does not support _Name

    * Added protobuf-compiler to easyinstall.sh

    Co-authored-by: akuker <34318535+akuker@users.noreply.github.com>

* Resolved merge conflicts

* Updated help message

* Re-added CR/LF

* Updated error handling

* Use fd instead of fp

* Removed CR/LF

* Comment update

* Fixed data types

* Data type update

* Updated help message

* Added new option to usage info, rascsi: use -s instead of -l for consistency

* Display name of (remote) host in error message

* Fixed buffer overflow, cfilesystem.cpp:1185 assumes size of 11 bytes

* Revert "Fixed buffer overflow, cfilesystem.cpp:1185 assumes size of 11 bytes"

This reverts commit 126592d411.
2021-07-19 18:41:00 -05:00
akuker
6698b8b90a
Remove extraneous carriage return (#135)
Co-authored-by: Tony Kuker <akuker@gmail.com>
2021-07-19 08:19:41 +02:00
uweseimet
af6e311e6e
protobuf-based rasctl/rascsi command interface (#129)
* Initial protobuf definition

* protobuf result message draft

* Merge with develop branch

* Makefile generates protobuf-based source files

* Interface update

* Fixed typo

* Fixed typo

* Updated returning status

* Serialize return data

* Use correct descriptor

* Made interface fields required

* Deserialize result

* Serialization update

* Updated serialization

* Serialization update

* Updated deserialization

* status handling update

* Evaluate status

* Revert "Evaluate status"

This reverts commit 3d8f2c3252.

* Completed sense_key enum

* Renaming

* Added protobuf Command

* Updated command evaluation

* Interface update

* Interface update

* Added DeviceType enum

* Improved type-safety

* Fixed typo

* Type-safety update

* Fixed typo

* Error handling update

* Updated list handling

* Error handling update

* Use more C++ strings

* protobuf enums can provide their names

* Fixed listing devices

* Updated logging

* Enum usage cleanup

* More enum cleanup

* Fixed command check

* Updated type check

* Updated enums

* Removed unused variable

* Removed goto, added exception

* Socket handling cleanup

* Code locality cleanup

* Added helper method

* Extracted code

* Updated socket/file handling

* Use C++ I/O

* Use tolower()

* Renaming

* Simplified has_suffix

* Fixed typo

* Use spdlog namespace

* Simplified formatting (endl) of error messages

* Added -s option for changing the runtime log level to rasctl

* Renaming

* Renaming

* Updated error reporting

* Fixed log string formatting

* String conversion cleanup

* Fixed typo

* Log mmap error (happens on 64 bit)

* Improved proto3 compatibility, updated error handling

* CHanges based on review

* Fixed comment

* Comment update

* Updated ListDevice to not directly write to the stream

* Use size_t

* Renaming

* Buffering update

* MapController should not use fp

* Use fd, not fp

* rasctl has to display *all* results

* rasctl has to display *all* results

* Error handling update

* Updated to proto3 protocol

* Optimization by using protobuf-lite

* RaspBian outdated protoc does not support _Name

* Added protobuf-compiler to easyinstall.sh

Co-authored-by: akuker <34318535+akuker@users.noreply.github.com>
2021-07-18 17:15:13 -05:00
uweseimet
6136b29515
Daynaport: Fixed potential buffer overflow and removed INQUIRY excess bytes (#123)
* Fixed potential buffer overflow and removed INQUIRY excess bytes

* Daynaport: Report an error for LUNs > 0
2021-07-15 19:52:01 -05:00
uweseimet
f3978e6bd2
Removed minimum image size check. There is no such limit for SCSI drives. (#130) [Issue #72]
This fixes issue #72
2021-07-15 19:51:34 -05:00
uweseimet
fef21a6cf5
Support for providing sense data for REQUEST SENSE (#120)
* Error() supports passing Sense Key and ASC, REQUEST SENSE returns these data

* Synchronized error handlign with sasidev_ctrl

* Added warning for missing sense key

* Logging and comment update

* Updated invalid LUN handling

* Updated REQUEST SENSE

* Revert "Updated REQUEST SENSE"

This reverts commit 61a1ecbca7.

* Report MEDIUM NOT PRESENT if capacity cannot be determined

* Updated handling of non-existing LUNs. This change results issue #124.

* Log a warning if drive capacity cannot be determined

* Added enums for sense keys and ASCs

* Updated Error() signature to use enums

* Fixed compiler warnings

* Merge with develop branch
2021-07-15 19:49:54 -05:00
uweseimet
0f5baa8839
Cplusplus level update to c++-17 (#127)
* Raised C++ level to c++-20

* Raspberry PI OS compiler does not yet support c++-20
2021-07-09 11:38:48 -05:00
uweseimet
910d3af525
Changed scsi_command enum base type so that the dispatcher can use enum again (#128) 2021-07-09 11:37:46 -05:00
uweseimet
6d1f661ab8
Removed useless assertions (#125)
* Removed useless assertions

* Finalized removal

* Pointer was passed instead of integer value

* Fixed data type issue on 64 bit compile platforms

* Added missing virtual destructor (gcc warning)
2021-07-08 11:40:31 -05:00
uweseimet
da3629510d
Removed meaningless assertions, minor code locality cleanup (#122)
* Removed meaningless assertions, locality of code cleanup

* More assertion and code locality cleanup

* Added TODO

* More assertion and code locality cleanup

* Added missing initializations in constructors

* Added FIXMEs

* Revert "Added FIXMEs"

This reverts commit 2c83626862.
2021-07-07 16:46:45 -05:00
uweseimet
da70ce7055
Option for setting the log level at rascsi startup, improved device file support (#121)
* Added option for setting log level at rascsi startup

* Report an error if only an extension without a basename is provided

* Improved device file support
2021-07-07 16:34:55 -05:00
uweseimet
9898cb1a13
SCSI command dispatcher update, reduction of circular dependencies (#117)
* Unified command handling of SCSI command dispatcher

* Added missing cast

* Updated casts

* Comment update

* Moved enums to base class to reduce circular dependencies

* Added EXTRA_FLAGS to Makefile and fixed typo (#118)

* scsidev_ctrl inherited from sasidev without any need

* Reverted last change ...

* Removed unused include

* Added missing field initialization in constructor

* Formatting update

* Fixed command names used for logging

* Replaced SCSI command dispatch switch

* Source code formatting update

* Renaming

* Renaming

* Renaming

* Renaming

* For SCSI (scsidev_ctrl) the scsi_command enum is not relevant anymore

* Always log status code in status phase

* Log additional sense code (ASC)
2021-07-04 19:50:24 -05:00
uweseimet
e2409098dd
Added EXTRA_FLAGS to Makefile and fixed typo (#118) 2021-06-26 22:26:04 -05:00
uweseimet
b7011efd95
Removed unused code, added some translations (#114)
* Removed unused code, added some translations

* Fixed typo

* Added translation
2021-06-23 12:26:12 -05:00
uweseimet
86aeeb0a31
Segmentation fault fix for missing unit 0 (#115)
* Removed unused code, added some translations

* Fixed segmentation fault when there is no unit 0

* Removed unrelated changes
2021-06-23 12:16:27 -05:00
akuker
9e0ce1eacc update version of pillow 2021-06-22 19:37:52 -05:00
uweseimet
51210a7002
Use exception for unsupported LUN handling, reduces duplicate code (#111)
* Use exception for unsupported LUN handling in order to reduce duplicate code

* Code improvements based on review

* Added header
2021-06-22 19:05:47 -05:00
uweseimet
7e45d11215
Fixes for gcc 10.3.0 (#112)
* Fixes for gcc 10.3.0

* Fixes for gcc 10.3.0

* Removed obsolete declaration

* Changes based on review
2021-06-22 19:03:53 -05:00
PhrAx
ae07648551 fixing typo 2021-05-29 23:50:00 -07:00
PhrAx
e42adab4f9 improving stdout for logging by disabling buffering 2021-05-29 23:46:08 -07:00
akuker
dbf78b772b
Merge pull request #96 from akuker/daynaport3
Add DaynaPort Functionality into the Development branch
2021-05-26 10:50:13 -05:00
Tony Kuker
fa80c7fb9a Updates for pull request comments 2021-05-23 14:44:47 -05:00
Tony Kuker
4a72d2ecea Updates for pull request comments 2021-05-23 14:44:34 -05:00
akuker
a580562d03
Merge pull request #103 from akuker/eric/devupdates
Web and easy install updates.
2021-05-23 11:35:19 -05:00
Eric Helgeson
b5d82c1037 Update readme for dev setup of web 2021-05-23 10:55:24 -05:00
Tony Kuker
f779a1cbc2 Added comments 2021-05-21 22:13:33 -05:00
Tony Kuker
a28512e179 First draft of python test using loopback adapter from saybur 2021-05-21 22:05:00 -05:00
Eric Helgeson
968d34bb14 Increase nginx timeouts 2021-05-13 12:48:11 -05:00
Eric Helgeson
ffc9c36456 unlimited upload in nginx 2021-05-13 12:41:30 -05:00
Eric Helgeson
c2c0d5cbf7 Use truncate instead of dd 2021-05-13 12:22:28 -05:00
Eric Helgeson
a2a323cdb8 Update to flask 2.0 2021-05-13 12:17:50 -05:00
akuker
642deb8b84 updated version number 2021-05-02 14:35:42 -05:00
Tony Kuker
61c7644250 Merge branch 'develop' into daynaport3 2021-04-05 16:11:54 -05:00
Tony Kuker
a05c7f34d4 Added short delay after the DaynaPort reports its metadeta during a READ operation 2021-04-05 14:17:05 -05:00
Tony Kuker
e68f6f09e2 Fix compiler warnings for release builds 2021-04-05 12:14:51 -05:00
Quentin Smith
da8880576a Remove no-longer-used os.cpp 2021-04-04 23:13:52 +01:00
Quentin Smith
2579437b57 Allow generating pcap files of Daynaport traffic
If rasctl is given a file to "attach" to a daynaport interface, rascsi
will generate a pcap file at that path containing all sent/received
packets.
2021-04-04 23:13:51 +01:00
Quentin Smith
5ef97b99db Use native ioctls to create/join bridge interface 2021-04-04 23:13:36 +01:00
akuker
6333d3aad5
Merge pull request #85 from akuker/phrax0-patch-1
Update controllers
2021-03-21 19:57:31 -05:00
Quentin Smith
5f7a0a0d86 Fix CD support on DaynaPort branch
The CD device relies on SASIDEV.buf being at least 0x800 long.
2021-03-18 03:36:08 +00:00
Quentin Smith
cdf2b6b39f Initialize selevreq
selevreq was previously being passed to ioctl without being fully initialized.
2021-03-18 03:35:13 +00:00
PhrAx
6d79023a5c
FIxing code and comment alignment
going through the various files and putting comments on one line for easier reading.
2021-03-07 17:29:30 -08:00
PhrAx
1fb0269645
Update controllers
Includes comment alignment, and added RESERVE(6), RESERVE(10), RELEASE(6) and RELEASE(10) for SCSI, along with RESERVE(16) and RELEASE(17) for SASI.
2021-03-07 17:11:17 -08:00
Eric Helgeson
f4513ca87e Add start script to simplify oled install 2021-03-07 09:28:40 -06:00
Adrian Merwood
8b3cfed98c Updated oled script for Python3 2021-03-07 09:28:24 -06:00
Tony Kuker
d794f046dc #27 Files to configure the network bridge 2021-02-26 17:36:59 -06:00
Tony Kuker
9070903772 Temporarily remove MAC address filtering. It seems to cause issues 2021-02-26 17:26:24 -06:00
Tony Kuker
994e90abac Added error message if there is an error while reading the tap #27 2021-02-26 11:40:16 -06:00
Tony Kuker
33f09490be Remove magic number that was left over from debugging #27 2021-02-26 11:39:37 -06:00
Tony Kuker
0d25785f03 moved bridge setup into ctapdriver 2021-02-07 16:46:59 -06:00
Tony Kuker
99538d8225 Merged latest develop branch with the daynaport functionality 2021-02-07 13:00:48 -06:00
akuker
0ef9ff72de merge in latest develop 2021-02-06 19:48:11 -06:00
akuker
852f4f11fd
Revert "Add Daynaport SCSI/Link Functionality" (#78) 2021-02-02 19:55:38 -06:00
Eric Helgeson
0b78f09f8d Add DaynaPORT config to web
Add bridge-utils

Minor fixes to easyinstall

Can now save config, detach all devices

Bridge script error out if any command fails
2021-02-01 19:48:56 -06:00
Eric Helgeson
943a9ab537 Black code formatting 2021-02-01 11:39:50 -06:00
Tony Kuker
3bf6c3ecd0 Updated to use a multi-thread safe logger 2021-01-31 20:11:33 -06:00
akuker
50bb0664dd
Update scsi_daynaport.cpp
Missing semicolon when building non-debug build.
2021-01-30 16:02:21 -06:00
Tony Kuker
3a7674d47c Cleanup extraneous debug printouts 2021-01-30 14:12:29 -06:00
Tony Kuker
144abd4524 Cleanup extraneous debug printouts 2021-01-30 14:08:09 -06:00
Tony Kuker
f1f60f281f Updated ctapdriver to use the forked system call 2021-01-30 14:07:40 -06:00
Tony Kuker
04a2f46f51 added additional event loggin 2021-01-30 14:07:05 -06:00
Tony Kuker
bc561d65dd Changed system call to use fork/wait. Moved some disk functions out of the header 2021-01-30 12:36:18 -06:00
Tony Kuker
788b2a3b46 Added DaynaPort SCSI/Link emulation functionality 2021-01-27 15:16:52 -06:00
akuker
bac4f4a80b Change reported version back to development build 2021-01-25 13:27:21 -06:00
akuker
350010462c
Scsimon improvements (#74)
* Updated scsimon to save data on a nano-second time scale, instead of micro-second

* Cleanup error messages and data types

Co-authored-by: Tony Kuker <akuker@gmail.com>
2021-01-25 10:07:49 -06:00
akuker
96673a44b0
Updated to match new versioning structure (#73)
* Updated to match new versioning structure

* fix version number

Co-authored-by: Tony Kuker <akuker@gmail.com>
2021-01-25 10:07:30 -06:00
Eric Helgeson
37f1166fd8
New Web Interface (#69)
* gitignore

* New Web Interface
Fixed spacing/tabs in easy install
Added migration check
Fix update web not actually updating

Migrating from https://github.com/erichelgeson/RaSCSI-web

* Allow user to select multiple types when creating images

* Show all devices even if nothing is attached.

* If attaching an iso to a cd device, dont detach, just insert

* UI feedback and restart rascsi service

* Check for any non-0 exit code for apache2 detection

* Pretty/informative 502

* Add confirms to some actions. Works in netscape 4.7

* Fix order of params for create_new_image

* Move non-route method to service

* Add method for getting logs

* Move settings to single file
add ability to mock commands for local dev
2020-12-30 19:39:32 -06:00
akuker
3536e8aa02
Added -DNDEBUG to disable the real ASSERT macro in production code (#67)
Co-authored-by: Tony Kuker <akuker@gmail.com>
2020-12-28 18:53:00 -06:00
Tony Kuker
4cd07f63ee Additional translation from Japanese to English 2020-12-27 20:13:21 -06:00
akuker
1118c344cc
Issue #7 - implement a scsi monitor function for RaSCSI to log SCSI traffic (#46)
* #7 Re-merge scsimon functionality with latest master. The old scsimon branch was waaaaay too out of date

* #7 Re-merge scsimon functionality with latest master. The old scsimon branch was waaaaay too out of date

* Added libspdlog-dev as a required package

* Cleanup from master re-base

* Updated to use GCC version 8, to match the raspberry pi

Co-authored-by: akuker <akuker@gmail.com>
2020-10-19 07:31:06 -05:00
thewesker
3ddeac6180
Fix nothing displayed with no images mounted. (#45)
* Fix nothing displayed with no images mounted.

This fixes the issue where nothing would show on the display unless an image is mounted.

* Fixed the indent

* Fixes not working when image attached issue

Original commit caused the display not to work when an image was attached. This has now been fixed.

* Fixed multiple images attached not working

Forgot to remove testing code that caused multiple image displays to break.
2020-10-16 20:48:16 -05:00
thewesker
87c84689c6
Update lib_rascsi.php (#42)
Add ..cdr to be interpreted as a CD-Rom image.
2020-10-11 23:53:57 -05:00
PhrAx
cb295b89b9
Update rascsi.php
Adding some cellpadding to the Image File Management section.
2020-09-12 23:03:55 -07:00
PhrAx
ef160c3b7d
Update lib_rascsi.php
Adding some cellpadding to the current_rascsi_config function.
2020-09-12 23:02:53 -07:00
PhrAx
05ae013fad
Update rascsi.cpp
Changed "No device is installed." to "No images currently attached.".  I think looking for currently attached images. The 'device' wording is confusing, even though it may be accurate.
2020-09-12 15:48:35 -07:00
akuker
a50fcbde5c
Updated makefile to automatically configure systemd and rsyslog (#32)
* Corrected rascsi service and rsyslog configs. Updated makefile to install these configs

* Removed systemd service commands. Added a 'help' target that prints information about how to use this Makefile

Co-authored-by: akuker <akuker@gmail.com>
2020-09-05 10:25:05 -05:00
akuker
bb379b8274
Workflow integration (#29)
* Updated makefile to only rebuild changed files. Also generates dependency listings to check for modified header files

* Updated workflow to archive the generated binaries and build fullspec and standard versions of the app

* Updated to run workflow on all branches

* Create tar file to retain file permissions

* Fix archive path

* Fix typo

* Remove unnecessary git ignore

* Added reference to issue that drives the need for nested compressed files.

Co-authored-by: akuker <akuker@gmail.com>
2020-09-03 19:39:10 -05:00
PhrAx
7ff24d625b
Update Makefile
Fixed source path for make install, added $(BINDIR)/
2020-09-01 23:19:24 -07:00
akuker
25d0fdebcb These files were moved into the devices folder for issue #16, but weren't cleaned up. Removing the extraneous files. 2020-08-28 09:23:00 -05:00
akuker
5def9e3dfe
Break up disk.h and disk.cpp to be smaller files (#22) 2020-08-28 09:18:02 -05:00
akuker
2338b9b791 Updated makefile to cross-compile and updated github workflow to install tools 2020-08-27 23:16:23 -05:00
akuker
2da8d4dbdf Added visual studio code project 2020-08-16 13:23:42 -05:00
Chris Pickel
46e03a4026 Reimplement ParseArgs() with getopt()
The command-line interface is intended to be equivalent. For example,
consider this command:

    $ rascsi -ID0 zero.hda -ID1 one.hda

This is no longer two pairs (ID0, zero.hda), (ID1, one.hda), but a
sequence of commands:

* -I: next disk is SCSI (not SASI)
* -D 0: next disk is device 0
* zero.hda: set up disk
* -I: next disk is SCSI (not SASI)
* -D 1: next disk is device 1
* one.hda: set up disk

Since SCSI is [now] the default, this could equivalently be:

    $ rascsi -d 0 zero.hda -d 1 one.hda
2020-08-09 07:52:58 +01:00
Chris Pickel
8b340fde89 Split config parsing and arg parsing functions 2020-08-09 02:30:17 +01:00
akuker
e61dbdabe3 Enabled Shtudown & reboot commands 2020-08-07 17:03:47 -05:00
akuker
dfa28091e4 Added file upload functionality. Disabled some debug messages. 2020-08-07 16:59:42 -05:00
akuker
e962706d4e Merge branch 'master' of https://github.com/akuker/RASCSI 2020-08-07 14:25:20 -05:00
akuker
5a71783d33 Updated to allow command handler to run on x86 systems for development purposes. Also fixed warning about using fprintf incorrectly 2020-08-07 14:25:05 -05:00
akuker
377da587b7 Added functionality to create a new, empty hd image. 2020-08-07 12:51:33 -05:00
akuker
86bf896d66 Fixed connect_new_device function 2020-08-07 11:59:18 -05:00
akuker
c37abe3e73 Remove old files 2020-08-07 11:37:13 -05:00
akuker
c3e8204542 Started moving actions into a single php file to simplify things 2020-08-07 11:34:07 -05:00
Tony Kuker
82cc76daad Merge branch 'master' of https://github.com/akuker/RASCSI 2020-08-02 18:27:38 -05:00
akuker
a6d501b7e4 Can now add, eject and disconnect devices 2020-08-01 22:47:04 -05:00
akuker
a30889f7c1 Moved several php functions to a library that can be reused. Updated to use css for styles 2020-08-01 20:53:11 -05:00
akuker
9d94cdeec6 Updated SCSI table list to show all SCSI IDs 2020-08-01 19:22:07 -05:00
Tony Kuker
19e81178b8 Merge branch 'master' of https://github.com/akuker/RASCSI 2020-07-30 14:23:35 -05:00
akuker
66e4c91f61 Buttons are starting to do something... nothing useful... but something 2020-07-29 20:42:50 -05:00
akuker
4c02bd5a1a Fix collor when the service fails. Automatically refresh the status every 30 seconds 2020-07-26 21:06:48 -05:00
akuker
b8874d1e27 Created a frame around the rascsi interface and a status frame that will automatically update 2020-07-26 20:57:52 -05:00
akuker
9345e0dbe4 updated to work with Netscape 2020-07-26 20:27:59 -05:00
akuker
4cfd4b8afd Simple php page to check the status of the RaSCSI service 2020-07-26 20:21:50 -05:00
akuker
a482c465ad Created conceptual wireframe and generated new php file that sort-of matches the wireframe. Still a work in progress and doesn't do anything useful (yet) 2020-07-26 19:54:40 -05:00
Tony Kuker
5794e56477 Translated to Englished and fixed handling of files without an extension 2020-07-25 21:40:03 -05:00
Tony Kuker
3dc38ea959 Baseline version of index.php from https://github.com/ztto/rascsi-php 2020-07-25 21:36:35 -05:00
akuker
32af6cf169 Created a proper DEBUG build (specified using DEBUG=1). Set warnings to fatal for release builds and fixed the warnings throughout the code 2020-07-10 17:49:02 -05:00
akuker
b69d6fc409 Python script for monitoring rascsi and displaying status on a OLED display 2020-07-10 11:38:59 -05:00
akuker
74d6c5279d Python script for monitoring rascsi and displaying status on a OLED display 2020-07-10 11:38:31 -05:00
akuker
7a697309e2 Fix issue #8 - Code would return error when file was CORRECTLY opened and report success when it failed. 2020-07-09 20:20:18 -05:00
akuker
96704a002a Fix the CFlags and correct the debugger to launch the correct exe 2020-07-09 17:57:13 -05:00
akuker
c0e607eb9d Added some debug code for Issue #2. This will print out a warning when we get an unhandled mode page code, instead of crashing 2020-07-09 17:56:04 -05:00
Tony Kuker
6bdb841dfc Cleanup to merge in with main branch 2020-07-09 15:34:29 -05:00
Tony Kuker
a077a782d4 Merge branch 'master' of https://github.com/akuker/RASCSI 2020-07-09 15:19:05 -05:00
akuker
15bd9d7dd4 Ignore the binaries - don't check them into git 2020-07-09 13:38:00 -05:00
akuker
f263dd03b3 Removed extraneous debug printfs, removed scsimon 2020-07-09 13:36:25 -05:00
akuker
bd70788512 Added ability to use --help as well as -h to show usage info 2020-07-09 13:33:57 -05:00
akuker
13cafbc978 Added ability to use --help as well as -h to show usage info 2020-07-09 13:32:18 -05:00
akuker
1c45f8e33c Added warning at the top of the page to not manualy update 2020-07-09 13:28:17 -05:00
akuker
35d2b83811 Updated makefile to auto-generate man pages text files 2020-07-09 13:21:59 -05:00
akuker
5c604eb1ea Updated man pages 2020-07-09 13:00:06 -05:00
akuker
78eb315917 Updated rascsi man page 2020-07-09 12:24:47 -05:00