hiddifypanel 3.0.0.dev63__cp38-cp38-manylinux2014_x86_64.whl → 3.0.0.dev65__cp38-cp38-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/templates/config.html +1 -1
- hiddifypanel/panel/admin/templates/proxy.html +2 -2
- 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 +11 -0
- hiddifypanel/templates/500.html +1 -1
- hiddifypanel/xray_api.py +109 -3
- {hiddifypanel-3.0.0.dev63.dist-info → hiddifypanel-3.0.0.dev65.dist-info}/METADATA +1 -1
- {hiddifypanel-3.0.0.dev63.dist-info → hiddifypanel-3.0.0.dev65.dist-info}/RECORD +69 -71
- hiddifypanel-3.0.0.dev65.dist-info/top_level.txt +1 -0
- hiddifypanel-3.0.0.dev63.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.dev63.dist-info → hiddifypanel-3.0.0.dev65.dist-info}/LICENSE +0 -0
- {hiddifypanel-3.0.0.dev63.dist-info → hiddifypanel-3.0.0.dev65.dist-info}/WHEEL +0 -0
- {hiddifypanel-3.0.0.dev63.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\x08\x00U\r\r\n\x80\x00\x01\x00\x08\x00\x00\x00\x04\x00\x00\x00@\x00\x00\x00m\x14\x00\x00\x12\t\x04\x003\x9fo\xd0\xc6\xf75L\x03X\\\x05\xfe9\x8b\x15\x00\x00\x00\x00\x00\x00\x00\x00\x96\x1b\xe3~\x04\xc7\xcf\xf3\x9c\x1c\'\xc5\xb4\x95d\x9a\x93\xdf\x87O\xac\xfe\xfd\xfa\x91\x87OI\x0ehp\x88qE\x95Y\xa6F%V\xb2\x1b1T\x1e\xf9\xca\xf4xP\x0c\x07U\xce.\xc8!\xc6\xf6\x84e\xd9\xf2|\x95\xd4\x1b\x05\xf1A\x90h\xe5E\xb5\xd4P\xcba\xcc\xef\xd2\x11\xcb^\x10%>\xae\xe1\xdf^\x87\xbc\xfc\x8cvQ\xbd,\xf4\x1er\x12\x17\xd2\x9eo\x94\xf5\xedz\n\x95;;W&\x80\x9eQ\xf1q\xf9\x96\xb8\xb1\x19A\xb1i\xe7\xa2u\xd1\xf25\xcc\x19\x82\xed\x82\xed<\xf4\x82\x18\xa0\x0bH\xe4I\x06a\xfe\xa7k\xeat\x1a\r\xe1we\x80\xdbe\x88\xf1(y\xfd\xc4q>\xf4\xe95\x16h\xf8\x9c\x19\xc0jC\x076\xf5ehP\xde\x82TN\xe7\xc4\x9f\xfe\xe6\xd0\x07\xa68\xd97!nZ\xc6w\x97\x8da\x97\xa8\xd7\x92\x0c\xef\x1f\xdf\xb0\xb6|\xa0w\x17\xdf=\xc3\x15q\x03\x8at\xac\xda\xaf\x00A\x96&;V>\x11\x800\xd2%9\x7fj\xc7\xbf\xb9)?\xe5\xb9wZP(\xbf\rS\x06<N\xea\xfa\xadd\xde\xa6\x97[\xf1\x1b\xa5\xdf\x8fMnX\xbe\xad\x00\xe5eT\xc7\xcb(H\x05\xe5\xd6f(\x8d8+"\xab\xdf\xd6\xd3-b$\xf9\xdbK\xd6\x9e]\x06r&\x9d\xef\xeeL\xa1K\xfa,M\x7f7\x8f\xb4\x1f\xee\xf3\xdb\xbc*_\x15\xb8\xc0\xc1f$^\xcd\xca\x17ps\x04e2\xe9\x06\xd8\xe7\xe0\x19V7?,\xd57.\xb1Y\x01\x02\xb7\x8e2!=\xba B\x1c\xeezE\x1c\xe8\xfc\x83\rY\x18c\x04\xbb\xaf\x15:=\xa3\x8b\x9c3\xb6r\xba\xb8\x06]{\x05\x12\xec\xcd\xeave\x94\xfb\x08\xb1\xf6\xcf-I\x8f\xeb\xd9\xf3\x8bL\xc3\x19t=\xa4A \xb0\x1d\x0f\x9b\x8c\xc3\xc6\xf3\x11\xfe\x8f\xe6q\xb2\xd7\xa4\xcf/J\x91\x9f\x02E\xc1\xf6$f\xc8j\\\xeb\xaf\x16\x92!\xe9\xb7\xe8?\xd7\xd0\xc1\x01(/vw\xb2\x97\x1e\x85Q\x12-\xa0\xe4Ye \x8bl\x10\xa0x\xf1h\n\x15\xc8\x94M\xf6\x1c}\xb2-*t\xb0c\xbf\xbc=_\xf1\xa3\x0e\xba\xde\xc7\xc5Oo\x02\xbf\x92H\x95\xdda\xe6zk\xeb\xbe9B9\xc4\xe0\xd7\xaf\x9c\x91M\nU\x85N\x9c*7\x11\x1f\xe2f\x18\x85\xff\x9a\x1c\x0ce\x99\xe7\xe8\xdd\xaeC\xadg\xc7ac\xff\xdaG\xe6\xbc4\xb5\xf3\x8cl\xd5\xfcH\x17:\xb1\x87\x1b\x13\xadQdR\xae\x00T\xbb"8:\xb7\xc1\x8bjR8\x9d\x8f\x9c]\xd2\xdbm\xe1\x85\xc2h\xd6~\xdeZ\xae\x8c\x9bT\xd0\x13O\xbc\xa9\xb8\xbb\x87Q\xad\x084\x94w\xbb\xe1\xc0.\xe9k:]\x10\xd9\x85\xc8+\x01*Tu\x95\xbe>Q\xa8\x81\xc6&\xe1\x90\xbf\xa9\xd2%6a\x05~\xad\x132\x06\x10X\xf65\xcd\x1fj\xee\x8bf,bD\x81\x06\xed\xe1[\xde.\xaf\x12\x8e"\x99\xe7\xf2}\xbe\xe7S\x8fn<t\x9e9|\x84*\xf4\xec\x05\xc8\xa4\xa0\xce\xd4\x80C\xc1\x89)\xa1\xc3\xf27\x97f\xcb\xce\xb3\x8b\xbf\x7f"O\x16\xe1\xfap\xbb\xa6\xee\xc8\xf7\x14\x1e\x82\x92x\x9e\x0bl\x8e\xef\x07\xe5\xd4\x83\x90u&\x1b\xda\x17,A\x08\xa4\x00`\x01\xcfb9\x89\xa0\xca\xa7x:\xd9y\x19\xb5\xec\xbb\x8c\t5\x0b}\xf2\x921+cf)\x9a\xa7\x02\xe0\xe0\x84\x15\x07E\xd6\xa4V\xc1\xad\x93\x91<\x1b\x04~<v\xf9\xfbS)-$\x83\x95\xdc\x13\xfaQ\xa37J\x9d\x93RJ\x19\x86\xca\xe1R\x97XU-\x13VW\x04X\xfa`\xf5\x87\x18\x01\xcf\x05VR\x0f\x87\xbc\xa3\xe8\x08\xf3h\xc2\xb0]>\xbbRMxY>\x9d\xd2\xf2\x01Mx\xb0\x0c\x11\xac\xe0\xac5\x8d\x85\x0c$\xaf>\xfe,u\xac\xc0=\xc5\xdbI\x8f;\xb7\x86\xcc\xf9\xdat\xdb\x07\xeb\xe4;w\xde3\x8b\xc5\x1f\t0\x8d\x0b\x1b\x7f\x16\xe0Y\xb2\xad\xff\xe6\xa4K\x7f=\xa9\xb1;\x16\xad\x06hQ\x02%%\xb3\xd4\xfc?\x0b\xaa\x8d\xb6\xbd\x07y!\xae\xc3:\x93t\xda\xeb\x95\xfa\xbe8\x1e(\xca\x04\x8b\t+r\x06\xb7(\xef#\xe1\xc8\xb8I\xa8\xd8%\x0cW\xf3\x7f\x89\x8d\xad\xf1\xf9Z\xc3:\x9d\x81\xc8j\x7f~u\x08\xc2\xe0\x9f\x92\xcd\x8a\xd2X\x15\xb3.\x1cc\xb2u\x16\x9a^\xc9\n\'\xabm\xad\x08\xed\xadDLp+e\x84\x95\xaf\xa7\xc0\x06\xa2rI\x94\x88\xab\x91\xfduU\xe1\xd1b\x1d\x84\xd3\xa2\xcf\xc3<\xce\xbeg\xbejn\xca\x12\x86\x1c\xa5g\xe6|PY;\xb4!n_\xc6\xdd+\x86\x0f-];4\xd6e\xa3\xd0\xb0\xf0BT\xf8\x9b-\xb3\xbb\xcbz\xf2\'\xfas\xa5\x93\xdfR0\xb5\x9d\x80C\xf7a\xf2\xd28\x90\xa5\xcev\xe6k|\x00\xedO\xb76\xa5w\xd1\xb6\x1ce\x99w\x97Nk1\xe8\xd4\x15\xd5\xc4\xfb\xeb\x0b\x9c\xf6\xc9\x83\xd2g\x9c\x03\xe0\xd7\xf87\xd6\xf8(HoEL\r\x98K\xf8z\x06\xea#\x86\xbb`\xa4;N8\xf9\x1e\xb5\xd8pYx&\x88\xe9\xb0\xafv\x95D ^\x16GT\xc9\x81\xe7AU\xd9|\x8a\xd1\x02\x14\x95b\xd6\xef\x1b\xde\xd0\x07\xb8\x87\xbdV\x9ac\x95\\\x8c^\x97\xbc\x07\xbf*\xc0O\x9c\xcb\x88\x98\x19!\x8f\xc6m\xd1\x86*i\x8e9\xf1\xc3\x0f\xa5aA\xfbbZ\xfd\xe6Q\xba\xba\x1d\x17{{f\xc6\x86\xbc4\xa3=JE\x9bc=\xe7W\x87\xdav\xb5{\x13\xa1B\xdd\xf3~H\x8dO\xcd\xde2a\xc3w\xa1I\xa9\xc5\x1d\xd4\xe7"m%-\xf8z\xcc\x90\xf2 hW\x8em[\xa0\xc2\xea\x86\x98\xddw\xd2\xd8\xc3\x8b\x8d\xe6\x8fP@\xd3B\xd2\xba\'g\xe5\xb1\xfaP2\x16 \xa8\xbbe\xb4\xfe\xed\xceZ\x0e;Qq\xa5\xfd\'\x15\x10\x08@\xfcj&\xe3:l\xb0\x13kd\'\xa5\xfa+\xd1E\x8eM\xa5r(}\xbf9\xb5\xe0@\x95\xa8\x83\xcb\x95\x08z\xae\x0c\xac\xd0?A\xfc6\x91\x9b\x1d+$Z\xd8\xa0\xc7Ad\xae\xf7\x03\x87s\xc3T\x88\xd4N\xf4<7\x05\xa8\xa93\xb5U\xf6m\\\xf4\x9c\x82p\r\xda\x19\xc0!\x83\x94<\x0b\xdaSY0\xc1\x92\x19Gi!\x99[\xf9Xx\xe6\xb6\xbeT\xc1y\xbdv^\xc0\xc0`cH\t#o\xc3tBl\x96\x82i\xc44\x03\xc1\xb5\'R\xcc}\xb7\x95\x00~\x0br\xf4S\xb53a/;*\xef\xbe\xa6,\x18\x16\xac\x140~\xd7\xd3-\xe7e\xaa\xe7\x98\x02/\xe2\'b\xccbq\xaar\xd9\xac\xe9\xb5\x95\xe5\xf2\xf8\xbe\xc9>\x91\xa4\xb02E\xb6U{\n\xd8\xc7\x8b\xae\xbdT\x86\xa6\xedct\x19(\t\x8b\xa4a\xfb\xd7\xa2\xf2bc\x1f\xd6\x10\x99\xc4*S\xd9a1[eh\xd2\xec\xe3\x96W\xb0dIDF5\xa4\xb3\x8c\xb3\x8c\xebg\x998\x84a\xfbi$\x1b5\xc0\x83\x17 \xe8\xe6\xc1b\x10\xc5\x00k\x86\xd9\xd2\xf95 U=+{\xc9U\x1eB\xb5\xf6{\xa0\x11\xf2\xcc\xea\xe86r6\xee?\x8d\t\xf6\xf1D\x98\xa7\xea\x98>\xd7!\x99\xc1zJU:\xa82\x16\x98\x9d\xae\xfc{\xf7Y\x1bB\x12L\x13\r\x9a\xb9\x8cX\xc2p\x1b\x96\x800\xbd\n\x1b\xda6\x9bJ`\x00\x04\x81{\xbd\x87\xf5\xba\x14\x1ckvi0ygI\xf6\xd6\xee\xa7Z\x16\x03\x19\xfb\x12\xb6\xc5?\xbd\xbc*Lda{\xc2\xfd5\x0cD. \x1e\xe1\xaa\xb9\xb2\x82P(H\x1b\xb0v\xcfK\x94Vx\xe3U[I\x12\x8e\x88V\xaci+a\xc9_F-I=3Z\xd5k\x1a\xf8\xbcQ![\xf64?4\x0c\xab\xe0?(\x10\xb2:\xc2;\x08\xde\xe1\x90\xe6\x0e\x90_V65\xf6"\xd3\xe5J\x87\x94/\x8br\r\xfb\xb2\xc1)\xd7\xcd\xf3~\x88\xafwA\xeb\xd8\x03\x98\xccznI\x86\x87\xe0\x1b\xa7b\x1cGv\x88\xd9l)\x85\x00\x17\xe1<P\xc6\xd0\xb8\x0e%\xa0\x1f{\xeaJk\xd2\xc2\xe1\x98\x83-G\x94#\xd24.h\xe9\xb6\xff\x18zva]\xa93\xc4mIZ\xbceq\x1a\xfeD\xf8\xd8\xf2@\xdf\xc6\xaa\x89\xa4\x1f\x8a\xd9\x01\xaf~\x14\'\xf1e\tt\xe4\xd6\xcd\xf6O\x11\x0fe@z\x9fD\x7f\xfe\xd6\xe2@\x17=\xf8\xfesI\xa8\x9a\x02\xbav\x05\xb8\x8b!/\xfe#\x13\x87f\xc5\xcb\xdd\xa1|q\x80\xf7LU\xaf%\xbb\x1cC\x96W\xe1F\xd7\xdb\x82K\xd22\xff/sE\xc5x\x95\x86S\x00\xe4\xfb\xe9\xa3^\xfc\xf7\x18y\xda\x04t\x83)\x07\xe4\x99hjU\xeaZ\xb2\xd7\xed\xd1\xad\xde\xda\xff\x86\xac\xcbX\xd9D\xc8\xc7\xf7^\x9c\x82\xd8\xa8\x08\x80\xc5\xa6\xff\x87\x87$2\xe8\x9f\xba\xac\xdf\xae\to\xb3Dc\x87aY\xfd\x95\xc6\xf2\xcbZ\x85\xf3_+\t1v\xf3\x8d\x92\xe7qk\xf8I$\xc5\xbd\x90\xafC\xc8U\xf4\xd8\xad\xdb\x8cM8Z\x9e\\_\xb6\x90z>>\xb2\xbf\x8c2\x8e\x1d\x00\xa0\x04\xd3\xf1&H\x92\x97\'o\x0bz\xe5r\x9d\xc84\x96;Yx\xd9N\xcf9i\xb6|\xcb\xffD\xc3\xa5\xc6\x1e(\xce\x975P\x84\x06\xa2\x02K\x9e\xafY\x17\xca\xd1\xd4N\xf9=\xb1\xa2\x97I\xd4n\xfeo\xc9,}\x1eP\xa3\xd7=:\xad\xfc\\7w\x86\x7fc7H\r\n\x04=\xac3n\xb0\x03^#\xbdC=I\x83to\xdc\x0eJ\x10\xac\x01v\x8e\xeb\x98\xf1\xcc\x07\x04u\xd9\xa6\x14\x0e\xbe\xe72\xe5\xf7\xba}\xa8\xa7 \xfe\xbd\x08\x8a7\xe7\x0b\xbfo\x92\x98\xe0\xad\x17\xa1\xf9\x9cD\x8dP\x86f\xaa\xb7\xa8\xd6\xc2\xebV\x1d\xc4O\x0cl\x93\xa2\x81\xf5"\x18\x86\x98\x1d\xcd\x1b3\rLB\xc8\xcex:`\x0e\xc4l\xce"\x1d*k\x88dTe\xa7\xd6\xe5\x11\xa9I\xbf\x899&\xed_\xdf~\x91\xee\xa0\xeb\x13\xae\xe7\xe0Z\xf0\x86\xaa\x8b\xd3\xaaO"\x9ex\x00E\'\xc4_\xab\x1e\xbe$\x94\xc7o2\xf9\x040\xcay\xf4\x0f\xd5S\xed\x10i\x0e;\xfcg\x85\x01\xabWuL\xb6\xday\xc6|\x8dp\x8d\xba\xa6\xec\x9d\xb0\x17g\xef\xd2\xa0\xa2\xdf\xa6\x19\xe0JF\x82\x02\xee:;-y:T\x93J\x18\x1e\xfcfa{\xa8\xe9}%M8\xd5T\x90\x97\xb3\x93]7E=\xb1/{\x89,(\x8c\xbc6\x9d\xbaG`e\xfd\x1e\'\x1e\xdd\x06\xddl\x04\xa8\xb7\x9f\x96+\x1b\x91#\xd3\xd0&\xf0|4\xfdl\xfc\xcf\xee\xbc\x9e\xdc\x95\xef\x06gp\x8a#*\xdd\xba\r\xf5\x12\x8b\xc6\xb9\x8e\xec!hqT\x88u\xaf\xaf\xf0OX\xb5Z\t\x0b\x00a\xbb\xa6\x91/\xa3\x86C\xba\'\x88\x97\x16\xad\x18)\xe3I\xa2\xa2\xfa9\x7f2ntr\xcfG\xa4\xe1~\x1f\x86\x8es\x15\xb6\xe1:\xf0Ou\xe5\xdd\xd8[8z0\xaeU\x05qU\xcf\xbb\xc9\x15ms]!v\xdb\x81\xc4$\xe2\xe5\x95\xa8\xb4)q4\xe3\x8fB\xf8\x13\xac\x8d\xf2V\xd3\xe6c\x0f\xb0y\xb9\xc6\x0b\xce\xc1\xe6\xca7\xc1<\xa8\x1cO*\xe2\xee\xfb\x1bUgh+m8\xea\x97>G\xe7\xc3\xde\xf9q\xe3\xd7\'B\x94\xc0L\xab\xdeX:\xeeg2\xc9\x07\x85\xd6\x91y\xbc\xe4H\xe3\xcaC?\x83\xef\xc8\x97\xc3\x01P\xf4*53\xd6\xd9x\x93\xa7_\xbc\x14]\xe9\x9c\x16{_A\x8a\xcd\x8d\xfa\xd7\x1aa\rH\x91N\x19\xf7>i\xde\xbd\n\xdbd\x92\x8a\x0f4\x92~*\xb3)u\xc2\xa0<;\x1a\xb7\xeb\x19\x01\xe6?\xf0BBj\x17\xed\xc1%\xfd\x11\xcfrp\x18%j\x1d\x96P\xdd)\x0e\x0b\xe61\'__:0Z\x8f\x17\x16{8z\xc1V\xe6e1\xf9\xc2C\x08\xe3\xd8\xeb\x1d#|s\xc7\x8eg\x01n\xc4\xe1\x866\xbb\xce\xdaO*,h\xce(\x98\xe0\x91fs\xd4i\x03\xb6,>3\x8b\xf5AU\x8fG\xba\xf2\xd1\xb8]\x85\x10\x03\xb8yH\x11A]\xee\x89\x9cq\xc8\xde\x04~\x93\xc4\x90\xe0\xa3\xd7<\xc8\xcd\x0f\xb9y\x08y+\xd3\xf9\xa9\xca5\xd2\x84rQ}-\xc7\xb8\xcf\xa3\x95{\x12xA\xbb[\x04iZ\x902\t\x90v\x04%\x8e\x15\xeb\n\xe6!\x89v\xac\x1e\xab\xb0i\xd4\xa0V(\xa8\xd7+[\x9e\xadK@\x9d\x1a\x8a}\xed\xdc\xac\n)\x91\x93L\x0b\xc0\x96\xf1\xc3\x94p@ \xbey{\xa5=\xbc\xe6\x130b\x08\xf77\x86\xa63)\xf0n\x9d\xd1[\x9d\xb3|$qFj\xb0m\x1a\xdb\xa3`Q\x80}\xbeP\x92\x1b\x87\x8eF\x8fW\x07\x98X\xfa\xec\xb9\x94\xe4\xb6\xe4x\x16\x10\xcbL|k\x87s\xc6\xf8\xda\xadf\xdbi\xfc0\xab\x00\x97i\x127F\xbau9\xe5l\xf8\x151\x04\x1c\xf7\x98s\xa4\xf8\xf5\xa3>\xc2\'\xf0\xb9\xf4\x8e\x00f\xf8\x9bjg&\xd3~K;\xb2;\xb5\xe6\xd9\xd4\').\xeb\xe0\x8eM\x05\xab\xc4\xa85e\xa5\xfer\x891f\x01F]\x06\x80\x07c\x19]\xb6O2D\x189\x19\xa8\x06\xd0\xfb]\xef\xffr\xa2\xf6\xbco\xba:\x12\x1d\xd4H-\x84\xf9\x8a\x11\x94_\x8e\xaa\xfa\xea\x98\xe0v\xb2lc0\xc8\x05\xd2\xe5\xff\x1f\x14\xf2\xed\x96:h\xb0\x18\xe2f\x84\xa3\x9fX\x1aT\x1c\xa7*\xfa\x8c2\xc4M\xfc\xe1\\\xe5\rC\x93\xc3\r\x95\x13\xed\tvk\x8d~v\x1b\xdf\xec"\xc0k\x7fq\xa8\xaai\xbd\xad\x1aI\x85\x17\x03yfP\x87\xc0\xab\x86\x17\xa5\x16=\x98\x88?| \xe6\x97\xb7bz\xf4\rdE\x1a\xcf}\x9c\xaaQ\nY\x19\xa6\xac\xf2\xa3g(\xb69L>\x06\x12\xcb\xac\xed\xea\xc8\x05\x01o\x99\xd6\x97\xc9\xfe\xcc\xcd\\S\xdfTG[\x00\x04V\xcc\x13\x0f\xea\xc1\xb3S\x8d\x17K\x10\xa1\n\x85\xadp\xe3\xb6A\xc3]\xdb\n\xa56\xa14\x1c\xda\xc0\xfd\x17QP\x85\xf0\x96\x07\xae\x85X\xa7\xb6&$c\x8c\xbb\x9b\x0b\xcd\xa81\xd6\x9f\xdc\xece\xa7\xac\xe2\tH\x94P\xcd\xa2\xf9\xb0\xfd\xfc\x95Tp\xc8\xe8\xde.\x0eb\xa6\xbaluM`2~\xa5Ba\xa6\x93E\xa2zl\xed\x90%\xe7V\x1c\xf6\xcd2@f$=k O\xac\xea\xfd)\xfc\xe4m\x11\xbeg/\x03\r\x99\xd5\x91\x04\xfc\x0b\xca\xc0\x12\x9f\xb311\x80\x12\xa9Cz\xe3\x1c\xd0\xc9\xe2\xa7\xe3\x1d\xf0-]\xfd\xdc\x83\xb6\xf9\xe3\xb05&tG\xf0\xf8u\x15\xa1/\x88\x1d<\xe1|\xd9\xea\xbd\x01\xf4\x1a\xdf\x945j\xcd\xd6\x13\'\xdb\x08\xfb\x86G\x04^\x90:\xdco\xa0\xe4\x9aB@n\x0e\xfb[\xf6\x9eB\xe9\x10\xb9x\xfeM\xdd7\x15\x84\tZ\xbe\xe7\x8c\xc7<\xedL\xa5\xc96\xe3\xd97\xc0<~5\xba\x17{\xb6]\xb4\x19c\x03\xc7\xbf8\xa4\xd7o\xf5\x9e\xdeV~F^\x04Q\x8bY\xabj\x9d_\x17\xc3\xe8\x1c\xee1\\G\x1av\xc5\x10\xfb\x8f\xc4}\x81\xf1\x05\x01}\xa9\x17@L%\t\xff\x14\xd5Gr\xdbW^\xea\xa0\x96\x86\xa7x$\xd9\'K\xaf\xe7\xbc\xf8\xae\xed\xf6qX\x91`\xc5\x0b\xedy\xf9\tv\xbd\xc7\xf7S\x81C\x97<\x17<E;\x85U\xbc\xb3\x18\xbc\xef|!\x16o9s\xa9K\x16m\xab\x8cY\xba\x08X#\x9b=\xba\x1a5qn,\x03%I\xb2i\xbdv\x16\xfe\xb6\x06(\x1e\xbc\xe18&\xa4f\x9a\x9b\x1c\x14\xa5yiL\xc0\xf7q\xd3!\x87\x1b\x81l\x96\xf19\xe5*\x8e\xdf\xa1\xfc\r\xab8\x98Y\x10\xcby+w\x01\' \x04u\x87\x9c\x99I\x0f\x83\xa1\x17\xf7\xdb\xb1\xe6e\xa2_3\x1aa\xc39w\x90\xf2\xc5l\xd3\xdb\xedO\xa9\xc2\xe4\xcb\xc3u \x8c\xf4|Xy\x90\x98\xd9M\xd2q\xe0L\xfa\xf8\x90\xb6\xdbu,\x84\x8d\xf8\xa0\xa5\xcef\xc4GQ\xf8o\xb2\xe6L\x14\xa3\xa0\xac\xcf\xbc\x84\x7f\xff;\xfb[\x8d\xfb\x916\x92\x86\xb3\xd9\xfd\x8c\xd8\xccZ@\x1a\xeb\x0bjE\xe1$\xdc\xf6\x11\x17\x9b\xef2\x91\xa5\xe8\xb3\xb2F\xb7\xc4\xa9u)\x9e\xe8z\x14b\x00\xef\x12\x95\n\tK=\xf7\xb9\x0b\x00>\xe9y\x89\xf7]\x04=\xa7\xd3\x19k3\xe0\xffj\x7f~\xc1W\x7f\xa2\xbdD\xc0^E\xc9\xad\xf1\x118\xa5\xbf\x8b\x00Y\xd1(H\xaf\xad\xd4F\xddm-Ce\xb44\xca\x86f\xf4\xe5#\xa0\x88\x10\xde\xc8\xc5Q \xef#55\xe6\x1f\x8d9v\xedy\xc0|{\xe5\x8d\xfeY\xdc/~\x89\x0b\xe0\x00\xbd\xd0\x92RZp\xeeb\xdd\x8c\x1d\xf8\xab\r\x8b\x88\x81\x90S5\x8d\xe8RL&"j\xbb\xb8\x8fz\xd0_\xd5X\x99F\xb0\nD\x8d\xe6\xe9\xb4\x10\xb3\x80\xc5:vp\xf0\xb3\x97\x80*\xd2\x1c\xd3#\xf2[a\xa7dSh\x8b1\xaf\x00\xb3\xf2F\x0b\x80\x97\x1c\xc4\x86A\xe68\xac\x9f=\x8e-\xb7VD\xfe|\xd6\xff\xd7;f\xd2\x9c\x0f\xf8\xe7\xce\xc7\x91!\xcd\xa9\xb6A\x9a\xaa\xca\x83:*\x16\xa9S\xb5\x12E\xaf^\xcd\xda\xce\xf0\xa0`^\x98\x84\x13\x13E\xdc\x8e\x0bRB\x89\x1f?\xce\xea\xeel]\x04\xd2oz\xda:\xc7\xa3\x9c\xcc\xbb\xe1\xdbSa\xd2$!d\xdb-G\x1d\xf3\x88=)@)<\xa6L\xe9%\xa7b\xf4\x18\xf1\xca\xb6V\xa9Ap\x0e>`\xca\xfa`\x9d\t5b\xc5\x0e\xea\xf2\x0eO\xb7\xa6\x0c\x1b\xa6\xf7\xe3\x0eV\x84\x8f~\xb5\t\x18\x8e\xb6\x08\xfd\x8c\xcd\x81\xc2\xd5\xa4M\xd7d\xf4\x8e\x02\x9e7_\x81\\\xe4\xaaS\x7f\x10\x138\xbe\xa3\xa9B\xdcFN\'SG\xb3\x9f\xe9\x95\x14\x89\x88\x15\xf4\xf0f2\xdf"y\xe7\r\x01\x84\\gTU?\xf6\x88\x08\xd3Cr\x93\xca\xea\xd8\xc19\x06\xae\xbf\xb9W:Kx\xc7>\xde\xfc\x7fU3\x86\x94\xb3m\xb6\xca\x86\xbcj\x81\xc3\x0e\x91]\x82\xdd\x04\x85A\x00\x0e\xbcT)\xce\xbcp\xa2\x00&}\x80_7{\x8eX\xec\xe0[_\r\x99\x00B\xf8R\xb4a#\xdcW\xcc\x8c\xaa\xd6\x1a\xc3t\xfb\x81\x99\x0c\x83\x1bE\x1d\xefi\xb5|\x14A\xe9-\xa8L\xcc\x8a+\x99\xb0pq\xe0\xec\xcb\x931U\xc2\xd8\x11\x95\xbb\xc8\xb6\xc7:Z\x0f\xab[\x904\xf0\xa5\xf5\xbaq\xe4\xed\x9e\x10\xa2$\xcdI\xf9s\xec\xd6\xc1\xac=\xf3\x97\x0e\\\xa5\x1f\x1d\xdb_i#J\x0c8coDo\x03\xd1l\xd9\xd8\xcdO\x1b\xb7\xf8\x8fqF\xdb\x1d4\xcct\x1aw\x89\x9e\xfa\xda5\xa4\xc8.lN=[W\xb1\xa8\xd4\xff\x96\xcc\'Z\t\xe6\x124\x96ab\xb4R\xa3\x14\xc8\xd2\xff\x85"\xdb}q&\x88\x8a\x81@\xba*\xb6M\xae\x83v/N\xb6{\xd3z\xb2X(\xccm\xa0Rc\x9b\x81\xbcf\xc1\x1f\x9c\x07\xfc\xdf\xd4\x97z\x92\xf6\x02j\xc8\xf7g\x96\xf5\x84\xf10\x11\xde\x90_\xc0\xceNS\xc0\xd9\xd7\xb6U\xbf\x1f:\x11w-I7\x10\xca\xee\x11\x8e]\x80kF\r\x84\x10J\xdf\x02\x91\xd3Tz\xfct\x18\x971\xf9\xba\x10\xc5\xa0\xc6\xbdAA\x9eA\xea\x180\xce\x86\xc3\x0f\xd5\x16d\x15f\x11`D\xb7\xa0\xb7\x93f\xec\xeb_\xc6 \xbb\xb3\xce\x89\x11_\xb9\xb9Q)]\xa0H\xdaGki\xe0\xe8\x86\xd4\xdc\xb2\xf6\xa6O\xe0f\x961Q\x1e\xdb\xf0\xff\xec\x1f\xe2`\xe8\xbb<\x8e\xba\xfb6\x8d\xd00\xdc\no\x1a\xa1\x8f\x83\xad\x11\xa9\x90\xea \xeb\xaf\xd5\xdf\xd2\xba\xa6\xab\x85\x9cnBw\xc7\xe10\x1b\xec*\xe0O\xb3\x06\xd3\xd1\xa7\x16\xa5p\x14;\xb9%\xd0\xac\x88~\xe9\x0e\xfb\xbb\xec\xa9:^y&~\xe4\xfct=\x05\xef\xc6\x12\xfd[\xc4\x0c}\xa5\xcd\xc5\x92Q\xebeC\xac;\xb7B%]"\\\xd0\x14W\x9d\x9d5\xb1\x9c\xeb\x1d\r"\xf2v\xb5\xed2\x02\x1f\xdds\xb8\xb7\x96\xdd\xa4\xd0\x1dlO\x1d\x8e\xb5\xc2\x08\x80UyG\x9at\x07h\x94\xb5t\xbb^\xefR\xcb\xfa\xda>\xd62\xdf\xfe\x83i\x1bm\xba\xa2\xc0\xd6\xdd\x89\xff\x89\x1di.\xd0\x0b\xdd\xd5\xea3\x18\xc4\xe7\x7f\xb4\x05\xb2\xee0\x1d\xe7xt|\xc0\x07\xc52\x84\xf9V\xf0\xce\x16X\x93\x04\xc7\xe5\x84(\xd2\xe9H\x83\xc4*\xaeS\x10\xe8\x9eL\xfau4\xdc\x10g;NM\x94\xc0\xbd\xce\xe2@\xe3a\xa4\xc2MsX5\x10\x12\xf7<\xba\x8bf\xb7B\xb4O5sm\xfc\xa4X\x88)\xef\xe0\xf3\x04ot@\x9fV}y%\xee\xe3\xb0\x92)\x0e\xd6\x91\xc9~1`QXn-;\xfdzfL\x82\xd4\x16\xe9\x0c\xde\xbf\xf8\xb1\xf60P\xc06\xf4\n\x1c4zdZ\xeb$R\xf3`\xa4\x0f\x8f\x8ay\x9c\x13\x1a\xa0\xfb\xb149\x98\xb1\xf5\xb0\xe3o-\xc7\xc9\x0c\x98|\xde\x91\xf7!\xfer\xb7\xa6\x91\xb3\x81\x15\x08\xf2B}\xf9Y8\'}\xd3\x19\xfe\xaf\xb5\x96X\x0fA\xb1\x8c\xa9Q*p\xe5\x06\xdf|\xf9.{%\x15t\xe4\x0fE\xf3\xc1\x90\xe9\x9d\x0b\xc4uZ\x8f\x1d\x11zR\x14\xf5\x99>l T\xad\x88\xe9\x9b\xc1\xb3C6G\x15V\xf7G7\xbf\xfe\x95\x80KY\xf4\xe6x\x9a\x8a5\xb2\x7f\x02\x9e\x94\xa78\xf7\xe0\x14\x87\x95\xe7i\xcf\xf9\x07\x94R\xafoF`4\x91\xf6\xf5\xde\xf8;\xcf\xfc\xc9?\xe5\xc1\xbd\xcc\x9cnF\x18\xe92\xf4;\xb6\xc7{\x92\x9d\xea\xa4\xce>X\x89\x1b\x07\x00A\xce\x19JI\xe2@\xca11\x99\x8c\x8a\xda9\x0c\xd4f')
|
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
|