[App Sharing] 浏览器传文件快传脚本翻新:支持上传
Tofloor
poster avatar
神末shenmo
deepin
Spark-App
2024-09-18 06:50
Author

https://gitee.com/shenmo7192/momo-and-mox-tool-scripts/blob/master/updowner.py

Python3重置了一下,现在支持上传进度条

用法:端口号 -d 根目录

图片.png

图片.png

图片.png


若需要作为上传服务反代,请添加以下nginx参数,分别是延长超时时长和禁用包大小限制

proxy_read_timeout 3600s;
client_max_body_size 0;
Reply Favorite View the author
All Replies
阿尼樱奈奈
Moderator
2024-09-18 07:54
#1

like

Reply View the author
乾豫恒益
deepin
2024-09-18 08:42
#2

like

Reply View the author
蓝鲸
deepin
2024-09-18 09:22
#3

like

Reply View the author
昨夜的星辰
deepin
2024-09-18 10:31
#4

在deepin23上试了下,很方便,做为局域网文件服务器很好用

IPv6外网试了一下,没成功,是脚本不支持IPv6还是因为安全特意把这块屏蔽了

Reply View the author
观摩
deepin
2024-09-18 10:54
#5
昨夜的星辰

在deepin23上试了下,很方便,做为局域网文件服务器很好用

IPv6外网试了一下,没成功,是脚本不支持IPv6还是因为安全特意把这块屏蔽了

因为它好像是默认监听的ipv4的本机127.0.0.1。你可以修改一下监听地址,改成你的ipv6地址。

class GetWanIp:
    def getip(self):
        return "127.0.0.1"  # 这里修改成你的 IPv6
Reply View the author
神末shenmo
deepin
Spark-App
2024-09-18 11:21
#6
观摩

因为它好像是默认监听的ipv4的本机127.0.0.1。你可以修改一下监听地址,改成你的ipv6地址。

class GetWanIp:
    def getip(self):
        return "127.0.0.1"  # 这里修改成你的 IPv6

应该两个都能绑吧


这段逻辑不是用来绑IP的,我暂时搞不定怎么输出正确的网卡IP所以直接写死了个localhost,这个是方便访问用的

Reply View the author
神末shenmo
deepin
Spark-App
2024-09-18 11:21
#7
昨夜的星辰

在deepin23上试了下,很方便,做为局域网文件服务器很好用

IPv6外网试了一下,没成功,是脚本不支持IPv6还是因为安全特意把这块屏蔽了

没写v6的绑定,我看看改一下


或者你用nginx反代一下也可以

Reply View the author
观摩
deepin
2024-09-18 11:33
#8
神末shenmo

应该两个都能绑吧


这段逻辑不是用来绑IP的,我暂时搞不定怎么输出正确的网卡IP所以直接写死了个localhost,这个是方便访问用的

原来如此。
需要这么修改

class ThreadingSimpleServer(ThreadingMixIn, HTTPServer):
    address_family = socket.AF_INET6

但是对IPv6的使用不熟悉,

修改之后使用 http://[::]:8080/ 可以打开,使用 ip a 查看到的IPv6地址,无法打开。

Reply View the author
观摩
deepin
2024-09-18 11:46
#9
神末shenmo

应该两个都能绑吧


这段逻辑不是用来绑IP的,我暂时搞不定怎么输出正确的网卡IP所以直接写死了个localhost,这个是方便访问用的

获取本机的默认网络地址

class GetWanIp:
    def getip(self):
        ip = "127.0.0.1"
        try:
            s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
            s.connect(('114.114.114.114', 80))
            ip = s.getsockname()[0]
        finally:
            s.close()
        return ip
Reply View the author
神末shenmo
deepin
Spark-App
2024-09-18 12:08
#10
观摩

获取本机的默认网络地址

class GetWanIp:
    def getip(self):
        ip = "127.0.0.1"
        try:
            s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
            s.connect(('114.114.114.114', 80))
            ip = s.getsockname()[0]
        finally:
            s.close()
        return ip

让GPT改了下,现在可以v4了

v6还是搞不定,但是提供服务没问题了

Reply View the author
观摩
deepin
2024-09-18 12:28
#11
神末shenmo

让GPT改了下,现在可以v4了

v6还是搞不定,但是提供服务没问题了

浏览器使用IPv6访问的时候需要对IP地址加中括号,是不是你测试的时候没加?

http://[IPv6]:8080

http://[::1]:8080

2024-09-18_12-28.png

Reply View the author
神末shenmo
deepin
Spark-App
2024-09-18 12:48
#12
观摩

浏览器使用IPv6访问的时候需要对IP地址加中括号,是不是你测试的时候没加?

http://[IPv6]:8080

http://[::1]:8080

2024-09-18_12-28.png

v6访问没问题,但是列出列不出来


你这是对主题魔改了?咋做的?like

后续想加点基础的文件管理功能,删除啥的,不过估计全要靠GPT咯

Reply View the author
观摩
deepin
2024-09-18 13:05
#13
神末shenmo

v6访问没问题,但是列出列不出来


你这是对主题魔改了?咋做的?like

后续想加点基础的文件管理功能,删除啥的,不过估计全要靠GPT咯

以前用过一个类似的Python文件管理项目,当时改了一下样式,方便区分文件和文件夹。
就顺手搬过来了。

样式部分

f.write(b'''
''')

文件、文件夹图标

        for name in listx:
            fullname = os.path.join(path, name)
            displayname = linkname = name
            file_size = ''
            link_icon = ''
            if os.path.isdir(fullname):
                linkname = name + "/"
                displayname = name + "/"
                link_icon = ''
            elif os.path.islink(fullname):
                displayname = name + "@"
                link_icon = ''
            else:
                file_size = sizeof_fmt(os.path.getsize(fullname)) if os.path.isfile(fullname) else ''
                link_icon = ''
    
            f.write(b'\n' % (
                html.escape(displayname).encode('utf-8'),
                file_size.encode('utf-8')
            ))
Reply View the author
神末shenmo
deepin
Spark-App
2024-09-18 15:45
#14
观摩

以前用过一个类似的Python文件管理项目,当时改了一下样式,方便区分文件和文件夹。
就顺手搬过来了。

样式部分

f.write(b'''
''')

文件、文件夹图标

        for name in listx:
            fullname = os.path.join(path, name)
            displayname = linkname = name
            file_size = ''
            link_icon = ''
            if os.path.isdir(fullname):
                linkname = name + "/"
                displayname = name + "/"
                link_icon = ''
            elif os.path.islink(fullname):
                displayname = name + "@"
                link_icon = ''
            else:
                file_size = sizeof_fmt(os.path.getsize(fullname)) if os.path.isfile(fullname) else ''
                link_icon = ''
    
            f.write(b'\n' % (
                html.escape(displayname).encode('utf-8'),
                file_size.encode('utf-8')
            ))

我凑,我刚想说我想做成纯离线的你就改好了

牛逼兄弟

Reply View the author
ggbond
deepin
2024-09-18 22:07
#15

like like

Reply View the author
先秦淑女步
deepin
2024-09-18 23:20
#16

applaud

Reply View the author
昨夜的星辰
deepin
2024-09-21 12:23
#17
观摩

原来如此。
需要这么修改

class ThreadingSimpleServer(ThreadingMixIn, HTTPServer):
    address_family = socket.AF_INET6

但是对IPv6的使用不熟悉,

修改之后使用 http://[::]:8080/ 可以打开,使用 ip a 查看到的IPv6地址,无法打开。

按这个修改之后可以用IPv6地址访问,IPv6地址是64前缀的240e开头地址,但是只能在局域网里,外网比如手机访问不了,这个可能涉及的问题太多了,有可能是防火墙或者运营商阻隔,试了下改成21端口也访问不了,算了,不折腾外网了,毕竟也基本不会外网直接访问,也不安全。

Reply View the author
昨夜的星辰
deepin
2024-09-21 12:43
#18

看了一下,路由器上的设置有问题,改了设置之后,手机网络可以IPv6访问虚拟机里的FnOS了,这个脚本的服务还是访问不了

Reply View the author
昨夜的星辰
deepin
2024-09-21 12:45
#19
昨夜的星辰

看了一下,路由器上的设置有问题,改了设置之后,手机网络可以IPv6访问虚拟机里的FnOS了,这个脚本的服务还是访问不了

看了FnOS能访问的端口是8000,将脚本的默认端口从8080改成8000就可以访问了👍

image.png

Reply View the author