{"id":49514208,"url":"https://github.com/andrewtimmins/riscos-access-server","last_synced_at":"2026-05-01T21:08:29.223Z","repository":{"id":330223556,"uuid":"1121959287","full_name":"andrewtimmins/riscos-access-server","owner":"andrewtimmins","description":"An open-source Acorn Access+/ShareFS server for Linux, MacOS and Windows.","archived":false,"fork":false,"pushed_at":"2026-01-10T00:44:07.000Z","size":216,"stargazers_count":2,"open_issues_count":4,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-01-10T22:38:31.356Z","etag":null,"topics":["acorn","networking","riscos","server"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/andrewtimmins.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-12-23T21:20:13.000Z","updated_at":"2026-01-10T00:39:03.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/andrewtimmins/riscos-access-server","commit_stats":null,"previous_names":["andrewtimmins/riscos-access-server"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/andrewtimmins/riscos-access-server","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andrewtimmins%2Friscos-access-server","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andrewtimmins%2Friscos-access-server/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andrewtimmins%2Friscos-access-server/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andrewtimmins%2Friscos-access-server/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/andrewtimmins","download_url":"https://codeload.github.com/andrewtimmins/riscos-access-server/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andrewtimmins%2Friscos-access-server/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32512780,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-30T13:12:12.517Z","status":"online","status_checked_at":"2026-05-01T02:00:05.856Z","response_time":64,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["acorn","networking","riscos","server"],"created_at":"2026-05-01T21:08:28.550Z","updated_at":"2026-05-01T21:08:29.202Z","avatar_url":"https://github.com/andrewtimmins.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# RISC OS Access/ShareFS Server\n\n**Author:** Andrew Timmins  \n**License:** GPL-3.0-only\n\nA C11 implementation of an Acorn Access/ShareFS-compatible server for Linux and Windows. This allows modern computers to share files with RISC OS machines over a local network using the native ShareFS protocol.\n\n## Features\n\n- **Full ShareFS Protocol** - Complete implementation including file operations, directory browsing, and attribute handling\n- **Freeway Broadcasts** - Automatic share discovery by RISC OS clients (port 32770)\n- **Access+ Authentication** - Password-protected shares (port 32771)\n- **RISC OS Filetype Preservation** - Via `,xxx` suffixes or automatic MIME mapping\n- **Admin GUI** - wxWidgets-based graphical interface for easy configuration and server control\n- **Cross-Platform** - Native Linux and Windows builds\n\n---\n\n## Quick Start (Installation)\n\n### Linux (Debian/Ubuntu)\n\n1. Download the latest `.deb` release.\n2. Install it:\n   ```bash\n   sudo apt install ./riscos-access-server_*.deb\n   ```\n3. **That's it!** The server starts automatically as a system service.\n   - **Configure:** Run `access-admin` (or edit `/etc/access.conf`)\n   - **Status:** `sudo systemctl status access`\n\n### Windows\n\n1. Download the Windows zip archive (`riscos-access-server_*.zip`).\n2. Extract it to a folder.\n3. Run `access.exe` (Server) or `access-admin.exe` (GUI).\n   - **Note:** You likely need to allow the application through Windows Firewall (Ports 32770, 32771, 49171 UDP).\n\n---\n\n## Building\n\n### Automated Build\n\nWe provide scripts that automate the entire build process:\n\n```bash\n# Clone the repository\ngit clone https://github.com/andrewtimmins/riscos-access-server.git\ncd riscos-access-server\n\n# Install build dependencies (auto-detects your distro)\n./setup-build-env.sh\n\n# Build for Linux\n./build.sh\n```\n\n**Output:** Binaries are placed in `releases/linux/`\n\n### Build Options\n\n```bash\n./build.sh                    # Linux only\n./build.sh --deb              # Linux + create .deb package\n./build.sh --windows          # Linux + Windows (server only)\n./build.sh --windows-full     # Linux + Windows (server + admin GUI)\n./build.sh --zip              # Create .zip archive (Windows only)\n./build.sh --all              # Build Linux + Win Server + .deb\n./build.sh --all-full         # Build everything (incl. Win Admin GUI + zip)\n./build.sh --clean            # Remove all build directories\n```\n\n### Building for Windows\n\nTo cross-compile for Windows from Linux:\n\n```bash\n# Install Windows cross-compilation tools\n./setup-build-env.sh --windows\n\n# Build Windows executables\n./build.sh --windows          # Server only (~600KB)\n\n# Or with admin GUI (requires wxWidgets, ~10-15 min one-time setup)\n./build.sh --windows-wxwidgets  # One-time wxWidgets build\n./build.sh --windows-full       # Server + Admin GUI (~13MB)\n```\n\n**Output:** Binaries are placed in `releases/windows/`\n\n### Manual Build (Advanced)\n\nIf you prefer manual control:\n\n```bash\n# Linux\ncmake -S . -B build\ncmake --build build -j$(nproc)\n\n# Create deb package\ncd build \u0026\u0026 cpack -G DEB\n\n# Windows cross-compile (server only)\ncmake -S . -B build-win -DCMAKE_TOOLCHAIN_FILE=mingw-w64-x86_64.cmake -DRAS_BUILD_ADMIN=OFF\ncmake --build build-win -j$(nproc)\n```\n\n---\n\n## Running\n\n**Note for WiFi users:** WiFi usually requires binding to a specific IP. Run `ipconfig` (Windows) or `ip addr` (Linux) to find your adapter's IP address and add it to the `bind_ip` setting in `access.conf` (or usage the Admin GUI).\n\n### Linux (Debian/Ubuntu Package)\n\nThe server runs automatically as a system service.\n\n```bash\n# Check status\nsudo systemctl status access\n\n# Start/Stop/Restart\nsudo systemctl start access\nsudo systemctl stop access\nsudo systemctl restart access\n\n# Run Admin GUI (Installed to system path)\naccess-admin\n```\nConfiguration is at `/etc/access.conf`.\n\nNon-root management (Debian/Ubuntu package):\n- Add your user to the `access-admin` group: `sudo usermod -aG access-admin $USER` then re-login.\n- `/etc/access.conf` is owned by `root:access-admin` with mode `664`, so group members can edit it without sudo.\n- A polkit rule allows the `access-admin` group to start/stop/restart `access.service` without a password (e.g., `systemctl restart access`).\n\n### Windows (Installer)\n\n1. Run the Windows installer (`riscos-access-server_*.exe`).\n2. Everything is installed to `C:\\AccessServer`:\n   - Binaries: `access.exe`, `access-admin.exe`, `access-service.exe`\n   - Config: `access.conf`\n   - Shares: `C:\\AccessServer\\Shares\\Public` (writeable for local users out of the box)\n3. Firewall rules for UDP 32770, 32771, 49171 are added during install.\n4. Start/stop/restart the server via the Admin GUI (controls the Windows service) or run `access-service.exe start|stop`.\n\n### Windows (Zip Archive)\n\nExtract the zip archive anywhere (no installer, no firewall rules configured automatically).\n\n- **Run Server:** Double-click `access.exe` (or run from CMD: `access.exe access.conf`).\n- **Run Admin GUI:** Double-click `access-admin.exe` (if included).\n\n\u003e **Firewall Warning:** Ensure Windows Firewall allows UDP ports 32770, 32771, and 49171.\n\n#### Windows Service Installation\n\nFor automatic startup and running in the background, you can install the server as a Windows service:\n\n1. Open PowerShell or Command Prompt **as Administrator**\n2. Navigate to the installation directory\n3. Run: `access-service.exe install`\n4. The service is configured to start automatically on boot\n5. To start immediately: `access-service.exe start`\n   - Or use the Services console (`services.msc`)\n\n**Configuration file location**: `C:\\AccessServer\\access.conf`  \n(Falls back to `access.conf` in the executable directory if the above doesn't exist)\n\n**Managing the service:**\n- **Start**: `access-service.exe start` or use Services console\n- **Stop**: `access-service.exe stop`\n- **Check status**: `sc query RiscOsAccessServer`\n- **Uninstall**: `access-service.exe stop` (if running), then `access-service.exe uninstall`\n\n**Admin GUI integration**: The Admin GUI automatically detects if the Windows service is installed and provides start/stop/restart controls for it.\n\n### Using the Admin GUI\n\nThe Admin GUI allows easy configuration and control:\n\n**Features:**\n- **Server Tab** - Configure log level, broadcast interval, and Access+ authentication\n- **Shares Tab** - Add, edit, and remove file shares\n- **Printers Tab** - Configure network printer shares\n- **MIME Map Tab** - Map file extensions to RISC OS filetypes\n- **Control Tab** - Start/stop/restart server with live log viewer\n\n### Manual / Development Build\n\nIf running directly from the build output (e.g., for testing):\n\n```bash\n# Linux\n./releases/linux/access releases/linux/access.conf\n./releases/linux/access-admin\n\n# Windows\nreleases/windows/access.exe releases/windows/access.conf\n```\n\n---\n\n## Configuration\n\nThe server is configured via `access.conf`. The Admin GUI is the easiest way to edit this file, but you can also edit it manually:\n\n```ini\n# Access/ShareFS Server Configuration\n\n[server]\nlog_level = info\nbroadcast_interval = 3\n\naccess_plus = true\nbind_ip = 192.168.1.100  # Optional: Bind to specific interface\n\n[share:Public]\npath = /home/user/public\n\n[share:Documents]\npath = /home/user/documents\nattributes = protected\npassword = secret123\ndefault_filetype = FFF\n\n[share:CD-ROM]\npath = /media/cdrom\nattributes = cdrom,readonly\n\n[mimemap]\ntxt = FFF\npdf = ADF\nhtml = FAF\njpg = C85\npng = B60\n```\n\n### Server Settings\n\n| Setting             | Description                                             | Default         |\n|---------------------|---------------------------------------------------------|-----------------|\n| `log_level`         | Logging verbosity: `debug`, `info`, `warn`, `error`     | `info`          |\n| `broadcast_interval`| Seconds between Freeway broadcasts (0 to disable)       | `3`             |\n| `access_plus`       | Enable Access+ authentication support                   | `false`         |\n| `bind_ip`           | IP address to bind to (required for Windows WiFi)       | `0.0.0.0` (all) |\n\n### Share Attributes\n\n| Attribute           | Description                                                               |\n|---------------------|---------------------------------------------------------------------------|\n| `protected`         | Requires Access+ authentication with password                             |\n| `readonly`          | Read-only access (no writes allowed)                                      |\n| `hidden`            | Hidden from RISC OS *Free browser                                         |\n| `cdrom`             | Treat as CD-ROM (implies readonly)                                        |\n\n### MIME Mappings\n\nMap file extensions to RISC OS filetypes (3-character hex codes):\n\n| Extension | Filetype | Description                                                              |\n|-----------|----------|--------------------------------------------------------------------------|\n| `txt`     | `FFF`    | Text                                                                     |\n| `html`    | `FAF`    | HTML                                                                     |\n| `pdf`     | `ADF`    | PDF                                                                      |\n| `jpg`     | `C85`    | JPEG Image                                                               |\n| `png`     | `B60`    | PNG Image                                                                |\n| `zip`     | `A91`    | Archive                                                                  |\n\nThe Admin GUI includes common default mappings when creating a new configuration.\n\n---\n\n## Troubleshooting\n\n### Server not visible to RISC OS clients\n\n1. Ensure the server and RISC OS machine are on the same network/subnet\n2. Check firewall allows UDP ports 32770, 32771, and 49171\n3. On Windows WiFi, make sure you configured `bind_ip` in `access.conf` with your IP address\n\n### Permission denied errors\n\nEnsure the server has read/write access to the share paths configured.\n\n### Log file location / permission denied\n\nBy default on Linux the server writes to `/var/log/access/access.log`. If that path is not writable (e.g., running unprivileged or without the service-created directory), the server now falls back to `/tmp/riscos-access.log` and prints a warning. On Windows, logging uses `C:\\AccessServer\\access.log` and falls back to `./access.log` when the primary path is unavailable.\n\n### Admin GUI won't start\n\nMake sure wxWidgets is installed (see Prerequisites section for your distribution).\n\n---\n\n## License\n\nThis project is licensed under the GNU General Public License v3.0. See LICENSE file for details.\n\nCopyright © Andrew Timmins, 2025.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandrewtimmins%2Friscos-access-server","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fandrewtimmins%2Friscos-access-server","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandrewtimmins%2Friscos-access-server/lists"}