hiddifypanel 3.0.0.dev64__cp39-cp39-manylinux2014_x86_64.whl → 3.0.0.dev65__cp39-cp39-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\t\x00a\r\r\n\x80\x00\x01\x00\x08\x00\x00\x00\x04\x00\x00\x00@\x00\x00\x00\xb6\x14\x00\x00\x12\t\x04\x00\x89\xd4\t}\xa8\x81\x92\xd5\xf8\xb4\xba\xd9\xc9\xa2c-\x00\x00\x00\x00\x00\x00\x00\x00\x05\x1a\x8b\xa3\xfdn\xe0\xbcE\x15\xbe\xbcb\xf2\xcf\x9c\xa3\xd6D\xf6V?\xb1\x82j\x93-\xf3J\x01TG\xbas\x05\xe3\xce\xd6\nQS\x8d\xe9\'u\x9a5\xcc\xd3\x1ex\x14g\xa9;6\xca\xba\n\xd5;\x08\xa8\rPr\x04|\x18\x8a\x15\xb2\xa1D\x90t\x13\x93\x88\xf5\x95pwD\r\x04\xba\x1fh\x1c\xdf=\xc9V)\x99-\x18\x0e\x0f\xed\xcb\xc2\x9a\x82q\x06\xbaz\x9b>rAB#\n2\xd3\xccU#A\x9a0\x1e\xe3\xc9\xd6\xa10\xc79\xe6\xdb\'\xfd\xeff\x06\xf4*\xb6 \x95\xb6\xfd\xb2b\xcc\xfb)\xf6UB\xd1\xbe\x91\xc7\xfaN/c\x1b=}\xb9\xdd\xb7\x8fY\x0e\xd5A\x98\x97\xe8\x8b-\xcd\xef\x8c\x0b\x08.\xba\x12\xcf\xddu\xcc\x19\xde\x10\xdd\x9ce\x04\x854\xfe\x01!{\r\xc2bt\xd6T!I\x95H\xba\xac\x97:9\xe6\xa0\xe9\xd1\xb2\xbdJ|\xf6g\xea!\xa7u1\x0fJ\'oa|\xd0\xa1\xaca\xa5\xb7Q\xac7R\x0bP\xc8e\xf6WBj\xc9q.\xd0\xcc\x96\x94UP\x07\xee\xcbh\x8c\xa2\xc1\x0cW\x03\x07\x06\xc4\xd7\xfd\x7f\x85\x1bxz\xeb\xe0\xdf\xa0\xd2@\xa7\xfd\xd2Q\xdb \xea>\x01\x00OQ@\x8d8a$\xe9Z0\xccp\xa3ON\xd2sf\xe3O=\xb0\xb5MK\xab~\x98E6Lz\xb4\x925sT7\xbbs\x11\x8a\xcc\xa2\xfa\x06!d\x86\x0eK{\xf8\xc7\xccx\'\xc5\xdf\xf9\x18G\xe7\x10\xe0\x8b\xbd\xc9\x06\xd4=\r%cD\xbd\xd6P\x0bW\xd7\xad\xb3\xdbx0\xb8K\xe2\xb3\rQ\xce\'\xfb\xea\x01uC\xce\x17W\xd6\'\x8b\x1dA\xe5\xab;\xa8\xd0\x07g{\xc6E|\xfbH\xa0\xa9|X\xdeQM?\x9a\x06\xbf\xb33\x1dV\x19\xb8o\xe7\xde)\xb9d=\xf1Kh^fs.\xc3>\xb8q\x06\x1a\x83\xd5\xe7\xc3\xd6\x05\xa8\xabn\xe2x\xb0\x01=hP\'\xf2\xb7t\x1c\xdc\xd4\xb2\xa5I\xe7m\xfd\xe7\xa8\x7f\x80\xecs\x0eX\xdf\xaa@\xd1Y\xf2\xe3\x04A\xbd-\xb0\xf8\xaaH\xfas\x94w\xd9e\xbf\xcb\xc1\'\x13\xe1\x9d\x87`\x02Q\xd8\x8bW\xbe\x93\x84p\xc8\'\xbb%\x8f\xfe\xdd%LL4\x1ff\xf5\xfd\xa5\xcc\x7fo2\xf4\x81\xaa\xe6#"7^\xf9\xed\xc4j[rZ\xf0o\x7f\xed\xce\x02\x12X\x96l\xa6\xab\xa1\xa2\xaa}\x16\xecA\xc2\x012_\xe6h\xa3M\xa4\x8dc\xe9\xa4V#\x14g\x85k\x94\x02\xa6\xcfC\xc0F\xcf\xfc\x14\xf0\xb4\x94\x88\xb7\xb8<\xd0\xaaQ\x93\x0cm!\x96m\xc7\xfaAh\x8a\x99\xb03*R\xf6+b\xefg\x8d\xb2`\x88\xa4\xdf\\^\xceO!\xe8\x05*\x1a\xd6z\xeaR\xc3\xd7\x17\xcag]n\xc7K\x858~J\x9f\xd9N\xf6\xfd\x8ew>1\xca\xb6d\x9c\x9c\xac-N\x8dv\x15\x808$\x15_\x1c\x8b*\xdcv\xc1M\xf3G\xb1\x83\xef~!$D\x8d\xc2l\xd3\xe9\xbd\x02\x00\x02\xb4\xcdU\x1c.\xe0\xea18^\xcd\xa0\xdb\x9dN\x87\xf6\x1b\xacz3\xbcU)\xde\xd4-\x13D\xf5\xa6l\xa6OF=,\x08=\xcc\xb1zu\xc5t.\x04A\xb26\x03;\x07E\x0f\xe9of|\xf8W2\xef#\x9e\xf6\x0b\xf6\xb14\x85\xd4=\xe1\x97\x0b\xd9\x96\xd5;\xa2\xac\xea\x9a\x00u"\x038\x163C\xe5Y\x985q:\xdf\xe8\x04\xbe{\xc1+\xba\x0f\xf7M\xbf\xba\x97\xbd\xb3d.\x84\x83q\x8a\x1e\xc2[Z\x93h\x8e\xb9Y0\xccK\xde[\x16\xaf\x8d<4{X\xdd\x004Q\xa1d><V\x05\xb2;\x17\xd4\x19!\xd2\xb9\xde\xba\x8a\x05)mZ/1\xeb\xf3%W\x19\xb9\xd1\x9d\x8e\xf1\xe6\xce\xbcy\x9d\x95Ow\xdfy@E\xa1\x8eAz_k\x18D\r\xfawIv\r\xec]\xee\x93\xd1\xed\x14\xf51t.C\x1f\xbc\x0bd#u\x1e\xb7\x86p4w\'Y\xf6\xecf*^?\xd9\xec/|\x82\xc3\xd5\xa7\xd4\x9f\x89\xf1~W\xee6\re\x1d\xe3v>\xb5\x8b\xca\x19\xe8qm\xcc92lh\xd1\xe99\xbf\xd6\xae\xf1\x077\xba8\x05\t\x89z\x98\xde\xd5\xb5-\xde\x0f\xa8\xd2\xc5:sz]\x02\x9d\xa6\xe2\xbf\x8c\x9d\xd9\x10|FZ\x9e\xad`F\xe00o\xb0Nt\x06\x90\xa0R\xf2;\x158\x9d<=\xbcV*"|`\xf9C\xaf\x99}\x08\xb5-\xd4\xd1\xe5\xe3\xea\x88\xca\xaf\xccD\xc63K\xcb\\\xc7K\xd1\x17\xf9\xa5\xe05\xf5\xdd\x95u)A }\x0e\xd1\xf87\xb6\x99\x1c&\x95I\xa6.\x06\x0f\xc0JJ\xff\x9b\x88r OQV\x1f\xcb\x19%=\x00\xc0\x1c/\x05\xe1[J\xf6\xa1\x94\x9a\xf9\x99\x1aT.!\n\xcbB\x96,G\x163\xe4\xacI\xc1\x94\x96\xd2E\xab\xf8\x8e\xd3\x0e\x08z\x87t\x9d@\x14\x7f|\x9a\xb0\x13[\x9a\xae\x0eiD)\x84\xa3\xf4&\xfe\xe1\xcd\xab`W\x8czP\x108\xf4\x014i_\xbe}4Y/\x8b\x04\xa2H\x822\xacq\x94\x80\x0e\xd62\x05\x98\xc3\x10c$i:\xd3\xa5\xecUCC#.\x02`Os~E"\x1aMk\xf06\xb84"\x18[o\x1f-s\x9c>,\xbe|\xa3\x95\xeb\x10>\x14\xcd\xed\xaa\xe0\x08\xd2f\xb3\xb8\xa5:\xaeV\xc7\x1f\x1c\x92\xea\'\xc5\x8dH\xe0\xc5\xca\xcfaE\xdeB\xceC\x97\xa1e\xd7T\x0f\xad\xd2\x86k\x97\xe5\x08\xb7\xa4\xca\x9c\xc7\x8c\x03\xcc\xf0\xbc\x052\xdce\xa5\x14F\xf0X\xae\x1a\x80\xa7\x9b \x1d=,\xb8\xf5`\xf6\xea\x10\xa5G\xc4"\x9c\x89%\x9eZ\xe5\xbf\'T:\xf0,\xf9\xee\xff\x11Z?\x96\xaf\xf9\xad\'\xf4\xbfmb\xccR-P\x8f8\xdb\x12\x18\x98\xea\xe4+8x)%\x172v\xbe\xdf\xecPu\xf6R6\xf3\xcc\xfd\xb2\x8c\x89\x06\xc8f \x0e\x8c\xce8J\xf6f\xcd\x9e\xa7\xbe\xeat\xdc\x8c=\xe5\x13\x89\xf2\xf0\xde\x13)+\x19[\x7f\xab\x82"\xd2j\x1a,\x10%\xbd\xf3\x0co\x9a\x8a\x17A\xd8\xb6\xfd\x86p \xc9\x0e\x82\x90g\x8b\x07\x94\xee\xd9\xf0$t!\xd1B\xbd\xf4\xd4\x975=\xc5\x9a\xd6,\x06\xce\xae\xd8\xb1zT\xff)\n\xf5\xbdU\x8a\x82\x07\xd6I\xfc\xad\x1c\xaa*\xcc1+\xe3G+:\x1c8\xa72:\xdat\xcf\xaf\xe3\x15&\xcc*4\x8b2\x99\'\xd3>\xc0\xc6\\\x86A,\x88\x98\x1b\x15F\x8f\xef\xddm\x05\x01\xb7\xd7?\xa2&\x1e5\xdd*\x97\x8a\xfa\x84AN\xac\x0c\xfd\xbdgE\x8e\x1eY\xb9FD\x9a\xaf.\xaa&\xc8\xa3V\x13\xab%B\x10\x9a:\xdf\xdc\xd8|\x03\x96\xdc\xc7\x06\xdf\xd6\xe6i"\xf9\xa7\xb7\xb0b\x1ffqy\'\x9f\xe7\x01\x14T;:F\x96\xc2\x9b\x9a\xcb\xb0\xfa\xa4\xf7+3I\xd3\xda$\x90\xa6E\xed\x13l\xd7Z\xbe\xdb&\x05\xc3\xe1\xa7[\xb6\xdd>j\xfc\xf3!\x9a\xd3\xc3M\xf1\xf0\xe3\xcc\x9a\x91\n?eh\x11\x02\x182\xf7\xb8\xea\xb0#\xd1{\xa8\xa6w\xa4\x8a\x11\xe7\xc2\x1f\xa5J~\xab\xdde\xbcx?\x9c\x99/Z=\xf4\xb0\xb5\xf08m]\xde\xd4\xa0\xc5n\x8c\xcbW\x87\xf0Aq5\xd2\rr\x9d\xab\x05\xb5\xa96\xc6\x8cA\xab\xb2\xf5\xfbK\xd0\xbd\xde\xef\xf3M\xff\xf6\xd9\x99\xc3*\xf2\xa0\x8c0\xa2\xa1^\xba\x9a\x05\x13\x8a\x08M\xa8\xaa\xcd\x05\xd5\xe0+-\xff\xeb\xbf<\xc19\xdb\xc1\x02\xec\x86\x86D\xcb\xf9\x0c\x7f\xaeS\xe3(#\xc8\xac\xe0\xe3%d&\xda\xb8\x9a:\xbb\xe2\x9a:O5\x99\xeb\xb1\x85\x88X+\x98h \xc8\xe2\xa0\xc5v\x8c\xd6%Py"\x9a<\xb5\xb8\xbf& \x87\x1c\x98\xfc\x87\xaf\'\xc2An!\x80`\xaf\xbe\xc9\x16\x04\xab\x85\xe6\xdc\xa1\xa9?@Cq\xd98\x914a\xc2\xdeW\xcf{\xdb\xc9m\x90\x9fe\xb0\xb8\xa5\x0c[\xa7\x14[`\xcf)\x1eg\xa4\xf8\x93\xbeR\x8a~\x05]{\x814\xcd.\xd4\'\xa8O \xfejw\xa3\xe6\x945\xcc\xa4\x02n.\x01\x99\xe4\xd3\x12.\xeez%\xf4\xae\x0c\xa0\xaa\xfe\x19\x9f\x80\x92\xfa\xc38\xd2\xbc\x16\xea\xd5\xe3\x82\xe6]iK\xbf\xecQ\xf5_\x16K\xab\xe4\xa7)*^~\xb4\x93\xbe\x80\xbcY\x0f@\xcbmKN\x9c\xcc\x8cwV\xa1k%\xbe\xce\xa4\xa3\xaa;\x0eX\x84m|a\xceAU\x16\x1aeD\x93\xc1N\x8eg\xe7x\xdb\xbe&\x9b\x0fH\xb8J(\x04)\x16\x11\x98\xfa1\x12+\xd3\nX\xc4\xf8I\xcak\x9e\xb8;l\x93\x1a\xff\xc2W\x9f\xe3q2^\xd5\xfb\x88J\xff;ej\xf8\xe6\xd0\x8b\x9c\xa0\x1ay\x1a\xc1+r\xe9\x96\x10\xd0\xb1\xdbF\xfa`\xbe\xfb\xef>\x06n\x0b3n\x95\x00\x12\xf8/A\x84\xce+\xd4\xc9\xb4\xb0\x03\xc7\xe7\xd8\x85\xaf\x12U\xef Y\xc6\xc1.\xd5\x88\x10`\x91\x12l\xa1\x89P\x0c9\xd1Z4%\xa0\x0e+U\xc7m\xd4k\x8d(\xe3\xd4\xc9/\x18\x13\x02*1]7:\xba\x15\x08\x1cJS\xc5x\x08\x904R\xa4\x1b\x94\x83QI\xf28\xedB\x9bM\xdb[\xef\x7f\x94\x00\x85Z\x86\'\xbe\xdd\xe1\x9b\x94A\xd5M<4@ %\xfd,\x08\xf2c5\xfb\xdc\xb4d\x1e\xb6\xddT;G[\xe0>\xe1\xbeq\x92\x04.\xf9iUbE7\xff\xb6i\xfd5\xc0HSe\xe4\x0f\xe0wo\xa42y<\xdf\xa6?\xe6-4M\t\x80!\x181\x8e\x86\xbb\x08\xdc\x07\x99\xd5\x06"\xe2\x15\xbd)\x91\xe51\xa0\xfe#\x13\n\xc3\x18C\xc5G\xab\xc3>zb\xec\xd1\x90\xc5\x80<\xa6\xc7\x12\xf8\x95\xd9\xf3.\xa3\xb8\xd7\x04\xdb\xb8\xbf6\xc6\xe1\x93\xffy\xcf\x83e\xb5V\xa0&\x8dg{\xdcT\xe5Y\xe7\x19\x95\x8b\x8c\x13Xw\x05\x11\x85\xfd\xc2\x0c\x8bR\xda\xdf\x03\x8c\x1d\xe8\x8d,\x7f)\x8c\xf3\xcd\xca\xd6\xb5Z\xa4K\x97\x8bw\x19\x82."\t&}\xb1\x15.\x15\x05\xefv\x97\xae=\x02MEL\xda\x13,\x9b\x10\x93e[\xb9\x0b\x12\xec\xb5\xa8\xd0\xa0\xaa\x1d\x19\xbb\xee\xc4\xe6Y\x10\xc4\xe1Q\xc1\xccUIw\xa4&)X\x13\nH\xee\xae~\x8f\xd4\xe3w\xae+:\xbb\xba\xf8P\xdb"\xf2T\x19\xa9\xcc*\x88\xfcq>\xfc\x89?\xd14\xe0D\xf8_z.\xe4\x18Y\t9\xb4\x17\xb0\xa7\xf1/\x85\xb9h\x99\xa0m\xbb3\xd3\xe7\xf7\xe4\x9cPi\xc4\xd6B\x7f\x94\xf6\xc3\xe81\xa4`+-\xcb\x1avD\x81~J\x12\xe1\xe4\xfd\xc9^4o\xfd\xc1`<\x02\x1f\xeb\x96\xdea\x91\x00$\xcf\xe9\x9c\xca\x13\xf5\x14\xccI\xd7\xa6a\xb7\xaa#\xb0\xe7\xc0<\xe2\xbc\xe3\x10U\x02\xe7\xde:\x1e\xfd"z\xac\x12\xe9\xebF\xaf\xd1\x93\x16\xdb\xacOV\xe5i\x9c\x19\xc0!\xf0\xfa^\xbe\x8bEy\xdaS\x8cF&n\xd8*M&\xcb\xa8\xc5\x14"\xb7\xabn\x96%|6 A\xe9\xb6\xc9\xbe\xf9\xf0HO=\x80uq\t\x1et\xadJ@W\x9bm1\xf8/\x88\x086p\xba\x98j?\xa8\xa6\x87\x9e}{\x85\xf9X\rX\x92[~\xbb:\xc8\xa3\xf9 \xac\x84\x17!\x97\x97\x83\xee\xf3\xcb\xbb\x8f\n\xa0\n`\x93\x9b\x89\xd5\xffu\x98bAY\x81\x07r\x93\x0ff\xffm@6\xc1\xd4\xa7wq\xdb\x16j\xcd\xf7P\x8d\x7f\xe4\'\xe2\xc8\x81\xebCTa\x13\x12\xa2\x88\xfe\xc0U{\xfa\\\x94D^\x8d\x06\xd6#c"S\x8f\xa4\x93b\x9b\xf8\x16\x98\xee\x96_\xec\x8aV\x11\xc3C\x8a\xfd\xf6\xb6j\xf7\xc9^,*\xe8!\x9bA\xec\xe6/P\x15\xa5L\x0c\x84V]\x9d\xe4\xc5Y\xdb\xe5+\r\x13\xa2\xebBA\xed\xe1\x14\x1b\xf0\xb5\xf5?\x8a]\x96\x88\xff}\x0c\xcc\x17\x86\xf6\x82\xd6\xb9U\r\xf02X\x84E\xa1(\xa6\xd6\x89\xfbB\xd7\xa1K\xc1G\xc8\x82-\xe5\xc0\x89\xd8\xf4\x02\xd8\x98\x06s/\x89\x0e\xbb;\xc5\x12\x83\xb2XM\xe1T\xa1\xb6O~\x9e\xe0\xed\xf8\x8c>j\x17lE\xc8\xe7\x1c\xccm\xcc\xab/\xc1@p\x95\n\xd2p\x13@\x95\xce.\xdd\x05\x1c\xcei\x9c\xf6a1\xd12\xfb*\xfcN\x11\xd7\xa7\xe1\xda\x19\xd8\xaaAAB\x1b\xdfG\xda\xc8\xb1\xfd\xa6\xd9\x1b\xf4/\x8c\t\x8eR\xcc\xf1 \x97\xb6\xe8\xccM\x9d\xe6bA,\xf8\x02\xedc\xdf,\x96~6\xffE\xdfX\xb97\xf8$s7\xb1`\xd1j\xea\x8b\x9ajeU`\x1c\xb0\xe7\xb3\xa4\xe5Z\xc0\xa7Q\xf9#?\xc7x\xbc\x9f\x06\xcf=\xf96sC\xf9\x11\x98\x9a\x8dH\xac\x15\x90\x19\xcdF\xc7<\xf6#4u\x9a\x84\x1e\xc7\x90\xc4\xe8m\xa6\x00\xb2\xee;^w\x11s=\x0b\x9a\xe3!aU2\xca\x0cT\x8c\xef\x00\xbc\x13\t\xf8\x17\xd8{\xb5{\x10\xfcsNz\xc9O\x05\xcd\xd4\xb7LJ\xabI\xf2\xe8\'\xf8W!\x9fAb*\x8942\x93\x03\x9b\x16\x15\x8d\x94\xa4\x03\xa5K\xadL\xb0\xd4\x01\rT\x94a;\xed\xef\xf3{wsU7U&\x0b\xb9\xd9\x7f\x10Y\x8f\x1cK\x1eg \x86\x9b\xc3\x0c\x8c\xc0]G\x0b=\xaf\x0f:\xfa\x84|L}\xe0?\xe7d"-\xb2\xda<?\xdc}\xf4"c\xaeI\xb1\'\x1aBp2\\F\xdfk\xefty\xbb\xbc\x10\xd4\xdb\xaa\x96\xc4\xab\xc5\x07\x0b\xe4\xb2~\x91\xf1\xf8\x1dL\xda/?\xe3\xd2\xac\x8d\xe7\xd5A\xfaW\x04\xfdw\x03\xa6\x8f\xea\xc7\xe4\x84\xdd\xd6\xed\x1e\x85 ewy\x03\x9b\x99\x0e\x15\x9c7\xc8f\x88R\x14\xe4\xa2\xf1P>-\xda\x8f\xd1\xe0eLxu\xd0#\xd5\xea\xef2&u\x01\xec\xea]~\xf4\xe6Y\xe0\x8a\xa8&\x95\x11_\x86x\x05.\xdd\xf8\xacY+{\xf9\xd0\x8ap\xb6\x1e1\'E\xfe;\xf0\xb1\x8cp\x86\x98\x95\xdc\x89\xa1t\xa3C\x84\xbe\xbdb\x94\x0b\x0eS\xcf\x18\x0bu\x9a}\xe2j5\xae\ng"\xcc4\x1a\xb3u\x14\x0f\x06_\x8cw\x89\xce\xcf\\@\x9cg\x8bA\xb2\xb1X\xb7\xc0x\xf5\xde\xa7\xf6\x16\x8ayd\xa1\xa7\x9e\xfe\x9cW\x86\x91\xb8\'S\x027s\xd5b}`y\x1a\x07\n\x1f\xeb\xf0\xb3a\rjZy\xee\x87S\x14\t\x90z\x83\xca\xe0\xdf\xf2^\x03\xe1je\x07+G\x8f^\x97\x86R\xca\x95\xe4\x9e$F\xba\x89\x00\xde\xfbg\xbb\x9a\x1f\x1fx\x16\xce\x14[\x18R\x8b\xca\xd0\x81y\xd7\xc25f\x15\xa2f|\x05\x0c\xe5\xc3_6\xb8\r\xe4\x8c\xc2 \xa6]\x17\x02\xc2.\xdc\xd1\xec\xa2\x99+\xd9\x98\x80Y\xb3\xe3\xda\xc9\x8e"\xfcSE[c\xb1\xc6\x0e\xf7\xf5\xa3\xb4\\\x01\xc3\x08\xc4p5\x8d\x93\x92\xe9,{M\xcb!\xf2\x1bI\xdf\xcc\xb9\xec\x83w|6\xce\xf2\xb0BX \xd9\x87n\xb1\xde\xc1\xac\xd5~\x1bi\x19\n\x7f\x94\x82J\x95YBSMP6\xe5\xa6R3\xa7\xc9\x05\x95\x10_{U6\xb3%\x1e.\x14\x17\xeb\xdc:Nu\xb4\x19kY\x15P\x0eN\x06\x10\xba\x93\xbc\x062\xb6&\x1b\xf6\x89!\xfe?a\xfd\x87\r\xc8\x93{T\x9a\xcc\x1eTi\x1b\xd6M\x0e^\t\xa5-\x91V\xaa=0\x81\xc11\xb1\xabbVyE!\xb4!\xe4\xf6\xcd\x16%\xa1\x19\xbaX`\x9c\x05\xa0E\x11@\xde\xbe\xd0E\xc6bN\xd99I\x10\x14<q\xd7|\xeaCk\xdb\xb9,>->\xfd=\xbb\x9f\x7f\xbf\x8f\x89\xa4\xaa\xac\xe8\x18\xd8\xfa\xe3T\x07.\xc3\xa4@\xe0\xe9\x87\x15\xe3_\xdb\xa0HO?c\xa8\xef\xee\x8f\xaf\x98;\xa8m\xe5\x0e\xa1;\x8c\n\xda\x85e\xd9\x80 \xfc\x8f-c=\x8d\xbf4k\x80|\xb0L2\x04\x85x\xe3\xd6>T\xa3\xe0\xda\x9dp\xbf\xa6\x0c\xe2g\xdd\xef]\xd0k2Y?\xa4\x1f\xe2\xf3v\xc03y\xe3tm\xbei\xd0\xf9kK\x98\xdc\xb5I\t\xacX&\xdb0!qz\r\xea,N\x0c\xc4\xcbi\xfa\xbf\x81\x7f)\xd1a0\xd5<\xfe\xae+\xbaC\xb0T\xa7`\x10\xeb\x01\xb7}\x06\xee\xd7\x83\xa8\x94\\Q\xeb\xc2\xbc\xe3\xd2<\xe2\xb4\xfa\x14v_\x8b\x86\xfb\xd9\x10eu\x93\x9f\x1a\xdc\x0b\xd7\xc5b\xf2\xe7\xee\x8f\xa58\xe7\x16\x1b\xcfp\xf2N|\xac4\x19U!\x855\xce\xd5m\x83\xf9\xb8\xae]\xf0\x8e\x83\xc8\x1c6\x97Gn\xe1=\xfa\xe6\xe9\xf5\xa9\x7fFG\x10~\x89G\xb2-\xde\xaa\xb7\xf8W\x99\xa3?p\x08\x88\xbf\xc9\xf3\x07&\x13\xef\xae\xafm\xe0\x0b\x90\xb0b\xc6\xe1\xd7\x99\x8d0\xb9\xa3\x08/L6\xe0w\x1f\x1bp\xa5\xd0\xc4`HZ\x1e\xb6\xdc\xed\x0c\xe0\xc9"\xe8\x1b\xa2\xdfU}x\x92F\xfd\xf56\x13\xecMR\x9b\xd2\xb1\xa8\xea\xf2\xbe\xea\xbd\xd3\x90\xee\xeaq(u9\x13?w\xe2\xf4\xd6X\xa1\xdbP)J\xf68\xc3\x8dl\xaaw\xf8\xf0g\x8bY\x97\xdd3\xcb\xc1\xa6\xc2\xa0\x19\xb1\x9f\x8b\x1d3|\xd1h\xbf\xea\xff\xaa \xc9X\xfb\x9b@B\xf7\x82nf\x04\xb3\xb0\xac\xd8\x85\nW\xa6\xbd\xda\x15\'\x8cE\xd6\xa1\xb8\xf2\x98\x93\xa06\xc7\x07\xf2\xcbv\xc88\x15\xc8\x96W\x91\t\x1b\xde\x149,\xb9Y\xa6\xaa\xd2\x06>\xd7\xc1;\xa8w\xbd\xeb\xe6\x94@\xe5\'qK\xe4\xf3M)\x8d\xd1\xce\xc6\xd7\x02\xab\x98\x8c\xaa\xff2\xdf\x1c\x9f\xc8\x86\x05\xe5\xae\x8c\xc3\x87\xe5\x19%\x0cN\x106;D\x9e\x18\x0c\x08\x16\xe7\xe8\xeb[\x98\xc2Q\xf47\x00\xf3\x16\xa1Yx\x17\x1c\xca\x84|\xdc\xcd\x80\xc6\x9f\x8c\xddx\xd3{\x80xq\xfd,fW\xa9|\x9d\t\xa5\xccX\xee\xc6Jj\x95\xc1\x0b\xfc\x08j\xb2\xa8\x88X\x81\x04^\x01\x85\xc3\x0b\x1e\xf7{13#7\x82\xbb`\xcfO\xbc\xf3\xe6\xa1!.\x99\xf1\xbb\xa2r8\x93\x07\x9f\xba6\xdb\xe2\xaa\xe7\xc8\xd1\xc4*\x02\x0e\xe7h*)\xb7i\x16\x14\x9c\xb8\x82\xee\x1b\xa5\xe5\x99\x16\xb0\x0c\xf6\x08\xdd>.\xf1+\xbf;y\xb5\xff\xd1\r\xeb\xfc\xf3\xb0\xed\xad\xa8\xd5\x9d\xcc\xf5\x88\xa5\xd8-H\xc1\xa5\xa2\x10]\xfe\xa5\xfd\x9f\xadK\x87\xf7\xd9\x9en\x8b(\xf9Xy4\xb8\x06s\xac\xea\xc6N\xb0\xba\x12\xdf\x1f!iG\x0e\xc5\xcf\xb2z\xfc\xd0<y\xf4\xdc~\'\x02\x905L@\xcaI\x07\x8d\xf4\xba)n=\x02\x14\x93\x15\xd8\x17\xbdE\xe4\xee\x85]\x0cX\xd3\xb1rT\xb2[EdK\xef\x87\xec\xa1\x04:\xb5j\xea\xca\x92\x82\x81U\xfb\xef\x16\x03\xbd\xc7\x9ac\xf3\xe6r\x03\xc4-\x8a%il\xff\x93\x9blR@1}\xb5\xff\xe7\x03]\xe5W\x17\x8a~c\x9d;mRE\xccw\xa5Ru\xaa\xda\xf9F\xb3L/\xd8\x90\x01\x03/\x9b6gf\xf3V\tXU\xe5\x0b\xfb\x92\xa5\xddlL\x86\xe3\x81Hm\xeb?m\x80\xc9t\x9b\xc8\xb2N\x8e2\xe6\xa2\xf5#\xcd%U\x0b\x9c[\xb5\x06\xe6\xca"\xab\x0f/;J7\x823\x0c\x02\x99i\xc5?\xbd\xf4|;\x0bz\x19x\xafw\xda\xc1\x1a\x83\x89\xbf\xf4\x80\xf2\x8c\x91\x91\'\xd0>Sw\xf4\xd8e\xd4=\xf7\xa1vT\xfc\x81\x8a\x0b\xdd\xe3\xc9\xb7H\x8ek|\x82m\x12\x9c\xe5NX;\xbb@\x7f\xf8\xf9x\xa9\xd4\xf7\x94Z\xbb\x99\xb7\x8e\x96\xcf\xe5\x8e\\\x14R\xb8\x8a\xe9*\xdd\xc4[Bgxn\xa2\xa8\xa2\xd1\xeal\xcfsZ\xac\x81*\x86\x80\xc5\x81\x0e\xb4-P2\xa2\xfa\xf4\xbeI\xb2Ri\x02\xd5\x1a\x8e\xc7\x0f#A\x89r\xc9\x9e\xa8\x17\xd4\xa2s\xb8#\xdc\x95~\x9b*8\xc8N\xbc\xf4=p\x97`\xaa\xe9\xa3eN\xef\xc0\x04\x91\x84\xb2j\x87\x1e\xb9\xe9\xf3\xca\x85H#\xd5\rL\x08?\xc7i\xd8\x10S*u\xd1\xec\xa9z\xd8it\x04 (\x07\xae\xc3\xd5\xa1BU\xa5\x94\xfe\xa7=W\xc4M\x97p\x870\x8d\xd8\x02\x0e\xad\x8aQ\xca\xc0\t\xca!\x0fr\xb8^\xc0\x13\xcb\x8b\xc9\x88\x9fY\x9e)\xe5E\xd4\xbaS\xa4\xc7!U\\r\x92\x10\x88\xa4u\x04\x17\xdb\r\xfb\xa0\xa3\xd9Rpu\x01\x86*\xf4\x99\xadC\x8e\xbe\xaa\xf2#\x8f\xdeH\xdd\x1d\x8c6nm\x8f}<\x17\x08\xfb\xdb\xd0?\xc3\x16g*\x1awz\xea\xcf]\xae\xac_\xab\xbbM\xdd\xd8g\xbf\xea"-8R"\x98\xf9\x1d/\x99\xa5]|\x95\xfdM\xf0\xcb\xb9\xdc\x86\xa0\xe1\xfa[\x11[\xe2>\xea\x7fuk\x97\xb8\xdd\x90\xf4\x9d\x808\xd3\xea\xa1\xbd\x9a\x1a\x07?\xe0z\xd2\xb9\x0b|_nB\xa3\xcc\x9c\x03\xac\x87ztJ\x14_Y\x05\xdbat\xeb\xed\xaa\x1bn=\xaed\xf0\x8a=b\tpU\xdc\x02\xe0~E\xd1+\xd1 \xb6\xee\xc5\xa5\xc95\xb2\x08Ec\x19\x1a\x19\rCs\xdc)\xb15"\xce\x7f`\x99\x0e\x8fO\xd7\x82N\xf5#\xa8\x95\xa6Z]ca\x82\xcc\xb5k,\xfb^t\xb4\xd4}\x8a\xadUY\x8c\x03\x15M\xe0e\xfbp\xf5BR\xcc@\xc2\xef7\xe4\xd5=\xa93e\xdc\xbb\xd6t6\xaaP\x82\xbbY4"\xb5\x15\x99a\xc09\x14|;\x87\x85j\x99B?L]\xeb:{Y\xd1\xa6\x8d\x90?#SA"\x8f[\xbce\xc28\xea-\x8fx\xb9\xf0\xc0\xd3\xe8\x05\x10\xe3\xa3>\t$0\tt`\xca\xa7\x05<D[Ka\\\xa6\x9cR\xad\xfde\x82\x86>\xc9\xcbkp9@y\x80\x90\xcf\xe9}9\x98\xff\x02\xb5\xed\x97\xc1\xe7\xaeHDl\xdc\xa8\xa1+\xd8\x90*Cpw{\xd2m\x0e\xe5y\xd9\xa5|-\xe7\xf6O~\xbc-l\t\'\xc2\x85d\xf8\xa0\x98T\xa2\x9c\xaeC\xe3\xb1]\x93\xa6\xa4\xc4c\n\xff\x93\nK\xe1MU\x17\x1c\x88\xdaDUq\xe5\xaf\x93\xb40\xe3\xa0P\xec\xacG\x95\xef8k\x8eutU\xa2Q')
|
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
|