mirror of
https://github.com/cyberarm/w3d_hub_linux_launcher.git
synced 2025-12-16 17:22:35 +00:00
Merge branch 'feature-buildBinaryPackage' of github.com:The-Unnamed-Engineer/w3d_hub_linux_launcher into The-Unnamed-Engineer-feature-buildBinaryPackage
This commit is contained in:
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 W3DHub
|
||||||
class Api
|
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
|
LOG_TAG = "W3DHub::Api".freeze
|
||||||
|
|
||||||
API_TIMEOUT = 30 # seconds
|
API_TIMEOUT = 30 # seconds
|
||||||
|
|||||||
@@ -10,6 +10,15 @@ class W3DHub
|
|||||||
TAG = "IRCClient"
|
TAG = "IRCClient"
|
||||||
|
|
||||||
class SSL
|
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
|
def self.default_context
|
||||||
verify_peer_and_hostname
|
verify_peer_and_hostname
|
||||||
end
|
end
|
||||||
@@ -23,7 +32,13 @@ class W3DHub
|
|||||||
def self.verify_peer
|
def self.verify_peer
|
||||||
no_verify.tap do |context|
|
no_verify.tap do |context|
|
||||||
context.verify_mode = OpenSSL::SSL::VERIFY_PEER
|
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
|
||||||
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
|
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
|
background 0x44_000000
|
||||||
|
|
||||||
|
# Ensure the image file exists before trying to load it
|
||||||
|
if File.exist?(image_path)
|
||||||
image image_path, height: 1.0
|
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
|
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
|
tagline "<b>#{item.title}</b>", width: 1.0
|
||||||
|
|||||||
@@ -84,7 +84,7 @@ class W3DHub
|
|||||||
when "es"
|
when "es"
|
||||||
"Español"
|
"Español"
|
||||||
else
|
else
|
||||||
raise "Unknown language error"
|
logger.warn("W3DHub::Settings") { "Unknown language code: #{string.inspect}" }
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@@ -20,12 +20,19 @@ class W3DHub
|
|||||||
W3DHUB_DEBUG = ARGV.join.include?("--debug")
|
W3DHUB_DEBUG = ARGV.join.include?("--debug")
|
||||||
W3DHUB_DEVELOPER = ARGV.join.include?("--developer")
|
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"
|
CACHE_PATH = "#{GAME_ROOT_PATH}/data/cache"
|
||||||
|
LOGS_PATH = "#{GAME_ROOT_PATH}/data/logs"
|
||||||
SETTINGS_FILE_PATH = "#{GAME_ROOT_PATH}/data/settings.json"
|
SETTINGS_FILE_PATH = "#{GAME_ROOT_PATH}/data/settings.json"
|
||||||
APPLICATIONS_CACHE_FILE_PATH = "#{GAME_ROOT_PATH}/data/applications_cache.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
|
LOGGER.level = Logger::Severity::DEBUG # W3DHUB_DEBUG ? Logger::Severity::DEBUG : Logger::Severity::WARN
|
||||||
|
|
||||||
LOG_TAG = "W3DHubLinuxLauncher"
|
LOG_TAG = "W3DHubLinuxLauncher"
|
||||||
|
|||||||
Reference in New Issue
Block a user