From f4876efbc3377d66fa4e941bd7a9d74ff292c6e4 Mon Sep 17 00:00:00 2001 From: Andreas Runfalk Date: Sun, 17 Mar 2019 16:02:37 +0100 Subject: [PATCH] Initial commit Signed-off-by: Andreas Runfalk --- INFO.sh | 11 +++++++ LICENSE | 19 +++++++++++ Makefile | 50 ++++++++++++++++++++++++++++ PACKAGE_ICON.PNG | Bin 0 -> 3699 bytes PACKAGE_ICON_256.PNG | Bin 0 -> 22942 bytes README.rst | 67 ++++++++++++++++++++++++++++++++++++++ SynoBuildConf/build | 8 +++++ SynoBuildConf/depends | 2 ++ SynoBuildConf/install | 50 ++++++++++++++++++++++++++++ scripts/start-stop-status | 20 ++++++++++++ 10 files changed, 227 insertions(+) create mode 100755 INFO.sh create mode 100644 LICENSE create mode 100644 Makefile create mode 100644 PACKAGE_ICON.PNG create mode 100755 PACKAGE_ICON_256.PNG create mode 100644 README.rst create mode 100644 SynoBuildConf/build create mode 100644 SynoBuildConf/depends create mode 100644 SynoBuildConf/install create mode 100755 scripts/start-stop-status diff --git a/INFO.sh b/INFO.sh new file mode 100755 index 0000000..96a095a --- /dev/null +++ b/INFO.sh @@ -0,0 +1,11 @@ +#!/bin/bash +source /pkgscripts-ng/include/pkg_util.sh + +package="WireGuard" +version="0.0.20190227" +displayname="WireGuard" +maintainer="Andreas Runfalk" +arch="$(pkg_get_platform)" +description="Adds WireGuard support for your Synology NAS." +[ "$(caller)" != "0 NULL" ] && return 0 +pkg_dump_info diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..dce6e54 --- /dev/null +++ b/LICENSE @@ -0,0 +1,19 @@ +Copyright (c) 2019 Andreas Runfalk. All rights reserved. + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the "Software") +, to deal in the Software without restriction, including without limitation +the rights to use, copy, modify, merge, publish, distribute, sublicense, +and/or sell copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included +in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM +, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +IN THE SOFTWARE. diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..13f49d0 --- /dev/null +++ b/Makefile @@ -0,0 +1,50 @@ +WIREGUARD_VERSION ?= 0.0.20190227 +LIBMNL_VERSION ?= 1.0.4 + +LIBMNL_TAR = libmnl-$(LIBMNL_VERSION).tar.bz2 +LIBMNL_DIR = libmnl-$(LIBMNL_VERSION) + +WIREGUARD_TAR = WireGuard-$(WIREGUARD_VERSION).tar.xz +WIREGUARD_DIR = WireGuard-$(WIREGUARD_VERSION) + +WG_TARGET = $(WIREGUARD_DIR)/src/tools/wg +WG_QUICK_TARGET = $(WIREGUARD_DIR)/wg-quick +WG_MODULE_TARGET = $(WIREGUARD_DIR)/src/wireguard.ko + +ROOT_DIR:=$(shell dirname $(realpath $(lastword $(MAKEFILE_LIST)))) + +all: $(WG_TARGET) $(WG_QUICK_TARGET) $(WG_MODULE_TARGET) + +$(LIBMNL_TAR): + wget https://netfilter.org/projects/libmnl/files/$(LIBMNL_TAR) + +$(LIBMNL_DIR)/Makefile: $(LIBMNL_TAR) + tar -xf $(LIBMNL_TAR) + (cd $(LIBMNL_DIR) && ./configure --host=x86_64-unknown-linux-gnu --enable-static --target=arm-unknown-linux-gnueabi CC=$(CROSS_COMPILE)-gcc) + +$(LIBMNL_DIR)/src/.libs/libmnl.a: $(LIBMNL_DIR)/Makefile + make -C $(LIBMNL_DIR) + +$(WIREGUARD_TAR): + wget https://git.zx2c4.com/WireGuard/snapshot/$(WIREGUARD_TAR) + +$(WIREGUARD_DIR)/src/Makefile: $(WIREGUARD_TAR) + tar -xf $(WIREGUARD_TAR) + +$(WG_TARGET): $(LIBMNL_DIR)/src/.libs/libmnl.a $(WIREGUARD_DIR)/src/Makefile + CFLAGS=-I$(ROOT_DIR)/$(LIBMNL_DIR)/include LDFLAGS=-L$(ROOT_DIR)/$(LIBMNL_DIR)/src/.libs make -C $(WIREGUARD_DIR)/src/tools CC=$(CROSS_COMPILE)-gcc + +$(WG_QUICK_TARGET): $(WIREGUARD_DIR)/src/Makefile + cp $(WIREGUARD_DIR)/src/tools/wg-quick/linux.bash $(WG_QUICK_TARGET) + +$(WG_MODULE_TARGET): + make -C $(WIREGUARD_DIR)/src module ARCH=arm KERNELDIR=$(KSRC) EXTRA_CFLAGS="-DCONFIG_SYNO_BACKPORT_ARM_CRYPTO=1" + +install: all + mkdir -p $(DESTDIR)/wireguard/ + install $(WG_TARGET) $(DESTDIR)/wireguard/ + install $(WG_QUICK_TARGET) $(DESTDIR)/wireguard/ + install $(WG_MODULE_TARGET) $(DESTDIR)/wireguard/ + +clean: + rm -rf $(LIBMNL_TAR) $(LIBMNL_DIR) $(WIREGUARD_TAR) $(WIREGUARD_DIR) diff --git a/PACKAGE_ICON.PNG b/PACKAGE_ICON.PNG new file mode 100644 index 0000000000000000000000000000000000000000..9863a229ada51775570c7d72723e654db3461fe8 GIT binary patch literal 3699 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 R0D literal 0 HcmV?d00001 diff --git a/PACKAGE_ICON_256.PNG b/PACKAGE_ICON_256.PNG new file mode 100755 index 0000000000000000000000000000000000000000..623316a12335198cc995955a5846ebedb2a460ed GIT binary patch literal 22942 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⁢FC7D0$aT(Dj>ayG8I_o;+flM>LVW=MRohDO#t$B5lf= zyUdh9xv!!HQk!8eT8^XOid4+yG~?xkA=ogb+Lsd=z)yR8cPeO~SQ0Ui?bH(z6p3it z8A4*K=KXEflvPfme1N1{5p`hkvZsV^%hK>rf>`&@P1SmV362wT;8V$pGkay`ck8UQ z+xHGV;A2Aoc$`fgW(at5K-6bvY8I7Acng?9?sM+SyTZT0-+X1LP7RPeM8_s%OM$N9v{E_w-r>Nq*-yida#95L2 zRIls+=<_!Zu#^sIS=!t{7OWbe!Ee0Y*JqQxd>+zTz;N06_w?C3GH{PA+i9^wy10_f zkw(9gETm3}MIQar={E){;BG#mrG_V8{HKoYkSJrh>b)Wm9kC&6-k*M{& zOWpwU+5pnX9KeX>7-qfE#~2(21{pm);8K~rl$tCgjG{Af=S$2j^aCK#H@BB~R7(U8 z6bN4#!K7+IA$%?_d{>fG z`0Hc-s5)5T2_3tQB;g5D<_?)v?12H5xb?Y{vU-L4Zx(U;FC6Nl_36s!0i9JM7-#L=B^6b*n|3u{#V?_i9V@ z=u;c;yOjW8y4-YO|-M-dk-=CwfD>_fFy?(<_mzKe03aTn@{?45x-u^)Ib2^ zN|k0<3o6cqA1Y&VSXV9{+dZ%R8-JF<11oHsC)(PqFNTfg(rdXL@3Q(Uk*qa-|2nx< z7#}CumBD=k3{}v67;&bR5AmgRW!>gB2F%ij@jIhbBH3`?Qof~vb1I5&?$jKAT~N%Ky5rnr!67taxx!vWObaJZx&pn zxqGyF_{}>!R#jn~j-z8Ah(?f9g1N(tmW1ij!oBzm0= zNNvbFV`4@#FV6o>DQlbt-?KmCdiM;uO`>}=R$;>f9ODJled8gMjEHgF^4qXcZv0b) zr(ghe?037NkpABT*cyMETLaeu){FXd#;uN^>|kF!AM@6lmxwcFNS{cDWW#zQVDZgz zlx7xRSJxqV=;w!Rm~->U1bSnO6H3Q3g8IF42hQnAu9mQT0`S9r?QKvxpxhRG@YbA6 zag;{mA~4xyg~MAXFQy6DLovjA3OFfO`OOdDZE86kS`)CHKw1h5e3_fy;NR!~r;FM2 z5yp@16ekVq;Ot?mWKaE^^2$_Nw;`Nz*M5EeN|FFbXXz&xan5q+b3#H(@;VQm*?&Xs z=7=yX9a0{vi{7uM8}fH%~tKKI3y%Vm2ApwoD_-W zP&@1584-=$rMXBHd)BL$No_HXNoU zw%2wf50yPOY z>8g1YK^qcHdKA^VpnU|vztld<>?EiP7vXc7nchBtlbaV>XNwy|DK}JI$A@nq-sIC| z(O=v%#T6Ip-|T2oHWq(%3zuczdq$`DdUN4Eu4jM7SCm43ISc$8b0#XaFUS@s4gr}m zw>LrF7K{zEEI3vn38!|_e54^{*t$_$&-LlDWIF{0VK)+=HTj3+3A{01N7Oy`ObhS& zYy`2N(t7hz#zb0IB>$^3o)2JG0}gkx(ps3db^PpSfSF3PxEGL$SGt<_* zzCXm9B>=%^QF*Z%^it*G4JYOBdvkUfot4(Sf0(|cuS;@e?C2-HFD9T`z}0aJ)ZNfB zRYs*FS7rAyj|1KNGz>q=TX5HPB?&l14Yr2AH|$j>`~F8PJaBKoQjmJna3io6BC>L0 zo6pn0@n8|^4RZHl0oYkherJ-}t-&li_`VWt&$Q_B(%$T#(bQjPd*kq>rVFW=$2@f4 z3EA<%iC_lr@3L-^F2qa)yIZpOxP%~I<$0<#6I3DrN~HFD&zHv>{o z^>w~q6q6#cYxy(|;mmtxSlZH7lI}+SM5sZDtR6y(0{AowEkRtUB6l0MDXn%&D}N8KY8adSEa&@#VSzQ)5u#Bm3_EcS9EfLD zp%sayRk4#XaIG_2dR)5d=y zzh`lal>GjIePcGl@+o4lxJ{CGWkxxOv+s98pkmf@vHe0Z*3sm+Jwe`?LoOeS%2Oi}wEI76p=Q+kLi8fBuvV`gna9@UHM!rpW)@>eS*c_WwrTBA zjTpclo-a@>bDRNYDmmhQykoL0q-=N$X`|`DSx}AcL6uR4V~^blWTqtxm%sRyVd6M$ zbK(hrNm<2~tGWMA$@)X2O~ZCI6`Pih0S|*M-)scyrmBVY`G~-P6P)ZzE1n{$A0|on zgC6s<((n-bAZ=1P>`j{@AFPCO!G*)Z@8PD@*k&2C1Cm^7%xV$c+d@S;SQL zc#gV$bo=spP@LC)A~w`Sty8PwvaP)e&jB-EN|m)jSqMTnPlMi1<*r53b`xJa{3fa7 zBXJ&3_nru?(PsjkkfT8C!8yENiD86#pW&x#t)$z2jXn8|a_6)3@1qi0Dh83R^6Zm( z#^YN~?_yJ9j}Wb>WwH=RG#~+~);b%*5MDOI2aS@LCB8opK+%H!d*qa%)`FAYJ(?)k zrY}7J6AVTRv5d61Ap;SwwP)4H9W0{E5NVB)KS@!uTNR#jMmMY*ZjtwwF}w21H$akq z>XL)F0RLg)P=x`iU|%@9$s48IM>O{avL~#TK|K;bu~M9vO-2Re!wx!$MM&DCzmlBN-O*UZT%~ zZ;ObeZNp-AdBi!Bsaop2aEPzA(DRyUIc)d-Nc*Ui`zv~C&BBAvm9&Id438|b8DcVF zjK}^H=h6=DAy98G$@Y)V0hvQ0{>^b74vKFV0<^(@#dtkBl{UDzCwg$4 z!S*O_=;n9uM<;6dJ)22XxHMCLl;oEGZD4Jv1G@yJwf@)z?VGmHJvNkPQ^^exAus;& z8*s|Xg*PT#51R14+2)KMx$i}v!VvjEsHju=YZa``Yg2ZUQsEN4eEpB|xQ17&%MhcB zAxX~R#dT1MUy(`$-tg679Txq3en;El+lbNvX0lQdGy0s8?Qi?IoRDqHHT&*NlrFtA z?Je`EBr46snDGt8*(F??#@ahs$n%*cdkxV5>|LjgX12?kiSn1csdvHf7BXTdqaFjG z-=7%5A`4bMUJIi5=!0=2Lxj%biC*xK3=P_I8_{e{ZssYD=iiF2zwtDy;VlQR2`Ld_`sI^o;~PjDX$^{sbo|j25o|;Z57%uN9dg-$#x2Y82pFgj1bXrTnRkpvU-qtzFhW%|_=sfy`p% z$t9$$kVQ%|N`gH)KYNJ9%h^zL@_5Z8ckon@V@%71`#Np}*@ffA(bB74go~Oa_X8T2 zd4?GA@4wb-K2Ovb{!e1~-=Mfed+8>dLAc$PKXkDrTn7UyVN_8;OEZXv^sxwtj4dY(RlU0uT{C0gqZn;yv|B| zCN2?9Jd4+YHf7;n#XoaDG%TN} zq+NvHJJwa>+Mhl?ePHXNxD!#GoGR$(&+9E;T&vgW^R#CVxtC4Rc-*TC3`9oWeZLX} zDr2T?3H}lF0VDfFu|sr=ea0E#`#BRbQ2=}BOTA9a8&!1_r%2<-I6Tu8<>57g`TI-g zmJz%V!qm$?v3c#yzB@b(2^R3TWBy|-X%=DCN>+Cj;FVm+dB%yJL98g1hvdavtp`C0mM;^?LWZ*o&d4_~B8?y86}_5T z>hnTLM0+RxA!HEC$pn+SKHA7(ij}NSr6dhF1*4j$7_=(8n@ws6+6$bnfkh$;CPRIm zK0!Hd@!4EvXFXqRWrXG~-)edCLRPm+;M>)|TBZJ6Xp75(VeE>~Yy1b@p?__5IqEEi z&Y2{&Skp!TW9j>->X!n1Y1FwMrE5(Z(q{&)t;(R?ivN)%_*+HLt!ga<>lh)CjoZq9TTcPJJ@-&R3=LgpSSN>1^ z*yWE2fNRWpkd@9I;urYVDgCO4u zq;1PJ7AhtoZT&Vop0c9W{X!|yQQ-n*#2GYdv#v-6+3}Ej#y5WLQ0q#3VUfo&eNShC z`R1nzObtAuq^Ok|JA?FB(1RWb}{ahiDGe!(dqpC z*yd!+((KS(lj?iEKpR}P!jfe1k_6RZqC2ghX$V!Rx6cFC>rcZnN1p^C-wb)qet&H7 zAIT6~T<@KySKwiI;0de9K7>Zz@fTkGTFrrIfzR%X%|@N;+~;CR6G6e;Y*dxbiB%AZ z-O6(F{k71x`76==moJH8-jhb9LHr8q#IjnB!uMN?3)Vjh90%GPw%_gC}edmMerM;%E;Gbu&*mR4$wQ`G*E$l)2aM|T)n5C;wv@D{J8H7FI>XR4O zKmBzSf_lg zIts9J@#3QLcVU(c9B@h&w+nHfw$2S738Krg(Zd2En zOM?*|AQr}mhLgF_UxesFn%Ba8noq&*o+LN2fG3;|xq*YNP5)-vdO)Q=c+|(_+uzU} z-s`tJx5eLPqIV%!EYrOP}h_ZQ;LR~S4 ziKKQpCtr@-Cwc^-riHFzF|Ki9{U_= zC8}1?*HtZVF6vT>j*vrZo`V7Sg9$zQH}UDZjzo-9INGrKQ$f<4$CuHABap(#LJz09 zE;Hw8^u0GOfViqwX%(Acdm3OL8z#4ieqnMAi~e=_{ZH;nANUX>U=->+qYldnTPv#}jPK8lsn{1?TEm9t2j*Y3o+gy0qsMMfC)LFw&GKgBJ$;s-J0(|);YLA+Aix`g& zxMSMXV?&LV?B>8)%&*9O9P~XZKvQV@eCJ#yaXRlZ!ek7P$h_p2zZr#E+ebo7xY_U5H_0H$#!?)sesL}vRJg8s$Er?qEw*)yFE`kR7Ug6AA!LvhO%|Ir zUIC$d-NK=Vb%(zMfPk;|F}HtaJ2#sqqN5IM7K0gc(ZB0h=QD1+w?QRZME>uN$&0#u z0F%>9FAwbv9yag1(l>v>yOXxU5=z97iZuNnDww*@r$bhiV6=L%?wRcZ+AKA}A=qPO zc~jWtobEP0-3s2tLt>-OKFK$b4XBMIa`KnKi>1B)AQJ!~=7yWR2A3K4_8a{Aq;L#`PLCGF zFDSZpqY1QAXrTZ-Mz*g^;&>CE7)$58NtPvbznVW@w=4rT zvfZ!M-BO*?$46})-TUg@`flC2RbK&z4aUA90JNDV%b$#AQPxyg5ans$W1+6(+KAgH zt=qQhvE+;fH?OxfZOKW%>A9~5P#z8^qWwh)U<3jz&1DuwJmy7++)C+PeVr?+-;Q|w zO~5c%IW28oFV{wQ4FV7F`Z|qDm)$jklU9%By!JZDM~~Hzp8@?9qL3%B2@zk3cuYd+ zL_yAl5sz6X!uv;j^^l;OfTDC1{zcTTDsK0f?*~>vX7pxV*d5I6zs3`(aZ-(p;l zACEr((EF~~_3B_}W8laEU^tkPj6F_e^bLF-mCp_ve*qhOiXB=1;E1397)&MNfa5v; z9c~}LXEzuP}L$?J6%C#`wXDlQ-(DUI zldraW{U5pZmEK`yS|?@1733eri|q^g>bCT$e;Up29uffZ$f4D)Td<2_%2Bc^Toz2l zABO`35(PVBy1fRf#K$>M-2e& zvu5RkC^wa%E*=%(mT)4uA7IwB8Yg@$7c!h{uE6sP(_0)*p2}w_itrBL{PJ{D`E;bw zY#LdlFow`tL3WR&0UX;^7jw7`){+eD3_#S_X{M;NDn=td^ebkZ$9zV zGi{go5G}ioS>JYH4M0kY7%+`^%|?Zb%XqC$7K6)+Jmz03-v!9t;M1< zvfV79qm0z>3oBc5KftDS&pI}U%U~)8TB`3rC0e}bhBXW2LuI^Fs}w%mS>H6dh}Kc* z0PtHCW7EQ((GyOO8USit#%(}f87N_+DmRCBY{^92en$v6T61S`%hHht*d3@A#l`IK z_-n;*eWU^wY`s-8c;U#nhO_5msb~NYk=qQzI3l|FQDuy+3Rf>q@Mt(4 zUjxS;^*>ayN}g1~Qe$M8wL91qFUm0~Ygx6H>PIVJ%}ym(KE0?2Dbq$}djM-y_4i8> z(d?0=T8|0( z7m4U4BYr&wuyX#p9DTsfdJ`Ao6XBE!ShNPp{2RIA_xdsQLaAc|0 zqb?H-MSF;N{98cp1QwL!?ytHgm`*%BnjNJT2wZRhpS$nA;qUU9d!24GU>VFoIZ=?= ziUzQ=?7SmBBd-5{ZYgI7yj9^O3+hp305cSwK8mpiPs)la44&ja)wf$<*^04#56X7QGdi0ZQ{ayRg?5>vt+cb(ijawk9FzI#}jN(~!- zyXkAhk`D;-&)NNY8a55~RD}~bx=Ol1ij-@vDgwNvf)?*&5MNPrXXk39q_TJdUqa=9 zdw`X5PvgoBYn=grzAZLgSTLRF?r@twRpA0kr{-J*9=v!qWxnmg>mFSP%h)#8>-S5osNk72`n-5bNLoWJQ2L(Vzx06=MHGg8Vv^iamXd>*>g3xSZC~2eE0F zOF{ZGL*kiKZQN?ObUTKw2F{~+WSF8wTEsI42ZRYZ>L38hP=!3rrXj<%0uJyW76kyn zW}gjpCHDy2O=%D65#$d+3c17xFNAwAA^4r~oc|{Z+jP{sR>Wru{fcS|Dn zzd%8HFCNpmb(!0~jk1RNuY-zOlt(JHA~Y0b5eurqa}}h!U8=lNEDr#+o41sy>~LAx zD*+1CZ}OM`U}-wdispH=^z7_KbkR5lfJxZ(0V5i$I(3d!MD&l91OP4RnBx?|?XzZq zsv?|NzN(T-7k8ziSIwSNuzr)r9J%h@XurEqGI2j}-#7&TLvsL-Z?Ni=gpvtGz@V0GeZPhf&wB@~`_b7Tlz-e0xM?7`R0MH6Ve0C~#Rx_7CaT{WmkTgUZ zXVw*ItUln^6`-@dV%WJP*H3G5eza_+new#$UKOJyoQm&@c#iGbuiyXx5K1Ii=616* zolYV0xp4{rGej~)>4R-$=vU>(6`-@O!K&V00bH?bi}Mb&8uQB1@i#PBBSV`3LaD-1 z8Wb#fWobH1#OtRjo4GTWAT-{jQIXkB#{t?KORZ)f?mt` z>CgW5HeaA9`R28o>~mo#9bYRD26mRPUPOh56kXQQv){_6krzWcJ%LjIvkcab1$;S_ zOgsgUu64fh+p!wbexVn(5B-zqAaEK(u7~dG8Tl=iK6B$q;~}v8BkSGE>j75% z&FPMh7R;R!BW{yWI{r=IOB9V|=S}4WL*x^|uIMvx=yq#`miER#PA9(imx25LNGO^3 zRNg3@KKBgFr3;zl_3*fSsi+4>QO2_l0tv3S~0Nck<3l{Ky zAQvr3#{P8qbPubVn-6NY=BW4Cl}niw`FEg{S%9A0KeYc}0Ir!ozvzP-#TsaFDn*CS z$Kq&ek72mZ2cEBF2oRA4ogRPD*?U8&VGwvYOZMH^*RaLz>f8l<-^yk$45eZ(UhSL7 z4LehgS4!rkv#~Mf1(-8|e<{aivJv--R&csPK?R3 zM?Ai(K|;WBCAdERD#)jTso1))oP<&A0dvMrFdctURX+n2#cnfFrm4#3!m%VBK3~xX zU)9{qVru!y`VE;-D!xiYKMq_2JnN9V|F9?vGe*^dyzyT*BT#hX&v%9HaC`l^z7?ft z{A+`r4Lz2dS?4#tyX<^r^tCM_ebliEGz-x}!O zEAj#C#wo|bVGsiz1Rhm*Je-Pe18DOGj+w3Y*mr;PzktpX1b}s-@`YeJwg&9$zG6lE zO9}wmy?(;EKISP_@nqr<2dNHZ{?@Wy_dO=C!TU zJ7<|L9bl?L9ZId*?8X5^>qHPstwBRwJH_>)@)BDI8!Ssc+|m_$8DP0Pz~Xdt%qLX}M}T2Zpu-zzQnl^^-dkjZAK-9JT_?B4vk+>MoU=dx$RhNEgqS@3m~^ROab z^Hg9pN-5EQJ)d!L&QFiCX|Y@tYJ2HaH|zc#Xo{wKvXGx@XV}BSMJ~*S^gJ0{xKm1@EmhjtOL~e zRg6_7GOc}rd@XPMtD2ij()ghS3nYHKZ#S)`$zyx>@<`v_-@JdylrE4nDgTyE0?c}5 z>I3^9>D{~Lk>0(m@cDSCw|BydkJe+HK8H}(b~^puTD7DD`&x6XWt%Af6->v!55T`& z!UKPJxMX!`l;WgXWS9C3M4?jBj#g%=a&5%p zI~m})d1rCgggqaz)cI%0!q5QiZvV%C_A#E$5b$kL{d6c9e;n+1Rxn-qO|wh7M*5My zy>vDPczE9)9_ib=`@K^q|DPaRu@i>Mxy|!TMf~SXs(a-6_0ROrpVh=;yLU}k^=Msx zw<*D7R69N9*$6)brjOxtVj^6j%BoO0(RF+C>72n3S9Pb#LYHN6&DLs~Gz?gLWk-^m zr}?C-+Bi)NjQ}4g^Qgf0#n8)x@x;)CS&vTIJtpB)oJga2ItD)hP94MP{6d7UopVLz z`7?v*d=+MyEx|I9ToDlfH#GXD^c!3($O@pQjMsE$C>0NuN+w-N@BF#U(Ke5Hk^w&h z#-`Jck_EjKkvl@E_-=qs(_~3JUUoWlmD6M&>D$Y7GXng!e-97t>m7XWadl6-s$D-t zITM?aw;bi{f1Yx@6->o`-|q48Xy3%Gz#AIB$7gdL_yT@Wy@fH#^H+Gt((L&LJQ_+T z`TRau@K| z6PszNKT8YYqKy4Ymj&Gl` zr~9iH^bc47%Nl00w0kQP0uhgS3id5fvHSb=0S{)YjKxc1(arGs%E}1<7-MOzucx)= zK-+tXidL-gk2JD~ z$Lj~&$RhtF@N3I3e$tYNZh`|{BX0j}#CkU>pFlXLOdewmD(#_k?0zU6_ML)wYa=)dmp6K*WewLN;8Q>` zm@*$1xE+<>2h*|jBR7xMaT05haq^t6BjJcN`g|Dj78NcMpHhiyn zqF8hwoQJa=d@`Unp{^S(v9E3VbpedWjU*5I|rlNB>f`uABfxvpy3(13NN3JZZrg|~MA zb_2ge<%Uo?_LoDw;|ZAnfKf@rWBvp18SE6)X}N`4Rbnr4qr!Jx$~}toxH47!3wyR& z`TxK8^s_kcxiv-S?2otuRgkSUTr$tH_yX`*3R{C>VRJK}e*yq1#tX0+iw`m&kNIwe_h4rl`T<|=Q!0{D;UQ5T7uA;(BWZ}$y(E?B zDdZs6PVu;0ld2jGLmL!Ku~T;61NrBW5062HP zb-P)bP9OALyT^Z`fpvx=rvdYTrd;fxROo;Eu^X{&0DT2yo1oo_(GA+8mbJGA`lONm zD_^uT4-YbOPo1ll`Y9IHWD7msfO?Qd&_<9Gfw{mug;NW(sP+Kcfi1u*pz8!#OJ;Cw za7Xvx#44NsfH9X=V0LH~7e_8T*ae>Lt<4S^O=1m$KywZhPRaqploFV}0$sUJPtM?a zb3ieWJ6jLsVjb1F&y?Kfcwh$Lrf_szaqRTx^`NhyvPEE<3Y$Wy`0JAJU)$nrLM8xU z%;mLNhr_$4zur}qInE2s9!zqRar93_1;GQfV_Fy99bI z=n^4~T3tXlO1Fw64bf;8*qJmf!h^PR90E*bJQw3nEl{NO%)J(SqtUAM$sWQ~4QIR?|Q~=ei)QV6ih7PLD zdL#B9W4~ot{bE&Rs5bhstR7TzSBUn27N`iImI8``im2gI4aO61x|<*Bs5BwPm;VR2 W&gnb43X#_U0000`_ +you can figure out how the next command should look like. In my case it's: + +.. code-block:: bash + + pkgscripts-ng/EnvDeploy -p armada38x -v 6.2 + +Now we can build an SPK package: + +.. code-block:: bash + + pkgscripts-ng/PkgCreate.py -p armada38x -v 6.2 -S --build-opt=-J --print-log -c WireGuard + +There should now be an SPK in ``/result_spk`` + +Credits +------- +I based a lot of this work on +`this guide `_ +by Reddit user `akhener `_. However, I had +to modify their instructions a lot since my NAS has an ARM which made cross +compilation a lot trickier. diff --git a/SynoBuildConf/build b/SynoBuildConf/build new file mode 100644 index 0000000..375dabd --- /dev/null +++ b/SynoBuildConf/build @@ -0,0 +1,8 @@ +#!/bin/bash +case ${MakeClean} in + [Yy][Ee][Ss]) + make clean + ;; +esac + +make ${MAKE_FLAGS} KSRC=$KSRC CROSS_COMPILE=$CROSS_COMPILE ARCH=$ARCH diff --git a/SynoBuildConf/depends b/SynoBuildConf/depends new file mode 100644 index 0000000..e0fd3dd --- /dev/null +++ b/SynoBuildConf/depends @@ -0,0 +1,2 @@ +[default] +all="6.2" diff --git a/SynoBuildConf/install b/SynoBuildConf/install new file mode 100644 index 0000000..0af48cc --- /dev/null +++ b/SynoBuildConf/install @@ -0,0 +1,50 @@ +#!/bin/bash +### Use PKG_DIR as working directory. +PKG_DIR=/tmp/_test_spk +rm -rf $PKG_DIR +mkdir -p $PKG_DIR + +### get spk packing functions +source /pkgscripts-ng/include/pkg_util.sh + +create_package_tgz() { + local package_tgz_dir=/tmp/_package_tgz + + ### clear destination directory + rm -rf $package_tgz_dir && mkdir -p $package_tgz_dir + + ### install needed file into PKG_DIR + make install DESTDIR="$package_tgz_dir" + + ### create package.tgz $1: source_dir $2: dest_dir + pkg_make_package $package_tgz_dir "${PKG_DIR}" +} + +create_spk(){ + local scripts_dir=$PKG_DIR/scripts + + ### Copy package center scripts to PKG_DIR + mkdir -p $scripts_dir + cp -av scripts/* $scripts_dir + + ### Copy package icon + cp -av PACKAGE_ICON*.PNG $PKG_DIR + + ### Generate INFO file + ./INFO.sh > INFO + cp INFO $PKG_DIR/INFO + + ### Create the final spk. + # pkg_make_spk + # Please put the result spk into /image/packages + # spk name functions: pkg_get_spk_name pkg_get_spk_unified_name pkg_get_spk_family_name + mkdir -p /image/packages + pkg_make_spk ${PKG_DIR} "/image/packages" $(pkg_get_spk_name) +} + +main() { + create_package_tgz + create_spk +} + +main "$@" diff --git a/scripts/start-stop-status b/scripts/start-stop-status new file mode 100755 index 0000000..767443f --- /dev/null +++ b/scripts/start-stop-status @@ -0,0 +1,20 @@ +#!/bin/sh +case $1 in + start) + /sbin/insmod $SYNOPKG_PKGDEST/wireguard/wireguard.ko + exit 0 + ;; + stop) + /sbin/rmmod $SYNOPKG_PKGDEST/wireguard/wireguard.ko + exit 0 + ;; + status) + /sbin/lsmod | grep wireguard && exit 0 || exit 3 + ;; + killall) + ;; + log) + exit 0 + ;; +esac +