hiddifypanel 3.0.0.dev64__cp310-cp310-manylinux2014_x86_64.whl → 3.0.0.dev65__cp310-cp310-manylinux2014_x86_64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- hiddifypanel/Events.py +27 -4
- hiddifypanel/VERSION +1 -1
- hiddifypanel/VERSION.py +1 -3
- hiddifypanel/__init__.py +7 -3
- hiddifypanel/__main__.py +13 -3
- hiddifypanel/base.py +88 -3
- hiddifypanel/base2.py +40 -3
- hiddifypanel/models/__init__.py +10 -3
- hiddifypanel/models/child.py +26 -4
- hiddifypanel/models/config.py +105 -4
- hiddifypanel/models/config_enum.py +207 -4
- hiddifypanel/models/domain.py +106 -4
- hiddifypanel/models/proxy.py +55 -3
- hiddifypanel/models/usage.py +58 -3
- hiddifypanel/models/user.py +171 -3
- hiddifypanel/panel/__init__.py +7 -4
- hiddifypanel/panel/admin/Actions.py +170 -3
- hiddifypanel/panel/admin/Backup.py +80 -4
- hiddifypanel/panel/admin/ChildAdmin.py +122 -3
- hiddifypanel/panel/admin/ConfigAdmin.py +54 -4
- hiddifypanel/panel/admin/Dashboard.py +70 -4
- hiddifypanel/panel/admin/DomainAdmin.py +195 -4
- hiddifypanel/panel/admin/ProxyAdmin.py +128 -3
- hiddifypanel/panel/admin/QuickSetup.py +127 -4
- hiddifypanel/panel/admin/SettingAdmin.py +224 -3
- hiddifypanel/panel/admin/Terminal.py +51 -4
- hiddifypanel/panel/admin/UserAdmin.py +277 -4
- hiddifypanel/panel/admin/__init__.py +82 -4
- hiddifypanel/panel/admin/adminlte.py +13 -4
- hiddifypanel/panel/admin/commercial_info.py +23 -3
- hiddifypanel/panel/admin/websocket.py +9 -3
- hiddifypanel/panel/admin_2.py +33 -3
- hiddifypanel/panel/asset.py +17 -3
- hiddifypanel/panel/cf_api.py +35 -4
- hiddifypanel/panel/clean_ip.py +125 -3
- hiddifypanel/panel/cli.py +172 -3
- hiddifypanel/panel/commercial/CommercialDashboard.py +59 -4
- hiddifypanel/panel/commercial/CommercialSettings.py +224 -3
- hiddifypanel/panel/commercial/ProxyDetailsAdmin.py +38 -4
- hiddifypanel/panel/commercial/__init__.py +50 -4
- hiddifypanel/panel/commercial/restapi/__init__.py +14 -3
- hiddifypanel/panel/commercial/restapi/tgbot.py +57 -3
- hiddifypanel/panel/commercial/telegrambot/DefaultResponse.py +11 -3
- hiddifypanel/panel/commercial/telegrambot/Usage.py +71 -3
- hiddifypanel/panel/commercial/telegrambot/__init__.py +6 -4
- hiddifypanel/panel/commercial/telegrambot/admin.py +120 -3
- hiddifypanel/panel/commercial/telegrambot/information.py +123 -3
- hiddifypanel/panel/common.py +98 -3
- hiddifypanel/panel/custom_widgets.py +71 -4
- hiddifypanel/panel/database.py +18 -3
- hiddifypanel/panel/hiddify.py +655 -4
- hiddifypanel/panel/hiddify_api.py +70 -3
- hiddifypanel/panel/init_db.py +393 -3
- hiddifypanel/panel/usage.py +85 -3
- hiddifypanel/panel/user/__init__.py +25 -4
- hiddifypanel/panel/user/link_maker.py +416 -3
- hiddifypanel/panel/user/templates/home/multi.html +1 -1
- hiddifypanel/panel/user/user.py +233 -3
- hiddifypanel/static/css/custom.css +6 -0
- hiddifypanel/templates/500.html +1 -1
- hiddifypanel/xray_api.py +109 -3
- {hiddifypanel-3.0.0.dev64.dist-info → hiddifypanel-3.0.0.dev65.dist-info}/METADATA +1 -1
- {hiddifypanel-3.0.0.dev64.dist-info → hiddifypanel-3.0.0.dev65.dist-info}/RECORD +67 -69
- hiddifypanel-3.0.0.dev65.dist-info/top_level.txt +1 -0
- hiddifypanel-3.0.0.dev64.dist-info/top_level.txt +0 -2
- pyarmor_runtime_000000/__init__.py +0 -4
- pyarmor_runtime_000000/pyarmor_runtime.so +0 -0
- {hiddifypanel-3.0.0.dev64.dist-info → hiddifypanel-3.0.0.dev65.dist-info}/LICENSE +0 -0
- {hiddifypanel-3.0.0.dev64.dist-info → hiddifypanel-3.0.0.dev65.dist-info}/WHEEL +0 -0
- {hiddifypanel-3.0.0.dev64.dist-info → hiddifypanel-3.0.0.dev65.dist-info}/entry_points.txt +0 -0
@@ -1,5 +1,72 @@
|
|
1
|
-
|
2
|
-
from
|
3
|
-
__pyarmor__(__name__, __file__, b'PY000000\x00\x03\n\x00o\r\r\n\x80\x00\x01\x00\x08\x00\x00\x00\x04\x00\x00\x00@\x00\x00\x00\xf7\x14\x00\x00\x12\t\x04\x00\x11\xe0\xe2\x18\x87\x94"w\xbe8=\x1e\xeau-\xc5\x00\x00\x00\x00\x00\x00\x00\x00\xe9\xe0\xc5Y\xa0\td\xb2AM\xac\xf4Y\x99\xb0s\xaa\x98\xf0\xba\xf8\xfc\x181\x125*F\n5\xf1~q\x90t\x0f\x91\xdb\xeb,^\x80n\xea\x93\xc2\xb3\xc8\x80\xb29vg\x99\xf2\x1b\xadT\xff[\xee\xed\x07\xef\xec\xd9\xca\x82A`\xa5\x98\t\n2\xdd\xc56\xd5\x9f0\xb3A\xce\xb5\xcer\t\xab\xfe\xc7\x94]a\xf4\x8f\x99\x90E\xe8\x10\x1ai\xf6\xacF\x07\x96\xce\xbcu\x08\xca\xfc\xea\xe0^\x00\xaa\x08\xd84w\x88\x88\x97\x1f\xbeh\xbb\xfe\x05xm\x1c\xb33\x96\xdb:X\xeb\xcf\xc3\x9d*bHJ\x1e\x9e\xac3\xb5*\xff\xa8\xfb\xa75_K\x12]\x95\xe3\x12/\xe4\xdb\xf65\x0b\xe6\x90X\x12E{\x89B\xbd\xe4\xb23\xa8oUy\xc2\xef2Y\x11C\x98:\rw\x99\x80\x01\x1aQ\xef\xe4b\xd2I\x83\xf9l\x92\x8d.\xeb{\xbd&m\x07^\x9f\xbd\x80Z\xabz\xc1{|\x96\x1a\xda\xdf\x85\xf7\x81\'\x8d\x17UH4<\xbf\xf1f\x12\xd8\x86L\xde\xd8\xd5\x137\xac/\x9d4\xf7\tS\x9a\x83\xac\xc0\xbd\xac\xfeg\x0cc9\xea.\xdc\x95\xd9\xb2M\xdc~\x92\xba\xcf@\xa4\x94\x84\x1a\x91\x83Ss:\xa3M-!`\xca\xd3D`= \xbd\r\xb4\xc1\x93\xddcD\t\xb2\xf2\xd2\xb5\x81\xf7s\xf1\xfc\xb6\xa2\x02\xfc6\x14\xcc\xad\x03\xa6\xa1Wjt\x03\x0c@\xe8tZz\x8alNi\xb7W,\xc0WK\x83\x9a\x9e\x16\xd0#\xb3\x94\xfa\xf3y\xb6c\xe9m\xe8\x0e\xe4\xda[$\x92{\x8f\xef\xe0\xa8\xeb\x07"\xc9gLd\xe1\x9f]\xde\xa8\xc04\xc8\xc0\xce\xd2\xe7\\p\x11x\\\xc1X\x98\x18\x08A\x05\x88}\xfd\xd0\x9bx\xccC\xc7z\x8ej\'_\xf7by9\xa8\x8dG\x985!\xd2\xcd\x01K\x85\x06\x8d\xc9\x0eS\xf1\xae\'7\x92;\xc8u\xee\x19\xd1\xd1\xfa\xb1\x0eW\xc2\xc7a\xb8B\xb2[J\xd8\x80\xd8\xb0\x9dCbG\xf3O\xb5\xc9\xe2%\x13\t\xdd\xa3\x16\xc5s3v\xf9\xe3\xc2E\x81T\x89\x06\xe0\xfa\xf6\x18;u\xf5\xae\xf2\x1fl\x99\xc9~\x92/\xb9.1y\x18\x19\xff\xf0&\xde\xc0\x8d_\xc4NP5\xc0W\xf3g\xc1\x11\x1e\xf0\xf5\xfb\xeaO|\xb7\x06O\x8ewFR\xadS\xbcG\x938\xf2\xb6vyF\x1d\x10E\xe7\xc5\xcf\x069\xb7e\xd3\xe2\xba@Us \xe7~Ju\xc5\xdd\x06\x82\x15%u/\xb5%\x92\xde\x01\xa0\x8e\x9b\xc0?N\x9f\x85\x8a\x98Q\x07\xe5V\x8b-CU\xa1\xd1}\xed&N\xe5\x9b\xb9RO\xd4\x19\xb4f"\xa2Xk\x1c\xa0\xbd;+_%<\xa4<\'BY\xd2U\x18\xd6GA\x11\xa6\x03\xe8H\xdd^\xd2\\\xee\xf6\xa9\x7fjDQ\x01\x19n\xf7\xdcd>`2\xe0N|\xcaQ\xb3\xa1\xfa5\n\xa9\x91\xd9\xa1Vs\xc4\xd5Fy\xb7p\x10X{9fy\xb9[\xceg\xdd\xe6\x86;\xc6\xe9;\xc7[\x88d`\x07\x90!;&\x92\xa0\x01&\xb5\xedM\x93\xf9\xddOr\xd53+\x05\xba656\r\xa7\xd5\xafM\nKC\x06\\|x`\xd6\x9d\x84 ,[_M\xad#\xda\xcd\x08\x97\xe8|Z\xb4\xf3|\x9a\x14<!y\xeb\x919b\xb4\xd9\xe4\xb3\xe1W\xf0\xfd\xef\xd9|sQv\x82\x0f?\xe5[\x1e\xf1V\xa11\x85\xa5\xc6vr\r\xaa\'\xa1\xad8\x97\x1f\xb7\x93\x9e\xfa\xd0\xf3\xaa\xfc#MG\xf6hY\xdf/%L\x92\r\xdcxg\x0b\xe0IQ\x84\xb6\xc8@w\xa8 \x88\xa8\xfe[\x85\xb1\xe5t7C\x9f\x0b\xe7\x1a\xfd\x88\xfe\x82\xa2|\xef\xa0\xc4\xd9\x9ev.\xac\xd1<\r\xa7|G\xec%\x02\xa3\x11s\xf0\xf5\x143\x14\x14\xd2\xddJ\x83\xe4\xd7 e\xe5\xae\x1b@\xb8\xf4[\xfc,\x19\xb0\x1c\xdah\xf2\x95\xaa\xe3e\xcd\xe1R|\xb8\x13\x91f\xdd 5\xfa&\xee?\xca.\x0c\x9c\xf80\xc3\x12\x96\xae\x07q\xf2T\xa7\x1bq\x9a\xf2\x9e\xe6`\xae\x10\xa8q\xf8\x126\xedk\x12u\x98\x1a\xa1\xb0M)K\x87Iq\'\xaa^t\xbd\xe3\x86\x11\xd7H\x9ct~\x92\x8e_rtv\xd3\x91\x86\xc9\xec\xe8\x98\x9dHW\n\xc6\xa2\xec\xc6~\xd1\x7f-\x0b\x99\xa2\xaa\n\xe5Q11\x1f\x08x\xf1g\xee\xfdY\xae\x8b3I\xd3\x17\xcb\x8c\xf4\xc3\x85&c\x90\x85\x87%\xf8\x06\x13\xa5\xb4\'\xeawX\x80\xb7\xd7\xb2]\x14\x03\xdd\xa7d\x19\xbcx\xd9\xe6\x7fa\xb4\x0e\xd16N\x8dXx\x18\x96\x18~\x81\xb4\xfc\x8em\xb0\xf2\xc1\xd0q\xd2\x9ag\xae\x9d5\xec\xb6\x80\x9b\x07M\xd1\xf3\x95r\xf8\x96\xd1\xb1\x81\xa9Bz3\x13\x92\x00\x00Q\x8b\xb8O\'\x11_\xd4\xc2\x90\'\xa0W\xaa4\x97r\xb2\xee\x13\x83#\x00_()\xe5\x93\xe5`\xa1tnlk\x06\xb6\x05|\xb1}I8\xd2Z\xa2Bg[\xc6\xaa\xfe\xd7\xe2\xe1\x02q\xceA(\xcc\x01\xe1\x00\xad\x17T}n\x1e\xdc\xb1\x15\x83:\xdd\x84\xe4%\xea\x98\x95\x86\xea\x16 \x17\x98\x87\x10\xcfH:\xed\xff>\x1d\xce\x80c&\xbb\x05\xbe\x88\x88]\xabm\xa5\x11\x18\x03i%S:\xfd\xf1\xad\xa9\xafM\xb9\xea}\x94U\xc7\xae\xb5\x1f\xd0\xb6\x04{x\x0c\xb9\xe5\x07\x92\xcb\xba\xc1\x80h/n"Fa\x17%\x0c\x89x%X1\xb8k\x95\xdc\x86\xf5\x91\x00\xfbf-\xa5\x04\x01\xb4\x92\x95\x88\xdd8_\x98:!\xf2\x10JR\n\x05S,W\xe6\x1ba\x99\xea\xdd%\x83&V0\x0c%\xb8\xdf9Q\xbc\x86\xb0>\x81\x1b\xdd+\xcdo8z\xeb;\xac\x83;9\xc9_,\x7f\xb8\xf8\xbf\x1c\xbd\xe7PB\x04\xd9|\x01\x19A\x1c+5\xbb\x9f\x13\xe5B\xd2\xeb\x8d\xbe\xd5\xa6FB<\xf8\t\xa8\x86\xabE\xee\x14\x83\x16(\x17\xc9\\\xe6\xa6D\xcc\n\xdc\r\xbf\xff\xb6ip\x84n\x19\xad\x05\xe7\x1f,\xc6\x11\xd7Q\xc9?pzA\xe34\xb6\xb4J\xe9\xe1w\xee\x98\xb0\xc2\xf5\x96s\x06\x90\xadK\xbeE\xae\xa9\xfd*3V\xdd\x05\x9a\xf9\x9b\xbeV\xa4\x95\xd1z\xad+\xba\x1e<*4\x03\x7f>Rb\xcd\x90\xd6^\xc7\xfez\xc3\x03a\x9e\xf6\xd6\t\xc3B\x1a\x86\xce\xe1\xa1r\xbe\xd9\xc0\xe8R\x8c\xd6\x16#Xg)=^\x8eO\x8e\x052\xaa\xed\x03\xb5\xca\xeb\x0c\\0\x0cg\xd6\x94\xafeE\x1e=\x15\x1cd\xed<\x8c\xa7w\xe2\xd5\xbe\nF\x1e\xc6QQ\xaf\xe3\xbb$\x94+\x05W|.\xad\xe1\x86\xf3\xd6\xbd\x80\x12o\x13s\xc1O\xb7\xe3\x0e\x89\xd5]Z*__\xb3\x05@\xd9\xa5\xdd\xd6?\x16y\xa7\xdf\xe0\x86y\xe0\xf6\x13q-\xbd#\xed\r\xdc\x8e\xcb\x1b\xdb\xf1\x97\x8a\xaf\xa8z\x01%0\xe9\x82zw\xb1\xf2\xa2J\xe7\x95C\x0b\xba\x10\x80\x85\xca\xaez\x87\xe9\x1a\xc1\xb4/\xa5\x13\x1e\xc8`U\xe3\x0e\\v\xb4\xf7H\xb2q\xc7N\xc2\xab\xaf\x8a\xcdm\x07\x9dy\x0eZ\xb6\x1d\x82\xd6\xefh\xe0\x88Y\x90X\xd1\xbe?THF\x89\xd1\x8c\xa3o\x14a\xfe-\xd7\xab\x00\x0c\xa73\xe4\xdf\x04{\x10\xa0\xe9\xab0\x10!k\x10\xff2T+f\xc5"i\xab\xa7s\xd9\xe4c\xe7\x94\xa3\xc1\xd9\xb9\x12v\\\xb9\x85(\x0b\x1b\x17 \xe8\x8a9\x15\x89\r\xcfF\x974\xc9\x9e>\xc4\xb8N\xe4^+\xe3K\xaeVt9\x0c\xc2f\x98U\xcb\x80\x91\x9a\xdc\xb7\xb0ySg)\x98P|Ry6\xcb\x8a`k\xcc\xb7\xbb|=\x9c[\xbf\xf5\x1aB3\x84+\x82\xbe;\x8b\xe4\x08\xe57\xc62\xec\xe5)|\\\x00_n\xef\x05vT*\x01\x80\x1bh\xf1:l\x17[2\x9dCF\xe8b\xdc\xaa\xe9I\xd9\x86"\xba\xc9\xcdr\xa8;\xb4\xc2\x7fE\xd1\x03\xd6Hp\x06\x1ca\xe1q\xb5\xb3jhu\x03\xea\xfc\x1c\x14\x1f\xefU\xc1+\xc4\xc4\xc8\xce\x9d8|\x93\rv\xa9\x03\xe8={\xc3\x9c\xe1\xbd}\xf8|\xf3~\r`\xd8\x8f,k.\xe8\xe3\xbf8wf\xe9<\xdbw\xea\x8d\xc6\xd9\xf7\t\x11@SA\xf1\xba\xa3\x7f\xe2z\xf2\x01JR\x97\xc7\xd6\x13\xbe\xe7\xa7\xe8\xe7\x0b*\xe3\x9b7|O/:\x18Y\x87\xa7\xe3\xd6\xeePE\xc5\'(9\x1e\xad6,\xa0\xda\x0e\x14\x81\r;^\x01v/\xa7\xdf\x91\x8b#Y\r\xd1\xc9:\x80B\x15[\x82\x0b\xaf\xebXK\xf7Y+X\xe5\xa1\'\xcc\xf7\xb2x\x10\xf8\x15\xb2\x87ID\xe4\x92\x069v\x01\xfb\x9a\x85t\x14i\xfav\x8e\xbf_[\xef\x8b\x14V\xad\xcd\x07:?\xc9\x16s\x90\x07\xf7DS\x86\xa7\xce6\n/;\xbb\xb4\x9d1\x9c\xd3r\xa8(0\xb0v1\xac^\x95\x11K\xd7\x931\x82\xdbot\x0e\x87\x12\xc0\\\xb7\x1a\xdeCn\xa6\xf7L\xc2\xd5\xd5\xb8\xd3\xbfU\x1c`\xc7\xe1\x04]g\xda\x9b\xce\xdc\x85\x08\xa7\x10y\xed\xbd\xe2\xdf\xbek\x0f\xd0\x06B \x18w\x05PAYg\x1dsP\xb5\x83r\xfc\x18\xc7\x91\x1f\x9a:\x80\x0b\xdfp\xb9\xda\xcd[:)\xf4\x8cDDK|\x94m,\xdc\x16\xac\xc9\x8eU\x822\xd4\x90t\xd8\xa2\xb7\xde\x08C\x11\xef=\xfa[\xe9(CV\xca\x06\xae\xb8ma\x1c\xcb[\xb0>\x98qH\xbf\xfb\x022\xd6Of\x07I;\x02\xef\xa1\x0cC\x90\xa3\xf0\x1fa`X\x06t\x0c\x1a\x0b\xa7\xd6\x8b\x8e]]\xeb\xc3+_\x932\x8fl\xbd>O]\x97\xe5\x95\xb8m\x12\xa7\x823/\xf9~m\xc9B\x9e\x0c\x84\x06-\x1e\x84\xfcjp\xda+\xe1\xfdz\x89\x19\x0f\xd7\xc1\x15\xbdq\xee\x83\x83\x16\xf9\xb0\xdd\x95!o\x11\xb2S\xc8T\x88\r}\xe0\x94\xc5\x83`\x11M\xb2lT\xdf\xdc\x8d\xa2\xb1\xbb\x85\x11@\x91b\x06\xda\xa8\xe4\xd8G1\xef\xc4\x91\xcc\x7fb\x82\xb8\x0e\xa8\x15\x99:u\xea\xf6\xe0\\s\xaa\n\xdf\x99\x1d\xb2\xcf\xbf\x8a\x92\\\xb4\t\\\xb9\xf7O.\xf4\xa7\xb6\xde|H5\xf4k\xd8bzp\x9d\xce\xfb\x11\x14\xc1\xa7\xf3\xa1\xc71\x93\x9c\xc6\xd1\xec\x08\x03XY\x87\xad!\xad\xb2\xb8\xed\x15\xf8^\x12\x14\xe7b\xf7\x1f\xa6\x98A\x92\x85\xee\x80\xa6F\xca\xf2\xac\x8f\xbb8\x0c\xc3\xbb\xe9:A\x8e\xca\x1d\xdf\xff\xbcC\x12\x88\x8b\xf7y"\x1c\x10\x02\x97\x1e3\xee B+g\x8f&\x003\xa9\x0f~\xa8\xac[\x8f@e\x81\x99k\x03\n\xd9W\xbd\x93*\x90z~\x99\x93<\x08s\xbf\xe0\xf5\x8cSO\xd3\xa3pf&h\x8b(m(\t\xd0\xca@\nh~\x05(d\x93\xf6\x8a\'\x86{\x19\xf7\xcdqB\xde\xecc\xab\xdf\x9d=h\xaeN\xbd\x19t%\xdc\xc2{\x92N\x01v\x90\x818=\xc9\x14E\xf7\x02\x92.\xb6,\xa9\xeeC\x18\x17\xf6R\xfb\x90\xef\x00\xb0;$\x1a&E?\xf5\xc0B\xea\x84_\\\x8a\xed\x8e\x8d\xdc\x9eu\x13\x1e\x9b\xe8 \xbf\xd7\xae\x83\xa0\xdd"\x1f\x0c\xb2\x8b|(\x1c\x14\xfer\x96\x81\xfb\xa7\xba\x81\xe2|\x19\x02\x96\xb4*R\x1bHM\xb1l\xaa\x14\x82\x96\x1c8L\x8dJ(j\xc2\x16\xef\xb8\xabB\x83\x04\x16V\xfd\xc5\x0c\x7f?fMT\x87"\xbb\x8c\xe9\x88\x1b\x86\x9a\xd5?\xfb\x06s4\'@\xcc\x93\x08(ERO\x1aJ\xf0E\xd9:D\xbb\xcdV\xd9\x1e\xcc#\xb4\x9b\xdb\xe6#\x8f\x823e\x12\x92\xec\x98\x1e+\xfc\x93\xcc\xcaY\x16\xedl\x90\xce\x18\xe7F\xf4\x90\'kX\xbb}\xa1f\xbfY\xfc\x9c\xd5Dc\xe5\xf0\x1d\x86\xack\xb9BL\xb9\xf7\\\x1b\x87b\xf3{\xa1\xf2B\xd3\xa1\x07\xd6$\xcc\xc4>\xb7\x96\xf1\x04\xa5\xe3\xea\x82\xaf}\xdb\xe0P\x17\xc2\nU$\x96Q\x1f3\xaa\xc2I\x11\x85\'\\Z\xd1\x8b\xb4\x91$j\xbdA\xe6d,\x00\xdb\x9b\x13\x01\x8et\xdb\x87\xad\xed\xb8\xc3_\x9a9\xf7AvWs\x18\xb9\xde\x8c\xed\x1e\xe4\x8cy\x8d\x03~V\x8c\x03\xa8n\xdc\xd2vs\xe8\\\xc5\xcd\x9dNE\xe3a\xda\xee\xb3\x91\xc8\xda\xfd\xda$\xff\xc1\x84\xee\x1e \x0b\x17\xfc7\x83\xc8\xa4\xdf\xdc\xc3\xe1\x8ej\xa2c\xa2+\x0eV.\x1bu\x83I`L\xd8&\xce\xca\xbf\xe2l\x84_\x1f8\x0f\xbe\x1c\xb8\x97\xad\x1f\xcfC#\xe5Pv\xc6\xde\xebM\x18 |Z\x04\xf3\xc090M\xd1l\xbdQ\xf2\xd6\xe2\xa5\xfan\x83\x97\xad4\xccK\x17}W\x1b\xd4Q\x86\xa2\x8a\xcb#x!\xc1\x9f\xf2\xfc\xd171\x8a\x07\xfda\xce7\x9cm\xb7t.\x1c+#\x84px\xf4J\x96\xbd/dK\xba\xe1\xe7\xf0\x17\xfe)\x10\x0fj\xeeW\xbfgR\xf3\xa6\x80\xea\xe2c\xb3\x8a\x02\x95\xa3\xe13B\x0e\x18\x95\xf2\xc7\x91n\'&\xb42\x92\xe0\xc0l\x03F\xee"@d\xc4\xcda\x99e\x007\x93\x96\xa2o3h\xb6-%\xcbg\x1a\xef\xd8\xb8\xe5pMz.\xf6\x9f#r\xc9B?\x9a\x1d\x94Dai_5\xbfA\xe8I?s\x16L\x83\xbd\xc9\xbf\xec\xa6<\xff\'\x8a`\xd2\x1a69\x83\t\x86\x87SBc\xae\xd6\x8e\x0c\x8c4~\xa7e\x91{R\\\xbd\x8d\xe7\x8f\x07F\xe6\x85Z\xcag4I\xef?\x8b\x0f0\xcctt\xccy\x19\x94\x94\xd9\'\xe8\xc4\xa4\x05B/\xfd\xa8i\xf1lGT\xc3\x1b\xd4\x99\xd5t\x19\x11\x16\x9c\xc2\xc6\xe1\x1a*Jw\xc5\xe0\xd4\xcel\x99\x7f\xf6\r\tJ\x9c\x94\x13\xc0\'\x8a\xb6\x00\x19\x9c\xc85o\rbs\x8e\x95z\xfei\xb4\xe1\xb6\xa5\x0e\x15\xd7\xac\xa6V}O]\x0e\x95_B\x14\xf5\x8a\xe1\x89y\xf8\x9e\x1f\x9b\x021\x9e\xf7\xd17k.,\x984\x19\xb8\xa2\x1a%6\xeb\xc2\xe8\xc8\xe6-c\xd0\xeb<\xda\x8e\xafY \xfd2\xe1\xedmuZs\xc8\x1c\xd3\xe7\xec\xfd\x81\x90\xf3D\x82\xee\x02o\'Y\xb3xj\xaf\xb7\x88\x0b\xe5\x8f\xdaN\x91`{U\xff*\xda%\xe7\'$\x0e\xc3\xaf{\xf8\\\xfb\x06\xb1[\xd9\xd2\xa1\x969\x05J$s\'\x94\xcd;bj\x1e\x11\x80\x85=v\xf6\x96L\x04*\'\xc8\x98;\x90r\x96\x93\xa8qC\xa4Po\x02\xa3\xa6\x99\x85\x00t\xd6\x8cE\xcf\x84N\x0f=\xb7\x7fFl\xfc\xbcW\xd40\x06=\x80\x14\x10\x1aS\xf1\x9c\x89\xd2\x05\xd73\x9c\xacR^^\x9d2\x11\xef\x8dyq\xc7\xa7\xf6%\xb6\x91\xca\xc7\x12\xda\xe4\x83\xbe[\x84hiY\x19_\xc2co\xa0\x06\xc8\nHF\x1c\x1d05\x809\rC\xeb\xdaw%\x98\xbc\xf2^\xa0\xef&\x8a\x12\xac\t3\x1d\x93\xdc%O\xa3\x04\x81RO\x1e\xcb\xc3S\xa1\xea\xc2?ak\xf0\x814\xc0\x99\x83@\xd6\xfa\x1aLy\xdbs\x7f\xff\x18n\xf2y>\x1b\x06\xdb\x14\xa7\x98\x98\x96\x8c\xf1\x15\xe0\x00\xde\ne\xeb}\xd0\x1eh\xaa\x16\x19\x04\x1e\xb5\xa1\xd0\xaf\xd8\x95\x9cW1\x82\xe2p\x88\\\xec\xc0d\xcc\xf5`\xb4x0\xc6\xaa\xe7\x85\xe3%^\x1a\xff\xe6\xaeC\x82\xf4\x11&Q\xc4\xcd\x86|\x93]\x96\xe3\x1ax\x06\xb9\'\xc5\x82\x9b\x9f\x87#\xc2\x86\xecz\xed\xce]\x1d\xa5\x17\xd1DM@\xa8\xd5\xeaGXOs7h&\x0b\xa4\x0fr\xbba$~\xe2\xa5\xce\xd0\x03&d\x81[\xf5)\xdcp#{/\xb39nB~!\xa6,\xfa\x94tM\x0e\xb4\x90\xe8\xa7\xce\x03\x97\x18\x83\xc6+0\xaf\xaa\xd9\x10\xe6\xcb,\x90y\xbca\xa2\x94\x1c\xb3\x04\xf2g\x95\x98q\x0e<\x07\xf4\xb4i\x95\x89X\xa6\xdb\xd6\xbe\xa1\x9d\t\xf8\x0f\x07\x8bqz\xf5\x17r\xa5:\x7f\x19\x11 \xcf\x88\x9at\x01\xcdQY\xb3C^\x83\xba\xe8<\xfd\x05\xf4\xcf\xbb\x89N\x9e\x89\x9f\xa6\x11`\x12c$\xce<\x95\xfbz \x1c\xc2\x05W\x16FC"\x04\xc5f*\xc1k\x98u+\xb2a\xeb\xd5%\x9f\xe3\xbcf\x8b\x0e~ju\xd0\xe4L7\xf2+l\x88\xfc\x1b\x89\xa48\xa4\x08\x8f\xa3qAA\x00,j-f\x1ak\x9f\xcfC\xf0\x84`)\x8a\xb3\xf9\x18p\x8c\xdf\xfbHje\'\xa5\xbb]\x12\xe4\xe0\x01\xa9\xac\xfd\x82&`\x1e\x00\xee\xa3?\x98O\xceU\x9dk0e\x1a\x88=x\x9e\xd6!QV\xd7FdO\xce\xcf\x1d\xa7y\x12\xb9\xd1\xab\xb0U\x9e\x8d4\x1fTHU\x9azl\xa1i4\x8a\x82\xbe\x16\xdd,/@\x8eZ\x15:\xe8\'t\x85~}\xa7\xf5\x17\x1af\xa0x\xaf\x7f\x08\x94O=\xdf\xdb\xb2\x9b4l|\x9c\xbb\xe4\x17\xd7\xe8\xc3\x17\xdb\xf6\\\t\x14E\xb0\x8bcn\xb3z\xfdE\x93AD\xb1\x84\xb12\x04e\x1f\x8850\xeb\x97\x97>\xc8\xd5\xfci\xb1\x96`J\x81\x81\xe4\x8f\x1d\xeaH\xe4\xe8\xdd\x9d\x91\x85\xceV\xaa+\xfc\x06\xe6\xee\t\xbf\xdb\x98\xf4\x9c\x1e.\x82\xc2\x1dtq\x92\xff\xbdj\x8e\xc9dS>"\\\xdc;\x97\xa7r\x13\xd2\x08\xd7=\xe3\x1er\xe1\xb1O\x14N&A\xfa\x10\x0eD\xb9\xe9sy\xa9S\xd5\xd0p\xacGm%\x9c\x03\x93\xa60u;c\x82\xbb:\\3\xb5\xaeEG%\xb6,\xd9\xd9\rm2\x91\x083C\x93.&\x1cjB\x8a~\x87\xc8\x9b\x93\xa3d\xb7)\xf7&\xe5\x10(0,Zw\x9eH<\x1eyE\x80\xdfW=\xc3\xe0)e\x7fry\x06\xe4\xe5\xf6\xc8\xcd@\xb5#kj`{\x9b\x93Pa<7\x95\xf5!\xf7d\t\xed\xf3\x83\xc1-\xd6,\x1a\xba\x0e\x1c\xbf9\xfaj\xdb\x97.\x01\xf1\x84\x8at\xa5\xe5-,\x91\x15\xa9\xd8\xb3\x80dK)\xf9\x98\xac\x96@{\x1a\xf7C\x9c\x193\xa0"D\x8d\xefLxs\xc7\x80\xdcE\x07\xe0TS\xf9H\xb7\x86\x19|\xf2\x83|\xdc;Z\x04\'S\x0e\x95\xed\xefZ\x14\xb06\xdf\x9d\xd5Z:\xa7\xca\x1d\x1e\xc0E\xc0\x8aG\x80\x03~Sk\tl\xad\xd1\nue2j\xbe\x99\x9flH\x98\xc4\xf8)\x05\x14\x7f\x17v\r\x99\xef\x96A\xce\n\x15E\x8e`F\x99\xca*s\xec\x97\xd5\x7f\xd0\x85\x9b\xbd\xd2\x08\xbf,\xdfs\x9dYq\xcf&p\x02\x08\x9cz\xe0D\x01k\xdd\xfc-\xef\xe6\x8b[\xb1ac\xc3\xb5%\xa1\x8b9\xa8\xc1\xdf\xf1\xe9;\xdfg\xe9\x0b]\xda\xf4\xf1\xb9\x03\xd9\x03\x04l~*\x8fr\x87\xeb}\xd9\xc4\x0b\xf6\x0f\xe4\xcc\xd6N\xc8Y\xd3\xd0\xbd\xd6\xdd\'\xea\xb4v\x83|[qka\xcc\xc9\x0f\xf6\xe0\xb2\xf6e\x80t\x8e\xf1\xf0x\x8a\xa1\x0c0\xeb\\*G\xf9\xfc\x0b\xcbA\x90\xf6B\xf5\x8e{v62\x04hA\xab\r+\x00\x81\xa9\\\x7f\xb0{\x18\xe5\x02\x88\x98\x15`&\xa1\xae\xc0\xe0\xf2"\x12\xb0\xdb\xdc\xeb\xd7 \xbf\t\xb2\xb2\xa9\xec\x07\xc2 \xd7I\xf7\xa1B\x9bk\xb6\xd7\xad\xd1}\xa1\x9c\xf4{\xe0^\xd2d1@\xbcQ\xb4\xf4Z\xc3~\x94\xb6xf^!w\xaf\xc2\x14\xac\x90v\xc5\xb2\xc1H\x19\xa1\x83@\xff\\\xb8>}"\t\x0cV\x0f\x08\xad;\'\xce\xff\x1f`\xf4/\xc5"f\xd6n\xef\x8b\xa3\xeb\xb7\x93\x8a\x15\xd2}-^\xc5\xdf \xc5\x08\xd3#\xf7\x9a\xed\x99(\x98\x8f\xadLy\xb3\x1b%\x97\x9ci\xe5\xaf{|\xed2\xe6\x01\x889\x8d\xa9#\x12\xefSRd\\\x19Q\xc9\x15\x9et|\xb9"\xdaD\xfb\x1f\xa9[\xcb 4A\xdd6\x078T\x1eg\x99\xfb\x9f\xc4\xe1f9\x12\xe9~>\xfa_\xe8\x81Z\x08\xe3\x054\xbaD\xbb\xa6\xef\x9c\x04\x8a\xe6a\xd8\x9b\xd7\x1c\xaa4\xaf.\xb1\xe6\xfbQfsA\x8c\x80,|\xe7\xa0\xcf\r\x90\xd1\x04\x0f\x9d\xe6\xaa\x82\xcek\x93\xfc<\xa9\xd9%\xa2\x84^\xe4\xdb\xac\xa6v\xea->y\xc7M\xb8\x90\xfa>T\xaa\xe9\xd4*\x86\xc6\x1c,\x00u\x057\xf2\xa3\xa0\x89\x1d6:\x8d\xb6\xc2o16#]\xa1\xa0l=\xad\x1c\xaf7\x86\xf13\xedsa\x16qkU g\x1c\xc4\x1f\xa5\xca\x1a\xfc\x15GO^\x0fe_\xa1v\xd6\x9b\xa3b\x03C\x01\x03B\xecZ\xd3\x99\x1e\xbb\xe5\xf4e\x04D\xf7\xc0h\x1f\x8a\x80\xe8\x92\n\xa6\xd8[\\\x84\xbeY\xe9F\r\x9fX6\rO\x03\xdf0\xb1\xf2\x04\x1c\xc8\x83\x1b\r\x02-S\x81ey\xbee \x8d\x9c\xe9\x97\xb8\xc4+\xc3;/\x0bMg4\xfa\x85\xb2F\x99m2\xcf\xb4\xc7BR\xd3^\x86@&]\x82\xde{hW7#\xba\xe4\x02\xb1\x84\xa9\xebXKc\xc4M\x8c!FS}N?\xff\xdcz\xa4\xd5{\x91\xf4*@ER\x82\xaePH\xeb\x18\x80\x82\xba0}\xf1\xb8!\x08\xfa>\x13B\xd0 \xb0n\x9b\x1e\xb6\xffsv\x1bI\x86B\xd8^{\x89\xf8\x1c\xccf[\xb0N\x7f\xe2\xed\x83)<*\xb5\xc6\xce\xd70\x1aJ\x98\t\x98q)\x8f\x86\xfc\x18\xc5~.C\xe1GY\xb5\xd3v\xcb\x9fD\xd1c\x8a\xe6\xdaY\xa2\xe8/j\x90R:)\x8a/\x067\xdbv"XP\x89\x057\x9a\xc1N\x93\x1e\x0c\xb2}\x9b<fK\x8eg\x13\x1f\x92|>\xfa\xaa\x10+\xd1=\xbe\x00\x8a\xb6\xc2\xa9\x00*\xb9;[\xec\x9d\x8a\x19#\xa5\xdeX}\xa3D\t\xdc\x83\xb8)%\x8c\x9e{J=\xaa\x8a+!\xd6K\xe1\x12\xe2\x95t\xa5V\xdb\x99\xe2CiG<\x07\x93Y~w\x119\\_\x9e\r\x8d8\xd2\xd87\x1b\x12\xeb\xcc\x02\x0c\x89\xac\x8df\xf2!\x99F\xf53\x1aK_\x10\x1b\xe7@\r^$\xedFX\x10\xab\xaf\x8e\xf7*i\x7f\x13\xf0\x18\xae*(Es\xffW5\xb2H\x81\x1a\xa7\xcfr\xef\xa7\xcd3\xb5\xee\x1c\xf1\x8c\x1fv)\x1c\xa5&U\xbf\x0fa\x9c@\x15\xa3u\xe7\x89_>\x01\xba\xdb\xf5z+\xe7\xe2\x00\xaa!7\xc6(\xa3\xba\xa5rrI\x02\xb6\xa5W5J\x97}\xc8\xcd\xbf9,P>\xa4\xbd\xcd$\x91\xa4\x16\xdb\xd6\x9b\xe4\xb8\xa4OPiA\xde\x96i\xbeE,\xd7\xac\x02\xde\xbe\xcbi\xbb\xc0\x94\xa9\x04\x8dR1n\xc8\xa3B\xc0\x8e\xc0\x19\xb5k]\x94')
|
4
|
-
|
1
|
+
from flask_admin.contrib import sqla
|
2
|
+
from hiddifypanel.panel.database import db
|
3
|
+
import datetime
|
4
|
+
from hiddifypanel.models import *
|
5
|
+
from flask import Markup,g
|
6
|
+
from wtforms.validators import Regexp,ValidationError
|
7
|
+
import re,uuid
|
8
|
+
from hiddifypanel import xray_api
|
9
|
+
|
10
|
+
# from gettext import gettext as _
|
11
|
+
from flask_babelex import gettext as __
|
12
|
+
from flask_babelex import lazy_gettext as _
|
13
|
+
from hiddifypanel.panel import hiddify
|
14
|
+
from hiddifypanel.panel.hiddify import flash
|
15
|
+
from wtforms.fields import StringField,IntegerField
|
16
|
+
from flask_bootstrap import SwitchField
|
17
|
+
from wtforms import TextAreaField
|
18
|
+
from wtforms.widgets import TextArea
|
19
|
+
from flask_admin.contrib.sqla import ModelView
|
20
|
+
|
21
|
+
|
22
|
+
class DaysLeftField(IntegerField):
|
23
|
+
def process_data(self, value):
|
24
|
+
if value is not None:
|
25
|
+
days_left = (value - datetime.date.today()).days
|
26
|
+
self.data = days_left
|
27
|
+
else:
|
28
|
+
self.data = None
|
29
|
+
|
30
|
+
def process_formdata(self, valuelist):
|
31
|
+
if valuelist and valuelist[0]:
|
32
|
+
days_left = valuelist[0]
|
33
|
+
new_date_value = datetime.date.today() + datetime.timedelta(days=int(days_left))
|
34
|
+
self.data = new_date_value
|
35
|
+
else:
|
36
|
+
self.data = None
|
37
|
+
|
38
|
+
class LastResetField(IntegerField):
|
39
|
+
def process_data(self, value):
|
40
|
+
if value is not None:
|
41
|
+
days_left = (datetime.date.today()-value).days
|
42
|
+
self.data = days_left
|
43
|
+
else:
|
44
|
+
self.data = None
|
45
|
+
|
46
|
+
def process_formdata(self, valuelist):
|
47
|
+
if valuelist and valuelist[0]:
|
48
|
+
days_left = valuelist[0]
|
49
|
+
new_date_value = datetime.date.today() - datetime.timedelta(days=int(days_left))
|
50
|
+
self.data = new_date_value
|
51
|
+
else:
|
52
|
+
self.data = None
|
53
|
+
|
54
|
+
|
55
|
+
class CKTextAreaWidget(TextArea):
|
56
|
+
def __call__(self, field, **kwargs):
|
57
|
+
if kwargs.get('class'):
|
58
|
+
kwargs['class'] += ' ckeditor'
|
59
|
+
else:
|
60
|
+
kwargs.setdefault('class', 'ckeditor')
|
61
|
+
return super(CKTextAreaWidget, self).__call__(field, **kwargs)
|
62
|
+
|
63
|
+
class CKTextAreaField(TextAreaField):
|
64
|
+
widget = CKTextAreaWidget()
|
65
|
+
|
66
|
+
class MessageAdmin(ModelView):
|
67
|
+
extra_js = ['//cdn.ckeditor.com/4.6.0/standard/ckeditor.js']
|
68
|
+
|
69
|
+
form_overrides = {
|
70
|
+
'body': CKTextAreaField
|
71
|
+
}#واقعا برای 5 دلار میخوای کرک میکنی؟ حاجی ارزش وقت خودت بیشتره
|
5
72
|
#Email hiddify@gmail.com for free permium version. Do not crack this cheap product
|
hiddifypanel/panel/database.py
CHANGED
@@ -1,5 +1,20 @@
|
|
1
|
-
|
2
|
-
from
|
3
|
-
|
1
|
+
from flask_sqlalchemy import SQLAlchemy
|
2
|
+
from sqlalchemy_utils import UUIDType
|
3
|
+
|
4
|
+
|
5
|
+
db = SQLAlchemy()
|
6
|
+
db.UUID=UUIDType
|
7
|
+
|
8
|
+
def init_app(app):
|
9
|
+
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True
|
10
|
+
db.init_app(app)
|
11
|
+
|
12
|
+
# db.create_all(app)
|
13
|
+
# app.jinja_env.globals['get_locale'] = get_locale
|
14
|
+
|
15
|
+
|
16
|
+
|
17
|
+
|
18
|
+
|
4
19
|
#واقعا برای 5 دلار میخوای کرک میکنی؟ حاجی ارزش وقت خودت بیشتره
|
5
20
|
#Email hiddify@gmail.com for free permium version. Do not crack this cheap product
|