From 6d1e3971df7c566f064f4dad5401a9acd1cedb27 Mon Sep 17 00:00:00 2001 From: Aleksandr Soloshenko Date: Sun, 12 Nov 2023 00:37:04 +0700 Subject: [PATCH] Added: some static root pages --- internal/sms-gateway/handlers/handlers.go | 25 --------- internal/sms-gateway/handlers/module.go | 1 + internal/sms-gateway/handlers/root.go | 16 ++++++ web/static/getting-started.html | 28 ++++++++++ web/static/images/logo.png | Bin 0 -> 10736 bytes web/static/index.html | 62 ++++++++++++++++++++++ web/static/styles.css | 40 ++++++++++++++ 7 files changed, 147 insertions(+), 25 deletions(-) delete mode 100644 internal/sms-gateway/handlers/handlers.go create mode 100644 internal/sms-gateway/handlers/root.go create mode 100644 web/static/getting-started.html create mode 100644 web/static/images/logo.png create mode 100644 web/static/index.html create mode 100644 web/static/styles.css diff --git a/internal/sms-gateway/handlers/handlers.go b/internal/sms-gateway/handlers/handlers.go deleted file mode 100644 index 0e80763..0000000 --- a/internal/sms-gateway/handlers/handlers.go +++ /dev/null @@ -1,25 +0,0 @@ -package handlers - -// func New(params Params) Result { -// return Result{ -// Handlers: []http.ApiHanlder{}, -// } -// } - -// func Register(router fiber.Router, db *gorm.DB) error { -// cfg := config.GetConfig() - -// users := repositories.NewUsersRepository(db) -// devices := repositories.NewDevicesRepository(db) -// messages := repositories.NewMessagesRepository(db) - -// validator := validator.New() -// authSvc := services.NewAuthService(users, devices) -// pushSvc := services.NewPushService(cfg.FCM.CredentialsJSON) -// messagesSvc := services.NewMessagesService(pushSvc, messages) - -// newMobileHandler(validator, authSvc, messagesSvc).register(router.Group("/mobile/v1")) -// newThirdPartyHandler(validator, authSvc, messagesSvc).register(router.Group("/3rdparty/v1")) - -// return nil -// } diff --git a/internal/sms-gateway/handlers/module.go b/internal/sms-gateway/handlers/module.go index 1a7f9b0..7784584 100644 --- a/internal/sms-gateway/handlers/module.go +++ b/internal/sms-gateway/handlers/module.go @@ -8,6 +8,7 @@ import ( var Module = fx.Module( "handlers", fx.Provide( + http.AsRootHandler(newRootHandler), http.AsApiHandler(newThirdPartyHandler), http.AsApiHandler(newMobileHandler), ), diff --git a/internal/sms-gateway/handlers/root.go b/internal/sms-gateway/handlers/root.go new file mode 100644 index 0000000..6a09707 --- /dev/null +++ b/internal/sms-gateway/handlers/root.go @@ -0,0 +1,16 @@ +package handlers + +import ( + "github.com/gofiber/fiber/v2" +) + +type rootHandler struct { +} + +func (h *rootHandler) Register(app *fiber.App) { + app.Static("/", "web/static") +} + +func newRootHandler() *rootHandler { + return &rootHandler{} +} diff --git a/web/static/getting-started.html b/web/static/getting-started.html new file mode 100644 index 0000000..8ddaea5 --- /dev/null +++ b/web/static/getting-started.html @@ -0,0 +1,28 @@ + + + + + Getting Started - Android SMS Gateway + + + + +
+
+

Getting Started - Android SMS Gateway

+
+
+ +
+

Step 1: Installation

+

Here you provide instructions about how to install your application.

+ +

Step 2: Configuration

+

Here you provide instructions about how to configure your application after it has been installed.

+ +

Step 3: Usage

+

Here you provide instructions about how to use your application.

+
+ + + \ No newline at end of file diff --git a/web/static/images/logo.png b/web/static/images/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..1e573ee2f4694fddd8de2af1aa643dd4fd79fbc5 GIT binary patch literal 10736 zcmZvib8IF+x5jI1ZNIhcZrd&2+O}=jdMic*p#6(hA4h+nj>R&tr4D9tk z`C~9JHx@9kQ$sK?-gGc99LMYqCH{X27-Ja;AlTP`T7Fkq(!U6-tCXA=>=6P28VO#M zf^!`h7|pB{P*~OT&qdB!9Oa7Fs{eLHhtAc+`GDLWTX9=N76osZu?|c&lw&-U@D7PE z;7;)1hlAI*_;7xxQBgqjV0|Ez6v+rO*?J*G?LUGhu?fZE;^gGPUd^qWf6=|te(7SJ zeRDz1rd!-&TgUAe@3u$xM|Ps%+k&7Hpx=QZJs8j{%A@Hi3D&cF9S`O=&_~>bSp^kT z2>ps%Mh8+6$3;m>evu1ztu+g`*`N3(Rvoj~90Vz;EM}8H5$e1&nirx85cvVOG`cOP z#9 zjVT?-*bYgHvO~HdsM_#2rtwAbB&$bSQBiJ!mF%RuOL`7C<@n^K*)NR5!0fr|1+S#3 zuf|Pv3kt9D|1zWwaufr;dhyRa%Oa{RKA<9Fn@+Zj@i^6Bv1F*%nOqVbG#87{2!o1X z?I1KxOp2Cuh+?hb@+YM$dHJh#h1NLeX;QU*-Ur4gHB`T*35S*(E14Q}ohMEDrVN2$ zoPw!h3%rkpD~9P>`Axno^Vw!CMH8G;!}b4a9bY=ss(s62FK(T=b7B5Wvz}A5fmX$; zX}GjM29XD4m$Mtb$`;-1{92%;)so{W9R{*ElwF}I`(CaRv(PcBR|03xie=- z`;5IgY}XN!bswZw+HVq#TBlhJrRgAa@C2GfO@XV20~8AAFZLs>nJeu*YPk_8h&s7YVZ*%YVxhUIIeetg+f}EPW!b|08CSp#83nve@hWRI5Yi_pLMS6PH3L3&!Nzau zbaKS9|278yNNLFn$S5!DEJyfaMVWt9GoPm&Qz1^SJs@V@p9K5S8_KF+4ahtl->3Ig zA+fbH{sW#1M<*JOS`-8t?ul)ux19V2OhDUYjw>a=3=X0*WF?biH{@vvlJ=B5tgdcd z%6KsOE`){UE6Nk3*`cDLb>$;v*}*!`o_Z+|arw-lt(;5QZr;cR_0X}A^AciYlCpL| zebaA+97oe;L9~-q4)tvraV_&Ra_UhmnZ?|REt3%byYoJ+H00*cL4_?S*;=b zs;wTy{V&Z`Z)E>A$Jr#Mpwl58QV3+e#519K{k(?^gN8MMIP?IT%=(A>F}7x@H8v*n zE>bEOsb`>?xxO@AQ0aVdw|~~sOB_6}2eP+Fc3IVvS@aw@G6F)@HES368GBySW=D{5 z)TlTMnQ8x~*2_s{+WfmEG<9#+A*%ZO_c}ffo9d}-%53fL$5uvV&_BW;eS&!cBUZBo zM%?$$pk7!-DCTY%BP$I#g>%0ZDx1EZ3e=tPV~1lwS7mc7B8Eo(S=p3Cy%z zwb=?-0&2!eiGd>#kL=mGUVv>+-SyYRs!auxh9uO0NH)Wqhl&|3M1y`ra~{uH-pF-U z^X#;P=U_64@QVK=-A!BZ(zzhs3O4bfvI!Y z)rAR-DK&L_cPwLNI| z8I5NViiB*bNAmpK%7FYntRe~-5fm{&A|gq+!%7B1i)IDI>*4?rag!FK&Wxd?*3oBI z0Te@?K%ikbUQP)*S+gh^l2D6t)3W07n*E6MsZmfcwls9SX^FTJ5H}2{q#8evNMkxo z!R7yjER2f7g35kC6Pd!YGe2zBJc)mK4`Mw&c`DRRW#kdwpr#1S7+v&*UsWneG^nt7lk;=q4duBM z?}-d`Ex^7Fd`&ue663fszzQLkd6MYC^F5TSY`WR9IoZWy+q}RjTH-KQY|zo=jlZYk zO@$$Fpa5M2eF`68itAsM%IqTy7h6k(^%alLFUJ*G5E_DnQXs#q-8i5Y^bKcb_LIX6 z`%ahbh0khCA)!Gy@1`qQv8?}xzRuE|>M+vK{!>bwZ3~vj#lK`O%%SJcZs>Ma0Xro} z$$;@28vnkN$2DiLBfApUol(kyHNz|};os3$de1-J@eBG0DDjXq%N%R=0HYeW>~6s* zP#g%gW^?DF=aV&UMlaH=9(NLV&_cim&8IGboZ}z)A5TbBZDh)2xk_|eQ z7#z$vj>FS6eps5H1O7vY?)Il!;m=IX8OdSARs#uCGXJRF^5UrjXgHi6-jNiUG-FCx#N3;Du5qf-DOty|>a|Q`CnG!)W7QJR84P|le91pf zaV;P;F2u0vt#)BdXeps`bBmY&@$naw4*px&sG_)+j0LI1T>@o73)XT9O=iPmhgsw_ zz~W+DDC`crs`r#x?M%1iOx6VBuaFaK+( zyjo%lQ&1RqU;feRpP^Zs1UTvCmZJN1a%SqLl;DE>rz6AlNF{b8=Wkm`}p2ntiR=l4y{oLX+iq5XPrn%^qIxST^s= z#U4%7a!1yp5=FU)l!P!L{5#b&VU)35@^z&qL-7iyu#dZSkTg0e;a@0aGUyb`pssHy zFpp~R=bULES%m%3E!+N_5^J?4f*A2&9D`@%ZLdeILvsr>=Cq{tu3SHtCNEQps*yru zZbxeyeTNVpRg)mK5gq#T>Aq4zQnXjP10YF-mZYZiHT#9s^kha2rtH$Sp)6fqezBf4OW$J$dd#D4`y5hAEFs@v6o zJmc%@2!)0S`1)9>L202e3}wVW#)vNMnB!*xgIo_Tiufvxf*>X~KNT0%{)N?I#5kcHG2Q4XpH&#-e;* z5@Ks3jf0jicR%B=t{KrNZg{rN4fZyY%Djs?`~ z@sFT93q3OnxgWpLO0h*0^9mJ$s6z6k<^~dR>PMhRY~AG-o-A@sQYHyq%6i5V6?!c4 z#Af?oTph@aa4OQ9gTf4~=^c8csp5X2`7bl{7U{$0@Pbdhw1pIhnOwF?D-j#W_}|WC zq6U(>h0v;>Lg`S(ZD_2jK-8BCx3-6*tO9-|+g_*wrH!%MQQCRu?3ZfIudX(u^$I9@uNTKk}9($I;t#C`0E2BT@+W-a1B)9 zabIl^Kjc)>p<}>!X2hKeu`T=mEw<)X9gSD9%#9dI&)Au*xNFUrwth*~LX2yx)Tc zhruh;3$MFRH4k_RrWNIgd`hThRTN3d+sQWA$2|@rPM!#d`+2lIV5%qeI`3mn*?>tp z{8Mk4&tU$^!9)&~0G=cLTUhoAkGkoGUt1+>^_D&1*4~AZ zh5Jy3kWokU&3$*Blb4fRNfCTOgT6VS(1NwXmCh6kj_;Ie9I*ws6GB{yE#!ZZNx|WA zcJ*TIe5Yg9u29qYFKDF!GqJ_&2gDn&jMXB-@X3b; zZ-ntg24wN% zGEDQ$(ol4G1|H)$py_r_j(f+oTnO9|<+(3Fs>zz}J5dSej}DLGNIAoBz@vLfIk3^? zk0WkK2T)NbVm_-_Q<+-l3Slr>d*wusZ59_rt3oJPA14E0uT&BAEXG`}? z$IuQf|B4?s^Y@QBTbPXMI;Nc%yhmT}L7&@f4+!27&Yzn41uX(-y6(IKt zkYDG*?=S5gT}*@=Q0sX%K?!*~nA8*JXD4>&RlKX>{G+SxDKEBW# zdT&(BuSukLlc*`su&=HDx02{{$Wkl z|1O(EqRiC+{$VuuKFj9v$gulR*TCE(z8{*#+T?O0EU$(KL3X^U*8j96KI1p&XcCnY z174K{86Eid1-nKZP$kQ#Q8Xq+!o#2?(^GOZsd(DPJWgfR@l;=)efTn=&Ff=ax4Sc- z6bhfv&kLdkvLz{~UjHz%`Xz;_?HwGyR3p%3G};;ZsN+9$-LK(U_wV{jN5LpFhCxCG z4Hp^I{Z9CH$y`rQU+wVF=3?^YuZr!_JIzxc$H3>PHgzvXerM4 zo~{D{1413ll*K&Q>1ch#`U(#PJKbat{XvYbpkK7xz_ER}ya@<4>UB4X?AuqEJND4x z_Ya(oIYZ3z1ze?YU#G?8bMj`?@?9BesI#n{y7-1x zFpEYK790$Me&k_-){_Z=PEAto^(La3#J(}C00GpjzVyzO>8^gM4S2PzL5&jGANBirFm0q45C{6sIqhx@#;2dr{nL=bG#<& z^^y*5Y9u_9z|zzf*M9>XR|8u%5m@UDuw8FgY*o@y+6$|XZR=Px4(Ycc78AgqxeT4!az&NTjyfmLyU`QO-2Lg#vNi)i15a?;Q91B3W2N4eB+x{4_0MUQjW%~`! z`2`(atifOC?pRAWkZsl)FP7^MLr5x1<8ybx8YnJODnb^lsXMIujlG|*^~T^sAgbq$ z&z6z7>495NjCf;#^!?m#-AnoUT)!R*w?w5FPh&SBml(v#B)AX>u?Bu0>5JH@sWJ9{4=I&s<$XffzN4LSpxCL|pm@Lb4N?Tf@&n2uR}iHW%$>!7md14CE(llp>6J>Zvm0CoG2>HLYt?cVI&r7A=!Uwbi-igYzpq|6YLM zrdQp*K8jS9D*SDX+N*)#nc>A7d!KdV+ZwVtd}%30=fMZ2k~UTgbB%AfV-rYNIzD1J zE|cQZC<=0eng^3tD3elmdhh0s%V^x^_pYN)VCN#O30wZIm1I(nqA2B3SIiKUfg~wdeXP9XL9oYvCHXJOXVMKZfwCU>M6%ILl zfK79gCLP{YBMa3IFOipR<1b~Jqh&cRXQ67GLmT}Lc#Fksk0vZ`24e@TFn z->f9S^bgAFZi&(x;@DhXXlHxoWmy@otU?PBH1C(ruH-a34~=tpbKb2_DjLp}$!J{M zd9(I&w*lNFrV_WbA>EMal5rWtsS+X)-wpDS)}sm>;kDDv&_jmTI^8e@+2pjVK(mP>pDVMDEIW=HzE(7>N-}L3#sWz^c9fR3ZP+i<4EuY+-BSJ>pY19zI zAx_qSwG)~njby^SV`zZ8JKBExZ3@+x{Jf;;IOdLImMVu(xa{yI&yVP2lGT`nZ=z}Z z>=%Ka5Gu@o(Q-V^n$=$W)wa`D0r{vx-N z(!~e*gyF$h-DPeIo))ZE%w1ciVJ4etYlJ>>JzfM4kkQ`Hef$dpDzXi2bu>Jl$nl=b z0SQgTduz(|;C+u=b1Y!=t5cls?y$TnL%-bN$#=tPioZT}?zcW|QokO03O*L^2FE_V zs4KP%rFF$OzO>G~lw}fDF}X!Y)3~A@X>G6I8EzU}bCb7Ky9FKV)rI=OZ%L$vzC*-N z37bR;{ixm^bZ?F5gb9WVTIOK;p}=bJraw~1k*dJ*7XF3K#eMvFTZ4W}1fXm{Rz@UC z#sZEAXIq8GcQ;f=*5TeH9_3aoV!g@N6=ci)j-#5{jn@1eRePaFD2H?dt|M7H@ z(95%THfi*eSWbh>4LE6T$gRi@+(XX2*Kqc56bA6+pn1<4zWaV97}pLRNo0E7V_L=N#!v#riTz%!94`E9ZY6%gr=g7x@#$RU5*T?qfycR@=FJ92Qk?e3!1{lfxXsjv!c2jR@Ag zQ19Klr79!VGxGAn=s`2;SNBnD<`?p=F68;NBGllC+wIj`FB?TE>0ycjwlj+EYSI!i_Q#?sl;`PS z@;Nb-+G%-ky>&YslP~`;Py_fPo6iVmQLx=!0sI8`nr|{<}1oN-=y(ty~lC@PCm+82# znxA*ZiWe0>5ZJUXU#<1!`KhP1B7I;PPTLJk=By^NpR`F_YxzH~bJyn^2Zc)zXI zF+T@X2goMPyiFeT(6KdvF~4)ojk|GtQz9U%L4JKkSY3mDPkIQa-kdq;aG=uB+CHpN zU_uqUiK=cKAWD=smf`Tl5vFB0--v=2g(rW0m}1)2w`SkGm+p@H$ULyVre=kiqd8$?c+qw%jX4|#bP>)I{}0^#9^`=8Fx zS44ruaP`(rFAUTkvhO~8_exJ8T85F1i^q6E||{GV}_ZW^sy~*?<>WWp5#_96u*EU2gp_&v%}7f z@AE@lpinh3t%}8GXd~a>GkG5m67NI5dyMUxWQsF;T6D=5R}n*}ofIOf;{@9VcXCs7 zeVUZy`Mq>lZIMO&{H$`q9C%#r{ji2^L>>X}U_WWeD6&NUxhhyqHJ@Q^nyfV~-_IkRJk&qW#~shJ6>UMGlZ<-xFF9pSlE$XvlnW-e%3jNk4LP4IdjnMj+1WO% zE4Losam)ypR<=UnR?W)oS_iNOVhCDSH~#D$-zwXFZDT|mk=OcG6sc`}?a}$aY#rg< z-hJdFizJonJ8{jkhiuHEXt6oOK4w=-+yGplo+=z1klGvn{C!bz`K^molD~?(Dh$;I zR2+(b3L}ub<%)GVV!kQ+`tZMl6?`SaM?&!sh^ppD0mO=5mPVyna<)#~Nzt}q(Y_x9 z8#Jw*k;DB0a=z@MM#$HlqK289Fw7*l`9NM)x2tI6kDdPwM%8NT-a2Z>aCs^~jg32d z=F_PD{mUaVUuqf}00aK@H|~qz>ukhdc;KmNOp2&7#fZ+Wv~>r;d8)l}oC%?^~>gy4o_-&r!o2J{l4`I3z839&X7=ia~*ozO3I;#*6sjxI(n?iHDtw0ak{Me(&0vNflA zWQ{RGeoJAf;*UY%=8&FbKFdAy*sJ6&|3ptjl^pOrnQ>qJ60gYKpjE~9;0)#u zQGMf3Od(0+Q<>lVE{uzLA3!I80B3}1+Wn?_H}l$z)}^CyU5dk6qi%j_W~-fq_Feo7 zF4%1-s>x;Thw?BHas1ylQzvMtDLEd2?Y+5@lQ&0%?IgJJTih6znSaNQ)R1WOxaV0) z7PkQrkt-5Sif4%q!Q7eKO>`PsXq(8&E?7k#=>qwnl}fUuP0B@;0n5iRd%Ad2dPOzr zl?fncU9|$^$U8y7(j48I&2zZ^EUp8AQc(g`r{(m_ zHE4_{$eLkbfq|%I&UG`Xb=KIynsGolPP{0Cs70N#aaKFXh`3_M#!AX0c{isD*cX4Y zps=SfMFmVuGI;ICV(4QhN)om7iqd}7^|26Pg~_CE9kC$jd>KTKW4>~KkeNEt`yO-~ z7<-zh#?TW9K^<;h)K`Ha(dPNkv2aU+bp*?EprNeei;E0jl<#@khAk#k*`hNh*AT>* ztNRpI_OI}}*yRmXh!X;^sWe~QqUpS8^~y~%@Qf|_YXV~Z>FsXdE90ii@nIkVwM5wb z&7B2ugceKtRbS1VJ2lYp^Z@>|FM-m2vwPrg)rywRwloC$5c$%kz{C}Nb&-b#ecI_I z`;1;?x!CfaSD1-J>hrQm+4sig(cth+x|Jg7S03e>2Pkan&T&c=3v6{H*NxsgSXDKA zzhDXZoPz`v>V_vmv<*H<7x4L;A3WvzwU;g9XlbWu>)E4Nx)x_?up0Kw(?+V@8Y5bX zi4_=T#M`MY1fKPvaPK*tp`KF)&L_Vve?wU2J5OMYJ00JK#{~be)CZMtPT5jdZe(vx zdvVcT>;^rWki3=htAPI9b_89hcjR)UO^+4Jv12WBSy z3MGh%+f}<}Y1maMzu%ZTLw`;Io$tQ$QX2@X6Mnjb7mErh>OBiCaXRHpIJiWjq3CT3 zLRFw5`|Eu`CI7WklJW!C6P-AK0zAbnZ%ns!$%N5m?zWJwHDy@f_Id%zeCJs*K=BbN z)of0_JE+oKFIAm-y^`uzWwG>OF{t9VxD^YGSDtFYXM@8e)kD zwyn8ujs)qzKqo0<>NCTQ$W{37Y8MwUXlfr+y-jhXx2RDn=RJs zj2dUu=-`QJ3?A`!0i8wtfgr7RCk$oojD0Fy`ahY2jf$slwLv+_t5WNPlstHNM-;od z6`G(SHs#;f&OLHnio{819Ixt~N=W%kdm1y|r@$fk$b({fk9jpljApg6?+TU2*jF*; z0xLt}?wP@R9yO+WwX}kOVTw@s)5Q!|bSgU+!85_phRemRkIB2OzFnT0Yf?g7eu{u? z$LFv55WM5O(q@Ez-yJDk#WY<_ja%Xqb%FWC6otKlFo`r>% zg~j5+q2Yf4b`GXi=3f5~!13PzwdPd(KY-?cR&celGjnk@vUB`D3_BYy8|QyBe-p-+ Q{xM)uV)DRR5yPPW0`V2cwg3PC literal 0 HcmV?d00001 diff --git a/web/static/index.html b/web/static/index.html new file mode 100644 index 0000000..842c795 --- /dev/null +++ b/web/static/index.html @@ -0,0 +1,62 @@ + + + + + Android SMS Gateway + + + + +
+
+

Android SMS Gateway

+
+
+ +
+ Project logo +

Android SMS Gateway turns your Android smartphone into an SMS gateway. It's a lightweight application + allowing you to send SMS messages programmatically via API. This makes it ideal for integrating SMS + functionality into your own applications or services.

+ +

Features

+
    +
  • Send SMS programmatically: Use our API to send messages directly from your own applications or services. +
  • +
  • Supports Android 5.0 and above: The application is compatible with Android 5.0 and later versions.
  • +
  • Message status tracking: Monitor the status of your sent messages in real-time.
  • +
  • Starts at boot: The application starts running as soon as your device boots up.
  • +
  • Prevents sleep mode: Your device won't go to sleep while the application is running, ensuring continuous + service.
  • +
+ +

Ideal For

+
    +
  • Notifications
  • +
  • Alerts
  • +
  • Two-factor authentication codes
  • +
+ +

Project Stage

+

The project is currently in the MVP stage. We're actively working on adding more features and improving the + existing ones.

+ +

Get Started

+

Check out our Getting Started Guide to learn how to install and use + Android SMS Gateway.

+ +

Contributing

+

Interested in contributing? Read our Contributing Guide to find out how you + can help.

+ +

License

+

This project is licensed under the Apache License 2.0.

+ +

Contact

+

If you have any questions or suggestions, feel free to create an issue or send us an email.

+
+ + + \ No newline at end of file diff --git a/web/static/styles.css b/web/static/styles.css new file mode 100644 index 0000000..2a92dcc --- /dev/null +++ b/web/static/styles.css @@ -0,0 +1,40 @@ +body { + font-family: Arial, sans-serif; + margin: 0; + padding: 0; + background-color: #f4f4f4; +} + +.container { + width: 80%; + margin: auto; + overflow: hidden; +} + +header { + background: #50a8a8; + color: white; + padding-top: 30px; + min-height: 70px; + border-bottom: #396969 3px solid; +} + +header a { + color: #ffffff; + text-decoration: none; + text-transform: uppercase; + font-size: 16px; +} + +header h1 { + float: left; + margin: 0; +} + +header #underline { + color: #396969; +} + +h2 { + color: #396969; +} \ No newline at end of file