Commit Graph
27 Commits
Author SHA1 Message Date
Daniel Markstedt 2fd0318c88 piscsi-web: refactor away repeated string literals 2026-09-03 06:55:44 +02:00
Daniel Markstedt 6e195049c1 piscsi-web: mark safe shell commands with NOSONAR 2026-09-03 06:55:44 +02:00
Daniel Markstedt 9e79ae197d reformat Go code 2026-09-03 06:55:44 +02:00
Daniel Markstedt 6ee82fe953 piscsi-web: harden journal log capturing 2026-09-03 06:55:44 +02:00
Daniel Markstedt de2db84ee9 piscsi-web: configuration download hardening 2026-09-03 06:55:44 +02:00
Daniel Markstedt 7a00de2b0d update device type names for clarity 2026-09-01 22:45:35 +02:00
Daniel Markstedt 485298ffe5 restore X68000 Host Bridge support
Restore the SCBR device as an X68000 Host Bridge, including the Human68k-compatible host file-system service and the bridge-specific SCSI message handlers. Back its Ethernet path with the TAP driver, derive a stable locally administered MAC address, preserve the driver minimum-frame/FCS expectations, and restrict received traffic to its own unicast frames and broadcasts.

Match the RASCTL/RASETHER/RASDRV bridge protocol that originated in the parent RaSCSI project: dispatch its non-standard message format on READ(10)/WRITE(10) (0x28/0x2a), with type, function, phase, and a three-byte byte count carried in the CDB. Advertise the legacy control channel required by RASCTL, translate its list and device-management commands to PiSCSI operations, and defer stop or system-shutdown requests until after the response is sent, while gating this insecure interface behind a new '-c disabled|media|full' runtime option. Preserve the type-1 Ethernet exchange used by RASETHER and the type-2, phased filesystem exchange used by RASDRV.

Register the device in the factory, protobuf API, controller transfer path, command-line tooling, device listings, and web UI. Share the explicit bridge and proxy-ARP topology workflow with DaynaPort so both adapters validate and use the same mode/interface pair.

Add build support for iconv where needed, extend unit coverage for device creation, RAS* protocol handling, CLI parsing, web attachment, and topology selection, and update the man pages and network-profile documentation for Host Bridge operation and its networking limits.
2026-09-01 00:52:00 +02:00
Daniel Markstedt 74040c5a0a fix gettext translation merge script 2026-09-01 00:43:01 +02:00
Daniel Markstedt 4653db7313 ability to attach all devices in the Control Board UI
when you do Attach/Insert on an empty slot, you now get a list of all available device types instead of list of all images; picking one of them either attaches the device immediately, or takes you to a submenu for making additional choices (network topology, image file)

introduce image file filtering per the device type that is being attached, including filtered lists also for inserting media into existing removable devices

add an option to attach a removable device without inserting media
2026-08-31 07:16:21 +02:00
Daniel Markstedt c292364b44 improved horizontal scrolling and columns in OLED client
rather than scrolling a long status strings horizontally back and forth, we now have:

- ID and type as frozen columns
- scroll from left to right then wrap to the beginning
- 3 frame pause before scrolling starts
- 2 frame pause before a fully scrolled string wraps
- print product names for all non-file device types
- special abbreviation of SAHD->SA (to disambiguate with SCHD)
2026-08-30 18:27:17 +02:00
Daniel Markstedt 1a51f2441e add 'sasidump' entry to manpage test 2026-08-30 01:29:49 -07:00
Daniel Markstedt 03692438fa add sasidump to piscsi-web manpage index 2026-08-30 01:22:22 -07:00
Daniel Markstedt e57893893c restore support for SASI disk drive device
Introduce a SASI controller and SAHD disk implementation alongside the existing SCSI path. Select the appropriate controller when attaching a device, prevent SASI and SCSI devices from sharing a target ID, and implement SASI-specific selection, message, status, timing, and LUN handling.

Restore SAHD in the protocol and expose it consistently through the device factory, command-line client, configuration validation, web interface, drive profiles, and manual. Enforce the two-LUN limit for SASI targets wherever device definitions are created or parsed.

Bring back handling of the hdf image format and map it to the SAHD device type. The hdf file ending is the established one for SASI raw disk images used in the X68000 emulation community, however it is a raw data format without any special header.

Add focused C++ and Go coverage for SASI devices, controller selection, LUN validation, and web-facing behavior.
2026-08-30 08:27:35 +02:00
Daniel Markstedt 087bf241a3 correct language spellings 2026-08-27 22:59:43 +02:00
Daniel Markstedt 48ed872a99 rewrite companion service detection with systemd 2026-08-27 22:59:43 +02:00
Daniel Markstedt cbf399cc30 bump release version to 26.8.1 2026-08-23 14:45:47 +02:00
Daniel Markstedt e2735813a3 parprouted bridge for SCDP adapter
Refactor the DaynaPort TAP driver around explicit bridge and proxy-ARP profiles. Validate the selected interface and profile before creating piscsi0, attach it only to the preconfigured bridge when appropriate, derive a stable DaynaPort MAC address from the uplink, and make TAP setup and cleanup robust.

Add managed host networking profiles for wired bridging and Wi-Fi proxy ARP. Install the PiSCSI NetworkManager templates, profile-management command, parprouted and DHCP relay system services, udev/sysctl hooks, and configuration file so a selected Wi-Fi uplink can provide proxy-ARP networking without altering connectivity during package installation.

Expose DaynaPort profiles consistently through the protocol, daemon, scsictl, and web UI. Report interface type, state, and supported modes; require or default explicit mode/interface pairs on attach; present eligible wired-bridge and Wi-Fi proxy-ARP choices; and validate selections before attaching an SCDP device.

Package and document the new networking workflow. Add the profile utility and required runtime assets to Debian packages, expand the manual-page set and web manual index, update DaynaPort command help, and extend unit and handler tests for the profile-aware behavior.
2026-08-23 12:15:13 +02:00
Daniel Markstedt 0b4ffd5998 piscsi-web: add an upload progress indicator
introduce preflight validation that the target file doesn't already exist
2026-08-22 00:26:25 +02:00
Daniel Markstedt 27da017951 improve media workflows and version reporting in Go clients
- Extract selected archives directly into the image directory, skip existing images, and move properties files into the configuration directory without duplicate temporary storage.

- Limit no-media selectors to compatible image types, render device parameters without Go map delimiters, and return uploads to the upload page.

- Limit web uploads to the largest supported drive preset and simplify upload/download destination selection.

- Generate the shared Go project version from the C++ source, expose it through -v in the web, OLED, and Control Board clients, and verify it in Make, CI, and Debian builds.

- Update tests and documentation for the corrected web workflows and version flags.
2026-08-22 00:26:25 +02:00
Daniel Markstedt 95ed9e924a piscsi-web: add support for MiniSCSI driver for HFS image creation
when placed in the Mac drivers dir and renamed to 'miniscsi.bin' the Web UI
can create a working HFS disk image to be mounted on a classic Mac

MiniSCSI is a free and open source alternative to historical Mac drivers:

https://github.com/ingpaschke/miniscsi

currently, only a m68k driver is available so PPC Macs are not supported

additionally, the Web UI will scan the Mac drivers dir for any file ending
in .bin or .img and will enumerate them for the disk image creation form;
before, only a few named images were offered as options
2026-08-21 18:44:47 +02:00
Daniel Markstedt d8ff0abbad bypass check for piscsi-web templates dir in production mode 2026-08-21 07:09:06 +02:00
Daniel Markstedt 2643ecb657 use explicit http.Server to initialize the web server
and pin Go builds to the latest security patch level 1.25.13
2026-08-21 07:09:06 +02:00
Daniel Markstedt de7ce9b40a read drive properties config file from /etc/piscsi-web 2026-08-21 07:09:06 +02:00
Daniel Markstedt fa878e3133 create Debian packaging files
Debian deb packaging files for all four targets: piscsi, piscsi-web,
piscsi-oled, piscsi-ctrlboard

build instructions for Trixie specifically in README.Debian

consolidate all systemd unit files and standardize on /usr/bin
for all binaries
2026-08-21 07:09:06 +02:00
Daniel Markstedt 8a8561b450 rewrite Control Board client in Go
Replace the Python Control Board client with a native Go service that reads the PCA9554 input expander through the GPIO interrupt path, renders the 128x64 SSD1306 menu, and drives SCSI ID, image, profile, and system-action workflows through the PiSCSI daemon. Keep input handling latency-sensitive with bounded queues, debouncing, diagnostics, and a separate asynchronous menu, display, and network pipeline.

Add a Control Board command, service unit, cross-build targets, and comprehensive unit coverage. Consolidate common I2C, configuration/profile, host-information, command, and embedded-asset support under the shared Go packages; update the OLED client and web configuration code to use those shared components, and document Control Board prerequisites, build, run, diagnostic, and service setup.

The PiSCSI Control Board hardware and original Python client were created by Benjamin Zeiss (@bzeiss), and the Go client is a rewrite of that software.
2026-08-02 09:01:26 +02:00
Daniel Markstedt 82a56a0eee rewrite OLED monitor in Go
Replace the previous OLED monitor implementation with a native Go application. Add SSD1306 display support over Linux I2C, status polling through the shared PiSCSI client, configurable rendering and rotation, diagnostic splash screens, graceful shutdown, and IP or blank screensaver modes. Include embedded fonts and bitmap assets together with focused renderer, status, and screensaver tests.

Restructure the Go code under a shared module rooted at go/, moving the PiSCSI client and protobuf package out of the web application's internal tree so they can be reused by the OLED monitor. Update imports, generation scripts, web build and installation scripts, and configuration paths to match the new layout.

Extend the Makefile, systemd integration, and GitHub Actions workflow to build, test, package, and install both Go applications for supported Raspberry Pi targets. Add dependency tracking for the shared Go module and provide a dedicated piscsi-oled service and installation target.
2026-08-01 17:06:22 +02:00
Eric Helgeson 7bef2d72ae rewrite Web UI in Go
Introduce a server-rendered Go control panel for managing PiSCSI devices, disk images, saved configurations, archives, uploads, system settings, embedded themes and translations, PWA assets, a mock daemon, installation and systemd support, generated protobuf bindings, tests, and CI builds for supported Raspberry Pi targets.

This is built for feature parity with the Python Web UI, with a few notable differences: piscsi-web runs as a non-privileged user, there is no user authentication, the upload form uses a plain stream with no Javascript, the ability to set 'pretty hostname' is removed, and reserved ID memos are removed too.

Update piscsi core to use /var/lib/piscsi/images as its default and resolve relative image folders from the server working directory. Allow valid folders outside the user's home directory, and align the tests, protocol comments, service example, and man pages with the new behavior.

Ship a script and makefile target for migrating user data from old to new file system locations.
2026-08-01 12:30:27 +02:00