__  __    __   __  _____      _            _          _____ _          _ _ 
 |  \/  |   \ \ / / |  __ \    (_)          | |        / ____| |        | | |
 | \  / |_ __\ V /  | |__) | __ ___   ____ _| |_ ___  | (___ | |__   ___| | |
 | |\/| | '__|> <   |  ___/ '__| \ \ / / _` | __/ _ \  \___ \| '_ \ / _ \ | |
 | |  | | |_ / . \  | |   | |  | |\ V / (_| | ||  __/  ____) | | | |  __/ | |
 |_|  |_|_(_)_/ \_\ |_|   |_|  |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1
 if you need WebShell for Seo everyday contact me on Telegram
 Telegram Address : @jackleet
        
        
For_More_Tools: Telegram: @jackleet | Bulk Smtp support mail sender | Business Mail Collector | Mail Bouncer All Mail | Bulk Office Mail Validator | Html Letter private



Upload:

Command:

[email protected]: ~ $
VM_NAME = aa-testing
SNAP_NAME = prompting-client
SHORT_HASH = $(shell git rev-parse --short HEAD)
SNAP_FILE_NAME = $(SNAP_NAME)_0+git.$(SHORT_HASH)_amd64.snap
TEST_SNAP_NAME = aa-prompting-test

.PHONY: install-local-tooling
install-local-tooling:
	@echo ":: Checking for lxd..."
	@if ! which lxd ; then \
		@echo ":: Installing lxd..." ; \
		snap install lxd ; \
		@echo ":: Adding user to the lxd group..." ; \
		getent group lxd | grep -qwF "$$USER" || usermod -aG lxd "$$USER" ; \
		@echo ":: Please log out and back in, or run 'newgrp lxd' for the change to take effect" ; \
	fi
	@echo ":: Checking for snapcraft..."
	@if ! which snapcraft ; then \
		@echo ":: Installing snapcraft..." ; \
		snap install snapcraft --classic ; \
	fi
	@echo ":: Checking for virt-viewer..."
	@if ! which virt-viewer ; then \
		@echo ":: Installing virt-viewer..." ; \
		apt install virt-viewer ; \
	fi

.PHONY: enable-prompting
enable-prompting:
	lxc exec $(VM_NAME) -- snap set system experimental.apparmor-prompting=true

.PHONY: disable-prompting
disable-prompting:
	lxc exec $(VM_NAME) -- snap set system experimental.apparmor-prompting=false

.PHONY: clean-request-rules
clean-request-rules:
	if lxc exec $(VM_NAME) -- test -f /var/lib/snapd/request-rules.json ; then \
		lxc exec $(VM_NAME) -- rm /var/lib/snapd/request-rules.json ; \
	fi

# Sometimes we can get into a situation where snapd is stuck and stops sending notices
# for prompts. There is probably a lighter touch way of getting things working again
# but this does the trick.
.PHONY: bounce-snapd
bounce-snapd: disable-prompting clean-request-rules enable-prompting

.PHONY: create-or-start-vm
create-or-start-vm:
	@if ! lxc info $(VM_NAME) 2>/dev/null ; then \
		echo ":: Creating VM ($(VM_NAME))..."; \
		lxc launch images:ubuntu/24.04/desktop $(VM_NAME) \
			--vm \
			-c limits.cpu=4 \
			-c limits.memory=4GiB; \
	elif ! lxc info $(VM_NAME) | grep "Status: RUNNING" ; then \
		echo ":: Starting VM ($(VM_NAME))..."; \
		lxc stop --force $(VM_NAME) 2>/dev/null; \
		lxc start $(VM_NAME); \
	fi
	@while ! lxc exec $(VM_NAME) echo 2>/dev/null; do \
		echo ":: Waiting for VM ($(VM_NAME)) to be ready..."; \
		sleep 1; \
	done
	@sleep 5
	@echo ":: VM ($(VM_NAME)) now ready"
	@echo ":: Installing snapd..."
	@lxc exec $(VM_NAME) -- snap install snapd --channel=latest/edge
	@echo ":: Installing the app center..."
	@lxc exec $(VM_NAME) -- snap install snap-store --channel=latest/stable/ubuntu-24.04

.PHONY: attach-vm
attach-vm:
	lxc console --type=vga $(VM_NAME)

.PHONY: attach-vm-bash
attach-vm-bash:
	lxc exec --cwd=/home/ubuntu $(VM_NAME) -- su ubuntu

.PHONY: clean-client-in-vm
clean-client-in-vm:
	lxc exec $(VM_NAME) -- snap remove $(SNAP_NAME)

.PHONY: ensure-client-in-vm
ensure-client-in-vm:
	@echo ":: Checking for $(SNAP_NAME) in $(VM_NAME)..."
	@if ! lxc exec $(VM_NAME) -- snap list | grep $(SNAP_NAME) > /dev/null ; then \
		echo ":: Building $(SNAP_NAME) via snapcraft..." ; \
		rm -rf flutter_packages/prompting_client_ui/build ; \
		OLD=$(wildcard $(SNAP_NAME)_*) ; \
		[ -n "$$OLD" ] && rm $$OLD ; \
		snapcraft ; \
		FILE_NAME=$$(ls | grep -E '$(SNAP_NAME)_' | head -n1) ; \
		echo ":: Installing $(SNAP_NAME) in $(VM_NAME)..." ; \
		[ -n "$$OLD" ] && lxc exec $(VM_NAME) -- rm /home/ubuntu/$$OLD ; \
		lxc file push $$FILE_NAME $(VM_NAME)/home/ubuntu/ ; \
		lxc exec $(VM_NAME) -- snap set system experimental.user-daemons=true ; \
		lxc exec $(VM_NAME) -- snap install --dangerous /home/ubuntu/$$FILE_NAME ; \
		lxc exec $(VM_NAME) -- snap connect $(SNAP_NAME):snap-interfaces-requests-control ; \
	fi

.PHONY: update-client-in-vm
update-client-in-vm: clean-client-in-vm ensure-client-in-vm disable-prompting enable-prompting

.PHONY: clean-test-snap
clean-test-snap:
	lxc exec $(VM_NAME) -- snap remove $(TEST_SNAP_NAME)

.PHONY: ensure-test-snap
ensure-test-snap:
	@echo ":: Checking for $(TEST_SNAP_NAME) in $(VM_NAME)..."
	@if ! lxc exec $(VM_NAME) -- snap list | grep $(TEST_SNAP_NAME) > /dev/null ; then \
		echo ":: Building $(TEST_SNAP_NAME) via snapcraft..." ; \
		cd testing-snap ; \
		snapcraft ; \
		echo ":: Installing $(TEST_SNAP_NAME) in $(VM_NAME)..." ; \
		lxc file push $(TEST_SNAP_NAME)_0.1_amd64.snap $(VM_NAME)/home/ubuntu/ ; \
		lxc exec $(VM_NAME) -- snap install --dangerous /home/ubuntu/$(TEST_SNAP_NAME)_0.1_amd64.snap ; \
	fi

.PHONY: update-test-snap
update-test-snap: clean-test-snap ensure-test-snap

# There must be a snap with the snap-interfaces-requests-control interface
# connected and a "handler-service" attribute mapping to one of its app names,
# so we must ensure that the client is present before we try to enable
# prompting.
.PHONY: prepare-vm
prepare-vm: create-or-start-vm ensure-test-snap ensure-client-in-vm bounce-snapd

.PHONY: integration-tests
integration-tests:
	@echo ":: Checking cargo is available..."
	@if ! which cargo; then \
		echo ":: A local rust toolchain is required to run this target"; \
		exit 1; \
	fi
	@echo ":: Remember to run 'make prepare-vm' before running the integration tests"
	cd prompting-client && cargo test --no-run
	FNAME=$$(ls -ht prompting-client/target/debug/deps/integration* | grep -Ev '\.d' | head -n1); \
	cp $$FNAME integration-tests; \
	lxc file push integration-tests $(VM_NAME)/home/ubuntu/; \
	rm integration-tests; \
	lxc exec $(VM_NAME) -- rm -rf /home/ubuntu/test; \
	lxc exec --user=1000 --env HOME=/home/ubuntu $(VM_NAME) /home/ubuntu/integration-tests $(CASES);

.PHONY: clean
clean:
	lxc stop --force $(VM_NAME) 2>/dev/null || true
	lxc delete $(VM_NAME) 2>/dev/null || true

# Targets for local use rather than against the VM

.PHONY: local-enable-prompting
local-enable-prompting:
	snap set system experimental.apparmor-prompting=true

.PHONY: local-disable-prompting
local-disable-prompting:
	snap set system experimental.apparmor-prompting=false

.PHONY: local-clean-request-rules
local-clean-request-rules:
	if test -f /var/lib/snapd/request-rules.json ; then \
		rm /var/lib/snapd/request-rules.json ; \
	fi

.PHONY: local-bounce-snapd
local-bounce-snapd: local-disable-prompting local-clean-request-rules local-enable-prompting

.PHONY: local-install-client
local-install-client:
	echo ":: Building $(SNAP_NAME) via snapcraft..." ; \
	rm -rf flutter_packages/prompting_client_ui/build ; \
	OLD=$(wildcard $(SNAP_NAME)_*) ; \
	rm $$OLD ; \
	snapcraft ; \
	FILE_NAME=$$(ls | grep -E '$(SNAP_NAME)_' | head -n1) ; \
	echo ":: Installing $(SNAP_NAME)..." ; \
	snap install --dangerous $$FILE_NAME ; \
	snap connect $(SNAP_NAME):snap-interfaces-requests-control ;

Filemanager

Name Type Size Permission Actions
bin Folder 0755
docs Folder 0755
flutter Folder 0755
meta Folder 0755
prompting-client Folder 0755
protos Folder 0755
scripts Folder 0755
snap Folder 0755
testing-snap Folder 0755
usr Folder 0755
CONTRIBUTING.md File 6.94 KB 0644
LICENSE File 34.33 KB 0644
Makefile File 6.4 KB 0644
README.md File 443 B 0644
SECURITY.md File 602 B 0644
melos.yaml File 2.47 KB 0644
pubspec.yaml File 108 B 0644
renovate.json File 114 B 0644
Filemanager