mirror of
https://github.com/cyberarm/w3d_hub_linux_launcher.git
synced 2025-12-15 08:42:34 +00:00
Compare commits
10 Commits
0bb8ef5f19
...
ad2544a56b
| Author | SHA1 | Date | |
|---|---|---|---|
| ad2544a56b | |||
| 80c104772f | |||
| 09082c0c5d | |||
|
|
27e5da9fd2 | ||
|
|
e239f9cd4d | ||
|
|
b68d24deda | ||
|
|
1081832df0 | ||
|
|
c3cee78265 | ||
|
|
4d3163740a | ||
|
|
f1953c45e7 |
47
.github/workflows/build-tebako.yml
vendored
Normal file
47
.github/workflows/build-tebako.yml
vendored
Normal file
@@ -0,0 +1,47 @@
|
||||
name: Build Launcher Binary
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [ master, test ]
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
build-tebako:
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
matrix:
|
||||
architecture: [x64]
|
||||
container:
|
||||
image: ghcr.io/tamatebako/tebako-ubuntu-20.04:latest
|
||||
defaults:
|
||||
run:
|
||||
shell: bash
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: Install Gosu and native dependencies
|
||||
run: |
|
||||
apt-get update
|
||||
apt-get install -y libsdl2-dev libgl1-mesa-dev libopenal-dev libgmp-dev libfontconfig1-dev libsndfile1-dev libmpg123-dev libpango1.0-dev libtool libssl-dev libffi-dev
|
||||
|
||||
- name: Update Bundler and lockfile
|
||||
run: |
|
||||
gem install bundler -v 2.4.22
|
||||
bundle _2.4.22_ lock --update --bundler
|
||||
|
||||
- name: Build Tebako binary
|
||||
run: |
|
||||
tebako press -P -R 3.4.1 -m bundle -o w3d_hub_linux_launcher -r $PWD -e w3d_hub_linux_launcher.rb
|
||||
|
||||
- name: Prepare artifact directory
|
||||
run: |
|
||||
mkdir w3d-hub-launcher-x86_64
|
||||
cp w3d_hub_linux_launcher w3d-hub-launcher-x86_64/
|
||||
cp -r media w3d-hub-launcher-x86_64/
|
||||
cp -r locales w3d-hub-launcher-x86_64/
|
||||
|
||||
- name: Upload artifact
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: w3d-hub-launcher-x86_64
|
||||
path: w3d-hub-launcher-x86_64
|
||||
14
lib/api.rb
14
lib/api.rb
@@ -1,5 +1,19 @@
|
||||
class W3DHub
|
||||
class Api
|
||||
|
||||
# Detect CA bundle path for Excon
|
||||
def self.ca_bundle_path
|
||||
redhat_path = '/etc/pki/tls/certs/ca-bundle.crt'
|
||||
debian_path = '/etc/ssl/certs/ca-certificates.crt'
|
||||
[redhat_path, debian_path].find { |path| File.exist?(path) }
|
||||
end
|
||||
|
||||
# Set Excon default CA file if found
|
||||
ca_file = ca_bundle_path
|
||||
if ca_file
|
||||
Excon.defaults[:ssl_ca_file] = ca_file
|
||||
end
|
||||
|
||||
LOG_TAG = "W3DHub::Api".freeze
|
||||
|
||||
API_TIMEOUT = 30 # seconds
|
||||
|
||||
@@ -10,6 +10,15 @@ class W3DHub
|
||||
TAG = "IRCClient"
|
||||
|
||||
class SSL
|
||||
# Detect system CA bundle path for SSL verification
|
||||
def self.ca_bundle_path
|
||||
[
|
||||
'/etc/ssl/certs/ca-certificates.crt', # Debian/Ubuntu
|
||||
'/etc/pki/tls/certs/ca-bundle.crt', # RHEL/Fedora/CentOS
|
||||
'/etc/ssl/ca-bundle.pem' # Some other distros
|
||||
].find { |path| File.exist?(path) }
|
||||
end
|
||||
|
||||
def self.default_context
|
||||
verify_peer_and_hostname
|
||||
end
|
||||
@@ -23,7 +32,13 @@ class W3DHub
|
||||
def self.verify_peer
|
||||
no_verify.tap do |context|
|
||||
context.verify_mode = OpenSSL::SSL::VERIFY_PEER
|
||||
context.cert_store = OpenSSL::X509::Store.new.tap(&:set_default_paths)
|
||||
context.cert_store = OpenSSL::X509::Store.new
|
||||
ca_file = ca_bundle_path
|
||||
if ca_file
|
||||
context.cert_store.add_file(ca_file)
|
||||
else
|
||||
context.cert_store.set_default_paths
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@@ -161,7 +161,13 @@ class W3DHub
|
||||
flow(width: 1.0, max_width: 1230, height: 200, margin: 8, border_thickness: 1, border_color: lighten(Gosu::Color.new(0xff_252525))) do
|
||||
background 0x44_000000
|
||||
|
||||
image image_path, height: 1.0
|
||||
# Ensure the image file exists before trying to load it
|
||||
if File.exist?(image_path)
|
||||
image image_path, height: 1.0
|
||||
else
|
||||
logger.warn("W3DHub::Community") { "Image not found in cache: #{image_path}" }
|
||||
image BLACK_IMAGE, height: 1.0
|
||||
end
|
||||
|
||||
stack(fill: true, height: 1.0, padding: 4, border_thickness_left: 1, border_color_left: lighten(Gosu::Color.new(0xff_252525))) do
|
||||
tagline "<b>#{item.title}</b>", width: 1.0
|
||||
|
||||
@@ -84,7 +84,7 @@ class W3DHub
|
||||
when "es"
|
||||
"Español"
|
||||
else
|
||||
raise "Unknown language error"
|
||||
logger.warn("W3DHub::Settings") { "Unknown language code: #{string.inspect}" }
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@@ -162,7 +162,7 @@ class W3DHub
|
||||
|
||||
def launcher_updater
|
||||
@status_label.value = "Checking for Launcher updates..." # I18n.t(:"boot.checking_for_updates")
|
||||
|
||||
|
||||
Api.on_thread(:fetch, "https://api.github.com/repos/Inq8/CAmod/releases/latest") do |response|
|
||||
if response.status == 200
|
||||
hash = JSON.parse(response.body, symbolize_names: true)
|
||||
@@ -175,7 +175,7 @@ class W3DHub
|
||||
LauncherUpdaterDialog,
|
||||
release_data: hash,
|
||||
available_version: available_version,
|
||||
cancel_callback: -> { @tasks[:launcher_updater][:complete] = true },
|
||||
cancel_callback: -> { @tasks[:launcher_updater][:complete] = true },
|
||||
accept_callback: -> { @tasks[:launcher_updater][:complete] = true }
|
||||
)
|
||||
else
|
||||
|
||||
@@ -20,12 +20,19 @@ class W3DHub
|
||||
W3DHUB_DEBUG = ARGV.join.include?("--debug")
|
||||
W3DHUB_DEVELOPER = ARGV.join.include?("--developer")
|
||||
|
||||
GAME_ROOT_PATH = File.expand_path(".", __dir__)
|
||||
# Use the real working directory as the root for runtime data/logs
|
||||
GAME_ROOT_PATH = Dir.pwd
|
||||
|
||||
CACHE_PATH = "#{GAME_ROOT_PATH}/data/cache"
|
||||
LOGS_PATH = "#{GAME_ROOT_PATH}/data/logs"
|
||||
SETTINGS_FILE_PATH = "#{GAME_ROOT_PATH}/data/settings.json"
|
||||
APPLICATIONS_CACHE_FILE_PATH = "#{GAME_ROOT_PATH}/data/applications_cache.json"
|
||||
|
||||
LOGGER = Logger.new("#{GAME_ROOT_PATH}/data/logs/w3d_hub_linux_launcher.log", "daily")
|
||||
# Ensure data/cache and data/logs exist
|
||||
FileUtils.mkdir_p(CACHE_PATH) unless Dir.exist?(CACHE_PATH)
|
||||
FileUtils.mkdir_p(LOGS_PATH) unless Dir.exist?(LOGS_PATH)
|
||||
|
||||
LOGGER = Logger.new("#{LOGS_PATH}/w3d_hub_linux_launcher.log", "daily")
|
||||
LOGGER.level = Logger::Severity::DEBUG # W3DHUB_DEBUG ? Logger::Severity::DEBUG : Logger::Severity::WARN
|
||||
|
||||
LOG_TAG = "W3DHubLinuxLauncher"
|
||||
|
||||
Reference in New Issue
Block a user