From 9c32ec788e60ce6198eda921601d43b23abcaf34 Mon Sep 17 00:00:00 2001 From: Nathan Woodburn Date: Wed, 29 Jan 2025 13:59:39 +1100 Subject: [PATCH] fix: Update login page to verify password instead of opening as readonly --- FireWalletBrowser.bsdesign | Bin 330754 -> 330790 bytes README.md | 22 +++++++++++++++++++--- account.py | 12 +++++++++--- main.py | 10 +++++++--- plugin.py | 1 - plugins/customPlugins.py | 2 +- templates/login.html | 1 + 7 files changed, 37 insertions(+), 11 deletions(-) diff --git a/FireWalletBrowser.bsdesign b/FireWalletBrowser.bsdesign index 7589626ac48c1b9f41b6417f34029b11a53c3ebf..45aff50f39ece4073c991e72eabf004cda30f8ee 100644 GIT binary patch delta 25842 zcmb5VWmp_;pR9>A?jGFTLU4C?cXtU8G-%`Q)@X2dcL@Y{cMTTYU6%acnRn*Q?w&pS zsrlM{UHq!*u6hDeF^f_$mE~$WkEBir0h_#yiIQGyA?zv2Evx-&> z#7vNGJ&$PXs%NDk+Z3<}D#|xyU>w~AO_-1j@;wVT-eny@3>b z{5>0+r0D_ux&z*hBPyoL9fr;(oOi!q9(nA()BZ%yM&aO?9#SAbo#N5J#;l?AR&87k z{)x|XvyJh@Bm-Q=@4|ewq84-kvn}N?Z5u0Jdpr}VA0rD7C0eIzk6moe7%K*Dx^#_T z%B03DSIb-?rfIMYPLKNwY~|T9(n5Sck|n@@)DIC$Y5DzPwh`I3r2dq%!v~`^2qFq# z7+5s)T)JMO*)arqO7ZR9f_^Xu3TpSy+fi-GyVv@Uka*ZC6S&ZH*n72LBMf~1CHR|- zu)grJjgb>9VbIeoppT2hId+C}NF5?DX$j2BYzV^o7L!TkvA&kbV+mB`^dZ)!vYjAfj#`}ii4IVH#M=*k#UbQnNY z2sTHitRlEX^OKT%wzIzlz`(_X?q~m6FM-Mw1pf(Tg(6E-=BCm=F)P!)GM*bGLa+_4 z9YcAeJf;m!HP`2(MI$WD^rt?kL?x+81W{Wq1M)WlFx=|hW~kY+`zd<2Ev!FunlsO|noglWQauTNj%{H|l?)zxR{k-px&6yb#@C=+={&=7ft`aLlJ^ zbGkk0L~ZWKvLcR$YMGEjw5eQ2q(D$gpGGK{?iiY(;(>6SmC~4M+WlT##+%VMCCvw} zpPn2RkSyXOaH4--h4?if$=z`1E5TPeSLSo;W#CV+718Zq`>48RSEk}rn@fSp7ZhWA zf+w7d^>1cRH}McE?p*BZKz==eLuqMpJzb2b-8I6o@v+oaP`k;#1Wj=x7se7jQ~lgq z2?vFZ8w0B4u^9MT^VZ-?5bFtuD#4NG zZ=e&5u_7R2{V6rgP6c-r&fnBwNTgSKXUi|cmt?`*)R_@E!UxqX-B zx=njR%5OX_xD@+i)<6vt?Qqw1-rpGX^&AP>_Cj)ka7Yn!51#b7ZQ`2}vL&GaNm}f0 zS#$8T^aVD-m_)P?wRtv-%1|Aie#Fv7PoOO&00F#A-hhxjkF)n8I*6teKniqKBqLt; zX=_#)m8sMzO-7CF8Pxr04z+j}Fxn@4p&p-*Y^0y>lTW$C93iX?ZULp01r`}N?Wfb6 zgJskX_qnH{$*EkI!l7a9sp3IJ+@^6Gq~h9_BC3Pj8tEXD7{8a0Mdp>?Y6fki6gd9< z<$)95q>9OUiRSZ8$l;a&R0gg>htiqSY2&O zhgx*6x*%_sP{HML^4X9}7N)x#X`utqy4`P&=pFz5$mEDPE>M;R4Lp5QmPsw@OhbVm zeBm5lhJkriI~O-ypzj%QG@{6R1mdW?R>c=6+v$*gnurTA)$R;OxsP*^Jq0smH2qsf zHZf`I7d~AbPNaJZlKCq;%y^^6(%0_MQ}$7kX)|YM<(?B+=V|MF1P#8O1SQQYFL>wN zubr9Rh?blOJ*TGXzsTQ&s5)8`(}cetFVOAz`rq%siX6!7vexbawSV^j@2+A}>(ltk z4Y{Rzi;DxyFpf2*V8A0Q%McgnVno{6)Roud>YZU^H0{^eS9LafzaQ~U+6RZ;p4pXZ zn+M#`JX{Ajuqw2daqZj@awt1m%0AdRugyYh-l6NINo=sEkIz`|^7H#F+Ggn`ZQ#WT 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 DcKP$^ delta 26540 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

#sG&r0BjKwoKj=z3oVBQIj`NqOOW zU-m5Lq*}-2#~d4Ae%Rm(Wo(mj~#7arYm}T8?7$dCjddWhS<`C0W6Q0Ypzn@vKqf_pncv*a{^mzCs}~+ zXH&4Tx5LNON0>N=eV+|6K{T+QliG=~n`PI-KQaDPvp#@wk#>{y-7`)y9@WJSrX-Rp zSbL|;0wNjQNa5jp`C&+s`e%CwuM+xK7GdJ}EsF#z>mp>&R4F%v5OhkY*|4!s&eR1r7eEBK4Pfd9d8!;$!Mv z!)kDlj&j%Sljm)L=XX=!K@MZ77QLksb`?${18>J(=atEkCD;uv*33CBzM<~Ud=aLj z5N!suV(NzIxL=Z(Zw~$fkOs5FN@#B_v0j%AcI;`8NK>F)s|#q`=NilPf2 z^J8dO#FBk_xJxRx%3bF6&#kE?z&BeaZ9!C%d5+)KUb4m=A#Yn9c1Iyb=~34M@%+*0 zhmwk1XKKP=VIe;?hZ{{|=uerf40JQ~h7&4LI8VYfiMF{LO@j2NMrQ6Xr|zTwyGGWf z=6<{KUYXvkyjlSF*~fpwk#M;TR%Of*)BPsaQb$zMt4nuJiukS1 zy+b+r2`W6ud_ZGWvAISWagE>sT4N(JC#K;HA|yOyv5NR!v<8~Off?7TfCF45L%wU})S=XR2tQBDu+ zeIdj;h9u|0WRIk(dd~y!&&F>LgKO^r*RaFjO4CJmwmmHe2O{`*q%dWH=?ak}iA`Z$ zP=%hREgE|T`6@iB zYqvs!9r(5l$+>SfLxyvbDPD$B$R|8-H05s55Pha0w2SFzL5ce$aw+wVaMaWt5CQBE z+#h$~APQfR?f?v?{Stv6H69QMF`y9PI7NZ0!LFX_{MovRK=-j*KJ(;DEHiG>gze3q))txMp*j^k7*-6O;O@TVmXiH2ne_5V{T987->nOsA%)cIf8 zAOBGPIQ`Y|(ZPR%49_Al0VJ3IV$nzO|ElP_&n)sl({{(}BWVf5I)%FV z>F=q;#m5*dkAr`T>P2NIdn(JU9Vw#4tCwUGOjtr!QI-| zqt%De4uMTBTLi~gLyyy%*|FD?)b8S)0Ox#P-+nkZKYY?9U+l6TC7S;*#|m*DT4gr;0ufL2r&%7wlJ_8<+#fKj^p3 z0;9v=A9Svw~!?E~D+vjn_tz-_|39DfqfGu6_LzEGs^$gh}N(Y3?HA_5ftpqs z6{p*A<-EC;a%5pD{Yq?4IRg}UPUfZo0n}-HAA^0d5FD4es=%vhw%xG zv({mN_!LsA5T_)cmvBgZ(h}l0xOR=gH1#0F@%7-+wfd(VdbN%+g5|f}x_K`2E<9LZ kty9yu%fl>h!BK0Q)hq@n@r}i;t!va62_ujcBN5zx0OqP3bpQYW diff --git a/README.md b/README.md index 05b6b8f..e969d57 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,4 @@ # FireWalletBrowser - - ## Installation ```bash @@ -112,4 +110,22 @@ DNS Editor page ![DNS Editor page](assets/dnseditor.png) Auction page -![Auction page](assets/auction.png) \ No newline at end of file +![Auction page](assets/auction.png) + +## Environment variables + +```yaml +hsd_api: HSD API key +hsd_ip: HSD IP address +theme: Theme to use (dark-purple, black) +show_expired: Show expired domains (true/false) +exclude: Comma separated list of wallets to exclude from the wallet list +``` + + +## Warnings + +- This is a work in progress and is not guaranteed to work +- This is not a wallet by itself but rather a frontend for HSD +- I am not responsible for any loss of funds from using this wallet (including loss of funds from auctions) +- I am not responsible if you expose this frontend to the internet (please don't do this unless you know what you are doing) \ No newline at end of file diff --git a/account.py b/account.py index 9ecb02e..3d252ef 100644 --- a/account.py +++ b/account.py @@ -26,7 +26,9 @@ hsw = api.hsw(APIKEY,ip) # Verify the connection response = hsd.getInfo() - +exclude = ["primary"] +if os.getenv("exclude") is not None: + exclude = os.getenv("exclude").split(",") def check_account(cookie: str): if cookie is None: @@ -52,9 +54,10 @@ def check_password(cookie: str, password: str): info = hsw.rpc_selectWallet(account) if info['error'] is not None: return False - info = hsw.rpc_walletPassphrase(password,10) + info = hsw.rpc_walletPassphrase(password,1) if info['error'] is not None: - return False + if info['error']['message'] != "Wallet is not encrypted.": + return False return True def createWallet(account: str, password: str): @@ -118,6 +121,9 @@ def listWallets(): # Check if response is json or an array if isinstance(response, list): + # Remove excluded wallets + response = [wallet for wallet in response if wallet not in exclude] + return response return ['Wallet not connected'] diff --git a/main.py b/main.py index c5d9cdc..e1e593b 100644 --- a/main.py +++ b/main.py @@ -1154,16 +1154,20 @@ def login_post(): # Check if the account is valid if account.count(":") > 0: + wallets = account_module.listWallets() + wallets = render.wallets(wallets) return render_template("login.html", sync=account_module.getNodeSync(), wallet_status=account_module.getWalletStatus(), - error="Invalid account") + error="Invalid account",wallets=wallets) account = account + ":" + password # Check if the account is valid - if not account_module.check_account(account): + if not account_module.check_password(account,password): + wallets = account_module.listWallets() + wallets = render.wallets(wallets) return render_template("login.html", sync=account_module.getNodeSync(), - error="Invalid account") + error="Invalid account or password",wallets=wallets) # Set the cookie diff --git a/plugin.py b/plugin.py index 0caa06b..ced95b7 100644 --- a/plugin.py +++ b/plugin.py @@ -126,7 +126,6 @@ def getPluginData(pluginStr: str): # Check if the plugin is in customPlugins if pluginStr.startswith("customPlugins"): # Get git url for dir - print(f"cd customPlugins/{pluginStr.split('/')[-2]} && git remote get-url origin") url = subprocess.check_output(f"cd customPlugins/{pluginStr.split('/')[-2]} && git remote get-url origin", shell=True).decode("utf-8").strip() info["source"] = url diff --git a/plugins/customPlugins.py b/plugins/customPlugins.py index 1b9058d..6d2e43d 100644 --- a/plugins/customPlugins.py +++ b/plugins/customPlugins.py @@ -42,7 +42,7 @@ functions = { } }, "returns": { - "status": + "status": { "name": "Status of the function", "type": "text" diff --git a/templates/login.html b/templates/login.html index 5c53471..e5f0e34 100644 --- a/templates/login.html +++ b/templates/login.html @@ -19,6 +19,7 @@

+

{{error}}