mirror of
https://github.com/openwrt-xiaomi/xmir-patcher.git
synced 2026-09-22 22:57:55 +03:00
ssh: All in one script without external files
This commit is contained in:
+75
-4
@@ -10,13 +10,84 @@ from gateway import *
|
||||
|
||||
gw = Gateway()
|
||||
|
||||
FN_patch = 'data/ssh_patch.sh'
|
||||
FN_patch = f'tmp/ssh_patch.sh'
|
||||
fn_patch = '/tmp/ssh_patch.sh'
|
||||
FN_install = 'data/ssh_install.sh'
|
||||
FN_install = f'tmp/ssh_install.sh'
|
||||
fn_install = '/tmp/ssh_install.sh'
|
||||
FN_uninstall = 'data/ssh_uninstall.sh'
|
||||
FN_uninstall = f'tmp/ssh_uninstall.sh'
|
||||
fn_uninstall = '/tmp/ssh_uninstall.sh'
|
||||
|
||||
os.makedirs('tmp', exist_ok = True)
|
||||
|
||||
ssh_patch = '''#!/bin/sh
|
||||
[ -e "/tmp/ssh_patch.log" ] && return 0
|
||||
|
||||
SSH_EN=`nvram get ssh_en`
|
||||
if [ "$SSH_EN" != "1" ]; then
|
||||
nvram set ssh_en=1
|
||||
nvram commit
|
||||
fi
|
||||
|
||||
if grep -q '= "release"' /etc/init.d/dropbear ; then
|
||||
sed -i 's/= "release"/= "XXXXXX"/g' /etc/init.d/dropbear
|
||||
fi
|
||||
|
||||
/etc/init.d/dropbear enable
|
||||
/etc/init.d/dropbear restart
|
||||
|
||||
echo "ssh enabled" > /tmp/ssh_patch.log
|
||||
'''
|
||||
with open(FN_patch, 'w', newline = '\n') as file:
|
||||
file.write(ssh_patch)
|
||||
|
||||
ssh_install = '''#!/bin/sh
|
||||
DIR_PATCH=/etc/crontabs/patches
|
||||
|
||||
if [ ! -d $DIR_PATCH ]; then
|
||||
mkdir -p $DIR_PATCH
|
||||
chown root $DIR_PATCH
|
||||
chmod 0755 $DIR_PATCH
|
||||
fi
|
||||
|
||||
mv -f /tmp/ssh_patch.sh $DIR_PATCH/
|
||||
chmod +x $DIR_PATCH/ssh_patch.sh
|
||||
|
||||
nvram set ssh_en=1
|
||||
nvram commit
|
||||
|
||||
uci set firewall.auto_ssh_patch=include
|
||||
uci set firewall.auto_ssh_patch.type='script'
|
||||
uci set firewall.auto_ssh_patch.path="$DIR_PATCH/ssh_patch.sh"
|
||||
uci set firewall.auto_ssh_patch.enabled='1'
|
||||
uci commit firewall
|
||||
|
||||
rm -f /tmp/ssh_patch.log
|
||||
$DIR_PATCH/ssh_patch.sh
|
||||
'''
|
||||
with open(FN_install, 'w', newline = '\n') as file:
|
||||
file.write(ssh_install)
|
||||
|
||||
ssh_uninstall = '''#!/bin/sh
|
||||
DIR_PATCH=/etc/crontabs/patches
|
||||
|
||||
if grep -q '/ssh_patch.sh' /etc/crontabs/root ; then
|
||||
# remove older version of patch
|
||||
grep -v "/ssh_patch.sh" /etc/crontabs/root > /etc/crontabs/root.new
|
||||
mv /etc/crontabs/root.new /etc/crontabs/root
|
||||
/etc/init.d/cron restart
|
||||
fi
|
||||
if uci -q get firewall.auto_ssh_patch ; then
|
||||
uci delete firewall.auto_ssh_patch
|
||||
uci commit firewall
|
||||
fi
|
||||
|
||||
rm -f $DIR_PATCH/ssh_patch.sh
|
||||
rm -f /tmp/ssh_patch.log
|
||||
'''
|
||||
with open(FN_uninstall, 'w', newline = '\n') as file:
|
||||
file.write(ssh_uninstall)
|
||||
|
||||
|
||||
action = 'install'
|
||||
if len(sys.argv) > 1:
|
||||
if sys.argv[1].startswith('u') or sys.argv[1].startswith('r'):
|
||||
@@ -32,7 +103,7 @@ print("All files uploaded!")
|
||||
|
||||
print("Run scripts...")
|
||||
run_script = fn_install if action == 'install' else fn_uninstall
|
||||
gw.run_cmd(f"chmod +x {run_script} ; {run_script}")
|
||||
gw.run_cmd(f"chmod +x {run_script} ; {run_script}", timeout = 17)
|
||||
|
||||
time.sleep(1.5)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user