diff --git a/package/jsda/luci-app-clash/Makefile b/package/jsda/luci-app-clash/Makefile index c327217a50..ef64b29690 100644 --- a/package/jsda/luci-app-clash/Makefile +++ b/package/jsda/luci-app-clash/Makefile @@ -1,8 +1,8 @@ -include $(TOPDIR)/rules.mk +include $(TOPDIR)/rules.mk PKG_NAME:=luci-app-clash -PKG_VERSION:=1.1.7 -PKG_RELEASE:=2 +PKG_VERSION:=1.4.0 +#PKG_RELEASE:=3 PKG_MAINTAINER:=frainzy1477 @@ -11,9 +11,9 @@ include $(INCLUDE_DIR)/package.mk define Package/luci-app-clash SECTION:=luci CATEGORY:=LuCI - SUBMENU:=3. Applications + SUBMENU:=2. Clash TITLE:=LuCI app for clash - DEPENDS:=+luci +luci-base +wget +iptables +coreutils +coreutils-nohup +bash +ipset +libustream-openssl +libopenssl +openssl-util +clash + DEPENDS:=+luci +luci-base +clash +wget +iptables +coreutils-base64 +coreutils +coreutils-nohup +bash +ipset PKGARCH:=all MAINTAINER:=frainzy1477 endef @@ -37,70 +37,89 @@ endef define Package/$(PKG_NAME)/preinst #!/bin/sh + +mkdir -p /usr/share/clashbackup 2>/dev/null + if [ -f "/tmp/dnsmasq.d/custom_list.conf" ]; then - rm -rf /tmp/dnsmasq.d/custom_list.conf + rm -rf /tmp/dnsmasq.d/custom_list.conf 2>/dev/null fi if [ -d "/tmp/dnsmasq.clash" ]; then - rm -rf /tmp/dnsmasq.clash + rm -rf /tmp/dnsmasq.clash 2>/dev/null fi if [ -f "/etc/config/clash" ]; then - mv /etc/config/clash /etc/config/clash.bak + mv /etc/config/clash /etc/config/clash.bak 2>/dev/null fi if [ -d "/usr/lib/lua/luci/model/cbi/clash" ]; then - rm -rf /usr/lib/lua/luci/model/cbi/clash + rm -rf /usr/lib/lua/luci/model/cbi/clash 2>/dev/null fi if [ -d "/usr/lib/lua/luci/view/clash" ]; then - rm -rf /usr/lib/lua/luci/view/clash + rm -rf /usr/lib/lua/luci/view/clash 2>/dev/null fi if [ -f /usr/share/clash/new_core_version ]; then - rm -rf /usr/share/clash/new_core_version + rm -rf /usr/share/clash/new_core_version 2>/dev/null +fi + + +if [ -f /usr/share/clash/new_clashr_core_version ]; then + rm -rf /usr/share/clash/new_clashr_core_version 2>/dev/null fi if [ -f /usr/share/clash/new_luci_version ]; then - rm -rf /usr/share/clash/new_luci_version + rm -rf /usr/share/clash/new_luci_version 2>/dev/null fi if [ -d /usr/share/clash/web ]; then - rm -rf /usr/share/clash/web + rm -rf /usr/share/clash/web 2>/dev/null fi -if [ -f /usr/share/clash/config/sub/config.yaml ] && [ "$(ls -l /usr/share/clash/config/sub/config.yaml | awk '{print int($5/1024)}')" -ne 0 ];then - mv /usr/share/clash/config/sub/config.yaml /usr/share/clash/config/sub/config.bak +if [ -f /usr/share/clash/config/sub/config.yaml ];then + mv /usr/share/clash/config/sub/config.yaml /usr/share/clashbackup/config.bak1 2>/dev/null fi -if [ -f /usr/share/clash/config/upload/config.yaml ] && [ "$(ls -l /usr/share/clash/config/upload/config.yaml | awk '{print int($5/1024)}')" -ne 0 ];then - mv /usr/share/clash/config/upload/config.yaml /usr/share/clash/config/upload/config.bak +if [ -f /usr/share/clash/config/upload/config.yaml ];then + mv /usr/share/clash/config/upload/config.yaml /usr/share/clashbackup/config.bak2 2>/dev/null fi -if [ -f /usr/share/clash/config/custom/config.yaml ] && [ "$(ls -l /usr/share/clash/config/custom/config.yaml | awk '{print int($5/1024)}')" -ne 0 ];then - mv /usr/share/clash/config/custom/config.yaml /usr/share/clash/config/custom/config.bak +if [ -f /usr/share/clash/config/custom/config.yaml ];then + mv /usr/share/clash/config/custom/config.yaml /usr/share/clashbackup/config.bak3 2>/dev/null fi + + + endef define Package/$(PKG_NAME)/postinst #!/bin/sh -rm -rf /tmp/luci* +rm -rf /tmp/luci* if [ -f "/etc/config/clash.bak" ]; then - mv /etc/config/clash.bak /etc/config/clash + mv /etc/config/clash.bak /etc/config/clash 2>/dev/null fi -if [ -f /usr/share/clash/config/sub/config.bak ];then - mv /usr/share/clash/config/sub/config.bak /usr/share/clash/config/sub/config.yaml +if [ -f /usr/share/clashbackup/config.bak1 ];then + mv /usr/share/clashbackup/config.bak1 /usr/share/clash/config/sub/config.yaml 2>/dev/null fi -if [ -f /usr/share/clash/config/upload/config.bak ];then - mv /usr/share/clash/config/upload/config.bak /usr/share/clash/config/upload/config.yaml +if [ -f /usr/share/clashbackup/config.bak2 ];then + mv /usr/share/clashbackup/config.bak2 /usr/share/clash/config/upload/config.yaml 2>/dev/null fi -if [ -f /usr/share/clash/config/custom/config.bak ];then - mv /usr/share/clash/config/custom/config.bak /usr/share/clash/config/custom/config.yaml +if [ -f /usr/share/clashbackup/config.bak3 ];then + mv /usr/share/clashbackup/config.bak3 /usr/share/clash/config/custom/config.yaml 2>/dev/null fi + +if [ -f "/etc/init.d/clash" ]; then + /etc/init.d/clash disable 2>/dev/null +fi + echo "Clash for OpenWRT" >/usr/share/clash/clash_real.txt 2>/dev/null + echo "0" > /usr/share/clash/logstatus_check 2>/dev/null + echo "" > /tmp/clash.txt 2>/dev/null + endef define Package/$(PKG_NAME)/install @@ -114,7 +133,6 @@ define Package/$(PKG_NAME)/install $(INSTALL_DIR) $(1)/usr/lib/lua/luci $(INSTALL_DIR) $(1)/usr/share/ $(INSTALL_DIR) $(1)/usr/share/clash - $(INSTALL_DIR) $(1)/usr/share/clash/yac $(INSTALL_DIR) $(1)/usr/share/clash/dashboard $(INSTALL_DIR) $(1)/usr/share/clash/dashboard/img $(INSTALL_DIR) $(1)/usr/share/clash/dashboard/js @@ -123,6 +141,7 @@ define Package/$(PKG_NAME)/install $(INSTALL_DIR) $(1)/usr/share/clash/config/sub $(INSTALL_DIR) $(1)/usr/share/clash/config/upload $(INSTALL_DIR) $(1)/usr/share/clash/config/custom + $(INSTALL_DIR) $(1)/usr/share/clash/v2ssr $(INSTALL_BIN) ./root/usr/share/clash/config/upload/config.yaml $(1)/usr/share/clash/config/upload/ $(INSTALL_BIN) ./root/usr/share/clash/config/custom/config.yaml $(1)/usr/share/clash/config/custom/ @@ -132,29 +151,32 @@ define Package/$(PKG_NAME)/install $(INSTALL_CONF) ./root/etc/config/clash $(1)/etc/config/clash $(INSTALL_CONF) ./root/etc/clash/* $(1)/etc/clash/ + $(INSTALL_BIN) ./root/usr/share/clash/v2ssr/v2ssr_custom_rule.yaml $(1)/usr/share/clash/v2ssr/ + $(INSTALL_BIN) ./root/usr/share/clash/v2ssr/policygroup $(1)/usr/share/clash/v2ssr/ + $(INSTALL_BIN) ./root/usr/share/clash/clash-watchdog.sh $(1)/usr/share/clash/ $(INSTALL_BIN) ./root/usr/share/clash/clash.sh $(1)/usr/share/clash/ - $(INSTALL_BIN) ./root/usr/share/clash/ipdb.sh $(1)/usr/share/clash/ - $(INSTALL_BIN) ./root/usr/share/clash/get_proxy.sh $(1)/usr/share/clash/ + $(INSTALL_BIN) ./root/usr/share/clash/load.sh $(1)/usr/share/clash/ + $(INSTALL_BIN) ./root/usr/share/clash/core_download.sh $(1)/usr/share/clash/ $(INSTALL_BIN) ./root/usr/share/clash/proxy.sh $(1)/usr/share/clash/ $(INSTALL_BIN) ./root/usr/share/clash/dns.yaml $(1)/usr/share/clash/ - $(INSTALL_BIN) ./root/usr/share/clash/rule.yaml $(1)/usr/share/clash/ $(INSTALL_BIN) ./root/usr/share/clash/custom_rule.yaml $(1)/usr/share/clash/ $(INSTALL_BIN) ./root/usr/share/clash/luci_version $(1)/usr/share/clash/ $(INSTALL_BIN) ./root/usr/share/clash/check_luci_version.sh $(1)/usr/share/clash/ $(INSTALL_BIN) ./root/usr/share/clash/check_core_version.sh $(1)/usr/share/clash/ + $(INSTALL_BIN) ./root/usr/share/clash/check_clashr_core_version.sh $(1)/usr/share/clash/ $(INSTALL_BIN) ./root/usr/share/clash/yum_change.sh $(1)/usr/share/clash/ $(INSTALL_BIN) ./root/usr/share/clash/groups.sh $(1)/usr/share/clash/ $(INSTALL_BIN) ./root/usr/share/clash/rule.sh $(1)/usr/share/clash/ $(INSTALL_BIN) ./root/usr/share/clash/list.sh $(1)/usr/share/clash/ + $(INSTALL_BIN) ./root/usr/share/clash/v2ssr.sh $(1)/usr/share/clash/ $(INSTALL_BIN) ./root/usr/share/clash/server.list $(1)/usr/share/clash/ - $(INSTALL_BIN) ./root/usr/share/clash/yac/* $(1)/usr/share/clash/yac/ $(INSTALL_BIN) ./root/usr/share/clash/dashboard/index.html $(1)/usr/share/clash/dashboard/ - $(INSTALL_BIN) ./root/usr/share/clash/dashboard/main.557c7e0375c2286ea607.css $(1)/usr/share/clash/dashboard/ + $(INSTALL_BIN) ./root/usr/share/clash/dashboard/main.aee3e3fc24cd46786598.css $(1)/usr/share/clash/dashboard/ $(INSTALL_BIN) ./root/usr/share/clash/dashboard/img/33343e6117c37aaef8886179007ba6b5.png $(1)/usr/share/clash/dashboard/img/ - $(INSTALL_BIN) ./root/usr/share/clash/dashboard/js/1.bundle.557c7e0375c2286ea607.min.js $(1)/usr/share/clash/dashboard/js/ - $(INSTALL_BIN) ./root/usr/share/clash/dashboard/js/bundle.557c7e0375c2286ea607.min.js $(1)/usr/share/clash/dashboard/js/ + $(INSTALL_BIN) ./root/usr/share/clash/dashboard/js/1.bundle.aee3e3fc24cd46786598.min.js $(1)/usr/share/clash/dashboard/js/ + $(INSTALL_BIN) ./root/usr/share/clash/dashboard/js/bundle.aee3e3fc24cd46786598.min.js $(1)/usr/share/clash/dashboard/js/ $(INSTALL_DATA) ./luasrc/clash.lua $(1)/usr/lib/lua/luci/ $(INSTALL_DATA) ./luasrc/controller/*.lua $(1)/usr/lib/lua/luci/controller/ @@ -166,4 +188,4 @@ endef -$(eval $(call BuildPackage,luci-app-clash)) +$(eval $(call BuildPackage,$(PKG_NAME))) diff --git a/package/jsda/luci-app-clash/config b/package/jsda/luci-app-clash/config new file mode 100644 index 0000000000..c16bca20ff --- /dev/null +++ b/package/jsda/luci-app-clash/config @@ -0,0 +1,2575 @@ +# +# Automatically generated file; DO NOT EDIT. +# Linux Kernel Configuration +# + +# +# Global build settings +# +CONFIG_ALL_NONSHARED=y +CONFIG_ALL_KMODS=y +CONFIG_ALL=y +CONFIG_SIGNED_PACKAGES=y + +# +# Advanced configuration options (for developers) +# +# CONFIG_BROKEN is not set +CONFIG_DOWNLOAD_FOLDER="" +CONFIG_LOCALMIRROR="" +CONFIG_AUTOREBUILD=y +CONFIG_AUTOREMOVE=y +# CONFIG_CCACHE is not set +# CONFIG_BUILD_LOG is not set +# CONFIG_SRC_TREE_OVERRIDE is not set +CONFIG_IN_SDK=y +CONFIG_MODULES=y +CONFIG_HAVE_DOT_CONFIG=y +CONFIG_TARGET_x86=y +CONFIG_TARGET_x86_64=y +CONFIG_TARGET_x86_64_Generic=y +CONFIG_HAS_SUBTARGETS=y +CONFIG_TARGET_BOARD="x86" +CONFIG_TARGET_SUBTARGET="64" +CONFIG_TARGET_PROFILE="Generic" +CONFIG_TARGET_ARCH_PACKAGES="x86_64" +CONFIG_DEFAULT_TARGET_OPTIMIZATION="-Os -pipe" +CONFIG_CPU_TYPE=" " +CONFIG_LINUX_4_19=y +CONFIG_DEFAULT_base-files=y +CONFIG_DEFAULT_busybox=y +CONFIG_DEFAULT_dnsmasq=y +CONFIG_DEFAULT_dropbear=y +CONFIG_DEFAULT_e2fsprogs=y +CONFIG_DEFAULT_firewall=y +CONFIG_DEFAULT_fstools=y +CONFIG_DEFAULT_ip6tables=y +CONFIG_DEFAULT_iptables=y +CONFIG_DEFAULT_kmod-bnx2=y +CONFIG_DEFAULT_kmod-button-hotplug=y +CONFIG_DEFAULT_kmod-e1000=y +CONFIG_DEFAULT_kmod-e1000e=y +CONFIG_DEFAULT_kmod-igb=y +CONFIG_DEFAULT_kmod-ipt-offload=y +CONFIG_DEFAULT_kmod-r8169=y +CONFIG_DEFAULT_libc=y +CONFIG_DEFAULT_libgcc=y +CONFIG_DEFAULT_logd=y +CONFIG_DEFAULT_mkf2fs=y +CONFIG_DEFAULT_mtd=y +CONFIG_DEFAULT_netifd=y +CONFIG_DEFAULT_odhcp6c=y +CONFIG_DEFAULT_odhcpd-ipv6only=y +CONFIG_DEFAULT_opkg=y +CONFIG_DEFAULT_partx-utils=y +CONFIG_DEFAULT_ppp=y +CONFIG_DEFAULT_ppp-mod-pppoe=y +CONFIG_DEFAULT_uci=y +CONFIG_DEFAULT_uclient-fetch=y +CONFIG_DEFAULT_urandom-seed=y +CONFIG_DEFAULT_urngd=y +CONFIG_HAS_FPU=y +CONFIG_AUDIO_SUPPORT=y +CONFIG_GPIO_SUPPORT=y +CONFIG_PCI_SUPPORT=y +CONFIG_PCIE_SUPPORT=y +CONFIG_PCMCIA_SUPPORT=y +CONFIG_USB_SUPPORT=y +CONFIG_RTC_SUPPORT=y +CONFIG_USES_SQUASHFS=y +CONFIG_USES_EXT4=y +CONFIG_USES_TARGZ=y +CONFIG_ARCH_64BIT=y +CONFIG_VIRTIO_SUPPORT=y +CONFIG_x86_64=y +CONFIG_ARCH="x86_64" +CONFIG_EXTERNAL_CPIO="" +CONFIG_TARGET_ROOTFS_TARGZ=y +CONFIG_TARGET_ROOTFS_EXT4FS=y +CONFIG_TARGET_EXT4_RESERVED_PCT=0 +CONFIG_TARGET_EXT4_BLOCKSIZE_4K=y +CONFIG_TARGET_EXT4_BLOCKSIZE=4096 +CONFIG_TARGET_ROOTFS_SQUASHFS=y +CONFIG_TARGET_SQUASHFS_BLOCK_SIZE=256 +CONFIG_TARGET_UBIFS_FREE_SPACE_FIXUP=y +CONFIG_TARGET_UBIFS_JOURNAL_SIZE="" +CONFIG_GRUB_IMAGES=y +CONFIG_GRUB_CONSOLE=y +CONFIG_GRUB_SERIAL="ttyS0" +CONFIG_GRUB_BAUDRATE=115200 +# CONFIG_GRUB_FLOWCONTROL is not set +CONFIG_GRUB_BOOTOPTS="" +CONFIG_GRUB_TIMEOUT="5" +CONFIG_GRUB_TITLE="OpenWrt" +# CONFIG_VDI_IMAGES is not set +# CONFIG_VMDK_IMAGES is not set +CONFIG_TARGET_IMAGES_GZIP=y +CONFIG_TARGET_KERNEL_PARTSIZE=16 +CONFIG_TARGET_ROOTFS_PARTSIZE=128 +CONFIG_TARGET_ROOTFS_PARTNAME="" +CONFIG_BUILDBOT=y +CONFIG_SIGNATURE_CHECK=y +CONFIG_DISPLAY_SUPPORT=y +# CONFIG_BUILD_PATENTED is not set +# CONFIG_BUILD_NLS is not set +CONFIG_SHADOW_PASSWORDS=y +# CONFIG_CLEAN_IPKG is not set +# CONFIG_IPK_FILES_CHECKSUMS is not set +# CONFIG_INCLUDE_CONFIG is not set +CONFIG_COLLECT_KERNEL_DEBUG=y +CONFIG_KERNEL_BUILD_USER="builder" +CONFIG_KERNEL_BUILD_DOMAIN="buildhost" +CONFIG_KERNEL_PRINTK=y +CONFIG_KERNEL_SWAP=y +CONFIG_KERNEL_DEBUG_FS=y +# CONFIG_KERNEL_PERF_EVENTS is not set +# CONFIG_KERNEL_PROFILING is not set +# CONFIG_KERNEL_TASKSTATS is not set +CONFIG_KERNEL_KALLSYMS=y +# CONFIG_KERNEL_FTRACE is not set +CONFIG_KERNEL_DEBUG_KERNEL=y +CONFIG_KERNEL_DEBUG_INFO=y +# CONFIG_KERNEL_DYNAMIC_DEBUG is not set +# CONFIG_KERNEL_KPROBES is not set +CONFIG_KERNEL_AIO=y +CONFIG_KERNEL_FHANDLE=y +CONFIG_KERNEL_FANOTIFY=y +# CONFIG_KERNEL_BLK_DEV_BSG is not set +CONFIG_KERNEL_MAGIC_SYSRQ=y +# CONFIG_KERNEL_DEBUG_PINCTRL is not set +# CONFIG_KERNEL_DEBUG_GPIO is not set +CONFIG_KERNEL_COREDUMP=y +CONFIG_KERNEL_ELF_CORE=y +# CONFIG_KERNEL_PROVE_LOCKING is not set +CONFIG_KERNEL_PRINTK_TIME=y +# CONFIG_KERNEL_SLABINFO is not set +# CONFIG_KERNEL_PROC_PAGE_MONITOR is not set +CONFIG_KERNEL_KEXEC=y +CONFIG_KERNEL_PROC_VMCORE=y +CONFIG_KERNEL_CRASH_DUMP=y +# CONFIG_USE_RFKILL is not set +# CONFIG_USE_SPARSE is not set +# CONFIG_KERNEL_DEVTMPFS is not set +# CONFIG_KERNEL_KEYS is not set +CONFIG_KERNEL_CGROUPS=y +# CONFIG_KERNEL_CGROUP_DEBUG is not set +CONFIG_KERNEL_FREEZER=y +CONFIG_KERNEL_CGROUP_FREEZER=y +CONFIG_KERNEL_CGROUP_DEVICE=y +CONFIG_KERNEL_CGROUP_PIDS=y +CONFIG_KERNEL_CPUSETS=y +# CONFIG_KERNEL_PROC_PID_CPUSET is not set +CONFIG_KERNEL_CGROUP_CPUACCT=y +CONFIG_KERNEL_RESOURCE_COUNTERS=y +CONFIG_KERNEL_MM_OWNER=y +CONFIG_KERNEL_MEMCG=y +# CONFIG_KERNEL_MEMCG_SWAP is not set +CONFIG_KERNEL_MEMCG_KMEM=y +# CONFIG_KERNEL_CGROUP_PERF is not set +CONFIG_KERNEL_CGROUP_SCHED=y +CONFIG_KERNEL_FAIR_GROUP_SCHED=y +# CONFIG_KERNEL_CFS_BANDWIDTH is not set +CONFIG_KERNEL_RT_GROUP_SCHED=y +CONFIG_KERNEL_BLK_CGROUP=y +# CONFIG_KERNEL_CFQ_GROUP_IOSCHED is not set +# CONFIG_KERNEL_BLK_DEV_THROTTLING is not set +# CONFIG_KERNEL_DEBUG_BLK_CGROUP is not set +CONFIG_KERNEL_NET_CLS_CGROUP=y +CONFIG_KERNEL_NETPRIO_CGROUP=y +CONFIG_KERNEL_NAMESPACES=y +CONFIG_KERNEL_UTS_NS=y +CONFIG_KERNEL_IPC_NS=y +CONFIG_KERNEL_USER_NS=y +CONFIG_KERNEL_PID_NS=y +CONFIG_KERNEL_NET_NS=y +CONFIG_KERNEL_LXC_MISC=y +CONFIG_KERNEL_DEVPTS_MULTIPLE_INSTANCES=y +CONFIG_KERNEL_POSIX_MQUEUE=y +CONFIG_KERNEL_SECCOMP_FILTER=y +CONFIG_KERNEL_SECCOMP=y +CONFIG_KERNEL_IP_MROUTE=y +CONFIG_KERNEL_IPV6=y +CONFIG_KERNEL_IPV6_MULTIPLE_TABLES=y +CONFIG_KERNEL_IPV6_SUBTREES=y +CONFIG_KERNEL_IPV6_MROUTE=y +# CONFIG_KERNEL_IPV6_PIMSM_V2 is not set +# CONFIG_KERNEL_IP_PNP is not set +# CONFIG_USE_FS_ACL_ATTR is not set +# CONFIG_KERNEL_FS_POSIX_ACL is not set +# CONFIG_KERNEL_BTRFS_FS_POSIX_ACL is not set +# CONFIG_KERNEL_EXT4_FS_POSIX_ACL is not set +# CONFIG_KERNEL_F2FS_FS_POSIX_ACL is not set +# CONFIG_KERNEL_JFFS2_FS_POSIX_ACL is not set +# CONFIG_KERNEL_TMPFS_POSIX_ACL is not set +# CONFIG_KERNEL_CIFS_ACL is not set +# CONFIG_KERNEL_HFS_FS_POSIX_ACL is not set +# CONFIG_KERNEL_HFSPLUG_FS_POSIX_ACL is not set +# CONFIG_KERNEL_NFS_ACL_SUPPORT is not set +# CONFIG_KERNEL_NFS_V3_ACL_SUPPORT is not set +# CONFIG_KERNEL_NFSD_V2_ACL_SUPPORT is not set +# CONFIG_KERNEL_NFSD_V3_ACL_SUPPORT is not set +# CONFIG_KERNEL_REISER_FS_POSIX_ACL is not set +# CONFIG_KERNEL_XFS_POSIX_ACL is not set +# CONFIG_KERNEL_JFS_POSIX_ACL is not set +# CONFIG_KERNEL_DEVMEM is not set +# CONFIG_KERNEL_DEVKMEM is not set +CONFIG_KERNEL_SQUASHFS_FRAGMENT_CACHE_SIZE=3 +CONFIG_KERNEL_CC_OPTIMIZE_FOR_PERFORMANCE=y +# CONFIG_KERNEL_CC_OPTIMIZE_FOR_SIZE is not set +# CONFIG_DEBUG is not set +CONFIG_IPV6=y +# CONFIG_NO_STRIP is not set +# CONFIG_USE_STRIP is not set +CONFIG_USE_SSTRIP=y +# CONFIG_STRIP_KERNEL_EXPORTS is not set +# CONFIG_USE_MKLIBS is not set +CONFIG_USE_UCLIBCXX=y +# CONFIG_USE_LIBSTDCXX is not set +CONFIG_PKG_CHECK_FORMAT_SECURITY=y +# CONFIG_PKG_ASLR_PIE is not set +# CONFIG_PKG_CC_STACKPROTECTOR_NONE is not set +CONFIG_PKG_CC_STACKPROTECTOR_REGULAR=y +# CONFIG_KERNEL_CC_STACKPROTECTOR_NONE is not set +CONFIG_KERNEL_CC_STACKPROTECTOR_REGULAR=y +# CONFIG_KERNEL_CC_STACKPROTECTOR_STRONG is not set +CONFIG_KERNEL_STACKPROTECTOR=y +# CONFIG_KERNEL_STACKPROTECTOR_STRONG is not set +# CONFIG_PKG_FORTIFY_SOURCE_NONE is not set +CONFIG_PKG_FORTIFY_SOURCE_1=y +# CONFIG_PKG_FORTIFY_SOURCE_2 is not set +# CONFIG_PKG_RELRO_NONE is not set +# CONFIG_PKG_RELRO_PARTIAL is not set +CONFIG_PKG_RELRO_FULL=y +CONFIG_DEVEL=y +CONFIG_BINARY_FOLDER="" +CONFIG_BUILD_SUFFIX="" +CONFIG_TARGET_ROOTFS_DIR="" +CONFIG_EXTERNAL_KERNEL_TREE="" +CONFIG_KERNEL_GIT_CLONE_URI="" +CONFIG_EXTRA_OPTIMIZATION="-fno-caller-saves -fno-plt" +CONFIG_TARGET_OPTIMIZATION="-Os -pipe" +# CONFIG_EXTERNAL_TOOLCHAIN is not set +CONFIG_NEED_TOOLCHAIN=y +# CONFIG_TOOLCHAINOPTS is not set +# CONFIG_EXTRA_TARGET_ARCH is not set +CONFIG_EXTRA_BINUTILS_CONFIG_OPTIONS="" +CONFIG_EXTRA_GCC_CONFIG_OPTIONS="" +# CONFIG_GCC_DEFAULT_PIE is not set +# CONFIG_GCC_DEFAULT_SSP is not set +# CONFIG_SJLJ_EXCEPTIONS is not set +# CONFIG_INSTALL_GFORTRAN is not set +CONFIG_NASM=y +CONFIG_GDB=y +CONFIG_USE_MUSL=y +CONFIG_SSP_SUPPORT=y +CONFIG_BINUTILS_VERSION_2_31_1=y +CONFIG_BINUTILS_VERSION="2.31.1" +# CONFIG_GCC_USE_EMBEDDED_PATH_REMAP is not set +CONFIG_GCC_VERSION="7.4.0" +CONFIG_LIBC="musl" +CONFIG_TARGET_SUFFIX="musl" +CONFIG_IB=y +# CONFIG_IB_STANDALONE is not set +CONFIG_SDK=y +# CONFIG_MAKE_TOOLCHAIN is not set +# CONFIG_IMAGEOPT is not set +# CONFIG_PREINITOPT is not set +CONFIG_TARGET_PREINIT_SUPPRESS_STDERR=y +CONFIG_TARGET_PREINIT_TIMEOUT=2 +CONFIG_TARGET_PREINIT_IFNAME="" +CONFIG_TARGET_PREINIT_IP="192.168.1.1" +CONFIG_TARGET_PREINIT_NETMASK="255.255.255.0" +CONFIG_TARGET_PREINIT_BROADCAST="192.168.1.255" +# CONFIG_INITOPT is not set +CONFIG_TARGET_INIT_PATH="/usr/sbin:/usr/bin:/sbin:/bin" +CONFIG_TARGET_INIT_ENV="" +CONFIG_TARGET_INIT_CMD="/sbin/init" +CONFIG_TARGET_INIT_SUPPRESS_STDERR=y +# CONFIG_VERSIONOPT is not set +CONFIG_PER_FEED_REPO=y +CONFIG_FEED_packages=y +CONFIG_FEED_luci=y +CONFIG_FEED_routing=y +CONFIG_FEED_telephony=y +CONFIG_PACKAGE_base-files=y +CONFIG_PACKAGE_block-mount=m +CONFIG_PACKAGE_blockd=m +CONFIG_PACKAGE_busybox=y +# CONFIG_BUSYBOX_CUSTOM is not set +CONFIG_BUSYBOX_DEFAULT_HAVE_DOT_CONFIG=y +# CONFIG_BUSYBOX_DEFAULT_DESKTOP is not set +# CONFIG_BUSYBOX_DEFAULT_EXTRA_COMPAT is not set +# CONFIG_BUSYBOX_DEFAULT_FEDORA_COMPAT is not set +CONFIG_BUSYBOX_DEFAULT_INCLUDE_SUSv2=y +CONFIG_BUSYBOX_DEFAULT_LONG_OPTS=y +CONFIG_BUSYBOX_DEFAULT_SHOW_USAGE=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_VERBOSE_USAGE=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_COMPRESS_USAGE=y +CONFIG_BUSYBOX_DEFAULT_LFS=y +# CONFIG_BUSYBOX_DEFAULT_PAM is not set +CONFIG_BUSYBOX_DEFAULT_FEATURE_DEVPTS=y +# CONFIG_BUSYBOX_DEFAULT_FEATURE_UTMP is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_WTMP is not set +CONFIG_BUSYBOX_DEFAULT_FEATURE_PIDFILE=y +CONFIG_BUSYBOX_DEFAULT_PID_FILE_PATH="/var/run" +# CONFIG_BUSYBOX_DEFAULT_BUSYBOX is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_SHOW_SCRIPT is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_INSTALLER is not set +# CONFIG_BUSYBOX_DEFAULT_INSTALL_NO_USR is not set +CONFIG_BUSYBOX_DEFAULT_FEATURE_SUID=y +# CONFIG_BUSYBOX_DEFAULT_FEATURE_SUID_CONFIG is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_SUID_CONFIG_QUIET is not set +CONFIG_BUSYBOX_DEFAULT_FEATURE_PREFER_APPLETS=y +CONFIG_BUSYBOX_DEFAULT_BUSYBOX_EXEC_PATH="/proc/self/exe" +# CONFIG_BUSYBOX_DEFAULT_SELINUX is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_CLEAN_UP is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_SYSLOG_INFO is not set +CONFIG_BUSYBOX_DEFAULT_FEATURE_SYSLOG=y +CONFIG_BUSYBOX_DEFAULT_PLATFORM_LINUX=y +# CONFIG_BUSYBOX_DEFAULT_STATIC is not set +# CONFIG_BUSYBOX_DEFAULT_PIE is not set +# CONFIG_BUSYBOX_DEFAULT_NOMMU is not set +# CONFIG_BUSYBOX_DEFAULT_BUILD_LIBBUSYBOX is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_LIBBUSYBOX_STATIC is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_INDIVIDUAL is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_SHARED_BUSYBOX is not set +CONFIG_BUSYBOX_DEFAULT_CROSS_COMPILER_PREFIX="" +CONFIG_BUSYBOX_DEFAULT_SYSROOT="" +CONFIG_BUSYBOX_DEFAULT_EXTRA_CFLAGS="" +CONFIG_BUSYBOX_DEFAULT_EXTRA_LDFLAGS="" +CONFIG_BUSYBOX_DEFAULT_EXTRA_LDLIBS="" +# CONFIG_BUSYBOX_DEFAULT_USE_PORTABLE_CODE is not set +# CONFIG_BUSYBOX_DEFAULT_STACK_OPTIMIZATION_386 is not set +CONFIG_BUSYBOX_DEFAULT_INSTALL_APPLET_SYMLINKS=y +# CONFIG_BUSYBOX_DEFAULT_INSTALL_APPLET_HARDLINKS is not set +# CONFIG_BUSYBOX_DEFAULT_INSTALL_APPLET_SCRIPT_WRAPPERS is not set +# CONFIG_BUSYBOX_DEFAULT_INSTALL_APPLET_DONT is not set +# CONFIG_BUSYBOX_DEFAULT_INSTALL_SH_APPLET_SYMLINK is not set +# CONFIG_BUSYBOX_DEFAULT_INSTALL_SH_APPLET_HARDLINK is not set +# CONFIG_BUSYBOX_DEFAULT_INSTALL_SH_APPLET_SCRIPT_WRAPPER is not set +CONFIG_BUSYBOX_DEFAULT_PREFIX="./_install" +# CONFIG_BUSYBOX_DEFAULT_DEBUG is not set +# CONFIG_BUSYBOX_DEFAULT_DEBUG_PESSIMIZE is not set +# CONFIG_BUSYBOX_DEFAULT_DEBUG_SANITIZE is not set +# CONFIG_BUSYBOX_DEFAULT_UNIT_TEST is not set +# CONFIG_BUSYBOX_DEFAULT_WERROR is not set +CONFIG_BUSYBOX_DEFAULT_NO_DEBUG_LIB=y +# CONFIG_BUSYBOX_DEFAULT_DMALLOC is not set +# CONFIG_BUSYBOX_DEFAULT_EFENCE is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_USE_BSS_TAIL is not set +# CONFIG_BUSYBOX_DEFAULT_FLOAT_DURATION is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_RTMINMAX is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_RTMINMAX_USE_LIBC_DEFINITIONS is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_BUFFERS_USE_MALLOC is not set +CONFIG_BUSYBOX_DEFAULT_FEATURE_BUFFERS_GO_ON_STACK=y +# CONFIG_BUSYBOX_DEFAULT_FEATURE_BUFFERS_GO_IN_BSS is not set +CONFIG_BUSYBOX_DEFAULT_PASSWORD_MINLEN=6 +CONFIG_BUSYBOX_DEFAULT_MD5_SMALL=1 +CONFIG_BUSYBOX_DEFAULT_SHA3_SMALL=1 +CONFIG_BUSYBOX_DEFAULT_FEATURE_FAST_TOP=y +# CONFIG_BUSYBOX_DEFAULT_FEATURE_ETC_NETWORKS is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_ETC_SERVICES is not set +CONFIG_BUSYBOX_DEFAULT_FEATURE_EDITING=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_EDITING_MAX_LEN=512 +# CONFIG_BUSYBOX_DEFAULT_FEATURE_EDITING_VI is not set +CONFIG_BUSYBOX_DEFAULT_FEATURE_EDITING_HISTORY=256 +# CONFIG_BUSYBOX_DEFAULT_FEATURE_EDITING_SAVEHISTORY is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_EDITING_SAVE_ON_EXIT is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_REVERSE_SEARCH is not set +CONFIG_BUSYBOX_DEFAULT_FEATURE_TAB_COMPLETION=y +# CONFIG_BUSYBOX_DEFAULT_FEATURE_USERNAME_COMPLETION is not set +CONFIG_BUSYBOX_DEFAULT_FEATURE_EDITING_FANCY_PROMPT=y +# CONFIG_BUSYBOX_DEFAULT_FEATURE_EDITING_WINCH is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_EDITING_ASK_TERMINAL is not set +# CONFIG_BUSYBOX_DEFAULT_LOCALE_SUPPORT is not set +# CONFIG_BUSYBOX_DEFAULT_UNICODE_SUPPORT is not set +# CONFIG_BUSYBOX_DEFAULT_UNICODE_USING_LOCALE is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_CHECK_UNICODE_IN_ENV is not set +CONFIG_BUSYBOX_DEFAULT_SUBST_WCHAR=0 +CONFIG_BUSYBOX_DEFAULT_LAST_SUPPORTED_WCHAR=0 +# CONFIG_BUSYBOX_DEFAULT_UNICODE_COMBINING_WCHARS is not set +# CONFIG_BUSYBOX_DEFAULT_UNICODE_WIDE_WCHARS is not set +# CONFIG_BUSYBOX_DEFAULT_UNICODE_BIDI_SUPPORT is not set +# CONFIG_BUSYBOX_DEFAULT_UNICODE_NEUTRAL_TABLE is not set +# CONFIG_BUSYBOX_DEFAULT_UNICODE_PRESERVE_BROKEN is not set +CONFIG_BUSYBOX_DEFAULT_FEATURE_NON_POSIX_CP=y +# CONFIG_BUSYBOX_DEFAULT_FEATURE_VERBOSE_CP_MESSAGE is not set +CONFIG_BUSYBOX_DEFAULT_FEATURE_USE_SENDFILE=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_COPYBUF_KB=4 +# CONFIG_BUSYBOX_DEFAULT_FEATURE_SKIP_ROOTFS is not set +# CONFIG_BUSYBOX_DEFAULT_MONOTONIC_SYSCALL is not set +CONFIG_BUSYBOX_DEFAULT_IOCTL_HEX2STR_ERROR=y +# CONFIG_BUSYBOX_DEFAULT_FEATURE_HWIB is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_SEAMLESS_XZ is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_SEAMLESS_LZMA is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_SEAMLESS_BZ2 is not set +CONFIG_BUSYBOX_DEFAULT_FEATURE_SEAMLESS_GZ=y +# CONFIG_BUSYBOX_DEFAULT_FEATURE_SEAMLESS_Z is not set +# CONFIG_BUSYBOX_DEFAULT_AR is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_AR_LONG_FILENAMES is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_AR_CREATE is not set +# CONFIG_BUSYBOX_DEFAULT_UNCOMPRESS is not set +CONFIG_BUSYBOX_DEFAULT_GUNZIP=y +CONFIG_BUSYBOX_DEFAULT_ZCAT=y +# CONFIG_BUSYBOX_DEFAULT_FEATURE_GUNZIP_LONG_OPTIONS is not set +CONFIG_BUSYBOX_DEFAULT_BUNZIP2=y +CONFIG_BUSYBOX_DEFAULT_BZCAT=y +# CONFIG_BUSYBOX_DEFAULT_UNLZMA is not set +# CONFIG_BUSYBOX_DEFAULT_LZCAT is not set +# CONFIG_BUSYBOX_DEFAULT_LZMA is not set +# CONFIG_BUSYBOX_DEFAULT_UNXZ is not set +# CONFIG_BUSYBOX_DEFAULT_XZCAT is not set +# CONFIG_BUSYBOX_DEFAULT_XZ is not set +# CONFIG_BUSYBOX_DEFAULT_BZIP2 is not set +CONFIG_BUSYBOX_DEFAULT_BZIP2_SMALL=0 +CONFIG_BUSYBOX_DEFAULT_FEATURE_BZIP2_DECOMPRESS=y +# CONFIG_BUSYBOX_DEFAULT_CPIO is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_CPIO_O is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_CPIO_P is not set +# CONFIG_BUSYBOX_DEFAULT_DPKG is not set +# CONFIG_BUSYBOX_DEFAULT_DPKG_DEB is not set +CONFIG_BUSYBOX_DEFAULT_GZIP=y +# CONFIG_BUSYBOX_DEFAULT_FEATURE_GZIP_LONG_OPTIONS is not set +CONFIG_BUSYBOX_DEFAULT_GZIP_FAST=0 +# CONFIG_BUSYBOX_DEFAULT_FEATURE_GZIP_LEVELS is not set +CONFIG_BUSYBOX_DEFAULT_FEATURE_GZIP_DECOMPRESS=y +# CONFIG_BUSYBOX_DEFAULT_LZOP is not set +# CONFIG_BUSYBOX_DEFAULT_UNLZOP is not set +# CONFIG_BUSYBOX_DEFAULT_LZOPCAT is not set +# CONFIG_BUSYBOX_DEFAULT_LZOP_COMPR_HIGH is not set +# CONFIG_BUSYBOX_DEFAULT_RPM is not set +# CONFIG_BUSYBOX_DEFAULT_RPM2CPIO is not set +CONFIG_BUSYBOX_DEFAULT_TAR=y +# CONFIG_BUSYBOX_DEFAULT_FEATURE_TAR_LONG_OPTIONS is not set +CONFIG_BUSYBOX_DEFAULT_FEATURE_TAR_CREATE=y +# CONFIG_BUSYBOX_DEFAULT_FEATURE_TAR_AUTODETECT is not set +CONFIG_BUSYBOX_DEFAULT_FEATURE_TAR_FROM=y +# CONFIG_BUSYBOX_DEFAULT_FEATURE_TAR_OLDGNU_COMPATIBILITY is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_TAR_OLDSUN_COMPATIBILITY is not set +CONFIG_BUSYBOX_DEFAULT_FEATURE_TAR_GNU_EXTENSIONS=y +# CONFIG_BUSYBOX_DEFAULT_FEATURE_TAR_TO_COMMAND is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_TAR_UNAME_GNAME is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_TAR_NOPRESERVE_TIME is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_TAR_SELINUX is not set +# CONFIG_BUSYBOX_DEFAULT_UNZIP is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_UNZIP_CDF is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_UNZIP_BZIP2 is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_UNZIP_LZMA is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_UNZIP_XZ is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_LZMA_FAST is not set +CONFIG_BUSYBOX_DEFAULT_BASENAME=y +CONFIG_BUSYBOX_DEFAULT_CAT=y +# CONFIG_BUSYBOX_DEFAULT_FEATURE_CATN is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_CATV is not set +CONFIG_BUSYBOX_DEFAULT_CHGRP=y +CONFIG_BUSYBOX_DEFAULT_CHMOD=y +CONFIG_BUSYBOX_DEFAULT_CHOWN=y +# CONFIG_BUSYBOX_DEFAULT_FEATURE_CHOWN_LONG_OPTIONS is not set +CONFIG_BUSYBOX_DEFAULT_CHROOT=y +# CONFIG_BUSYBOX_DEFAULT_CKSUM is not set +# CONFIG_BUSYBOX_DEFAULT_COMM is not set +CONFIG_BUSYBOX_DEFAULT_CP=y +# CONFIG_BUSYBOX_DEFAULT_FEATURE_CP_LONG_OPTIONS is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_CP_REFLINK is not set +CONFIG_BUSYBOX_DEFAULT_CUT=y +CONFIG_BUSYBOX_DEFAULT_DATE=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_DATE_ISOFMT=y +# CONFIG_BUSYBOX_DEFAULT_FEATURE_DATE_NANO is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_DATE_COMPAT is not set +CONFIG_BUSYBOX_DEFAULT_DD=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_DD_SIGNAL_HANDLING=y +# CONFIG_BUSYBOX_DEFAULT_FEATURE_DD_THIRD_STATUS_LINE is not set +CONFIG_BUSYBOX_DEFAULT_FEATURE_DD_IBS_OBS=y +# CONFIG_BUSYBOX_DEFAULT_FEATURE_DD_STATUS is not set +CONFIG_BUSYBOX_DEFAULT_DF=y +# CONFIG_BUSYBOX_DEFAULT_FEATURE_DF_FANCY is not set +CONFIG_BUSYBOX_DEFAULT_DIRNAME=y +# CONFIG_BUSYBOX_DEFAULT_DOS2UNIX is not set +# CONFIG_BUSYBOX_DEFAULT_UNIX2DOS is not set +CONFIG_BUSYBOX_DEFAULT_DU=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_DU_DEFAULT_BLOCKSIZE_1K=y +CONFIG_BUSYBOX_DEFAULT_ECHO=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_FANCY_ECHO=y +CONFIG_BUSYBOX_DEFAULT_ENV=y +# CONFIG_BUSYBOX_DEFAULT_EXPAND is not set +# CONFIG_BUSYBOX_DEFAULT_UNEXPAND is not set +CONFIG_BUSYBOX_DEFAULT_EXPR=y +CONFIG_BUSYBOX_DEFAULT_EXPR_MATH_SUPPORT_64=y +# CONFIG_BUSYBOX_DEFAULT_FACTOR is not set +CONFIG_BUSYBOX_DEFAULT_FALSE=y +# CONFIG_BUSYBOX_DEFAULT_FOLD is not set +CONFIG_BUSYBOX_DEFAULT_HEAD=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_FANCY_HEAD=y +# CONFIG_BUSYBOX_DEFAULT_HOSTID is not set +CONFIG_BUSYBOX_DEFAULT_ID=y +# CONFIG_BUSYBOX_DEFAULT_GROUPS is not set +# CONFIG_BUSYBOX_DEFAULT_INSTALL is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_INSTALL_LONG_OPTIONS is not set +# CONFIG_BUSYBOX_DEFAULT_LINK is not set +CONFIG_BUSYBOX_DEFAULT_LN=y +# CONFIG_BUSYBOX_DEFAULT_LOGNAME is not set +CONFIG_BUSYBOX_DEFAULT_LS=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_LS_FILETYPES=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_LS_FOLLOWLINKS=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_LS_RECURSIVE=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_LS_WIDTH=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_LS_SORTFILES=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_LS_TIMESTAMPS=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_LS_USERNAME=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_LS_COLOR=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_LS_COLOR_IS_DEFAULT=y +CONFIG_BUSYBOX_DEFAULT_MD5SUM=y +# CONFIG_BUSYBOX_DEFAULT_SHA1SUM is not set +CONFIG_BUSYBOX_DEFAULT_SHA256SUM=y +# CONFIG_BUSYBOX_DEFAULT_SHA512SUM is not set +# CONFIG_BUSYBOX_DEFAULT_SHA3SUM is not set +CONFIG_BUSYBOX_DEFAULT_FEATURE_MD5_SHA1_SUM_CHECK=y +CONFIG_BUSYBOX_DEFAULT_MKDIR=y +CONFIG_BUSYBOX_DEFAULT_MKFIFO=y +CONFIG_BUSYBOX_DEFAULT_MKNOD=y +CONFIG_BUSYBOX_DEFAULT_MKTEMP=y +CONFIG_BUSYBOX_DEFAULT_MV=y +CONFIG_BUSYBOX_DEFAULT_NICE=y +# CONFIG_BUSYBOX_DEFAULT_NL is not set +# CONFIG_BUSYBOX_DEFAULT_NOHUP is not set +# CONFIG_BUSYBOX_DEFAULT_NPROC is not set +# CONFIG_BUSYBOX_DEFAULT_OD is not set +# CONFIG_BUSYBOX_DEFAULT_PASTE is not set +# CONFIG_BUSYBOX_DEFAULT_PRINTENV is not set +CONFIG_BUSYBOX_DEFAULT_PRINTF=y +CONFIG_BUSYBOX_DEFAULT_PWD=y +CONFIG_BUSYBOX_DEFAULT_READLINK=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_READLINK_FOLLOW=y +# CONFIG_BUSYBOX_DEFAULT_REALPATH is not set +CONFIG_BUSYBOX_DEFAULT_RM=y +CONFIG_BUSYBOX_DEFAULT_RMDIR=y +CONFIG_BUSYBOX_DEFAULT_SEQ=y +# CONFIG_BUSYBOX_DEFAULT_SHRED is not set +# CONFIG_BUSYBOX_DEFAULT_SHUF is not set +CONFIG_BUSYBOX_DEFAULT_SLEEP=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_FANCY_SLEEP=y +CONFIG_BUSYBOX_DEFAULT_SORT=y +# CONFIG_BUSYBOX_DEFAULT_FEATURE_SORT_BIG is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_SORT_OPTIMIZE_MEMORY is not set +# CONFIG_BUSYBOX_DEFAULT_SPLIT is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_SPLIT_FANCY is not set +# CONFIG_BUSYBOX_DEFAULT_STAT is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_STAT_FORMAT is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_STAT_FILESYSTEM is not set +# CONFIG_BUSYBOX_DEFAULT_STTY is not set +# CONFIG_BUSYBOX_DEFAULT_SUM is not set +CONFIG_BUSYBOX_DEFAULT_SYNC=y +# CONFIG_BUSYBOX_DEFAULT_FEATURE_SYNC_FANCY is not set +CONFIG_BUSYBOX_DEFAULT_FSYNC=y +# CONFIG_BUSYBOX_DEFAULT_TAC is not set +CONFIG_BUSYBOX_DEFAULT_TAIL=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_FANCY_TAIL=y +CONFIG_BUSYBOX_DEFAULT_TEE=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_TEE_USE_BLOCK_IO=y +CONFIG_BUSYBOX_DEFAULT_TEST=y +CONFIG_BUSYBOX_DEFAULT_TEST1=y +CONFIG_BUSYBOX_DEFAULT_TEST2=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_TEST_64=y +# CONFIG_BUSYBOX_DEFAULT_TIMEOUT is not set +CONFIG_BUSYBOX_DEFAULT_TOUCH=y +# CONFIG_BUSYBOX_DEFAULT_FEATURE_TOUCH_NODEREF is not set +CONFIG_BUSYBOX_DEFAULT_FEATURE_TOUCH_SUSV3=y +CONFIG_BUSYBOX_DEFAULT_TR=y +# CONFIG_BUSYBOX_DEFAULT_FEATURE_TR_CLASSES is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_TR_EQUIV is not set +CONFIG_BUSYBOX_DEFAULT_TRUE=y +# CONFIG_BUSYBOX_DEFAULT_TRUNCATE is not set +# CONFIG_BUSYBOX_DEFAULT_TTY is not set +CONFIG_BUSYBOX_DEFAULT_UNAME=y +CONFIG_BUSYBOX_DEFAULT_UNAME_OSNAME="GNU/Linux" +# CONFIG_BUSYBOX_DEFAULT_BB_ARCH is not set +CONFIG_BUSYBOX_DEFAULT_UNIQ=y +# CONFIG_BUSYBOX_DEFAULT_UNLINK is not set +# CONFIG_BUSYBOX_DEFAULT_USLEEP is not set +# CONFIG_BUSYBOX_DEFAULT_UUDECODE is not set +# CONFIG_BUSYBOX_DEFAULT_BASE64 is not set +# CONFIG_BUSYBOX_DEFAULT_UUENCODE is not set +CONFIG_BUSYBOX_DEFAULT_WC=y +# CONFIG_BUSYBOX_DEFAULT_FEATURE_WC_LARGE is not set +# CONFIG_BUSYBOX_DEFAULT_WHO is not set +# CONFIG_BUSYBOX_DEFAULT_W is not set +# CONFIG_BUSYBOX_DEFAULT_USERS is not set +# CONFIG_BUSYBOX_DEFAULT_WHOAMI is not set +CONFIG_BUSYBOX_DEFAULT_YES=y +# CONFIG_BUSYBOX_DEFAULT_FEATURE_VERBOSE is not set +CONFIG_BUSYBOX_DEFAULT_FEATURE_PRESERVE_HARDLINKS=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_HUMAN_READABLE=y +# CONFIG_BUSYBOX_DEFAULT_CHVT is not set +CONFIG_BUSYBOX_DEFAULT_CLEAR=y +# CONFIG_BUSYBOX_DEFAULT_DEALLOCVT is not set +# CONFIG_BUSYBOX_DEFAULT_DUMPKMAP is not set +# CONFIG_BUSYBOX_DEFAULT_FGCONSOLE is not set +# CONFIG_BUSYBOX_DEFAULT_KBD_MODE is not set +# CONFIG_BUSYBOX_DEFAULT_LOADFONT is not set +# CONFIG_BUSYBOX_DEFAULT_SETFONT is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_SETFONT_TEXTUAL_MAP is not set +CONFIG_BUSYBOX_DEFAULT_DEFAULT_SETFONT_DIR="" +# CONFIG_BUSYBOX_DEFAULT_FEATURE_LOADFONT_PSF2 is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_LOADFONT_RAW is not set +# CONFIG_BUSYBOX_DEFAULT_LOADKMAP is not set +# CONFIG_BUSYBOX_DEFAULT_OPENVT is not set +CONFIG_BUSYBOX_DEFAULT_RESET=y +# CONFIG_BUSYBOX_DEFAULT_RESIZE is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_RESIZE_PRINT is not set +# CONFIG_BUSYBOX_DEFAULT_SETCONSOLE is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_SETCONSOLE_LONG_OPTIONS is not set +# CONFIG_BUSYBOX_DEFAULT_SETKEYCODES is not set +# CONFIG_BUSYBOX_DEFAULT_SETLOGCONS is not set +# CONFIG_BUSYBOX_DEFAULT_SHOWKEY is not set +# CONFIG_BUSYBOX_DEFAULT_PIPE_PROGRESS is not set +# CONFIG_BUSYBOX_DEFAULT_RUN_PARTS is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_RUN_PARTS_LONG_OPTIONS is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_RUN_PARTS_FANCY is not set +CONFIG_BUSYBOX_DEFAULT_START_STOP_DAEMON=y +# CONFIG_BUSYBOX_DEFAULT_FEATURE_START_STOP_DAEMON_LONG_OPTIONS is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_START_STOP_DAEMON_FANCY is not set +CONFIG_BUSYBOX_DEFAULT_WHICH=y +# CONFIG_BUSYBOX_DEFAULT_MINIPS is not set +# CONFIG_BUSYBOX_DEFAULT_NUKE is not set +# CONFIG_BUSYBOX_DEFAULT_RESUME is not set +# CONFIG_BUSYBOX_DEFAULT_RUN_INIT is not set +CONFIG_BUSYBOX_DEFAULT_AWK=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_AWK_LIBM=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_AWK_GNU_EXTENSIONS=y +CONFIG_BUSYBOX_DEFAULT_CMP=y +# CONFIG_BUSYBOX_DEFAULT_DIFF is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_DIFF_LONG_OPTIONS is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_DIFF_DIR is not set +# CONFIG_BUSYBOX_DEFAULT_ED is not set +# CONFIG_BUSYBOX_DEFAULT_PATCH is not set +CONFIG_BUSYBOX_DEFAULT_SED=y +CONFIG_BUSYBOX_DEFAULT_VI=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_VI_MAX_LEN=1024 +# CONFIG_BUSYBOX_DEFAULT_FEATURE_VI_8BIT is not set +CONFIG_BUSYBOX_DEFAULT_FEATURE_VI_COLON=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_VI_YANKMARK=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_VI_SEARCH=y +# CONFIG_BUSYBOX_DEFAULT_FEATURE_VI_REGEX_SEARCH is not set +CONFIG_BUSYBOX_DEFAULT_FEATURE_VI_USE_SIGNALS=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_VI_DOT_CMD=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_VI_READONLY=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_VI_SETOPTS=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_VI_SET=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_VI_WIN_RESIZE=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_VI_ASK_TERMINAL=y +# CONFIG_BUSYBOX_DEFAULT_FEATURE_VI_UNDO is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_VI_UNDO_QUEUE is not set +CONFIG_BUSYBOX_DEFAULT_FEATURE_VI_UNDO_QUEUE_MAX=0 +CONFIG_BUSYBOX_DEFAULT_FEATURE_ALLOW_EXEC=y +CONFIG_BUSYBOX_DEFAULT_FIND=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_FIND_PRINT0=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_FIND_MTIME=y +# CONFIG_BUSYBOX_DEFAULT_FEATURE_FIND_MMIN is not set +CONFIG_BUSYBOX_DEFAULT_FEATURE_FIND_PERM=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_FIND_TYPE=y +# CONFIG_BUSYBOX_DEFAULT_FEATURE_FIND_EXECUTABLE is not set +CONFIG_BUSYBOX_DEFAULT_FEATURE_FIND_XDEV=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_FIND_MAXDEPTH=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_FIND_NEWER=y +# CONFIG_BUSYBOX_DEFAULT_FEATURE_FIND_INUM is not set +CONFIG_BUSYBOX_DEFAULT_FEATURE_FIND_EXEC=y +# CONFIG_BUSYBOX_DEFAULT_FEATURE_FIND_EXEC_PLUS is not set +CONFIG_BUSYBOX_DEFAULT_FEATURE_FIND_USER=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_FIND_GROUP=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_FIND_NOT=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_FIND_DEPTH=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_FIND_PAREN=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_FIND_SIZE=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_FIND_PRUNE=y +# CONFIG_BUSYBOX_DEFAULT_FEATURE_FIND_QUIT is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_FIND_DELETE is not set +CONFIG_BUSYBOX_DEFAULT_FEATURE_FIND_PATH=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_FIND_REGEX=y +# CONFIG_BUSYBOX_DEFAULT_FEATURE_FIND_CONTEXT is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_FIND_LINKS is not set +CONFIG_BUSYBOX_DEFAULT_GREP=y +CONFIG_BUSYBOX_DEFAULT_EGREP=y +CONFIG_BUSYBOX_DEFAULT_FGREP=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_GREP_CONTEXT=y +CONFIG_BUSYBOX_DEFAULT_XARGS=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_XARGS_SUPPORT_CONFIRMATION=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_XARGS_SUPPORT_QUOTES=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_XARGS_SUPPORT_TERMOPT=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_XARGS_SUPPORT_ZERO_TERM=y +# CONFIG_BUSYBOX_DEFAULT_FEATURE_XARGS_SUPPORT_REPL_STR is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_XARGS_SUPPORT_PARALLEL is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_XARGS_SUPPORT_ARGS_FILE is not set +# CONFIG_BUSYBOX_DEFAULT_BOOTCHARTD is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_BOOTCHARTD_BLOATED_HEADER is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_BOOTCHARTD_CONFIG_FILE is not set +CONFIG_BUSYBOX_DEFAULT_HALT=y +CONFIG_BUSYBOX_DEFAULT_POWEROFF=y +CONFIG_BUSYBOX_DEFAULT_REBOOT=y +# CONFIG_BUSYBOX_DEFAULT_FEATURE_WAIT_FOR_INIT is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_CALL_TELINIT is not set +CONFIG_BUSYBOX_DEFAULT_TELINIT_PATH="" +# CONFIG_BUSYBOX_DEFAULT_INIT is not set +# CONFIG_BUSYBOX_DEFAULT_LINUXRC is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_USE_INITTAB is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_KILL_REMOVED is not set +CONFIG_BUSYBOX_DEFAULT_FEATURE_KILL_DELAY=0 +# CONFIG_BUSYBOX_DEFAULT_FEATURE_INIT_SCTTY is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_INIT_SYSLOG is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_INIT_QUIET is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_INIT_COREDUMPS is not set +CONFIG_BUSYBOX_DEFAULT_INIT_TERMINAL_TYPE="" +# CONFIG_BUSYBOX_DEFAULT_FEATURE_INIT_MODIFY_CMDLINE is not set +CONFIG_BUSYBOX_DEFAULT_FEATURE_SHADOWPASSWDS=y +# CONFIG_BUSYBOX_DEFAULT_USE_BB_PWD_GRP is not set +# CONFIG_BUSYBOX_DEFAULT_USE_BB_SHADOW is not set +# CONFIG_BUSYBOX_DEFAULT_USE_BB_CRYPT is not set +# CONFIG_BUSYBOX_DEFAULT_USE_BB_CRYPT_SHA is not set +# CONFIG_BUSYBOX_DEFAULT_ADD_SHELL is not set +# CONFIG_BUSYBOX_DEFAULT_REMOVE_SHELL is not set +# CONFIG_BUSYBOX_DEFAULT_ADDGROUP is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_ADDUSER_TO_GROUP is not set +# CONFIG_BUSYBOX_DEFAULT_ADDUSER is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_CHECK_NAMES is not set +CONFIG_BUSYBOX_DEFAULT_LAST_ID=0 +CONFIG_BUSYBOX_DEFAULT_FIRST_SYSTEM_ID=0 +CONFIG_BUSYBOX_DEFAULT_LAST_SYSTEM_ID=0 +# CONFIG_BUSYBOX_DEFAULT_CHPASSWD is not set +CONFIG_BUSYBOX_DEFAULT_FEATURE_DEFAULT_PASSWD_ALGO="md5" +# CONFIG_BUSYBOX_DEFAULT_CRYPTPW is not set +# CONFIG_BUSYBOX_DEFAULT_MKPASSWD is not set +# CONFIG_BUSYBOX_DEFAULT_DELUSER is not set +# CONFIG_BUSYBOX_DEFAULT_DELGROUP is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_DEL_USER_FROM_GROUP is not set +# CONFIG_BUSYBOX_DEFAULT_GETTY is not set +CONFIG_BUSYBOX_DEFAULT_LOGIN=y +CONFIG_BUSYBOX_DEFAULT_LOGIN_SESSION_AS_CHILD=y +# CONFIG_BUSYBOX_DEFAULT_LOGIN_SCRIPTS is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_NOLOGIN is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_SECURETTY is not set +CONFIG_BUSYBOX_DEFAULT_PASSWD=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_PASSWD_WEAK_CHECK=y +# CONFIG_BUSYBOX_DEFAULT_SU is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_SU_SYSLOG is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_SU_CHECKS_SHELLS is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_SU_BLANK_PW_NEEDS_SECURE_TTY is not set +# CONFIG_BUSYBOX_DEFAULT_SULOGIN is not set +# CONFIG_BUSYBOX_DEFAULT_VLOCK is not set +# CONFIG_BUSYBOX_DEFAULT_CHATTR is not set +# CONFIG_BUSYBOX_DEFAULT_FSCK is not set +# CONFIG_BUSYBOX_DEFAULT_LSATTR is not set +# CONFIG_BUSYBOX_DEFAULT_TUNE2FS is not set +# CONFIG_BUSYBOX_DEFAULT_MODPROBE_SMALL is not set +# CONFIG_BUSYBOX_DEFAULT_DEPMOD is not set +# CONFIG_BUSYBOX_DEFAULT_INSMOD is not set +# CONFIG_BUSYBOX_DEFAULT_LSMOD is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_LSMOD_PRETTY_2_6_OUTPUT is not set +# CONFIG_BUSYBOX_DEFAULT_MODINFO is not set +# CONFIG_BUSYBOX_DEFAULT_MODPROBE is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_MODPROBE_BLACKLIST is not set +# CONFIG_BUSYBOX_DEFAULT_RMMOD is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_CMDLINE_MODULE_OPTIONS is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_MODPROBE_SMALL_CHECK_ALREADY_LOADED is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_2_4_MODULES is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_INSMOD_VERSION_CHECKING is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_INSMOD_KSYMOOPS_SYMBOLS is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_INSMOD_LOADINKMEM is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_INSMOD_LOAD_MAP is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_INSMOD_LOAD_MAP_FULL is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_CHECK_TAINTED_MODULE is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_INSMOD_TRY_MMAP is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_MODUTILS_ALIAS is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_MODUTILS_SYMBOLS is not set +CONFIG_BUSYBOX_DEFAULT_DEFAULT_MODULES_DIR="" +CONFIG_BUSYBOX_DEFAULT_DEFAULT_DEPMOD_FILE="" +# CONFIG_BUSYBOX_DEFAULT_ACPID is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_ACPID_COMPAT is not set +# CONFIG_BUSYBOX_DEFAULT_BLKDISCARD is not set +# CONFIG_BUSYBOX_DEFAULT_BLKID is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_BLKID_TYPE is not set +# CONFIG_BUSYBOX_DEFAULT_BLOCKDEV is not set +# CONFIG_BUSYBOX_DEFAULT_CAL is not set +# CONFIG_BUSYBOX_DEFAULT_CHRT is not set +CONFIG_BUSYBOX_DEFAULT_DMESG=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_DMESG_PRETTY=y +# CONFIG_BUSYBOX_DEFAULT_EJECT is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_EJECT_SCSI is not set +# CONFIG_BUSYBOX_DEFAULT_FALLOCATE is not set +# CONFIG_BUSYBOX_DEFAULT_FATATTR is not set +# CONFIG_BUSYBOX_DEFAULT_FBSET is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_FBSET_FANCY is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_FBSET_READMODE is not set +# CONFIG_BUSYBOX_DEFAULT_FDFORMAT is not set +# CONFIG_BUSYBOX_DEFAULT_FDISK is not set +# CONFIG_BUSYBOX_DEFAULT_FDISK_SUPPORT_LARGE_DISKS is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_FDISK_WRITABLE is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_AIX_LABEL is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_SGI_LABEL is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_SUN_LABEL is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_OSF_LABEL is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_GPT_LABEL is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_FDISK_ADVANCED is not set +# CONFIG_BUSYBOX_DEFAULT_FINDFS is not set +CONFIG_BUSYBOX_DEFAULT_FLOCK=y +# CONFIG_BUSYBOX_DEFAULT_FDFLUSH is not set +# CONFIG_BUSYBOX_DEFAULT_FREERAMDISK is not set +# CONFIG_BUSYBOX_DEFAULT_FSCK_MINIX is not set +# CONFIG_BUSYBOX_DEFAULT_FSFREEZE is not set +# CONFIG_BUSYBOX_DEFAULT_FSTRIM is not set +# CONFIG_BUSYBOX_DEFAULT_GETOPT is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_GETOPT_LONG is not set +CONFIG_BUSYBOX_DEFAULT_HEXDUMP=y +# CONFIG_BUSYBOX_DEFAULT_FEATURE_HEXDUMP_REVERSE is not set +# CONFIG_BUSYBOX_DEFAULT_HD is not set +# CONFIG_BUSYBOX_DEFAULT_XXD is not set +CONFIG_BUSYBOX_DEFAULT_HWCLOCK=y +# CONFIG_BUSYBOX_DEFAULT_FEATURE_HWCLOCK_ADJTIME_FHS is not set +# CONFIG_BUSYBOX_DEFAULT_IONICE is not set +# CONFIG_BUSYBOX_DEFAULT_IPCRM is not set +# CONFIG_BUSYBOX_DEFAULT_IPCS is not set +# CONFIG_BUSYBOX_DEFAULT_LAST is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_LAST_FANCY is not set +# CONFIG_BUSYBOX_DEFAULT_LOSETUP is not set +# CONFIG_BUSYBOX_DEFAULT_LSPCI is not set +# CONFIG_BUSYBOX_DEFAULT_LSUSB is not set +# CONFIG_BUSYBOX_DEFAULT_MDEV is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_MDEV_CONF is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_MDEV_RENAME is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_MDEV_RENAME_REGEXP is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_MDEV_EXEC is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_MDEV_LOAD_FIRMWARE is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_MDEV_DAEMON is not set +# CONFIG_BUSYBOX_DEFAULT_MESG is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_MESG_ENABLE_ONLY_GROUP is not set +# CONFIG_BUSYBOX_DEFAULT_MKE2FS is not set +# CONFIG_BUSYBOX_DEFAULT_MKFS_EXT2 is not set +# CONFIG_BUSYBOX_DEFAULT_MKFS_MINIX is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_MINIX2 is not set +# CONFIG_BUSYBOX_DEFAULT_MKFS_REISER is not set +# CONFIG_BUSYBOX_DEFAULT_MKDOSFS is not set +# CONFIG_BUSYBOX_DEFAULT_MKFS_VFAT is not set +CONFIG_BUSYBOX_DEFAULT_MKSWAP=y +# CONFIG_BUSYBOX_DEFAULT_FEATURE_MKSWAP_UUID is not set +# CONFIG_BUSYBOX_DEFAULT_MORE is not set +CONFIG_BUSYBOX_DEFAULT_MOUNT=y +# CONFIG_BUSYBOX_DEFAULT_FEATURE_MOUNT_FAKE is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_MOUNT_VERBOSE is not set +CONFIG_BUSYBOX_DEFAULT_FEATURE_MOUNT_HELPERS=y +# CONFIG_BUSYBOX_DEFAULT_FEATURE_MOUNT_LABEL is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_MOUNT_NFS is not set +CONFIG_BUSYBOX_DEFAULT_FEATURE_MOUNT_CIFS=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_MOUNT_FLAGS=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_MOUNT_FSTAB=y +# CONFIG_BUSYBOX_DEFAULT_FEATURE_MOUNT_OTHERTAB is not set +# CONFIG_BUSYBOX_DEFAULT_MOUNTPOINT is not set +# CONFIG_BUSYBOX_DEFAULT_NOLOGIN is not set +# CONFIG_BUSYBOX_DEFAULT_NOLOGIN_DEPENDENCIES is not set +# CONFIG_BUSYBOX_DEFAULT_NSENTER is not set +CONFIG_BUSYBOX_DEFAULT_PIVOT_ROOT=y +# CONFIG_BUSYBOX_DEFAULT_RDATE is not set +# CONFIG_BUSYBOX_DEFAULT_RDEV is not set +# CONFIG_BUSYBOX_DEFAULT_READPROFILE is not set +# CONFIG_BUSYBOX_DEFAULT_RENICE is not set +# CONFIG_BUSYBOX_DEFAULT_REV is not set +# CONFIG_BUSYBOX_DEFAULT_RTCWAKE is not set +# CONFIG_BUSYBOX_DEFAULT_SCRIPT is not set +# CONFIG_BUSYBOX_DEFAULT_SCRIPTREPLAY is not set +# CONFIG_BUSYBOX_DEFAULT_SETARCH is not set +# CONFIG_BUSYBOX_DEFAULT_LINUX32 is not set +# CONFIG_BUSYBOX_DEFAULT_LINUX64 is not set +# CONFIG_BUSYBOX_DEFAULT_SETPRIV is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_SETPRIV_DUMP is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_SETPRIV_CAPABILITIES is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_SETPRIV_CAPABILITY_NAMES is not set +# CONFIG_BUSYBOX_DEFAULT_SETSID is not set +CONFIG_BUSYBOX_DEFAULT_SWAPON=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_SWAPON_DISCARD=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_SWAPON_PRI=y +CONFIG_BUSYBOX_DEFAULT_SWAPOFF=y +# CONFIG_BUSYBOX_DEFAULT_FEATURE_SWAPONOFF_LABEL is not set +CONFIG_BUSYBOX_DEFAULT_SWITCH_ROOT=y +# CONFIG_BUSYBOX_DEFAULT_TASKSET is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_TASKSET_FANCY is not set +# CONFIG_BUSYBOX_DEFAULT_UEVENT is not set +CONFIG_BUSYBOX_DEFAULT_UMOUNT=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_UMOUNT_ALL=y +# CONFIG_BUSYBOX_DEFAULT_UNSHARE is not set +# CONFIG_BUSYBOX_DEFAULT_WALL is not set +CONFIG_BUSYBOX_DEFAULT_FEATURE_MOUNT_LOOP=y +# CONFIG_BUSYBOX_DEFAULT_FEATURE_MOUNT_LOOP_CREATE is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_MTAB_SUPPORT is not set +# CONFIG_BUSYBOX_DEFAULT_VOLUMEID is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_VOLUMEID_BCACHE is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_VOLUMEID_BTRFS is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_VOLUMEID_CRAMFS is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_VOLUMEID_EXFAT is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_VOLUMEID_EXT is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_VOLUMEID_F2FS is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_VOLUMEID_FAT is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_VOLUMEID_HFS is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_VOLUMEID_ISO9660 is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_VOLUMEID_JFS is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_VOLUMEID_LFS is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_VOLUMEID_LINUXRAID is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_VOLUMEID_LINUXSWAP is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_VOLUMEID_LUKS is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_VOLUMEID_MINIX is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_VOLUMEID_NILFS is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_VOLUMEID_NTFS is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_VOLUMEID_OCFS2 is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_VOLUMEID_REISERFS is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_VOLUMEID_ROMFS is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_VOLUMEID_SQUASHFS is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_VOLUMEID_SYSV is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_VOLUMEID_UBIFS is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_VOLUMEID_UDF is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_VOLUMEID_XFS is not set +# CONFIG_BUSYBOX_DEFAULT_ADJTIMEX is not set +# CONFIG_BUSYBOX_DEFAULT_BBCONFIG is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_COMPRESS_BBCONFIG is not set +# CONFIG_BUSYBOX_DEFAULT_BC is not set +# CONFIG_BUSYBOX_DEFAULT_DC is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_DC_BIG is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_DC_LIBM is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_BC_INTERACTIVE is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_BC_LONG_OPTIONS is not set +# CONFIG_BUSYBOX_DEFAULT_BEEP is not set +CONFIG_BUSYBOX_DEFAULT_FEATURE_BEEP_FREQ=0 +CONFIG_BUSYBOX_DEFAULT_FEATURE_BEEP_LENGTH_MS=0 +# CONFIG_BUSYBOX_DEFAULT_CHAT is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_CHAT_NOFAIL is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_CHAT_TTY_HIFI is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_CHAT_IMPLICIT_CR is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_CHAT_SWALLOW_OPTS is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_CHAT_SEND_ESCAPES is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_CHAT_VAR_ABORT_LEN is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_CHAT_CLR_ABORT is not set +# CONFIG_BUSYBOX_DEFAULT_CONSPY is not set +CONFIG_BUSYBOX_DEFAULT_CROND=y +# CONFIG_BUSYBOX_DEFAULT_FEATURE_CROND_D is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_CROND_CALL_SENDMAIL is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_CROND_SPECIAL_TIMES is not set +CONFIG_BUSYBOX_DEFAULT_FEATURE_CROND_DIR="/etc" +CONFIG_BUSYBOX_DEFAULT_CRONTAB=y +# CONFIG_BUSYBOX_DEFAULT_DEVFSD is not set +# CONFIG_BUSYBOX_DEFAULT_DEVFSD_MODLOAD is not set +# CONFIG_BUSYBOX_DEFAULT_DEVFSD_FG_NP is not set +# CONFIG_BUSYBOX_DEFAULT_DEVFSD_VERBOSE is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_DEVFS is not set +# CONFIG_BUSYBOX_DEFAULT_DEVMEM is not set +# CONFIG_BUSYBOX_DEFAULT_FBSPLASH is not set +# CONFIG_BUSYBOX_DEFAULT_FLASH_ERASEALL is not set +# CONFIG_BUSYBOX_DEFAULT_FLASH_LOCK is not set +# CONFIG_BUSYBOX_DEFAULT_FLASH_UNLOCK is not set +# CONFIG_BUSYBOX_DEFAULT_FLASHCP is not set +# CONFIG_BUSYBOX_DEFAULT_HDPARM is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_HDPARM_GET_IDENTITY is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_HDPARM_HDIO_SCAN_HWIF is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_HDPARM_HDIO_UNREGISTER_HWIF is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_HDPARM_HDIO_DRIVE_RESET is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_HDPARM_HDIO_TRISTATE_HWIF is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_HDPARM_HDIO_GETSET_DMA is not set +# CONFIG_BUSYBOX_DEFAULT_HEXEDIT is not set +# CONFIG_BUSYBOX_DEFAULT_I2CGET is not set +# CONFIG_BUSYBOX_DEFAULT_I2CSET is not set +# CONFIG_BUSYBOX_DEFAULT_I2CDUMP is not set +# CONFIG_BUSYBOX_DEFAULT_I2CDETECT is not set +# CONFIG_BUSYBOX_DEFAULT_I2CTRANSFER is not set +# CONFIG_BUSYBOX_DEFAULT_INOTIFYD is not set +CONFIG_BUSYBOX_DEFAULT_LESS=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_LESS_MAXLINES=9999999 +# CONFIG_BUSYBOX_DEFAULT_FEATURE_LESS_BRACKETS is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_LESS_FLAGS is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_LESS_TRUNCATE is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_LESS_MARKS is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_LESS_REGEXP is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_LESS_WINCH is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_LESS_ASK_TERMINAL is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_LESS_DASHCMD is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_LESS_LINENUMS is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_LESS_RAW is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_LESS_ENV is not set +CONFIG_BUSYBOX_DEFAULT_LOCK=y +# CONFIG_BUSYBOX_DEFAULT_LSSCSI is not set +# CONFIG_BUSYBOX_DEFAULT_MAKEDEVS is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_MAKEDEVS_LEAF is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_MAKEDEVS_TABLE is not set +# CONFIG_BUSYBOX_DEFAULT_MAN is not set +# CONFIG_BUSYBOX_DEFAULT_MICROCOM is not set +# CONFIG_BUSYBOX_DEFAULT_MT is not set +# CONFIG_BUSYBOX_DEFAULT_NANDWRITE is not set +# CONFIG_BUSYBOX_DEFAULT_NANDDUMP is not set +# CONFIG_BUSYBOX_DEFAULT_PARTPROBE is not set +# CONFIG_BUSYBOX_DEFAULT_RAIDAUTORUN is not set +# CONFIG_BUSYBOX_DEFAULT_READAHEAD is not set +# CONFIG_BUSYBOX_DEFAULT_RFKILL is not set +# CONFIG_BUSYBOX_DEFAULT_RUNLEVEL is not set +# CONFIG_BUSYBOX_DEFAULT_RX is not set +# CONFIG_BUSYBOX_DEFAULT_SETFATTR is not set +# CONFIG_BUSYBOX_DEFAULT_SETSERIAL is not set +CONFIG_BUSYBOX_DEFAULT_STRINGS=y +CONFIG_BUSYBOX_DEFAULT_TIME=y +# CONFIG_BUSYBOX_DEFAULT_TS is not set +# CONFIG_BUSYBOX_DEFAULT_TTYSIZE is not set +# CONFIG_BUSYBOX_DEFAULT_UBIATTACH is not set +# CONFIG_BUSYBOX_DEFAULT_UBIDETACH is not set +# CONFIG_BUSYBOX_DEFAULT_UBIMKVOL is not set +# CONFIG_BUSYBOX_DEFAULT_UBIRMVOL is not set +# CONFIG_BUSYBOX_DEFAULT_UBIRSVOL is not set +# CONFIG_BUSYBOX_DEFAULT_UBIUPDATEVOL is not set +# CONFIG_BUSYBOX_DEFAULT_UBIRENAME is not set +# CONFIG_BUSYBOX_DEFAULT_VOLNAME is not set +# CONFIG_BUSYBOX_DEFAULT_WATCHDOG is not set +CONFIG_BUSYBOX_DEFAULT_FEATURE_IPV6=y +# CONFIG_BUSYBOX_DEFAULT_FEATURE_UNIX_LOCAL is not set +CONFIG_BUSYBOX_DEFAULT_FEATURE_PREFER_IPV4_ADDRESS=y +CONFIG_BUSYBOX_DEFAULT_VERBOSE_RESOLUTION_ERRORS=y +# CONFIG_BUSYBOX_DEFAULT_FEATURE_TLS_SHA1 is not set +# CONFIG_BUSYBOX_DEFAULT_ARP is not set +# CONFIG_BUSYBOX_DEFAULT_ARPING is not set +CONFIG_BUSYBOX_DEFAULT_BRCTL=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_BRCTL_FANCY=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_BRCTL_SHOW=y +# CONFIG_BUSYBOX_DEFAULT_DNSD is not set +# CONFIG_BUSYBOX_DEFAULT_ETHER_WAKE is not set +# CONFIG_BUSYBOX_DEFAULT_FTPD is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_FTPD_WRITE is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_FTPD_ACCEPT_BROKEN_LIST is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_FTPD_AUTHENTICATION is not set +# CONFIG_BUSYBOX_DEFAULT_FTPGET is not set +# CONFIG_BUSYBOX_DEFAULT_FTPPUT is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_FTPGETPUT_LONG_OPTIONS is not set +# CONFIG_BUSYBOX_DEFAULT_HOSTNAME is not set +# CONFIG_BUSYBOX_DEFAULT_DNSDOMAINNAME is not set +# CONFIG_BUSYBOX_DEFAULT_HTTPD is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_HTTPD_RANGES is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_HTTPD_SETUID is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_HTTPD_BASIC_AUTH is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_HTTPD_AUTH_MD5 is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_HTTPD_CGI is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_HTTPD_CONFIG_WITH_SCRIPT_INTERPR is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_HTTPD_SET_REMOTE_PORT_TO_ENV is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_HTTPD_ENCODE_URL_STR is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_HTTPD_ERROR_PAGES is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_HTTPD_PROXY is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_HTTPD_GZIP is not set +CONFIG_BUSYBOX_DEFAULT_IFCONFIG=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_IFCONFIG_STATUS=y +# CONFIG_BUSYBOX_DEFAULT_FEATURE_IFCONFIG_SLIP is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_IFCONFIG_MEMSTART_IOADDR_IRQ is not set +CONFIG_BUSYBOX_DEFAULT_FEATURE_IFCONFIG_HW=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_IFCONFIG_BROADCAST_PLUS=y +# CONFIG_BUSYBOX_DEFAULT_IFENSLAVE is not set +# CONFIG_BUSYBOX_DEFAULT_IFPLUGD is not set +# CONFIG_BUSYBOX_DEFAULT_IFUP is not set +# CONFIG_BUSYBOX_DEFAULT_IFDOWN is not set +CONFIG_BUSYBOX_DEFAULT_IFUPDOWN_IFSTATE_PATH="" +# CONFIG_BUSYBOX_DEFAULT_FEATURE_IFUPDOWN_IP is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_IFUPDOWN_IPV4 is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_IFUPDOWN_IPV6 is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_IFUPDOWN_MAPPING is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_IFUPDOWN_EXTERNAL_DHCP is not set +# CONFIG_BUSYBOX_DEFAULT_INETD is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_INETD_SUPPORT_BUILTIN_ECHO is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_INETD_SUPPORT_BUILTIN_DISCARD is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_INETD_SUPPORT_BUILTIN_TIME is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_INETD_SUPPORT_BUILTIN_DAYTIME is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_INETD_SUPPORT_BUILTIN_CHARGEN is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_INETD_RPC is not set +CONFIG_BUSYBOX_DEFAULT_IP=y +# CONFIG_BUSYBOX_DEFAULT_IPADDR is not set +# CONFIG_BUSYBOX_DEFAULT_IPLINK is not set +# CONFIG_BUSYBOX_DEFAULT_IPROUTE is not set +# CONFIG_BUSYBOX_DEFAULT_IPTUNNEL is not set +# CONFIG_BUSYBOX_DEFAULT_IPRULE is not set +# CONFIG_BUSYBOX_DEFAULT_IPNEIGH is not set +CONFIG_BUSYBOX_DEFAULT_FEATURE_IP_ADDRESS=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_IP_LINK=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_IP_ROUTE=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_IP_ROUTE_DIR="/etc/iproute2" +# CONFIG_BUSYBOX_DEFAULT_FEATURE_IP_TUNNEL is not set +CONFIG_BUSYBOX_DEFAULT_FEATURE_IP_RULE=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_IP_NEIGH=y +# CONFIG_BUSYBOX_DEFAULT_FEATURE_IP_RARE_PROTOCOLS is not set +# CONFIG_BUSYBOX_DEFAULT_IPCALC is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_IPCALC_LONG_OPTIONS is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_IPCALC_FANCY is not set +# CONFIG_BUSYBOX_DEFAULT_FAKEIDENTD is not set +# CONFIG_BUSYBOX_DEFAULT_NAMEIF is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_NAMEIF_EXTENDED is not set +# CONFIG_BUSYBOX_DEFAULT_NBDCLIENT is not set +CONFIG_BUSYBOX_DEFAULT_NC=y +# CONFIG_BUSYBOX_DEFAULT_NETCAT is not set +# CONFIG_BUSYBOX_DEFAULT_NC_SERVER is not set +# CONFIG_BUSYBOX_DEFAULT_NC_EXTRA is not set +# CONFIG_BUSYBOX_DEFAULT_NC_110_COMPAT is not set +CONFIG_BUSYBOX_DEFAULT_NETMSG=y +CONFIG_BUSYBOX_DEFAULT_NETSTAT=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_NETSTAT_WIDE=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_NETSTAT_PRG=y +# CONFIG_BUSYBOX_DEFAULT_NSLOOKUP is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_NSLOOKUP_BIG is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_NSLOOKUP_LONG_OPTIONS is not set +CONFIG_BUSYBOX_DEFAULT_NSLOOKUP_OPENWRT=y +# CONFIG_BUSYBOX_DEFAULT_FEATURE_NSLOOKUP_OPENWRT_LONG_OPTIONS is not set +CONFIG_BUSYBOX_DEFAULT_NTPD=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_NTPD_SERVER=y +# CONFIG_BUSYBOX_DEFAULT_FEATURE_NTPD_CONF is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_NTP_AUTH is not set +CONFIG_BUSYBOX_DEFAULT_PING=y +CONFIG_BUSYBOX_DEFAULT_PING6=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_FANCY_PING=y +# CONFIG_BUSYBOX_DEFAULT_PSCAN is not set +CONFIG_BUSYBOX_DEFAULT_ROUTE=y +# CONFIG_BUSYBOX_DEFAULT_SLATTACH is not set +# CONFIG_BUSYBOX_DEFAULT_SSL_CLIENT is not set +# CONFIG_BUSYBOX_DEFAULT_TC is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_TC_INGRESS is not set +# CONFIG_BUSYBOX_DEFAULT_TCPSVD is not set +# CONFIG_BUSYBOX_DEFAULT_UDPSVD is not set +# CONFIG_BUSYBOX_DEFAULT_TELNET is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_TELNET_TTYPE is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_TELNET_AUTOLOGIN is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_TELNET_WIDTH is not set +# CONFIG_BUSYBOX_DEFAULT_TELNETD is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_TELNETD_STANDALONE is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_TELNETD_INETD_WAIT is not set +# CONFIG_BUSYBOX_DEFAULT_TFTP is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_TFTP_PROGRESS_BAR is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_TFTP_HPA_COMPAT is not set +# CONFIG_BUSYBOX_DEFAULT_TFTPD is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_TFTP_GET is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_TFTP_PUT is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_TFTP_BLOCKSIZE is not set +# CONFIG_BUSYBOX_DEFAULT_TFTP_DEBUG is not set +# CONFIG_BUSYBOX_DEFAULT_TLS is not set +CONFIG_BUSYBOX_DEFAULT_TRACEROUTE=y +CONFIG_BUSYBOX_DEFAULT_TRACEROUTE6=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_TRACEROUTE_VERBOSE=y +# CONFIG_BUSYBOX_DEFAULT_FEATURE_TRACEROUTE_USE_ICMP is not set +# CONFIG_BUSYBOX_DEFAULT_TUNCTL is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_TUNCTL_UG is not set +# CONFIG_BUSYBOX_DEFAULT_VCONFIG is not set +# CONFIG_BUSYBOX_DEFAULT_WGET is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_WGET_LONG_OPTIONS is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_WGET_STATUSBAR is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_WGET_AUTHENTICATION is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_WGET_TIMEOUT is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_WGET_HTTPS is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_WGET_OPENSSL is not set +# CONFIG_BUSYBOX_DEFAULT_WHOIS is not set +# CONFIG_BUSYBOX_DEFAULT_ZCIP is not set +# CONFIG_BUSYBOX_DEFAULT_UDHCPD is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_UDHCPD_BASE_IP_ON_MAC is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_UDHCPD_WRITE_LEASES_EARLY is not set +CONFIG_BUSYBOX_DEFAULT_DHCPD_LEASES_FILE="" +# CONFIG_BUSYBOX_DEFAULT_DUMPLEASES is not set +# CONFIG_BUSYBOX_DEFAULT_DHCPRELAY is not set +CONFIG_BUSYBOX_DEFAULT_UDHCPC=y +# CONFIG_BUSYBOX_DEFAULT_FEATURE_UDHCPC_ARPING is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_UDHCPC_SANITIZEOPT is not set +CONFIG_BUSYBOX_DEFAULT_UDHCPC_DEFAULT_SCRIPT="/usr/share/udhcpc/default.script" +# CONFIG_BUSYBOX_DEFAULT_UDHCPC6 is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_UDHCPC6_RFC3646 is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_UDHCPC6_RFC4704 is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_UDHCPC6_RFC4833 is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_UDHCPC6_RFC5970 is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_UDHCP_PORT is not set +CONFIG_BUSYBOX_DEFAULT_UDHCP_DEBUG=0 +CONFIG_BUSYBOX_DEFAULT_UDHCPC_SLACK_FOR_BUGGY_SERVERS=80 +CONFIG_BUSYBOX_DEFAULT_FEATURE_UDHCP_RFC3397=y +# CONFIG_BUSYBOX_DEFAULT_FEATURE_UDHCP_8021Q is not set +CONFIG_BUSYBOX_DEFAULT_IFUPDOWN_UDHCPC_CMD_OPTIONS="" +# CONFIG_BUSYBOX_DEFAULT_LPD is not set +# CONFIG_BUSYBOX_DEFAULT_LPR is not set +# CONFIG_BUSYBOX_DEFAULT_LPQ is not set +# CONFIG_BUSYBOX_DEFAULT_MAKEMIME is not set +# CONFIG_BUSYBOX_DEFAULT_POPMAILDIR is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_POPMAILDIR_DELIVERY is not set +# CONFIG_BUSYBOX_DEFAULT_REFORMIME is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_REFORMIME_COMPAT is not set +# CONFIG_BUSYBOX_DEFAULT_SENDMAIL is not set +CONFIG_BUSYBOX_DEFAULT_FEATURE_MIME_CHARSET="" +CONFIG_BUSYBOX_DEFAULT_FREE=y +# CONFIG_BUSYBOX_DEFAULT_FUSER is not set +# CONFIG_BUSYBOX_DEFAULT_IOSTAT is not set +CONFIG_BUSYBOX_DEFAULT_KILL=y +CONFIG_BUSYBOX_DEFAULT_KILLALL=y +# CONFIG_BUSYBOX_DEFAULT_KILLALL5 is not set +# CONFIG_BUSYBOX_DEFAULT_LSOF is not set +# CONFIG_BUSYBOX_DEFAULT_MPSTAT is not set +# CONFIG_BUSYBOX_DEFAULT_NMETER is not set +CONFIG_BUSYBOX_DEFAULT_PGREP=y +# CONFIG_BUSYBOX_DEFAULT_PKILL is not set +CONFIG_BUSYBOX_DEFAULT_PIDOF=y +# CONFIG_BUSYBOX_DEFAULT_FEATURE_PIDOF_SINGLE is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_PIDOF_OMIT is not set +# CONFIG_BUSYBOX_DEFAULT_PMAP is not set +# CONFIG_BUSYBOX_DEFAULT_POWERTOP is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_POWERTOP_INTERACTIVE is not set +CONFIG_BUSYBOX_DEFAULT_PS=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_PS_WIDE=y +# CONFIG_BUSYBOX_DEFAULT_FEATURE_PS_LONG is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_PS_TIME is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_PS_UNUSUAL_SYSTEMS is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_PS_ADDITIONAL_COLUMNS is not set +# CONFIG_BUSYBOX_DEFAULT_PSTREE is not set +# CONFIG_BUSYBOX_DEFAULT_PWDX is not set +# CONFIG_BUSYBOX_DEFAULT_SMEMCAP is not set +CONFIG_BUSYBOX_DEFAULT_BB_SYSCTL=y +CONFIG_BUSYBOX_DEFAULT_TOP=y +# CONFIG_BUSYBOX_DEFAULT_FEATURE_TOP_INTERACTIVE is not set +CONFIG_BUSYBOX_DEFAULT_FEATURE_TOP_CPU_USAGE_PERCENTAGE=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_TOP_CPU_GLOBAL_PERCENTS=y +# CONFIG_BUSYBOX_DEFAULT_FEATURE_TOP_SMP_CPU is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_TOP_DECIMALS is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_TOP_SMP_PROCESS is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_TOPMEM is not set +CONFIG_BUSYBOX_DEFAULT_UPTIME=y +# CONFIG_BUSYBOX_DEFAULT_FEATURE_UPTIME_UTMP_SUPPORT is not set +# CONFIG_BUSYBOX_DEFAULT_WATCH is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_SHOW_THREADS is not set +# CONFIG_BUSYBOX_DEFAULT_CHPST is not set +# CONFIG_BUSYBOX_DEFAULT_SETUIDGID is not set +# CONFIG_BUSYBOX_DEFAULT_ENVUIDGID is not set +# CONFIG_BUSYBOX_DEFAULT_ENVDIR is not set +# CONFIG_BUSYBOX_DEFAULT_SOFTLIMIT is not set +# CONFIG_BUSYBOX_DEFAULT_RUNSV is not set +# CONFIG_BUSYBOX_DEFAULT_RUNSVDIR is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_RUNSVDIR_LOG is not set +# CONFIG_BUSYBOX_DEFAULT_SV is not set +CONFIG_BUSYBOX_DEFAULT_SV_DEFAULT_SERVICE_DIR="" +# CONFIG_BUSYBOX_DEFAULT_SVC is not set +# CONFIG_BUSYBOX_DEFAULT_SVOK is not set +# CONFIG_BUSYBOX_DEFAULT_SVLOGD is not set +# CONFIG_BUSYBOX_DEFAULT_CHCON is not set +# CONFIG_BUSYBOX_DEFAULT_GETENFORCE is not set +# CONFIG_BUSYBOX_DEFAULT_GETSEBOOL is not set +# CONFIG_BUSYBOX_DEFAULT_LOAD_POLICY is not set +# CONFIG_BUSYBOX_DEFAULT_MATCHPATHCON is not set +# CONFIG_BUSYBOX_DEFAULT_RUNCON is not set +# CONFIG_BUSYBOX_DEFAULT_SELINUXENABLED is not set +# CONFIG_BUSYBOX_DEFAULT_SESTATUS is not set +# CONFIG_BUSYBOX_DEFAULT_SETENFORCE is not set +# CONFIG_BUSYBOX_DEFAULT_SETFILES is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_SETFILES_CHECK_OPTION is not set +# CONFIG_BUSYBOX_DEFAULT_RESTORECON is not set +# CONFIG_BUSYBOX_DEFAULT_SETSEBOOL is not set +CONFIG_BUSYBOX_DEFAULT_SH_IS_ASH=y +# CONFIG_BUSYBOX_DEFAULT_SH_IS_HUSH is not set +# CONFIG_BUSYBOX_DEFAULT_SH_IS_NONE is not set +# CONFIG_BUSYBOX_DEFAULT_BASH_IS_ASH is not set +# CONFIG_BUSYBOX_DEFAULT_BASH_IS_HUSH is not set +CONFIG_BUSYBOX_DEFAULT_BASH_IS_NONE=y +CONFIG_BUSYBOX_DEFAULT_ASH=y +# CONFIG_BUSYBOX_DEFAULT_ASH_OPTIMIZE_FOR_SIZE is not set +CONFIG_BUSYBOX_DEFAULT_ASH_INTERNAL_GLOB=y +CONFIG_BUSYBOX_DEFAULT_ASH_BASH_COMPAT=y +# CONFIG_BUSYBOX_DEFAULT_ASH_BASH_SOURCE_CURDIR is not set +# CONFIG_BUSYBOX_DEFAULT_ASH_BASH_NOT_FOUND_HOOK is not set +CONFIG_BUSYBOX_DEFAULT_ASH_JOB_CONTROL=y +CONFIG_BUSYBOX_DEFAULT_ASH_ALIAS=y +# CONFIG_BUSYBOX_DEFAULT_ASH_RANDOM_SUPPORT is not set +CONFIG_BUSYBOX_DEFAULT_ASH_EXPAND_PRMT=y +# CONFIG_BUSYBOX_DEFAULT_ASH_IDLE_TIMEOUT is not set +# CONFIG_BUSYBOX_DEFAULT_ASH_MAIL is not set +CONFIG_BUSYBOX_DEFAULT_ASH_ECHO=y +CONFIG_BUSYBOX_DEFAULT_ASH_PRINTF=y +CONFIG_BUSYBOX_DEFAULT_ASH_TEST=y +# CONFIG_BUSYBOX_DEFAULT_ASH_HELP is not set +CONFIG_BUSYBOX_DEFAULT_ASH_GETOPTS=y +CONFIG_BUSYBOX_DEFAULT_ASH_CMDCMD=y +# CONFIG_BUSYBOX_DEFAULT_CTTYHACK is not set +# CONFIG_BUSYBOX_DEFAULT_HUSH is not set +# CONFIG_BUSYBOX_DEFAULT_HUSH_BASH_COMPAT is not set +# CONFIG_BUSYBOX_DEFAULT_HUSH_BRACE_EXPANSION is not set +# CONFIG_BUSYBOX_DEFAULT_HUSH_LINENO_VAR is not set +# CONFIG_BUSYBOX_DEFAULT_HUSH_BASH_SOURCE_CURDIR is not set +# CONFIG_BUSYBOX_DEFAULT_HUSH_INTERACTIVE is not set +# CONFIG_BUSYBOX_DEFAULT_HUSH_SAVEHISTORY is not set +# CONFIG_BUSYBOX_DEFAULT_HUSH_JOB is not set +# CONFIG_BUSYBOX_DEFAULT_HUSH_TICK is not set +# CONFIG_BUSYBOX_DEFAULT_HUSH_IF is not set +# CONFIG_BUSYBOX_DEFAULT_HUSH_LOOPS is not set +# CONFIG_BUSYBOX_DEFAULT_HUSH_CASE is not set +# CONFIG_BUSYBOX_DEFAULT_HUSH_FUNCTIONS is not set +# CONFIG_BUSYBOX_DEFAULT_HUSH_LOCAL is not set +# CONFIG_BUSYBOX_DEFAULT_HUSH_RANDOM_SUPPORT is not set +# CONFIG_BUSYBOX_DEFAULT_HUSH_MODE_X is not set +# CONFIG_BUSYBOX_DEFAULT_HUSH_ECHO is not set +# CONFIG_BUSYBOX_DEFAULT_HUSH_PRINTF is not set +# CONFIG_BUSYBOX_DEFAULT_HUSH_TEST is not set +# CONFIG_BUSYBOX_DEFAULT_HUSH_HELP is not set +# CONFIG_BUSYBOX_DEFAULT_HUSH_EXPORT is not set +# CONFIG_BUSYBOX_DEFAULT_HUSH_EXPORT_N is not set +# CONFIG_BUSYBOX_DEFAULT_HUSH_READONLY is not set +# CONFIG_BUSYBOX_DEFAULT_HUSH_KILL is not set +# CONFIG_BUSYBOX_DEFAULT_HUSH_WAIT is not set +# CONFIG_BUSYBOX_DEFAULT_HUSH_COMMAND is not set +# CONFIG_BUSYBOX_DEFAULT_HUSH_TRAP is not set +# CONFIG_BUSYBOX_DEFAULT_HUSH_TYPE is not set +# CONFIG_BUSYBOX_DEFAULT_HUSH_TIMES is not set +# CONFIG_BUSYBOX_DEFAULT_HUSH_READ is not set +# CONFIG_BUSYBOX_DEFAULT_HUSH_SET is not set +# CONFIG_BUSYBOX_DEFAULT_HUSH_UNSET is not set +# CONFIG_BUSYBOX_DEFAULT_HUSH_ULIMIT is not set +# CONFIG_BUSYBOX_DEFAULT_HUSH_UMASK is not set +# CONFIG_BUSYBOX_DEFAULT_HUSH_GETOPTS is not set +# CONFIG_BUSYBOX_DEFAULT_HUSH_MEMLEAK is not set +CONFIG_BUSYBOX_DEFAULT_FEATURE_SH_MATH=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_SH_MATH_64=y +# CONFIG_BUSYBOX_DEFAULT_FEATURE_SH_MATH_BASE is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_SH_EXTRA_QUIET is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_SH_STANDALONE is not set +CONFIG_BUSYBOX_DEFAULT_FEATURE_SH_NOFORK=y +# CONFIG_BUSYBOX_DEFAULT_FEATURE_SH_READ_FRAC is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_SH_HISTFILESIZE is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_SH_EMBEDDED_SCRIPTS is not set +# CONFIG_BUSYBOX_DEFAULT_KLOGD is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_KLOGD_KLOGCTL is not set +CONFIG_BUSYBOX_DEFAULT_LOGGER=y +# CONFIG_BUSYBOX_DEFAULT_LOGREAD is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_LOGREAD_REDUCED_LOCKING is not set +# CONFIG_BUSYBOX_DEFAULT_SYSLOGD is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_ROTATE_LOGFILE is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_REMOTE_LOG is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_SYSLOGD_DUP is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_SYSLOGD_CFG is not set +CONFIG_BUSYBOX_DEFAULT_FEATURE_SYSLOGD_READ_BUFFER_SIZE=0 +# CONFIG_BUSYBOX_DEFAULT_FEATURE_IPC_SYSLOG is not set +CONFIG_BUSYBOX_DEFAULT_FEATURE_IPC_SYSLOG_BUFFER_SIZE=0 +# CONFIG_BUSYBOX_DEFAULT_FEATURE_KMSG_SYSLOG is not set +CONFIG_PACKAGE_dnsmasq=y +CONFIG_PACKAGE_dropbear=y +CONFIG_DROPBEAR_CURVE25519=y +# CONFIG_DROPBEAR_ECC is not set +# CONFIG_DROPBEAR_ZLIB is not set +CONFIG_DROPBEAR_DBCLIENT=y +CONFIG_PACKAGE_firewall=y +CONFIG_PACKAGE_fstools=y +# CONFIG_FSTOOLS_OVL_MOUNT_FULL_ACCESS_TIME is not set +# CONFIG_FSTOOLS_OVL_MOUNT_COMPRESS_ZLIB is not set +CONFIG_PACKAGE_fwtool=y +CONFIG_PACKAGE_getrandom=y +CONFIG_PACKAGE_jsonfilter=y +CONFIG_PACKAGE_libatomic=m +CONFIG_PACKAGE_libc=y +CONFIG_PACKAGE_libgcc=y +CONFIG_PACKAGE_libgomp=m +CONFIG_PACKAGE_libpthread=y +CONFIG_PACKAGE_librt=y +CONFIG_PACKAGE_libstdcpp=m +CONFIG_PACKAGE_logd=y +CONFIG_PACKAGE_mtd=y +CONFIG_PACKAGE_netifd=y +CONFIG_PACKAGE_openwrt-keyring=y +CONFIG_PACKAGE_opkg=y +CONFIG_PACKAGE_procd=y +# CONFIG_PROCD_SHOW_BOOT is not set +# CONFIG_PROCD_ZRAM_TMPFS is not set +CONFIG_PACKAGE_snapshot-tool=m +CONFIG_PACKAGE_ubox=y +CONFIG_PACKAGE_ubus=y +CONFIG_PACKAGE_ubusd=y +CONFIG_PACKAGE_uci=y +CONFIG_PACKAGE_urandom-seed=y +CONFIG_PACKAGE_urngd=y +CONFIG_PACKAGE_usign=y +# CONFIG_ZABBIX_OPENSSL is not set +# CONFIG_ZABBIX_GNUTLS is not set +CONFIG_ZABBIX_NOSSL=y +# CONFIG_ZABBIX_MYSQL is not set +CONFIG_ZABBIX_POSTGRESQL=y +CONFIG_PACKAGE_grub2=y +CONFIG_PACKAGE_amdgpu-firmware=m +CONFIG_PACKAGE_ar3k-firmware=m +CONFIG_PACKAGE_ath9k-htc-firmware=m +CONFIG_PACKAGE_b43legacy-firmware=m +CONFIG_B43LEGACY_FW_SQUASH=y +CONFIG_B43LEGACY_FW_SQUASH_COREREVS="1,2,3,4" +CONFIG_PACKAGE_bnx2-firmware=y +CONFIG_PACKAGE_bnx2x-firmware=m +CONFIG_PACKAGE_brcmfmac-firmware-usb=m +CONFIG_PACKAGE_carl9170-firmware=m +CONFIG_PACKAGE_e100-firmware=m +CONFIG_PACKAGE_edgeport-firmware=m +CONFIG_PACKAGE_iwl3945-firmware=m +CONFIG_PACKAGE_iwl4965-firmware=m +CONFIG_PACKAGE_libertas-sdio-firmware=m +CONFIG_PACKAGE_libertas-spi-firmware=m +CONFIG_PACKAGE_libertas-usb-firmware=m +CONFIG_PACKAGE_mt7601u-firmware=m +CONFIG_PACKAGE_mwifiex-pcie-firmware=m +CONFIG_PACKAGE_mwifiex-sdio-firmware=m +CONFIG_PACKAGE_mwl8k-firmware=m +CONFIG_PACKAGE_p54-pci-firmware=m +CONFIG_PACKAGE_p54-usb-firmware=m +CONFIG_PACKAGE_prism54-firmware=m +CONFIG_PACKAGE_r8169-firmware=y +CONFIG_PACKAGE_radeon-firmware=m +CONFIG_PACKAGE_rs9113-firmware=m +CONFIG_PACKAGE_rt2800-pci-firmware=m +CONFIG_PACKAGE_rt2800-usb-firmware=m +CONFIG_PACKAGE_rt61-pci-firmware=m +CONFIG_PACKAGE_rt73-usb-firmware=m +CONFIG_PACKAGE_rtl8192ce-firmware=m +CONFIG_PACKAGE_rtl8192cu-firmware=m +CONFIG_PACKAGE_rtl8192de-firmware=m +CONFIG_PACKAGE_rtl8192se-firmware=m +CONFIG_PACKAGE_rtl8192su-firmware=m +CONFIG_PACKAGE_rtl8821ae-firmware=m +CONFIG_PACKAGE_wireless-regdb=m +CONFIG_PACKAGE_wl12xx-firmware=m +CONFIG_PACKAGE_wl18xx-firmware=m +CONFIG_PACKAGE_kmod-aoe=m +CONFIG_PACKAGE_kmod-ata-core=m +CONFIG_PACKAGE_kmod-ata-ahci=m +CONFIG_PACKAGE_kmod-ata-artop=m +CONFIG_PACKAGE_kmod-ata-marvell-sata=m +CONFIG_PACKAGE_kmod-ata-nvidia-sata=m +CONFIG_PACKAGE_kmod-ata-pdc202xx-old=m +CONFIG_PACKAGE_kmod-ata-piix=m +CONFIG_PACKAGE_kmod-ata-sil=m +CONFIG_PACKAGE_kmod-ata-sil24=m +CONFIG_PACKAGE_kmod-ata-via-sata=m +CONFIG_PACKAGE_kmod-block2mtd=m +CONFIG_PACKAGE_kmod-dax=m +CONFIG_PACKAGE_kmod-dm=m +CONFIG_PACKAGE_kmod-dm-raid=m +CONFIG_PACKAGE_kmod-libsas=m +CONFIG_PACKAGE_kmod-loop=m +CONFIG_PACKAGE_kmod-md-mod=m +CONFIG_PACKAGE_kmod-md-linear=m +CONFIG_PACKAGE_kmod-md-multipath=m +CONFIG_PACKAGE_kmod-md-raid0=m +CONFIG_PACKAGE_kmod-md-raid1=m +CONFIG_PACKAGE_kmod-md-raid10=m +CONFIG_PACKAGE_kmod-md-raid456=m +CONFIG_PACKAGE_kmod-mvsas=m +CONFIG_PACKAGE_kmod-nbd=m +CONFIG_PACKAGE_kmod-scsi-cdrom=m +CONFIG_PACKAGE_kmod-scsi-core=m +CONFIG_PACKAGE_kmod-scsi-generic=m +CONFIG_PACKAGE_kmod-scsi-tape=m +CONFIG_PACKAGE_kmod-can=m +CONFIG_PACKAGE_kmod-can-bcm=m +CONFIG_PACKAGE_kmod-can-c-can=m +CONFIG_PACKAGE_kmod-can-c-can-pci=m +CONFIG_PACKAGE_kmod-can-c-can-platform=m +CONFIG_PACKAGE_kmod-can-gw=m +CONFIG_PACKAGE_kmod-can-raw=m +CONFIG_PACKAGE_kmod-can-slcan=m +CONFIG_PACKAGE_kmod-can-usb-8dev=m +CONFIG_PACKAGE_kmod-can-usb-ems=m +CONFIG_PACKAGE_kmod-can-usb-esd=m +CONFIG_PACKAGE_kmod-can-usb-kvaser=m +CONFIG_PACKAGE_kmod-can-usb-peak=m +CONFIG_PACKAGE_kmod-can-vcan=m +CONFIG_PACKAGE_kmod-crypto-acompress=m +CONFIG_PACKAGE_kmod-crypto-aead=m +CONFIG_PACKAGE_kmod-crypto-arc4=m +CONFIG_PACKAGE_kmod-crypto-authenc=m +CONFIG_PACKAGE_kmod-crypto-cbc=m +CONFIG_PACKAGE_kmod-crypto-ccm=m +CONFIG_PACKAGE_kmod-crypto-cmac=m +CONFIG_PACKAGE_kmod-crypto-crc32=m +CONFIG_PACKAGE_kmod-crypto-crc32c=m +CONFIG_PACKAGE_kmod-crypto-ctr=m +CONFIG_PACKAGE_kmod-crypto-cts=m +CONFIG_PACKAGE_kmod-crypto-deflate=m +CONFIG_PACKAGE_kmod-crypto-des=m +CONFIG_PACKAGE_kmod-crypto-ecb=m +CONFIG_PACKAGE_kmod-crypto-ecdh=m +CONFIG_PACKAGE_kmod-crypto-echainiv=m +CONFIG_PACKAGE_kmod-crypto-fcrypt=m +CONFIG_PACKAGE_kmod-crypto-gcm=m +CONFIG_PACKAGE_kmod-crypto-gf128=m +CONFIG_PACKAGE_kmod-crypto-ghash=m +CONFIG_PACKAGE_kmod-crypto-hash=m +CONFIG_PACKAGE_kmod-crypto-hmac=m +CONFIG_PACKAGE_kmod-crypto-hw-ccp=m +CONFIG_PACKAGE_kmod-crypto-hw-geode=m +CONFIG_PACKAGE_kmod-crypto-hw-hifn-795x=m +CONFIG_PACKAGE_kmod-crypto-hw-padlock=m +CONFIG_PACKAGE_kmod-crypto-hw-talitos=m +CONFIG_PACKAGE_kmod-crypto-iv=m +CONFIG_PACKAGE_kmod-crypto-kpp=m +CONFIG_PACKAGE_kmod-crypto-manager=m +CONFIG_PACKAGE_kmod-crypto-md4=m +CONFIG_PACKAGE_kmod-crypto-md5=m +CONFIG_PACKAGE_kmod-crypto-michael-mic=m +CONFIG_PACKAGE_kmod-crypto-misc=m +CONFIG_PACKAGE_kmod-crypto-null=m +CONFIG_PACKAGE_kmod-crypto-pcbc=m +CONFIG_PACKAGE_kmod-crypto-pcompress=m +CONFIG_PACKAGE_kmod-crypto-rmd160=m +CONFIG_PACKAGE_kmod-crypto-rng=m +CONFIG_PACKAGE_kmod-crypto-rsa=m +CONFIG_PACKAGE_kmod-crypto-seqiv=m +CONFIG_PACKAGE_kmod-crypto-sha1=m +CONFIG_PACKAGE_kmod-crypto-sha256=m +CONFIG_PACKAGE_kmod-crypto-sha512=m +CONFIG_PACKAGE_kmod-crypto-test=m +CONFIG_PACKAGE_kmod-crypto-user=m +CONFIG_PACKAGE_kmod-crypto-wq=m +CONFIG_PACKAGE_kmod-crypto-xcbc=m +CONFIG_PACKAGE_kmod-crypto-xts=m +CONFIG_PACKAGE_kmod-fs-9p=m +CONFIG_PACKAGE_kmod-fs-autofs4=m +CONFIG_PACKAGE_kmod-fs-btrfs=m +CONFIG_PACKAGE_kmod-fs-cifs=m +CONFIG_PACKAGE_kmod-fs-cifsd=m +CONFIG_PACKAGE_kmod-fs-configfs=m +CONFIG_PACKAGE_kmod-fs-cramfs=m +CONFIG_PACKAGE_kmod-fs-efivarfs=m +CONFIG_PACKAGE_kmod-fs-exfat=m +CONFIG_PACKAGE_kmod-fs-exportfs=m +CONFIG_PACKAGE_kmod-fs-ext4=m +CONFIG_PACKAGE_kmod-fs-f2fs=m +CONFIG_PACKAGE_kmod-fs-fscache=m +CONFIG_PACKAGE_kmod-fs-hfs=m +CONFIG_PACKAGE_kmod-fs-hfsplus=m +CONFIG_PACKAGE_kmod-fs-isofs=m +CONFIG_PACKAGE_kmod-fs-jfs=m +CONFIG_PACKAGE_kmod-fs-minix=m +CONFIG_PACKAGE_kmod-fs-msdos=m +CONFIG_PACKAGE_kmod-fs-nfs=m +CONFIG_PACKAGE_kmod-fs-nfs-common=m +CONFIG_PACKAGE_kmod-fs-nfs-common-rpcsec=m +CONFIG_PACKAGE_kmod-fs-nfs-v3=m +CONFIG_PACKAGE_kmod-fs-nfs-v4=m +CONFIG_PACKAGE_kmod-fs-nfsd=m +CONFIG_PACKAGE_kmod-fs-ntfs=m +CONFIG_PACKAGE_kmod-fs-reiserfs=m +CONFIG_PACKAGE_kmod-fs-squashfs=m +CONFIG_PACKAGE_kmod-fs-udf=m +CONFIG_PACKAGE_kmod-fs-vfat=m +CONFIG_PACKAGE_kmod-fs-xfs=m +CONFIG_PACKAGE_kmod-fuse=m +CONFIG_PACKAGE_kmod-firewire=m +CONFIG_PACKAGE_kmod-firewire-net=m +CONFIG_PACKAGE_kmod-firewire-ohci=m +CONFIG_PACKAGE_kmod-firewire-sbp2=m +CONFIG_PACKAGE_kmod-hwmon-core=y +CONFIG_PACKAGE_kmod-hwmon-adcxx=m +CONFIG_PACKAGE_kmod-hwmon-ads1015=m +CONFIG_PACKAGE_kmod-hwmon-adt7410=m +CONFIG_PACKAGE_kmod-hwmon-adt7475=m +CONFIG_PACKAGE_kmod-hwmon-gpiofan=m +CONFIG_PACKAGE_kmod-hwmon-ina209=m +CONFIG_PACKAGE_kmod-hwmon-ina2xx=m +CONFIG_PACKAGE_kmod-hwmon-it87=m +CONFIG_PACKAGE_kmod-hwmon-lm63=m +CONFIG_PACKAGE_kmod-hwmon-lm75=m +CONFIG_PACKAGE_kmod-hwmon-lm77=m +CONFIG_PACKAGE_kmod-hwmon-lm85=m +CONFIG_PACKAGE_kmod-hwmon-lm90=m +CONFIG_PACKAGE_kmod-hwmon-lm92=m +CONFIG_PACKAGE_kmod-hwmon-lm95241=m +CONFIG_PACKAGE_kmod-hwmon-ltc4151=m +CONFIG_PACKAGE_kmod-hwmon-nct6775=m +CONFIG_PACKAGE_kmod-hwmon-pc87360=m +CONFIG_PACKAGE_kmod-hwmon-pwmfan=m +CONFIG_PACKAGE_kmod-hwmon-sch5627=m +CONFIG_PACKAGE_kmod-hwmon-sht21=m +CONFIG_PACKAGE_kmod-hwmon-tmp102=m +CONFIG_PACKAGE_kmod-hwmon-tmp103=m +CONFIG_PACKAGE_kmod-hwmon-tmp421=m +CONFIG_PACKAGE_kmod-hwmon-vid=m +CONFIG_PACKAGE_kmod-hwmon-w83627ehf=m +CONFIG_PACKAGE_kmod-hwmon-w83627hf=m +CONFIG_PACKAGE_kmod-hwmon-w83793=m +CONFIG_PACKAGE_kmod-pmbus-core=m +CONFIG_PACKAGE_kmod-pmbus-zl6100=m +CONFIG_PACKAGE_kmod-i2c-core=y +CONFIG_PACKAGE_kmod-i2c-algo-bit=y +CONFIG_PACKAGE_kmod-i2c-algo-pca=m +CONFIG_PACKAGE_kmod-i2c-algo-pcf=m +CONFIG_PACKAGE_kmod-i2c-gpio=m +CONFIG_PACKAGE_kmod-i2c-i801=m +CONFIG_PACKAGE_kmod-i2c-mux=m +CONFIG_PACKAGE_kmod-i2c-mux-gpio=m +CONFIG_PACKAGE_kmod-i2c-mux-pca9541=m +CONFIG_PACKAGE_kmod-i2c-mux-pca954x=m +CONFIG_PACKAGE_kmod-i2c-piix4=m +CONFIG_PACKAGE_kmod-i2c-pxa=m +CONFIG_PACKAGE_kmod-i2c-smbus=m +CONFIG_PACKAGE_kmod-i2c-tiny-usb=m +CONFIG_PACKAGE_kmod-iio-ad799x=m +CONFIG_PACKAGE_kmod-iio-am2315=m +CONFIG_PACKAGE_kmod-iio-bh1750=m +CONFIG_PACKAGE_kmod-iio-bmp280=m +CONFIG_PACKAGE_kmod-iio-bmp280-i2c=m +CONFIG_PACKAGE_kmod-iio-bmp280-spi=m +CONFIG_PACKAGE_kmod-iio-ccs811=m +CONFIG_PACKAGE_kmod-iio-core=m +CONFIG_PACKAGE_kmod-iio-hmc5843=m +CONFIG_PACKAGE_kmod-iio-htu21=m +CONFIG_PACKAGE_kmod-iio-si7020=m +CONFIG_PACKAGE_kmod-iio-tsl4531=m +CONFIG_PACKAGE_kmod-hid=m +CONFIG_PACKAGE_kmod-hid-generic=m +CONFIG_PACKAGE_kmod-input-core=y +CONFIG_PACKAGE_kmod-input-evdev=m +CONFIG_PACKAGE_kmod-input-gpio-encoder=m +CONFIG_PACKAGE_kmod-input-gpio-keys=m +CONFIG_PACKAGE_kmod-input-gpio-keys-polled=m +CONFIG_PACKAGE_kmod-input-joydev=m +CONFIG_PACKAGE_kmod-input-matrixkmap=m +CONFIG_PACKAGE_kmod-input-polldev=m +CONFIG_PACKAGE_kmod-input-touchscreen-ads7846=m +CONFIG_PACKAGE_kmod-input-uinput=m +CONFIG_PACKAGE_kmod-leds-apu2=m +CONFIG_PACKAGE_kmod-leds-gpio=m +CONFIG_PACKAGE_kmod-leds-pca963x=m +CONFIG_PACKAGE_kmod-ledtrig-default-on=m +CONFIG_PACKAGE_kmod-ledtrig-gpio=m +CONFIG_PACKAGE_kmod-ledtrig-heartbeat=m +CONFIG_PACKAGE_kmod-ledtrig-netdev=m +CONFIG_PACKAGE_kmod-ledtrig-oneshot=m +CONFIG_PACKAGE_kmod-ledtrig-timer=m +CONFIG_PACKAGE_kmod-ledtrig-transient=m +CONFIG_PACKAGE_kmod-asn1-decoder=m +CONFIG_PACKAGE_kmod-lib-cordic=m +CONFIG_PACKAGE_kmod-lib-crc-ccitt=y +CONFIG_PACKAGE_kmod-lib-crc-itu-t=m +CONFIG_PACKAGE_kmod-lib-crc16=m +CONFIG_PACKAGE_kmod-lib-crc32c=m +CONFIG_PACKAGE_kmod-lib-crc7=m +CONFIG_PACKAGE_kmod-lib-crc8=m +CONFIG_PACKAGE_kmod-lib-lz4=m +CONFIG_PACKAGE_kmod-lib-lzo=m +CONFIG_PACKAGE_kmod-lib-raid6=m +CONFIG_PACKAGE_kmod-lib-textsearch=m +CONFIG_PACKAGE_kmod-lib-xor=m +CONFIG_PACKAGE_kmod-lib-zlib-deflate=m +CONFIG_PACKAGE_kmod-lib-zlib-inflate=m +CONFIG_PACKAGE_kmod-lib-zstd=m +CONFIG_PACKAGE_kmod-nls-base=m +CONFIG_PACKAGE_kmod-nls-cp1250=m +CONFIG_PACKAGE_kmod-nls-cp1251=m +CONFIG_PACKAGE_kmod-nls-cp437=m +CONFIG_PACKAGE_kmod-nls-cp775=m +CONFIG_PACKAGE_kmod-nls-cp850=m +CONFIG_PACKAGE_kmod-nls-cp852=m +CONFIG_PACKAGE_kmod-nls-cp862=m +CONFIG_PACKAGE_kmod-nls-cp864=m +CONFIG_PACKAGE_kmod-nls-cp866=m +CONFIG_PACKAGE_kmod-nls-cp932=m +CONFIG_PACKAGE_kmod-nls-cp936=m +CONFIG_PACKAGE_kmod-nls-cp950=m +CONFIG_PACKAGE_kmod-nls-iso8859-1=m +CONFIG_PACKAGE_kmod-nls-iso8859-13=m +CONFIG_PACKAGE_kmod-nls-iso8859-15=m +CONFIG_PACKAGE_kmod-nls-iso8859-2=m +CONFIG_PACKAGE_kmod-nls-iso8859-6=m +CONFIG_PACKAGE_kmod-nls-iso8859-8=m +CONFIG_PACKAGE_kmod-nls-koi8r=m +CONFIG_PACKAGE_kmod-nls-utf8=m +CONFIG_PACKAGE_kmod-arptables=m +CONFIG_PACKAGE_kmod-br-netfilter=m +CONFIG_PACKAGE_kmod-ebtables=m +CONFIG_PACKAGE_kmod-ebtables-ipv4=m +CONFIG_PACKAGE_kmod-ebtables-ipv6=m +CONFIG_PACKAGE_kmod-ebtables-watchers=m +CONFIG_PACKAGE_kmod-ip6tables=y +CONFIG_PACKAGE_kmod-ip6tables-extra=m +CONFIG_PACKAGE_kmod-ipt-account=m +CONFIG_PACKAGE_kmod-ipt-chaos=m +CONFIG_PACKAGE_kmod-ipt-checksum=m +CONFIG_PACKAGE_kmod-ipt-cluster=m +CONFIG_PACKAGE_kmod-ipt-clusterip=m +CONFIG_PACKAGE_kmod-ipt-compat-xtables=m +CONFIG_PACKAGE_kmod-ipt-condition=m +CONFIG_PACKAGE_kmod-ipt-conntrack=y +CONFIG_PACKAGE_kmod-ipt-conntrack-extra=m +CONFIG_PACKAGE_kmod-ipt-conntrack-label=m +CONFIG_PACKAGE_kmod-ipt-core=y +CONFIG_PACKAGE_kmod-ipt-debug=m +CONFIG_PACKAGE_kmod-ipt-delude=m +CONFIG_PACKAGE_kmod-ipt-dhcpmac=m +CONFIG_PACKAGE_kmod-ipt-dnetmap=m +CONFIG_PACKAGE_kmod-ipt-extra=m +CONFIG_PACKAGE_kmod-ipt-filter=m +CONFIG_PACKAGE_kmod-ipt-fuzzy=m +CONFIG_PACKAGE_kmod-ipt-geoip=m +CONFIG_PACKAGE_kmod-ipt-hashlimit=m +CONFIG_PACKAGE_kmod-ipt-iface=m +CONFIG_PACKAGE_kmod-ipt-ipmark=m +CONFIG_PACKAGE_kmod-ipt-ipopt=m +CONFIG_PACKAGE_kmod-ipt-ipp2p=m +CONFIG_PACKAGE_kmod-ipt-iprange=m +CONFIG_PACKAGE_kmod-ipt-ipsec=m +CONFIG_PACKAGE_kmod-ipt-ipset=m +CONFIG_PACKAGE_kmod-ipt-ipv4options=m +CONFIG_PACKAGE_kmod-ipt-led=m +CONFIG_PACKAGE_kmod-ipt-length2=m +CONFIG_PACKAGE_kmod-ipt-logmark=m +CONFIG_PACKAGE_kmod-ipt-lscan=m +CONFIG_PACKAGE_kmod-ipt-lua=m +CONFIG_PACKAGE_kmod-ipt-nat=y +CONFIG_PACKAGE_kmod-ipt-nat-extra=m +CONFIG_PACKAGE_kmod-ipt-nat6=m +CONFIG_PACKAGE_kmod-ipt-nathelper-rtsp=m +CONFIG_PACKAGE_kmod-ipt-nflog=m +CONFIG_PACKAGE_kmod-ipt-nfqueue=m +CONFIG_PACKAGE_kmod-ipt-offload=y +CONFIG_PACKAGE_kmod-ipt-physdev=m +CONFIG_PACKAGE_kmod-ipt-psd=m +CONFIG_PACKAGE_kmod-ipt-quota2=m +CONFIG_PACKAGE_kmod-ipt-raw=m +CONFIG_PACKAGE_kmod-ipt-raw6=m +CONFIG_PACKAGE_kmod-ipt-rpfilter=m +CONFIG_PACKAGE_kmod-ipt-sysrq=m +CONFIG_PACKAGE_kmod-ipt-tarpit=m +CONFIG_PACKAGE_kmod-ipt-tee=m +CONFIG_PACKAGE_kmod-ipt-tproxy=m +CONFIG_PACKAGE_kmod-ipt-u32=m +CONFIG_PACKAGE_kmod-ipt-ulog=m +CONFIG_PACKAGE_kmod-netatop=m +CONFIG_PACKAGE_kmod-nf-conntrack=y +CONFIG_PACKAGE_kmod-nf-conntrack-netlink=m +CONFIG_PACKAGE_kmod-nf-conntrack6=y +CONFIG_PACKAGE_kmod-nf-flow=y +CONFIG_PACKAGE_kmod-nf-ipt=y +CONFIG_PACKAGE_kmod-nf-ipt6=y +CONFIG_PACKAGE_kmod-nf-ipvs=m +CONFIG_PACKAGE_kmod-nf-ipvs-ftp=m +CONFIG_PACKAGE_kmod-nf-ipvs-sip=m +CONFIG_PACKAGE_kmod-nf-nat=y +CONFIG_PACKAGE_kmod-nf-nat6=m +CONFIG_PACKAGE_kmod-nf-nathelper=m +CONFIG_PACKAGE_kmod-nf-nathelper-extra=m +CONFIG_PACKAGE_kmod-nf-reject=y +CONFIG_PACKAGE_kmod-nf-reject6=y +CONFIG_PACKAGE_kmod-nfnetlink=m +CONFIG_PACKAGE_kmod-nfnetlink-log=m +CONFIG_PACKAGE_kmod-nfnetlink-queue=m +CONFIG_PACKAGE_kmod-nft-arp=m +CONFIG_PACKAGE_kmod-nft-bridge=m +CONFIG_PACKAGE_kmod-nft-core=m +CONFIG_PACKAGE_kmod-nft-fib=m +CONFIG_PACKAGE_kmod-nft-nat=m +CONFIG_PACKAGE_kmod-nft-nat6=m +CONFIG_PACKAGE_kmod-nft-netdev=m +CONFIG_PACKAGE_kmod-nft-offload=m +CONFIG_PACKAGE_kmod-3c59x=m +CONFIG_PACKAGE_kmod-8139cp=m +CONFIG_PACKAGE_kmod-8139too=m +CONFIG_PACKAGE_kmod-alx=m +CONFIG_PACKAGE_kmod-atl1=m +CONFIG_PACKAGE_kmod-atl1c=m +CONFIG_PACKAGE_kmod-atl1e=m +CONFIG_PACKAGE_kmod-atl2=m +CONFIG_PACKAGE_kmod-b44=m +CONFIG_PACKAGE_kmod-bnx2=y +CONFIG_PACKAGE_kmod-bnx2x=m +CONFIG_PACKAGE_kmod-dm9000=m +CONFIG_PACKAGE_kmod-dummy=m +CONFIG_PACKAGE_kmod-e100=m +CONFIG_PACKAGE_kmod-e1000=y +CONFIG_PACKAGE_kmod-e1000e=y +CONFIG_PACKAGE_kmod-et131x=m +CONFIG_PACKAGE_kmod-ethoc=m +CONFIG_PACKAGE_kmod-forcedeth=m +CONFIG_PACKAGE_kmod-gigaset=m +CONFIG_PACKAGE_kmod-hfcmulti=m +CONFIG_PACKAGE_kmod-hfcpci=m +CONFIG_PACKAGE_kmod-ifb=m +CONFIG_PACKAGE_kmod-igb=y +CONFIG_PACKAGE_kmod-igbvf=m +CONFIG_PACKAGE_kmod-ixgbe=m +CONFIG_PACKAGE_kmod-ixgbevf=m +CONFIG_PACKAGE_kmod-libphy=y +CONFIG_PACKAGE_kmod-macvlan=m +CONFIG_PACKAGE_kmod-mdio-gpio=m +CONFIG_PACKAGE_kmod-mii=y +CONFIG_PACKAGE_kmod-natsemi=m +CONFIG_PACKAGE_kmod-ne2k-pci=m +CONFIG_PACKAGE_kmod-niu=m +CONFIG_PACKAGE_kmod-of-mdio=m +CONFIG_PACKAGE_kmod-pcnet32=m +CONFIG_PACKAGE_kmod-phy-broadcom=m +CONFIG_PACKAGE_kmod-phy-realtek=y +CONFIG_PACKAGE_kmod-phylib-broadcom=m +CONFIG_PACKAGE_kmod-r6040=m +CONFIG_PACKAGE_kmod-r8169=y +CONFIG_PACKAGE_kmod-siit=m +CONFIG_PACKAGE_kmod-sis190=m +CONFIG_PACKAGE_kmod-sis900=m +CONFIG_PACKAGE_kmod-skge=m +CONFIG_PACKAGE_kmod-sky2=m +CONFIG_PACKAGE_kmod-solos-pci=m +CONFIG_PACKAGE_kmod-spi-ks8995=m +CONFIG_PACKAGE_kmod-swconfig=m +CONFIG_PACKAGE_kmod-switch-ip17xx=m +CONFIG_PACKAGE_kmod-switch-mvsw61xx=m +CONFIG_PACKAGE_kmod-switch-rtl8306=m +CONFIG_PACKAGE_kmod-switch-rtl8366-smi=m +CONFIG_PACKAGE_kmod-switch-rtl8366rb=m +CONFIG_PACKAGE_kmod-switch-rtl8366s=m +CONFIG_PACKAGE_kmod-switch-rtl8367b=m +CONFIG_PACKAGE_kmod-tg3=m +CONFIG_PACKAGE_kmod-tulip=m +CONFIG_PACKAGE_kmod-via-rhine=m +CONFIG_PACKAGE_kmod-via-velocity=m +CONFIG_PACKAGE_kmod-vmxnet3=m +CONFIG_PACKAGE_kmod-9pnet=m +CONFIG_PACKAGE_kmod-atm=m +CONFIG_PACKAGE_kmod-atmtcp=m +CONFIG_PACKAGE_kmod-ax25=m +CONFIG_PACKAGE_kmod-batman-adv=m +CONFIG_BATMAN_ADV_BATMAN_V=y +CONFIG_BATMAN_ADV_BLA=y +CONFIG_BATMAN_ADV_DAT=y +# CONFIG_BATMAN_ADV_NC is not set +CONFIG_BATMAN_ADV_MCAST=y +# CONFIG_BATMAN_ADV_DEBUGFS is not set +# CONFIG_BATMAN_ADV_DEBUG is not set +CONFIG_BATMAN_ADV_SYSFS=y +# CONFIG_BATMAN_ADV_TRACING is not set +CONFIG_PACKAGE_kmod-bonding=m +CONFIG_PACKAGE_kmod-bpf-test=m +CONFIG_PACKAGE_kmod-capi=m +CONFIG_PACKAGE_kmod-dnsresolver=m +CONFIG_PACKAGE_kmod-fou=m +CONFIG_PACKAGE_kmod-fou6=m +CONFIG_PACKAGE_kmod-geneve=m +CONFIG_PACKAGE_kmod-gre=m +CONFIG_PACKAGE_kmod-gre6=m +CONFIG_PACKAGE_kmod-ip-vti=m +CONFIG_PACKAGE_kmod-ip6-tunnel=m +CONFIG_PACKAGE_kmod-ip6-vti=m +CONFIG_PACKAGE_kmod-ipip=m +CONFIG_PACKAGE_kmod-ipoa=m +CONFIG_PACKAGE_kmod-ipsec=m +CONFIG_PACKAGE_kmod-ipsec4=m +CONFIG_PACKAGE_kmod-ipsec6=m +CONFIG_PACKAGE_kmod-iptunnel=m +CONFIG_PACKAGE_kmod-iptunnel4=m +CONFIG_PACKAGE_kmod-iptunnel6=m +CONFIG_PACKAGE_kmod-isdn4linux=m +CONFIG_PACKAGE_kmod-jool=m +CONFIG_PACKAGE_kmod-l2tp=m +CONFIG_PACKAGE_kmod-l2tp-eth=m +CONFIG_PACKAGE_kmod-l2tp-ip=m +CONFIG_PACKAGE_kmod-macsec=m +CONFIG_PACKAGE_kmod-mdio=m +CONFIG_PACKAGE_kmod-misdn=m +CONFIG_PACKAGE_kmod-mpls=m +CONFIG_PACKAGE_kmod-nat46=m +CONFIG_PACKAGE_kmod-netem=m +CONFIG_PACKAGE_kmod-nlmon=m +CONFIG_PACKAGE_kmod-nsh=m +CONFIG_PACKAGE_kmod-openvswitch=m +CONFIG_PACKAGE_kmod-openvswitch-geneve=m +CONFIG_PACKAGE_kmod-openvswitch-geneve-intree=m +CONFIG_PACKAGE_kmod-openvswitch-gre=m +CONFIG_PACKAGE_kmod-openvswitch-gre-intree=m +CONFIG_PACKAGE_kmod-openvswitch-intree=m +CONFIG_PACKAGE_kmod-openvswitch-lisp-intree=m +CONFIG_PACKAGE_kmod-openvswitch-stt-intree=m +CONFIG_PACKAGE_kmod-openvswitch-vxlan=m +CONFIG_PACKAGE_kmod-openvswitch-vxlan-intree=m +CONFIG_PACKAGE_kmod-pf-ring=m +CONFIG_PACKAGE_kmod-pktgen=m +CONFIG_PACKAGE_kmod-ppp=y +CONFIG_PACKAGE_kmod-mppe=m +CONFIG_PACKAGE_kmod-ppp-synctty=m +CONFIG_PACKAGE_kmod-pppoa=m +CONFIG_PACKAGE_kmod-pppoe=y +CONFIG_PACKAGE_kmod-pppol2tp=m +CONFIG_PACKAGE_kmod-pppox=y +CONFIG_PACKAGE_kmod-pptp=m +CONFIG_PACKAGE_kmod-sched=m +CONFIG_PACKAGE_kmod-sched-act-vlan=m +CONFIG_PACKAGE_kmod-sched-bpf=m +CONFIG_PACKAGE_kmod-sched-cake=m +CONFIG_PACKAGE_kmod-sched-connmark=m +CONFIG_PACKAGE_kmod-sched-core=m +CONFIG_PACKAGE_kmod-sched-ctinfo=m +CONFIG_PACKAGE_kmod-sched-flower=m +CONFIG_PACKAGE_kmod-sched-ipset=m +CONFIG_PACKAGE_kmod-sched-mqprio=m +CONFIG_PACKAGE_kmod-sctp=m +CONFIG_PACKAGE_kmod-sit=m +CONFIG_PACKAGE_kmod-slhc=y +CONFIG_PACKAGE_kmod-slip=m +CONFIG_PACKAGE_kmod-tcp-bbr=m +CONFIG_PACKAGE_kmod-trelay=m +CONFIG_PACKAGE_kmod-tun=m +CONFIG_PACKAGE_kmod-udptunnel4=m +CONFIG_PACKAGE_kmod-udptunnel6=m +CONFIG_PACKAGE_kmod-veth=m +CONFIG_PACKAGE_kmod-vxlan=m +CONFIG_PACKAGE_kmod-wireguard=m +CONFIG_PACKAGE_kmod-xfrm-interface=m +CONFIG_PACKAGE_kmod-6lowpan=m +CONFIG_PACKAGE_kmod-ath3k=m +CONFIG_PACKAGE_kmod-bcma=m +CONFIG_PACKAGE_kmod-bluetooth=m +CONFIG_PACKAGE_kmod-bluetooth_6lowpan=m +CONFIG_PACKAGE_kmod-bmp085=m +CONFIG_PACKAGE_kmod-bmp085-i2c=m +CONFIG_PACKAGE_kmod-bmp085-spi=m +CONFIG_PACKAGE_kmod-btmrvl=m +CONFIG_PACKAGE_kmod-button-hotplug=y +CONFIG_PACKAGE_kmod-dma-buf=m +CONFIG_PACKAGE_kmod-echo=m +CONFIG_PACKAGE_kmod-eeprom-93cx6=m +CONFIG_PACKAGE_kmod-eeprom-at24=m +CONFIG_PACKAGE_kmod-eeprom-at25=m +CONFIG_PACKAGE_kmod-gpio-beeper=m +CONFIG_PACKAGE_kmod-gpio-button-hotplug=m +CONFIG_PACKAGE_kmod-gpio-dev=m +CONFIG_PACKAGE_kmod-gpio-mcp23s08=m +CONFIG_PACKAGE_kmod-gpio-nct5104d=m +CONFIG_PACKAGE_kmod-gpio-nxp-74hc164=m +CONFIG_PACKAGE_kmod-gpio-pca953x=m +CONFIG_PACKAGE_kmod-gpio-pcf857x=m +CONFIG_PACKAGE_kmod-ikconfig=m +CONFIG_PACKAGE_kmod-it87-wdt=m +CONFIG_PACKAGE_kmod-itco-wdt=m +CONFIG_PACKAGE_kmod-lp=m +CONFIG_PACKAGE_kmod-mmc=m +CONFIG_PACKAGE_kmod-mtd-rw=m +CONFIG_PACKAGE_kmod-mtdoops=m +CONFIG_PACKAGE_kmod-mtdram=m +CONFIG_PACKAGE_kmod-mtdtests=m +CONFIG_PACKAGE_kmod-nvmem=m +CONFIG_PACKAGE_kmod-parport-pc=m +CONFIG_PACKAGE_kmod-ppdev=m +CONFIG_PACKAGE_kmod-pps=y +CONFIG_PACKAGE_kmod-pps-gpio=m +CONFIG_PACKAGE_kmod-pps-ldisc=m +CONFIG_PACKAGE_kmod-ptp=y +CONFIG_PACKAGE_kmod-random-core=m +CONFIG_PACKAGE_kmod-regmap-core=m +CONFIG_PACKAGE_kmod-regmap-i2c=m +CONFIG_PACKAGE_kmod-regmap-spi=m +CONFIG_PACKAGE_kmod-rtc-ds1307=m +CONFIG_PACKAGE_kmod-rtc-ds1374=m +CONFIG_PACKAGE_kmod-rtc-ds1672=m +CONFIG_PACKAGE_kmod-rtc-em3027=m +CONFIG_PACKAGE_kmod-rtc-isl1208=m +CONFIG_PACKAGE_kmod-rtc-pcf2123=m +CONFIG_PACKAGE_kmod-rtc-pcf8563=m +CONFIG_PACKAGE_kmod-rtc-pt7c4338=m +CONFIG_PACKAGE_kmod-rtc-rs5c372a=m +CONFIG_PACKAGE_kmod-sdhci=m +CONFIG_PACKAGE_kmod-serial-8250=m +CONFIG_PACKAGE_kmod-serial-8250-exar=m +CONFIG_PACKAGE_kmod-softdog=m +CONFIG_PACKAGE_kmod-sp5100_tco=m +CONFIG_PACKAGE_kmod-ssb=m +CONFIG_PACKAGE_kmod-tpm=m +CONFIG_PACKAGE_kmod-tpm-i2c-atmel=m +CONFIG_PACKAGE_kmod-tpm-i2c-infineon=m +CONFIG_PACKAGE_kmod-tpm-tis=m +CONFIG_PACKAGE_kmod-w83627hf-wdt=m +CONFIG_PACKAGE_kmod-wifidog-ng=m +CONFIG_PACKAGE_kmod-zram=m +CONFIG_PACKAGE_kmod-pcmcia-core=m +CONFIG_PACKAGE_kmod-pcmcia-nozomi=m +CONFIG_PACKAGE_kmod-pcmcia-pd6729=m +CONFIG_PACKAGE_kmod-pcmcia-rsrc=m +CONFIG_PACKAGE_kmod-pcmcia-serial=m +CONFIG_PACKAGE_kmod-pcmcia-yenta=m +CONFIG_PACKAGE_kmod-mmc-spi=m +CONFIG_PACKAGE_kmod-spi-bitbang=m +CONFIG_PACKAGE_kmod-spi-dev=m +CONFIG_PACKAGE_kmod-spi-gpio=m +CONFIG_PACKAGE_kmod-sound-core=m +CONFIG_PACKAGE_kmod-ac97=m +CONFIG_PACKAGE_kmod-pcspkr=m +CONFIG_PACKAGE_kmod-sound-dummy=m +CONFIG_PACKAGE_kmod-sound-ens1371=m +CONFIG_PACKAGE_kmod-sound-hda-core=m +CONFIG_PACKAGE_kmod-sound-hda-codec-analog=m +CONFIG_PACKAGE_kmod-sound-hda-codec-ca0110=m +CONFIG_PACKAGE_kmod-sound-hda-codec-ca0132=m +CONFIG_PACKAGE_kmod-sound-hda-codec-cirrus=m +CONFIG_PACKAGE_kmod-sound-hda-codec-cmedia=m +CONFIG_PACKAGE_kmod-sound-hda-codec-conexant=m +CONFIG_PACKAGE_kmod-sound-hda-codec-hdmi=m +CONFIG_PACKAGE_kmod-sound-hda-codec-idt=m +CONFIG_PACKAGE_kmod-sound-hda-codec-realtek=m +CONFIG_PACKAGE_kmod-sound-hda-codec-si3054=m +CONFIG_PACKAGE_kmod-sound-hda-codec-via=m +CONFIG_PACKAGE_kmod-sound-hda-intel=m +CONFIG_PACKAGE_kmod-sound-i8x0=m +CONFIG_PACKAGE_kmod-sound-mpu401=m +CONFIG_PACKAGE_kmod-sound-seq=m +CONFIG_PACKAGE_kmod-sound-soc-ac97=m +CONFIG_PACKAGE_kmod-sound-soc-core=m +CONFIG_PACKAGE_kmod-sound-via82xx=m +CONFIG_PACKAGE_kmod-usb-audio=m +CONFIG_PACKAGE_kmod-chaoskey=m +CONFIG_PACKAGE_kmod-usb-acm=m +CONFIG_PACKAGE_kmod-usb-atm=m +CONFIG_PACKAGE_kmod-usb-atm-cxacru=m +CONFIG_PACKAGE_kmod-usb-atm-speedtouch=m +CONFIG_PACKAGE_kmod-usb-atm-ueagle=m +CONFIG_PACKAGE_kmod-usb-cm109=m +CONFIG_PACKAGE_kmod-usb-core=m +CONFIG_PACKAGE_kmod-usb-dwc2=m +CONFIG_PACKAGE_kmod-usb-dwc3=m +CONFIG_PACKAGE_kmod-usb-ehci=m +CONFIG_PACKAGE_kmod-usb-hid=m +CONFIG_PACKAGE_kmod-usb-ledtrig-usbport=m +CONFIG_PACKAGE_kmod-usb-net=m +CONFIG_PACKAGE_kmod-usb-net-asix=m +CONFIG_PACKAGE_kmod-usb-net-asix-ax88179=m +CONFIG_PACKAGE_kmod-usb-net-cdc-eem=m +CONFIG_PACKAGE_kmod-usb-net-cdc-ether=m +CONFIG_PACKAGE_kmod-usb-net-cdc-mbim=m +CONFIG_PACKAGE_kmod-usb-net-cdc-ncm=m +CONFIG_PACKAGE_kmod-usb-net-cdc-subset=m +CONFIG_PACKAGE_kmod-usb-net-dm9601-ether=m +CONFIG_PACKAGE_kmod-usb-net-hso=m +CONFIG_PACKAGE_kmod-usb-net-huawei-cdc-ncm=m +CONFIG_PACKAGE_kmod-usb-net-ipheth=m +CONFIG_PACKAGE_kmod-usb-net-kalmia=m +CONFIG_PACKAGE_kmod-usb-net-kaweth=m +CONFIG_PACKAGE_kmod-usb-net-mcs7830=m +CONFIG_PACKAGE_kmod-usb-net-pegasus=m +CONFIG_PACKAGE_kmod-usb-net-pl=m +CONFIG_PACKAGE_kmod-usb-net-qmi-wwan=m +CONFIG_PACKAGE_kmod-usb-net-rndis=m +CONFIG_PACKAGE_kmod-usb-net-rtl8150=m +CONFIG_PACKAGE_kmod-usb-net-rtl8152=m +CONFIG_PACKAGE_kmod-usb-net-sierrawireless=m +CONFIG_PACKAGE_kmod-usb-net-smsc95xx=m +CONFIG_PACKAGE_kmod-usb-net-sr9700=m +CONFIG_PACKAGE_kmod-usb-ohci=m +CONFIG_PACKAGE_kmod-usb-ohci-pci=m +CONFIG_PACKAGE_kmod-usb-printer=m +CONFIG_PACKAGE_kmod-usb-serial=m +CONFIG_PACKAGE_kmod-usb-serial-ark3116=m +CONFIG_PACKAGE_kmod-usb-serial-belkin=m +CONFIG_PACKAGE_kmod-usb-serial-ch341=m +CONFIG_PACKAGE_kmod-usb-serial-cp210x=m +CONFIG_PACKAGE_kmod-usb-serial-cypress-m8=m +CONFIG_PACKAGE_kmod-usb-serial-dmx_usb_module=m +CONFIG_PACKAGE_kmod-usb-serial-edgeport=m +CONFIG_PACKAGE_kmod-usb-serial-ftdi=m +CONFIG_PACKAGE_kmod-usb-serial-garmin=m +CONFIG_PACKAGE_kmod-usb-serial-ipw=m +CONFIG_PACKAGE_kmod-usb-serial-keyspan=m +CONFIG_PACKAGE_kmod-usb-serial-mct=m +CONFIG_PACKAGE_kmod-usb-serial-mos7720=m +CONFIG_PACKAGE_kmod-usb-serial-mos7840=m +CONFIG_PACKAGE_kmod-usb-serial-option=m +CONFIG_PACKAGE_kmod-usb-serial-oti6858=m +CONFIG_PACKAGE_kmod-usb-serial-pl2303=m +CONFIG_PACKAGE_kmod-usb-serial-qualcomm=m +CONFIG_PACKAGE_kmod-usb-serial-sierrawireless=m +CONFIG_PACKAGE_kmod-usb-serial-simple=m +CONFIG_PACKAGE_kmod-usb-serial-ti-usb=m +CONFIG_PACKAGE_kmod-usb-serial-visor=m +CONFIG_PACKAGE_kmod-usb-serial-wwan=m +CONFIG_PACKAGE_kmod-usb-serial-xr_usb_serial_common=m +CONFIG_PACKAGE_kmod-usb-storage=m +CONFIG_PACKAGE_kmod-usb-storage-extras=m +CONFIG_PACKAGE_kmod-usb-storage-uas=m +CONFIG_PACKAGE_kmod-usb-test=m +CONFIG_PACKAGE_kmod-usb-uhci=m +CONFIG_PACKAGE_kmod-usb-wdm=m +CONFIG_PACKAGE_kmod-usb-yealink=m +CONFIG_PACKAGE_kmod-usb2=m +CONFIG_PACKAGE_kmod-usb2-pci=m +CONFIG_PACKAGE_kmod-usb3=m +CONFIG_PACKAGE_kmod-usbip=m +CONFIG_PACKAGE_kmod-usbip-client=m +CONFIG_PACKAGE_kmod-usbip-server=m +CONFIG_PACKAGE_kmod-usbmon=m +CONFIG_PACKAGE_kmod-backlight=m +CONFIG_PACKAGE_kmod-backlight-pwm=m +CONFIG_PACKAGE_kmod-drm=m +CONFIG_PACKAGE_kmod-drm-amdgpu=m +CONFIG_PACKAGE_kmod-drm-kms-helper=m +CONFIG_PACKAGE_kmod-drm-radeon=m +CONFIG_PACKAGE_kmod-drm-ttm=m +CONFIG_PACKAGE_kmod-fb=m +CONFIG_PACKAGE_kmod-fb-cfb-copyarea=m +CONFIG_PACKAGE_kmod-fb-cfb-fillrect=m +CONFIG_PACKAGE_kmod-fb-cfb-imgblt=m +CONFIG_PACKAGE_kmod-fb-sys-fops=m +CONFIG_PACKAGE_kmod-fb-sys-ram=m +CONFIG_PACKAGE_kmod-fb-tft=m +CONFIG_PACKAGE_kmod-fb-tft-ili9486=m +CONFIG_PACKAGE_kmod-video-core=m +CONFIG_PACKAGE_kmod-video-cpia2=m +CONFIG_PACKAGE_kmod-video-gspca-core=m +CONFIG_PACKAGE_kmod-video-gspca-conex=m +CONFIG_PACKAGE_kmod-video-gspca-etoms=m +CONFIG_PACKAGE_kmod-video-gspca-finepix=m +CONFIG_PACKAGE_kmod-video-gspca-gl860=m +CONFIG_PACKAGE_kmod-video-gspca-jeilinj=m +CONFIG_PACKAGE_kmod-video-gspca-konica=m +CONFIG_PACKAGE_kmod-video-gspca-m5602=m +CONFIG_PACKAGE_kmod-video-gspca-mars=m +CONFIG_PACKAGE_kmod-video-gspca-mr97310a=m +CONFIG_PACKAGE_kmod-video-gspca-ov519=m +CONFIG_PACKAGE_kmod-video-gspca-ov534=m +CONFIG_PACKAGE_kmod-video-gspca-ov534-9=m +CONFIG_PACKAGE_kmod-video-gspca-pac207=m +CONFIG_PACKAGE_kmod-video-gspca-pac7311=m +CONFIG_PACKAGE_kmod-video-gspca-se401=m +CONFIG_PACKAGE_kmod-video-gspca-sn9c20x=m +CONFIG_PACKAGE_kmod-video-gspca-sonixb=m +CONFIG_PACKAGE_kmod-video-gspca-sonixj=m +CONFIG_PACKAGE_kmod-video-gspca-spca500=m +CONFIG_PACKAGE_kmod-video-gspca-spca501=m +CONFIG_PACKAGE_kmod-video-gspca-spca505=m +CONFIG_PACKAGE_kmod-video-gspca-spca506=m +CONFIG_PACKAGE_kmod-video-gspca-spca508=m +CONFIG_PACKAGE_kmod-video-gspca-spca561=m +CONFIG_PACKAGE_kmod-video-gspca-sq905=m +CONFIG_PACKAGE_kmod-video-gspca-sq905c=m +CONFIG_PACKAGE_kmod-video-gspca-stk014=m +CONFIG_PACKAGE_kmod-video-gspca-stv06xx=m +CONFIG_PACKAGE_kmod-video-gspca-sunplus=m +CONFIG_PACKAGE_kmod-video-gspca-t613=m +CONFIG_PACKAGE_kmod-video-gspca-tv8532=m +CONFIG_PACKAGE_kmod-video-gspca-vc032x=m +CONFIG_PACKAGE_kmod-video-gspca-zc3xx=m +CONFIG_PACKAGE_kmod-video-pwc=m +CONFIG_PACKAGE_kmod-video-uvc=m +CONFIG_PACKAGE_kmod-video-videobuf2=m +CONFIG_PACKAGE_kmod-irqbypass=m +CONFIG_PACKAGE_kmod-kvm-amd=m +CONFIG_PACKAGE_kmod-kvm-intel=m +CONFIG_PACKAGE_kmod-kvm-x86=m +CONFIG_PACKAGE_kmod-dahdi=m +CONFIG_PACKAGE_kmod-dahdi-dummy=m +CONFIG_PACKAGE_kmod-dahdi-echocan-oslec=m +CONFIG_PACKAGE_kmod-dahdi-hfcs=m +CONFIG_PACKAGE_kmod-w1=m +CONFIG_PACKAGE_kmod-w1-master-ds2482=m +CONFIG_PACKAGE_kmod-w1-master-ds2490=m +CONFIG_PACKAGE_kmod-w1-master-gpio=m +CONFIG_PACKAGE_kmod-w1-slave-ds2413=m +CONFIG_PACKAGE_kmod-w1-slave-ds2431=m +CONFIG_PACKAGE_kmod-w1-slave-ds2433=m +CONFIG_PACKAGE_kmod-w1-slave-ds2760=m +CONFIG_PACKAGE_kmod-w1-slave-smem=m +CONFIG_PACKAGE_kmod-w1-slave-therm=m +CONFIG_PACKAGE_kmod-at86rf230=m +CONFIG_PACKAGE_kmod-atusb=m +CONFIG_PACKAGE_kmod-cc2520=m +CONFIG_PACKAGE_kmod-fakelb=m +CONFIG_PACKAGE_kmod-ieee802154=m +CONFIG_PACKAGE_kmod-ieee802154_6lowpan=m +CONFIG_PACKAGE_kmod-mac802154=m +CONFIG_PACKAGE_kmod-mrf24j40=m +CONFIG_PACKAGE_kmod-adm8211=m +CONFIG_PACKAGE_kmod-ath=m +CONFIG_ATH_USER_REGD=y +CONFIG_PACKAGE_ATH_DFS=y +CONFIG_PACKAGE_kmod-ath10k=m +CONFIG_ATH10K_LEDS=y +# CONFIG_ATH10K_THERMAL is not set +CONFIG_PACKAGE_kmod-ath10k-ct=m +CONFIG_ATH10K-CT_LEDS=y +CONFIG_PACKAGE_kmod-ath5k=m +CONFIG_PACKAGE_kmod-ath6kl=m +CONFIG_PACKAGE_kmod-ath6kl-sdio=m +CONFIG_PACKAGE_kmod-ath6kl-usb=m +CONFIG_PACKAGE_kmod-ath9k=m +# CONFIG_ATH9K_SUPPORT_PCOEM is not set +# CONFIG_ATH9K_TX99 is not set +CONFIG_PACKAGE_kmod-ath9k-common=m +CONFIG_PACKAGE_kmod-ath9k-htc=m +CONFIG_PACKAGE_kmod-b43=m +CONFIG_PACKAGE_B43_USE_SSB=m +CONFIG_PACKAGE_B43_USE_BCMA=m +# CONFIG_B43_FW_4_150 is not set +# CONFIG_B43_FW_4_178 is not set +# CONFIG_B43_FW_5_10 is not set +CONFIG_B43_FW_5_100_138=y +# CONFIG_B43_FW_6_30 is not set +# CONFIG_B43_OPENFIRMWARE is not set +CONFIG_B43_FW_SQUASH=y +CONFIG_B43_FW_SQUASH_COREREVS="5,6,7,8,9,10,11,13,15,16,28,29,30" +CONFIG_B43_FW_SQUASH_PHYTYPES="G,N,LP,HT" +CONFIG_PACKAGE_B43_BUSES_BCMA_AND_SSB=y +CONFIG_PACKAGE_B43_PHY_G=y +CONFIG_PACKAGE_B43_PHY_N=y +CONFIG_PACKAGE_B43_PHY_LP=y +CONFIG_PACKAGE_B43_PHY_HT=y +CONFIG_PACKAGE_kmod-b43legacy=m +CONFIG_PACKAGE_kmod-brcmfmac=m +# CONFIG_BRCMFMAC_SDIO is not set +CONFIG_BRCMFMAC_USB=y +CONFIG_BRCMFMAC_PCIE=y +CONFIG_PACKAGE_kmod-brcmsmac=m +CONFIG_BRCMSMAC_USE_FW_FROM_WL=y +CONFIG_PACKAGE_kmod-brcmutil=m +CONFIG_PACKAGE_kmod-carl9170=m +CONFIG_PACKAGE_kmod-cfg80211=m +CONFIG_PACKAGE_kmod-hermes=m +CONFIG_PACKAGE_kmod-hermes-pci=m +CONFIG_PACKAGE_kmod-hermes-pcmcia=m +CONFIG_PACKAGE_kmod-hermes-plx=m +CONFIG_PACKAGE_kmod-ipw2100=m +CONFIG_PACKAGE_kmod-ipw2200=m +CONFIG_PACKAGE_kmod-iwl-legacy=m +CONFIG_PACKAGE_kmod-iwl3945=m +CONFIG_PACKAGE_kmod-iwl4965=m +CONFIG_PACKAGE_kmod-iwlwifi=m +CONFIG_PACKAGE_kmod-lib80211=m +CONFIG_PACKAGE_kmod-libertas-sdio=m +CONFIG_PACKAGE_kmod-libertas-spi=m +CONFIG_PACKAGE_kmod-libertas-usb=m +CONFIG_PACKAGE_kmod-libipw=m +CONFIG_PACKAGE_kmod-mac80211=m +CONFIG_PACKAGE_MAC80211_DEBUGFS=y +CONFIG_PACKAGE_MAC80211_MESH=y +CONFIG_PACKAGE_kmod-mac80211-hwsim=m +CONFIG_PACKAGE_kmod-mt76=m +CONFIG_PACKAGE_kmod-mt76-core=m +CONFIG_PACKAGE_kmod-mt76-usb=m +CONFIG_PACKAGE_kmod-mt7601u=m +CONFIG_PACKAGE_kmod-mt7603=m +CONFIG_PACKAGE_kmod-mt7615e=m +CONFIG_PACKAGE_kmod-mt76x0-common=m +CONFIG_PACKAGE_kmod-mt76x02-common=m +CONFIG_PACKAGE_kmod-mt76x02-usb=m +CONFIG_PACKAGE_kmod-mt76x0e=m +CONFIG_PACKAGE_kmod-mt76x0u=m +CONFIG_PACKAGE_kmod-mt76x2=m +CONFIG_PACKAGE_kmod-mt76x2-common=m +CONFIG_PACKAGE_kmod-mt76x2u=m +CONFIG_PACKAGE_kmod-mwifiex-pcie=m +CONFIG_PACKAGE_kmod-mwifiex-sdio=m +CONFIG_PACKAGE_kmod-mwl8k=m +CONFIG_PACKAGE_kmod-net-prism54=m +CONFIG_PACKAGE_kmod-net-rtl8192su=m +CONFIG_PACKAGE_kmod-owl-loader=m +CONFIG_PACKAGE_kmod-p54-common=m +CONFIG_PACKAGE_kmod-p54-pci=m +CONFIG_PACKAGE_kmod-p54-usb=m +CONFIG_PACKAGE_kmod-rsi91x=m +CONFIG_PACKAGE_kmod-rsi91x-sdio=m +CONFIG_PACKAGE_kmod-rsi91x-usb=m +CONFIG_PACKAGE_kmod-rt2400-pci=m +CONFIG_PACKAGE_kmod-rt2500-pci=m +CONFIG_PACKAGE_kmod-rt2500-usb=m +CONFIG_PACKAGE_kmod-rt2800-lib=m +CONFIG_PACKAGE_kmod-rt2800-mmio=m +CONFIG_PACKAGE_kmod-rt2800-pci=m +CONFIG_PACKAGE_kmod-rt2800-usb=m +CONFIG_PACKAGE_kmod-rt2x00-lib=m +CONFIG_PACKAGE_kmod-rt2x00-mmio=m +CONFIG_PACKAGE_kmod-rt2x00-pci=m +CONFIG_PACKAGE_kmod-rt2x00-usb=m +CONFIG_PACKAGE_kmod-rt61-pci=m +CONFIG_PACKAGE_kmod-rt73-usb=m +CONFIG_PACKAGE_kmod-rtl8180=m +CONFIG_PACKAGE_kmod-rtl8187=m +CONFIG_PACKAGE_kmod-rtl8192c-common=m +CONFIG_PACKAGE_kmod-rtl8192ce=m +CONFIG_PACKAGE_kmod-rtl8192cu=m +CONFIG_PACKAGE_kmod-rtl8192de=m +CONFIG_PACKAGE_kmod-rtl8192se=m +CONFIG_PACKAGE_kmod-rtl8812au-ct=m +CONFIG_PACKAGE_kmod-rtl8821ae=m +CONFIG_PACKAGE_kmod-rtl8xxxu=m +CONFIG_PACKAGE_kmod-rtlwifi=m +CONFIG_PACKAGE_kmod-rtlwifi-btcoexist=m +CONFIG_PACKAGE_kmod-rtlwifi-pci=m +CONFIG_PACKAGE_kmod-rtlwifi-usb=m +CONFIG_PACKAGE_kmod-wl12xx=m +CONFIG_PACKAGE_kmod-wl18xx=m +CONFIG_PACKAGE_kmod-wlcore=m +CONFIG_PACKAGE_kmod-zd1211rw=m +CONFIG_PACKAGE_libiwinfo-lua=m +# CONFIG_PYTHON_BLUETOOTH_SUPPORT is not set +# CONFIG_PYTHON3_BLUETOOTH_SUPPORT is not set +CONFIG_PACKAGE_libip4tc=y +CONFIG_PACKAGE_libip6tc=y +CONFIG_PACKAGE_libiptc=m +CONFIG_PACKAGE_libxtables=y +CONFIG_PACKAGE_libxtables-nft=m +# CONFIG_boost-context-exclude is not set +# CONFIG_boost-coroutine-exclude is not set +# CONFIG_boost-fiber-exclude is not set +CONFIG_PACKAGE_libblkid=y +CONFIG_PACKAGE_libblobmsg-json=y +CONFIG_PACKAGE_libcomerr=y +CONFIG_PACKAGE_libext2fs=y +CONFIG_PACKAGE_libf2fs=y +CONFIG_PACKAGE_libiwinfo=m +CONFIG_PACKAGE_libjson-c=y +CONFIG_PACKAGE_liblua=m +CONFIG_PACKAGE_libnl-tiny=y +CONFIG_PACKAGE_libsmartcols=y +CONFIG_PACKAGE_libss=y +CONFIG_PACKAGE_libubox=y +CONFIG_PACKAGE_libubus=y +CONFIG_PACKAGE_libuci=y +CONFIG_PACKAGE_libuclient=y +CONFIG_PACKAGE_libuuid=y +CONFIG_RE2_SHARED=y +# CONFIG_RE2_STATIC is not set +# CONFIG_LUCI_SRCDIET is not set +CONFIG_LUCI_JSMIN=y +CONFIG_LUCI_CSSTIDY=y +# CONFIG_LUCI_LANG_ca is not set +# CONFIG_LUCI_LANG_cs is not set +# CONFIG_LUCI_LANG_de is not set +# CONFIG_LUCI_LANG_el is not set +# CONFIG_LUCI_LANG_en is not set +# CONFIG_LUCI_LANG_es is not set +# CONFIG_LUCI_LANG_fr is not set +# CONFIG_LUCI_LANG_he is not set +# CONFIG_LUCI_LANG_hu is not set +# CONFIG_LUCI_LANG_it is not set +# CONFIG_LUCI_LANG_ja is not set +# CONFIG_LUCI_LANG_ko is not set +# CONFIG_LUCI_LANG_ms is not set +# CONFIG_LUCI_LANG_no is not set +# CONFIG_LUCI_LANG_pl is not set +# CONFIG_LUCI_LANG_pt is not set +# CONFIG_LUCI_LANG_pt-br is not set +# CONFIG_LUCI_LANG_ro is not set +# CONFIG_LUCI_LANG_ru is not set +# CONFIG_LUCI_LANG_sk is not set +# CONFIG_LUCI_LANG_sv is not set +# CONFIG_LUCI_LANG_tr is not set +# CONFIG_LUCI_LANG_uk is not set +# CONFIG_LUCI_LANG_vi is not set +# CONFIG_LUCI_LANG_zh-cn is not set +# CONFIG_LUCI_LANG_zh-tw is not set +CONFIG_PACKAGE_luci-lib-nixio_notls=y +CONFIG_POSTFIX_TLS=y +CONFIG_POSTFIX_SASL=y +CONFIG_POSTFIX_LDAP=y +# CONFIG_POSTFIX_DB is not set +CONFIG_POSTFIX_CDB=y +CONFIG_POSTFIX_SQLITE=y +# CONFIG_POSTFIX_MYSQL is not set +# CONFIG_POSTFIX_PGSQL is not set +CONFIG_POSTFIX_PCRE=y +# CONFIG_POSTFIX_EAI is not set +CONFIG_PACKAGE_ip6tables=y +CONFIG_PACKAGE_ip6tables-extra=m +CONFIG_PACKAGE_ip6tables-mod-nat=m +CONFIG_PACKAGE_iptables=y +# CONFIG_IPTABLES_CONNLABEL is not set +# CONFIG_IPTABLES_NFTABLES is not set +CONFIG_PACKAGE_iptables-mod-checksum=m +CONFIG_PACKAGE_iptables-mod-cluster=m +CONFIG_PACKAGE_iptables-mod-clusterip=m +CONFIG_PACKAGE_iptables-mod-conntrack-extra=m +CONFIG_PACKAGE_iptables-mod-extra=m +CONFIG_PACKAGE_iptables-mod-filter=m +CONFIG_PACKAGE_iptables-mod-hashlimit=m +CONFIG_PACKAGE_iptables-mod-ipopt=m +CONFIG_PACKAGE_iptables-mod-iprange=m +CONFIG_PACKAGE_iptables-mod-ipsec=m +CONFIG_PACKAGE_iptables-mod-led=m +CONFIG_PACKAGE_iptables-mod-nat-extra=m +CONFIG_PACKAGE_iptables-mod-nflog=m +CONFIG_PACKAGE_iptables-mod-nfqueue=m +CONFIG_PACKAGE_iptables-mod-physdev=m +CONFIG_PACKAGE_iptables-mod-rpfilter=m +CONFIG_PACKAGE_iptables-mod-tee=m +CONFIG_PACKAGE_iptables-mod-tproxy=m +CONFIG_PACKAGE_iptables-mod-trace=m +CONFIG_PACKAGE_iptables-mod-u32=m +CONFIG_PACKAGE_iptables-mod-ulog=m +CONFIG_DNSDIST_OPENSSL=y +# CONFIG_DNSDIST_GNUTLS is not set +# CONFIG_DNSDIST_NOSSL is not set +CONFIG_OPENLDAP_DEBUG=y +# CONFIG_OPENLDAP_CRYPT is not set +# CONFIG_OPENLDAP_MONITOR is not set +# CONFIG_OPENLDAP_DB47 is not set +# CONFIG_OPENLDAP_ICU is not set +CONFIG_PACKAGE_comgt=m +CONFIG_PACKAGE_comgt-directip=m +CONFIG_PACKAGE_comgt-ncm=m +CONFIG_PACKAGE_uqmi=m +CONFIG_PACKAGE_batctl-default=m +CONFIG_PACKAGE_chat=m +CONFIG_PACKAGE_hostapd-common=m +CONFIG_PACKAGE_iw=m +CONFIG_PACKAGE_odhcp6c=y +CONFIG_PACKAGE_odhcp6c_ext_cer_id=0 +CONFIG_PACKAGE_odhcpd-ipv6only=y +CONFIG_PACKAGE_odhcpd_ipv6only_ext_cer_id=0 +CONFIG_PACKAGE_ppp=y +CONFIG_PACKAGE_ppp-mod-pppoe=y +CONFIG_PACKAGE_uclient-fetch=y +CONFIG_PACKAGE_umbim=m +# CONFIG_WPA_WOLFSSL is not set +CONFIG_DRIVER_WEXT_SUPPORT=y +CONFIG_DRIVER_11N_SUPPORT=y +CONFIG_DRIVER_11AC_SUPPORT=y +CONFIG_DRIVER_11W_SUPPORT=y +CONFIG_PACKAGE_wwan=m +CONFIG_PACKAGE_grub2-editenv=m +CONFIG_PACKAGE_uboot-envtools=m +CONFIG_PACKAGE_partx-utils=y +CONFIG_PACKAGE_e2fsprogs=y +CONFIG_PACKAGE_mkf2fs=y +CONFIG_PACKAGE_iwinfo=m +CONFIG_PACKAGE_jshn=y +CONFIG_PACKAGE_libjson-script=y +CONFIG_PACKAGE_spidev-test=m +CONFIG_STRACE_NONE=y +# CONFIG_STRACE_LIBDW is not set +# CONFIG_STRACE_LIBUNWIND is not set + +# +# Base system +# + +# +# Kernel modules +# + +# +# Block Devices +# + +# +# CAN Support +# + +# +# Cryptographic API modules +# + +# +# Filesystems +# + +# +# FireWire support +# + +# +# Hardware Monitoring Support +# + +# +# I2C support +# + +# +# Industrial I/O Modules +# + +# +# Input modules +# + +# +# LED modules +# + +# +# Libraries +# + +# +# Native Language Support +# + +# +# Netfilter Extensions +# + +# +# Network Devices +# + +# +# Network Support +# + +# +# Other modules +# + +# +# PCMCIA support +# + +# +# SPI Support +# + +# +# Sound Support +# + +# +# USB Support +# + +# +# Video Support +# + +# +# Virtualization +# + +# +# W1 support +# + +# +# WPAN 802.15.4 Support +# + +# +# Wireless Drivers +# + +# +# Libraries +# + +# +# SSL +# +CONFIG_PACKAGE_libmbedtls=m +# CONFIG_LIBMBEDTLS_DEBUG_C is not set +CONFIG_PACKAGE_libcares=m +CONFIG_PACKAGE_libev=m +CONFIG_PACKAGE_libpcre=m +CONFIG_PACKAGE_libsodium=m + +# +# Configuration +# +CONFIG_LIBSODIUM_MINIMAL=y + +# +# LuCI +# + +# +# 2. Clash +# +CONFIG_PACKAGE_luci-app-clash=m + +# +# 3. Applications +# +CONFIG_PACKAGE_luci-app-adguardhome=m + +# +# Network +# +CONFIG_PACKAGE_clash=m +CONFIG_PACKAGE_clashr=m + +# +# Utilities +# +CONFIG_PACKAGE_mbedtls-util=m diff --git a/package/jsda/luci-app-clash/luasrc/controller/clash.lua b/package/jsda/luci-app-clash/luasrc/controller/clash.lua index 38b065c68c..97e789cbb0 100644 --- a/package/jsda/luci-app-clash/luasrc/controller/clash.lua +++ b/package/jsda/luci-app-clash/luasrc/controller/clash.lua @@ -1,4 +1,9 @@ module("luci.controller.clash", package.seeall) +local fs=require"nixio.fs" +local http=require"luci.http" +local uci=require"luci.model.uci".cursor() + + function index() @@ -9,28 +14,38 @@ function index() entry({"admin", "services", "clash"},alias("admin", "services", "clash", "overview"), _("Clash"), 10).dependent = false entry({"admin", "services", "clash", "overview"},cbi("clash/overview"),_("Overview"), 10).leaf = true entry({"admin", "services", "clash", "client"},cbi("clash/client"),_("Client"), 20).leaf = true - entry({"admin", "services", "clash", "servers"},cbi("clash/servers"),_("Servers"), 30).leaf = true - entry({"admin", "services", "clash", "servers-config"},cbi("clash/servers-config"), nil).leaf = true - entry({"admin", "services", "clash", "groups"},cbi("clash/groups"), nil).leaf = true + entry({"admin", "services", "clash", "import"},cbi("clash/import"),_("Import Config"), 30).leaf = true + entry({"admin", "services", "clash", "create"},cbi("clash/create"),_("Create Config"), 40).leaf = true + entry({"admin", "services", "clash", "servers-config"},cbi("clash/servers-config"), nil).leaf = true + entry({"admin", "services", "clash", "groups"},cbi("clash/groups"), nil).leaf = true - entry({"admin", "services", "clash", "settings"}, firstchild(),_("Settings"), 40) - entry({"admin", "services", "clash", "settings", "port"},cbi("clash/port"),_("Proxy Ports"), 40).leaf = true - entry({"admin", "services", "clash", "settings", "dns"},cbi("clash/dns"),_("DNS Settings"), 50).leaf = true - entry({"admin", "services", "clash", "settings", "list"},cbi("clash/list"),_("Custom List"), 60).leaf = true - entry({"admin", "services", "clash", "settings", "access"},cbi("clash/access"),_("Access Control"), 70).leaf = true + entry({"admin", "services", "clash", "settings"}, firstchild(),_("Settings"), 50) + entry({"admin", "services", "clash", "settings", "port"},cbi("clash/port"),_("Proxy Ports"), 60).leaf = true + entry({"admin", "services", "clash", "settings", "dns"},cbi("clash/dns"),_("DNS Settings"), 70).leaf = true + entry({"admin", "services", "clash", "settings", "list"},cbi("clash/list"),_("Custom List"), 80).leaf = true + entry({"admin", "services", "clash", "settings", "access"},cbi("clash/access"),_("Access Control"), 90).leaf = true - entry({"admin", "services", "clash", "config"},firstchild(),_("Config"), 80) - entry({"admin", "services", "clash", "config", "actconfig"},cbi("clash/actconfig"),_("Config In Use"), 90).leaf = true - entry({"admin", "services", "clash", "config", "subconfig"},cbi("clash/subconfig"),_("Subscribe Config"), 100).leaf = true - entry({"admin", "services", "clash", "config", "upconfig"},cbi("clash/upconfig"),_("Uploaded Config"), 110).leaf = true - entry({"admin", "services", "clash", "config", "cusconfig"},cbi("clash/cusconfig"),_("Custom Config"), 120).leaf = true + entry({"admin", "services", "clash", "config"},firstchild(),_("Config"), 100) + entry({"admin", "services", "clash", "config", "actconfig"},cbi("clash/actconfig"),_("Config In Use"), 110).leaf = true + entry({"admin", "services", "clash", "config", "subconfig"},cbi("clash/subconfig"),_("Subscribe Config"), 120).leaf = true + entry({"admin", "services", "clash", "config", "upconfig"},cbi("clash/upconfig"),_("Uploaded Config"), 130).leaf = true + entry({"admin", "services", "clash", "config", "cusconfig"},cbi("clash/cusconfig"),_("Custom Config"), 140).leaf = true entry({"admin","services","clash","status"},call("action_status")).leaf=true - entry({"admin", "services", "clash", "log"},cbi("clash/log"),_("Log"), 130).leaf = true - entry({"admin", "services", "clash", "update"},cbi("clash/update"),_("Update"), 140).leaf = true + entry({"admin", "services", "clash", "log"},cbi("clash/log"),_("Log"), 150).leaf = true + entry({"admin", "services", "clash", "update"},cbi("clash/update"),_("Update"), 160).leaf = true + entry({"admin","services","clash","check_status"},call("check_status")).leaf=true entry({"admin", "services", "clash", "ping"}, call("act_ping")).leaf=true + entry({"admin", "services", "clash", "readlog"},call("action_read")).leaf=true + entry({"admin", "services", "clash", "check"}, call("check_update_log")).leaf=true + entry({"admin", "services", "clash", "doupdate"}, call("do_update")).leaf=true + entry({"admin", "services", "clash", "start"}, call("do_start")).leaf=true + entry({"admin", "services", "clash", "stop"}, call("do_stop")).leaf=true + entry({"admin", "services", "clash", "getlog"}, call("get_log")).leaf=true + entry({"admin", "services", "clash", "corelog"},call("down_check")).leaf=true + entry({"admin", "services", "clash", "logstatus"},call("logstatus_check")).leaf=true end @@ -61,6 +76,10 @@ local function check_core() return luci.sys.exec("sh /usr/share/clash/check_core_version.sh") end +local function check_clashr_core() + return luci.sys.exec("sh /usr/share/clash/check_clashr_core_version.sh") +end + local function current_version() return luci.sys.exec("sed -n 1p /usr/share/clash/luci_version") end @@ -73,6 +92,10 @@ local function new_core_version() return luci.sys.exec("sed -n 1p /usr/share/clash/new_core_version") end +local function new_clashr_core_version() + return luci.sys.exec("sed -n 1p /usr/share/clash/new_clashr_core_version") +end + local function e_mode() return luci.sys.exec("egrep '^ {0,}enhanced-mode' /etc/clash/config.yaml |grep enhanced-mode: |awk -F ': ' '{print $2}'") end @@ -86,14 +109,54 @@ local function clash_core() end end +local function clashr_core() + if nixio.fs.access("/usr/share/clash/corer_version") then + return luci.sys.exec("sed -n 1p /usr/share/clash/corer_version") + else + return "0" + end +end + +local function readlog() + return luci.sys.exec("sed -n '$p' /usr/share/clash/clash_real.txt 2>/dev/null") +end + + +local function downcheck() + if nixio.fs.access("/var/run/core_update_error") then + return "0" + elseif nixio.fs.access("/var/run/core_update") then + return "1" + elseif nixio.fs.access("/usr/share/clash/core_down_complete") then + return "2" + end +end + +function action_read() + luci.http.prepare_content("application/json") + luci.http.write_json({ + readlog = readlog(); + }) +end + +function down_check() + luci.http.prepare_content("application/json") + luci.http.write_json({ + downcheck = downcheck(); + }) +end + function check_status() luci.http.prepare_content("application/json") luci.http.write_json({ check_version = check_version(), check_core = check_core(), current_version = current_version(), + check_clashr_core = check_clashr_core(), new_version = new_version(), + new_clashr_core_version = new_clashr_core_version(), clash_core = clash_core(), + clashr_core = clashr_core(), new_core_version = new_core_version() @@ -108,6 +171,7 @@ function action_status() dash_port = dash_port(), current_version = current_version(), clash_core = clash_core(), + clashr_core = clashr_core(), dash_pass = dash_pass(), e_mode = e_mode() @@ -123,3 +187,50 @@ function act_ping() end + +function do_update() + fs.writefile("/var/run/clashlog","0") + luci.sys.exec("(rm /var/run/core_update_error ; touch /var/run/core_update ; sh /usr/share/clash/core_download.sh >/tmp/clash_update.txt 2>&1 || touch /var/run/core_update_error ;rm /var/run/core_update) &") +end + +function do_start() + luci.sys.exec("/etc/init.d/clash restart 2>&1 &") +end + +function do_stop() + luci.sys.exec("/etc/init.d/clash stop 2>&1 &") +end + +function check_update_log() + luci.http.prepare_content("text/plain; charset=utf-8") + local fdp=tonumber(fs.readfile("/var/run/clashlog")) or 0 + local f=io.open("/tmp/clash_update.txt", "r+") + f:seek("set",fdp) + local a=f:read(2048000) or "" + fdp=f:seek() + fs.writefile("/var/run/clashlog",tostring(fdp)) + f:close() +if fs.access("/var/run/core_update") then + luci.http.write(a) +else + luci.http.write(a.."\0") +end +end + + +function logstatus_check() + luci.http.prepare_content("text/plain; charset=utf-8") + local fdp=tonumber(fs.readfile("/usr/share/clash/logstatus_check")) or 0 + local f=io.open("/tmp/clash.txt", "r+") + f:seek("set",fdp) + local a=f:read(2048000) or "" + fdp=f:seek() + fs.writefile("/usr/share/clash/logstatus_check",tostring(fdp)) + f:close() +if fs.access("/var/run/logstatus") then + luci.http.write(a) +else + luci.http.write(a.."\0") +end +end + diff --git a/package/jsda/luci-app-clash/luasrc/model/cbi/clash/access.lua b/package/jsda/luci-app-clash/luasrc/model/cbi/clash/access.lua index 622a6423e9..0ed94fcd86 100644 --- a/package/jsda/luci-app-clash/luasrc/model/cbi/clash/access.lua +++ b/package/jsda/luci-app-clash/luasrc/model/cbi/clash/access.lua @@ -6,11 +6,13 @@ local DISP = require "luci.dispatcher" local UTIL = require "luci.util" local fs = require "luci.clash" local uci = require "luci.model.uci".cursor() +local clash = "clash" +local http = luci.http m = Map("clash") s = m:section(TypedSection, "clash") ---m.pageaction = false +m.pageaction = false s.anonymous = true s.addremove=false @@ -33,15 +35,47 @@ o:depends("proxylan", 1) -update_time = SYS.exec("ls -l --full-time /etc/clash/Country.mmdb|awk '{print $6,$7;}'") -o = s:option(Button,"update",translate("Update GEOIP Database")) -o.title = translate("GEOIP Database") -o.inputtitle = translate("Update GEOIP Database") -o.description = update_time -o.inputstyle = "reload" -o.write = function() - SYS.call("bash /usr/share/clash/ipdb.sh >>/tmp/clash.log 2>&1 &") - HTTP.redirect(DISP.build_url("admin", "services", "clash","settings", "access")) +o = s:option(FileUpload, "",translate("Update GEOIP Database")) +o.description = translate("NB: Upload GEOIP Database file Country.mmdb") +o.title = translate("Update GEOIP Database") +o.template = "clash/clash_upload" +um = s:option(DummyValue, "", nil) +um.template = "clash/clash_dvalue" + +local dir, fd +dir = "/etc/clash/" +http.setfilehandler( + function(meta, chunk, eof) + if not fd then + if not meta then return end + + if meta and chunk then fd = nixio.open(dir .. meta.file, "w") end + + if not fd then + um.value = translate("upload file error.") + return + end + end + if chunk and fd then + fd:write(chunk) + end + if eof and fd then + fd:close() + fd = nil + um.value = translate("File saved to") .. ' "/etc/clash/"' + SYS.call("chmod + x /etc/clash/Country.mmdb") + if luci.sys.call("pidof clash >/dev/null") == 0 then + SYS.call("/etc/init.d/clash restart >/dev/null 2>&1 &") + end + end + end +) + +if luci.http.formvalue("upload") then + local f = luci.http.formvalue("ulfile") + if #f <= 0 then + um.value = translate("No specify upload file.") + end end @@ -51,7 +85,7 @@ md = s:option(Flag, "rejectlan", translate("Bypass Lan IP")) md.default = 1 md.rmempty = false md.description = translate("Selected IPs will not be proxied if enabled. fake-ip mode not supported") -md:depends("proxylan", 0) +md:depends("proxylan", 0) o = s:option(DynamicList, "lan_ips", translate("Bypass Lan List")) @@ -66,12 +100,18 @@ o:depends("rejectlan", 1) -local apply = luci.http.formvalue("cbi.apply") -if apply then - uci:commit("clash") - if luci.sys.call("pidof clash >/dev/null") == 0 then - SYS.call("/etc/init.d/clash restart >/dev/null 2>&1 &") - end + + +o = s:option(Button, "Apply") +o.title = translate("Save & Apply") +o.inputtitle = translate("Save & Apply") +o.inputstyle = "apply" +o.write = function() + m.uci:commit("clash") + if luci.sys.call("pidof clash >/dev/null") == 0 then + SYS.call("/etc/init.d/clash restart >/dev/null 2>&1 &") + luci.http.redirect(luci.dispatcher.build_url("admin", "services", "clash")) + end end return m diff --git a/package/jsda/luci-app-clash/luasrc/model/cbi/clash/client.lua b/package/jsda/luci-app-clash/luasrc/model/cbi/clash/client.lua index 1cd85b2145..03cf7fcf7d 100644 --- a/package/jsda/luci-app-clash/luasrc/model/cbi/clash/client.lua +++ b/package/jsda/luci-app-clash/luasrc/model/cbi/clash/client.lua @@ -11,12 +11,23 @@ local clash = "clash" m = Map("clash") s = m:section(TypedSection, "clash") s.anonymous = true +m.pageaction = false o = s:option(Flag, "enable", translate("Enable")) o.default = 0 o.rmempty = false o.description = translate("Enable") +o = s:option(ListValue, "core", translate("Core")) +o.default = "clashcore" +if nixio.fs.access("/etc/clash/clash") then +o:value("1", translate("Clash")) +end +if nixio.fs.access("/usr/bin/clash") then +o:value("2", translate("Clashr")) +end +o.description = translate("Select core, clashr support ssr while clash does not.") + o = s:option(ListValue, "config_type", translate("Config Type")) o.default = "sub" @@ -25,13 +36,21 @@ o:value("upl", translate("Uploaded Config")) o:value("cus", translate("Custom Config")) o.description = translate("Select Configuration type") - - -local apply = luci.http.formvalue("cbi.apply") -if apply then - uci:commit("clash") - os.execute("/etc/init.d/clash restart >/dev/null 2>&1 &") +o = s:option(Button, "Apply") +o.title = translate("Save & Apply") +o.inputtitle = translate("Save & Apply") +o.inputstyle = "apply" +o.write = function() + m.uci:commit("clash") end +o = s:option(Button,"action") +o.title = translate("Action") +o.template = "clash/start_stop" + + + + + return m diff --git a/package/jsda/luci-app-clash/luasrc/model/cbi/clash/create.lua b/package/jsda/luci-app-clash/luasrc/model/cbi/clash/create.lua new file mode 100644 index 0000000000..675ff38a9e --- /dev/null +++ b/package/jsda/luci-app-clash/luasrc/model/cbi/clash/create.lua @@ -0,0 +1,195 @@ +local NXFS = require "nixio.fs" +local SYS = require "luci.sys" +local HTTP = require "luci.http" +local DISP = require "luci.dispatcher" +local UTIL = require "luci.util" +local fs = require "luci.clash" +local uci = require "luci.model.uci".cursor() +local m, s, o, krk +local clash = "clash" +local http = luci.http + + +m = Map("clash") +s = m:section(TypedSection, "clash" , translate("Rule")) +s.anonymous = true +s.addremove=false +m.pageaction = false + +o = s:option(Value, "rule_url") +o.title = translate("Custom Rule Url") +o.description = translate("Insert your custom rule Url and click download") +o.rmempty = true + +o = s:option(Button,"rule_update") +o.title = translate("Download Rule") +o.inputtitle = translate("Download Rule") +o.description = translate("Download Rule") +o.inputstyle = "reload" +o.write = function() + uci:commit("clash") + SYS.call("sh /usr/share/clash/rule.sh >>/tmp/clash.txt 2>&1 &") + HTTP.redirect(DISP.build_url("admin", "services", "clash", "servers")) +end + +local rule = "/usr/share/clash/custom_rule.yaml" +sev = s:option(TextValue, "rule") +sev.description = translate("NB: Attention to Proxy Group and Rule when making changes to this section") +sev.rows = 20 +sev.wrap = "off" +sev.cfgvalue = function(self, section) + return NXFS.readfile(rule) or "" +end +sev.write = function(self, section, value) + NXFS.writefile(rule, value:gsub("\r\n", "\n")) +end + +o = s:option(Button,"del_rule") +o.inputtitle = translate("Delete Rule") +o.write = function() + SYS.call("rm -rf /usr/share/clash/custom_rule.yaml >/dev/null 2>&1 &") +end + + + + +krk = Map(clash) +s = krk:section(TypedSection, "clash", translate("Load Config")) +s.anonymous = true + + +cc = s:option(Flag, "create", translate("Enable Create")) +cc.default = 1 +cc.description = translate("Enable to create configuration") + +o = s:option(ListValue, "loadfrom", translate("Load From")) +o:value("sub", translate("Subscription Config")) +o:value("upl", translate("Upload Config")) +o.description = translate("Select from which configuration custom server should be loaded from") + +o = s:option(ListValue, "loadservers", translate("Load Servers")) +o:value("1", translate("enabled")) +o:value("0", translate("disabled")) +o.description = translate("Enable to read servers") + + +o = s:option(ListValue, "loadgroups", translate("Load Groups")) +o:value("1", translate("enabled")) +o:value("0", translate("disabled")) +o.description = translate("Enable to read policy group") + + +local t = { + {Load_Config, Creat_Config, Delete_Severs, Delete_Groups} +} + +b = krk:section(Table, t) + +o = b:option(Button,"Load_Config") +o.inputtitle = translate("Load Config") +o.inputstyle = "apply" +o.write = function() + krk.uci:commit("clash") + luci.sys.call("sh /usr/share/clash/load.sh >/dev/null 2>&1 &") + luci.http.redirect(luci.dispatcher.build_url("admin", "services", "clash")) +end + +o = b:option(Button,"Creat_Config") +o.inputtitle = translate("Create Config") +o.inputstyle = "apply" +o.write = function() + krk.uci:commit("clash") + luci.sys.call("sh /usr/share/clash/proxy.sh >/dev/null 2>&1 &") + luci.http.redirect(luci.dispatcher.build_url("admin", "services", "clash")) +end + + +o = b:option(Button,"Delete_Severs") +o.inputtitle = translate("Delete Severs") +o.inputstyle = "reset" +o.write = function() + krk.uci:delete_all("clash", "servers", function(s) return true end) + krk.uci:commit("clash") + luci.http.redirect(luci.dispatcher.build_url("admin", "services", "clash", "create")) +end + +o = b:option(Button,"Delete_Groups") +o.inputtitle = translate("Delete Groups") +o.inputstyle = "reset" +o.write = function() + krk.uci:delete_all("clash", "groups", function(s) return true end) + krk.uci:commit("clash") + luci.http.redirect(luci.dispatcher.build_url("admin", "services", "clash", "create")) +end + + + +s = krk:section(TypedSection, "servers", translate("Proxies")) +s.anonymous = true +s.addremove = true +s.sortable = false +s.template = "cbi/tblsection" +s.extedit = luci.dispatcher.build_url("admin/services/clash/servers-config/%s") +function s.create(...) + local sid = TypedSection.create(...) + if sid then + luci.http.redirect(s.extedit % sid) + return + end +end + + +o = s:option(DummyValue, "type", translate("Type")) +function o.cfgvalue(...) + return Value.cfgvalue(...) or translate("None") +end + +o = s:option(DummyValue, "name", translate("Alias")) +function o.cfgvalue(...) + return Value.cfgvalue(...) or translate("None") +end + +o = s:option(DummyValue, "server", translate("Server Address")) +function o.cfgvalue(...) + return Value.cfgvalue(...) or translate("None") +end + +o = s:option(DummyValue, "port", translate("Server Port")) +function o.cfgvalue(...) + return Value.cfgvalue(...) or translate("None") +end + +o = s:option(DummyValue, "server" ,translate("Latency")) +o.template="clash/ping" +o.width="10%" + +r = krk:section(TypedSection, "groups", translate("Policy Groups")) +r.anonymous = true +r.addremove = true +s.sortable = false +r.template = "cbi/tblsection" +r.extedit = luci.dispatcher.build_url("admin/services/clash/groups/%s") +function r.create(...) + local sid = TypedSection.create(...) + if sid then + luci.http.redirect(r.extedit % sid) + return + end +end + +o = r:option(DummyValue, "type", translate("Group Type")) +function o.cfgvalue(...) + return Value.cfgvalue(...) or translate("None") +end + + +o = r:option(DummyValue, "name", translate("Group Name")) +function o.cfgvalue(...) + return Value.cfgvalue(...) or translate("None") +end + + +krk:append(Template("clash/list")) + +return krk, m + diff --git a/package/jsda/luci-app-clash/luasrc/model/cbi/clash/dns.lua b/package/jsda/luci-app-clash/luasrc/model/cbi/clash/dns.lua index 9f5880ee89..2689ce501b 100644 --- a/package/jsda/luci-app-clash/luasrc/model/cbi/clash/dns.lua +++ b/package/jsda/luci-app-clash/luasrc/model/cbi/clash/dns.lua @@ -8,24 +8,39 @@ local uci = require("luci.model.uci").cursor() m = Map("clash") s = m:section(TypedSection, "clash") ---m.pageaction = false +m.pageaction = false s.anonymous = true s.addremove=false y = s:option(ListValue, "dnsforwader", translate("DNS Forwarding")) -y.default = 1 y:value("0", translate("disabled")) y:value("1", translate("enabled")) -y.description = translate("Set custom DNS forwarder in DHCP and DNS Settings") +y.description = translate("Set custom DNS forwarder in DHCP and DNS Settings and forward all dns traffic to clash") +deldns = s:option(Flag, "delan", translate("Remove Lan DNS")) +deldns.description = translate("Remove Lan custom DNS Servers when client is disabled") +cdns = s:option(Flag, "culan", translate("Enable Lan DNS")) +cdns.default = 1 +cdns.description = translate("Enabling will set custom DNS Servers for Lan") +cdns:depends("dnsforwader", 0) + +dns = s:option(DynamicList, "landns", translate("Lan DNS servers")) +dns.description = translate("Set custom DNS Servers for Lan") +dns.datatype = "ipaddr" +dns.cast = "string" +dns:depends("culan", 1) + +y = s:option(ListValue, "ipv6", translate("Enable ipv6")) +y:value("0", translate("disabled")) +y:value("1", translate("enabled")) +y.description = translate("Allow ipv6 traffic through clash") md = s:option(Flag, "mode", translate("Custom DNS")) md.default = 1 md.rmempty = false md.description = translate("Enabling Custom DNS will Overwrite your config.yaml dns section") - local dns = "/usr/share/clash/dns.yaml" o = s:option(TextValue, "dns",translate("Modify yaml DNS")) o.template = "clash/tvalue" @@ -41,15 +56,22 @@ o.description = translate("NB: press ENTER to create a blank line at the end of o:depends("mode", 1) +o = s:option(Button, "Apply") +o.title = translate("Save & Apply") +o.inputtitle = translate("Save & Apply") +o.inputstyle = "apply" +o.write = function() local clash_conf = "/etc/clash/config.yaml" -local apply = luci.http.formvalue("cbi.apply") -if apply then if NXFS.access(clash_conf) then uci:commit("clash") SYS.call("sh /usr/share/clash/yum_change.sh 2>&1 &") if luci.sys.call("pidof clash >/dev/null") == 0 then SYS.call("/etc/init.d/clash restart >/dev/null 2>&1 &") + luci.http.redirect(luci.dispatcher.build_url("admin", "services", "clash")) end +else + uci:commit("clash") + luci.http.redirect(luci.dispatcher.build_url("admin", "services", "clash" , "settings", "dns")) end end diff --git a/package/jsda/luci-app-clash/luasrc/model/cbi/clash/groups.lua b/package/jsda/luci-app-clash/luasrc/model/cbi/clash/groups.lua index 5d2ce5b344..dad743666a 100644 --- a/package/jsda/luci-app-clash/luasrc/model/cbi/clash/groups.lua +++ b/package/jsda/luci-app-clash/luasrc/model/cbi/clash/groups.lua @@ -9,7 +9,7 @@ local sid = arg[1] m = Map(clash, translate("Edit Group")) --m.pageaction = false -m.redirect = luci.dispatcher.build_url("admin/services/clash/servers") +m.redirect = luci.dispatcher.build_url("admin/services/clash/create") if m.uci:get(clash, sid) ~= "groups" then luci.http.redirect(m.redirect) return @@ -46,7 +46,15 @@ o:depends("type", "fallback") o:depends("type", "load-balance") o = s:option(DynamicList, "other_group", translate("Other Group")) +o.rmempty = false o.description = translate("Proxy Groups Must Exist In Rule") +o:value("ALL", translate("All Servers")) +uci:foreach("clash", "servers", + function(s) + if s.name ~= "" and s.name ~= nil and s.name ~= m.uci:get(clash, sid, "name") then + o:value(s.name) + end + end) uci:foreach("clash", "groups", function(s) if s.name ~= "" and s.name ~= nil and s.name ~= m.uci:get(clash, sid, "name") then @@ -55,14 +63,13 @@ uci:foreach("clash", "groups", end) o:value("DIRECT") o:value("REJECT") -o:depends("type", "select") -o.rmempty = true + local apply = luci.http.formvalue("cbi.apply") if apply then - uci:commit(clash, sid) - sys.call("/usr/share/clash/groups.sh start") + m.uci:commit(clash, sid) + sys.call("sh /usr/share/clash/groups.sh start") end return m diff --git a/package/jsda/luci-app-clash/luasrc/model/cbi/clash/import.lua b/package/jsda/luci-app-clash/luasrc/model/cbi/clash/import.lua new file mode 100644 index 0000000000..bee095789e --- /dev/null +++ b/package/jsda/luci-app-clash/luasrc/model/cbi/clash/import.lua @@ -0,0 +1,128 @@ +local NXFS = require "nixio.fs" +local SYS = require "luci.sys" +local HTTP = require "luci.http" +local DISP = require "luci.dispatcher" +local UTIL = require "luci.util" +local fs = require "luci.clash" +local uci = require "luci.model.uci".cursor() +local kr +local clash = "clash" +local http = luci.http + + + +kr = Map(clash) +s = kr:section(TypedSection, "clash", translate("Subscription Config")) +s.anonymous = true +kr.pageaction = false + +o = s:option(Flag, "auto_update", translate("Auto Update")) +o.description = translate("Auto Update Server subscription") + +o = s:option(ListValue, "auto_update_time", translate("Update time (every day)")) +for t = 0,23 do +o:value(t, t..":00") +end +o.default=0 +o.description = translate("Daily Server subscription update time") + + + +o = s:option(ListValue, "subcri", translate("Subcription Type")) +o.default = clash +o:value("clash", translate("clash")) +o:value("v2ssr2clash", translate("v2ssr2clash")) +o.description = translate("Select Subcription Type") + + + +o = s:option(Value, "subscribe_url_clash") +o.title = translate("Subcription Url") +o.description = translate("Clash Subscription Address") +o.rmempty = true +o:depends("subcri", 'clash') + +o = s:option(DynamicList, "subscribe_url") +o.title = translate("Subcription Url") +o.description = translate("V2/SSR Subscription Address, Only input your subscription address without any api conversion url") +o.rmempty = true +o:depends("subcri", 'v2ssr2clash') + +o = s:option(Button,"update") +o.title = translate("Update Subcription") +o.inputtitle = translate("Update") +o.description = translate("Update Config") +o.inputstyle = "reload" +o.write = function() + kr.uci:commit("clash") + SYS.call("sh /usr/share/clash/clash.sh >>/tmp/clash.txt 2>&1 &") + SYS.call("sleep 1") + HTTP.redirect(DISP.build_url("admin", "services", "clash")) +end +o:depends("subcri", 'clash') + +o = s:option(Button,"updatee") +o.title = translate("Update Subcription") +o.inputtitle = translate("Update") +o.description = translate("Update Config") +o.inputstyle = "reload" +o.write = function() + kr.uci:commit("clash") + SYS.call("cp /etc/config/clash /usr/share/clash/v2ssr/config.bak 2>/dev/null") + SYS.call("sleep 1") + luci.sys.call("bash /usr/share/clash/v2ssr.sh >>/tmp/clash.txt 2>&1 &") + HTTP.redirect(DISP.build_url("admin", "services", "clash")) +end +o:depends("subcri", 'v2ssr2clash') + +k = Map(clash) +k.reset = false +k.submit = false +sul =k:section(TypedSection, "clash", translate("Upload Config")) +sul.anonymous = true +sul.addremove=false +o = sul:option(FileUpload, "") +o.description = translate("NB: Only upload file with name config.yml or config.yaml") +o.title = translate(" ") +o.template = "clash/clash_upload" +um = sul:option(DummyValue, "", nil) +um.template = "clash/clash_dvalue" + +local dir, fd +dir = "/usr/share/clash/config/upload/" +http.setfilehandler( + function(meta, chunk, eof) + if not fd then + if not meta then return end + + if meta and chunk then fd = nixio.open(dir .. meta.file, "w") end + + if not fd then + um.value = translate("upload file error.") + return + end + end + if chunk and fd then + fd:write(chunk) + end + if eof and fd then + fd:close() + fd = nil + local clash_conf = "/usr/share/clash/config/upload/config.yml" + if NXFS.access(clash_conf) then + SYS.call("mv /usr/share/clash/config/upload/config.yml /usr/share/clash/config/upload/config.yaml >/dev/null 2>&1 &") + end + um.value = translate("File saved to") .. ' "/usr/share/clash/config/upload/"' + + end + end +) + +if luci.http.formvalue("upload") then + local f = luci.http.formvalue("ulfile") + if #f <= 0 then + um.value = translate("No specify upload file.") + end +end + +return kr, k diff --git a/package/jsda/luci-app-clash/luasrc/model/cbi/clash/list.lua b/package/jsda/luci-app-clash/luasrc/model/cbi/clash/list.lua index f309a709dd..92a611f946 100644 --- a/package/jsda/luci-app-clash/luasrc/model/cbi/clash/list.lua +++ b/package/jsda/luci-app-clash/luasrc/model/cbi/clash/list.lua @@ -10,7 +10,7 @@ local clash = "clash" m = Map("clash") s = m:section(TypedSection, "clash") ---m.pageaction = false +m.pageaction = false s.anonymous = true @@ -32,6 +32,19 @@ o:value("4.2.2.4", "4.2.2.4") o:depends("cus_list", "1") +o = s:option(Button, "Apply") +o.title = translate("Apply Custom List") +o.inputtitle = translate("Apply Custom List") +o.inputstyle = "apply" +o.write = function() + m.uci:commit("clash") + --SYS.call("sh /usr/share/clash/list.sh 2>&1 &") + if luci.sys.call("pidof clash >/dev/null") == 0 then + SYS.call("/etc/init.d/clash restart >/dev/null 2>&1 &") + luci.http.redirect(luci.dispatcher.build_url("admin", "services", "clash")) + end +end + local conffile = "/usr/share/clash/server.list" sev = s:option(TextValue, "conffile") @@ -44,14 +57,4 @@ sev.write = function(self, section, value) NXFS.writefile(conffile, value:gsub("\r\n", "\n")) end - - -local apply = luci.http.formvalue("cbi.apply") -if apply then - uci:commit("clash") - if luci.sys.call("pidof clash >/dev/null") == 0 then - SYS.call("/etc/init.d/clash restart >/dev/null 2>&1 &") - end -end - return m diff --git a/package/jsda/luci-app-clash/luasrc/model/cbi/clash/log.lua b/package/jsda/luci-app-clash/luasrc/model/cbi/clash/log.lua index 072b8c6130..85da79a304 100644 --- a/package/jsda/luci-app-clash/luasrc/model/cbi/clash/log.lua +++ b/package/jsda/luci-app-clash/luasrc/model/cbi/clash/log.lua @@ -5,7 +5,8 @@ local HTTP = require "luci.http" local DISP = require "luci.dispatcher" local UTIL = require "luci.util" local uci = require("luci.model.uci").cursor() - +local fs = require "luci.clash" +local http = luci.http m = Map("clash") s = m:section(TypedSection, "clash") @@ -13,23 +14,45 @@ m.pageaction = false s.anonymous = true s.addremove=false -local clog = "/tmp/clash.log" log = s:option(TextValue, "clog") -log.readonly=true -log.description = translate("") -log.rows = 29 -log.wrap = "off" -log.cfgvalue = function(self, section) - return NXFS.readfile(clog) or "" -end -log.write = function(self, section, value) -end +log.template = "clash/status_log" o = s:option(Button,"log") o.inputtitle = translate("Clear Logs") o.write = function() - SYS.call('echo "" > /tmp/clash.log 2>&1 &') + SYS.call('echo "0" > /usr/share/clash/logstatus_check 2>&1 &') + SYS.call('echo "" > /tmp/clash.txt 2>&1 &') HTTP.redirect(DISP.build_url("admin", "services", "clash", "log")) end +o = s:option(Button, "Download") +o.inputtitle = translate("Download logs") +o.inputstyle = "apply" +o.write = function () + local sPath, sFile, fd, block + sPath = "/tmp/clash.txt" + sFile = NXFS.basename(sPath) + if fs.isdirectory(sPath) then + fd = io.popen('txt -C "%s" -cz .' % {sPath}, "r") + sFile = sFile .. ".txt" + else + fd = nixio.open(sPath, "r") + end + if not fd then + return + end + HTTP.header('Content-Disposition', 'attachment; filename="%s"' % {sFile}) + HTTP.prepare_content("application/octet-stream") + while true do + block = fd:read(nixio.const.buffersize) + if (not block) or (#block ==0) then + break + else + HTTP.write(block) + end + end + fd:close() + HTTP.close() +end + return m diff --git a/package/jsda/luci-app-clash/luasrc/model/cbi/clash/port.lua b/package/jsda/luci-app-clash/luasrc/model/cbi/clash/port.lua index a97e861449..d97794bf6b 100644 --- a/package/jsda/luci-app-clash/luasrc/model/cbi/clash/port.lua +++ b/package/jsda/luci-app-clash/luasrc/model/cbi/clash/port.lua @@ -7,7 +7,7 @@ local uci = require("luci.model.uci").cursor() m = Map("clash") s = m:section(TypedSection, "clash") ---m.pageaction = false +m.pageaction = false s.anonymous = true o = s:option(Value, "http_port") @@ -80,15 +80,22 @@ o:value("warning", "warning") o:value("error", "error") o:value("debug", "debug") +o = s:option(Button, "Apply") +o.title = translate("Save & Apply") +o.inputtitle = translate("Save & Apply") +o.inputstyle = "apply" +o.write = function() local clash_conf = "/etc/clash/config.yaml" -local apply = luci.http.formvalue("cbi.apply") -if apply then if NXFS.access(clash_conf) then - uci:commit("clash") + m.uci:commit("clash") SYS.call("sh /usr/share/clash/yum_change.sh 2>&1 &") if luci.sys.call("pidof clash >/dev/null") == 0 then SYS.call("/etc/init.d/clash restart >/dev/null 2>&1 &") + luci.http.redirect(luci.dispatcher.build_url("admin", "services", "clash")) end +else + m.uci:commit("clash") + luci.http.redirect(luci.dispatcher.build_url("admin", "services", "clash" , "settings", "port")) end end diff --git a/package/jsda/luci-app-clash/luasrc/model/cbi/clash/servers-config.lua b/package/jsda/luci-app-clash/luasrc/model/cbi/clash/servers-config.lua index 1496537319..4d914ae3e7 100644 --- a/package/jsda/luci-app-clash/luasrc/model/cbi/clash/servers-config.lua +++ b/package/jsda/luci-app-clash/luasrc/model/cbi/clash/servers-config.lua @@ -23,7 +23,6 @@ local encrypt_methods_ss = { "aes-128-gcm", "aes-192-gcm", "aes-256-gcm", - "chacha20", "chacha20-ietf", "xchacha20", "chacha20-ietf-poly1305", @@ -37,8 +36,52 @@ local securitys = { "chacha20-poly1305" } +local encrypt_methods_ssr = { + + "aes-128-cfb", + "aes-192-cfb", + "aes-256-cfb", + "aes-128-ctr", + "aes-192-ctr", + "aes-256-ctr", + "aes-128-ofb", + "aes-192-ofb", + "aes-256-ofb", + "des-cfb", + "bf-cfb", + "cast5-cfb", + "rc4-md5", + "chacha20", + "chacha20-ietf", + "salsa20", + "camellia-128-cfb", + "camellia-192-cfb", + "camellia-256-cfb", + "idea-cfb", + "rc2-cfb", + "seed-cfb", +} + + +local protocol_ssr = { + + "origin", + "auth_sha1_v4", + "auth_aes128_md5", + "auth_aes128_sha1", +} + + +local obfs_ssr_list = { + + "plain", + "http_simple", + "http_post", + "tls1.2_ticket_auth", +} + m = Map(clash, translate("Edit Server")) -m.redirect = luci.dispatcher.build_url("admin/services/clash/servers") +m.redirect = luci.dispatcher.build_url("admin/services/clash/create") if m.uci:get(clash, sid) ~= "servers" then luci.http.redirect(m.redirect) return @@ -51,9 +94,11 @@ s.addremove = false o = s:option(ListValue, "type", translate("Server Node Type")) o:value("ss", translate("Shadowsocks")) +o:value("ssr", translate("ShadowsocksR")) o:value("vmess", translate("Vmess")) o:value("socks5", translate("Socks5")) o:value("http", translate("HTTP(S)")) +o:value("snell", translate("Snell")) o.description = translate("Using incorrect encryption mothod may causes service fail to start") @@ -73,12 +118,49 @@ o = s:option(Value, "password", translate("Password")) o.password = true o.rmempty = true o:depends("type", "ss") +o:depends("type", "ssr") + +o = s:option(Value, "psk", translate("Psk")) +o.rmempty = false +o:depends("type", "snell") o = s:option(ListValue, "cipher", translate("Encrypt Method")) for _, v in ipairs(encrypt_methods_ss) do o:value(v) end o.rmempty = true o:depends("type", "ss") +o = s:option(ListValue, "cipher_ssr", translate("Encrypt Method")) +for _, v in ipairs(encrypt_methods_ssr) do o:value(v) end +o.rmempty = true +o:depends("type", "ssr") + +o = s:option(ListValue, "protocol", translate("Protocol")) +for _, v in ipairs(protocol_ssr) do o:value(v) end +o.rmempty = true +o:depends("type", "ssr") + +o = s:option(Value, "protocolparam", translate("Protocol Param")) +o.rmempty = true +o:depends("type", "ssr") + +o = s:option(ListValue, "obfs_ssr", translate("Obfs")) +for _, v in ipairs(obfs_ssr_list) do o:value(v) end +o.rmempty = true +o:depends("type", "ssr") + +o = s:option(ListValue, "obfs_snell", translate("obfs-mode")) +o.rmempty = true +o.default = "none" +o:value("none") +o:value("tls") +o:value("http") +o:depends("type", "snell") + +o = s:option(Value, "obfsparam", translate("Obfs Param")) +o.rmempty = true +o:depends("type", "ssr") + + o = s:option(ListValue, "securitys", translate("Encrypt Method")) for _, v in ipairs(securitys) do o:value(v, v:upper()) end o.rmempty = true @@ -99,11 +181,14 @@ o:value("none") o:value("websocket", translate("websocket (ws)")) o:depends("type", "vmess") -o = s:option(Value, "host", translate("obfs-hosts")) +o = s:option(Value, "host", translate("hosts")) o.datatype = "host" o.rmempty = true o:depends("obfs", "tls") o:depends("obfs", "http") +o:depends("obfs", "websocket") +o:depends("obfs_snell", "tls") +o:depends("obfs_snell", "http") o = s:option(ListValue, "udp", translate("udp")) o:value("true") @@ -117,10 +202,6 @@ o:value("false") o:depends("obfs", "websocket") -o = s:option(Value, "custom_host", translate("host")) -o.rmempty = true -o:depends("obfs", "websocket") - -- [[ WS部分 ]]-- @@ -188,4 +269,9 @@ o:depends("type", "vmess") o:depends("type", "socks5") o:depends("type", "http") +local apply = luci.http.formvalue("cbi.apply") +if apply then + m.uci:commit("clash") +end + return m diff --git a/package/jsda/luci-app-clash/luasrc/model/cbi/clash/servers.lua b/package/jsda/luci-app-clash/luasrc/model/cbi/clash/servers.lua deleted file mode 100644 index 78f466e5c5..0000000000 --- a/package/jsda/luci-app-clash/luasrc/model/cbi/clash/servers.lua +++ /dev/null @@ -1,286 +0,0 @@ -local NXFS = require "nixio.fs" -local SYS = require "luci.sys" -local HTTP = require "luci.http" -local DISP = require "luci.dispatcher" -local UTIL = require "luci.util" -local fs = require "luci.clash" -local uci = require "luci.model.uci".cursor() -local m, s, o, k -local clash = "clash" -local http = luci.http - - -m = Map("clash") -s = m:section(TypedSection, "clash" , translate("Rule")) -s.anonymous = true -s.addremove=false - - -o = s:option(Value, "rule_url") -o.title = translate("Custom Rule Url") -o.description = translate("Insert your custom rule Url and click download") -o.rmempty = true - -o = s:option(Button,"rule_update") -o.title = translate("Download Rule") -o.inputtitle = translate("Download Rule") -o.description = translate("Download Rule") -o.inputstyle = "reload" -o.write = function() - uci:commit("clash") - SYS.call("sh /usr/share/clash/rule.sh >>/tmp/clash.log 2>&1 &") - HTTP.redirect(DISP.build_url("admin", "services", "clash", "servers")) -end - -local rule = "/usr/share/clash/custom_rule.yaml" -sev = s:option(TextValue, "rule") -sev.description = translate("NB: Attention to Proxy Group and Rule when making changes to this section") -sev.rows = 20 -sev.wrap = "off" -sev.cfgvalue = function(self, section) - return NXFS.readfile(rule) or "" -end -sev.write = function(self, section, value) - NXFS.writefile(rule, value:gsub("\r\n", "\n")) -end - -o = s:option(Button,"del_rule") -o.inputtitle = translate("Delete Rule") -o.write = function() - SYS.call("rm -rf /usr/share/clash/custom_rule.yaml >/dev/null 2>&1 &") -end - - - - -kr = Map(clash) -s = kr:section(TypedSection, "clash", translate("Subscription Config")) -s.anonymous = true - -y = s:option(Flag, "cus_servers", translate("Status")) -y.description = translate("enabled to create custom configuration") -y.default = 0 -y.rmempty = false - -o = s:option(ListValue, "loadservers", translate("Load Config From")) -o.default = sub -o:value("sub", translate("Subscription Config")) -o:value("upl", translate("Upload Config")) -o.description = translate("Select from which configuration custom server should be loaded from") - - -o = s:option(Flag, "auto_update", translate("Auto Update")) -o.description = translate("Auto Update Server subscription") - -o = s:option(ListValue, "auto_update_time", translate("Update time (every day)")) -for t = 0,23 do -o:value(t, t..":00") -end -o.default=0 -o.description = translate("Daily Server subscription update time") - - - -o = s:option(ListValue, "subcri", translate("Subcription Type")) -o.default = clash -o:value("clash", translate("clash")) -o:value("v2rayn2clash", translate("v2rayn2clash")) ---o:value("surge2clash", translate("surge2clash")) -o.description = translate("Select Subcription Type, enter only your subcription url without https://tgbot.lbyczf.com/*?") - - - -md = s:option(Flag, "cusrule", translate("Enabled Custom Rule")) -md.default = 1 -md.description = translate("Enabled Custom Rule") -md:depends("subcri", 'v2rayn2clash') - - -o = s:option(Value, "subscribe_url") -o.title = translate("Subcription Url") -o.description = translate("Server Subscription Address") -o.rmempty = true - -o = s:option(Button,"update") -o.title = translate("Update Subcription") -o.inputtitle = translate("Update") -o.description = translate("Update Config") -o.inputstyle = "reload" -o.write = function() - --os.execute("sed -i '/enable/d' /etc/config/clash") - --SYS.call("rm -rf /tmp/clash.log >/dev/null 2>&1 &") - SYS.call("sh /usr/share/clash/clash.sh >>/tmp/clash.log 2>&1 &") - HTTP.redirect(DISP.build_url("admin", "services", "clash", "servers")) -end - - - - -k = Map(clash) -k.reset = false -k.submit = false -sul =k:section(TypedSection, "clash", translate("Upload Config")) -sul.anonymous = true -sul.addremove=false -o = sul:option(FileUpload, "") -o.title = translate(" ") -o.template = "clash/clash_upload" -um = sul:option(DummyValue, "", nil) -um.template = "clash/clash_dvalue" - -local dir, fd -dir = "/usr/share/clash/config/upload/" -http.setfilehandler( - function(meta, chunk, eof) - if not fd then - if not meta then return end - - if meta and chunk then fd = nixio.open(dir .. meta.file, "w") end - - if not fd then - um.value = translate("upload file error.") - return - end - end - if chunk and fd then - fd:write(chunk) - end - if eof and fd then - fd:close() - fd = nil - local clash_conf = "/usr/share/clash/config/upload/config.yml" - if NXFS.access(clash_conf) then - SYS.call("mv /usr/share/clash/config/upload/config.yml /usr/share/clash/config/upload/config.yaml >/dev/null 2>&1 &") - end - - um.value = translate("File saved to") .. ' "/usr/share/clash/config/upload/"' - - end - end -) - -if luci.http.formvalue("upload") then - local f = luci.http.formvalue("ulfile") - if #f <= 0 then - um.value = translate("No specify upload file.") - end -end - - - - - - - - -local t = { - {Load_Config, Delete_Severs, Delete_Groups} -} -b = k:section(Table, t) - -o = b:option(Button,"Load_Config") -o.inputtitle = translate("Load Servers") -o.inputstyle = "apply" -o.write = function() - k.uci:delete_all("clash", "servers", function(s) return true end) - k.uci:commit("clash") - luci.sys.call("sh /usr/share/clash/get_proxy.sh 2>/dev/null &") - SYS.call("sleep 2") - luci.http.redirect(luci.dispatcher.build_url("admin", "services", "clash", "servers")) -end - -o = b:option(Button,"Delete_Severs") -o.inputtitle = translate("Delete Severs") -o.inputstyle = "reset" -o.write = function() - k.uci:delete_all("clash", "servers", function(s) return true end) - k.uci:commit("clash") - luci.http.redirect(luci.dispatcher.build_url("admin", "services", "clash", "servers")) -end - -o = b:option(Button,"Delete_Groups") -o.inputtitle = translate("Delete Groups") -o.inputstyle = "reset" -o.write = function() - k.uci:delete_all("clash", "groups", function(s) return true end) - k.uci:commit("clash") - luci.http.redirect(luci.dispatcher.build_url("admin", "services", "clash", "servers")) -end - - - -s = k:section(TypedSection, "servers", translate("Proxies")) -s.anonymous = true -s.addremove = true -s.sortable = true -s.template = "cbi/tblsection" -s.extedit = luci.dispatcher.build_url("admin/services/clash/servers-config/%s") -function s.create(...) - local sid = TypedSection.create(...) - if sid then - luci.http.redirect(s.extedit % sid) - return - end -end - - -o = s:option(DummyValue, "type", translate("Type")) -function o.cfgvalue(...) - return Value.cfgvalue(...) or translate("None") -end - -o = s:option(DummyValue, "name", translate("Alias")) -function o.cfgvalue(...) - return Value.cfgvalue(...) or translate("None") -end - -o = s:option(DummyValue, "server", translate("Server Address")) -function o.cfgvalue(...) - return Value.cfgvalue(...) or translate("None") -end - -o = s:option(DummyValue, "port", translate("Server Port")) -function o.cfgvalue(...) - return Value.cfgvalue(...) or translate("None") -end - -o = s:option(DummyValue, "server" ,translate("Latency")) -o.template="clash/ping" -o.width="10%" - -r = k:section(TypedSection, "groups", translate("Policy Groups")) -r.anonymous = true -r.addremove = true -r.sortable = true -r.template = "clash/tblsection" -r.extedit = luci.dispatcher.build_url("admin/services/clash/groups/%s") -function r.create(...) - local sid = TypedSection.create(...) - if sid then - luci.http.redirect(r.extedit % sid) - return - end -end - -o = r:option(DummyValue, "type", translate("Group Type")) -function o.cfgvalue(...) - return Value.cfgvalue(...) or translate("None") -end - - -o = r:option(DummyValue, "name", translate("Group Name")) -function o.cfgvalue(...) - return Value.cfgvalue(...) or translate("None") -end - - -k:append(Template("clash/list")) - -local apply = luci.http.formvalue("cbi.apply") -if apply then - uci:commit("clash") - SYS.call("sleep 1") - SYS.call("sh /usr/share/clash/proxy.sh >/dev/null 2>&1 &") -end - -return kr, k, m diff --git a/package/jsda/luci-app-clash/luasrc/model/cbi/clash/update.lua b/package/jsda/luci-app-clash/luasrc/model/cbi/clash/update.lua index 073ba727cc..04e97bc6af 100644 --- a/package/jsda/luci-app-clash/luasrc/model/cbi/clash/update.lua +++ b/package/jsda/luci-app-clash/luasrc/model/cbi/clash/update.lua @@ -6,11 +6,56 @@ local UTIL = require "luci.util" local uci = require("luci.model.uci").cursor() local m +font_green = [[]] +font_off = [[]] +bold_on = [[]] +bold_off = [[]] m = Map("clash") m:section(SimpleSection).template = "clash/update" m.pageaction = false +k = Map("clash") +s = k:section(TypedSection, "clash") +s.anonymous = true + +o = s:option(ListValue, "dcore", translate("Core Type")) +o.default = "clashcore" +o:value("1", translate("Clash")) +o:value("2", translate("Clashr")) +o.description = translate("Select core, clashr support ssr while clash does not.") + + +local cpu_model=SYS.exec("opkg status libc 2>/dev/null |grep 'Architecture' |awk -F ': ' '{print $2}' 2>/dev/null") +o = s:option(ListValue, "download_core", translate("Select Core")) +o.description = translate("CPU Model")..': '..font_green..bold_on..cpu_model..bold_off..font_off..' ' +o:value("linux-386") +o:value("linux-amd64", translate("linux-amd64(x86-64)")) +o:value("linux-armv5") +o:value("linux-armv6") +o:value("linux-armv7") +o:value("linux-armv8") +o:value("linux-mips-hardfloat") +o:value("linux-mips-softfloat") +o:value("linux-mips64") +o:value("linux-mips64le") +o:value("linux-mipsle-softfloat") +o:value("linux-mipsle-hardfloat") + + +o=s:option(Button,"down_core") +o.inputtitle = translate("Save & Apply") +o.title = translate("Save & Apply") +o.inputstyle = "reload" +o.write = function() + k.uci:commit("clash") +end + +o = s:option(Button,"download") +o.title = translate("Download") +o.template = "clash/core_check" + + +return m, k -return m diff --git a/package/jsda/luci-app-clash/luasrc/view/clash/clash_upload.htm b/package/jsda/luci-app-clash/luasrc/view/clash/clash_upload.htm index 485a6f1403..415b4eac7e 100644 --- a/package/jsda/luci-app-clash/luasrc/view/clash/clash_upload.htm +++ b/package/jsda/luci-app-clash/luasrc/view/clash/clash_upload.htm @@ -1,6 +1,6 @@ <%+cbi/valueheader%> - - + + <%+cbi/valuefooter%> - \ No newline at end of file + diff --git a/package/jsda/luci-app-clash/luasrc/view/clash/core_check.htm b/package/jsda/luci-app-clash/luasrc/view/clash/core_check.htm new file mode 100644 index 0000000000..c3874f20e3 --- /dev/null +++ b/package/jsda/luci-app-clash/luasrc/view/clash/core_check.htm @@ -0,0 +1,76 @@ +<%+cbi/valueheader%> +<%local fs=require"nixio.fs"%> + + +

+ + + + +<%+cbi/valuefooter%> diff --git a/package/jsda/luci-app-clash/luasrc/view/clash/list.htm b/package/jsda/luci-app-clash/luasrc/view/clash/list.htm index 3ab215a886..fae30417ed 100644 --- a/package/jsda/luci-app-clash/luasrc/view/clash/list.htm +++ b/package/jsda/luci-app-clash/luasrc/view/clash/list.htm @@ -12,7 +12,7 @@ local dsp = require "luci.dispatcher" domain: pings[i].getAttribute("hint") }, function(x, result) { - pings[result.index].innerHTML = (result.ping ? result.ping : "--") + " ms"; + pings[result.index].innerHTML = (result.ping ? ""+result.ping+" ms" : "<%:Error%>"); } ); @@ -22,7 +22,7 @@ local dsp = require "luci.dispatcher" domain: pings[i].getAttribute("hint") }, function(x, result) { - pings[result.index].innerHTML = (result.ping ? result.ping : "--") + " ms"; + pings[result.index].innerHTML = (result.ping ? ""+result.ping+" ms" : "<%:Error%>"); } ); } diff --git a/package/jsda/luci-app-clash/luasrc/view/clash/ping.htm b/package/jsda/luci-app-clash/luasrc/view/clash/ping.htm index 72e174fc96..7732413657 100644 --- a/package/jsda/luci-app-clash/luasrc/view/clash/ping.htm +++ b/package/jsda/luci-app-clash/luasrc/view/clash/ping.htm @@ -1,5 +1,5 @@ <%+cbi/valueheader%> --- ms +<%:Checking...%> <%+cbi/valuefooter%> \ No newline at end of file diff --git a/package/jsda/luci-app-clash/luasrc/view/clash/start_stop.htm b/package/jsda/luci-app-clash/luasrc/view/clash/start_stop.htm new file mode 100644 index 0000000000..d307d7fa6d --- /dev/null +++ b/package/jsda/luci-app-clash/luasrc/view/clash/start_stop.htm @@ -0,0 +1,23 @@ +<%+cbi/valueheader%> + + + + + + +<%+cbi/valuefooter%> diff --git a/package/jsda/luci-app-clash/luasrc/view/clash/status.htm b/package/jsda/luci-app-clash/luasrc/view/clash/status.htm index f375adaa71..bc38420776 100644 --- a/package/jsda/luci-app-clash/luasrc/view/clash/status.htm +++ b/package/jsda/luci-app-clash/luasrc/view/clash/status.htm @@ -1,8 +1,9 @@

+

Clash for OpenWRT

<%:Rule-based Custom Proxy Client%>

-

+
@@ -10,7 +11,6 @@ <%:Clash Client%><%:Collecting data...%> <%:Clash Mode%><%:Collecting data...%> <%:Clash Dashboard%> <%:Collecting data...%> - <%:Yac Dashboard%> <%:Collecting data...%>
@@ -60,7 +60,7 @@ let IP = { throw error; }), parseIPIpip: (ip, elID) => { - IP.get(`https://api.skk.moe/network/parseIp/ipip/${ip}`, 'json') + IP.get(`https://api.skk.moe/network/parseIp/ipip/v3/${ip}`, 'json') .then(resp => { let x = ''; for (let i of resp.data) { @@ -78,7 +78,7 @@ let IP = { document.getElementById('d-ip').innerHTML = `${data[0]} ${data[1]}`; }); }, - getIpifyIP: () => { + getIpifyIP: () => { IP.get(`https://api.ipify.org/?format=json&z=${random}`, 'json') .then(resp => { document.getElementById('ip-ipify').innerHTML = resp.data.ip; @@ -87,16 +87,16 @@ let IP = { .then(ip => { IP.parseIPIpip(ip, 'ip-ipify-ipip'); }) - }, + } - /* IPSB: (data) => { - document.getElementById('ip-gb').innerHTML = data.address; - if ( "${data.province}" == " " || "${data.city}" == " " ){ - document.getElementById('ip-geo').innerHTML = `${data.country} ${data.isp.name}` - }else{ - document.getElementById('ip-geo').innerHTML = `${data.country} ${data.province} ${data.city} ${data.isp.name}` - } - },*/ + /*getIpsbIP: (data) => { + document.getElementById('ip-ipify').innerHTML = data.address; + if ( "${data.province}" == " " || "${data.city}" == " " ){ + document.getElementById('ip-ipify-ipip').innerHTML = `${data.country} ${data.isp.name}` + }else{ + document.getElementById('ip-ipify-ipip').innerHTML = `${data.country} ${data.province} ${data.city} ${data.isp.name}` + } + },*/ } @@ -134,7 +134,7 @@ var HTTP = { var sbip = document.getElementsByTagName('HEAD').item(0); var sbipScript= document.createElement("script"); sbipScript.async = "async"; - sbipScript.src='https://api.skk.moe/network/parseIp/ipip'; + sbipScript.src='https://api.skk.moe/network/parseIp/ipip/v3'; sbip.appendChild( sbipScript); @@ -149,20 +149,24 @@ var HTTP = { var port = document.getElementById('_port'); var secret = document.getElementById('_secret'); var emode = document.getElementById('_emode'); - var version = document.getElementById('_version'); - var yac = document.getElementById('_yac'); var logo = document.getElementById('_logo'); XHR.poll(1, '<%=luci.dispatcher.build_url("admin", "services", "clash", "status")%>', null, function(x, status) { if ( x && x.status == 200 ) { web.innerHTML = status.web ? '<%:OPEN DASHBOARD%>' : '<%:NOT RUNNING%>'; - yac.innerHTML = status.web ? '<%:OPEN DASHBOARD%>' : '<%:NOT RUNNING%>';clash.innerHTML = status.clash ? '<%:RUNNING%> ' : '<%:NOT RUNNING%>'; clash.innerHTML = status.clash ? '<%:RUNNING%> ' : '<%:NOT RUNNING%>'; ip.innerHTML = status.localip ? ''+status.localip+' ' : '<%:NOT SET%>'; port.innerHTML = status.dash_port ? ''+status.dash_port+' ' : '<%:NOT SET%>'; secret.innerHTML = status.dash_pass ? ''+status.dash_pass+' ' : '<%:NOT SET%>'; - emode.innerHTML = status.e_mode ? ''+status.e_mode+' ' : '<%:NOT SET%>'; + emode.innerHTML = status.e_mode ? ''+status.e_mode+' ' : '<%:NOT SET%>'; IP.getIpifyIP(); IP.getIpipnetIP(); + + } + }); + + + XHR.poll(3, '<%=luci.dispatcher.build_url("admin", "services", "clash", "status")%>', null, function(x, status) { + if ( x && x.status == 200 ) { HTTP.checker('www.baidu.com', '_baidu'); HTTP.checker('www.google.com', '_google'); HTTP.checker('www.youtube.com', '_youtube'); @@ -170,9 +174,6 @@ var HTTP = { HTTP.checker('github.com', '_github'); HTTP.checker('s1.music.126.net/style', '_http-163'); - - - } }); @@ -185,15 +186,17 @@ var HTTP = { HTTP.checker('github.com', '_github'); HTTP.checker('s1.music.126.net/style', '_http-163'); - XHR.get('<%=luci.dispatcher.build_url("admin", "services", "clash", "status")%>', null, function(x, status) { - if ( x && x.status == 200 ) { - version.innerHTML = status.current_version ? '<%:Current Version%>'+' : v'+status.current_version+' ' : 'NOT SET'; - + + + var rtlog = document.getElementById('_realtimelog'); + XHR.poll(1, '<%=luci.dispatcher.build_url("admin", "services", "clash", "readlog")%>', status.readlog, function(x, status) { + if ( x && x.status == 200 ) { + if ( status.readlog != "\n" || status.readlog != "" ) { + rtlog.innerHTML = ''+status.readlog+''; } + } }); - - //]]> diff --git a/package/jsda/luci-app-clash/luasrc/view/clash/status_log.htm b/package/jsda/luci-app-clash/luasrc/view/clash/status_log.htm new file mode 100644 index 0000000000..f0a6d3c1ea --- /dev/null +++ b/package/jsda/luci-app-clash/luasrc/view/clash/status_log.htm @@ -0,0 +1,26 @@ +<%+cbi/valueheader%> + + + + +<%+cbi/valuefooter%> diff --git a/package/jsda/luci-app-clash/luasrc/view/clash/tblsection.htm b/package/jsda/luci-app-clash/luasrc/view/clash/tblsection.htm deleted file mode 100644 index 437a158ef9..0000000000 --- a/package/jsda/luci-app-clash/luasrc/view/clash/tblsection.htm +++ /dev/null @@ -1,142 +0,0 @@ -<%- -local rowcnt = 1 -function rowstyle() - rowcnt = rowcnt + 1 - return (rowcnt % 2) + 1 -end - -function width(o) - if o.width then - if type(o.width) == 'number' then - return ' style="width:%dpx"' % o.width - end - return ' style="width:%s"' % o.width - end - return '' -end --%> - - -
- <% if self.title and #self.title > 0 then -%> - <%=self.title%> - <%- end %> - -
<%=self.description%>
-
- <%- local count = 0 -%> - - - - - <%- if not self.anonymous then -%> - <%- if self.sectionhead then -%> - - <%- else -%> - - <%- end -%> - <%- count = count +1; end -%> - <%- for i, k in pairs(self.children) do if not k.optional then -%> - - <%- count = count + 1; end; end; if self.sortable then -%> - - <%- count = count + 1; end; if self.extedit or self.addremove then -%> - - <%- count = count + 1; end -%> - - - - - <%- if not self.anonymous then -%> - <%- if self.sectiondesc then -%> - - <%- else -%> - - <%- end -%> - <%- end -%> - <%- for i, k in pairs(self.children) do if not k.optional then -%> - - <%- end; end; if self.sortable then -%> - - <%- end; if self.extedit or self.addremove then -%> - - <%- end -%> - - <%- local isempty = true - for i, k in ipairs(self:cfgsections()) do - section = k - isempty = false - scope = { valueheader = "cbi/cell_valueheader", valuefooter = "cbi/cell_valuefooter" } - -%> - - <% if not self.anonymous then -%> - - <%- end %> - - - <%- - for k, node in ipairs(self.children) do - if not node.optional then - node:render(section, scope or {}) - end - end - -%> - - - - <%- if self.extedit or self.addremove then -%> - - <%- end -%> - - <%- end -%> - - <%- if isempty then -%> - - - - <%- end -%> -
<%=self.sectionhead%> > - <%- if k.titleref then -%><%- end -%> - <%-=k.title-%> - <%- if k.titleref then -%><%- end -%> -  
<%=self.sectiondesc%>><%=k.description%>

<%=(type(self.sectiontitle) == "function") and self:sectiontitle(section) or k%>

- <%- if self.extedit then -%> - onclick="location.href='<%=self.extedit:format(section)%>'" - <%- elseif type(self.extedit) == "function" then - %> onclick="location.href='<%=self:extedit(section)%>'" - <%- end - %> alt="<%:Edit%>" title="<%:Edit%>" /> - <%- end; if self.addremove then %> - - <%- end -%> -

<%:This section contains no values yet%>
- - <% if self.error then %> -
-
    <% for _, c in pairs(self.error) do for _, e in ipairs(c) do -%> -
  • <%=pcdata(e):gsub("\n","
    ")%>
  • - <%- end end %>
-
- <% end %> - - <%- if self.addremove then -%> - <% if self.template_addremove then include(self.template_addremove) else -%> -
- <% if self.anonymous then %> - - <% else %> - <% if self.invalid_cts then -%>
<% end %> - - - <% if self.invalid_cts then -%> -
<%:Invalid%>
- <%- end %> - <% end %> -
- <%- end %> - <%- end -%> -
-
- diff --git a/package/jsda/luci-app-clash/luasrc/view/clash/tvalue.htm b/package/jsda/luci-app-clash/luasrc/view/clash/tvalue.htm index dc3c4194d7..9de3321587 100644 --- a/package/jsda/luci-app-clash/luasrc/view/clash/tvalue.htm +++ b/package/jsda/luci-app-clash/luasrc/view/clash/tvalue.htm @@ -1,6 +1,6 @@ <%+cbi/valueheader%> - <%+cbi/valuefooter%> - \ No newline at end of file + diff --git a/package/jsda/luci-app-clash/luasrc/view/clash/update.htm b/package/jsda/luci-app-clash/luasrc/view/clash/update.htm index 86e7d10b14..16530fafdf 100644 --- a/package/jsda/luci-app-clash/luasrc/view/clash/update.htm +++ b/package/jsda/luci-app-clash/luasrc/view/clash/update.htm @@ -13,6 +13,9 @@ clash <%:Collecting data...%> + + clashr <%:Collecting data...%> + luci-app-clash <%:Collecting data...%> @@ -29,27 +32,40 @@ var version = document.getElementById('_version'); var core = document.getElementById('_core'); + var corer = document.getElementById('_corer'); var version_butt = document.getElementById('_versionbutt'); var core_butt = document.getElementById('_corebutt'); + var corer_butt = document.getElementById('_corerbutt'); - XHR.get('<%=luci.dispatcher.build_url("admin", "services", "clash", "status")%>', null, function(x, status) { + XHR.poll(1, '<%=luci.dispatcher.build_url("admin", "services", "clash", "status")%>', null, function(x, status) { if ( x && x.status == 200 ) { - core_butt.innerHTML = status.current_version ? '
' : ''; - version_butt.innerHTML = status.current_version ? '
' : ''; + if(status.clash_core==0){ - core.innerHTML = status.clash_core ? '<%:Not Installed%> ' : '<%:Checking...%>'; + core.innerHTML = status.clash_core ? '<%:Not Installed%> ' : '<%:Checking...%>'; + }else{ + core.innerHTML = status.clash_core ? ''+status.clash_core+' ' : '<%:Checking...%>'; } - else - { - core.innerHTML = status.clash_core ? ''+status.clash_core+' ' : '<%:Checking...%>'; - } + if(status.clashr_core==0){ + corer.innerHTML = status.clashr_core ? '<%:Not Installed%> ' : '<%:Checking...%>'; + }else{ + corer.innerHTML = status.clashr_core ? ''+status.clashr_core+' ' : '<%:Checking...%>'; + } version.innerHTML = status.current_version ? ''+status.current_version+' ' : '<%:Checking...%>'; } }); - + XHR.get('<%=luci.dispatcher.build_url("admin", "services", "clash", "status")%>', null, function(x, status) { + if ( x && x.status == 200 ) { + version_butt.innerHTML = status.current_version ? '
' : ''; + core_butt.innerHTML = status.current_version ? '
' : ''; + corer_butt.innerHTML = status.current_version ? '
' : ''; + + + + } + }); function version_check(btn) { @@ -82,7 +98,7 @@ function core_check(btn) XHR.get('<%=luci.dispatcher.build_url("admin", "services", "clash", "check_status")%>', null, function(x, status) { if(status.new_core_version > status.clash_core) { - core_butt.innerHTML ='
' + '   ' + '
'; + core_butt.innerHTML ='
<%:New Version :%>'+status.new_core_version+'
'; } else if(status.new_core_version==0) @@ -98,25 +114,35 @@ function core_check(btn) }); } +function clashr_core_check(btn) +{ + btn.disabled = true; + btn.value = '<%:Checking...%>'; + XHR.get('<%=luci.dispatcher.build_url("admin", "services", "clash", "check_status")%>', null, function(x, status) { + if(status.new_clashr_core_version > status.clashr_core) + { + corer_butt.innerHTML ='
<%:New Version :%>'+status.new_clashr_core_version+'
'; + } + + else if(status.new_clashr_core_version==0) + { + corer_butt.innerHTML ='
'; + + } + else if(status.clashr_core >= status.new_clashr_core_version) + { + corer_butt.innerHTML ='
'; + } + return false; + }); +} function download_update(btn) { XHR.get('<%=luci.dispatcher.build_url("admin", "services", "clash", "check_status")%>', null, function(x, status) { btn.disabled = true; btn.value = '<%:Download%>'; - url='https://github.com/frainzy1477/luci-app-clash/releases/download/v'+status.new_version+'/luci-app-clash_'+status.new_version+'-2_all.ipk'; - window.open(url); - btn.disabled = false; - return false; - }); -} - -function download_core(btn) -{ -XHR.get('<%=luci.dispatcher.build_url("admin", "services", "clash", "check_status")%>', null, function(x, status) { - btn.disabled = true; - btn.value = '<%:Download%>'; - url='https://github.com/frainzy1477/clash/releases/tag/v'+status.new_core_version+''; + url='https://github.com/frainzy1477/luci-app-clash/releases/download/v'+status.new_version+'/luci-app-clash_'+status.new_version+'_all.ipk'; window.open(url); btn.disabled = false; return false; @@ -144,6 +170,18 @@ function core_return(btn) } +function clashr_core_return(btn) +{ + XHR.get('<%=luci.dispatcher.build_url("admin", "services", "clash", "status")%>', status.clashr_core, function(x, status) { + btn.disabled = true; + btn.value = '<%:Return Check%>'; + corer_butt.innerHTML = '
'; + }); + +} + + + //]]> @@ -151,3 +189,5 @@ function core_return(btn) + + diff --git a/package/jsda/luci-app-clash/po/zh-cn/clash.po b/package/jsda/luci-app-clash/po/zh-cn/clash.po index 1ba0942e31..8602f8f929 100644 --- a/package/jsda/luci-app-clash/po/zh-cn/clash.po +++ b/package/jsda/luci-app-clash/po/zh-cn/clash.po @@ -1,3 +1,51 @@ +msgid "Do not edit Policy Group with Group Name Proxy or proxy and or 🔑Proxy and it's other policy group" +msgstr "不要编辑策略组别名Proxy或proxy或🔑proxy和它的其他策略组" + +msgid "Enable Lan DNS" +msgstr "启用局域网DNS" + +msgid "Enabling will set custom DNS Servers for Lan" +msgstr "启用将为自定义局域网DNS服务器" + +msgid "Lan DNS servers" +msgstr "局域网DNS服务器" + +msgid "Set custom DNS Servers for Lan" +msgstr "设置自定义局域网DNS服务器" + +msgid "Cache DNS" +msgstr "缓存的DNS" + +msgid "Fake IP Range" +msgstr "假IP范围" + +msgid "Ip range will be added to iptables" +msgstr "Ip范围将添加到iptables" + +msgid "New Version :" +msgstr "新版本:" + +msgid "Core Type" +msgstr "内核类型" + +msgid "Select Core" +msgstr "选择内核" + +msgid "Obfs" +msgstr "混淆" + +msgid "Obfs Param" +msgstr "混淆参数" + +msgid "Protocol" +msgstr "协议" + +msgid "Protocol Param" +msgstr "协议参数" + +msgid "Servers" +msgstr "服务器" + msgid "Custom List DNS" msgstr "自定义列表DNS" @@ -58,8 +106,8 @@ msgstr "启用" msgid "Subcription Type" msgstr "服务器订阅类型" -msgid "Select Subcription Type, enter only your subcription url without https://tgbot.lbyczf.com/*?" -msgstr "选择服务器订阅类型,输入服务器订阅不要带https://tgbot.lbyczf.com/*?" +msgid "Select Subcription Type" +msgstr "选择服务器订阅类型" msgid "disabled" msgstr "停用" @@ -136,8 +184,8 @@ msgstr "检查" msgid "DNS Forwarding" msgstr "DNS转发" -msgid "Set custom DNS forwarder in DHCP and DNS Settings" -msgstr "在DHCP和DNS设置自定义DNS转发" +msgid "Set custom DNS forwarder in DHCP and DNS Settings and forward all dns traffic to clash" +msgstr "在DHCP和DNS设置自定义DNS转发,转发所有dns流量到clash" msgid "Proxy Lan IP" msgstr "走代理的局域网IP" @@ -284,7 +332,7 @@ msgid "Upload Config" msgstr "上传配置" msgid "NB: Only upload file with name config.yml or config.yaml" -msgstr "注意:仅上载名为config.yml或config.yaml的文件" +msgstr "注意:上载config.yml或config.yaml的文件" msgid "Subcription Url" msgstr "订阅URL" @@ -304,17 +352,21 @@ msgstr "使用中的配置" msgid "Server Subscription Address" msgstr "服务器订阅地址" +msgid "Clash Subscription Address" +msgstr "Clash订阅地址" + +msgid "V2/SSR Subscription Address, Only input your subscription address without any api conversion url" +msgstr "V2/SSR订阅地址,输入订阅地址不要添加api转换地址" + msgid "Changes to config file must be made from source" msgstr "必须从源文件更改配置文件" -msgid "Servers" -msgstr "自定义节点" +msgid "Import Config" +msgstr "导入配置" msgid "Enable to create custom config.yaml. Note that this will overide any configuration you already have" msgstr "启用以创建自定义config.yaml。注意,这会覆盖/etc/clash/config.yaml" -msgid "Create Config" -msgstr "创建配置" msgid "host" msgstr "主机名" @@ -331,9 +383,27 @@ msgstr "执行此操作以生成新配置" msgid "Delete Severs" msgstr "清空节点" +msgid "Load Config" +msgstr "读取配置" + +msgid "Error" +msgstr "错误" + +msgid "Load Groups" +msgstr "读取代理组" + msgid "Load Servers" msgstr "读取节点" +msgid "Load From" +msgstr "从读取" + +msgid "Enable to read servers" +msgstr "启用读取节点" + +msgid "Enable to read policy group" +msgstr "启用读取代理组" + msgid "Type" msgstr "节点类型" @@ -344,7 +414,7 @@ msgid "Server Address" msgstr "服务器地址" msgid "Server Port" -msgstr "服务器端口" +msgstr "端口" msgid "Edit Server" msgstr "编辑服务器配置" @@ -407,7 +477,7 @@ msgid "Select Configuration type" msgstr "选择配置类型”" msgid "Create Config" -msgstr "一键生成配置文件" +msgstr "创建配置" msgid "Create Config By One-Click Only Need Proxys" msgstr "一键生成配置文件功能只需要配置服务器节点信息" @@ -499,5 +569,38 @@ msgstr "从哪读取自定义节点" msgid "Select from which configuration custom server should be loaded from" msgstr "选择从哪个配置文件读取自定义节点" -msgid "Servers" -msgstr "服务器" +msgid "All Servers" +msgstr "所有节点" + +msgid "Core" +msgstr "内核" + +msgid "Select core, clashr support ssr while clash does not." +msgstr "选择内核clash不支持ssr, clashr支持ssr" + +msgid "Downloading..." +msgstr "正在下载。。。" + +msgid "Remove Lan DNS" +msgstr "删除局域网DNS" + +msgid "Remove Lan custom DNS Servers when client is disabled" +msgstr "禁用客户端时删除局域网自定义DNS服务器" + +msgid "Enable ipv6" +msgstr "启用ipv6" + +msgid "Allow ipv6 traffic through clash" +msgstr "允许ipv6流量通过clash" + +msgid "NB: Upload GEOIP Database file Country.mmdb" +msgstr "注意:上传GEOIP数据库文件Country.mmdb" + +msgid "Download logs" +msgstr "下载日志" + +msgid "Enable Create" +msgstr "启用创建" + +msgid "Enable to create configuration" +msgstr "启用以创建配置" diff --git a/package/jsda/luci-app-clash/root/etc/config/clash b/package/jsda/luci-app-clash/root/etc/config/clash index d4dde5d853..dfd7b291a2 100644 --- a/package/jsda/luci-app-clash/root/etc/config/clash +++ b/package/jsda/luci-app-clash/root/etc/config/clash @@ -2,28 +2,29 @@ config clash 'config' option redir_port '7892' option http_port '7890' option socks_port '7891' - option mode '0' + option mode '1' option enable '0' - option dash_port '9191' + option dash_port '9090' option dash_pass '123456' option auto_update '0' option auto_update_time '0' option level 'info' option proxylan '0' + option core '1' option allow_lan 'true' option bind_addr '*' option rejectlan '0' - option dnsforwader '0' + option dnsforwader '1' option subcri 'clash' option cus_list '1' option custom_dns '114.114.114.114' - option v2ray 'https://tgbot.lbyczf.com/v2rayn2clash?url=' - option surge 'https://tgbot.lbyczf.com/surge2clash?url=' option cusrule '0' - option cus_servers '1' option config_type 'sub' - option loadservers 'sub' - + option loadfrom 'sub' + option loadservers '1' + option loadgroups '1' + option fake_ip_range '198.18.0.0/16' + option dnscache '0' config groups option old_name '❌AdBlock' @@ -45,25 +46,30 @@ config groups option old_name_cfg '📺GlobalTV' option type 'select' option name '📺GlobalTV' - list other_group '🔑Proxy' - list other_group 'DIRECT' + list other_group 'ALL' config groups option type 'select' option name '🔑Proxy' + list other_group 'ALL' list other_group '⚙️LoadBalance' list other_group '✈️UrlTest' config groups + option name '✈️UrlTest' option old_name '✈️UrlTest' option old_name_cfg '✈️UrlTest' - option test_url 'http://www.gstatic.com/generate_204' option type 'url-test' + option test_url 'http://www.gstatic.com/generate_204' option test_interval '600' - option name '✈️UrlTest' + list other_group 'ALL' config groups + option name '⚙️LoadBalance' + option old_name '⚙️LoadBalance' + option old_name_cfg '⚙️LoadBalance' option type 'load-balance' option test_url 'http://www.gstatic.com/generate_204' - option test_interval '300' - option name '⚙️LoadBalance' + option test_interval '600' + list other_group 'ALL' + diff --git a/package/jsda/luci-app-clash/root/etc/init.d/clash b/package/jsda/luci-app-clash/root/etc/init.d/clash index e0150ebddc..89de158b79 100755 --- a/package/jsda/luci-app-clash/root/etc/init.d/clash +++ b/package/jsda/luci-app-clash/root/etc/init.d/clash @@ -5,6 +5,7 @@ STOP=15 CLASH="/etc/clash/clash" +CLASHR="/usr/bin/clash" CLASH_CONFIG="/etc/clash" CRON_FILE="/etc/crontabs/root" CONFIG_YAML="/etc/clash/config.yaml" @@ -13,8 +14,11 @@ CONFIG_YAML_OLD="/etc/clash/config.yml" CONFIG_YAML_SUB="/usr/share/clash/config/sub/config.yaml" CONFIG_YAML_UPL="/usr/share/clash/config/upload/config.yaml" CONFIG_YAML_CUS="/usr/share/clash/config/custom/config.yaml" - - +CUSLIST="/tmp/dnsmasq.d/custom_list.conf" +CUSLITT="/tmp/dnsmasq.clash" +CUSLISTV="/var/dnsmasq.d/custom_list.conf" +CUSLITTV="/var/dnsmasq.clash" +REAL_LOG="/usr/share/clash/clash_real.txt" revert_dns() { #=========================================================================================================================== @@ -24,30 +28,37 @@ revert_dns() { fi uci set dhcp.@dnsmasq[0].resolvfile=/tmp/resolv.conf.auto uci set dhcp.@dnsmasq[0].noresolv=0 + uci delete dhcp.@dnsmasq[0].cachesize uci commit dhcp + rm -rf $CUSLIST $CUSLITT $CUSLISTV $CUSLITTV 2>/dev/null #=========================================================================================================================== } add_cron(){ config_type=$(uci get clash.config.config_type 2>/dev/null) -#=========================================================================================================================== - sed -i '/clash.log/d' $CRON_FILE - echo '0 0 * * 0 echo "" > /tmp/clash.log' >> $CRON_FILE - if [ $config_type == "sub" ];then +#=========================================================================================================================== + + + sed -i '/clash.txt/d' $CRON_FILE + echo '0 0 * * 0 echo "" >> /tmp/clash.txt' >> $CRON_FILE + [ -n "$(grep -w "/usr/share/clash/clash.sh" $CRON_FILE)" ] && sed -i '/\/usr\/share\/clash\/clash.sh/d' $CRON_FILE + [ -n "$(grep -w "/usr/share/clash/v2ssr.sh" $CRON_FILE)" ] && sed -i '/\/usr\/share\/clash\/v2ssr.sh/d' $CRON_FILE auto=$(uci get clash.config.auto_update 2>/dev/null) - if [ $auto -eq 1 ]; then + if [ "${auto}" -eq 1 ]; then [ -z "$(grep -w "/usr/share/clash/clash.sh" $CRON_FILE)" ] && echo "0 $(uci get clash.config.auto_update_time 2>/dev/null) * * * /usr/share/clash/clash.sh" >> $CRON_FILE + [ -z "$(grep -w "/usr/share/clash/v2ssr.sh" $CRON_FILE)" ] && echo "0 $(uci get clash.config.auto_update_time 2>/dev/null) * * * /usr/share/clash/v2ssr.sh" >> $CRON_FILE fi - fi + crontab $CRON_FILE #=========================================================================================================================== } del_cron(){ #=========================================================================================================================== + sed -i '/clash/d' $CRON_FILE - sed -i '/clash.log/d' $CRON_FILE + sed -i '/clash.txt/d' $CRON_FILE /etc/init.d/cron restart #=========================================================================================================================== } @@ -58,17 +69,23 @@ select_config(){ config_type=$(uci get clash.config.config_type 2>/dev/null) + if [ "${lang}" == "en" ] || [ $lang == "auto" ];then + echo "Checking Config file..." >$REAL_LOG + elif [ "${lang}" == "zh_cn" ];then + echo "正在检查配置文件。。。" >$REAL_LOG + fi + sleep 1 if [ $config_type == "sub" ];then -if [ -f $CONFIG_YAML_SUB ] && [ "$(ls -l $CONFIG_YAML_SUB|awk '{print int($5/1024)}')" -ne 0 ];then - cp $CONFIG_YAML_SUB $CONFIG_YAML +if [ -f $CONFIG_YAML_SUB ] && [ "$(ls -l $CONFIG_YAML_SUB|awk '{print int($5)}')" -ne 0 ];then + cp $CONFIG_YAML_SUB $CONFIG_YAML 2>/dev/null fi elif [ $config_type == "upl" ];then -if [ -f $CONFIG_YAML_UPL ] && [ "$(ls -l $CONFIG_YAML_UPL|awk '{print int($5/1024)}')" -ne 0 ];then - cp $CONFIG_YAML_UPL $CONFIG_YAML +if [ -f $CONFIG_YAML_UPL ] && [ "$(ls -l $CONFIG_YAML_UPL|awk '{print int($5)}')" -ne 0 ];then + cp $CONFIG_YAML_UPL $CONFIG_YAML 2>/dev/null fi elif [ $config_type == "cus" ];then -if [ -f $CONFIG_YAML_CUS ] && [ "$(ls -l $CONFIG_YAML_CUS|awk '{print int($5/1024)}')" -ne 0 ];then - cp $CONFIG_YAML_CUS $CONFIG_YAML +if [ -f $CONFIG_YAML_CUS ] && [ "$(ls -l $CONFIG_YAML_CUS|awk '{print int($5)}')" -ne 0 ];then + cp $CONFIG_YAML_CUS $CONFIG_YAML 2>/dev/null fi fi @@ -78,8 +95,8 @@ fi yml_change() { -#=========================================================================================================================== - sh /usr/share/clash/yum_change.sh >/dev/null 2>&1 +#=========================================================================================================================== + sh /usr/share/clash/yum_change.sh 2>/dev/null #=========================================================================================================================== } @@ -89,14 +106,22 @@ yml_dns_change(){ #=========================================================================================================================== dns_port=$(grep "^ \{0,\}listen:" $CONFIG_YAML |awk -F ':' '{print $3}' 2>/dev/null) dnsforwader=$(uci get clash.config.dnsforwader 2>/dev/null) + dnscache=$(egrep '^ {0,}enhanced-mode' /etc/clash/config.yaml |grep enhanced-mode: |awk -F ': ' '{print $2}') - if [ $dns_port -eq 53 ]; then + if [ "${dns_port}" -eq 53 ]; then sed -i 's/0.0.0.0:53/0.0.0.0:5300/g' $CONFIG_YAML fi - if [ $dnsforwader -ne 0 ]; then - if [ $dns_port -eq 53 ]; then + if [ "${dnsforwader}" -ne 0 ]; then + if [ "${dns_port}" -eq 53 ]; then + + if [ "${lang}" == "en" ] || [ $lang == "auto" ];then + echo "Setting dns forwarder" >$REAL_LOG + elif [ "${lang}" == "zh_cn" ];then + echo "设置dns转发器" >$REAL_LOG + fi + dns_serve1=$(uci get dhcp.@dnsmasq[0].server 2>/dev/null) if [ $dns_serve1 ]; then uci del dhcp.@dnsmasq[-1].server @@ -104,8 +129,17 @@ yml_dns_change(){ uci add_list dhcp.@dnsmasq[0].server=127.0.0.1#5300 >/dev/null 2>&1 uci delete dhcp.@dnsmasq[0].resolvfile uci set dhcp.@dnsmasq[0].noresolv=1 - uci commit dhcp + if [ "${dnscache}" == "fake-ip" ];then + if [ "${lang}" == "en" ] || [ $lang == "auto" ];then + echo "Disabling dns cache" >$REAL_LOG + elif [ "${lang}" == "zh_cn" ];then + echo "禁用dns缓存" >$REAL_LOG + fi + uci set dhcp.@dnsmasq[0].cachesize=0 + uci commit dhcp + fi else + echo "Setting dns forwarder" >$REAL_LOG dns_serve1=$(uci get dhcp.@dnsmasq[0].server 2>/dev/null) if [ $dns_serve1 ]; then uci del dhcp.@dnsmasq[-1].server @@ -113,8 +147,31 @@ yml_dns_change(){ uci add_list dhcp.@dnsmasq[0].server=127.0.0.1#$dns_port >/dev/null 2>&1 uci delete dhcp.@dnsmasq[0].resolvfile uci set dhcp.@dnsmasq[0].noresolv=1 - uci commit dhcp + + if [ "${dnscache}" == "fake-ip" ];then + if [ "${lang}" == "en" ] || [ $lang == "auto" ];then + echo "Disabling dns cache" >$REAL_LOG + elif [ "${lang}" == "zh_cn" ];then + echo "禁用dns缓存" >$REAL_LOG + fi + sleep 1 + uci set dhcp.@dnsmasq[0].cachesize=0 + uci commit dhcp + fi + + fi + elif [ "${dnsforwader}" -eq 0 ]; then + if [ "${dnscache}" == "fake-ip" ];then + if [ "${lang}" == "en" ] || [ $lang == "auto" ];then + echo "Disabling dns cache" >$REAL_LOG + elif [ "${lang}" == "zh_cn" ];then + echo "禁用dns缓存" >$REAL_LOG + fi + sleep 1 + uci set dhcp.@dnsmasq[0].cachesize=0 + uci commit dhcp + fi fi #=========================================================================================================================== } @@ -123,6 +180,8 @@ yml_dns_change(){ access() { #=========================================================================================================================== + + lan_ac_ips=$(uci get clash.config.lan_ac_ips) ipset -! -R <<-EOF create clash_lan_ac hash:net @@ -134,6 +193,7 @@ EOF reject_access() { #=========================================================================================================================== + lan_ac=$(uci get clash.config.lan_ips) ipset -! -R <<-EOF create clash_lan hash:net @@ -145,13 +205,16 @@ EOF rules(){ #=========================================================================================================================== + + lan_ip=$(uci get network.lan.ipaddr 2>/dev/null) lanac=$(uci get clash.config.rejectlan 2>/dev/null) lan=$(uci get clash.config.proxylan 2>/dev/null) dns_port=$(grep listen: $CONFIG_YAML |awk -F ':' '{print $3}' |tr -cd "[0-9]") redir_port=$(uci get clash.config.redir_port 2>/dev/null) - - + fake_ip_range=$(uci get clash.config.fake_ip_range 2>/dev/null) + ipv6=$(uci get clash.config.ipv6 2>/dev/null) + iptables -t nat -N clash_tcp iptables -t nat -N clash_udp iptables -t nat -A clash_tcp -d 0.0.0.0/8 -j RETURN @@ -163,27 +226,49 @@ rules(){ iptables -t nat -A clash_tcp -d 224.0.0.0/4 -j RETURN iptables -t nat -A clash_tcp -d 240.0.0.0/4 -j RETURN iptables -t nat -A clash_tcp -d $lan_ip -j RETURN + + iptables -t nat -N clash_dns + iptables -t nat -A PREROUTING -p tcp --dport 53 -d 198.19.0.0/24 -jclash_dns + iptables -t nat -A PREROUTING -p udp --dport 53 -d 198.19.0.0/24 -j clash_dns + iptables -t nat -A clash_dns -p udp --dport 53 -d 198.19.0.0/24 -j DNAT --to-destination $lan_ip:"${dns_port}" + iptables -t nat -A clash_dns -p tcp --dport 53 -d 198.19.0.0/24 -j DNAT --to-destination $lan_ip:"${dns_port}" iptables -t nat -A clash_tcp -p tcp --dport 22 -j ACCEPT - iptables -t nat -A clash_udp -p udp -j REDIRECT --to-ports $dns_port + iptables -t nat -A clash_udp -p udp -j REDIRECT --to-ports "${dns_port}" - if [ $lanac -eq 1 ]; then + if [ "${lanac}" -eq 1 ]; then iptables -t nat -A clash_tcp -p tcp -m set --match-set clash_lan src -j RETURN - iptables -t nat -A clash_tcp -p tcp -j REDIRECT --to-ports $redir_port - elif [ $lan -eq 1 ]; then - iptables -t nat -A clash_tcp -p tcp -m set --match-set clash_lan_ac src -j REDIRECT --to-ports $redir_port + iptables -t nat -A clash_tcp -p tcp -j REDIRECT --to-ports "${redir_port}" + elif [ "${lan}" -eq 1 ]; then + iptables -t nat -A clash_tcp -p tcp -m set --match-set clash_lan_ac src -j REDIRECT --to-ports "${redir_port}" else - iptables -t nat -A clash_tcp -p tcp -j REDIRECT --to-ports $redir_port + iptables -t nat -A clash_tcp -p tcp -j REDIRECT --to-ports "${redir_port}" + + + fi + fake_ip_range=$(egrep '^ {0,}fake-ip-range' /etc/clash/config.yaml |grep fake-ip-range: |awk -F ': ' '{print $2}') + if [ ! -z "${fake_ip_range}" ];then + iptables -t nat -A OUTPUT -p tcp -d $fake_ip_range -j REDIRECT --to-ports "${redir_port}" + else + iptables -t nat -A OUTPUT -p tcp -d 198.18.0.0/16 -j REDIRECT --to-ports "${redir_port}" fi iptables -t nat -I PREROUTING 1 -p udp --dport 53 -j clash_udp - iptables -t nat -A PREROUTING -p tcp -j clash_tcp - - iptables -t nat -A OUTPUT -p tcp -d 198.18.0.1/24 -j REDIRECT --to-ports $redir_port - + if [ "$(brctl show | grep -o "br-lan" | wc -l)" -gt 0 ];then + iptables -t nat -A PREROUTING --in-interface br-lan -p tcp -j clash_tcp + iptables -t nat -A PREROUTING --in-interface br-lan -p udp -j clash_tcp + elif [ "$(brctl show | grep -o "br-lan" | wc -l)" -lt 1 ];then + iptables -t nat -A PREROUTING -p tcp -j clash_tcp + iptables -t nat -A PREROUTING -p udp -j clash_tcp + fi + if [ -f /usr/sbin/ip6tables ] && [ "${ipv6}" -eq 1 ]; then + ip6tables -t nat -N clash_ipv6 + ip6tables -t nat -A clash_ipv6 -p tcp -j REDIRECT --to-ports "${redir_port}" + ip6tables -t nat -A PREROUTING --in-interface br-lan -p tcp -j clash_ipv6 + fi #=========================================================================================================================== } @@ -192,10 +277,10 @@ yml_yaml(){ #=========================================================================================================================== if [ -f $CONFIG_YAML_OLD ] && [ ! -f $CONFIG_YAML ];then - mv $CONFIG_YAML_OLD $CONFIG_YAML + mv $CONFIG_YAML_OLD $CONFIG_YAML 2>/dev/null -elif [ -f $CONFIG_YAML_OLD ] && [ -f $CONFIG_YAML ] && [ "$(ls -l $CONFIG_YAML_OLD|awk '{print int($5/1024)}')" -ne 0 ];then - mv $CONFIG_YAML_OLD $CONFIG_YAML +elif [ -f $CONFIG_YAML_OLD ] && [ -f $CONFIG_YAML ] && [ "$(ls -l $CONFIG_YAML_OLD|awk '{print int($5)}')" -ne 0 ];then + mv $CONFIG_YAML_OLD $CONFIG_YAML 2>/dev/null fi #=========================================================================================================================== } @@ -206,96 +291,276 @@ yml_sub(){ #=========================================================================================================================== subscribe_url=$(uci get clash.config.subscribe_url 2>/dev/null) config_type=$(uci get clash.config.config_type 2>/dev/null) -if [ $config_type == "sub" ];then -if [ ! -f $CONFIG_YAML_SUB ] && [ $subscribe_url ];then - rm -rf /tmp/clash.log - sh /usr/share/clash/clash.sh >>/tmp/clash.log -elif [ -f $CONFIG_YAML_SUB ] && [ "$(ls -l $CONFIG_YAML_SUB | awk '{print int($5/1024)}')" -eq 0 ] && [ $subscribe_url ];then - rm -rf /tmp/clash.log - sh /usr/share/clash/clash.sh >>/tmp/clash.log +subscri=$(uci get clash.config.subcri 2>/dev/null) +subscribe_url_clash=$(uci get clash.config.subscribe_url_clash 2>/dev/null) + +if [ "${config_type}" == "sub" ];then + +if [ "${subscri}" == "clash" ];then +if [ ! -f $CONFIG_YAML_SUB ] && [ ! -z "${subscribe_url_clash}" ];then + sh /usr/share/clash/clash.sh >>/tmp/clash.txt +elif [[ -f $CONFIG_YAML_SUB ] && [ "$(ls -l $CONFIG_YAML_SUB | awk '{print int($5)}')" -eq 0 ] && [ ! -z "${subscribe_url_clash}" ]] && [[ -f $CONFIG_YAML_OLD ] && [ "$(ls -l $CONFIG_YAML_OLD | awk '{print int($5/1024)}')" -eq 0 ]];then + sh /usr/share/clash/clash.sh >>/tmp/clash.txt +elif [ -f $CONFIG_YAML_SUB ] && [ "$(ls -l $CONFIG_YAML_SUB | awk '{print int($5)}')" -eq 0 ] && [ ! -z "${subscribe_url_clash}" ] && [ ! -f $CONFIG_YAML_OLD ];then + sh /usr/share/clash/clash.sh >>/tmp/clash.txt + fi +fi + + +if [ "${subscri}" == "v2ssr2clash" ];then + +if [ ! -f $CONFIG_YAML_CUS ] && [ ! -z "${subscribe_url}" ];then + sh /usr/share/clash/v2ssr.sh >>/tmp/clash.txt +elif [[ -f $CONFIG_YAML_CUS ] && [ "$(ls -l $CONFIG_YAML_CUS | awk '{print int($5)}')" -eq 0 ] && [ ! -z "${subscribe_url}" ]] && [[ -f $CONFIG_YAML_OLD ] && [ "$(ls -l $CONFIG_YAML_OLD | awk '{print int($5/1024)}')" -eq 0 ]] ;then + sh /usr/share/clash/v2ssr.sh >>/tmp/clash.txt +elif [ -f $CONFIG_YAML_CUS ] && [ "$(ls -l $CONFIG_YAML_CUS | awk '{print int($5)}')" -eq 0 ] && [ ! -z "${subscribe_url}" ] && [ -f $CONFIG_YAML_OLD ] ;then + sh /usr/share/clash/v2ssr.sh >>/tmp/clash.txt + +fi + +fi + + fi #=========================================================================================================================== } + custom_list() { - (/usr/share/clash/list.sh && sleep 2 >/dev/null 2>&1) & + sh /usr/share/clash/list.sh >/dev/null 2>&1 } start(){ + config_load clash + local enabled + + config_get_bool enabled clash enabled 0 + lang=$(uci get luci.main.lang 2>/dev/null) #=========================================================================================================================== if pidof clash >/dev/null; then kill $(pidof clash) >/dev/null 2>&1 || kill -9 $(ps | grep clash | grep -v grep | awk '{print $1}') >/dev/null 2>&1 fi +landns=$(uci get clash.config.landns 2>/dev/null) enable=$(uci get clash.config.enable 2>/dev/null) - -yml_yaml - -yml_sub - -select_config - -lan=$(uci get clash.config.proxylan 2>/dev/null) +core=$(uci get clash.config.core 2>/dev/null) +lana=$(uci get clash.config.proxylan 2>/dev/null) lanac=$(uci get clash.config.rejectlan 2>/dev/null) -if [ $enable -eq 1 ]; then -if [ ! -f /etc/clash/clash ]; then - if [ $lang == "en" ];then - echo "$(date "+%Y-%m-%d %H:%M:%S") - /etc/clash/clash not found, from "https://github.com/frainzy1477/clash/releases" , download and install clash ipk " >> /tmp/clash.log - elif [ $lang == "zh_cn" ];then - echo "$(date "+%Y-%m-%d %H:%M:%S") - 找不到 /etc/clash/clash 请,从"https://github.com/frainzy1477/clash/releases" , 下载然后安装Clash ipk" >> /tmp/clash.log +if [ "${enable}" -eq 1 ]; then + + if [ "${lang}" == "en" ] || [ $lang == "auto" ];then + echo "Starting Client.. " >$REAL_LOG + elif [ "${lang}" == "zh_cn" ];then + echo "启动客户端..." >$REAL_LOG + fi + sleep 2 + + yml_yaml >/dev/null 2>&1 + + yml_sub >/dev/null 2>&1 + + select_config >/dev/null 2>&1 + +if [ "${core}" -eq 1 ] && [ ! -f /etc/clash/clash ]; then + if [ "${lang}" == "en" ];then + echo " $(date "+%Y-%m-%d %H:%M:%S") - clash core not found, download and install clash from update page " >> /tmp/clash.txt + elif [ "${lang}" == "zh_cn" ];then + echo " $(date "+%Y-%m-%d %H:%M:%S") - 找不到/etc/clash/clash,请从更新页下载clash内核" >> /tmp/clash.txt + echo "找不到/etc/clash/clash,请从更新页下载clash内核" >> $REAL_LOG + sleep 2 + echo "Clash for OpenWRT" >$REAL_LOG + + fi +elif [ "${core}" -eq 2 ] && [ ! -f /usr/bin/clash ]; then + if [ "${lang}" == "en" ];then + echo " $(date "+%Y-%m-%d %H:%M:%S") - clashr core not found in /usr/bin/clash download and install clashr from update page " >> /tmp/clash.txt + elif [ "${lang}" == "zh_cn" ];then + echo " $(date "+%Y-%m-%d %H:%M:%S") - 找不到/usr/bin/clash,请从更新页下载clashr内核" >> /tmp/clash.txt + echo "找不到/usr/bin/clash,请从更新页下载clashr内核" >> $REAL_LOG + sleep 2 + echo "Clash for OpenWRT" >$REAL_LOG + fi else -if [ -f $CONFIG_YAML ] && [ "$(ls -l $CONFIG_YAML|awk '{print int($5/1024)}')" -ne 0 ] && [ -f /etc/clash/clash ]; then +if [ -f $CONFIG_YAML ] && [ "$(ls -l $CONFIG_YAML|awk '{print int($5/1024)}')" -ne 0 ] ; then - - if [ $lan ]; then + yml_change >/dev/null 2>&1 + + checktype=$(grep -c "type: ssr" /etc/clash/config.yaml 2>/dev/null) + if [ "${checktype}" -gt 0 ] && [ "${core}" -eq 1 ]; then + + if [ "${lang}" == "en" ] || [ $lang == "auto" ];then + echo "Clash Core does not Support Config, use clashr core" >$REAL_LOG + elif [ "${lang}" == "zh_cn" ];then + echo "Clash内核不支持你的配置,改用Clashr内核" >$REAL_LOG + fi + sleep 5 + echo "Clash for OpenWRT" >$REAL_LOG + exit 0 + fi + + checkaccess=$(egrep '^ {0,}enhanced-mode' /etc/clash/config.yaml |grep enhanced-mode: |awk -F ': ' '{print $2}') + if [ "${checkaccess}" = "fake-ip" ] && [ "${lana}" -eq 1 ];then + if [ "${lang}" == "en" ] || [ $lang == "auto" ];then + echo "Clash fake-ip mode does not support Proxy Lan IP " >$REAL_LOG + elif [ "${lang}" == "zh_cn" ];then + echo "Clash模式fake-ip不支持走代理的局域网IP" >$REAL_LOG + fi + sleep 5 + echo "Clash for OpenWRT" >$REAL_LOG + exit 0 + elif [ "${checkaccess}" = "fake-ip" ] && [ "${lanac}" -eq 1 ];then + if [ "${lang}" == "en" ] || [ $lang == "auto" ];then + echo "Clash fake-ip mode does not support Bypass Lan IP" >$REAL_LOG + elif [ "${lang}" == "zh_cn" ];then + echo "Clash模式fake-ip不支持不走代理的局域网IP" >$REAL_LOG + fi + sleep 5 + echo "Clash for OpenWRT" >$REAL_LOG + exit 0 + fi + + + + if [ "${lana}" -eq 1 ]; then + if [ "${lang}" == "en" ] || [ $lang == "auto" ];then + echo "Setting up Custom ip list for clash traffic " >$REAL_LOG + elif [ "${lang}" == "zh_cn" ];then + echo "设置自定义IP列表走clash流量" >$REAL_LOG + fi + sleep 1 access >/dev/null 2>&1 fi - if [ $lanac ]; then + if [ "${lanac}" -eq 1 ]; then + + if [ "${lang}" == "en" ] || [ $lang == "auto" ];then + echo "Setting up Custom ip list to bypass clash traffic " >$REAL_LOG + elif [ "${lang}" == "zh_cn" ];then + echo "设置自定义IP列表以绕过clash流量" >$REAL_LOG + fi + sleep 1 reject_access >/dev/null 2>&1 fi - yml_change - yml_dns_change + if [ ! -z "${landns}" ];then + if [ "${lang}" == "en" ] || [ $lang == "auto" ];then + echo "Setting up Custom lan dns server " >$REAL_LOG + elif [ "${lang}" == "zh_cn" ];then + echo "设置自定义lan dns服务器" >$REAL_LOG + fi + sleep 1 + uci set network.lan.dns="${landns}" && uci commit network && /etc/init.d/network reload >/dev/null 2>&1 + fi + + + yml_dns_change >/dev/null 2>&1 - nohup $CLASH -d "$CLASH_CONFIG" > /tmp/clash.log 2>&1 & - - ln -s /usr/share/clash/yac /www/clash - - uci commit firewall - /etc/init.d/firewall restart >/dev/null 2>&1 + if [ "${lang}" == "en" ] || [ $lang == "auto" ];then + echo "$(date "+%Y-%m-%d %H:%M:%S") - Starting Client..." >$REAL_LOG + elif [ "${lang}" == "zh_cn" ];then + echo "$(date "+%Y-%m-%d %H:%M:%S") - 启动客户端..." >$REAL_LOG + fi + + if [ "${core}" -eq 1 ];then + nohup $CLASH -d "$CLASH_CONFIG" > /tmp/clash.txt 2>&1 & + if [ "${lang}" == "en" ] || [ $lang == "auto" ];then + echo "Clash Core Started Successfully " >$REAL_LOG + elif [ "${lang}" == "zh_cn" ];then + echo "Clash 计划任务,启动进程守护程序..." >$REAL_LOG + fi + + elif [ "${core}" -eq 2 ];then + nohup $CLASHR -d "$CLASH_CONFIG" > /tmp/clash.txt 2>&1 & + if [ "${lang}" == "en" ] || [ $lang == "auto" ];then + echo "Clashr Core Started Successfully " >$REAL_LOG + elif [ "${lang}" == "zh_cn" ];then + echo "Clashr 计划任务,启动进程守护程序..." >$REAL_LOG + fi + + fi + + sleep 1 + + + if [ "${lang}" == "en" ] || [ $lang == "auto" ];then + echo "Setting up clash iptables rules" >$REAL_LOG + elif [ "${lang}" == "zh_cn" ];then + echo "设置 Clash iptables" >$REAL_LOG + fi rules >/dev/null 2>&1 - - killall -1 dnsmasq - - custom_list - + custom_list >/dev/null 2>&1 + sleep 1 + + if [ "${lang}" == "en" ] || [ $lang == "auto" ];then + echo "Restarting Dnsmasq " >$REAL_LOG + elif [ "${lang}" == "zh_cn" ];then + echo "重启 Dnsmasq 程序" >$REAL_LOG + fi + /etc/init.d/dnsmasq restart >/dev/null 2>&1 - + sleep 1 + if pidof clash >/dev/null; then - add_cron - nohup /usr/share/clash/clash-watchdog.sh >/dev/null 2>&1 - + add_cron + if [ "${lang}" == "en" ] || [ $lang == "auto" ];then + echo "Setting Cron Job" >$REAL_LOG + sleep 1 + echo "Clash Started Successfully " >$REAL_LOG + sleep 2 + echo "Clash is Running " >$REAL_LOG + sleep 2 + echo "Clash for OpenWRT" >$REAL_LOG + elif [ "${lang}" == "zh_cn" ];then + echo "设置Cron" >$REAL_LOG + sleep 1 + echo "Clash 启动成功,请等待服务器上线!" >$REAL_LOG + sleep 2 + echo "Clash运行中" >$REAL_LOG + sleep 2 + echo "Clash for OpenWRT" >$REAL_LOG + fi + nohup /usr/share/clash/clash-watchdog.sh >/dev/null 2>&1 + + fi + + + else - if [ $lang == "en" ];then - echo "$(date "+%Y-%m-%d %H:%M:%S") - problem with config.yaml, config.yaml is either empty or not found " >> /tmp/clash.log - elif [ $lang == "zh_cn" ];then - echo "$(date "+%Y-%m-%d %H:%M:%S") - 你的config.yaml有问题还是为了空 0kb " >> /tmp/clash.log + if [ "${lang}" == "en" ] || [ $lang == "auto" ];then + echo " $(date "+%Y-%m-%d %H:%M:%S") - problem with config.yaml, config.yaml is either empty or not found " >> /tmp/clash.txt + echo " problem with config file " >$REAL_LOG + sleep 5 + echo "Clash for OpenWRT" >$REAL_LOG + elif [ "${lang}" == "zh_cn" ];then + echo " $(date "+%Y-%m-%d %H:%M:%S") - 你的config.yaml有问题还是为了空 0kb " >> /tmp/clash.txt + echo " 你的config.yaml有问题还是为了空 0kb " >$REAL_LOG + sleep 5 + echo "Clash for OpenWRT" >$REAL_LOG fi fi fi - - +else + if [ "${lang}" == "en" ] || [ $lang == "auto" ];then + echo "Enable Client and Start Client Again" >$REAL_LOG + echo " $(date "+%Y-%m-%d %H:%M:%S") - Enable Client and Start Client Again" >>/tmp/clash.txt + sleep 3 + echo "Clash for OpenWRT" >$REAL_LOG + elif [ "${lang}" == "zh_cn" ];then + echo "启用客户端并重新启动客户端" >$REAL_LOG + echo " $(date "+%Y-%m-%d %H:%M:%S") - 启用客户端并重新启动客户端" >>/tmp/clash.txt + sleep 3 + echo "Clash for OpenWRT" >$REAL_LOG + fi fi #=========================================================================================================================== @@ -304,40 +569,128 @@ fi stop(){ +delandns=$(uci get clash.config.delan 2>/dev/null) +landns=$(uci get clash.config.landns 2>/dev/null) lang=$(uci get luci.main.lang 2>/dev/null) + if [ "${lang}" == "en" ] || [ $lang == "auto" ];then + echo "Stopping Client..." >$REAL_LOG + elif [ "${lang}" == "zh_cn" ];then + echo "正在停止客户端..." >$REAL_LOG + fi + sleep 2 #=========================================================================================================================== - iptables -t nat -F clash_tcp >/dev/null 2>&1 - iptables -t nat -X clash_tcp >/dev/null 2>&1 - iptables -t nat -F clash_udp >/dev/null 2>&1 - iptables -t nat -X clash_udp >/dev/null 2>&1 - iptables -t nat -D PREROUTING -p tcp -j clash_tcp >/dev/null 2>&1 - iptables -t nat -D PREROUTING -p udp -j clash_udp >/dev/null 2>&1 + if [ "${lang}" == "en" ] || [ $lang == "auto" ];then + echo "Removing clash iptables rules" >$REAL_LOG + elif [ "${lang}" == "zh_cn" ];then + echo "删除clash防火墙规则" >$REAL_LOG + fi + #iptables -t nat -F clash_tcp >/dev/null 2>&1 + #iptables -t nat -X clash_tcp >/dev/null 2>&1 + #iptables -t nat -F clash_udp >/dev/null 2>&1 + #iptables -t nat -X clash_udp >/dev/null 2>&1 + #iptables -t nat -D PREROUTING -p tcp -j clash_tcp >/dev/null 2>&1 + #iptables -t nat -D PREROUTING -p udp -j clash_udp >/dev/null 2>&1 + + #ip6tables -t nat -F clash_ipv6 >/dev/null 2>&1 + #ip6tables -t nat -X clash_ipv6 >/dev/null 2>&1 + + #ipset -! flush clash_lan_ac >/dev/null 2>&1 + #ipset -! flush clash_lan >/dev/null 2>&1 + + + iptables -t nat -D PREROUTING -p tcp -j clash_tcp >/dev/null 2>&1 + iptables -t mangle -D PREROUTING -p tcp -j clash_tcp >/dev/null 2>&1 + iptables -t nat -D PREROUTING -p udp -j clash_udp >/dev/null 2>&1 + iptables -t mangle -D PREROUTING -p udp -j clash_udp >/dev/null 2>&1 + iptables -t nat -D PREROUTING -p tcp -j clash_dns >/dev/null 2>&1 + iptables -t mangle -D PREROUTING -p tcp -j clash_dns >/dev/null 2>&1 + ip6tables -t nat -D PREROUTING -p tcp -j clash_ipv6 >/dev/null 2>&1 + ip6tables -t mangle -D PREROUTING -p udp -j clash_ipv6 >/dev/null 2>&1 + + nat_indexs=$(iptables -nvL PREROUTING -t nat | sed 1,2d | sed -n '/clash/=' | sort -r) + for nat_index in $nat_indexs; do + iptables -t nat -D PREROUTING $nat_index >/dev/null 2>&1 + done + + mangle_indexs=$(iptables -nvL PREROUTING -t mangle | sed 1,2d | sed -n '/clash/=' | sort -r) + for mangle_index in $mangle_indexs; do + iptables -t mangle -D PREROUTING $mangle_index >/dev/null 2>&1 + done + + fake=$(iptables -nvL OUTPUT -t nat |sed 1,2d |sed -n '/198.18.0.0\/16/=' |sort -r) + for fake in $fake; do + iptables -t nat -D OUTPUT $fake >/dev/null 2>&1 + done + + # flush iptables rules + ip6tables -t nat -F clash_ipv6 >/dev/null 2>&1 && ip6tables -t nat -X clash_ipv6 >/dev/null 2>&1 + ip6tables -t mangle -F clash_ipv6 >/dev/null 2>&1 && ip6tables -t mangle -X clash_ipv6 >/dev/null 2>&1 + iptables -t nat -F clash_udp >/dev/null 2>&1 && iptables -t nat -X clash_udp >/dev/null 2>&1 + iptables -t mangle -F clash_udp >/dev/null 2>&1 && iptables -t mangle -X clash_udp >/dev/null 2>&1 + iptables -t nat -F clash_tcp >/dev/null 2>&1 && iptables -t nat -X clash_tcp >/dev/null 2>&1 + iptables -t mangle -F clash_tcp >/dev/null 2>&1 && iptables -t mangle -X clash_tcp >/dev/null 2>&1 + iptables -t nat -F clash_dns >/dev/null 2>&1 && iptables -t nat -X clash_dns >/dev/null 2>&1 + iptables -t mangle -F clash_dns >/dev/null 2>&1 && iptables -t mangle -X clash_dns >/dev/null 2>&1 - ipset -! flush clash_lan_ac >/dev/null 2>&1 - ipset -! flush clash_lan >/dev/null 2>&1 kill -9 $(ps | grep clash-watchdog.sh | grep -v grep | awk '{print $1}') >/dev/null 2>&1 + + if [ "${lang}" == "en" ] || [ $lang == "auto" ];then + echo "Clash Core Stoped Successfully " >$REAL_LOG + elif [ "${lang}" == "zh_cn" ];then + echo "Clash 停止进程守护程序" >$REAL_LOG + fi + kill -9 `pidof clash|sed "s/$//g"` 2>/dev/null - revert_dns - - uci commit firewall - /etc/init.d/firewall restart >/dev/null 2>&1 - - /etc/init.d/dnsmasq restart >/dev/null 2>&1 - - del_cron + sleep 1 + - rm -rf /www/clash 2> /dev/null + if [ ! -z "${delandns}" ];then + if [ "${lang}" == "en" ] || [ $lang == "auto" ];then + echo "Removing Custom lan dns server " >$REAL_LOG + elif [ "${lang}" == "zh_cn" ];then + echo "删除自定义lan dns服务器" >$REAL_LOG + fi + uci delete network.lan.dns && uci commit network && /etc/init.d/network reload >/dev/null 2>&1 + fi + + if [ "${lang}" == "en" ] || [ $lang == "auto" ];then + echo "Restarting Dnsmasq " >$REAL_LOG + elif [ "${lang}" == "zh_cn" ];then + echo "重启 Dnsmasq 程序" >$REAL_LOG + fi + revert_dns >/dev/null 2>&1 - rm -rf /tmp/clash.log + /etc/init.d/dnsmasq restart >/dev/null 2>&1 + sleep 1 + + if [ "${lang}" == "en" ] || [ $lang == "auto" ];then + echo "Deleting Cron Job" >$REAL_LOG + elif [ "${lang}" == "zh_cn" ];then + echo "删除Cron" >$REAL_LOG + fi - if [ $lang == "en" ];then - echo "$(date "+%Y-%m-%d %H:%M:%S") - CLIENT IS DISABLED " >> /tmp/clash.log - elif [ $lang == "zh_cn" ];then - echo "$(date "+%Y-%m-%d %H:%M:%S") - 客户端被禁用 " >> /tmp/clash.log + del_cron >/dev/null 2>&1 + sleep 1 + + + echo "" >/tmp/clash.txt >/dev/null 2>&1 + + echo "0" > /usr/share/clash/logstatus_check >/dev/null 2>&1 + + if [ "${lang}" == "en" ] || [ $lang == "auto" ];then + echo " $(date "+%Y-%m-%d %H:%M:%S") - CLIENT IS DISABLED " >> /tmp/clash.txt + echo "Client is Disabled " >$REAL_LOG + sleep 2 + echo "Clash for OpenWRT" >$REAL_LOG + elif [ "${lang}" == "zh_cn" ];then + echo " $(date "+%Y-%m-%d %H:%M:%S") - 客户端被禁用 " >> /tmp/clash.txt + echo "客户端被禁用 " >$REAL_LOG + sleep 2 + echo "Clash for OpenWRT" >$REAL_LOG fi @@ -349,11 +702,12 @@ restart(){ #=========================================================================================================================== if pidof clash >/dev/null; then - stop - start + stop >/dev/null 2>&1 + start >/dev/null 2>&1 else - start + start >/dev/null 2>&1 fi #=========================================================================================================================== } + diff --git a/package/jsda/luci-app-clash/root/usr/share/clash/check_clashr_core_version.sh b/package/jsda/luci-app-clash/root/usr/share/clash/check_clashr_core_version.sh new file mode 100755 index 0000000000..35460ff249 --- /dev/null +++ b/package/jsda/luci-app-clash/root/usr/share/clash/check_clashr_core_version.sh @@ -0,0 +1,11 @@ +#!/bin/sh +if [ -f /usr/share/clash/new_clashr_core_version ];then +rm -rf /usr/share/clash/new_clashr_core_version +fi +new_clashr_core_version=`wget -qO- "https://github.com/frainzy1477/clashrdev/tags"| grep "/frainzy1477/clashrdev/releases/tag/"| head -n 1| awk -F "/tag/v" '{print $2}'| sed 's/\">//'` +if [ $new_clashr_core_version ]; then +echo $new_clashr_core_version > /usr/share/clash/new_clashr_core_version 2>&1 & >/dev/null +elif [ $new_clashr_core_version =="" ]; then +echo 0 > /usr/share/clash/new_clashr_core_version 2>&1 & >/dev/null +fi + diff --git a/package/jsda/luci-app-clash/root/usr/share/clash/check_core_version.sh b/package/jsda/luci-app-clash/root/usr/share/clash/check_core_version.sh index bcc3ef31ec..c3569f26b1 100755 --- a/package/jsda/luci-app-clash/root/usr/share/clash/check_core_version.sh +++ b/package/jsda/luci-app-clash/root/usr/share/clash/check_core_version.sh @@ -2,10 +2,10 @@ if [ -f /usr/share/clash/new_core_version ];then rm -rf /usr/share/clash/new_core_version fi -new_core_version=`wget -qO- "https://github.com/frainzy1477/clash/tags"| grep "/frainzy1477/clash/releases/tag/"| head -n 1| awk -F "/tag/v" '{print $2}'| sed 's/\">//'` +new_core_version=`wget -qO- "https://github.com/frainzy1477/clash_dev/tags"| grep "/frainzy1477/clash_dev/releases/tag/"| head -n 1| awk -F "/tag/v" '{print $2}'| sed 's/\">//'` if [ $new_core_version ]; then echo $new_core_version > /usr/share/clash/new_core_version 2>&1 & >/dev/null elif [ $new_core_version =="" ]; then echo 0 > /usr/share/clash/new_core_version 2>&1 & >/dev/null fi - \ No newline at end of file + diff --git a/package/jsda/luci-app-clash/root/usr/share/clash/clash-watchdog.sh b/package/jsda/luci-app-clash/root/usr/share/clash/clash-watchdog.sh index 5511835db7..46a05c7463 100755 --- a/package/jsda/luci-app-clash/root/usr/share/clash/clash-watchdog.sh +++ b/package/jsda/luci-app-clash/root/usr/share/clash/clash-watchdog.sh @@ -24,7 +24,7 @@ do clean_log fi if ! pidof clash>/dev/null; then - nohup $CLASH -d $CLASH_CONFIG > /tmp/clash.log 2>&1 & + /etc/init.d/clash restart 2>&1 & echo "$curtime Clash Is Restarting!" >> ${logfile} fi diff --git a/package/jsda/luci-app-clash/root/usr/share/clash/clash.sh b/package/jsda/luci-app-clash/root/usr/share/clash/clash.sh index f2a5a2f30e..bbc9b4cb41 100755 --- a/package/jsda/luci-app-clash/root/usr/share/clash/clash.sh +++ b/package/jsda/luci-app-clash/root/usr/share/clash/clash.sh @@ -1,56 +1,48 @@ -#!/bin/sh -subscribe_url=$(uci get clash.config.subscribe_url 2>/dev/null) +#!/bin/sh /etc/rc.common +subscribe_url=$(uci get clash.config.subscribe_url_clash 2>/dev/null) subtype=$(uci get clash.config.subcri 2>/dev/null) -urlv2ray=$(uci get clash.config.v2ray 2>/dev/null) -urlsurge=$(uci get clash.config.surge 2>/dev/null) -cusrule=$(uci get clash.config.cusrule 2>/dev/null) config_type=$(uci get clash.config.config_type 2>/dev/null) +REAL_LOG="/usr/share/clash/clash_real.txt" +lang=$(uci get luci.main.lang 2>/dev/null) +CONFIG_YAML="/usr/share/clash/config/sub/config.yaml" - -CONFIG_YAML="/usr/share/clash/config/sub/config.yaml" -CONFIG_YAML_TEMP="/etc/clash/server.yaml" -CONFIG_YAML_RULE="/usr/share/clash/rule.yaml" - - - + if [ $lang == "en" ] || [ $lang == "auto" ];then + echo "Downloading Configuration..." >$REAL_LOG + elif [ $lang == "zh_cn" ];then + echo "正在下载配置..." >$REAL_LOG + fi + sleep 1 + if pidof clash >/dev/null; then if [ $subtype == "clash" ];then wget --no-check-certificate --user-agent="Clash/OpenWRT" $subscribe_url -O 2>&1 >1 $CONFIG_YAML - elif [ $subtype == "v2rayn2clash" ];then - if [ $cusrule == 1 ];then - wget --no-check-certificate --user-agent="Clash/OpenWRT" $urlv2ray.$subscribe_url -O 2>&1 >1 $CONFIG_YAML_TEMP - if [ -f $CONFIG_YAML_TEMP ];then - sed -i '/Rule:/,$d' $CONFIG_YAML_TEMP - cat $CONFIG_YAML_TEMP $CONFIG_YAML_RULE > $CONFIG_YAML - fi - else - wget --no-check-certificate --user-agent="Clash/OpenWRT" $urlv2ray.$subscribe_url -O 2>&1 >1 $CONFIG_YAML - fi - elif [ $subtype == "surge2clash" ];then - wget --no-check-certificate --user-agent="Clash/OpenWRT" $urlsurge.$subscribe_url -O 2>&1 >1 $CONFIG_YAML fi - rm -rf $CONFIG_YAML_TEMP 2>/dev/null + if [ $lang == "en" ] || [ $lang == "auto" ];then + echo "Downloading Configuration Completed" >$REAL_LOG + sleep 2 + echo "Clash for OpenWRT" >$REAL_LOG + elif [ $lang == "zh_cn" ];then + echo "下载配置完成" >$REAL_LOG + sleep 2 + echo "Clash for OpenWRT" >$REAL_LOG + fi if [ $config_type == "sub" ];then /etc/init.d/clash restart 2>/dev/null fi else if [ $subtype == "clash" ];then wget --no-check-certificate --user-agent="Clash/OpenWRT" $subscribe_url -O 2>&1 >1 $CONFIG_YAML - elif [ $subtype == "v2rayn2clash" ];then - if [ $cusrule == 1 ];then - wget --no-check-certificate --user-agent="Clash/OpenWRT" $urlv2ray.$subscribe_url -O 2>&1 >1 $CONFIG_YAML_TEMP - if [ -f $CONFIG_YAML_TEMP ];then - sed -i '/Rule:/,$d' $CONFIG_YAML_TEMP - cat $CONFIG_YAML_TEMP $CONFIG_YAML_RULE > $CONFIG_YAML - fi - else - wget --no-check-certificate --user-agent="Clash-/OpenWRT" $urlv2ray.$subscribe_url -O 2>&1 >1 $CONFIG_YAML fi - elif [ $subtype == "surge2clash" ];then - wget --no-check-certificate --user-agent="Clash/OpenWRT" $urlsurge.$subscribe_url -O 2>&1 >1 $CONFIG_YAML - fi - rm -rf $CONFIG_YAML_TEMP 2>/dev/null + if [ $lang == "en" ] || [ $lang == "auto" ];then + echo "Downloading Configuration Completed" >$REAL_LOG + sleep 2 + echo "Clash for OpenWRT" >$REAL_LOG + elif [ $lang == "zh_cn" ];then + echo "下载配置完成" >$REAL_LOG + sleep 2 + echo "Clash for OpenWRT" >$REAL_LOG + fi fi - - + + diff --git a/package/jsda/luci-app-clash/root/usr/share/clash/core_download.sh b/package/jsda/luci-app-clash/root/usr/share/clash/core_download.sh new file mode 100755 index 0000000000..37636ce54c --- /dev/null +++ b/package/jsda/luci-app-clash/root/usr/share/clash/core_download.sh @@ -0,0 +1,170 @@ +#!/bin/sh +LOGTIME=$(date "+%Y-%m-%d %H:%M:%S") +LOG_FILE="/tmp/clash_update.txt" +MODELTYPE=$(uci get clash.config.download_core 2>/dev/null) +CORETYPE=$(uci get clash.config.dcore 2>/dev/null) +CORE=$(uci get clash.config.core 2>/dev/null) +lang=$(uci get luci.main.lang 2>/dev/null) +if [ -f /tmp/clash.tar.gz ];then +rm -rf /tmp/clash.tar.gz >/dev/null 2>&1 +fi + echo '' >/tmp/clash_update.txt 2>/dev/null + +if [ /usr/share/clash/core_down_complete ];then + rm -rf /usr/share/clash/core_down_complete 2>/dev/null +fi + +if [ $CORETYPE -eq 2 ];then +if [ -f /usr/share/clash/download_corer_version ];then +rm -rf /usr/share/clash/download_corer_version +fi + if [ $lang == "zh_cn" ];then + echo " ${LOGTIME} - 正在检查最新版本。。" >$LOG_FILE + elif [ $lang == "en" ] || [ $lang == "auto" ];then + echo " ${LOGTIME} - Checking latest version.." >$LOG_FILE + fi +new_clashr_core_version=`wget -qO- "https://github.com/frainzy1477/clashrdev/tags"| grep "/frainzy1477/clashrdev/releases/tag/"| head -n 1| awk -F "/tag/v" '{print $2}'| sed 's/\">//'` + +if [ $new_clashr_core_version ]; then +echo $new_clashr_core_version > /usr/share/clash/download_corer_version 2>&1 & >/dev/null +elif [ $new_clashr_core_version =="" ]; then +echo 0 > /usr/share/clash/download_corer_version 2>&1 & >/dev/null +fi +sleep 8 +if [ -f /usr/share/clash/download_corer_version ];then +CLASHRVER=$(sed -n 1p /usr/share/clash/download_corer_version 2>/dev/null) +fi +fi + +if [ $CORETYPE -eq 1 ];then +if [ -f /usr/share/clash/download_core_version ];then +rm -rf /usr/share/clash/download_core_version +fi + if [ $lang == "zh_cn" ];then + echo " ${LOGTIME} - 正在检查最新版本。。" >$LOG_FILE + elif [ $lang == "en" ] || [ $lang == "auto" ];then + echo " ${LOGTIME} - Checking latest version.." >$LOG_FILE + fi +new_clashr_core_version=`wget -qO- "https://github.com/frainzy1477/clash_dev/tags"| grep "/frainzy1477/clash_dev/releases/tag/"| head -n 1| awk -F "/tag/v" '{print $2}'| sed 's/\">//'` + +if [ $new_clashr_core_version ]; then +echo $new_clashr_core_version > /usr/share/clash/download_core_version 2>&1 & >/dev/null +elif [ $new_clashr_core_version =="" ]; then +echo 0 > /usr/share/clash/download_core_version 2>&1 & >/dev/null +fi +sleep 8 +if [ -f /usr/share/clash/download_core_version ];then +CLASHVER=$(sed -n 1p /usr/share/clash/download_core_version 2>/dev/null) +fi +fi + +if [ -f /usr/share/clash/core_version ];then +VER=$(sed -n 1p /usr/share/clash/core_version 2>/dev/null) +else +VER=0 +fi + + if [ -f /usr/share/clash/corer_version ];then +VERR=$(sed -n 1p /usr/share/clash/corer_version 2>/dev/null) +else +VERR=0 +fi + +sleep 2 + +update(){ + if [ -f /tmp/clash.gz ];then + rm -rf /tmp/clash.gz >/dev/null 2>&1 + fi + if [ $lang == "zh_cn" ];then + echo " ${LOGTIME} - 开始下载 Clash 内核..." >$LOG_FILE + elif [ $lang == "en" ] || [ $lang == "auto" ];then + echo " ${LOGTIME} - Starting Clash Core download" >$LOG_FILE + fi + if [ $CORETYPE -eq 1 ];then + wget --no-check-certificate https://github.com/frainzy1477/clash_dev/releases/download/v"$CLASHVER"/clash-"$MODELTYPE"-v"$CLASHVER".gz -O 2>&1 >1 /tmp/clash.gz + elif [ $CORETYPE -eq 2 ];then + wget --no-check-certificate https://github.com/frainzy1477/clashrdev/releases/download/v"$CLASHRVER"/clashr-"$MODELTYPE"-v"$CLASHRVER".gz -O 2>&1 >1 /tmp/clash.gz + fi + + if [ "$?" -eq "0" ] && [ "$(ls -l /tmp/clash.gz |awk '{print int($5)}')" -ne 0 ]; then + if [ $lang == "zh_cn" ];then + echo " ${LOGTIME} - 开始解压缩文件" >$LOG_FILE + elif [ $lang == "en" ] || [ $lang == "auto" ];then + echo " ${LOGTIME} - Beginning to unzip file" >$LOG_FILE + fi + gunzip /tmp/clash.gz >/dev/null 2>&1\ + && rm -rf /tmp/clash.gz >/dev/null 2>&1\ + && chmod 755 /tmp/clash\ + && chown root:root /tmp/clash + + if [ $lang == "zh_cn" ];then + echo " ${LOGTIME} - 完成下载内核,正在更新..." >$LOG_FILE + elif [ $lang == "en" ] || [ $lang == "auto" ];then + echo " ${LOGTIME} - Successfully downloaded core, updating now..." >$LOG_FILE + fi + + if [ $CORETYPE -eq 1 ];then + rm -rf /etc/clash/clash >/dev/null 2>&1 + mv /tmp/clash /etc/clash/clash >/dev/null 2>&1 + rm -rf /usr/share/clash/core_version >/dev/null 2>&1 + mv /usr/share/clash/download_core_version /usr/share/clash/core_version >/dev/null 2>&1 + + if [ $lang == "zh_cn" ];then + echo " ${LOGTIME} - Clash内核更新成功!" >$LOG_FILE + elif [ $lang == "en" ] || [ $lang == "auto" ];then + echo " ${LOGTIME} - Clash Core Update Successful" >$LOG_FILE + fi + + + elif [ $CORETYPE -eq 2 ];then + rm -rf /usr/bin/clash >/dev/null 2>&1 + mv /tmp/clash /usr/bin/clash >/dev/null 2>&1 + rm -rf /usr/share/clash/corer_version >/dev/null 2>&1 + mv /usr/share/clash/download_corer_version /usr/share/clash/corer_version >/dev/null 2>&1 + + if [ $lang == "zh_cn" ];then + echo " ${LOGTIME} - Clashr内核更新成功!" >$LOG_FILE + elif [ $lang == "en" ] || [ $lang == "auto" ];then + echo " ${LOGTIME} - Clashr Core Update Successful" >>$LOG_FILE + fi + fi + + sleep 2 + touch /usr/share/clash/core_down_complete >/dev/null 2>&1 + sleep 2 + rm -rf /var/run/core_update >/dev/null 2>&1 + echo "" > /tmp/clash_update.txt >/dev/null 2>&1 + + else + if [ $lang == "zh_cn" ];then + echo " ${LOGTIME} - 核心程序下载失败,请检查网络或稍后再试!" >$LOG_FILE + elif [ $lang == "en" ] || [ $lang == "auto" ];then + echo " ${LOGTIME} - Core Update Error" >$LOG_FILE + fi + rm -rf /tmp/clash.tar.gz >/dev/null 2>&1 + echo "" > /tmp/clash_update.txt >/dev/null 2>&1 + fi + if pidof clash >/dev/null; then + if [ $CORETYPE == $CORE ];then + /etc/init.d/clash restart >/dev/null + fi + fi +} + +if [ $CORETYPE -eq 1 ] && [ $VER != $CLASHVER ]; then + update +elif [ $CORETYPE -eq 2 ] && [ $VERR != $CLASHRVER ]; then + update +else + if [ $lang == "zh_cn" ];then + echo " ${LOGTIME} - 在用中是最新的内核!" >$LOG_FILE + elif [ $lang == "en" ] || [ $lang == "auto" ];then + echo " ${LOGTIME} - Currently using latest core" >$LOG_FILE + fi + sleep 2 + touch /usr/share/clash/core_down_complete >/dev/null 2>&1 + sleep 2 + rm -rf /var/run/core_update >/dev/null 2>&1 + +fi diff --git a/package/jsda/luci-app-clash/root/usr/share/clash/custom_rule.yaml b/package/jsda/luci-app-clash/root/usr/share/clash/custom_rule.yaml index 793c8cf11e..9feb83f598 100644 --- a/package/jsda/luci-app-clash/root/usr/share/clash/custom_rule.yaml +++ b/package/jsda/luci-app-clash/root/usr/share/clash/custom_rule.yaml @@ -1,5 +1,3 @@ - - Rule: # (GlobalTV) # > ABC @@ -1110,6 +1108,8 @@ Rule: - DOMAIN-SUFFIX,jiji.com,🔑Proxy - DOMAIN-SUFFIX,jinx.com,🔑Proxy - DOMAIN-SUFFIX,jkforum.net,🔑Proxy +- DOMAIN-SUFFIX,cloudflare.com,🔑Proxy +- DOMAIN-KEYWORD,cloudflare,🔑Proxy - DOMAIN-SUFFIX,joinmastodon.org,🔑Proxy - DOMAIN-SUFFIX,kakao.com,🔑Proxy - DOMAIN-SUFFIX,lihkg.com,🔑Proxy @@ -1508,10 +1508,9 @@ Rule: - IP-CIDR,202.160.128.0/22,🔑Proxy - IP-CIDR,209.237.192.0/19,🔑Proxy - +#- SRC-IP-CIDR,192.168.1.201/32,DIRECT #- DST-PORT,80,DIRECT #- DST-PORT,443,DIRECT -# GeoIP China -- GEOIP,CN,DIRECT -- MATCH,🔑Proxy \ No newline at end of file +- GEOIP,CN,DIRECT +- MATCH,🔑Proxy diff --git a/package/jsda/luci-app-clash/root/usr/share/clash/dashboard/index.html b/package/jsda/luci-app-clash/root/usr/share/clash/dashboard/index.html index bf7e940c61..43a26cceef 100644 --- a/package/jsda/luci-app-clash/root/usr/share/clash/dashboard/index.html +++ b/package/jsda/luci-app-clash/root/usr/share/clash/dashboard/index.html @@ -5,8 +5,8 @@ Clash Dashboard - +
- + diff --git a/package/jsda/luci-app-clash/root/usr/share/clash/dashboard/js/1.bundle.557c7e0375c2286ea607.min.js b/package/jsda/luci-app-clash/root/usr/share/clash/dashboard/js/1.bundle.557c7e0375c2286ea607.min.js deleted file mode 100644 index 691aae3666..0000000000 --- a/package/jsda/luci-app-clash/root/usr/share/clash/dashboard/js/1.bundle.557c7e0375c2286ea607.min.js +++ /dev/null @@ -1,2 +0,0 @@ -/*! For license information please see 1.bundle.557c7e0375c2286ea607.min.js.LICENSE */ -(window.webpackJsonp=window.webpackJsonp||[]).push([[1],[function(e,t,n){"use strict";e.exports=n(47)},function(e,t,n){"use strict";function r(){return(r=Object.assign||function(e){for(var t=1;t=0||(o[n]=e[n]);return o}n.d(t,"a",(function(){return r}))},,,function(e,t,n){e.exports=n(51)()},function(e,t,n){"use strict";!function e(){if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE){0;try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(t){console.error(t)}}}(),e.exports=n(48)},function(e,t,n){var r=n(40)(Object,"create");e.exports=r},function(e,t,n){var r=n(105);e.exports=function(e,t){for(var n=e.length;n--;)if(r(e[n][0],t))return n;return-1}},function(e,t,n){var r=n(111);e.exports=function(e,t){var n=e.__data__;return r(t)?n["string"==typeof t?"string":"hash"]:n.map}},,function(e,t){var n;n=function(){return this}();try{n=n||new Function("return this")()}catch(r){"object"==typeof window&&(n=window)}e.exports=n},,function(e,t){var n=Array.isArray;e.exports=n},function(e,t,n){var r=n(39),o=n(84),i="[object Symbol]";e.exports=function(e){return"symbol"==typeof e||o(e)&&r(e)==i}},function(e,t,n){var r=n(22).Symbol;e.exports=r},function(e,t,n){var r=n(81),o="object"==typeof self&&self&&self.Object===Object&&self,i=r||o||Function("return this")();e.exports=i},function(e,t,n){"use strict";n.r(t);var r=n(3),o=n(0),i=n.n(o),a=n(24),l=n.n(a),u=n(11),s=n.n(u),c=n(43),f=n.n(c),d=1073741823;var p=i.a.createContext||function(e,t){var n,r,i="__create-react-context-"+f()()+"__",a=function(e){function n(){var t,n,r;return(t=e.apply(this,arguments)||this).emitter=(n=t.props.value,r=[],{on:function(e){r.push(e)},off:function(e){r=r.filter((function(t){return t!==e}))},get:function(){return n},set:function(e,t){n=e,r.forEach((function(e){return e(n,t)}))}}),t}l()(n,e);var r=n.prototype;return r.getChildContext=function(){var e;return(e={})[i]=this.emitter,e},r.componentWillReceiveProps=function(e){if(this.props.value!==e.value){var n,r=this.props.value,o=e.value;((i=r)===(a=o)?0!==i||1/i==1/a:i!=i&&a!=a)?n=0:(n="function"==typeof t?t(r,o):d,0!==(n|=0)&&this.emitter.set(e.value,n))}var i,a},r.render=function(){return this.props.children},n}(o.Component);a.childContextTypes=((n={})[i]=s.a.object.isRequired,n);var u=function(t){function n(){var e;return(e=t.apply(this,arguments)||this).state={value:e.getValue()},e.onUpdate=function(t,n){0!=((0|e.observedBits)&n)&&e.setState({value:e.getValue()})},e}l()(n,t);var r=n.prototype;return r.componentWillReceiveProps=function(e){var t=e.observedBits;this.observedBits=null==t?d:t},r.componentDidMount=function(){this.context[i]&&this.context[i].on(this.onUpdate);var e=this.props.observedBits;this.observedBits=null==e?d:e},r.componentWillUnmount=function(){this.context[i]&&this.context[i].off(this.onUpdate)},r.getValue=function(){return this.context[i]?this.context[i].get():e},r.render=function(){return(e=this.props.children,Array.isArray(e)?e[0]:e)(this.state.value);var e},n}(o.Component);return u.contextTypes=((r={})[i]=s.a.object,r),{Provider:a,Consumer:u}},h=n(1);function m(e){return"/"===e.charAt(0)}function v(e,t){for(var n=t,r=n+1,o=e.length;r1&&void 0!==arguments[1]?arguments[1]:"",n=e&&e.split("/")||[],r=t&&t.split("/")||[],o=e&&m(e),i=t&&m(t),a=o||i;if(e&&m(e)?r=n:n.length&&(r.pop(),r=r.concat(n)),!r.length)return"/";var l=void 0;if(r.length){var u=r[r.length-1];l="."===u||".."===u||""===u}else l=!1;for(var s=0,c=r.length;c>=0;c--){var f=r[c];"."===f?v(r,c):".."===f?(v(r,c),s++):s&&(v(r,c),s--)}if(!a)for(;s--;s)r.unshift("..");!a||""===r[0]||r[0]&&m(r[0])||r.unshift("");var d=r.join("/");return l&&"/"!==d.substr(-1)&&(d+="/"),d},g="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};var b=function e(t,n){if(t===n)return!0;if(null==t||null==n)return!1;if(Array.isArray(t))return Array.isArray(n)&&t.length===n.length&&t.every((function(t,r){return e(t,n[r])}));var r=void 0===t?"undefined":g(t);if(r!==(void 0===n?"undefined":g(n)))return!1;if("object"===r){var o=t.valueOf(),i=n.valueOf();if(o!==t||i!==n)return e(o,i);var a=Object.keys(t),l=Object.keys(n);return a.length===l.length&&a.every((function(r){return e(t[r],n[r])}))}return!1},w=!0,x="Invariant failed";var _=function(e,t){if(!e)throw w?new Error(x):new Error(x+": "+(t||""))};function S(e){return"/"===e.charAt(0)?e:"/"+e}function E(e){return"/"===e.charAt(0)?e.substr(1):e}function k(e,t){return function(e,t){return new RegExp("^"+t+"(\\/|\\?|#|$)","i").test(e)}(e,t)?e.substr(t.length):e}function C(e){return"/"===e.charAt(e.length-1)?e.slice(0,-1):e}function T(e){var t=e.pathname,n=e.search,r=e.hash,o=t||"/";return n&&"?"!==n&&(o+="?"===n.charAt(0)?n:"?"+n),r&&"#"!==r&&(o+="#"===r.charAt(0)?r:"#"+r),o}function P(e,t,n,r){var o;"string"==typeof e?(o=function(e){var t=e||"/",n="",r="",o=t.indexOf("#");-1!==o&&(r=t.substr(o),t=t.substr(0,o));var i=t.indexOf("?");return-1!==i&&(n=t.substr(i),t=t.substr(0,i)),{pathname:t,search:"?"===n?"":n,hash:"#"===r?"":r}}(e)).state=t:(void 0===(o=Object(h.a)({},e)).pathname&&(o.pathname=""),o.search?"?"!==o.search.charAt(0)&&(o.search="?"+o.search):o.search="",o.hash?"#"!==o.hash.charAt(0)&&(o.hash="#"+o.hash):o.hash="",void 0!==t&&void 0===o.state&&(o.state=t));try{o.pathname=decodeURI(o.pathname)}catch(i){throw i instanceof URIError?new URIError('Pathname "'+o.pathname+'" could not be decoded. This is likely caused by an invalid percent-encoding.'):i}return n&&(o.key=n),r?o.pathname?"/"!==o.pathname.charAt(0)&&(o.pathname=y(o.pathname,r.pathname)):o.pathname=r.pathname:o.pathname||(o.pathname="/"),o}function O(e,t){return e.pathname===t.pathname&&e.search===t.search&&e.hash===t.hash&&e.key===t.key&&b(e.state,t.state)}function M(){var e=null;var t=[];return{setPrompt:function(t){return e=t,function(){e===t&&(e=null)}},confirmTransitionTo:function(t,n,r,o){if(null!=e){var i="function"==typeof e?e(t,n):e;"string"==typeof i?"function"==typeof r?r(i,o):o(!0):o(!1!==i)}else o(!0)},appendListener:function(e){var n=!0;function r(){n&&e.apply(void 0,arguments)}return t.push(r),function(){n=!1,t=t.filter((function(e){return e!==r}))}},notifyListeners:function(){for(var e=arguments.length,n=new Array(e),r=0;r=0?t:0)+"#"+e)}function $(e){void 0===e&&(e={}),R||_(!1);var t=window.history,n=(window.navigator.userAgent.indexOf("Firefox"),e),r=n.getUserConfirmation,o=void 0===r?z:r,i=n.hashType,a=void 0===i?"slash":i,l=e.basename?C(S(e.basename)):"",u=D[a],s=u.encodePath,c=u.decodePath;function f(){var e=c(F());return l&&(e=k(e,l)),P(e)}var d=M();function p(e){Object(h.a)(j,e),j.length=t.length,d.notifyListeners(j.location,j.action)}var m=!1,v=null;function y(){var e=F(),t=s(e);if(e!==t)U(t);else{var n=f(),r=j.location;if(!m&&O(r,n))return;if(v===T(n))return;v=null,function(e){if(m)m=!1,p();else{d.confirmTransitionTo(e,"POP",o,(function(t){t?p({action:"POP",location:e}):function(e){var t=j.location,n=x.lastIndexOf(T(t));-1===n&&(n=0);var r=x.lastIndexOf(T(e));-1===r&&(r=0);var o=n-r;o&&(m=!0,E(o))}(e)}))}}(n)}}var g=F(),b=s(g);g!==b&&U(b);var w=f(),x=[T(w)];function E(e){t.go(e)}var I=0;function N(e){1===(I+=e)&&1===e?window.addEventListener(L,y):0===I&&window.removeEventListener(L,y)}var A=!1;var j={length:t.length,action:"POP",location:w,createHref:function(e){return"#"+s(l+T(e))},push:function(e,t){var n=P(e,void 0,void 0,j.location);d.confirmTransitionTo(n,"PUSH",o,(function(e){if(e){var t=T(n),r=s(l+t);if(F()!==r){v=t,function(e){window.location.hash=e}(r);var o=x.lastIndexOf(T(j.location)),i=x.slice(0,-1===o?0:o+1);i.push(t),x=i,p({action:"PUSH",location:n})}else p()}}))},replace:function(e,t){var n=P(e,void 0,void 0,j.location);d.confirmTransitionTo(n,"REPLACE",o,(function(e){if(e){var t=T(n),r=s(l+t);F()!==r&&(v=t,U(r));var o=x.indexOf(T(j.location));-1!==o&&(x[o]=t),p({action:"REPLACE",location:n})}}))},go:E,goBack:function(){E(-1)},goForward:function(){E(1)},block:function(e){void 0===e&&(e=!1);var t=d.setPrompt(e);return A||(N(1),A=!0),function(){return A&&(A=!1,N(-1)),t()}},listen:function(e){var t=d.appendListener(e);return N(1),function(){N(-1),t()}}};return j}function W(e,t,n){return Math.min(Math.max(e,t),n)}var H=n(25),B=n.n(H),V=(n(28),n(8)),q=n(44),Q=n.n(q),K=function(e){var t=p();return t.displayName=e,t}("Router"),Y=function(e){function t(t){var n;return(n=e.call(this,t)||this).state={location:t.history.location},n._isMounted=!1,n._pendingLocation=null,t.staticContext||(n.unlisten=t.history.listen((function(e){n._isMounted?n.setState({location:e}):n._pendingLocation=e}))),n}Object(r.a)(t,e),t.computeRootMatch=function(e){return{path:"/",url:"/",params:{},isExact:"/"===e}};var n=t.prototype;return n.componentDidMount=function(){this._isMounted=!0,this._pendingLocation&&this.setState({location:this._pendingLocation})},n.componentWillUnmount=function(){this.unlisten&&this.unlisten()},n.render=function(){return i.a.createElement(K.Provider,{children:this.props.children||null,value:{history:this.props.history,location:this.state.location,match:t.computeRootMatch(this.state.location.pathname),staticContext:this.props.staticContext}})},t}(i.a.Component);var X=function(e){function t(){for(var t,n=arguments.length,r=new Array(n),o=0;ot?n.splice(t,n.length-t,r):n.push(r),c({action:"PUSH",location:r,index:t,entries:n})}}))},replace:function(e,t){var r=P(e,t,f(),y.location);s.confirmTransitionTo(r,"REPLACE",n,(function(e){e&&(y.entries[y.index]=r,c({action:"REPLACE",location:r}))}))},go:v,goBack:function(){v(-1)},goForward:function(){v(1)},canGo:function(e){var t=y.index+e;return t>=0&&t=0;t--){var n=e[t][i];n.modified||(Array.isArray(n.base)?M(n)&&E(n):O(n)&&E(n))}}function O(e){for(var t=e.base,n=e.draft,r=Object.keys(n),o=r.length-1;o>=0;o--){var a=r[o],l=t[a];if(void 0===l&&!p(t,a))return!0;var u=n[a],s=u&&u[i];if(s?s.base!==l:!h(u,l))return!0}return r.length!==Object.keys(t).length}function M(e){var t=e.draft;if(t.length!==e.base.length)return!0;var n=Object.getOwnPropertyDescriptor(t,t.length-1);return!(!n||n.get)}var R=Object.freeze({willFinalize:function(e,t,n){e.drafts.forEach((function(e){e[i].finalizing=!0})),n?a(t)&&t[i].scope===e&&P(e.drafts):(e.patches&&function e(t){if(!t||"object"!=typeof t)return;var n=t[i];if(!n)return;var r=n.base;var o=n.draft;var a=n.assigned;if(Array.isArray(t)){if(M(n)){if(E(n),a.length=!0,o.lengthc&&a[f-1]===l[f+s-1];)--f;for(var d=c;d=f;--m){var v=t.concat([m]);n[h+m-f]={op:"add",path:v,value:l[m]},r.push({op:"remove",path:v})}}(e,t,n,r):function(e,t,n,r){var o=e.base,i=e.copy;f(e.assigned,(function(e,a){var l=o[e],u=i[e],s=a?e in o?"replace":"add":"remove";if(l!==u||"replace"!==s){var c=t.concat(e);n.push("remove"===s?{op:s,path:c}:{op:s,path:c,value:u}),r.push("add"===s?{op:"remove",path:c}:"remove"===s?{op:"add",path:c,value:l}:{op:"replace",path:c,value:l})}}))}(e,t,n,r)}var U=function(e,t){for(var n=0,r=t;n0;)r[o]=arguments[o+1];return u.produce(e,(function(e){return t.call.apply(t,[n,e].concat(r))}))}}if("function"!=typeof t)throw new Error("The first or second argument to `produce` must be a function");if(void 0!==n&&"function"!=typeof n)throw new Error("The third argument to `produce` must be a function or undefined");if(l(e)){var s=y.enter(),c=this.createProxy(e),f=!0;try{o=t(c),f=!1}finally{f?s.revoke():s.leave()}return o instanceof Promise?o.then((function(e){return s.usePatches(n),i.processResult(e,s)}),(function(e){throw s.revoke(),e})):(s.usePatches(n),this.processResult(o,s))}if((o=t(e))!==r)return void 0===o&&(o=e),this.maybeFreeze(o,!0),o},W.prototype.produceWithPatches=function(e,t,n){var r,o,i=this;if("function"==typeof e)return function(t){for(var n=[],r=arguments.length-1;r-- >0;)n[r]=arguments[r+1];return i.produceWithPatches(t,(function(t){return e.apply(void 0,[t].concat(n))}))};if(n)throw new Error("A patch listener cannot be passed to produceWithPatches");return[this.produce(e,t,(function(e,t){r=e,o=t})),r,o]},W.prototype.createDraft=function(e){if(!l(e))throw new Error("First argument to `createDraft` must be a plain object, an array, or an immerable object");var t=y.enter(),n=this.createProxy(e);return n[i].isManual=!0,t.leave(),n},W.prototype.finishDraft=function(e,t){var n=e&&e[i];if(!n||!n.isManual)throw new Error("First argument to `finishDraft` must be a draft returned by `createDraft`");if(n.finalized)throw new Error("The given draft is already finalized");var r=n.scope;return r.usePatches(t),this.processResult(void 0,r)},W.prototype.setAutoFreeze=function(e){this.autoFreeze=e},W.prototype.setUseProxies=function(e){this.useProxies=e,u(this,e?D:R)},W.prototype.applyPatches=function(e,t){var n;for(n=t.length-1;n>=0;n--){var r=t[n];if(0===r.path.length&&"replace"===r.op){e=r.value;break}}return a(e)?U(e,t):this.produce(e,(function(e){return U(e,t.slice(n+1))}))},W.prototype.processResult=function(e,t){var n=t.drafts[0],o=void 0!==e&&e!==n;if(this.willFinalize(t,e,o),o){if(n[i].modified)throw t.revoke(),new Error("An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.");l(e)&&(e=this.finalize(e,null,t),this.maybeFreeze(e)),t.patches&&(t.patches.push({op:"replace",path:[],value:e}),t.inversePatches.push({op:"replace",path:[],value:n[i].base}))}else e=this.finalize(n,[],t);return t.revoke(),t.patches&&t.patchListener(t.patches,t.inversePatches),e!==r?e:void 0},W.prototype.finalize=function(e,t,n){var r=this,o=e[i];if(!o)return Object.isFrozen(e)?e:this.finalizeTree(e,null,n);if(o.scope!==n)return e;if(!o.modified)return this.maybeFreeze(o.base,!0),o.base;if(!o.finalized){if(o.finalized=!0,this.finalizeTree(o.draft,t,n),this.onDelete)if(this.useProxies){var a=o.assigned;for(var l in a)a[l]||this.onDelete(o,l)}else{var u=o.base,s=o.copy;f(u,(function(e){p(s,e)||r.onDelete(o,e)}))}this.onCopy&&this.onCopy(o),this.autoFreeze&&n.canAutoFreeze&&Object.freeze(o.copy),t&&n.patches&&F(o,t,n.patches,n.inversePatches)}return o.copy},W.prototype.finalizeTree=function(e,t,n){var r=this,o=e[i];o&&(this.useProxies||(o.copy=c(o.draft,!0)),e=o.copy);var u=!!t&&!!n.patches,s=function(i,c,p){if(c===p)throw Error("Immer forbids circular references");var m=!!o&&p===e;if(a(c)){var v=m&&u&&!o.assigned[i]?t.concat(i):null;if(a(c=r.finalize(c,v,n))&&(n.canAutoFreeze=!1),Array.isArray(p)||d(p,i)?p[i]=c:Object.defineProperty(p,i,{value:c}),m&&c===o.base[i])return}else{if(m&&h(c,o.base[i]))return;l(c)&&!Object.isFrozen(c)&&(f(c,s),r.maybeFreeze(c))}m&&r.onAssign&&r.onAssign(o,i,c)};return f(e,s),e},W.prototype.maybeFreeze=function(e,t){void 0===t&&(t=!1),this.autoFreeze&&!a(e)&&(t?v(e):Object.freeze(e))};var H=new W,B=H.produce;H.produceWithPatches.bind(H),H.setAutoFreeze.bind(H),H.setUseProxies.bind(H),H.applyPatches.bind(H),H.createDraft.bind(H),H.finishDraft.bind(H);t.a=B}).call(this,n(33))},function(e,t,n){"use strict";var r=Object.getOwnPropertySymbols,o=Object.prototype.hasOwnProperty,i=Object.prototype.propertyIsEnumerable;function a(e){if(null==e)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}e.exports=function(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(t).map((function(e){return t[e]})).join(""))return!1;var r={};return"abcdefghijklmnopqrst".split("").forEach((function(e){r[e]=e})),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},r)).join("")}catch(o){return!1}}()?Object.assign:function(e,t){for(var n,l,u=a(e),s=1;s=200&&e<300}};u.headers={common:{Accept:"application/json, text/plain, */*"}},r.forEach(["delete","get","head"],(function(e){u.headers[e]={}})),r.forEach(["post","put","patch"],(function(e){u.headers[e]=r.merge(i)})),e.exports=u}).call(this,n(33))},function(e,t){var n,r,o=e.exports={};function i(){throw new Error("setTimeout has not been defined")}function a(){throw new Error("clearTimeout has not been defined")}function l(e){if(n===setTimeout)return setTimeout(e,0);if((n===i||!n)&&setTimeout)return n=setTimeout,setTimeout(e,0);try{return n(e,0)}catch(t){try{return n.call(null,e,0)}catch(t){return n.call(this,e,0)}}}!function(){try{n="function"==typeof setTimeout?setTimeout:i}catch(e){n=i}try{r="function"==typeof clearTimeout?clearTimeout:a}catch(e){r=a}}();var u,s=[],c=!1,f=-1;function d(){c&&u&&(c=!1,u.length?s=u.concat(s):f=-1,s.length&&p())}function p(){if(!c){var e=l(d);c=!0;for(var t=s.length;t;){for(u=s,s=[];++f1)for(var n=1;nI.length&&I.push(e)}function j(e,t,n){return null==e?0:function e(t,n,r,o){var l=typeof t;"undefined"!==l&&"boolean"!==l||(t=null);var u=!1;if(null===t)u=!0;else switch(l){case"string":case"number":u=!0;break;case"object":switch(t.$$typeof){case i:case a:u=!0}}if(u)return r(o,t,""===n?"."+L(t,0):n),1;if(u=0,n=""===n?".":n+":",Array.isArray(t))for(var s=0;sthis.eventPool.length&&this.eventPool.push(e)}function de(e){e.eventPool=[],e.getPooled=ce,e.release=fe}o(se.prototype,{preventDefault:function(){this.defaultPrevented=!0;var e=this.nativeEvent;e&&(e.preventDefault?e.preventDefault():"unknown"!=typeof e.returnValue&&(e.returnValue=!1),this.isDefaultPrevented=le)},stopPropagation:function(){var e=this.nativeEvent;e&&(e.stopPropagation?e.stopPropagation():"unknown"!=typeof e.cancelBubble&&(e.cancelBubble=!0),this.isPropagationStopped=le)},persist:function(){this.isPersistent=le},isPersistent:ue,destructor:function(){var e,t=this.constructor.Interface;for(e in t)this[e]=null;this.nativeEvent=this._targetInst=this.dispatchConfig=null,this.isPropagationStopped=this.isDefaultPrevented=ue,this._dispatchInstances=this._dispatchListeners=null}}),se.Interface={type:null,target:null,currentTarget:function(){return null},eventPhase:null,bubbles:null,cancelable:null,timeStamp:function(e){return e.timeStamp||Date.now()},defaultPrevented:null,isTrusted:null},se.extend=function(e){function t(){}function n(){return r.apply(this,arguments)}var r=this;t.prototype=r.prototype;var i=new t;return o(i,n.prototype),n.prototype=i,n.prototype.constructor=n,n.Interface=o({},r.Interface,e),n.extend=r.extend,de(n),n},de(se);var pe=se.extend({data:null}),he=se.extend({data:null}),me=[9,13,27,32],ve=q&&"CompositionEvent"in window,ye=null;q&&"documentMode"in document&&(ye=document.documentMode);var ge=q&&"TextEvent"in window&&!ye,be=q&&(!ve||ye&&8=ye),we=String.fromCharCode(32),xe={beforeInput:{phasedRegistrationNames:{bubbled:"onBeforeInput",captured:"onBeforeInputCapture"},dependencies:["compositionend","keypress","textInput","paste"]},compositionEnd:{phasedRegistrationNames:{bubbled:"onCompositionEnd",captured:"onCompositionEndCapture"},dependencies:"blur compositionend keydown keypress keyup mousedown".split(" ")},compositionStart:{phasedRegistrationNames:{bubbled:"onCompositionStart",captured:"onCompositionStartCapture"},dependencies:"blur compositionstart keydown keypress keyup mousedown".split(" ")},compositionUpdate:{phasedRegistrationNames:{bubbled:"onCompositionUpdate",captured:"onCompositionUpdateCapture"},dependencies:"blur compositionupdate keydown keypress keyup mousedown".split(" ")}},_e=!1;function Se(e,t){switch(e){case"keyup":return-1!==me.indexOf(t.keyCode);case"keydown":return 229!==t.keyCode;case"keypress":case"mousedown":case"blur":return!0;default:return!1}}function Ee(e){return"object"==typeof(e=e.detail)&&"data"in e?e.data:null}var ke=!1;var Ce={eventTypes:xe,extractEvents:function(e,t,n,r){var o=void 0,i=void 0;if(ve)e:{switch(e){case"compositionstart":o=xe.compositionStart;break e;case"compositionend":o=xe.compositionEnd;break e;case"compositionupdate":o=xe.compositionUpdate;break e}o=void 0}else ke?Se(e,n)&&(o=xe.compositionEnd):"keydown"===e&&229===n.keyCode&&(o=xe.compositionStart);return o?(be&&"ko"!==n.locale&&(ke||o!==xe.compositionStart?o===xe.compositionEnd&&ke&&(i=ae()):(oe="value"in(re=r)?re.value:re.textContent,ke=!0)),o=pe.getPooled(o,t,n,r),i?o.data=i:null!==(i=Ee(n))&&(o.data=i),V(o),i=o):i=null,(e=ge?function(e,t){switch(e){case"compositionend":return Ee(t);case"keypress":return 32!==t.which?null:(_e=!0,we);case"textInput":return(e=t.data)===we&&_e?null:e;default:return null}}(e,n):function(e,t){if(ke)return"compositionend"===e||!ve&&Se(e,t)?(e=ae(),ie=oe=re=null,ke=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1