diff --git a/bin/admin/certbot-cert b/bin/admin/certbot-cert deleted file mode 100644 index e06ff98..0000000 --- a/bin/admin/certbot-cert +++ /dev/null @@ -1,4 +0,0 @@ -#/usr/bin/env bash - -certbot certonly --manual --preferred-challenges=dns -d "*.gurgul.org" -d "gurgul.org" - diff --git a/bin/admin/install-idf b/bin/admin/install-idf deleted file mode 100644 index 06d9939..0000000 --- a/bin/admin/install-idf +++ /dev/null @@ -1,21 +0,0 @@ -if [ -z "$SUDO_USER" ]; then - echo "This script must be run within sudo." - exit 1 -fi - -# from says ~/esp -ESP=/pkg/esp - -apt-get install git wget flex bison gperf python3 python3-pip python3-venv cmake ninja-build ccache libffi-dev libssl-dev dfu-util libusb-1.0-0 - -sudo -u "$SUDO_USER" bash <= 3.0" -gem "roda" -gem "puma" -gem "rackup" \ No newline at end of file diff --git a/bin/services/ca/Gemfile.lock b/bin/services/ca/Gemfile.lock deleted file mode 100644 index d81fe89..0000000 --- a/bin/services/ca/Gemfile.lock +++ /dev/null @@ -1,26 +0,0 @@ -GEM - remote: https://rubygems.org/ - specs: - nio4r (2.7.4) - puma (6.6.1) - nio4r (~> 2.0) - rack (3.2.0) - rackup (2.2.1) - rack (>= 3) - roda (3.95.0) - rack - -PLATFORMS - arm64-darwin-24 - ruby - -DEPENDENCIES - puma - rackup - roda - -RUBY VERSION - ruby 3.4.5p51 - -BUNDLED WITH - 2.6.9 diff --git a/bin/services/ca/app.rb b/bin/services/ca/app.rb deleted file mode 100644 index 46a803c..0000000 --- a/bin/services/ca/app.rb +++ /dev/null @@ -1,12 +0,0 @@ -require "roda" - -class App < Roda - # automatically sets application/json and encodes Ruby objects - plugin :json - - route do |r| - r.get "hello" do - { message: "world" } - end - end -end \ No newline at end of file diff --git a/bin/services/ca/config.ru b/bin/services/ca/config.ru deleted file mode 100644 index d829dc7..0000000 --- a/bin/services/ca/config.ru +++ /dev/null @@ -1,2 +0,0 @@ -require_relative "app" -run App.freeze.app \ No newline at end of file diff --git a/bin/services/ca/make b/bin/services/ca/make deleted file mode 100755 index e69de29..0000000 diff --git a/bin/services/ca/readme.md b/bin/services/ca/readme.md deleted file mode 100644 index 211b003..0000000 --- a/bin/services/ca/readme.md +++ /dev/null @@ -1,9 +0,0 @@ - -bundle exec rackup -p 9292 -o 0.0.0.0 - - - -RACK_ENV=production bundle exec rackup -p 8080 -o 0.0.0.0 - - -curl http://0.0.0.0:9292/hello --verbose \ No newline at end of file diff --git a/bin/ssl b/bin/ssl index 973d60a..60ce748 100755 --- a/bin/ssl +++ b/bin/ssl @@ -17,11 +17,9 @@ subcommand = ARGV.shift&.to_sym arg1 = ARGV[0] && ARGV[0] !~ /^-/ ? ARGV.shift : nil arg2 = ARGV[0] && ARGV[0] !~ /^-/ ? ARGV.shift : nil -# $domains = ["mediacenter.lan"] -# $ips = ["192.168.0.94"] -$domains = ["testing.self"] -$ips = ["127.0.0.2"] -$ips = [] +$domains = ["mediacenter.lan"] +$ips = ["192.168.0.94"] + ### Setting up for client $cn = $domains.first diff --git a/bin/vm b/bin/vm index 969248b..983fb1f 100755 --- a/bin/vm +++ b/bin/vm @@ -4,10 +4,6 @@ require 'optparse' require 'ostruct' require 'virtual-machine' -# Paramteters -# -env: DAT_VM_DATA=~/.cache/vm - - # vm setup debian --arch "" --name "" options = OpenStruct.new @@ -22,8 +18,6 @@ OptionParser.new do |opt| opt.on('--name NAME', 'Virtaul Machine name') do |name| options.name = name end - # --port (ssh port) - # --attached (do not leave the shell process) # new from copy # fetch from the server end.parse! @@ -31,40 +25,11 @@ end.parse! case subcommand when :create - puts "vm create debian-copy --name debian" - puts "Creating image base on existing one...." -when :run - # same as setup but fetches image not - puts "Run the image or fetch and run...." - options[:distro] = parameter - VirtualMachine.run(options) - + puts "Creating image...." + when :setup options[:distro] = parameter VirtualMachine.setup(options) -when :archive - # whole image or files that are not present in the archived - # --type files (zst all files by files) - # by default - #before start if should create index of files that are present on - # the vm, so later we can copy new files or changed - - options[:distro] = parameter - VirtualMachine.archive(options) - -when :appy - puts "appy chnages from VM to the host os" -when :restore - options[:distro] = parameter - VirtualMachine.restore(options) - #puts "download image from remote or if local copy exists then the local copy" -when :daemon - puts "setup a pprocess so i can attach to it" - # paramaters exatly as run/setup -when :status - puts "Print all images and status stopped/daemon(port)/running(port/)" -when :attach - puts "if not paramteres attaches to last used" else puts "Error not found #{options.type}" end \ No newline at end of file diff --git a/lib/virtual-machine.rb b/lib/virtual-machine.rb index ef696b9..3875625 100644 --- a/lib/virtual-machine.rb +++ b/lib/virtual-machine.rb @@ -2,46 +2,13 @@ require 'downloader' require 'system' require_relative 'data/resources/iso-images' require 'vm/qemu' -require 'vm/archive' module VirtualMachine def self.distro(name, arch, type = :install) - ISO_URLS[name][arch][type] + ISO_URLS[:debian][:arm64][:install] end - def self.vm_root_path - ENV["DAT_VM_DATA"] || File.join(User.cache_path, "vm") - end - - def self.vm_dir(options) - File.join(vm_root_path, "image", "#{options[:distro].to_s}-#{options[:arch].to_s}", options[:name]) - end - - def self.archive_dir(options) - File.join(vm_root_path, "archive", "#{options[:distro].to_s}-#{options[:arch].to_s}", options[:name]) - end - - def self.create_archive_path(options) - File.join(archive_dir(options), "archive.tar.zst") - end - - def self.get_recent_archive_path(options) - File.join(archive_dir(options), "archive.tar.zst") - end - - # https://artur.gurgul.pro/vm/ - # https://artur.gurgul.pro/vm/debian-arm64/debian/archive.tar.zst - - def self.vm_archive_url(options) - return nil unless ENV["DAT_VM_REPO_URL"] - - end - - def self.root_img_path(options) - File.join(vm_dir(options), "root.img") - end - - def self.fill_defaults(options) + def self.setup(options) if options[:name] == nil options[:name] = options[:distro] end @@ -51,51 +18,27 @@ module VirtualMachine else options[:arch] = System.arch_to_symbol(options[:arch]) end - end - def self.archive(options) - fill_defaults(options) - Archive.create(vm_dir(options), out: create_archive_path(options)) - end + puts options - def self.restore(options) - fill_defaults(options) - Archive.restore(get_recent_archive_path(options), vm_dir(options)) - end - - def self.run(options) - fill_defaults(options) - - disk_img_path = root_img_path(options) - # TODO: - # - if image path not exists, check the cache - # - if cache do not exists try to download - puts "Starting image: #{disk_img_path}" - - Qemu.launch( - options[:arch], - disk_img_path, - cpus: [1, System.cpus - 2].max, - detach: true - ) - end - - def self.setup(options) - fill_defaults(options) + distro = options[:distro] + type = :install + arch = options[:arch] + url = distro(name, arch, type) - url = distro(options[:name], options[:arch], :install) - disk_img_path = root_img_path(options) - Downloader.get(url) do |path| + disk_img_path = File.join(User.cache_path, "vm", distro.to_s, arch.to_s, options[:name], "root.img") + create_disk_image(disk_img_path, 15000) - create_disk_image(disk_img_path, 64000) - + puts path + puts disk_img_path + Qemu.launch( - options[:arch], + arch, disk_img_path, cpus: [1, System.cpus - 2].max, cdrom: path, - detach: true + detach: false ) end end diff --git a/lib/vm/archive.rb b/lib/vm/archive.rb deleted file mode 100644 index 8554f15..0000000 --- a/lib/vm/archive.rb +++ /dev/null @@ -1,37 +0,0 @@ -require "fileutils" - -module Archive - def self.cmd(*cmd) - puts "cmd: #{cmd.join(" ")}" - # return - stdout, stderr, status = Open3.capture3(*cmd) - unless status.success? - warn "Command failed: #{cmd.join(' ')}" - warn stderr - exit status.exitstatus || 1 - end - stdout - end - - # it preserved sparsiveness - # gtar -S --sparse-version=2 -I 'zstd -T0 -19' -cpf test.tar.zst /Volumes/Projs/VM/VM-data/image/debian-arm64/debian/ - # tar --zstd -xpf test.tar.zst -C ./r - - def self.create(path, **options) - out = options[:out] || File.join(Dir.pwd, "archive.tar.zst") - - FileUtils.mkdir_p(File.dirname(out)) - cmd "gtar", "-S", "--sparse-version=2", "-I", - "zstd -T0 -19", "-cpf", out, "-C" , path, "." - end - - def self.restore(file, path, **options) - puts file - puts path - puts options - - FileUtils.mkdir_p(path) - cmd "gtar", "-S", "--sparse-version=2", "-I", "zstd", "-xpf", - file, "-C", path - end -end \ No newline at end of file